diff --git a/.dockerignore b/.dockerignore index 8a0ebc5069..60195f608a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,12 @@ * -!environment*.yml -!docker-build +!backend +!configs +!environments-and-requirements +!frontend +!installer +!ldm +!main.py +!scripts +!server +!static +!setup.py diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..d4b0972eda --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# All files +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +# Python +[*.py] +indent_size = 4 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7957684466..3bca7152c3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -3,3 +3,5 @@ ldm/invoke/server_legacy.py @CapableWeb scripts/legacy_api.py @CapableWeb tests/legacy_tests.sh @CapableWeb installer/ @tildebyte +.github/workflows/ @mauwii +docker_build/ @mauwii diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml index ec4a105a9e..107eb5960b 100644 --- a/.github/workflows/build-container.yml +++ b/.github/workflows/build-container.yml @@ -6,6 +6,7 @@ on: branches: - 'main' - 'development' + - 'update-dockerfile' jobs: docker: @@ -15,13 +16,11 @@ jobs: arch: - x86_64 - aarch64 - include: - - arch: x86_64 - conda-env-file: environment-lin-cuda.yml - - arch: aarch64 - conda-env-file: environment-lin-aarch64.yml + pip-requirements: + - requirements-lin-amd.txt + - requirements-lin-cuda.txt runs-on: ubuntu-latest - name: ${{ matrix.arch }} + name: ${{ matrix.pip-requirements }} ${{ matrix.arch }} steps: - name: prepare docker-tag env: @@ -40,9 +39,5 @@ jobs: file: docker-build/Dockerfile platforms: Linux/${{ matrix.arch }} push: false - tags: ${{ env.dockertag }}:${{ matrix.arch }} - build-args: | - conda_env_file=${{ matrix.conda-env-file }} - conda_version=py39_4.12.0-Linux-${{ matrix.arch }} - invokeai_git=${{ github.repository }} - invokeai_branch=${{ github.ref_name }} + tags: ${{ env.dockertag }}:${{ matrix.pip-requirements }}-${{ matrix.arch }} + build-args: pip_requirements=${{ matrix.pip-requirements }} diff --git a/.github/workflows/mkdocs-material.yml b/.github/workflows/mkdocs-material.yml index 8d3c262e47..b07c310d3e 100644 --- a/.github/workflows/mkdocs-material.yml +++ b/.github/workflows/mkdocs-material.yml @@ -22,7 +22,7 @@ jobs: - name: install requirements run: | python -m \ - pip install -r requirements-mkdocs.txt + pip install -r docs/requirements-mkdocs.txt - name: confirm buildability run: | diff --git a/.github/workflows/test-invoke-conda.yml b/.github/workflows/test-invoke-conda.yml index 8fc3b10fef..41f72c5a84 100644 --- a/.github/workflows/test-invoke-conda.yml +++ b/.github/workflows/test-invoke-conda.yml @@ -13,31 +13,32 @@ on: jobs: matrix: strategy: - fail-fast: false matrix: stable-diffusion-model: - # - 'https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt' - - 'https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt' - os: - - ubuntu-latest - - macOS-12 + - 'stable-diffusion-1.5' + environment-yaml: + - environment-lin-amd.yml + - environment-lin-cuda.yml + - environment-mac.yml include: - - os: ubuntu-latest - environment-file: environment-lin-cuda.yml + - environment-yaml: environment-lin-amd.yml + os: ubuntu-latest default-shell: bash -l {0} - - os: macOS-12 - environment-file: environment-mac.yml + - environment-yaml: environment-lin-cuda.yml + os: ubuntu-latest default-shell: bash -l {0} - # - stable-diffusion-model: https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt - # stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1/sd-v1-4.ckpt - # stable-diffusion-model-switch: stable-diffusion-1.4 - - stable-diffusion-model: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt - stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt - stable-diffusion-model-switch: stable-diffusion-1.5 - name: ${{ matrix.os }} with ${{ matrix.stable-diffusion-model-switch }} + - environment-yaml: environment-mac.yml + os: macos-12 + default-shell: bash -l {0} + - stable-diffusion-model: stable-diffusion-1.5 + stable-diffusion-model-url: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt + stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1 + stable-diffusion-model-dl-name: v1-5-pruned-emaonly.ckpt + name: ${{ matrix.environment-yaml }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} env: CONDA_ENV_NAME: invokeai + INVOKEAI_ROOT: '${{ github.workspace }}/invokeai' defaults: run: shell: ${{ matrix.default-shell }} @@ -47,17 +48,19 @@ jobs: uses: actions/checkout@v3 - name: create models.yaml from example - run: cp configs/models.yaml.example configs/models.yaml + run: | + mkdir -p ${{ env.INVOKEAI_ROOT }}/configs + cp configs/models.yaml.example ${{ env.INVOKEAI_ROOT }}/configs/models.yaml - name: create environment.yml - run: cp environments-and-requirements/${{ matrix.environment-file }} environment.yml + run: cp "environments-and-requirements/${{ matrix.environment-yaml }}" environment.yml - name: Use cached conda packages id: use-cached-conda-packages uses: actions/cache@v3 with: path: ~/conda_pkgs_dir - key: conda-pkgs-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles(matrix.environment-file) }} + key: conda-pkgs-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles(matrix.environment-yaml) }} - name: Activate Conda Env id: activate-conda-env @@ -83,34 +86,40 @@ jobs: id: cache-sd-model uses: actions/cache@v3 env: - cache-name: cache-${{ matrix.stable-diffusion-model-switch }} + cache-name: cache-${{ matrix.stable-diffusion-model }} with: - path: ${{ matrix.stable-diffusion-model-dl-path }} + path: ${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }} key: ${{ env.cache-name }} - - name: Download ${{ matrix.stable-diffusion-model-switch }} + - name: Download ${{ matrix.stable-diffusion-model }} id: download-stable-diffusion-model if: ${{ steps.cache-sd-model.outputs.cache-hit != 'true' }} run: | - [[ -d models/ldm/stable-diffusion-v1 ]] \ - || mkdir -p models/ldm/stable-diffusion-v1 + mkdir -p "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}" curl \ -H "Authorization: Bearer ${{ secrets.HUGGINGFACE_TOKEN }}" \ - -o ${{ matrix.stable-diffusion-model-dl-path }} \ - -L ${{ matrix.stable-diffusion-model }} + -o "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}/${{ matrix.stable-diffusion-model-dl-name }}" \ + -L ${{ matrix.stable-diffusion-model-url }} - - name: run preload_models.py + - name: run configure_invokeai.py id: run-preload-models run: | - python scripts/preload_models.py \ - --no-interactive + python scripts/configure_invokeai.py --no-interactive --yes + + - name: cat ~/.invokeai + id: cat-invokeai + run: cat ~/.invokeai - name: Run the tests id: run-tests run: | time python scripts/invoke.py \ - --model ${{ matrix.stable-diffusion-model-switch }} \ - --from_file ${{ env.TEST_PROMPTS }} + --no-patchmatch \ + --no-nsfw_checker \ + --model ${{ matrix.stable-diffusion-model }} \ + --from_file ${{ env.TEST_PROMPTS }} \ + --root="${{ env.INVOKEAI_ROOT }}" \ + --outdir="${{ env.INVOKEAI_ROOT }}/outputs" - name: export conda env id: export-conda-env @@ -122,5 +131,5 @@ jobs: id: archive-results uses: actions/upload-artifact@v3 with: - name: results_${{ matrix.os }}_${{ matrix.stable-diffusion-model-switch }} - path: outputs/img-samples + name: results_${{ matrix.requirements-file }}_${{ matrix.python-version }} + path: ${{ env.INVOKEAI_ROOT }}/outputs diff --git a/.github/workflows/test-invoke-pip.yml b/.github/workflows/test-invoke-pip.yml new file mode 100644 index 0000000000..3866a4c32c --- /dev/null +++ b/.github/workflows/test-invoke-pip.yml @@ -0,0 +1,128 @@ +name: Test invoke.py pip +on: + push: + branches: + - 'main' + - 'development' + pull_request: + branches: + - 'main' + - 'development' + +jobs: + matrix: + strategy: + matrix: + stable-diffusion-model: + - stable-diffusion-1.5 + requirements-file: + - requirements-lin-cuda.txt + - requirements-lin-amd.txt + - requirements-mac-mps-cpu.txt + python-version: + # - '3.9' + - '3.10' + include: + - requirements-file: requirements-lin-cuda.txt + os: ubuntu-latest + default-shell: bash -l {0} + - requirements-file: requirements-lin-amd.txt + os: ubuntu-latest + default-shell: bash -l {0} + - requirements-file: requirements-mac-mps-cpu.txt + os: macOS-12 + default-shell: bash -l {0} + - stable-diffusion-model: stable-diffusion-1.5 + stable-diffusion-model-url: https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt + stable-diffusion-model-dl-path: models/ldm/stable-diffusion-v1 + stable-diffusion-model-dl-name: v1-5-pruned-emaonly.ckpt + name: ${{ matrix.requirements-file }} on ${{ matrix.python-version }} + runs-on: ${{ matrix.os }} + defaults: + run: + shell: ${{ matrix.default-shell }} + env: + INVOKEAI_ROOT: '${{ github.workspace }}/invokeai' + steps: + - name: Checkout sources + id: checkout-sources + uses: actions/checkout@v3 + + - name: create models.yaml from example + run: | + mkdir -p ${{ env.INVOKEAI_ROOT }}/configs + cp configs/models.yaml.example ${{ env.INVOKEAI_ROOT }}/configs/models.yaml + + - name: set test prompt to main branch validation + if: ${{ github.ref == 'refs/heads/main' }} + run: echo "TEST_PROMPTS=tests/preflight_prompts.txt" >> $GITHUB_ENV + + - name: set test prompt to development branch validation + if: ${{ github.ref == 'refs/heads/development' }} + run: echo "TEST_PROMPTS=tests/dev_prompts.txt" >> $GITHUB_ENV + + - name: set test prompt to Pull Request validation + if: ${{ github.ref != 'refs/heads/main' && github.ref != 'refs/heads/development' }} + run: echo "TEST_PROMPTS=tests/validate_pr_prompt.txt" >> $GITHUB_ENV + + - name: create requirements.txt + run: cp 'environments-and-requirements/${{ matrix.requirements-file }}' '${{ matrix.requirements-file }}' + + - name: setup python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + cache-dependency-path: ${{ matrix.requirements-file }} + + # - name: install dependencies + # run: ${{ env.pythonLocation }}/bin/pip install --upgrade pip setuptools wheel + + - name: install requirements + run: ${{ env.pythonLocation }}/bin/pip install -r '${{ matrix.requirements-file }}' + + - name: Use Cached Stable Diffusion Model + id: cache-sd-model + uses: actions/cache@v3 + env: + cache-name: cache-${{ matrix.stable-diffusion-model }} + with: + path: ${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }} + key: ${{ env.cache-name }} + + - name: Download ${{ matrix.stable-diffusion-model }} + id: download-stable-diffusion-model + if: ${{ steps.cache-sd-model.outputs.cache-hit != 'true' }} + run: | + mkdir -p "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}" + curl \ + -H "Authorization: Bearer ${{ secrets.HUGGINGFACE_TOKEN }}" \ + -o "${{ env.INVOKEAI_ROOT }}/${{ matrix.stable-diffusion-model-dl-path }}/${{ matrix.stable-diffusion-model-dl-name }}" \ + -L ${{ matrix.stable-diffusion-model-url }} + + - name: run configure_invokeai.py + id: run-preload-models + run: | + ${{ env.pythonLocation }}/bin/python scripts/configure_invokeai.py --no-interactive --yes + + - name: cat ~/.invokeai + id: cat-invokeai + run: cat ~/.invokeai + + - name: Run the tests + id: run-tests + run: | + time ${{ env.pythonLocation }}/bin/python scripts/invoke.py \ + --no-patchmatch \ + --no-nsfw_checker \ + --model ${{ matrix.stable-diffusion-model }} \ + --from_file ${{ env.TEST_PROMPTS }} \ + --root="${{ env.INVOKEAI_ROOT }}" \ + --outdir="${{ env.INVOKEAI_ROOT }}/outputs" + + - name: Archive results + id: archive-results + uses: actions/upload-artifact@v3 + with: + name: results_${{ matrix.requirements-file }}_${{ matrix.python-version }} + path: ${{ env.INVOKEAI_ROOT }}/outputs diff --git a/.gitignore b/.gitignore index 02cebdb4f6..669b165eba 100644 --- a/.gitignore +++ b/.gitignore @@ -194,10 +194,6 @@ checkpoints # Let the frontend manage its own gitignore !frontend/* -frontend/apt-get -frontend/dist -frontend/sudo -frontend/update # Scratch folder .scratch/ @@ -218,7 +214,7 @@ models/clipseg models/gfpgan # ignore initfile -invokeai.init +.invokeai # ignore environment.yml and requirements.txt # these are links to the real files in environments-and-requirements @@ -235,3 +231,6 @@ update.sh # this may be present if the user created a venv invokeai + +# no longer stored in source directory +models \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..d68cdf98c8 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported to the community leaders responsible for enforcement +at https://github.com/invoke-ai/InvokeAI/issues. All complaints will +be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/InvokeAI_Statement_of_Values.md b/InvokeAI_Statement_of_Values.md new file mode 100644 index 0000000000..53aa96de52 --- /dev/null +++ b/InvokeAI_Statement_of_Values.md @@ -0,0 +1,85 @@ + + +Invoke-AI is a community of software developers, researchers, and user +interface experts who have come together on a voluntary basis to build +software tools which support cutting edge AI text-to-image +applications. This community is open to anyone who wishes to +contribute to the effort and has the skill and time to do so. + +# Our Values + +The InvokeAI team is a diverse community which includes individuals +from various parts of the world and many walks of life. Despite our +differences, we share a number of core values which we ask prospective +contributors to understand and respect. We believe: + +1. That Open Source Software is a positive force in the world. We +create software that can be used, reused, and redistributed, without +restrictions, under a straightforward Open Source license (MIT). We +believe that Open Source benefits society as a whole by increasing the +availability of high quality software to all. + +2. That those who create software should receive proper attribution +for their creative work. While we support the exchange and reuse of +Open Source Software, we feel strongly that the original authors of a +piece of code should receive credit for their contribution, and we +endeavor to do so whenever possible. + +3. That there is moral ambiguity surrounding AI-assisted art. We are +aware of the moral and ethical issues surrounding the release of the +Stable Diffusion model and similar products. We are aware that, due to +the composition of their training sets, current AI-generated image +models are biased against certain ethnic groups, cultural concepts of +beauty, ethnic stereotypes, and gender roles. + + 1. We recognize the potential for harm to these groups that these biases + represent and trust that future AI models will take steps towards + reducing or eliminating the biases noted above, respect and give due + credit to the artists whose work is sourced, and call on developers + and users to favor these models over the older ones as they become + available. + +4. We are deeply committed to ensuring that this technology benefits +everyone, including artists. We see AI art not as a replacement for +the artist, but rather as a tool to empower them. With that +in mind, we are constantly debating how to build systems that put +artists’ needs first: tools which can be readily integrated into an +artist’s existing workflows and practices, enhancing their work and +helping them to push it further. Every decision we take as a team, +which includes several artists, aims to build towards that goal. + +5. That artificial intelligence can be a force for good in the world, +but must be used responsibly. Artificial intelligence technologies +have the potential to improve society, in everything from cancer care, +to customer service, to creative writing. + + 1. While we do not believe that software should arbitrarily limit what + users can do with it, we recognize that when used irresponsibly, AI + has the potential to do much harm. Our Discord server is actively + moderated in order to minimize the potential of harm from + user-contributed images. In addition, we ask users of our software to + refrain from using it in any way that would cause mental, emotional or + physical harm to individuals and vulnerable populations including (but + not limited to) women; minors; ethnic minorities; religious groups; + members of LGBTQIA communities; and people with disabilities or + impairments. + + 2. Note that some of the image generation AI models which the Invoke-AI + toolkit supports carry licensing agreements which impose restrictions + on how the model is used. We ask that our users read and agree to + these terms if they wish to make use of these models. These agreements + are distinct from the MIT license which applies to the InvokeAI + software and source code. + +6. That mutual respect is key to a healthy software development +community. Members of the InvokeAI community are expected to treat +each other with respect, beneficence, and empathy. Each of us has a +different background and a unique set of skills. We strive to help +each other grow and gain new skills, and we apportion expectations in +a way that balances the members' time, skillset, and interest +area. Disputes are resolved by open and honest communication. + +## Signature + +This document has been collectively crafted and approved by the current InvokeAI team members, as of 28 Nov 2022: **lstein** (Lincoln Stein), **blessedcoolant**, **hipsterusername** (Kent Keirsey), **Kyle0654** (Kyle Schouviller), **damian0815**, **mauwii** (Matthias Wild), **Netsvetaev** (Artur Netsvetaev), **psychedelicious**, **tildebyte**, and **keturn**. Although individuals within the group may hold differing views on particular details and/or their implications, we are all in agreement about its fundamental statements, as well as their significance and importance to this project moving forward. + diff --git a/README.md b/README.md index c57c9cfd85..8067978adf 100644 --- a/README.md +++ b/README.md @@ -172,15 +172,22 @@ problems and other issues. # Contributing Anyone who wishes to contribute to this project, whether documentation, features, bug fixes, code -cleanup, testing, or code reviews, is very much encouraged to do so. If you are unfamiliar with how -to contribute to GitHub projects, here is a -[Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github). +cleanup, testing, or code reviews, is very much encouraged to do so. To join, just raise your hand on the InvokeAI +Discord server or discussion board. -A full set of contribution guidelines, along with templates, are in progress, but for now the most +If you are unfamiliar with how +to contribute to GitHub projects, here is a +[Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github). A full set of contribution guidelines, along with templates, are in progress, but for now the most important thing is to **make your pull request against the "development" branch**, and not against "main". This will help keep public breakage to a minimum and will allow you to propose more radical changes. +We hope you enjoy using our software as much as we enjoy creating it, +and we hope that some of those of you who are reading this will elect +to become part of our community. + +Welcome to InvokeAI! + ### Contributors This fork is a combined effort of various people from across the world. diff --git a/backend/__init__.py b/backend/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/invoke_ai_web_server.py b/backend/invoke_ai_web_server.py index 0ca94a6318..ac8edc6a32 100644 --- a/backend/invoke_ai_web_server.py +++ b/backend/invoke_ai_web_server.py @@ -7,24 +7,36 @@ import traceback import math import io import base64 +import os +import json -from flask import Flask, redirect, send_from_directory +from werkzeug.utils import secure_filename +from flask import Flask, redirect, send_from_directory, request, make_response from flask_socketio import SocketIO -from PIL import Image +from PIL import Image, ImageOps +from PIL.Image import Image as ImageType from uuid import uuid4 from threading import Event from ldm.invoke.args import Args, APP_ID, APP_VERSION, calculate_init_img_hash from ldm.invoke.pngwriter import PngWriter, retrieve_metadata from ldm.invoke.prompt_parser import split_weighted_subprompts +from ldm.invoke.generator.inpaint import infill_methods from backend.modules.parameters import parameters_to_command - +from backend.modules.get_canvas_generation_mode import ( + get_canvas_generation_mode, +) # Loading Arguments opt = Args() args = opt.parse_args() +# Set the root directory for static files and relative paths +args.root_dir = os.path.expanduser(args.root_dir or "..") +if not os.path.isabs(args.outdir): + args.outdir = os.path.join(args.root_dir, args.outdir) + class InvokeAIWebServer: def __init__(self, generate, gfpgan, codeformer, esrgan) -> None: @@ -37,6 +49,13 @@ class InvokeAIWebServer: self.esrgan = esrgan self.canceled = Event() + self.ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg"} + + def allowed_file(self, filename: str) -> bool: + return ( + "." in filename + and filename.rsplit(".", 1)[1].lower() in self.ALLOWED_EXTENSIONS + ) def run(self): self.setup_app() @@ -62,8 +81,9 @@ class InvokeAIWebServer: if opt.cors: socketio_args["cors_allowed_origins"] = opt.cors + frontend_path = self.find_frontend() self.app = Flask( - __name__, static_url_path="", static_folder="../frontend/dist/" + __name__, static_url_path="", static_folder=frontend_path ) self.socketio = SocketIO(self.app, **socketio_args) @@ -88,49 +108,156 @@ class InvokeAIWebServer: else: return send_from_directory(self.app.static_folder, "index.html") + @self.app.route("/upload", methods=["POST"]) + def upload(): + try: + data = json.loads(request.form["data"]) + filename = "" + # check if the post request has the file part + if "file" in request.files: + file = request.files["file"] + # If the user does not select a file, the browser submits an + # empty file without a filename. + if file.filename == "": + return make_response("No file selected", 400) + filename = file.filename + elif "dataURL" in data: + file = dataURL_to_bytes(data["dataURL"]) + if "filename" not in data or data["filename"] == "": + return make_response("No filename provided", 400) + filename = data["filename"] + else: + return make_response("No file or dataURL", 400) + + kind = data["kind"] + + if kind == "init": + path = self.init_image_path + elif kind == "temp": + path = self.temp_image_path + elif kind == "result": + path = self.result_path + elif kind == "mask": + path = self.mask_image_path + else: + return make_response(f"Invalid upload kind: {kind}", 400) + + if not self.allowed_file(filename): + return make_response( + f'Invalid file type, must be one of: {", ".join(self.ALLOWED_EXTENSIONS)}', + 400, + ) + + secured_filename = secure_filename(filename) + + uuid = uuid4().hex + truncated_uuid = uuid[:8] + + split = os.path.splitext(secured_filename) + name = f"{split[0]}.{truncated_uuid}{split[1]}" + + file_path = os.path.join(path, name) + + if "dataURL" in data: + with open(file_path, "wb") as f: + f.write(file) + else: + file.save(file_path) + + mtime = os.path.getmtime(file_path) + + pil_image = Image.open(file_path) + + if "cropVisible" in data and data["cropVisible"] == True: + visible_image_bbox = pil_image.getbbox() + pil_image = pil_image.crop(visible_image_bbox) + pil_image.save(file_path) + + (width, height) = pil_image.size + + thumbnail_path = save_thumbnail( + pil_image, os.path.basename(file_path), self.thumbnail_image_path + ) + + response = { + "url": self.get_url_from_image_path(file_path), + "thumbnail": self.get_url_from_image_path(thumbnail_path), + "mtime": mtime, + "width": width, + "height": height, + } + + return make_response(response, 200) + + except Exception as e: + self.socketio.emit("error", {"message": (str(e))}) + print("\n") + + traceback.print_exc() + print("\n") + return make_response("Error uploading file", 500) + self.load_socketio_listeners(self.socketio) if args.gui: print(">> Launching Invoke AI GUI") - close_server_on_exit = True - if args.web_develop: - close_server_on_exit = False try: from flaskwebgui import FlaskUI FlaskUI( app=self.app, socketio=self.socketio, - start_server="flask-socketio", - host=self.host, - port=self.port, + server="flask_socketio", width=1600, height=1000, - idle_interval=10, - close_server_on_exit=close_server_on_exit, + port=self.port ).run() except KeyboardInterrupt: import sys sys.exit(0) else: + useSSL = args.certfile or args.keyfile print(">> Started Invoke AI Web Server!") if self.host == "0.0.0.0": print( - f"Point your browser at http://localhost:{self.port} or use the host's DNS name or IP address." + f"Point your browser at http{'s' if useSSL else ''}://localhost:{self.port} or use the host's DNS name or IP address." ) else: print( ">> Default host address now 127.0.0.1 (localhost). Use --host 0.0.0.0 to bind any address." ) - print(f">> Point your browser at http://{self.host}:{self.port}") - self.socketio.run(app=self.app, host=self.host, port=self.port) + print( + f">> Point your browser at http{'s' if useSSL else ''}://{self.host}:{self.port}" + ) + if not useSSL: + self.socketio.run(app=self.app, host=self.host, port=self.port) + else: + self.socketio.run( + app=self.app, + host=self.host, + port=self.port, + certfile=args.certfile, + keyfile=args.keyfile, + ) + def find_frontend(self): + my_dir = os.path.dirname(__file__) + for candidate in (os.path.join(my_dir,'..','frontend','dist'), # pip install -e . + os.path.join(my_dir,'../../../../frontend','dist') # pip install . + ): + if os.path.exists(candidate): + return candidate + assert "Frontend files cannot be found. Cannot continue" + + def setup_app(self): self.result_url = "outputs/" self.init_image_url = "outputs/init-images/" self.mask_image_url = "outputs/mask-images/" self.intermediate_url = "outputs/intermediates/" + self.temp_image_url = "outputs/temp-images/" + self.thumbnail_image_url = "outputs/thumbnails/" # location for "finished" images self.result_path = args.outdir # temporary path for intermediates @@ -138,6 +265,10 @@ class InvokeAIWebServer: # path for user-uploaded init images and masks self.init_image_path = os.path.join(self.result_path, "init-images/") self.mask_image_path = os.path.join(self.result_path, "mask-images/") + # path for temp images e.g. gallery generations which are not committed + self.temp_image_path = os.path.join(self.result_path, "temp-images/") + # path for thumbnail images + self.thumbnail_image_path = os.path.join(self.result_path, "thumbnails/") # txt log self.log_path = os.path.join(self.result_path, "invoke_log.txt") # make all output paths @@ -148,6 +279,8 @@ class InvokeAIWebServer: self.intermediate_path, self.init_image_path, self.mask_image_path, + self.temp_image_path, + self.thumbnail_image_path, ] ] @@ -156,6 +289,8 @@ class InvokeAIWebServer: def handle_request_capabilities(): print(f">> System config requested") config = self.get_system_config() + config["model_list"] = self.generate.model_cache.list_models() + config["infill_methods"] = infill_methods socketio.emit("systemConfig", config) @socketio.on("requestModelChange") @@ -181,6 +316,74 @@ class InvokeAIWebServer: traceback.print_exc() print("\n") + @socketio.on("requestEmptyTempFolder") + def empty_temp_folder(): + try: + temp_files = glob.glob(os.path.join(self.temp_image_path, "*")) + for f in temp_files: + try: + os.remove(f) + thumbnail_path = os.path.join( + self.thumbnail_image_path, + os.path.splitext(os.path.basename(f))[0] + ".webp", + ) + os.remove(thumbnail_path) + except Exception as e: + socketio.emit("error", {"message": f"Unable to delete {f}: {str(e)}"}) + pass + + socketio.emit("tempFolderEmptied") + except Exception as e: + self.socketio.emit("error", {"message": (str(e))}) + print("\n") + + traceback.print_exc() + print("\n") + + @socketio.on("requestSaveStagingAreaImageToGallery") + def save_temp_image_to_gallery(url): + try: + image_path = self.get_image_path_from_url(url) + new_path = os.path.join(self.result_path, os.path.basename(image_path)) + shutil.copy2(image_path, new_path) + + if os.path.splitext(new_path)[1] == ".png": + metadata = retrieve_metadata(new_path) + else: + metadata = {} + + pil_image = Image.open(new_path) + + (width, height) = pil_image.size + + thumbnail_path = save_thumbnail( + pil_image, os.path.basename(new_path), self.thumbnail_image_path + ) + + image_array = [ + { + "url": self.get_url_from_image_path(new_path), + "thumbnail": self.get_url_from_image_path(thumbnail_path), + "mtime": os.path.getmtime(new_path), + "metadata": metadata, + "width": width, + "height": height, + "category": "result", + } + ] + + socketio.emit( + "galleryImages", + {"images": image_array, "category": "result"}, + ) + + except Exception as e: + self.socketio.emit("error", {"message": (str(e))}) + print("\n") + + traceback.print_exc() + print("\n") + @socketio.on("requestLatestImages") def handle_request_latest_images(category, latest_mtime): try: @@ -189,6 +392,7 @@ class InvokeAIWebServer: ) paths = [] + for ext in ("*.png", "*.jpg", "*.jpeg"): paths.extend(glob.glob(os.path.join(base_path, ext))) @@ -206,24 +410,36 @@ class InvokeAIWebServer: image_array = [] for path in image_paths: - if os.path.splitext(path)[1] == ".png": - metadata = retrieve_metadata(path) - sd_metadata = metadata["sd-metadata"] - else: - sd_metadata = {} + try: + if os.path.splitext(path)[1] == ".png": + metadata = retrieve_metadata(path) + else: + metadata = {} - (width, height) = Image.open(path).size + pil_image = Image.open(path) + (width, height) = pil_image.size - image_array.append( - { - "url": self.get_url_from_image_path(path), - "mtime": os.path.getmtime(path), - "metadata": sd_metadata, - "width": width, - "height": height, - "category": category, - } - ) + thumbnail_path = save_thumbnail( + pil_image, os.path.basename(path), self.thumbnail_image_path + ) + + image_array.append( + { + "url": self.get_url_from_image_path(path), + "thumbnail": self.get_url_from_image_path( + thumbnail_path + ), + "mtime": os.path.getmtime(path), + "metadata": metadata.get("sd-metadata"), + "dreamPrompt": metadata.get("Dream"), + "width": width, + "height": height, + "category": category, + } + ) + except Exception as e: + socketio.emit("error", {"message": f"Unable to load {path}: {str(e)}"}) + pass socketio.emit( "galleryImages", @@ -266,24 +482,37 @@ class InvokeAIWebServer: image_array = [] for path in image_paths: - if os.path.splitext(path)[1] == ".png": - metadata = retrieve_metadata(path) - sd_metadata = metadata["sd-metadata"] - else: - sd_metadata = {} + try: + if os.path.splitext(path)[1] == ".png": + metadata = retrieve_metadata(path) + else: + metadata = {} - (width, height) = Image.open(path).size + pil_image = Image.open(path) + (width, height) = pil_image.size - image_array.append( - { - "url": self.get_url_from_image_path(path), - "mtime": os.path.getmtime(path), - "metadata": sd_metadata, - "width": width, - "height": height, - "category": category, - } - ) + thumbnail_path = save_thumbnail( + pil_image, os.path.basename(path), self.thumbnail_image_path + ) + + image_array.append( + { + "url": self.get_url_from_image_path(path), + "thumbnail": self.get_url_from_image_path( + thumbnail_path + ), + "mtime": os.path.getmtime(path), + "metadata": metadata.get("sd-metadata"), + "dreamPrompt": metadata.get("Dream"), + "width": width, + "height": height, + "category": category, + } + ) + except Exception as e: + print(f">> Unable to load {path}") + socketio.emit("error", {"message": f"Unable to load {path}: {str(e)}"}) + pass socketio.emit( "galleryImages", @@ -305,19 +534,24 @@ class InvokeAIWebServer: generation_parameters, esrgan_parameters, facetool_parameters ): try: - # truncate long init_mask base64 if needed + # truncate long init_mask/init_img base64 if needed + printable_parameters = { + **generation_parameters, + } + + if "init_img" in generation_parameters: + printable_parameters["init_img"] = ( + printable_parameters["init_img"][:64] + "..." + ) + if "init_mask" in generation_parameters: - printable_parameters = { - **generation_parameters, - "init_mask": generation_parameters["init_mask"][:20] + "...", - } - print( - f">> Image generation requested: {printable_parameters}\nESRGAN parameters: {esrgan_parameters}\nFacetool parameters: {facetool_parameters}" - ) - else: - print( - f">> Image generation requested: {generation_parameters}\nESRGAN parameters: {esrgan_parameters}\nFacetool parameters: {facetool_parameters}" + printable_parameters["init_mask"] = ( + printable_parameters["init_mask"][:64] + "..." ) + + print( + f">> Image generation requested: {printable_parameters}\nESRGAN parameters: {esrgan_parameters}\nFacetool parameters: {facetool_parameters}" + ) self.generate_images( generation_parameters, esrgan_parameters, @@ -348,12 +582,11 @@ class InvokeAIWebServer: image = Image.open(original_image_path) - seed = ( - original_image["metadata"]["seed"] - if "metadata" in original_image - and "seed" in original_image["metadata"] - else "unknown_seed" - ) + try: + seed = original_image["metadata"]["image"]["seed"] + except (KeyError) as e: + seed = "unknown_seed" + pass if postprocessing_parameters["type"] == "esrgan": progress.set_current_status("Upscaling (ESRGAN)") @@ -415,6 +648,10 @@ class InvokeAIWebServer: postprocessing=postprocessing_parameters["type"], ) + thumbnail_path = save_thumbnail( + image, os.path.basename(path), self.thumbnail_image_path + ) + self.write_log_message( f'[Postprocessed] "{original_image_path}" > "{path}": {postprocessing_parameters}' ) @@ -427,8 +664,10 @@ class InvokeAIWebServer: "postprocessingResult", { "url": self.get_url_from_image_path(path), + "thumbnail": self.get_url_from_image_path(thumbnail_path), "mtime": os.path.getmtime(path), "metadata": metadata, + "dreamPrompt": command, "width": width, "height": height, }, @@ -447,14 +686,17 @@ class InvokeAIWebServer: # TODO: I think this needs a safety mechanism. @socketio.on("deleteImage") - def handle_delete_image(url, uuid, category): + def handle_delete_image(url, thumbnail, uuid, category): try: print(f'>> Delete requested "{url}"') from send2trash import send2trash path = self.get_image_path_from_url(url) - print(path) + thumbnail_path = self.get_image_path_from_url(thumbnail) + send2trash(path) + send2trash(thumbnail_path) + socketio.emit( "imageDeleted", {"url": url, "uuid": uuid, "category": category}, @@ -466,68 +708,21 @@ class InvokeAIWebServer: traceback.print_exc() print("\n") - # TODO: I think this needs a safety mechanism. - @socketio.on("uploadImage") - def handle_upload_image(bytes, name, destination): - try: - print(f'>> Image upload requested "{name}"') - file_path = self.save_file_unique_uuid_name( - bytes=bytes, name=name, path=self.init_image_path - ) - mtime = os.path.getmtime(file_path) - (width, height) = Image.open(file_path).size - print(file_path) - socketio.emit( - "imageUploaded", - { - "url": self.get_url_from_image_path(file_path), - "mtime": mtime, - "width": width, - "height": height, - "category": "user", - "destination": destination, - }, - ) - except Exception as e: - self.socketio.emit("error", {"message": (str(e))}) - print("\n") - - traceback.print_exc() - print("\n") - - # TODO: I think this needs a safety mechanism. - @socketio.on("uploadMaskImage") - def handle_upload_mask_image(bytes, name): - try: - print(f'>> Mask image upload requested "{name}"') - - file_path = self.save_file_unique_uuid_name( - bytes=bytes, name=name, path=self.mask_image_path - ) - - socketio.emit( - "maskImageUploaded", - { - "url": self.get_url_from_image_path(file_path), - }, - ) - except Exception as e: - self.socketio.emit("error", {"message": (str(e))}) - print("\n") - - traceback.print_exc() - print("\n") - # App Functions def get_system_config(self): - model_list = self.generate.model_cache.list_models() + model_list: dict = self.generate.model_cache.list_models() + active_model_name = None + + for model_name, model_dict in model_list.items(): + if model_dict["status"] == "active": + active_model_name = model_name + return { "model": "stable diffusion", - "model_id": args.model, + "model_weights": active_model_name, "model_hash": self.generate.model_hash, "app_id": APP_ID, "app_version": APP_VERSION, - "model_list": model_list, } def generate_images( @@ -543,64 +738,114 @@ class InvokeAIWebServer: else [] ) + actual_generation_mode = generation_parameters["generation_mode"] + original_bounding_box = None + + progress = Progress(generation_parameters=generation_parameters) + + self.socketio.emit("progressUpdate", progress.to_formatted_dict()) + eventlet.sleep(0) + """ TODO: If a result image is used as an init image, and then deleted, we will want to be able to use it as an init image in the future. Need to handle this case. """ - # We need to give absolute paths to the generator, stash the URLs for later - init_img_url = None - mask_img_url = None + """ + Prepare for generation based on generation_mode + """ + if generation_parameters["generation_mode"] == "unifiedCanvas": + """ + generation_parameters["init_img"] is a base64 image + generation_parameters["init_mask"] is a base64 image - if "init_img" in generation_parameters: + So we need to convert each into a PIL Image. + """ + + truncated_outpaint_image_b64 = generation_parameters["init_img"][:64] + truncated_outpaint_mask_b64 = generation_parameters["init_mask"][:64] + + init_img_url = generation_parameters["init_img"] + + original_bounding_box = generation_parameters["bounding_box"].copy() + + initial_image = dataURL_to_image( + generation_parameters["init_img"] + ).convert("RGBA") + + """ + The outpaint image and mask are pre-cropped by the UI, so the bounding box we pass + to the generator should be: + { + "x": 0, + "y": 0, + "width": original_bounding_box["width"], + "height": original_bounding_box["height"] + } + """ + + generation_parameters["bounding_box"]["x"] = 0 + generation_parameters["bounding_box"]["y"] = 0 + + # Convert mask dataURL to an image and convert to greyscale + mask_image = dataURL_to_image( + generation_parameters["init_mask"] + ).convert("L") + + actual_generation_mode = get_canvas_generation_mode( + initial_image, mask_image + ) + + """ + Apply the mask to the init image, creating a "mask" image with + transparency where inpainting should occur. This is the kind of + mask that prompt2image() needs. + """ + alpha_mask = initial_image.copy() + alpha_mask.putalpha(mask_image) + + generation_parameters["init_img"] = initial_image + generation_parameters["init_mask"] = alpha_mask + + # Remove the unneeded parameters for whichever mode we are doing + if actual_generation_mode == "inpainting": + generation_parameters.pop("seam_size", None) + generation_parameters.pop("seam_blur", None) + generation_parameters.pop("seam_strength", None) + generation_parameters.pop("seam_steps", None) + generation_parameters.pop("tile_size", None) + generation_parameters.pop("force_outpaint", None) + elif actual_generation_mode == "img2img": + generation_parameters["height"] = original_bounding_box["height"] + generation_parameters["width"] = original_bounding_box["width"] + generation_parameters.pop("init_mask", None) + generation_parameters.pop("seam_size", None) + generation_parameters.pop("seam_blur", None) + generation_parameters.pop("seam_strength", None) + generation_parameters.pop("seam_steps", None) + generation_parameters.pop("tile_size", None) + generation_parameters.pop("force_outpaint", None) + generation_parameters.pop("infill_method", None) + elif actual_generation_mode == "txt2img": + generation_parameters["height"] = original_bounding_box["height"] + generation_parameters["width"] = original_bounding_box["width"] + generation_parameters.pop("strength", None) + generation_parameters.pop("fit", None) + generation_parameters.pop("init_img", None) + generation_parameters.pop("init_mask", None) + generation_parameters.pop("seam_size", None) + generation_parameters.pop("seam_blur", None) + generation_parameters.pop("seam_strength", None) + generation_parameters.pop("seam_steps", None) + generation_parameters.pop("tile_size", None) + generation_parameters.pop("force_outpaint", None) + generation_parameters.pop("infill_method", None) + + elif generation_parameters["generation_mode"] == "img2img": init_img_url = generation_parameters["init_img"] init_img_path = self.get_image_path_from_url(init_img_url) - generation_parameters["init_img"] = init_img_path - - # if 'init_mask' in generation_parameters: - # mask_img_url = generation_parameters['init_mask'] - # generation_parameters[ - # 'init_mask' - # ] = self.get_image_path_from_url( - # generation_parameters['init_mask'] - # ) - - if "init_mask" in generation_parameters: - # grab an Image of the init image - original_image = Image.open(init_img_path) - - # copy a region from it which we will inpaint - cropped_init_image = copy_image_from_bounding_box( - original_image, **generation_parameters["bounding_box"] - ) - generation_parameters["init_img"] = cropped_init_image - - if generation_parameters["is_mask_empty"]: - generation_parameters["init_mask"] = None - else: - # grab an Image of the mask - mask_image = Image.open( - io.BytesIO( - base64.decodebytes( - bytes(generation_parameters["init_mask"], "utf-8") - ) - ) - ) - generation_parameters["init_mask"] = mask_image - - totalSteps = self.calculate_real_steps( - steps=generation_parameters["steps"], - strength=generation_parameters["strength"] - if "strength" in generation_parameters - else None, - has_init_image="init_img" in generation_parameters, - ) - - progress = Progress(generation_parameters=generation_parameters) - - self.socketio.emit("progressUpdate", progress.to_formatted_dict()) - eventlet.sleep(0) + generation_parameters["init_img"] = Image.open(init_img_path).convert('RGB') def image_progress(sample, step): if self.canceled.is_set(): @@ -610,13 +855,22 @@ class InvokeAIWebServer: nonlocal generation_parameters nonlocal progress + generation_messages = { + "txt2img": "Text to Image", + "img2img": "Image to Image", + "inpainting": "Inpainting", + "outpainting": "Outpainting", + } + progress.set_current_step(step + 1) - progress.set_current_status("Generating") + progress.set_current_status( + f"Generating ({generation_messages[actual_generation_mode]})" + ) progress.set_current_status_has_steps(True) if ( generation_parameters["progress_images"] - and step % generation_parameters['save_intermediates'] == 0 + and step % generation_parameters["save_intermediates"] == 0 and step < generation_parameters["steps"] - 1 ): image = self.generate.sample_to_image(sample) @@ -645,6 +899,8 @@ class InvokeAIWebServer: "metadata": metadata, "width": width, "height": height, + "generationMode": generation_parameters["generation_mode"], + "boundingBox": original_bounding_box, }, ) @@ -667,6 +923,8 @@ class InvokeAIWebServer: "metadata": {}, "width": width, "height": height, + "generationMode": generation_parameters["generation_mode"], + "boundingBox": original_bounding_box, }, ) @@ -685,8 +943,11 @@ class InvokeAIWebServer: step_index = 1 nonlocal prior_variations + """ + Tidy up after generation based on generation_mode + """ # paste the inpainting image back onto the original - if "init_mask" in generation_parameters: + if generation_parameters["generation_mode"] == "inpainting": image = paste_image_into_bounding_box( Image.open(init_img_path), image, @@ -782,26 +1043,43 @@ class InvokeAIWebServer: eventlet.sleep(0) # restore the stashed URLS and discard the paths, we are about to send the result to client - if "init_img" in all_parameters: - all_parameters["init_img"] = init_img_url + all_parameters["init_img"] = ( + init_img_url + if generation_parameters["generation_mode"] == "img2img" + else "" + ) if "init_mask" in all_parameters: all_parameters["init_mask"] = "" # TODO: store the mask in metadata + if generation_parameters["generation_mode"] == "unifiedCanvas": + all_parameters["bounding_box"] = original_bounding_box + metadata = self.parameters_to_generated_image_metadata(all_parameters) command = parameters_to_command(all_parameters) (width, height) = image.size + generated_image_outdir = ( + self.result_path + if generation_parameters["generation_mode"] + in ["txt2img", "img2img"] + else self.temp_image_path + ) + path = self.save_result_image( image, command, metadata, - self.result_path, + generated_image_outdir, postprocessing=postprocessing, ) + thumbnail_path = save_thumbnail( + image, os.path.basename(path), self.thumbnail_image_path + ) + print(f'>> Image generated: "{path}"') self.write_log_message(f'[Generated] "{path}": {command}') @@ -819,16 +1097,22 @@ class InvokeAIWebServer: "generationResult", { "url": self.get_url_from_image_path(path), + "thumbnail": self.get_url_from_image_path(thumbnail_path), "mtime": os.path.getmtime(path), "metadata": metadata, + "dreamPrompt": command, "width": width, "height": height, + "boundingBox": original_bounding_box, + "generationMode": generation_parameters["generation_mode"], }, ) eventlet.sleep(0) progress.set_current_iteration(progress.current_iteration + 1) + print(generation_parameters) + self.generate.prompt2image( **generation_parameters, step_callback=image_progress, @@ -882,6 +1166,8 @@ class InvokeAIWebServer: postprocessing = [] + rfc_dict["type"] = parameters["generation_mode"] + # 'postprocessing' is either null or an if "facetool_strength" in parameters: facetool_parameters = { @@ -930,8 +1216,9 @@ class InvokeAIWebServer: rfc_dict["variations"] = variations - if "init_img" in parameters: - rfc_dict["type"] = "img2img" + print(parameters) + + if rfc_dict["type"] == "img2img": rfc_dict["strength"] = parameters["strength"] rfc_dict["fit"] = parameters["fit"] # TODO: Noncompliant rfc_dict["orig_hash"] = calculate_init_img_hash( @@ -940,15 +1227,6 @@ class InvokeAIWebServer: rfc_dict["init_image_path"] = parameters[ "init_img" ] # TODO: Noncompliant - # if 'init_mask' in parameters: - # rfc_dict['mask_hash'] = calculate_init_img_hash( - # self.get_image_path_from_url(parameters['init_mask']) - # ) # TODO: Noncompliant - # rfc_dict['mask_image_path'] = parameters[ - # 'init_mask' - # ] # TODO: Noncompliant - else: - rfc_dict["type"] = "txt2img" metadata["image"] = rfc_dict @@ -1110,6 +1388,14 @@ class InvokeAIWebServer: return os.path.abspath( os.path.join(self.intermediate_path, os.path.basename(url)) ) + elif "temp-images" in url: + return os.path.abspath( + os.path.join(self.temp_image_path, os.path.basename(url)) + ) + elif "thumbnails" in url: + return os.path.abspath( + os.path.join(self.thumbnail_image_path, os.path.basename(url)) + ) else: return os.path.abspath( os.path.join(self.result_path, os.path.basename(url)) @@ -1130,6 +1416,10 @@ class InvokeAIWebServer: return os.path.join(self.mask_image_url, os.path.basename(path)) elif "intermediates" in path: return os.path.join(self.intermediate_url, os.path.basename(path)) + elif "temp-images" in path: + return os.path.join(self.temp_image_url, os.path.basename(path)) + elif "thumbnails" in path: + return os.path.join(self.thumbnail_image_url, os.path.basename(path)) else: return os.path.join(self.result_url, os.path.basename(path)) except Exception as e: @@ -1241,24 +1531,96 @@ class CanceledException(Exception): """ -Crops an image to a bounding box. +Returns a copy an image, cropped to a bounding box. """ -def copy_image_from_bounding_box(image, x, y, width, height): +def copy_image_from_bounding_box( + image: ImageType, x: int, y: int, width: int, height: int +) -> ImageType: with image as im: bounds = (x, y, x + width, y + height) im_cropped = im.crop(bounds) return im_cropped +""" +Converts a base64 image dataURL into an image. +The dataURL is split on the first commma. +""" + + +def dataURL_to_image(dataURL: str) -> ImageType: + image = Image.open( + io.BytesIO( + base64.decodebytes( + bytes( + dataURL.split(",", 1)[1], + "utf-8", + ) + ) + ) + ) + return image + + +""" +Converts a base64 image dataURL into bytes. +The dataURL is split on the first commma. +""" + + +def dataURL_to_bytes(dataURL: str) -> bytes: + return base64.decodebytes( + bytes( + dataURL.split(",", 1)[1], + "utf-8", + ) + ) + + """ Pastes an image onto another with a bounding box. """ -def paste_image_into_bounding_box(recipient_image, donor_image, x, y, width, height): +def paste_image_into_bounding_box( + recipient_image: ImageType, + donor_image: ImageType, + x: int, + y: int, + width: int, + height: int, +) -> ImageType: with recipient_image as im: bounds = (x, y, x + width, y + height) im.paste(donor_image, bounds) return recipient_image + + +""" +Saves a thumbnail of an image, returning its path. +""" + + +def save_thumbnail( + image: ImageType, + filename: str, + path: str, + size: int = 256, +) -> str: + base_filename = os.path.splitext(filename)[0] + thumbnail_path = os.path.join(path, base_filename + ".webp") + + if os.path.exists(thumbnail_path): + return thumbnail_path + + thumbnail_width = size + thumbnail_height = round(size * (image.height / image.width)) + + image_copy = image.copy() + image_copy.thumbnail(size=(thumbnail_width, thumbnail_height)) + + image_copy.save(thumbnail_path, "WEBP") + + return thumbnail_path diff --git a/backend/modules/__init__.py b/backend/modules/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/modules/get_canvas_generation_mode.py b/backend/modules/get_canvas_generation_mode.py new file mode 100644 index 0000000000..764cf474ff --- /dev/null +++ b/backend/modules/get_canvas_generation_mode.py @@ -0,0 +1,117 @@ +from PIL import Image, ImageChops +from PIL.Image import Image as ImageType +from typing import Union, Literal + +# https://stackoverflow.com/questions/43864101/python-pil-check-if-image-is-transparent +def check_for_any_transparency(img: Union[ImageType, str]) -> bool: + if type(img) is str: + img = Image.open(str) + + if img.info.get("transparency", None) is not None: + return True + if img.mode == "P": + transparent = img.info.get("transparency", -1) + for _, index in img.getcolors(): + if index == transparent: + return True + elif img.mode == "RGBA": + extrema = img.getextrema() + if extrema[3][0] < 255: + return True + return False + + +def get_canvas_generation_mode( + init_img: Union[ImageType, str], init_mask: Union[ImageType, str] +) -> Literal["txt2img", "outpainting", "inpainting", "img2img",]: + if type(init_img) is str: + init_img = Image.open(init_img) + + if type(init_mask) is str: + init_mask = Image.open(init_mask) + + init_img = init_img.convert("RGBA") + + # Get alpha from init_img + init_img_alpha = init_img.split()[-1] + init_img_alpha_mask = init_img_alpha.convert("L") + init_img_has_transparency = check_for_any_transparency(init_img) + + if init_img_has_transparency: + init_img_is_fully_transparent = ( + True if init_img_alpha_mask.getbbox() is None else False + ) + + """ + Mask images are white in areas where no change should be made, black where changes + should be made. + """ + + # Fit the mask to init_img's size and convert it to greyscale + init_mask = init_mask.resize(init_img.size).convert("L") + + """ + PIL.Image.getbbox() returns the bounding box of non-zero areas of the image, so we first + invert the mask image so that masked areas are white and other areas black == zero. + getbbox() now tells us if the are any masked areas. + """ + init_mask_bbox = ImageChops.invert(init_mask).getbbox() + init_mask_exists = False if init_mask_bbox is None else True + + if init_img_has_transparency: + if init_img_is_fully_transparent: + return "txt2img" + else: + return "outpainting" + else: + if init_mask_exists: + return "inpainting" + else: + return "img2img" + + +def main(): + # Testing + init_img_opaque = "test_images/init-img_opaque.png" + init_img_partial_transparency = "test_images/init-img_partial_transparency.png" + init_img_full_transparency = "test_images/init-img_full_transparency.png" + init_mask_no_mask = "test_images/init-mask_no_mask.png" + init_mask_has_mask = "test_images/init-mask_has_mask.png" + + print( + "OPAQUE IMAGE, NO MASK, expect img2img, got ", + get_canvas_generation_mode(init_img_opaque, init_mask_no_mask), + ) + + print( + "IMAGE WITH TRANSPARENCY, NO MASK, expect outpainting, got ", + get_canvas_generation_mode( + init_img_partial_transparency, init_mask_no_mask + ), + ) + + print( + "FULLY TRANSPARENT IMAGE NO MASK, expect txt2img, got ", + get_canvas_generation_mode(init_img_full_transparency, init_mask_no_mask), + ) + + print( + "OPAQUE IMAGE, WITH MASK, expect inpainting, got ", + get_canvas_generation_mode(init_img_opaque, init_mask_has_mask), + ) + + print( + "IMAGE WITH TRANSPARENCY, WITH MASK, expect outpainting, got ", + get_canvas_generation_mode( + init_img_partial_transparency, init_mask_has_mask + ), + ) + + print( + "FULLY TRANSPARENT IMAGE WITH MASK, expect txt2img, got ", + get_canvas_generation_mode(init_img_full_transparency, init_mask_has_mask), + ) + + +if __name__ == "__main__": + main() diff --git a/backend/modules/parameters.py b/backend/modules/parameters.py index f3079e0497..10af5ece3a 100644 --- a/backend/modules/parameters.py +++ b/backend/modules/parameters.py @@ -5,6 +5,8 @@ SAMPLER_CHOICES = [ "ddim", "k_dpm_2_a", "k_dpm_2", + "k_dpmpp_2_a", + "k_dpmpp_2", "k_euler_a", "k_euler", "k_heun", diff --git a/backend/modules/test_images/init-img_full_transparency.png b/backend/modules/test_images/init-img_full_transparency.png new file mode 100644 index 0000000000..6cdeada609 Binary files /dev/null and b/backend/modules/test_images/init-img_full_transparency.png differ diff --git a/backend/modules/test_images/init-img_opaque.png b/backend/modules/test_images/init-img_opaque.png new file mode 100644 index 0000000000..a45aec75ed Binary files /dev/null and b/backend/modules/test_images/init-img_opaque.png differ diff --git a/backend/modules/test_images/init-img_partial_transparency.png b/backend/modules/test_images/init-img_partial_transparency.png new file mode 100644 index 0000000000..348e59fc8a Binary files /dev/null and b/backend/modules/test_images/init-img_partial_transparency.png differ diff --git a/backend/modules/test_images/init-mask_has_mask.png b/backend/modules/test_images/init-mask_has_mask.png new file mode 100644 index 0000000000..88fe072950 Binary files /dev/null and b/backend/modules/test_images/init-mask_has_mask.png differ diff --git a/backend/modules/test_images/init-mask_no_mask.png b/backend/modules/test_images/init-mask_no_mask.png new file mode 100644 index 0000000000..2aecd3ea7d Binary files /dev/null and b/backend/modules/test_images/init-mask_no_mask.png differ diff --git a/configs/INITIAL_MODELS.yaml b/configs/INITIAL_MODELS.yaml new file mode 100644 index 0000000000..52a3efef39 --- /dev/null +++ b/configs/INITIAL_MODELS.yaml @@ -0,0 +1,80 @@ +stable-diffusion-1.5: + description: The newest Stable Diffusion version 1.5 weight file (4.27 GB) + repo_id: runwayml/stable-diffusion-v1-5 + config: v1-inference.yaml + file: v1-5-pruned-emaonly.ckpt + recommended: true + width: 512 + height: 512 +inpainting-1.5: + description: RunwayML SD 1.5 model optimized for inpainting (4.27 GB) + repo_id: runwayml/stable-diffusion-inpainting + config: v1-inpainting-inference.yaml + file: sd-v1-5-inpainting.ckpt + recommended: True + width: 512 + height: 512 +ft-mse-improved-autoencoder-840000: + description: StabilityAI improved autoencoder fine-tuned for human faces (recommended; 335 MB) + repo_id: stabilityai/sd-vae-ft-mse-original + config: VAE/default + file: vae-ft-mse-840000-ema-pruned.ckpt + recommended: True + width: 512 + height: 512 +stable-diffusion-1.4: + description: The original Stable Diffusion version 1.4 weight file (4.27 GB) + repo_id: CompVis/stable-diffusion-v-1-4-original + config: v1-inference.yaml + file: sd-v1-4.ckpt + recommended: False + width: 512 + height: 512 +waifu-diffusion-1.3: + description: Stable Diffusion 1.4 fine tuned on anime-styled images (4.27) + repo_id: hakurei/waifu-diffusion-v1-3 + config: v1-inference.yaml + file: model-epoch09-float32.ckpt + recommended: False + width: 512 + height: 512 +trinart-2.0: + description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB) + repo_id: naclbit/trinart_stable_diffusion_v2 + config: v1-inference.yaml + file: trinart2_step95000.ckpt + recommended: False + width: 512 + height: 512 +trinart_characters-1.0: + description: An SD model finetuned with 19.2M anime/manga style images (2.13 GB) + repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1 + config: v1-inference.yaml + file: trinart_characters_it4_v1.ckpt + recommended: False + width: 512 + height: 512 +trinart_vae: + description: Custom autoencoder for trinart_characters + repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1 + config: VAE/trinart + file: autoencoder_fix_kl-f8-trinart_characters.ckpt + recommended: False + width: 512 + height: 512 +papercut-1.0: + description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB) + repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model + config: v1-inference.yaml + file: PaperCut_v1.ckpt + recommended: False + width: 512 + height: 512 +voxel_art-1.0: + description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB) + repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model + config: v1-inference.yaml + file: VoxelArt_v1.ckpt + recommended: False + width: 512 + height: 512 diff --git a/configs/models.yaml.example b/configs/models.yaml.example index 9c152c25c1..31401cd02d 100644 --- a/configs/models.yaml.example +++ b/configs/models.yaml.example @@ -7,8 +7,8 @@ # was trained on. stable-diffusion-1.5: description: The newest Stable Diffusion version 1.5 weight file (4.27 GB) - weights: ./models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt - config: ./configs/stable-diffusion/v1-inference.yaml + weights: models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt + config: configs/stable-diffusion/v1-inference.yaml width: 512 height: 512 vae: ./models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt diff --git a/configs/sd-concepts.txt b/configs/sd-concepts.txt new file mode 100644 index 0000000000..969f628c4f --- /dev/null +++ b/configs/sd-concepts.txt @@ -0,0 +1,803 @@ +sd-concepts-library/001glitch-core +sd-concepts-library/2814-roth +sd-concepts-library/3d-female-cyborgs +sd-concepts-library/4tnght +sd-concepts-library/80s-anime-ai +sd-concepts-library/80s-anime-ai-being +sd-concepts-library/852style-girl +sd-concepts-library/8bit +sd-concepts-library/8sconception +sd-concepts-library/Aflac-duck +sd-concepts-library/Akitsuki +sd-concepts-library/Atako +sd-concepts-library/Exodus-Styling +sd-concepts-library/RINGAO +sd-concepts-library/a-female-hero-from-the-legend-of-mir +sd-concepts-library/a-hat-kid +sd-concepts-library/a-tale-of-two-empires +sd-concepts-library/aadhav-face +sd-concepts-library/aavegotchi +sd-concepts-library/abby-face +sd-concepts-library/abstract-concepts +sd-concepts-library/accurate-angel +sd-concepts-library/agm-style-nao +sd-concepts-library/aj-fosik +sd-concepts-library/alberto-mielgo +sd-concepts-library/alex-portugal +sd-concepts-library/alex-thumbnail-object-2000-steps +sd-concepts-library/aleyna-tilki +sd-concepts-library/alf +sd-concepts-library/alicebeta +sd-concepts-library/alien-avatar +sd-concepts-library/alisa +sd-concepts-library/all-rings-albuns +sd-concepts-library/altvent +sd-concepts-library/altyn-helmet +sd-concepts-library/amine +sd-concepts-library/amogus +sd-concepts-library/anders-zorn +sd-concepts-library/angus-mcbride-style +sd-concepts-library/animalve3-1500seq +sd-concepts-library/anime-background-style +sd-concepts-library/anime-background-style-v2 +sd-concepts-library/anime-boy +sd-concepts-library/anime-girl +sd-concepts-library/anyXtronXredshift +sd-concepts-library/anya-forger +sd-concepts-library/apex-wingman +sd-concepts-library/apulian-rooster-v0-1 +sd-concepts-library/arcane-face +sd-concepts-library/arcane-style-jv +sd-concepts-library/arcimboldo-style +sd-concepts-library/armando-reveron-style +sd-concepts-library/armor-concept +sd-concepts-library/arq-render +sd-concepts-library/art-brut +sd-concepts-library/arthur1 +sd-concepts-library/artist-yukiko-kanagai +sd-concepts-library/arwijn +sd-concepts-library/ashiok +sd-concepts-library/at-wolf-boy-object +sd-concepts-library/atm-ant +sd-concepts-library/atm-ant-2 +sd-concepts-library/axe-tattoo +sd-concepts-library/ayush-spider-spr +sd-concepts-library/azura-from-vibrant-venture +sd-concepts-library/ba-shiroko +sd-concepts-library/babau +sd-concepts-library/babs-bunny +sd-concepts-library/babushork +sd-concepts-library/backrooms +sd-concepts-library/bad_Hub_Hugh +sd-concepts-library/bada-club +sd-concepts-library/baldi +sd-concepts-library/baluchitherian +sd-concepts-library/bamse +sd-concepts-library/bamse-og-kylling +sd-concepts-library/bee +sd-concepts-library/beholder +sd-concepts-library/beldam +sd-concepts-library/belen +sd-concepts-library/bella-goth +sd-concepts-library/belle-delphine +sd-concepts-library/bert-muppet +sd-concepts-library/better-collage3 +sd-concepts-library/between2-mt-fade +sd-concepts-library/birb-style +sd-concepts-library/black-and-white-design +sd-concepts-library/black-waifu +sd-concepts-library/bloo +sd-concepts-library/blue-haired-boy +sd-concepts-library/blue-zombie +sd-concepts-library/blue-zombiee +sd-concepts-library/bluebey +sd-concepts-library/bluebey-2 +sd-concepts-library/bobs-burgers +sd-concepts-library/boissonnard +sd-concepts-library/bonzi-monkey +sd-concepts-library/borderlands +sd-concepts-library/bored-ape-textual-inversion +sd-concepts-library/boris-anderson +sd-concepts-library/bozo-22 +sd-concepts-library/breakcore +sd-concepts-library/brittney-williams-art +sd-concepts-library/bruma +sd-concepts-library/brunnya +sd-concepts-library/buddha-statue +sd-concepts-library/bullvbear +sd-concepts-library/button-eyes +sd-concepts-library/canadian-goose +sd-concepts-library/canary-cap +sd-concepts-library/cancer_style +sd-concepts-library/captain-haddock +sd-concepts-library/captainkirb +sd-concepts-library/car-toy-rk +sd-concepts-library/carasibana +sd-concepts-library/carlitos-el-mago +sd-concepts-library/carrascharacter +sd-concepts-library/cartoona-animals +sd-concepts-library/cat-toy +sd-concepts-library/centaur +sd-concepts-library/cgdonny1 +sd-concepts-library/cham +sd-concepts-library/chandra-nalaar +sd-concepts-library/char-con +sd-concepts-library/character-pingu +sd-concepts-library/cheburashka +sd-concepts-library/chen-1 +sd-concepts-library/child-zombie +sd-concepts-library/chillpill +sd-concepts-library/chonkfrog +sd-concepts-library/chop +sd-concepts-library/christo-person +sd-concepts-library/chuck-walton +sd-concepts-library/chucky +sd-concepts-library/chungus-poodl-pet +sd-concepts-library/cindlop +sd-concepts-library/collage-cutouts +sd-concepts-library/collage14 +sd-concepts-library/collage3 +sd-concepts-library/collage3-hubcity +sd-concepts-library/cologne +sd-concepts-library/color-page +sd-concepts-library/colossus +sd-concepts-library/command-and-conquer-remastered-cameos +sd-concepts-library/concept-art +sd-concepts-library/conner-fawcett-style +sd-concepts-library/conway-pirate +sd-concepts-library/coop-himmelblau +sd-concepts-library/coraline +sd-concepts-library/cornell-box +sd-concepts-library/cortana +sd-concepts-library/covid-19-rapid-test +sd-concepts-library/cow-uwu +sd-concepts-library/cowboy +sd-concepts-library/crazy-1 +sd-concepts-library/crazy-2 +sd-concepts-library/crb-portraits +sd-concepts-library/crb-surrealz +sd-concepts-library/crbart +sd-concepts-library/crested-gecko +sd-concepts-library/crinos-form-garou +sd-concepts-library/cry-baby-style +sd-concepts-library/crybaby-style-2-0 +sd-concepts-library/csgo-awp-object +sd-concepts-library/csgo-awp-texture-map +sd-concepts-library/cubex +sd-concepts-library/cumbia-peruana +sd-concepts-library/cute-bear +sd-concepts-library/cute-cat +sd-concepts-library/cute-game-style +sd-concepts-library/cyberpunk-lucy +sd-concepts-library/dabotap +sd-concepts-library/dan-mumford +sd-concepts-library/dan-seagrave-art-style +sd-concepts-library/dark-penguin-pinguinanimations +sd-concepts-library/darkpenguinanimatronic +sd-concepts-library/darkplane +sd-concepts-library/david-firth-artstyle +sd-concepts-library/david-martinez-cyberpunk +sd-concepts-library/david-martinez-edgerunners +sd-concepts-library/david-moreno-architecture +sd-concepts-library/daycare-attendant-sun-fnaf +sd-concepts-library/ddattender +sd-concepts-library/degods +sd-concepts-library/degodsheavy +sd-concepts-library/depthmap +sd-concepts-library/depthmap-style +sd-concepts-library/design +sd-concepts-library/detectivedinosaur1 +sd-concepts-library/diaosu-toy +sd-concepts-library/dicoo +sd-concepts-library/dicoo2 +sd-concepts-library/dishonored-portrait-styles +sd-concepts-library/disquieting-muses +sd-concepts-library/ditko +sd-concepts-library/dlooak +sd-concepts-library/doc +sd-concepts-library/doener-red-line-art +sd-concepts-library/dog +sd-concepts-library/dog-django +sd-concepts-library/doge-pound +sd-concepts-library/dong-ho +sd-concepts-library/dong-ho2 +sd-concepts-library/doose-s-realistic-art-style +sd-concepts-library/dq10-anrushia +sd-concepts-library/dr-livesey +sd-concepts-library/dr-strange +sd-concepts-library/dragonborn +sd-concepts-library/dreamcore +sd-concepts-library/dreamy-painting +sd-concepts-library/drive-scorpion-jacket +sd-concepts-library/dsmuses +sd-concepts-library/dtv-pkmn +sd-concepts-library/dullboy-caricature +sd-concepts-library/duranduran +sd-concepts-library/durer-style +sd-concepts-library/dyoudim-style +sd-concepts-library/early-mishima-kurone +sd-concepts-library/eastward +sd-concepts-library/eddie +sd-concepts-library/edgerunners-style +sd-concepts-library/edgerunners-style-v2 +sd-concepts-library/el-salvador-style-style +sd-concepts-library/elegant-flower +sd-concepts-library/elspeth-tirel +sd-concepts-library/eru-chitanda-casual +sd-concepts-library/erwin-olaf-style +sd-concepts-library/ettblackteapot +sd-concepts-library/explosions-cat +sd-concepts-library/eye-of-agamotto +sd-concepts-library/f-22 +sd-concepts-library/facadeplace +sd-concepts-library/fairy-tale-painting-style +sd-concepts-library/fairytale +sd-concepts-library/fang-yuan-001 +sd-concepts-library/faraon-love-shady +sd-concepts-library/fasina +sd-concepts-library/felps +sd-concepts-library/female-kpop-singer +sd-concepts-library/fergal-cat +sd-concepts-library/filename-2 +sd-concepts-library/fileteado-porteno +sd-concepts-library/final-fantasy-logo +sd-concepts-library/fireworks-over-water +sd-concepts-library/fish +sd-concepts-library/flag-ussr +sd-concepts-library/flatic +sd-concepts-library/floral +sd-concepts-library/fluid-acrylic-jellyfish-creatures-style-of-carl-ingram-art +sd-concepts-library/fnf-boyfriend +sd-concepts-library/fold-structure +sd-concepts-library/fox-purple +sd-concepts-library/fractal +sd-concepts-library/fractal-flame +sd-concepts-library/fractal-temple-style +sd-concepts-library/frank-frazetta +sd-concepts-library/franz-unterberger +sd-concepts-library/freddy-fazbear +sd-concepts-library/freefonix-style +sd-concepts-library/furrpopasthetic +sd-concepts-library/fursona +sd-concepts-library/fzk +sd-concepts-library/galaxy-explorer +sd-concepts-library/ganyu-genshin-impact +sd-concepts-library/garcon-the-cat +sd-concepts-library/garfield-pizza-plush +sd-concepts-library/garfield-pizza-plush-v2 +sd-concepts-library/gba-fe-class-cards +sd-concepts-library/gba-pokemon-sprites +sd-concepts-library/geggin +sd-concepts-library/ggplot2 +sd-concepts-library/ghost-style +sd-concepts-library/ghostproject-men +sd-concepts-library/gibasachan-v0 +sd-concepts-library/gim +sd-concepts-library/gio +sd-concepts-library/giygas +sd-concepts-library/glass-pipe +sd-concepts-library/glass-prism-cube +sd-concepts-library/glow-forest +sd-concepts-library/goku +sd-concepts-library/gram-tops +sd-concepts-library/green-blue-shanshui +sd-concepts-library/green-tent +sd-concepts-library/grifter +sd-concepts-library/grisstyle +sd-concepts-library/grit-toy +sd-concepts-library/gt-color-paint-2 +sd-concepts-library/gta5-artwork +sd-concepts-library/guttestreker +sd-concepts-library/gymnastics-leotard-v2 +sd-concepts-library/half-life-2-dog +sd-concepts-library/handstand +sd-concepts-library/hanfu-anime-style +sd-concepts-library/happy-chaos +sd-concepts-library/happy-person12345 +sd-concepts-library/happy-person12345-assets +sd-concepts-library/harley-quinn +sd-concepts-library/harmless-ai-1 +sd-concepts-library/harmless-ai-house-style-1 +sd-concepts-library/hd-emoji +sd-concepts-library/heather +sd-concepts-library/henjo-techno-show +sd-concepts-library/herge-style +sd-concepts-library/hiten-style-nao +sd-concepts-library/hitokomoru-style-nao +sd-concepts-library/hiyuki-chan +sd-concepts-library/hk-bamboo +sd-concepts-library/hk-betweenislands +sd-concepts-library/hk-bicycle +sd-concepts-library/hk-blackandwhite +sd-concepts-library/hk-breakfast +sd-concepts-library/hk-buses +sd-concepts-library/hk-clouds +sd-concepts-library/hk-goldbuddha +sd-concepts-library/hk-goldenlantern +sd-concepts-library/hk-hkisland +sd-concepts-library/hk-leaves +sd-concepts-library/hk-market +sd-concepts-library/hk-oldcamera +sd-concepts-library/hk-opencamera +sd-concepts-library/hk-peach +sd-concepts-library/hk-phonevax +sd-concepts-library/hk-streetpeople +sd-concepts-library/hk-vintage +sd-concepts-library/hoi4 +sd-concepts-library/hoi4-leaders +sd-concepts-library/homestuck-sprite +sd-concepts-library/homestuck-troll +sd-concepts-library/hours-sentry-fade +sd-concepts-library/hours-style +sd-concepts-library/hrgiger-drmacabre +sd-concepts-library/huang-guang-jian +sd-concepts-library/huatli +sd-concepts-library/huayecai820-greyscale +sd-concepts-library/hub-city +sd-concepts-library/hubris-oshri +sd-concepts-library/huckleberry +sd-concepts-library/hydrasuit +sd-concepts-library/i-love-chaos +sd-concepts-library/ibere-thenorio +sd-concepts-library/ic0n +sd-concepts-library/ie-gravestone +sd-concepts-library/ikea-fabler +sd-concepts-library/illustration-style +sd-concepts-library/ilo-kunst +sd-concepts-library/ilya-shkipin +sd-concepts-library/im-poppy +sd-concepts-library/ina-art +sd-concepts-library/indian-watercolor-portraits +sd-concepts-library/indiana +sd-concepts-library/ingmar-bergman +sd-concepts-library/insidewhale +sd-concepts-library/interchanges +sd-concepts-library/inuyama-muneto-style-nao +sd-concepts-library/irasutoya +sd-concepts-library/iridescent-illustration-style +sd-concepts-library/iridescent-photo-style +sd-concepts-library/isabell-schulte-pv-pvii-3000steps +sd-concepts-library/isabell-schulte-pviii-1-image-style +sd-concepts-library/isabell-schulte-pviii-1024px-1500-steps-style +sd-concepts-library/isabell-schulte-pviii-12tiles-3000steps-style +sd-concepts-library/isabell-schulte-pviii-4-tiles-1-lr-3000-steps-style +sd-concepts-library/isabell-schulte-pviii-4-tiles-3-lr-5000-steps-style +sd-concepts-library/isabell-schulte-pviii-4tiles-500steps +sd-concepts-library/isabell-schulte-pviii-4tiles-6000steps +sd-concepts-library/isabell-schulte-pviii-style +sd-concepts-library/isometric-tile-test +sd-concepts-library/jacqueline-the-unicorn +sd-concepts-library/james-web-space-telescope +sd-concepts-library/jamie-hewlett-style +sd-concepts-library/jamiels +sd-concepts-library/jang-sung-rak-style +sd-concepts-library/jetsetdreamcastcovers +sd-concepts-library/jin-kisaragi +sd-concepts-library/jinjoon-lee-they +sd-concepts-library/jm-bergling-monogram +sd-concepts-library/joe-mad +sd-concepts-library/joe-whiteford-art-style +sd-concepts-library/joemad +sd-concepts-library/john-blanche +sd-concepts-library/johnny-silverhand +sd-concepts-library/jojo-bizzare-adventure-manga-lineart +sd-concepts-library/jos-de-kat +sd-concepts-library/junji-ito-artstyle +sd-concepts-library/kaleido +sd-concepts-library/kaneoya-sachiko +sd-concepts-library/kanovt +sd-concepts-library/kanv1 +sd-concepts-library/karan-gloomy +sd-concepts-library/karl-s-lzx-1 +sd-concepts-library/kasumin +sd-concepts-library/kawaii-colors +sd-concepts-library/kawaii-girl-plus-object +sd-concepts-library/kawaii-girl-plus-style +sd-concepts-library/kawaii-girl-plus-style-v1-1 +sd-concepts-library/kay +sd-concepts-library/kaya-ghost-assasin +sd-concepts-library/ki +sd-concepts-library/kinda-sus +sd-concepts-library/kings-quest-agd +sd-concepts-library/kiora +sd-concepts-library/kira-sensei +sd-concepts-library/kirby +sd-concepts-library/klance +sd-concepts-library/kodakvision500t +sd-concepts-library/kogatan-shiny +sd-concepts-library/kogecha +sd-concepts-library/kojima-ayami +sd-concepts-library/koko-dog +sd-concepts-library/kuvshinov +sd-concepts-library/kysa-v-style +sd-concepts-library/laala-character +sd-concepts-library/larrette +sd-concepts-library/lavko +sd-concepts-library/lazytown-stephanie +sd-concepts-library/ldr +sd-concepts-library/ldrs +sd-concepts-library/led-toy +sd-concepts-library/lego-astronaut +sd-concepts-library/leica +sd-concepts-library/leif-jones +sd-concepts-library/lex +sd-concepts-library/liliana +sd-concepts-library/liliana-vess +sd-concepts-library/liminal-spaces-2-0 +sd-concepts-library/liminalspaces +sd-concepts-library/line-art +sd-concepts-library/line-style +sd-concepts-library/linnopoke +sd-concepts-library/liquid-light +sd-concepts-library/liqwid-aquafarmer +sd-concepts-library/lizardman +sd-concepts-library/loab-character +sd-concepts-library/loab-style +sd-concepts-library/lofa +sd-concepts-library/logo-with-face-on-shield +sd-concepts-library/lolo +sd-concepts-library/looney-anime +sd-concepts-library/lost-rapper +sd-concepts-library/lphr-style +sd-concepts-library/lucario +sd-concepts-library/lucky-luke +sd-concepts-library/lugal-ki-en +sd-concepts-library/luinv2 +sd-concepts-library/lula-13 +sd-concepts-library/lumio +sd-concepts-library/lxj-o4 +sd-concepts-library/m-geo +sd-concepts-library/m-geoo +sd-concepts-library/madhubani-art +sd-concepts-library/mafalda-character +sd-concepts-library/magic-pengel +sd-concepts-library/malika-favre-art-style +sd-concepts-library/manga-style +sd-concepts-library/marbling-art +sd-concepts-library/margo +sd-concepts-library/marty +sd-concepts-library/marty6 +sd-concepts-library/mass +sd-concepts-library/masyanya +sd-concepts-library/masyunya +sd-concepts-library/mate +sd-concepts-library/matthew-stone +sd-concepts-library/mattvidpro +sd-concepts-library/maurice-quentin-de-la-tour-style +sd-concepts-library/maus +sd-concepts-library/max-foley +sd-concepts-library/mayor-richard-irvin +sd-concepts-library/mechasoulall +sd-concepts-library/medazzaland +sd-concepts-library/memnarch-mtg +sd-concepts-library/metagabe +sd-concepts-library/meyoco +sd-concepts-library/meze-audio-elite-headphones +sd-concepts-library/midjourney-style +sd-concepts-library/mikako-method +sd-concepts-library/mikako-methodi2i +sd-concepts-library/miko-3-robot +sd-concepts-library/milady +sd-concepts-library/mildemelwe-style +sd-concepts-library/million-live-akane-15k +sd-concepts-library/million-live-akane-3k +sd-concepts-library/million-live-akane-shifuku-3k +sd-concepts-library/million-live-spade-q-object-3k +sd-concepts-library/million-live-spade-q-style-3k +sd-concepts-library/minecraft-concept-art +sd-concepts-library/mishima-kurone +sd-concepts-library/mizkif +sd-concepts-library/moeb-style +sd-concepts-library/moebius +sd-concepts-library/mokoko +sd-concepts-library/mokoko-seed +sd-concepts-library/monster-girl +sd-concepts-library/monster-toy +sd-concepts-library/monte-novo +sd-concepts-library/moo-moo +sd-concepts-library/morino-hon-style +sd-concepts-library/moxxi +sd-concepts-library/msg +sd-concepts-library/mtg-card +sd-concepts-library/mtl-longsky +sd-concepts-library/mu-sadr +sd-concepts-library/munch-leaks-style +sd-concepts-library/museum-by-coop-himmelblau +sd-concepts-library/muxoyara +sd-concepts-library/my-hero-academia-style +sd-concepts-library/my-mug +sd-concepts-library/mycat +sd-concepts-library/mystical-nature +sd-concepts-library/naf +sd-concepts-library/nahiri +sd-concepts-library/namine-ritsu +sd-concepts-library/naoki-saito +sd-concepts-library/nard-style +sd-concepts-library/naruto +sd-concepts-library/natasha-johnston +sd-concepts-library/nathan-wyatt +sd-concepts-library/naval-portrait +sd-concepts-library/nazuna +sd-concepts-library/nebula +sd-concepts-library/ned-flanders +sd-concepts-library/neon-pastel +sd-concepts-library/new-priests +sd-concepts-library/nic-papercuts +sd-concepts-library/nikodim +sd-concepts-library/nissa-revane +sd-concepts-library/nixeu +sd-concepts-library/noggles +sd-concepts-library/nomad +sd-concepts-library/nouns-glasses +sd-concepts-library/obama-based-on-xi +sd-concepts-library/obama-self-2 +sd-concepts-library/og-mox-style +sd-concepts-library/ohisashiburi-style +sd-concepts-library/oleg-kuvaev +sd-concepts-library/olli-olli +sd-concepts-library/on-kawara +sd-concepts-library/one-line-drawing +sd-concepts-library/onepunchman +sd-concepts-library/onzpo +sd-concepts-library/orangejacket +sd-concepts-library/ori +sd-concepts-library/ori-toor +sd-concepts-library/orientalist-art +sd-concepts-library/osaka-jyo +sd-concepts-library/osaka-jyo2 +sd-concepts-library/osrsmini2 +sd-concepts-library/osrstiny +sd-concepts-library/other-mother +sd-concepts-library/ouroboros +sd-concepts-library/outfit-items +sd-concepts-library/overprettified +sd-concepts-library/owl-house +sd-concepts-library/painted-by-silver-of-999 +sd-concepts-library/painted-by-silver-of-999-2 +sd-concepts-library/painted-student +sd-concepts-library/painting +sd-concepts-library/pantone-milk +sd-concepts-library/paolo-bonolis +sd-concepts-library/party-girl +sd-concepts-library/pascalsibertin +sd-concepts-library/pastelartstyle +sd-concepts-library/paul-noir +sd-concepts-library/pen-ink-portraits-bennorthen +sd-concepts-library/phan +sd-concepts-library/phan-s-collage +sd-concepts-library/phc +sd-concepts-library/phoenix-01 +sd-concepts-library/pineda-david +sd-concepts-library/pink-beast-pastelae-style +sd-concepts-library/pintu +sd-concepts-library/pion-by-august-semionov +sd-concepts-library/piotr-jablonski +sd-concepts-library/pixel-mania +sd-concepts-library/pixel-toy +sd-concepts-library/pjablonski-style +sd-concepts-library/plant-style +sd-concepts-library/plen-ki-mun +sd-concepts-library/pokemon-conquest-sprites +sd-concepts-library/pool-test +sd-concepts-library/poolrooms +sd-concepts-library/poring-ragnarok-online +sd-concepts-library/poutine-dish +sd-concepts-library/princess-knight-art +sd-concepts-library/progress-chip +sd-concepts-library/puerquis-toy +sd-concepts-library/purplefishli +sd-concepts-library/pyramidheadcosplay +sd-concepts-library/qpt-atrium +sd-concepts-library/quiesel +sd-concepts-library/r-crumb-style +sd-concepts-library/rahkshi-bionicle +sd-concepts-library/raichu +sd-concepts-library/rail-scene +sd-concepts-library/rail-scene-style +sd-concepts-library/ralph-mcquarrie +sd-concepts-library/ransom +sd-concepts-library/rayne-weynolds +sd-concepts-library/rcrumb-portraits-style +sd-concepts-library/rd-chaos +sd-concepts-library/rd-paintings +sd-concepts-library/red-glasses +sd-concepts-library/reeducation-camp +sd-concepts-library/reksio-dog +sd-concepts-library/rektguy +sd-concepts-library/remert +sd-concepts-library/renalla +sd-concepts-library/repeat +sd-concepts-library/retro-girl +sd-concepts-library/retro-mecha-rangers +sd-concepts-library/retropixelart-pinguin +sd-concepts-library/rex-deno +sd-concepts-library/rhizomuse-machine-bionic-sculpture +sd-concepts-library/ricar +sd-concepts-library/rickyart +sd-concepts-library/rico-face +sd-concepts-library/riker-doll +sd-concepts-library/rikiart +sd-concepts-library/rikiboy-art +sd-concepts-library/rilakkuma +sd-concepts-library/rishusei-style +sd-concepts-library/rj-palmer +sd-concepts-library/rl-pkmn-test +sd-concepts-library/road-to-ruin +sd-concepts-library/robertnava +sd-concepts-library/roblox-avatar +sd-concepts-library/roy-lichtenstein +sd-concepts-library/ruan-jia +sd-concepts-library/russian +sd-concepts-library/s1m-naoto-ohshima +sd-concepts-library/saheeli-rai +sd-concepts-library/sakimi-style +sd-concepts-library/salmonid +sd-concepts-library/sam-yang +sd-concepts-library/sanguo-guanyu +sd-concepts-library/sas-style +sd-concepts-library/scarlet-witch +sd-concepts-library/schloss-mosigkau +sd-concepts-library/scrap-style +sd-concepts-library/scratch-project +sd-concepts-library/sculptural-style +sd-concepts-library/sd-concepts-library-uma-meme +sd-concepts-library/seamless-ground +sd-concepts-library/selezneva-alisa +sd-concepts-library/sem-mac2n +sd-concepts-library/senneca +sd-concepts-library/seraphimmoonshadow-art +sd-concepts-library/sewerslvt +sd-concepts-library/she-hulk-law-art +sd-concepts-library/she-mask +sd-concepts-library/sherhook-painting +sd-concepts-library/sherhook-painting-v2 +sd-concepts-library/shev-linocut +sd-concepts-library/shigure-ui-style +sd-concepts-library/shiny-polyman +sd-concepts-library/shrunken-head +sd-concepts-library/shu-doll +sd-concepts-library/shvoren-style +sd-concepts-library/sims-2-portrait +sd-concepts-library/singsing +sd-concepts-library/singsing-doll +sd-concepts-library/sintez-ico +sd-concepts-library/skyfalls +sd-concepts-library/slm +sd-concepts-library/smarties +sd-concepts-library/smiling-friend-style +sd-concepts-library/smooth-pencils +sd-concepts-library/smurf-style +sd-concepts-library/smw-map +sd-concepts-library/society-finch +sd-concepts-library/sorami-style +sd-concepts-library/spider-gwen +sd-concepts-library/spritual-monsters +sd-concepts-library/stable-diffusion-conceptualizer +sd-concepts-library/star-tours-posters +sd-concepts-library/stardew-valley-pixel-art +sd-concepts-library/starhavenmachinegods +sd-concepts-library/sterling-archer +sd-concepts-library/stretch-re1-robot +sd-concepts-library/stuffed-penguin-toy +sd-concepts-library/style-of-marc-allante +sd-concepts-library/summie-style +sd-concepts-library/sunfish +sd-concepts-library/super-nintendo-cartridge +sd-concepts-library/supitcha-mask +sd-concepts-library/sushi-pixel +sd-concepts-library/swamp-choe-2 +sd-concepts-library/t-skrang +sd-concepts-library/takuji-kawano +sd-concepts-library/tamiyo +sd-concepts-library/tangles +sd-concepts-library/tb303 +sd-concepts-library/tcirle +sd-concepts-library/teelip-ir-landscape +sd-concepts-library/teferi +sd-concepts-library/tela-lenca +sd-concepts-library/tela-lenca2 +sd-concepts-library/terraria-style +sd-concepts-library/tesla-bot +sd-concepts-library/test +sd-concepts-library/test-epson +sd-concepts-library/test2 +sd-concepts-library/testing +sd-concepts-library/thalasin +sd-concepts-library/thegeneral +sd-concepts-library/thorneworks +sd-concepts-library/threestooges +sd-concepts-library/thunderdome-cover +sd-concepts-library/thunderdome-covers +sd-concepts-library/ti-junglepunk-v0 +sd-concepts-library/tili-concept +sd-concepts-library/titan-robot +sd-concepts-library/tnj +sd-concepts-library/toho-pixel +sd-concepts-library/tomcat +sd-concepts-library/tonal1 +sd-concepts-library/tony-diterlizzi-s-planescape-art +sd-concepts-library/towerplace +sd-concepts-library/toy +sd-concepts-library/toy-bonnie-plush +sd-concepts-library/toyota-sera +sd-concepts-library/transmutation-circles +sd-concepts-library/trash-polka-artstyle +sd-concepts-library/travis-bedel +sd-concepts-library/trigger-studio +sd-concepts-library/trust-support +sd-concepts-library/trypophobia +sd-concepts-library/ttte +sd-concepts-library/tubby +sd-concepts-library/tubby-cats +sd-concepts-library/tudisco +sd-concepts-library/turtlepics +sd-concepts-library/type +sd-concepts-library/ugly-sonic +sd-concepts-library/uliana-kudinova +sd-concepts-library/uma +sd-concepts-library/uma-clean-object +sd-concepts-library/uma-meme +sd-concepts-library/uma-meme-style +sd-concepts-library/uma-style-classic +sd-concepts-library/unfinished-building +sd-concepts-library/urivoldemort +sd-concepts-library/uzumaki +sd-concepts-library/valorantstyle +sd-concepts-library/vb-mox +sd-concepts-library/vcr-classique +sd-concepts-library/venice +sd-concepts-library/vespertine +sd-concepts-library/victor-narm +sd-concepts-library/vietstoneking +sd-concepts-library/vivien-reid +sd-concepts-library/vkuoo1 +sd-concepts-library/vraska +sd-concepts-library/w3u +sd-concepts-library/walter-wick-photography +sd-concepts-library/warhammer-40k-drawing-style +sd-concepts-library/waterfallshadow +sd-concepts-library/wayne-reynolds-character +sd-concepts-library/wedding +sd-concepts-library/wedding-HandPainted +sd-concepts-library/werebloops +sd-concepts-library/wheatland +sd-concepts-library/wheatland-arknight +sd-concepts-library/wheelchair +sd-concepts-library/wildkat +sd-concepts-library/willy-hd +sd-concepts-library/wire-angels +sd-concepts-library/wish-artist-stile +sd-concepts-library/wlop-style +sd-concepts-library/wojak +sd-concepts-library/wojaks-now +sd-concepts-library/wojaks-now-now-now +sd-concepts-library/xatu +sd-concepts-library/xatu2 +sd-concepts-library/xbh +sd-concepts-library/xi +sd-concepts-library/xidiversity +sd-concepts-library/xioboma +sd-concepts-library/xuna +sd-concepts-library/xyz +sd-concepts-library/yb-anime +sd-concepts-library/yerba-mate +sd-concepts-library/yesdelete +sd-concepts-library/yf21 +sd-concepts-library/yilanov2 +sd-concepts-library/yinit +sd-concepts-library/yoji-shinkawa-style +sd-concepts-library/yolandi-visser +sd-concepts-library/yoshi +sd-concepts-library/youpi2 +sd-concepts-library/youtooz-candy +sd-concepts-library/yuji-himukai-style +sd-concepts-library/zaney +sd-concepts-library/zaneypixelz +sd-concepts-library/zdenek-art +sd-concepts-library/zero +sd-concepts-library/zero-bottle +sd-concepts-library/zero-suit-samus +sd-concepts-library/zillertal-can +sd-concepts-library/zizigooloo +sd-concepts-library/zk +sd-concepts-library/zoroark diff --git a/configs/stable-diffusion/v1-inference.yaml b/configs/stable-diffusion/v1-inference.yaml index baf91f6e26..ca1ae1e35d 100644 --- a/configs/stable-diffusion/v1-inference.yaml +++ b/configs/stable-diffusion/v1-inference.yaml @@ -30,9 +30,9 @@ model: target: ldm.modules.embedding_manager.EmbeddingManager params: placeholder_strings: ["*"] - initializer_words: ['face', 'man', 'photo', 'africanmale'] + initializer_words: ['sculpture'] per_image_tokens: false - num_vectors_per_token: 1 + num_vectors_per_token: 8 progressive_words: False unet_config: diff --git a/configs/stable-diffusion/v1-inpainting-inference.yaml b/configs/stable-diffusion/v1-inpainting-inference.yaml index 3ea164a359..2d25b8a4e6 100644 --- a/configs/stable-diffusion/v1-inpainting-inference.yaml +++ b/configs/stable-diffusion/v1-inpainting-inference.yaml @@ -30,9 +30,9 @@ model: target: ldm.modules.embedding_manager.EmbeddingManager params: placeholder_strings: ["*"] - initializer_words: ['face', 'man', 'photo', 'africanmale'] + initializer_words: ['sculpture'] per_image_tokens: false - num_vectors_per_token: 1 + num_vectors_per_token: 8 progressive_words: False unet_config: diff --git a/configs/stable-diffusion/v1-m1-finetune.yaml b/configs/stable-diffusion/v1-m1-finetune.yaml index af37f1ec7e..535ad0dac1 100644 --- a/configs/stable-diffusion/v1-m1-finetune.yaml +++ b/configs/stable-diffusion/v1-m1-finetune.yaml @@ -22,7 +22,7 @@ model: target: ldm.modules.embedding_manager.EmbeddingManager params: placeholder_strings: ["*"] - initializer_words: ['face', 'man', 'photo', 'africanmale'] + initializer_words: ['sculpture'] per_image_tokens: false num_vectors_per_token: 6 progressive_words: False diff --git a/docker-build/Dockerfile b/docker-build/Dockerfile index 3f20e4b6f0..f4a614f1b1 100644 --- a/docker-build/Dockerfile +++ b/docker-build/Dockerfile @@ -1,34 +1,13 @@ -FROM ubuntu AS get_miniconda - -SHELL ["/bin/bash", "-c"] - -# install wget -RUN apt-get update \ - && apt-get install -y \ - wget \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -# download and install miniconda -ARG conda_version=py39_4.12.0-Linux-x86_64 -ARG conda_prefix=/opt/conda -RUN wget --progress=dot:giga -O /miniconda.sh \ - https://repo.anaconda.com/miniconda/Miniconda3-${conda_version}.sh \ - && bash /miniconda.sh -b -p ${conda_prefix} \ - && rm -f /miniconda.sh - -FROM ubuntu AS invokeai +FROM ubuntu:22.10 # use bash SHELL [ "/bin/bash", "-c" ] -# clean bashrc -RUN echo "" > ~/.bashrc - # Install necesarry packages RUN apt-get update \ && apt-get install -y \ --no-install-recommends \ + build-essential \ gcc \ git \ libgl1-mesa-glx \ @@ -39,46 +18,17 @@ RUN apt-get update \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* -# clone repository, create models.yaml and create symlinks -ARG invokeai_git=invoke-ai/InvokeAI -ARG invokeai_branch=main -ARG project_name=invokeai -ARG conda_env_file=environment-lin-cuda.yml -RUN git clone -b ${invokeai_branch} https://github.com/${invokeai_git}.git "/${project_name}" \ - && cp \ - "/${project_name}/configs/models.yaml.example" \ - "/${project_name}/configs/models.yaml" \ - && ln -sf \ - "/${project_name}/environments-and-requirements/${conda_env_file}" \ - "/${project_name}/environment.yml" \ - && ln -sf \ - /data/models/v1-5-pruned-emaonly.ckpt \ - "/${project_name}/models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt" \ - && ln -sf \ - /data/outputs/ \ - "/${project_name}/outputs" +# set workdir and copy sources +WORKDIR /invokeai +ARG PIP_REQUIREMENTS=requirements-lin-cuda.txt +COPY . ./environments-and-requirements/${PIP_REQUIREMENTS} ./ -# set workdir -WORKDIR "/${project_name}" +# install requirements and link outputs folder +RUN pip install \ + --no-cache-dir \ + -r ${PIP_REQUIREMENTS} -# install conda env and preload models -ARG conda_prefix=/opt/conda -COPY --from=get_miniconda "${conda_prefix}" "${conda_prefix}" -RUN source "${conda_prefix}/etc/profile.d/conda.sh" \ - && conda init bash \ - && source ~/.bashrc \ - && conda env create \ - --name "${project_name}" \ - && rm -Rf ~/.cache \ - && conda clean -afy \ - && echo "conda activate ${project_name}" >> ~/.bashrc - -RUN source ~/.bashrc \ - && python scripts/preload_models.py \ - --no-interactive - -# Copy entrypoint and set env -ENV CONDA_PREFIX="${conda_prefix}" -ENV PROJECT_NAME="${project_name}" -COPY docker-build/entrypoint.sh / -ENTRYPOINT [ "/entrypoint.sh" ] +# set Environment, Entrypoint and default CMD +ENV INVOKEAI_ROOT /data +ENTRYPOINT [ "python3", "scripts/invoke.py", "--outdir=/data/outputs" ] +CMD [ "--web", "--host=0.0.0.0" ] diff --git a/docker-build/build.sh b/docker-build/build.sh index c7b94d7c0e..921498b033 100755 --- a/docker-build/build.sh +++ b/docker-build/build.sh @@ -1,84 +1,49 @@ #!/usr/bin/env bash set -e -# IMPORTANT: You need to have a token on huggingface.co to be able to download the checkpoint!!! -# configure values by using env when executing build.sh -# f.e. env ARCH=aarch64 GITHUB_INVOKE_AI=https://github.com/yourname/yourfork.git ./build.sh -source ./docker-build/env.sh || echo "please run from repository root" || exit 1 +# IMPORTANT: You need to have a token on huggingface.co to be able to download the checkpoints!!! +# configure values by using env when executing build.sh f.e. `env ARCH=aarch64 ./build.sh` -invokeai_conda_version=${INVOKEAI_CONDA_VERSION:-py39_4.12.0-${platform/\//-}} -invokeai_conda_prefix=${INVOKEAI_CONDA_PREFIX:-\/opt\/conda} -invokeai_conda_env_file=${INVOKEAI_CONDA_ENV_FILE:-environment-lin-cuda.yml} -invokeai_git=${INVOKEAI_GIT:-invoke-ai/InvokeAI} -invokeai_branch=${INVOKEAI_BRANCH:-main} -huggingface_token=${HUGGINGFACE_TOKEN?} +source ./docker-build/env.sh \ + || echo "please execute docker-build/build.sh from repository root" \ + || exit 1 + +pip_requirements=${PIP_REQUIREMENTS:-requirements-lin-cuda.txt} +dockerfile=${INVOKE_DOCKERFILE:-docker-build/Dockerfile} # print the settings echo "You are using these values:" -echo -e "project_name:\t\t ${project_name}" +echo -e "Dockerfile:\t\t ${dockerfile}" +echo -e "requirements:\t\t ${pip_requirements}" echo -e "volumename:\t\t ${volumename}" echo -e "arch:\t\t\t ${arch}" echo -e "platform:\t\t ${platform}" -echo -e "invokeai_conda_version:\t ${invokeai_conda_version}" -echo -e "invokeai_conda_prefix:\t ${invokeai_conda_prefix}" -echo -e "invokeai_conda_env_file: ${invokeai_conda_env_file}" -echo -e "invokeai_git:\t\t ${invokeai_git}" echo -e "invokeai_tag:\t\t ${invokeai_tag}\n" -_runAlpine() { - docker run \ - --rm \ - --interactive \ - --tty \ - --mount source="$volumename",target=/data \ - --workdir /data \ - alpine "$@" -} - -_copyCheckpoints() { - echo "creating subfolders for models and outputs" - _runAlpine mkdir models - _runAlpine mkdir outputs - echo "downloading v1-5-pruned-emaonly.ckpt" - _runAlpine wget \ - --header="Authorization: Bearer ${huggingface_token}" \ - -O models/v1-5-pruned-emaonly.ckpt \ - https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt - echo "done" -} - -_checkVolumeContent() { - _runAlpine ls -lhA /data/models -} - -_getModelMd5s() { - _runAlpine \ - alpine sh -c "md5sum /data/models/*.ckpt" -} - if [[ -n "$(docker volume ls -f name="${volumename}" -q)" ]]; then echo "Volume already exists" - if [[ -z "$(_checkVolumeContent)" ]]; then - echo "looks empty, copying checkpoint" - _copyCheckpoints - fi - echo "Models in ${volumename}:" - _checkVolumeContent + echo else echo -n "createing docker volume " docker volume create "${volumename}" - _copyCheckpoints fi # Build Container docker build \ --platform="${platform}" \ - --tag "${invokeai_tag}" \ - --build-arg project_name="${project_name}" \ - --build-arg conda_version="${invokeai_conda_version}" \ - --build-arg conda_prefix="${invokeai_conda_prefix}" \ - --build-arg conda_env_file="${invokeai_conda_env_file}" \ - --build-arg invokeai_git="${invokeai_git}" \ - --build-arg invokeai_branch="${invokeai_branch}" \ - --file ./docker-build/Dockerfile \ + --tag="${invokeai_tag}" \ + --build-arg="PIP_REQUIREMENTS=${pip_requirements}" \ + --file="${dockerfile}" \ . + +docker run \ + --rm \ + --platform="$platform" \ + --name="$project_name" \ + --hostname="$project_name" \ + --mount="source=$volumename,target=/data" \ + --mount="type=bind,source=$HOME/.huggingface,target=/root/.huggingface" \ + --env="HUGGINGFACE_TOKEN=${HUGGINGFACE_TOKEN}" \ + --entrypoint="python3" \ + "${invokeai_tag}" \ + scripts/configure_invokeai.py --yes diff --git a/docker-build/entrypoint.sh b/docker-build/entrypoint.sh deleted file mode 100755 index 7c0ca12f88..0000000000 --- a/docker-build/entrypoint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -e - -source "${CONDA_PREFIX}/etc/profile.d/conda.sh" -conda activate "${PROJECT_NAME}" - -python scripts/invoke.py \ - ${@:---web --host=0.0.0.0} diff --git a/docker-build/env.sh b/docker-build/env.sh index 36b718d362..d612afb7fa 100644 --- a/docker-build/env.sh +++ b/docker-build/env.sh @@ -4,7 +4,7 @@ project_name=${PROJECT_NAME:-invokeai} volumename=${VOLUMENAME:-${project_name}_data} arch=${ARCH:-x86_64} platform=${PLATFORM:-Linux/${arch}} -invokeai_tag=${INVOKEAI_TAG:-${project_name}-${arch}} +invokeai_tag=${INVOKEAI_TAG:-${project_name}:${arch}} export project_name export volumename diff --git a/docker-build/run.sh b/docker-build/run.sh index 3d1a564f4c..c0b2e9ea00 100755 --- a/docker-build/run.sh +++ b/docker-build/run.sh @@ -7,9 +7,9 @@ docker run \ --interactive \ --tty \ --rm \ - --platform "$platform" \ - --name "$project_name" \ - --hostname "$project_name" \ - --mount source="$volumename",target=/data \ - --publish 9090:9090 \ + --platform="$platform" \ + --name="$project_name" \ + --hostname="$project_name" \ + --mount="source=$volumename,target=/data" \ + --publish=9090:9090 \ "$invokeai_tag" ${1:+$@} diff --git a/docs/assets/canvas/biker_granny.png b/docs/assets/canvas/biker_granny.png new file mode 100644 index 0000000000..70385014da Binary files /dev/null and b/docs/assets/canvas/biker_granny.png differ diff --git a/docs/assets/canvas/biker_jacket_granny.png b/docs/assets/canvas/biker_jacket_granny.png new file mode 100644 index 0000000000..3a46b8a49c Binary files /dev/null and b/docs/assets/canvas/biker_jacket_granny.png differ diff --git a/docs/assets/canvas/mask_granny.png b/docs/assets/canvas/mask_granny.png new file mode 100644 index 0000000000..041a0317c9 Binary files /dev/null and b/docs/assets/canvas/mask_granny.png differ diff --git a/docs/assets/canvas/staging_area.png b/docs/assets/canvas/staging_area.png new file mode 100644 index 0000000000..0e9d4ba0de Binary files /dev/null and b/docs/assets/canvas/staging_area.png differ diff --git a/docs/assets/concepts/image1.png b/docs/assets/concepts/image1.png new file mode 100644 index 0000000000..f8c93efcf9 Binary files /dev/null and b/docs/assets/concepts/image1.png differ diff --git a/docs/assets/concepts/image2.png b/docs/assets/concepts/image2.png new file mode 100644 index 0000000000..a22411492e Binary files /dev/null and b/docs/assets/concepts/image2.png differ diff --git a/docs/assets/concepts/image3.png b/docs/assets/concepts/image3.png new file mode 100644 index 0000000000..e2213fc707 Binary files /dev/null and b/docs/assets/concepts/image3.png differ diff --git a/docs/assets/concepts/image4.png b/docs/assets/concepts/image4.png new file mode 100644 index 0000000000..052479019c Binary files /dev/null and b/docs/assets/concepts/image4.png differ diff --git a/docs/assets/concepts/image5.png b/docs/assets/concepts/image5.png new file mode 100644 index 0000000000..f3a4f76470 Binary files /dev/null and b/docs/assets/concepts/image5.png differ diff --git a/docs/assets/invoke_ai_banner.png b/docs/assets/invoke_ai_banner.png new file mode 100644 index 0000000000..af2c9b1323 Binary files /dev/null and b/docs/assets/invoke_ai_banner.png differ diff --git a/docs/features/CLI.md b/docs/features/CLI.md index 5139cdf145..b7d3eb3fe3 100644 --- a/docs/features/CLI.md +++ b/docs/features/CLI.md @@ -269,6 +269,12 @@ value, we are insisting on a more stringent classification. invoke> a piece of cake -I /path/to/breakfast.png -tm bagel 0.6 ``` +### Custom Styles and Subjects + +You can load and use hundreds of community-contributed Textual +Inversion models just by typing the appropriate trigger phrase. Please +see [Concepts Library](CONCEPTS.md) for more details. + # Other Commands The CLI offers a number of commands that begin with "!". diff --git a/docs/features/CONCEPTS.md b/docs/features/CONCEPTS.md new file mode 100644 index 0000000000..1b5a7472ea --- /dev/null +++ b/docs/features/CONCEPTS.md @@ -0,0 +1,132 @@ +--- +title: The Hugging Face Concepts Library and Importing Textual Inversion files +--- + +# :material-file-document: Concepts Library + +## Using Textual Inversion Files + +Textual inversion (TI) files are small models that customize the output of +Stable Diffusion image generation. They can augment SD with +specialized subjects and artistic styles. They are also known as +"embeds" in the machine learning world. + +Each TI file introduces one or more vocabulary terms to the SD +model. These are known in InvokeAI as "triggers." Triggers are often, +but not always, denoted using angle brackets as in +"<trigger-phrase>". The two most common type of TI files that you'll +encounter are `.pt` and `.bin` files, which are produced by different +TI training packages. InvokeAI supports both formats, but its [built-in +TI training system](TEXTUAL_INVERSION.md) produces `.pt`. + +The [Hugging Face company](https://huggingface.co/sd-concepts-library) +has amassed a large ligrary of >800 community-contributed TI files +covering a broad range of subjects and styles. InvokeAI has built-in +support for this library which downloads and merges TI files +automatically upon request. You can also install your own or others' +TI files by placing them in a designated directory. + +### An Example + +Here are a few examples to illustrate how it works. All these images +were generated using the command-line client and the Stable Diffusion +1.5 model: + +Japanese gardener +
+ + +Japanese gardener <ghibli-face> +
+ + +Japanese gardener <hoi4-leaders> +
+ + +Japanese gardener <cartoona-animals> +
+ + +You can also combine styles and concepts: + +A portrait of <alf> in <cartoona-animal> style +
+ + +## Using a Hugging Face Concept + +Hugging Face TI concepts are downloaded and installed automatically as +you require them. This requires your machine to be connected to the +Internet. To find out what each concept is for, you can browse the +[Hugging Face concepts +library](https://huggingface.co/sd-concepts-library) and look at +examples of what each concept produces. + +When you have an idea of a concept you wish to try, go to the +command-line client (CLI) and type a "<" character and the beginning +of the Hugging Face concept name you wish to load. Press the Tab key, +and the CLI will show you all matching concepts. You can also type "<" +and Tab to get a listing of all ~800 concepts, but be prepared to +scroll up to see them all! If there is more than one match you can +continue to type and Tab until the concept is completed. + +For example if you type "<x" and Tab, you'll be prompted with the completions: + +``` + +``` + +Now type "id" and press Tab. It will be autocompleted to +"<xidiversity>" because this is a unique match. + +Finish your prompt and generate as usual. You may include multiple +concept terms in the prompt. + +If you have never used this concept before, you will see a message +that the TI model is being downloaded and installed. After this, the +concept will be saved locally (in the `models/sd-concepts-library` +directory) for future use. + +Several steps happen during downloading and +installation, including a scan of the file for malicious code. Should +any errors occur, you will be warned and the concept will fail to +load. Generation will then continue treating the trigger term as a +normal string of characters (e.g. as literal "<ghibli-face>"). + +Currently auto-installation of concepts is a feature only available on +the command-line client. Support for the WebUI is a work in progress. + +## Installing your Own TI Files + +You may install any number of `.pt` and `.bin` files simply by copying +them into the `embeddings` directory of the InvokeAI runtime directory +(usually `invokeai` in your home directory). You may create +subdirectories in order to organize the files in any way you wish. Be +careful not to overwrite one file with another. For example, TI files +generated by the Hugging Face toolkit share the named +`learned_embedding.bin`. You can use subdirectories to keep them +distinct. + +At startup time, InvokeAI will scan the `embeddings` directory and +load any TI files it finds there. At startup you will see a message +similar to this one: + +``` +>> Current embedding manager terms: *, , +``` + +Note the "*" trigger term. This is a placeholder term that many early +TI tutorials taught people to use rather than a more descriptive +term. Unfortunately, if you have multiple TI files that all use this +term, only the first one loaded will be triggered by use of the term. + +To avoid this problem, you can use the `merge_embeddings.py` script to +merge two or more TI files together. If it encounters a collision of +terms, the script will prompt you to select new terms that do not +collide. See [Textual Inversion](TEXTUAL_INVERSION.md) for details. + +## Further Reading + +Please see [the repository](https://github.com/rinongal/textual_inversion) and +associated paper for details and limitations. diff --git a/docs/features/EMBIGGEN.md b/docs/features/EMBIGGEN.md index 03b0b9a8a4..87eb09c9f1 100644 --- a/docs/features/EMBIGGEN.md +++ b/docs/features/EMBIGGEN.md @@ -85,7 +85,7 @@ increasing size, every tile after the first in a row or column effectively only covers an extra `1 - overlap_ratio` on each axis. If the input/`--init_img` is same size as a tile, the ideal (for time) scaling factors with the default overlap (0.25) are 1.75, 2.5, 3.25, -4.0 etc.. +4.0, etc. `-embiggen_tiles ` @@ -100,6 +100,15 @@ Tiles are numbered starting with one, and left-to-right, top-to-bottom. So, if you are generating a 3x3 tiled image, the middle row would be `4 5 6`. +`-embiggen_strength ` + +Another advanced option if you want to experiment with the strength parameter +that embiggen uses when it calls Img2Img. Values range from 0.0 to 1.0 +and lower values preserve more of the character of the initial image. +Values that are too high will result in a completely different end image, +while values that are too low will result in an image not dissimilar to one +you would get with ESRGAN upscaling alone. The default value is 0.4. + ### Examples !!! example "" diff --git a/docs/features/NSFW.md b/docs/features/NSFW.md new file mode 100644 index 0000000000..9a39fd09c3 --- /dev/null +++ b/docs/features/NSFW.md @@ -0,0 +1,89 @@ +--- +title: The NSFW Checker +--- + +# :material-image-off: NSFW Checker + +## The NSFW ("Safety") Checker + +The Stable Diffusion image generation models will produce sexual +imagery if deliberately prompted, and will occasionally produce such +images when this is not intended. Such images are colloquially known +as "Not Safe for Work" (NSFW). This behavior is due to the nature of +the training set that Stable Diffusion was trained on, which culled +millions of "aesthetic" images from the Internet. + +You may not wish to be exposed to these images, and in some +jurisdictions it may be illegal to publicly distribute such imagery, +including mounting a publicly-available server that provides +unfiltered images to the public. Furthermore, the [Stable Diffusion +weights +License](https://github.com/invoke-ai/InvokeAI/blob/main/LICENSE-ModelWeights.txt) +forbids the model from being used to "exploit any of the +vulnerabilities of a specific group of persons." + +For these reasons Stable Diffusion offers a "safety checker," a +machine learning model trained to recognize potentially disturbing +imagery. When a potentially NSFW image is detected, the checker will +blur the image and paste a warning icon on top. The checker can be +turned on and off on the command line using `--nsfw_checker` and +`--no-nsfw_checker`. + +At installation time, InvokeAI will ask whether the checker should be +activated by default (neither argument given on the command line). The +response is stored in the InvokeAI initialization file (usually +`.invokeai` in your home directory). You can change the default at any +time by opening this file in a text editor and commenting or +uncommenting the line `--nsfw_checker`. + +## Caveats + +There are a number of caveats that you need to be aware of. + +### Accuracy + +The checker is [not perfect](https://arxiv.org/abs/2210.04610).It will +occasionally flag innocuous images (false positives), and will +frequently miss violent and gory imagery (false negatives). It rarely +fails to flag sexual imagery, but this has been known to happen. For +these reasons, the InvokeAI team prefers to refer to the software as a +"NSFW Checker" rather than "safety checker." + +### Memory Usage and Performance + +The NSFW checker consumes an additional 1.2G of GPU VRAM on top of the +3.4G of VRAM used by Stable Diffusion v1.5 (this is with +half-precision arithmetic). This means that the checker will not run +successfully on GPU cards with less than 6GB VRAM, and will reduce the +size of the images that you can produce. + +The checker also introduces a slight performance penalty. Images will +take ~1 second longer to generate when the checker is +activated. Generally this is not noticeable. + +### Intermediate Images in the Web UI + +The checker only operates on the final image produced by the Stable +Diffusion algorithm. If you are using the Web UI and have enabled the +display of intermediate images, you will briefly be exposed to a +low-resolution (mosaicized) version of the final image before it is +flagged by the checker and replaced by a fully blurred version. You +are encouraged to turn **off** intermediate image rendering when you +are using the checker. Future versions of InvokeAI will apply +additional blurring to intermediate images when the checker is active. + +### Watermarking + +InvokeAI does not apply any sort of watermark to images it +generates. However, it does write metadata into the PNG data area, +including the prompt used to generate the image and relevant parameter +settings. These fields can be examined using the `sd-metadata.py` +script that comes with the InvokeAI package. + +Note that several other Stable Diffusion distributions offer +wavelet-based "invisible" watermarking. We have experimented with the +library used to generate these watermarks and have reached the +conclusion that while the watermarking library may be adding +watermarks to PNG images, the currently available version is unable to +retrieve them successfully. If and when a functioning version of the +library becomes available, we will offer this feature as well. diff --git a/docs/features/OTHER.md b/docs/features/OTHER.md index e2e1c746fb..2ba76e912a 100644 --- a/docs/features/OTHER.md +++ b/docs/features/OTHER.md @@ -133,29 +133,6 @@ outputs = g.txt2img("a unicorn in manhattan") Outputs is a list of lists in the format [filename1,seed1],[filename2,seed2]...]. -Please see ldm/generate.py for more information. A set of example scripts is coming RSN. +Please see the documentation in ldm/generate.py for more information. --- - -## **Preload Models** - -In situations where you have limited internet connectivity or are blocked behind a firewall, you can -use the preload script to preload the required files for Stable Diffusion to run. - -The preload script `scripts/preload_models.py` needs to be run once at least while connected to the -internet. In the following runs, it will load up the cached versions of the required files from the -`.cache` directory of the system. - -```bash -(invokeai) ~/stable-diffusion$ python3 ./scripts/preload_models.py -preloading bert tokenizer... -Downloading: 100%|██████████████████████████████████| 28.0/28.0 [00:00<00:00, 49.3kB/s] -Downloading: 100%|██████████████████████████████████| 226k/226k [00:00<00:00, 2.79MB/s] -Downloading: 100%|██████████████████████████████████| 455k/455k [00:00<00:00, 4.36MB/s] -Downloading: 100%|██████████████████████████████████| 570/570 [00:00<00:00, 477kB/s] -...success -preloading kornia requirements... -Downloading: "https://github.com/DagnyT/hardnet/raw/master/pretrained/train_liberty_with_aug/checkpoint_liberty_with_aug.pth" to /u/lstein/.cache/torch/hub/checkpoints/checkpoint_liberty_with_aug.pth -100%|███████████████████████████████████████████████| 5.10M/5.10M [00:00<00:00, 101MB/s] -...success -``` diff --git a/docs/features/UNIFIED_CANVAS.md b/docs/features/UNIFIED_CANVAS.md new file mode 100644 index 0000000000..368d9999fc --- /dev/null +++ b/docs/features/UNIFIED_CANVAS.md @@ -0,0 +1,117 @@ +The Unified Canvas is a tool designed to streamline and simplify the process of composing an image using Stable Diffusion. It offers artists all of the available Stable Diffusion generation modes (Text To Image, Image To Image, Inpainting, and Outpainting) as a single unified workflow. The flexibility of the tool allows you to tweak and edit image generations, extend images beyond their initial size, and to create new content in a freeform way both inside and outside of existing images. + +This document explains the basics of using the Unified Canvas, introducing you to its features and tools one by one. It also describes some of the more advanced tools available to power users of the Canvas. + +# Basics +The Unified Canvas consists of two layers: the **Base Layer** and the **Mask Layer**. You can swap from one layer to the other by selecting the layer you want in the drop-down menu on the top left corner of the Unified Canvas, or by pressing the (Q) hotkey. + +### Base Layer +The **Base Layer** is the image content currently managed by the Canvas, and can be exported at any time to the gallery by using the **Save to Gallery** option. When the Base Layer is selected, the Brush (B) and Eraser (E) tools will directly manipulate the base layer. Any images uploaded to the Canvas, or sent to the Unified Canvas from the gallery, will clear out all existing content and set the Base layer to the new image. + +### Staging Area +When you generate images, they will display in the Canvas's **Staging Area**, alongside the Staging Area toolbar buttons. While the Staging Area is active, you cannot interact with the Canvas itself. + +
+![staging area](../assets/canvas/staging_area.png) +
+ +Accepting generations will commit the new generation to the **Base Layer**. You can review all generated images using the Prev/Next arrows, save any individual generations to your gallery (without committing to the Base layer) or discard generations. While you can Undo a discard in an individual Canvas session, any generations that are not saved will be lost when the Canvas resets. + +### Mask Layer +The **Mask Layer** consists of any masked sections that have been created to inform Inpainting generations. You can paint a new mask, or edit an existing mask, using the Brush tool and the Eraser with the Mask layer set as your Active layer. Any masked areas will only affect generation inside of the current bounding box. + +### Bounding Box +When generating a new image, Invoke will process and apply new images within the area denoted by the **Bounding Box**. The Width & Height settings of the Bounding Box, as well as its location within the Unified Canvas and pixels or empty space that it encloses, determine how new invocations are generated - see [Inpainting & Outpainting](#inpainting-and-outpainting) below. The Bounding Box can be moved and resized using the Move (V) tool. It can also be resized using the Bounding Box options in the Options Panel. By using these controls you can generate larger or smaller images, control which sections of the image are being processed, as well as control Bounding Box tools like the Bounding Box fill/erase. + +### Inpainting & Outpainting +"Inpainting" means asking the AI to refine part of an image while leaving the rest alone. For example, updating a portrait of your grandmother to have her wear a biker's jacket. + +
+![granny with a mask applied](../assets/canvas/mask_granny.png) +
+ +
+![just like magic, granny with a biker's jacket](../assets/canvas/biker_jacket_granny.png) +
+ +"Outpainting" means asking the AI to expand the original image beyond its original borders, making a bigger image that's still based on the original. For example, extending the above image of your Grandmother in a biker's jacket to include her wearing jeans (and while we're at it, a motorcycle!) + +
+![more magic - granny with a tattooed arm, denim pants, and an obscured motorcycle](../assets/canvas/biker_jacket_granny.png) +
+ +When you are using the Unified Canvas, Invoke decides automatically whether to do Inpainting, Outpainting, ImageToImage, or TextToImage by looking inside the area enclosed by the Bounding Box. It chooses the appropriate type of generation based on whether the Bounding Box contains empty (transparent) areas on the Base layer, or whether it contains colored areas from previous generations (or from painted brushstrokes) on the Base layer, and/or whether the Mask layer contains any brushstrokes. See [Generation Methods](#generation-methods) below for more information. + +# Getting Started + +To get started with the Unified Canvas, you will want to generate a new base layer using Txt2Img or importing an initial image. We'll refer to either of these methods as the "initial image" in the below guide. + +From there, you can consider the following techniques to augment your image: +* **New Images**: Move the bounding box to an empty area of the Canvas, type in your prompt, and Invoke, to generate a new image using the Text to Image function. +* **Image Correction**: Use the color picker and brush tool to paint corrections on the image, switch to the Mask layer, and brush a mask over your painted area to use **Inpainting**. You can also use the **ImageToImage** generation method to invoke new interpretations of the image. +* **Image Expansion**: Move the bounding box to include a portion of your initial image, and a portion of transparent/empty pixels, then Invoke using a prompt that describes what you'd like to see in that area. This will Outpaint the image. You'll typically find more coherent results if you keep about 50-60% of the original image in the bounding box. Make sure that the Image To Image Strength slider is set to a high value - you may need to set it higher than you are used to. +* **New Content on Existing Images**: If you want to add new details or objects into your image, use the brush tool to paint a sketch of what you'd like to see on the image, switch to the Mask layer, and brush a mask over your painted area to use **Inpainting**. If the masked area is small, consider using a smaller bounding box to take advantage of Invoke's automatic Scaling features, which can help to produce better details. +* **And more**: There are a number of creative ways to use the Canvas, and the above are just starting points. We're excited to see what you come up with! + + +# Generation Methods +The Canvas can use all generation methods available (Txt2Img, Img2Img, Inpainting, and Outpainting), and these will be automatically selected and used based on the current selection area within the Bounding Box. + +## Text to Image +If the Bounding Box is placed over an area of Canvas with an **empty Base Layer**, invoking a new image will use **TextToImage**. This generates an entirely new image based on your prompt. + +## Image to Image +If the Bounding Box is placed over an area of Canvas with an **existing Base Layer area with no transparent pixels or masks**, invoking a new image will use **ImageToImage**. This uses the image within the bounding box and your prompt to interpret a new image. The image will be closer to your original image at lower Image to Image strengths. + +## Inpainting +If the Bounding Box is placed over an area of Canvas with an **existing Base Layer and any pixels selected using the Mask layer**, invoking a new image will use **Inpainting**. Inpainting uses the existing colors/forms in the masked area in order to generate a new image for the masked area only. The unmasked portion of the image will remain the same. Image to Image strength applies to the inpainted area. + +If you desire something completely different from the original image in your new generation (i.e., if you want Invoke to ignore existing colors/forms), consider toggling the Inpaint Replace setting on, and use high values for both Inpaint Replace and Image To Image Strength. + +> Note: By default, the **Scale Before Processing** option — which inpaints more coherent details by generating at a larger resolution and then scaling — is only activated when the Bounding Box is relatively small. To get the best inpainting results you should therefore resize your Bounding Box to the smallest area that contains your mask and enough surrounding detail to help Stable Diffusion understand the context of what you want it to draw. You should also update your prompt so that it describes *just* the area within the Bounding Box. + +## Outpainting +If the Bounding Box is placed over an area of Canvas partially filled by an existing Base Layer area and partially by transparent pixels or masks, invoking a new image will use **Outpainting**, as well as **Inpainting** any masked areas. + +____ + +# Advanced Features + +Features with non-obvious behavior are detailed below, in order to provide clarity on the intent and common use cases we expect for utilizing them. + +## Toolbar + +### Mask Options +* **Enable Mask** - This flag can be used to Enable or Disable the currently painted mask. If you have painted a mask, but you don't want it affect the next invocation, but you *also* don't want to delete it, then you can set this option to Disable. When you want the mask back, set this back to Enable. +* **Preserve Masked Area** - When enabled, Preserve Masked Area inverts the effect of the Mask on the Inpainting process. Pixels in masked areas will be kept unchanged, and unmasked areas will be regenerated. + +### Creative Tools +* **Brush - Base/Mask Modes** - The Brush tool switches automatically between different modes of operation for the Base and Mask layers respectively. + * On the Base layer, the brush will directly paint on the Canvas using the color selected on the Brush Options menu. + * On the Mask layer, the brush will create a new mask. If you're finding the mask difficult to see over the existing content of the Unified Canvas, you can change the color it is drawn with using the color selector on the Mask Options dropdown. +* **Erase Bounding Box** - On the Base layer, erases all pixels within the Bounding Box. +* **Fill Bounding Box** - On the Base layer, fills all pixels within the Bounding Box with the currently selected color. + +### Canvas Tools +* **Move Tool** - Allows for manipulation of the Canvas view (by dragging on the Canvas, outside the bounding box), the Bounding Box (by dragging the edges of the box), or the Width/Height of the Bounding Box (by dragging one of the 9 directional handles). +* **Reset View** - Click to re-orients the view to the center of the Bounding Box. +* **Merge Visible** - If your browser is having performance problems drawing the image in the Unified Canvas, click this to consolidate all of the information currently being rendered by your browser into a merged copy of the image. This lowers the resource requirements and should improve performance. + +## Seam Correction +When doing Inpainting or Outpainting, Invoke needs to merge the pixels generated by Stable Diffusion into your existing image. To do this, the area around the `seam` at the boundary between your image and the new generation is automatically blended to produce a seamless output. In a fully automatic process, a mask is generated to cover the seam, and then the area of the seam is Inpainted. + +Although the default options should work well most of the time, sometimes it can help to alter the parameters that control the seam Inpainting. A wider seam and a blur setting of about 1/3 of the seam have been noted as producing consistently strong results (e.g. 96 wide and 16 blur - adds up to 32 blur with both sides). Seam strength of 0.7 is best for reducing hard seams. +* **Seam Size** - The size of the seam masked area. Set higher to make a larger mask around the seam. +* **Seam Blur** - The size of the blur that is applied on *each* side of the masked area. +* **Seam Strength** - The Image To Image Strength parameter used for the Inpainting generation that is applied to the seam area. +* **Seam Steps** - The number of generation steps that should be used to Inpaint the seam. + +## Infill & Scaling +* **Scale Before Processing & W/H**: When generating images with a bounding box smaller than the optimized W/H of the model (e.g., 512x512 for SD1.5), this feature first generates at a larger size with the same aspect ratio, and then scales that image down to fill the selected area. This is particularly useful when inpainting very small details. Scaling is optional but is enabled by default. +* **Inpaint Replace**: When Inpainting, the default method is to utilize the existing RGB values of the Base layer to inform the generation process. If Inpaint Replace is enabled, noise is generated and blended with the existing pixels (completely replacing the original RGB values at an Inpaint Replace value of 1). This can help generate more variation from the pixels on the Base layers. + * > When using Inpaint Replace you should use a higher Image To Image Strength value, especially at higher Inpaint Replace values +* **Infill Method**: Invoke currently supports two methods for producing RGB values for use in the Outpainting process: Patchmatch and Tile. We believe that Patchmatch is the superior method, however we provide support for Tile in case Patchmatch cannot be installed or is unavailable on your computer. + * **Tile Size**: The Tile method for Outpainting sources small portions of the original image and randomly place these into the areas being Outpainted. This value sets the size of those tiles. + +# Hot Keys +The Unified Canvas is a tool that excels when you use hotkeys. You can view the full list of keyboard shortcuts, updated with all new features, by clicking the Keyboard Shortcuts icon at the top right of the InvokeAI WebUI. diff --git a/docs/features/WEB.md b/docs/features/WEB.md index 795d9cf962..c6f4d3d387 100644 --- a/docs/features/WEB.md +++ b/docs/features/WEB.md @@ -303,6 +303,8 @@ The WebGUI is only rapid development. Check back regularly for updates! | `--cors [CORS ...]` | Additional allowed origins, comma-separated | | `--host HOST` | Web server: Host or IP to listen on. Set to 0.0.0.0 to accept traffic from other devices on your network. | | `--port PORT` | Web server: Port to listen on | +| `--certfile CERTFILE` | Web server: Path to certificate file to use for SSL. Use together with --keyfile | +| `--keyfile KEYFILE` | Web server: Path to private key file to use for SSL. Use together with --certfile' | | `--gui` | Start InvokeAI GUI - This is the "desktop mode" version of the web app. It uses Flask to create a desktop app experience of the webserver. | ### Web Specific Features diff --git a/docs/index.md b/docs/index.md index 903c3a53bc..aed140a934 100644 --- a/docs/index.md +++ b/docs/index.md @@ -119,6 +119,25 @@ You wil need one of the following: ```bash (invokeai) ~/InvokeAI$ python scripts/invoke.py --full_precision ``` +## :octicons-gift-24: InvokeAI Features + +- [The InvokeAI Web Interface](features/WEB.md) + - [WebGUI hotkey reference guide](features/WEBUIHOTKEYS.md) + +- [The Command Line Interace](features/CLI.md) + - [Image2Image](features/IMG2IMG.md) + - [Inpainting](features/INPAINTING.md) + - [Outpainting](features/OUTPAINTING.md) + - [Adding custom styles and subjects](features/CONCEPTS.md) + - [Upscaling and Face Reconstruction](features/POSTPROCESS.md) + +- [Generating Variations](features/VARIATIONS.md) + +- [Prompt Engineering](features/PROMPTS.md) + +- Miscellaneous + - [Embiggen upscaling](features/EMBIGGEN.md) + - [Other](features/OTHER.md) ## :octicons-log-16: Latest Changes diff --git a/docs/installation/INSTALL_DOCKER.md b/docs/installation/INSTALL_DOCKER.md index 9f168ac2a1..934ebc7e88 100644 --- a/docs/installation/INSTALL_DOCKER.md +++ b/docs/installation/INSTALL_DOCKER.md @@ -72,14 +72,19 @@ created in the last step. Some Suggestions of variables you may want to change besides the Token: -| Environment-Variable | Default value | Description | -| ------------------------- | ----------------------------- | ---------------------------------------------------------------------------- | -| `HUGGINGFACE_TOKEN` | No default, but **required**! | This is the only **required** variable, without you can't get the checkpoint | -| `ARCH` | x86_64 | if you are using a ARM based CPU | -| `INVOKEAI_TAG` | invokeai-x86_64 | the Container Repository / Tag which will be used | -| `INVOKEAI_CONDA_ENV_FILE` | environment-lin-cuda.yml | since environment.yml wouldn't work with aarch | -| `INVOKEAI_GIT` | invoke-ai/InvokeAI | the repository to use | -| `INVOKEAI_BRANCH` | main | the branch to checkout | +
+ +| Environment-Variable | Default value | Description | +| -------------------- | ----------------------------- | -------------------------------------------------------------------------------------------- | +| `HUGGINGFACE_TOKEN` | No default, but **required**! | This is the only **required** variable, without it you can't download the huggingface models | +| `PROJECT_NAME` | `invokeai` | affects the project folder, tag- and volume name | +| `VOLUMENAME` | `${PROJECT_NAME}_data` | Name of the Docker Volume where model files will be stored | +| `ARCH` | `x86_64` | can be changed to f.e. aarch64 if you are using a ARM based CPU | +| `INVOKEAI_TAG` | `${PROJECT_NAME}:${ARCH}` | the Container Repository / Tag which will be used | +| `PIP_REQUIREMENTS` | `requirements-lin-cuda.txt` | the requirements file to use (from `environments-and-requirements`) | +| `INVOKE_DOCKERFILE` | `docker-build/Dockerfile` | the Dockerfile which should be built, handy for development | + +
#### Build the Image @@ -106,15 +111,15 @@ When used without arguments, the container will start the webserver and provide you the link to open it. But if you want to use some other parameters you can also do so. -!!! example "" +!!! example "run script example" ```bash - ./docker-build/run.sh --from_file tests/validate_pr_prompt.txt + ./docker-build/run.sh "banana sushi" -Ak_lms -S42 -s10 ``` - The output folder is located on the volume which is also used to store the model. + This would generate the legendary "banana sushi" with Seed 42, k_lms Sampler and 10 steps. - Find out more about available CLI-Parameters at [features/CLI.md](../features/CLI.md/#arguments) + Find out more about available CLI-Parameters at [features/CLI.md](../../features/CLI/#arguments) --- diff --git a/docs/other/CONTRIBUTORS.md b/docs/other/CONTRIBUTORS.md index 247c1c70a0..31a8ccb44c 100644 --- a/docs/other/CONTRIBUTORS.md +++ b/docs/other/CONTRIBUTORS.md @@ -13,6 +13,19 @@ We thank them for all of their time and hard work. - [Lincoln D. Stein](mailto:lincoln.stein@gmail.com) +## **Current core team** + +* lstein (Lincoln Stein) - Co-maintainer +* blessedcoolant - Co-maintainer +* hipsterusername (Kent Keirsey) - Product Manager +* psychedelicious - Web Team Leader +* Kyle0654 (Kyle Schouviller) - Node Architect and General Backend Wizard +* damian0815 - Attention Systems and Gameplay Engineer +* mauwii (Matthias Wild) - Continuous integration and product maintenance engineer +* Netsvetaev (Artur Netsvetaev) - UI/UX Developer +* tildebyte - general gadfly and resident (self-appointed) know-it-all +* keturn - Lead for Diffusers port + ## **Contributions by** - [Sean McLellan](https://github.com/Oceanswave) diff --git a/requirements-mkdocs.txt b/docs/requirements-mkdocs.txt similarity index 100% rename from requirements-mkdocs.txt rename to docs/requirements-mkdocs.txt diff --git a/environments-and-requirements/environment-lin-aarch64.yml b/environments-and-requirements/environment-lin-aarch64.yml index b5d9677860..315595a37d 100644 --- a/environments-and-requirements/environment-lin-aarch64.yml +++ b/environments-and-requirements/environment-lin-aarch64.yml @@ -2,6 +2,7 @@ name: invokeai channels: - pytorch - conda-forge + - defaults dependencies: - albumentations=0.4.3 - cudatoolkit @@ -32,6 +33,7 @@ dependencies: - dependency_injector==4.40.0 - getpass_asterisk - omegaconf==2.1.1 + - picklescan - pyreadline3 - realesrgan - taming-transformers-rom1504 @@ -39,7 +41,6 @@ dependencies: - git+https://github.com/openai/CLIP.git@main#egg=clip - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg - - git+https://github.com/invoke-ai/GFPGAN#egg=gfpgan + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch - -e . -variables: - PYTORCH_ENABLE_MPS_FALLBACK: 1 diff --git a/environments-and-requirements/environment-lin-amd.yml b/environments-and-requirements/environment-lin-amd.yml index c2973d6bd2..93344666d2 100644 --- a/environments-and-requirements/environment-lin-amd.yml +++ b/environments-and-requirements/environment-lin-amd.yml @@ -4,7 +4,7 @@ channels: - conda-forge - defaults dependencies: - - python>=3.9 + - python=3.9.* - pip=22.2.2 - numpy=1.23.3 - pip: @@ -23,6 +23,7 @@ dependencies: - kornia==0.6.0 - omegaconf==2.2.3 - opencv-python==4.5.5.64 + - picklescan - pillow==9.2.0 - pudb==2019.2 - pyreadline3 @@ -32,6 +33,7 @@ dependencies: - streamlit==1.12.0 - taming-transformers-rom1504 - test-tube>=0.7.5 + - tqdm - torch - torch-fidelity==0.3.0 - torchaudio @@ -39,7 +41,8 @@ dependencies: - torchvision - transformers==4.21.3 - git+https://github.com/openai/CLIP.git@main#egg=clip - - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg - - git+https://github.com/invoke-ai/GFPGAN#egg=gfpgan + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch - -e . diff --git a/environments-and-requirements/environment-lin-cuda.yml b/environments-and-requirements/environment-lin-cuda.yml index e0ad755d53..17b2cddc95 100644 --- a/environments-and-requirements/environment-lin-cuda.yml +++ b/environments-and-requirements/environment-lin-cuda.yml @@ -4,7 +4,7 @@ channels: - conda-forge - defaults dependencies: - - python>=3.9 + - python=3.9.* - pip=22.2.2 - numpy=1.23.3 - torchvision=0.13.1 @@ -26,6 +26,7 @@ dependencies: - kornia==0.6.0 - omegaconf==2.2.3 - opencv-python==4.5.5.64 + - picklescan - pillow==9.2.0 - pudb==2019.2 - pyreadline3 @@ -39,7 +40,8 @@ dependencies: - torchmetrics==0.7.0 - transformers==4.21.3 - git+https://github.com/openai/CLIP.git@main#egg=clip - - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg - - git+https://github.com/invoke-ai/GFPGAN#egg=gfpgan + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch - -e . diff --git a/environments-and-requirements/environment-mac.yml b/environments-and-requirements/environment-mac.yml index 1ff49ec585..ca1dcc7886 100644 --- a/environments-and-requirements/environment-mac.yml +++ b/environments-and-requirements/environment-mac.yml @@ -52,13 +52,14 @@ dependencies: - transformers=4.23 - pip: - getpass_asterisk + - picklescan - taming-transformers-rom1504 - test-tube==0.7.5 - git+https://github.com/openai/CLIP.git@main#egg=clip - - git+https://github.com/invoke-ai/k-diffusion.git@mps#egg=k_diffusion - - git+https://github.com/invoke-ai/Real-ESRGAN.git#egg=realesrgan - - git+https://github.com/invoke-ai/GFPGAN.git#egg=gfpgan + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch - -e . variables: PYTORCH_ENABLE_MPS_FALLBACK: 1 diff --git a/environments-and-requirements/environment-win-cuda.yml b/environments-and-requirements/environment-win-cuda.yml index ad555dbef4..f71ca66619 100644 --- a/environments-and-requirements/environment-win-cuda.yml +++ b/environments-and-requirements/environment-win-cuda.yml @@ -4,7 +4,7 @@ channels: - conda-forge - defaults dependencies: - - python>=3.9 + - python=3.10.* - pip=22.2.2 - numpy=1.23.3 - torchvision=0.13.1 @@ -27,6 +27,7 @@ dependencies: - kornia==0.6.0 - omegaconf==2.2.3 - opencv-python==4.5.5.64 + - picklescan - pillow==9.2.0 - pudb==2019.2 - pyreadline3 @@ -42,5 +43,6 @@ dependencies: - git+https://github.com/openai/CLIP.git@main#egg=clip - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg - - git+https://github.com/invoke-ai/GFPGAN#egg=gfpgan + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.1#egg=gfpgan + - -e git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch - -e . diff --git a/environments-and-requirements/requirements-base.txt b/environments-and-requirements/requirements-base.txt index 8dfb069744..9c306c42ca 100644 --- a/environments-and-requirements/requirements-base.txt +++ b/environments-and-requirements/requirements-base.txt @@ -4,6 +4,7 @@ dependency_injector==4.40.0 diffusers einops eventlet +facexlib flask==2.1.3 flask_cors==3.0.10 flask_socketio==5.3.0 @@ -22,15 +23,19 @@ pudb pyreadline3 pytorch-lightning==1.7.7 realesrgan +requests==2.25.1 scikit-image>=0.19 send2trash streamlit taming-transformers-rom1504 -test-tube +test-tube>=0.7.5 torch-fidelity torchmetrics transformers==4.21.* +picklescan +git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.1#egg=gfpgan ; platform_system == 'Windows' +git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan ; platform_system != 'Windows' git+https://github.com/openai/CLIP.git@main#egg=clip git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg -git+https://github.com/invoke-ai/GFPGAN#egg=gfpgan +git+https://github.com/invoke-ai/PyPatchMatch@0.1.4#egg=pypatchmatch diff --git a/environments-and-requirements/requirements-lin-amd.txt b/environments-and-requirements/requirements-lin-amd.txt index 8ca0ead88c..ba53c938aa 100644 --- a/environments-and-requirements/requirements-lin-amd.txt +++ b/environments-and-requirements/requirements-lin-amd.txt @@ -1,6 +1,5 @@ -r environments-and-requirements/requirements-base.txt - -# Get hardware-appropriate torch/torchvision +# Get hardware-appropriate torch/torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.1.1 --trusted-host https://download.pytorch.org torch torchvision diff --git a/environments-and-requirements/requirements-mac-mps-cpu.txt b/environments-and-requirements/requirements-mac-mps-cpu.txt index 05c7d9a77c..0c957c20a2 100644 --- a/environments-and-requirements/requirements-mac-mps-cpu.txt +++ b/environments-and-requirements/requirements-mac-mps-cpu.txt @@ -1,5 +1,5 @@ -r environments-and-requirements/requirements-base.txt - +grpcio<1.51.0 protobuf==3.19.6 torch<1.13.0 torchvision<0.14.0 diff --git a/environments-and-requirements/requirements-win-colab-cuda.txt b/environments-and-requirements/requirements-win-colab-cuda.txt index b00f1487fb..1cb771c37f 100644 --- a/environments-and-requirements/requirements-win-colab-cuda.txt +++ b/environments-and-requirements/requirements-win-colab-cuda.txt @@ -1,6 +1,5 @@ -r environments-and-requirements/requirements-base.txt - -# Get hardware-appropriate torch/torchvision +# Get hardware-appropriate torch/torchvision --extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https://download.pytorch.org basicsr==1.4.1 torch==1.12.1 diff --git a/frontend/README.md b/frontend/README.md index 4becbb221f..f597cc6f23 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -5,7 +5,7 @@ - `python scripts/dream.py --web` serves both frontend and backend at http://localhost:9090 -## Environment +## Evironment Install [node](https://nodejs.org/en/download/) (includes npm) and optionally [yarn](https://yarnpkg.com/getting-started/install). @@ -15,7 +15,7 @@ packages. ## Dev -1. From `frontend/`, run `npm run dev` / `yarn dev` to start the dev server. +1. From `frontend/`, run `npm dev` / `yarn dev` to start the dev server. 2. Run `python scripts/dream.py --web`. 3. Navigate to the dev server address e.g. `http://localhost:5173/`. diff --git a/frontend/dist/assets/index.40a72c80.css b/frontend/dist/assets/index.40a72c80.css deleted file mode 100644 index bd00208028..0000000000 --- a/frontend/dist/assets/index.40a72c80.css +++ /dev/null @@ -1 +0,0 @@ -[data-theme=dark]{--white: rgb(255, 255, 255);--root-bg-color: rgb(10, 10, 10);--background-color: rgb(20, 20, 26);--background-color-secondary: rgb(16, 16, 22);--text-color: rgb(255, 255, 255);--text-color-secondary: rgb(160, 162, 188);--subtext-color: rgb(24, 24, 34);--subtext-color-bright: rgb(48, 48, 64);--border-color: rgb(30, 30, 46);--border-color-light: rgb(60, 60, 76);--invalid: rgb(255, 75, 75);--invalid-secondary: rgb(120, 5, 5);--accent-color-dim: rgb(57, 25, 153);--accent-color: rgb(80, 40, 200);--accent-color-hover: rgb(104, 60, 230);--destructive-color: rgb(185, 55, 55);--destructive-color-hover: rgb(255, 75, 75);--warning-color: rgb(200, 88, 40);--warning-color-hover: rgb(230, 117, 60);--border-color-invalid: rgb(255, 80, 50);--box-shadow-color-invalid: rgb(210, 30, 10);--svg-color: rgb(24, 24, 34);--progress-bar-color: rgb(100, 50, 245);--prompt-bg-color: rgb(10, 10, 10);--btn-svg-color: rgb(255, 255, 255);--btn-grey: rgb(30, 32, 42);--btn-grey-hover: rgb(46, 48, 68);--btn-load-more: rgb(30, 32, 42);--btn-load-more-hover: rgb(54, 56, 66);--btn-delete-image: rgb(238, 107, 107);--btn-checkbox-border-hover: rgb(46, 48, 68);--switch-bg-color: rgb(100, 102, 110);--switch-bg-active-color: rgb(80, 40, 200);--resizeable-handle-border-color: rgb(80, 82, 112);--tab-color: rgb(30, 32, 42);--tab-hover-color: rgb(36, 38, 48);--tab-list-bg: var(--accent-color);--tab-list-text: rgb(202, 204, 216);--tab-list-text-inactive: rgb(92, 94, 114);--tab-panel-bg: rgb(20, 22, 28);--metadata-bg-color: rgba(0, 0, 0, .7);--metadata-json-bg-color: rgba(255, 255, 255, .1);--status-good-color: rgb(125, 255, 100);--status-good-glow: rgb(40, 215, 40);--status-working-color: rgb(255, 175, 55);--status-working-glow: rgb(255, 160, 55);--status-bad-color: rgb(255, 90, 90);--status-bad-glow: rgb(255, 40, 40);--settings-modal-bg: rgb(30, 32, 42);--input-checkbox-bg: rgb(90, 90, 120);--input-checkbox-checked-bg: rgb(80, 40, 200);--input-checkbox-checked-tick: rgb(0, 0, 0);--input-border-color: rgb(140, 110, 255);--input-box-shadow-color: rgb(80, 30, 210);--error-level-info: rgb(200, 202, 224);--error-level-warning: rgb(255, 225, 105);--error-level-error: rgb(255, 81, 46);--console-bg-color: rgb(30, 30, 36);--console-icon-button-bg-color: rgb(50, 53, 64);--console-icon-button-bg-color-hover: rgb(70, 73, 84);--img2img-img-bg-color: rgb(30, 32, 42);--context-menu-bg-color: rgb(46, 48, 58);--context-menu-box-shadow: none;--context-menu-bg-color-hover: rgb(30, 32, 42);--floating-button-drop-shadow: drop-shadow(0 0 1rem rgba(140, 101, 255, .5));--inpainting-alerts-bg: rgba(20, 20, 26, .75);--inpainting-alerts-icon-color: rgb(255, 255, 255);--inpainting-alerts-bg-active: rgb(80, 40, 200);--inpainting-alerts-icon-active: rgb(255, 255, 255);--inpainting-alerts-bg-alert: var(--invalid);--inpainting-alerts-icon-alert: rgb(255, 255, 255)}[data-theme=light]{--white: rgb(255, 255, 255);--root-bg-color: rgb(255, 255, 255);--background-color: rgb(220, 222, 224);--background-color-secondary: rgb(204, 206, 208);--text-color: rgb(0, 0, 0);--text-color-secondary: rgb(40, 40, 40);--subtext-color: rgb(24, 24, 34);--subtext-color-bright: rgb(142, 144, 146);--border-color: rgb(200, 200, 200);--border-color-light: rgb(147, 147, 147);--invalid: rgb(255, 75, 75);--invalid-secondary: rgb(120, 5, 5);--accent-color-dim: rgb(186, 146, 0);--accent-color: rgb(235, 185, 5);--accent-color-hover: rgb(255, 200, 0);--destructive-color: rgb(237, 51, 51);--destructive-color-hover: rgb(255, 55, 55);--warning-color: rgb(224, 142, 42);--warning-color-hover: rgb(255, 167, 60);--border-color-invalid: rgb(255, 80, 50);--box-shadow-color-invalid: none;--svg-color: rgb(186, 188, 190);--progress-bar-color: rgb(235, 185, 5);--prompt-bg-color: rgb(225, 227, 229);--btn-svg-color: rgb(0, 0, 0);--btn-grey: rgb(220, 222, 224);--btn-grey-hover: rgb(230, 232, 234);--btn-load-more: rgb(202, 204, 206);--btn-load-more-hover: rgb(178, 180, 182);--btn-delete-image: rgb(213, 49, 49);--btn-checkbox-border-hover: rgb(176, 178, 182);--switch-bg-color: rgb(178, 180, 182);--switch-bg-active-color: rgb(235, 185, 5);--resizeable-handle-border-color: rgb(160, 162, 164);--tab-color: rgb(202, 204, 206);--tab-hover-color: rgb(206, 208, 210);--tab-list-bg: rgb(235, 185, 5);--tab-list-text: rgb(0, 0, 0);--tab-list-text-inactive: rgb(106, 108, 110);--tab-panel-bg: rgb(214, 216, 218);--metadata-bg-color: rgba(230, 230, 230, .9);--metadata-json-bg-color: rgba(0, 0, 0, .1);--status-good-color: rgb(21, 126, 0);--status-good-glow: var(--background-color);--status-working-color: rgb(235, 141, 0);--status-working-glow: var(--background-color);--status-bad-color: rgb(202, 0, 0);--status-bad-glow: var(--background-color);--settings-modal-bg: rgb(202, 204, 206);--input-checkbox-bg: rgb(90, 90, 120);--input-checkbox-checked-bg: rgb(235, 185, 5);--input-checkbox-checked-tick: rgb(0, 0, 0);--input-border-color: rgb(0, 0, 0);--input-box-shadow-color: none;--error-level-info: rgb(42, 42, 42);--error-level-warning: rgb(173, 121, 0);--error-level-error: rgb(145, 14, 0);--console-bg-color: rgb(220, 224, 230);--console-icon-button-bg-color: var(--switch-bg-color);--console-icon-button-bg-color-hover: var(--resizeable-handle-border-color);--img2img-img-bg-color: rgb(180, 182, 184);--context-menu-bg-color: var(--background-color);--context-menu-box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, .35), 0px 10px 20px -15px rgba(22, 23, 24, .2);--context-menu-bg-color-hover: var(--background-color-secondary);--floating-button-drop-shadow: drop-shadow(0 0 1rem rgba(0, 0, 0, .3));--inpainting-alerts-bg: rgba(220, 222, 224, .75);--inpainting-alerts-icon-color: rgb(0, 0, 0);--inpainting-alerts-bg-active: rgb(255, 200, 0);--inpainting-alerts-icon-active: rgb(0, 0, 0);--inpainting-alerts-bg-alert: var(--invalid);--inpainting-alerts-icon-alert: rgb(0, 0, 0)}@font-face{font-family:Inter;src:url(./Inter.b9a8e5e2.ttf);font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:url(./Inter-Bold.790c108b.ttf);font-display:swap;font-weight:600;font-style:normal}@keyframes slideOut{0%{transform:translate(10rem)}to{transform:translate(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.checkerboard{background-position:0px 0px,10px 10px;background-size:20px 20px;background-image:linear-gradient(45deg,#eee 25%,transparent 25%,transparent 75%,#eee 75%,#eee 100%),linear-gradient(45deg,#eee 25%,white 25%,white 75%,#eee 75%,#eee 100%)}.App{display:grid;width:100vw;height:100vh;background-color:var(--background-color)}.app-content{display:grid;row-gap:1rem;padding:1rem;grid-auto-rows:min-content auto;width:calc(100vw + -0px);height:calc(100vh - .3rem)}.site-header{display:grid;grid-template-columns:auto max-content}.site-header-left-side{display:flex;align-items:center;column-gap:.7rem;padding-left:.5rem}.site-header-left-side img{width:32px;height:32px}.site-header-left-side h1{font-size:1.4rem}.site-header-right-side{display:flex;align-items:center;column-gap:.5rem}.status{font-size:.8rem;font-weight:700}.status-good{color:var(--status-good-color);text-shadow:0 0 10px var(--status-good-glow)}.status-bad{color:var(--status-bad-color);text-shadow:0 0 10px var(--status-bad-glow)}.status-working{color:var(--status-working-color);text-shadow:0 0 10px var(--status-working-glow)}.settings-modal{background-color:var(--settings-modal-bg)!important;max-height:36rem;font-family:Inter}.settings-modal .settings-modal-content{display:grid;row-gap:2rem;overflow-y:scroll}.settings-modal .settings-modal-header{font-weight:700}.settings-modal .settings-modal-items{display:grid;row-gap:.5rem}.settings-modal .settings-modal-items .settings-modal-item{display:grid;grid-auto-flow:column;background-color:var(--background-color);padding:.4rem 1rem;border-radius:.5rem;align-items:center;width:100%}.settings-modal .settings-modal-reset{display:grid;row-gap:1rem}.settings-modal .settings-modal-reset button{min-width:100%;min-height:100%;background-color:var(--destructive-color)!important}.settings-modal .settings-modal-reset button:hover{background-color:var(--destructive-color-hover)!important}.settings-modal .settings-modal-reset button:disabled{background-color:#2d2d37!important}.settings-modal .settings-modal-reset button:disabled:hover{background-color:#2d2d37!important}.settings-modal .settings-modal-reset button svg{width:20px;height:20px;color:var(--btn-svg-color)}.model-list-accordion{outline:none;padding:.25rem}.model-list-accordion button{padding:0;margin:0}.model-list-accordion button:hover{background-color:unset}.model-list-accordion div{border:none!important}.model-list-accordion .model-list-button{display:flex;flex-direction:row;row-gap:.5rem;justify-content:space-between;align-items:center;width:100%}.model-list-accordion .model-list-header-hint{color:var(--text-color-secondary);font-weight:400}.model-list-accordion .model-list-list{display:flex;flex-direction:column;row-gap:.5rem}.model-list-accordion .model-list-list .model-list-item{display:flex;column-gap:.5rem;width:100%;justify-content:space-between;align-items:center}.model-list-accordion .model-list-list .model-list-item .model-list-item-description{font-size:.9rem}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.active{color:var(--status-good-color)}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.cached{color:var(--status-working-color)}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.not-loaded{color:var(--text-color-secondary)}.model-list-accordion .model-list-list .model-list-item .model-list-item-load-btn button{padding:.5rem}.hotkeys-modal{width:36rem!important;max-width:36rem!important;display:grid;padding:1rem;background-color:var(--settings-modal-bg)!important;row-gap:1rem;font-family:Inter}.hotkeys-modal h1{font-size:1.2rem;font-weight:700}.hotkeys-modal h2{font-weight:700}.hotkeys-modal-button{display:flex;align-items:center;justify-content:space-between}.hotkeys-modal-items{max-height:36rem;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.hotkeys-modal-items::-webkit-scrollbar{display:none}.hotkeys-modal-items .chakra-accordion{display:grid;row-gap:.5rem}.hotkeys-modal-items .chakra-accordion__item{border:none;border-radius:.3rem;background-color:var(--tab-hover-color)}.hotkeys-modal-items button{border-radius:.3rem!important}.hotkeys-modal-items button[aria-expanded=true]{background-color:var(--tab-hover-color);border-radius:.3rem}.hotkey-modal-category{display:grid;row-gap:.5rem}.hotkey-modal-item{display:grid;grid-template-columns:auto max-content;justify-content:space-between;align-items:center;background-color:var(--background-color);padding:.5rem 1rem;border-radius:.3rem}.hotkey-modal-item .hotkey-info{display:grid}.hotkey-modal-item .hotkey-info .hotkey-title{font-weight:700}.hotkey-modal-item .hotkey-info .hotkey-description{font-size:.9rem;color:var(--text-color-secondary)}.hotkey-modal-item .hotkey-key{font-size:.8rem;font-weight:700;border:2px solid var(--settings-modal-bg);padding:.2rem .5rem;border-radius:.3rem}.console{width:100vw;display:flex;flex-direction:column;background:var(--console-bg-color);overflow:auto;direction:column;font-family:monospace;padding:0 1rem 1rem 3rem;border-top-width:.3rem;border-color:var(--resizeable-handle-border-color)}.console .console-info-color{color:var(--error-level-info)}.console .console-warning-color{color:var(--error-level-warning)}.console .console-error-color{color:var(--status-bad-color)}.console .console-entry{display:flex;column-gap:.5rem}.console .console-entry .console-timestamp{font-weight:semibold}.console .console-entry .console-message{word-break:break-all}.console-toggle-icon-button{background:var(--console-icon-button-bg-color)!important;position:fixed!important;left:.5rem;bottom:.5rem;z-index:10000}.console-toggle-icon-button:hover{background:var(--console-icon-button-bg-color-hover)!important}.console-toggle-icon-button[data-error-seen=true],.console-toggle-icon-button[data-error-seen=true]:hover{background:var(--status-bad-color)!important}.console-autoscroll-icon-button{background:var(--console-icon-button-bg-color)!important;position:fixed!important;left:.5rem;bottom:3rem;z-index:10000}.console-autoscroll-icon-button:hover{background:var(--console-icon-button-bg-color-hover)!important}.console-autoscroll-icon-button[data-autoscroll-enabled=true]{background:var(--accent-color)!important}.console-autoscroll-icon-button[data-autoscroll-enabled=true]:hover{background:var(--accent-color-hover)!important}.prompt-bar{display:grid;row-gap:1rem}.prompt-bar input,.prompt-bar textarea{background-color:var(--prompt-bg-color);font-size:1rem;border:2px solid var(--border-color)}.prompt-bar input:hover,.prompt-bar textarea:hover{border:2px solid var(--border-color-light)}.prompt-bar input:focus-visible,.prompt-bar textarea:focus-visible{border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.prompt-bar input[aria-invalid=true],.prompt-bar textarea[aria-invalid=true]{border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.prompt-bar input:disabled,.prompt-bar textarea:disabled{border:2px solid var(--border-color);box-shadow:none}.prompt-bar textarea{min-height:10rem}.process-buttons{display:flex;column-gap:.5rem}.invoke-btn{flex-grow:1;width:100%;min-width:100%;min-height:100%;background-color:var(--accent-color)!important}.invoke-btn svg{width:18px!important;height:18px!important}.invoke-btn:hover{background-color:var(--accent-color-hover)!important}.invoke-btn:disabled{background-color:#2d2d37!important}.invoke-btn:disabled:hover{background-color:#2d2d37!important}.invoke-btn svg{width:20px;height:20px;color:var(--btn-svg-color)}.cancel-btn{min-width:100%;min-height:100%;background-color:var(--destructive-color)!important}.cancel-btn:hover{background-color:var(--destructive-color-hover)!important}.cancel-btn:disabled{background-color:#2d2d37!important}.cancel-btn:disabled:hover{background-color:#2d2d37!important}.cancel-btn svg{width:20px;height:20px;color:var(--btn-svg-color)}.loopback-btn[data-as-checkbox=true]{background-color:var(--btn-grey);border:3px solid var(--btn-grey)}.loopback-btn[data-as-checkbox=true] svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true]:hover{background-color:var(--btn-grey);border-color:var(--btn-checkbox-border-hover)}.loopback-btn[data-as-checkbox=true]:hover svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true][data-selected=true]{border-color:var(--accent-color);background-color:var(--btn-grey)}.loopback-btn[data-as-checkbox=true][data-selected=true] svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true][data-selected=true]:hover{border-color:var(--accent-color);background-color:var(--btn-grey)}.loopback-btn[data-as-checkbox=true][data-selected=true]:hover svg{fill:var(--text-color)}.main-options,.main-options-list{display:grid;row-gap:1rem}.main-options-row{display:grid;grid-template-columns:repeat(3,auto);column-gap:1rem;max-width:22.5rem}.main-option-block{border-radius:.5rem;display:grid!important;grid-template-columns:auto!important;row-gap:.4rem}.main-option-block .invokeai__number-input-form-label,.main-option-block .invokeai__select-label{width:100%;font-size:.9rem!important;font-weight:700}.main-option-block .number-input-entry{padding:0;height:2.4rem}.main-option-block .iai-select-picker{height:2.4rem;border-radius:.3rem}.advanced-options-checkbox{padding:1rem;font-weight:700}.advanced-settings{display:grid;row-gap:.5rem}.advanced-settings-item{display:grid;max-width:22.5rem;border:none;border-top:0px;border-radius:.4rem}.advanced-settings-item[aria-expanded=true]{background-color:var(--tab-hover-color);border-radius:0 0 .4rem .4rem}.advanced-settings-panel{background-color:var(--tab-panel-bg);border-radius:0 0 .4rem .4rem;border:2px solid var(--tab-hover-color)}.advanced-settings-header{border-radius:.4rem}.advanced-settings-header[aria-expanded=true]{background-color:var(--tab-color);border-radius:.4rem .4rem 0 0}.advanced-settings-header:hover{background-color:var(--tab-hover-color)!important}.upscale-options{display:grid;grid-template-columns:auto 1fr;column-gap:1rem}.inpainting-bounding-box-settings{display:flex;flex-direction:column;border-radius:.4rem;border:2px solid var(--tab-color)}.inpainting-bounding-box-header{background-color:var(--tab-color);display:flex;flex-direction:row;justify-content:space-between;padding:.5rem 1rem;border-radius:.4rem .4rem 0 0;align-items:center}.inpainting-bounding-box-header button{width:.5rem!important;height:1.2rem!important;background:none!important}.inpainting-bounding-box-header button:hover{background:none!important}.inpainting-bounding-box-header p{font-weight:700}.inpainting-bounding-box-settings-items{padding:1rem;display:flex;flex-direction:column;row-gap:1rem}.inpainting-bounding-box-settings-items .inpainting-bounding-box-reset-icon-btn{background-color:var(--btn-load-more)!important}.inpainting-bounding-box-settings-items .inpainting-bounding-box-reset-icon-btn:hover{background-color:var(--btn-load-more-hover)!important}.inpainting-bounding-box-dimensions-slider-numberinput{display:grid;grid-template-columns:repeat(3,auto);column-gap:1rem}.inpainting-bounding-box-darken{width:max-content}.progress-bar{background-color:var(--root-bg-color);height:.3rem!important;z-index:99}.progress-bar div{background-color:var(--progress-bar-color)}.progress-bar div[data-indeterminate]{background-color:unset;background-image:linear-gradient(to right,transparent 0%,var(--progress-bar-color) 50%,transparent 100%)}.current-image-area{display:flex;flex-direction:column;height:100%;row-gap:1rem;background-color:var(--background-color-secondary);border-radius:.5rem}.current-image-preview{position:relative;justify-content:center;align-items:center;display:flex;width:100%;height:100%}.current-image-preview img{background-color:var(--img2img-img-bg-color);border-radius:.5rem;object-fit:contain;max-width:100%;max-height:100%;height:auto;position:absolute}.current-image-metadata{grid-area:current-image-preview}.current-image-next-prev-buttons{grid-area:current-image-content;display:flex;justify-content:space-between;z-index:1;height:100%;width:100%;pointer-events:none}.next-prev-button-trigger-area{width:7rem;height:100%;width:15%;display:grid;align-items:center;pointer-events:auto}.next-prev-button-trigger-area.prev-button-trigger-area{justify-content:flex-start}.next-prev-button-trigger-area.next-button-trigger-area{justify-content:flex-end}.next-prev-button{font-size:4rem;fill:var(--white);filter:drop-shadow(0 0 1rem var(--text-color-secondary));opacity:70%}.current-image-display-placeholder{background-color:var(--background-color-secondary);display:grid;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:.5rem}.current-image-display-placeholder svg{width:10rem;height:10rem;color:var(--svg-color)}.current-image-options{width:100%;display:flex;justify-content:center;align-items:center;column-gap:.5em}.current-image-options .current-image-send-to-popover,.current-image-options .current-image-postprocessing-popover{display:flex;flex-direction:column;row-gap:.5rem;max-width:25rem}.current-image-options .chakra-popover__popper{z-index:11}.current-image-options .delete-image-btn svg{fill:var(--btn-delete-image)}.image-gallery-wrapper-enter{transform:translate(150%)}.image-gallery-wrapper-enter-active{transform:translate(0);transition:all .12s ease-out}.image-gallery-wrapper-exit{transform:translate(0)}.image-gallery-wrapper-exit-active{transform:translate(150%);transition:all .12s ease-out}.image-gallery-wrapper[data-pinned=false]{position:fixed;height:100vh;top:0;right:0}.image-gallery-wrapper[data-pinned=false] .image-gallery-popup{border-radius:0;box-shadow:0 0 1rem var(--text-color-a3)}.image-gallery-wrapper[data-pinned=false] .image-gallery-popup .image-gallery-container{max-height:calc(100vh + 4.7rem)}.image-gallery-wrapper .image-gallery-popup{background-color:var(--tab-color);padding:1rem;display:flex;flex-direction:column;row-gap:1rem;border-radius:.5rem;border-left-width:.3rem;border-color:var(--resizeable-handle-border-color)}.image-gallery-wrapper .image-gallery-popup[data-resize-alert=true]{border-color:var(--status-bad-color)}.image-gallery-wrapper .image-gallery-popup .image-gallery-header{display:flex;align-items:center;column-gap:.5rem;justify-content:space-between}.image-gallery-wrapper .image-gallery-popup .image-gallery-header div{display:flex;column-gap:.5rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-icon-btn{background-color:var(--btn-load-more)!important}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-icon-btn:hover{background-color:var(--btn-load-more-hover)!important}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-settings-popover{display:flex;flex-direction:column;row-gap:.5rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-settings-popover div{display:flex;column-gap:.5rem;align-items:center;justify-content:space-between}.image-gallery-wrapper .image-gallery-popup .image-gallery-header h1{font-weight:700}.image-gallery-wrapper .image-gallery-popup .image-gallery-container{display:flex;flex-direction:column;max-height:calc(100vh - (70px + 7rem));overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.image-gallery-wrapper .image-gallery-popup .image-gallery-container::-webkit-scrollbar{display:none}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder{display:flex;flex-direction:column;background-color:var(--background-color-secondary);border-radius:.5rem;place-items:center;padding:2rem;text-align:center}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder p{color:var(--subtext-color-bright);font-family:Inter}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder svg{width:5rem;height:5rem;color:var(--svg-color)}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn{background-color:var(--btn-load-more)!important;font-size:.85rem!important;padding:.5rem;margin-top:1rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn:disabled:hover{background-color:var(--btn-load-more)!important}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn:hover{background-color:var(--btn-load-more-hover)!important}.image-gallery-category-btn-group{width:100%!important;column-gap:0!important;justify-content:stretch!important}.image-gallery-category-btn-group button{flex-grow:1}.image-gallery-category-btn-group button[data-selected=true]{background-color:var(--accent-color)}.image-gallery-category-btn-group button[data-selected=true]:hover{background-color:var(--accent-color-hover)}.image-gallery{display:grid;grid-gap:.5rem}.image-gallery .hoverable-image{padding:.5rem;position:relative}.image-gallery .hoverable-image:before{content:"";display:block;padding-bottom:100%}.image-gallery .hoverable-image .hoverable-image-image{position:absolute;max-width:100%;top:50%;left:50%;transform:translate(-50%,-50%)}.hoverable-image{display:flex;justify-content:center;transition:transform .2s ease-out}.hoverable-image:hover{cursor:pointer;border-radius:.5rem;z-index:2}.hoverable-image .hoverable-image-image{width:100%;height:100%;max-width:100%;max-height:100%}.hoverable-image .hoverable-image-delete-button{position:absolute;top:.25rem;right:.25rem}.hoverable-image .hoverable-image-content{display:flex;position:absolute;top:0;left:0;width:100%;height:100%;align-items:center;justify-content:center}.hoverable-image .hoverable-image-content .hoverable-image-check{fill:var(--status-good-color)}.hoverable-image .hoverable-image-icons{position:absolute;bottom:-2rem;display:grid;width:min-content;grid-template-columns:repeat(2,max-content);border-radius:.4rem;background-color:var(--background-color-secondary);padding:.2rem;gap:.2rem;grid-auto-rows:max-content}.hoverable-image .hoverable-image-icons button{width:12px;height:12px;border-radius:.2rem;padding:10px 0;flex-shrink:2}.hoverable-image .hoverable-image-icons button svg{width:12px;height:12px}.hoverable-image-context-menu{z-index:15;padding:.4rem;border-radius:.25rem;background-color:var(--context-menu-bg-color);box-shadow:var(--context-menu-box-shadow)}.hoverable-image-context-menu [role=menuitem]{font-size:.8rem;line-height:1rem;border-radius:3px;display:flex;align-items:center;height:1.75rem;padding:0 .5rem;position:relative;user-select:none;cursor:pointer;outline:none}.hoverable-image-context-menu [role=menuitem][data-disabled]{color:gray;pointer-events:none;cursor:not-allowed}.hoverable-image-context-menu [role=menuitem][data-warning]{color:var(--status-bad-color)}.hoverable-image-context-menu [role=menuitem][data-highlighted]{background-color:var(--context-menu-bg-color-hover)}.image-metadata-viewer{position:absolute;top:0;width:100%;border-radius:.5rem;padding:1rem;background-color:var(--metadata-bg-color);overflow:scroll;max-height:calc(100vh - (70px + 5.4rem));height:100%;z-index:10}.image-json-viewer{border-radius:.5rem;margin:0 .5rem 1rem;padding:1rem;overflow-x:scroll;word-break:break-all;background-color:var(--metadata-json-bg-color)}.app-tabs{display:grid!important;grid-template-columns:min-content auto;column-gap:1rem;height:calc(100vh - (70px + 1rem))}.app-tabs-list{display:grid;row-gap:.3rem;grid-auto-rows:min-content;color:var(--tab-list-text-inactive)}.app-tabs-list button{font-size:.85rem;padding:.5rem}.app-tabs-list button:hover{background-color:var(--tab-hover-color);border-radius:.3rem}.app-tabs-list button svg{width:26px;height:26px}.app-tabs-list button[aria-selected=true]{background-color:var(--tab-list-bg);color:var(--tab-list-text);font-weight:700;border-radius:.3rem;border:none}.app-tabs-panels .app-tabs-panel{padding:0;height:100%}.workarea-wrapper{position:relative;width:100%;height:100%}.workarea-wrapper .workarea-main{display:flex;column-gap:1rem;height:100%}.workarea-wrapper .workarea-main .workarea-children-wrapper{position:relative;width:100%;height:100%}.workarea-wrapper .workarea-main .workarea-split-view{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr;background-color:var(--background-color-secondary);border-radius:.5rem}.workarea-wrapper .workarea-main .workarea-single-view{width:100%;height:100%;background-color:var(--background-color-secondary);border-radius:.5rem}.workarea-wrapper .workarea-main .workarea-split-view-left,.workarea-wrapper .workarea-main .workarea-split-view-right{display:flex;flex-direction:column;height:100%;width:100%;row-gap:1rem;background-color:var(--background-color-secondary);border-radius:.5rem;padding:1rem}.workarea-wrapper .workarea-main .workarea-split-view-left{padding-right:.5rem}.workarea-wrapper .workarea-main .workarea-split-view-right{padding-left:.5rem}.workarea-split-button{position:absolute;cursor:pointer;padding:.5rem;top:0;right:0;z-index:20}.workarea-split-button[data-selected=true]{top:0;right:0}.workarea-split-button[data-selected=true] svg{opacity:1}.workarea-split-button svg{opacity:.5}.options-panel-wrapper-enter{transform:translate(-150%)}.options-panel-wrapper-enter-active{transform:translate(0);transition:all .12s ease-out}.options-panel-wrapper-exit{transform:translate(0)}.options-panel-wrapper-exit-active{transform:translate(-150%);transition:all .12s ease-out}.options-panel-wrapper{background-color:var(--background-color);height:calc(100vh - (70px + 1rem));width:22.5rem;max-width:22.5rem;flex-shrink:0;position:relative;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.options-panel-wrapper::-webkit-scrollbar{display:none}.options-panel-wrapper .options-panel{display:flex;flex-direction:column;row-gap:1rem;height:100%;-ms-overflow-style:none;scrollbar-width:none;background-color:var(--background-color)!important}.options-panel-wrapper .options-panel::-webkit-scrollbar{display:none}.options-panel-wrapper[data-pinned=false]{z-index:20;position:fixed;top:0;left:0;filter:var(--floating-panel-drop-shadow);width:24.5rem;max-width:24.5rem;height:100%}.options-panel-wrapper[data-pinned=false] .options-panel-margin{margin:1rem}.options-panel-wrapper .options-panel-pin-button{position:absolute;cursor:pointer;padding:.5rem;top:1rem;right:1rem;z-index:20}.options-panel-wrapper .options-panel-pin-button[data-selected=true]{top:0;right:0}.options-panel-wrapper .options-panel-pin-button svg{opacity:.5}.invoke-ai-logo-wrapper{display:flex;align-items:center;column-gap:.7rem;padding-left:.5rem;padding-top:.3rem}.invoke-ai-logo-wrapper img{width:32px;height:32px}.invoke-ai-logo-wrapper h1{font-size:1.4rem}.text-to-image-area{padding:1rem;height:100%}.image-to-image-area{display:flex;flex-direction:column;row-gap:1rem;width:100%;height:100%}.image-to-image-strength-main-option{display:grid;grid-template-columns:none!important}.image-to-image-strength-main-option .number-input-entry{padding:0 1rem}.init-image-preview-header{display:flex;align-items:center;justify-content:space-between;width:100%}.init-image-preview-header h2{font-weight:700;font-size:.9rem}.init-image-preview{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.init-image-preview img{border-radius:.5rem;object-fit:contain;position:absolute}.image-to-image-current-image-display{position:relative}.floating-show-hide-button{position:absolute!important;top:50%;transform:translateY(-50%);z-index:20;padding:0;min-width:1rem;min-height:12rem;background-color:var(--btn-grey)!important}.floating-show-hide-button.left{left:0;border-radius:0 .5rem .5rem 0!important}.floating-show-hide-button.right{right:0;border-radius:.5rem 0 0 .5rem!important}.floating-show-hide-button:hover{background-color:var(--btn-grey-hover)!important}.floating-show-hide-button:disabled{background-color:#2d2d37!important}.floating-show-hide-button:disabled:hover{background-color:#2d2d37!important}.floating-show-hide-button svg{width:20px;height:20px;color:var(--btn-svg-color)}.show-hide-button-options{position:absolute!important;transform:translateY(-50%);z-index:20;min-width:2rem!important;top:50%;left:calc(42px + 2rem);border-radius:0 .5rem .5rem 0!important;display:flex;flex-direction:column;row-gap:.5rem}.show-hide-button-options button{border-radius:0 .3rem .3rem 0;background-color:var(--btn-grey)}.show-hide-button-options button svg{width:18px}.inpainting-main-area{display:flex;flex-direction:column;align-items:center;row-gap:1rem;width:100%;height:100%}.inpainting-main-area .inpainting-settings{display:flex;align-items:center;column-gap:.5rem}.inpainting-main-area .inpainting-settings svg{transform:scale(.9)}.inpainting-main-area .inpainting-settings .inpainting-buttons-group{display:flex;align-items:center;column-gap:.5rem}.inpainting-main-area .inpainting-settings .inpainting-button-dropdown{display:flex;flex-direction:column;row-gap:.5rem}.inpainting-main-area .inpainting-settings .inpainting-color-picker{margin-left:1rem!important}.inpainting-main-area .inpainting-settings .inpainting-brush-options{display:flex;align-items:center;column-gap:1rem}.inpainting-main-area .inpainting-canvas-area{display:flex;flex-direction:column;align-items:center;row-gap:1rem;width:100%;height:100%}.inpainting-main-area .inpainting-canvas-spiner{display:flex;align-items:center;width:100%;height:100%}.inpainting-main-area .inpainting-canvas-container{display:flex;align-items:center;justify-content:center;height:100%;width:100%;border-radius:.5rem}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-wrapper{position:relative}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-stage{border-radius:.5rem}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-stage canvas{border-radius:.5rem}.inpainting-options-btn{min-height:2rem}.inpainting-alerts{position:absolute;top:0;left:0;z-index:2;margin:.5rem}.inpainting-alerts button{background-color:var(--inpainting-alerts-bg)}.inpainting-alerts button svg{fill:var(--inpainting-alerts-icon-color)}.inpainting-alerts button[data-selected=true]{background-color:var(--inpainting-alerts-bg-active)}.inpainting-alerts button[data-selected=true] svg{fill:var(--inpainting-alerts-icon-active)}.inpainting-alerts button[data-alert=true]{background-color:var(--inpainting-alerts-bg-alert)}.inpainting-alerts button[data-alert=true] svg{fill:var(--inpainting-alerts-icon-alert)}.invokeai__number-input-form-control{display:grid;grid-template-columns:max-content auto;align-items:center}.invokeai__number-input-form-control .invokeai__number-input-form-label{color:var(--text-color-secondary);margin-right:0;font-size:1rem;margin-bottom:0;flex-grow:2;white-space:nowrap;padding-right:1rem}.invokeai__number-input-form-control .invokeai__number-input-form-label[data-focus]+.invokeai__number-input-root{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.invokeai__number-input-form-control .invokeai__number-input-form-label[aria-invalid=true]+.invokeai__number-input-root{outline:none;border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.invokeai__number-input-form-control .invokeai__number-input-root{height:2rem;display:grid;grid-template-columns:auto max-content;column-gap:.5rem;align-items:center;background-color:var(--background-color-secondary);border:2px solid var(--border-color);border-radius:.2rem}.invokeai__number-input-form-control .invokeai__number-input-field{border:none;font-weight:700;width:100%;height:auto;padding:0;font-size:.9rem;padding-left:.5rem;padding-right:.5rem}.invokeai__number-input-form-control .invokeai__number-input-field:focus{outline:none;box-shadow:none}.invokeai__number-input-form-control .invokeai__number-input-field:disabled{opacity:.2}.invokeai__number-input-form-control .invokeai__number-input-stepper{display:grid;padding-right:.5rem}.invokeai__number-input-form-control .invokeai__number-input-stepper .invokeai__number-input-stepper-button{border:none;padding:0 .5rem;margin:0 -.5rem}.invokeai__number-input-form-control .invokeai__number-input-stepper .invokeai__number-input-stepper-button svg{width:10px;height:10px}.input{display:grid;grid-template-columns:max-content auto;column-gap:1rem;align-items:center}.input .input-label{color:var(--text-color-secondary);margin-right:0}.input .input-entry{background-color:var(--background-color-secondary);border:2px solid var(--border-color);border-radius:.2rem;font-weight:700}.input .input-entry:focus{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.input .input-entry:disabled{opacity:.2}.input .input-entry[aria-invalid=true]{outline:none;border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.invokeai__icon-button{background-color:var(--btn-grey);cursor:pointer}.invokeai__icon-button:hover{background-color:var(--btn-grey-hover)}.invokeai__icon-button[data-selected=true]{background-color:var(--accent-color)}.invokeai__icon-button[data-selected=true]:hover{background-color:var(--accent-color-hover)}.invokeai__icon-button[disabled]{cursor:not-allowed}.invokeai__icon-button[data-variant=link],.invokeai__icon-button[data-variant=link]:hover{background:none!important}.invokeai__icon-button[data-selected=true]{border-color:var(--accent-color)}.invokeai__icon-button[data-selected=true]:hover{border-color:var(--accent-color-hover)}.invokeai__icon-button[data-alert=true]{animation-name:pulseColor;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}.invokeai__icon-button[data-alert=true]:hover{animation:none;background-color:var(--accent-color-hover)}.invokeai__icon-button[data-as-checkbox=true]{background-color:var(--btn-grey);border:3px solid var(--btn-grey)}.invokeai__icon-button[data-as-checkbox=true] svg{fill:var(--text-color)}.invokeai__icon-button[data-as-checkbox=true]:hover{background-color:var(--btn-grey);border-color:var(--btn-checkbox-border-hover)}.invokeai__icon-button[data-as-checkbox=true]:hover svg{fill:var(--text-color)}@keyframes pulseColor{0%{background-color:var(--accent-color)}50%{background-color:var(--accent-color-dim)}to{background-color:var(--accent-color)}}.invokeai__button{justify-content:space-between}.invokeai__switch-form-control .invokeai__switch-form-label{display:flex;column-gap:1rem;justify-content:space-between;align-items:center;color:var(--text-color-secondary);font-size:1rem;margin-right:0;margin-bottom:.1rem;white-space:nowrap;width:auto}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root span{background-color:var(--switch-bg-color)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root span span{background-color:var(--white)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root[data-checked] span{background:var(--switch-bg-active-color)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root[data-checked] span span{background-color:var(--white)}.invokeai__select{display:flex;column-gap:1rem;align-items:center;width:max-content}.invokeai__select .invokeai__select-label{color:var(--text-color-secondary);margin-right:0}.invokeai__select .invokeai__select-picker{border:2px solid var(--border-color);background-color:var(--background-color-secondary);font-weight:700;height:2rem;border-radius:.2rem}.invokeai__select .invokeai__select-picker:focus{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.invokeai__select .invokeai__select-option{background-color:var(--background-color-secondary)}.invokeai__slider-form-control{display:flex;column-gap:1rem;justify-content:space-between;align-items:center;width:max-content;padding-right:.25rem}.invokeai__slider-form-control .invokeai__slider-inner-container{display:flex;column-gap:.5rem}.invokeai__slider-form-control .invokeai__slider-inner-container .invokeai__slider-form-label{color:var(--text-color-secondary);margin:0;margin-right:.5rem;margin-bottom:.1rem}.invokeai__slider-form-control .invokeai__slider-inner-container .invokeai__slider-root .invokeai__slider-filled-track{background-color:var(--accent-color-hover)}.invokeai__slider-form-control .invokeai__slider-inner-container .invokeai__slider-root .invokeai__slider-track{background-color:var(--text-color-secondary);height:5px;border-radius:9999px}.invokeai__checkbox .chakra-checkbox__label{margin-top:1px;color:var(--text-color-secondary);font-size:.9rem}.invokeai__checkbox .chakra-checkbox__control{width:1rem;height:1rem;border:none;border-radius:.2rem;background-color:var(--input-checkbox-bg)}.invokeai__checkbox .chakra-checkbox__control svg{width:.6rem;height:.6rem;stroke-width:3px!important}.invokeai__checkbox .chakra-checkbox__control[data-checked]{color:var(--text-color);background-color:var(--input-checkbox-checked-bg)}.invokeai__popover-content{min-width:unset;width:unset!important;padding:1rem;border-radius:.5rem!important;background-color:var(--background-color)!important;border:2px solid var(--border-color)!important}.invokeai__popover-content .invokeai__popover-arrow{background-color:var(--background-color)!important}.invokeai__color-picker .react-colorful__hue-pointer,.invokeai__color-picker .react-colorful__saturation-pointer{width:1.5rem;height:1.5rem;border-color:var(--white)}.dropzone-container{position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:999;backdrop-filter:blur(20px)}.dropzone-container .dropzone-overlay{opacity:.5;width:100%;height:100%;display:flex;flex-direction:column;row-gap:1rem;align-items:center;justify-content:center;background-color:var(--background-color)}.dropzone-container .dropzone-overlay.is-drag-accept{box-shadow:inset 0 0 20rem 1rem var(--accent-color)}.dropzone-container .dropzone-overlay.is-drag-reject{box-shadow:inset 0 0 20rem 1rem var(--status-bad-color)}.dropzone-container .dropzone-overlay.is-handling-upload{box-shadow:inset 0 0 20rem 1rem var(--status-working-color)}.image-uploader-button-outer{min-width:20rem;width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:.5rem;color:var(--tab-list-text-inactive);background-color:var(--btn-grey)}.image-uploader-button-outer:hover{background-color:var(--btn-grey-hover)}.image-upload-button-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.image-upload-button{display:flex;flex-direction:column;row-gap:2rem;align-items:center;justify-content:center;text-align:center}.image-upload-button svg{width:4rem!important;height:4rem!important}.image-upload-button h2{font-size:1.2rem!important}.work-in-progress{display:grid;width:100%;height:calc(100vh - (70px + 1rem));grid-auto-rows:max-content;background-color:var(--background-color-secondary);border-radius:.4rem;place-content:center;place-items:center;row-gap:1rem}.work-in-progress h1{font-size:2rem;font-weight:700}.work-in-progress p{text-align:center;max-width:50rem;color:var(--subtext-color-bright)}.guide-popover-arrow{background-color:var(--tab-panel-bg)!important;box-shadow:none!important}.guide-popover-content{background-color:var(--background-color-secondary)!important;border:none!important}.guide-popover-guide-content{background:var(--tab-panel-bg);border:2px solid var(--tab-hover-color);border-radius:.4rem;padding:.75rem 1rem;display:grid;grid-template-rows:repeat(auto-fill,1fr);grid-row-gap:.5rem;justify-content:space-between}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{-ms-overflow-style:none;scrollbar-width:none;background-color:var(--root-bg-color);overflow:hidden}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}#root{background-color:var(--root-bg-color);color:var(--text-color);font-family:Inter,Arial,Helvetica,sans-serif} diff --git a/frontend/dist/assets/index.a8ba2a6c.js b/frontend/dist/assets/index.a8ba2a6c.js deleted file mode 100644 index 73db287b6e..0000000000 --- a/frontend/dist/assets/index.a8ba2a6c.js +++ /dev/null @@ -1,501 +0,0 @@ -function Rj(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var tu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function G8(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var C={exports:{}},qt={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var sv=Symbol.for("react.element"),Oj=Symbol.for("react.portal"),Nj=Symbol.for("react.fragment"),Dj=Symbol.for("react.strict_mode"),zj=Symbol.for("react.profiler"),Fj=Symbol.for("react.provider"),Bj=Symbol.for("react.context"),$j=Symbol.for("react.forward_ref"),Hj=Symbol.for("react.suspense"),Wj=Symbol.for("react.memo"),Vj=Symbol.for("react.lazy"),dk=Symbol.iterator;function Uj(e){return e===null||typeof e!="object"?null:(e=dk&&e[dk]||e["@@iterator"],typeof e=="function"?e:null)}var CI={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_I=Object.assign,kI={};function E0(e,t,n){this.props=e,this.context=t,this.refs=kI,this.updater=n||CI}E0.prototype.isReactComponent={};E0.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};E0.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function EI(){}EI.prototype=E0.prototype;function j8(e,t,n){this.props=e,this.context=t,this.refs=kI,this.updater=n||CI}var q8=j8.prototype=new EI;q8.constructor=j8;_I(q8,E0.prototype);q8.isPureReactComponent=!0;var fk=Array.isArray,PI=Object.prototype.hasOwnProperty,K8={current:null},TI={key:!0,ref:!0,__self:!0,__source:!0};function LI(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)PI.call(t,r)&&!TI.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,me=U[X];if(0>>1;Xi(He,ae))jei(ut,He)?(U[X]=ut,U[je]=ae,X=je):(U[X]=He,U[Se]=ae,X=Se);else if(jei(ut,ae))U[X]=ut,U[je]=ae,X=je;else break e}}return ee}function i(U,ee){var ae=U.sortIndex-ee.sortIndex;return ae!==0?ae:U.id-ee.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],c=[],p=1,g=null,m=3,y=!1,b=!1,S=!1,T=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function L(U){for(var ee=n(c);ee!==null;){if(ee.callback===null)r(c);else if(ee.startTime<=U)r(c),ee.sortIndex=ee.expirationTime,t(l,ee);else break;ee=n(c)}}function I(U){if(S=!1,L(U),!b)if(n(l)!==null)b=!0,xe(O);else{var ee=n(c);ee!==null&&Z(I,ee.startTime-U)}}function O(U,ee){b=!1,S&&(S=!1,E(z),z=-1),y=!0;var ae=m;try{for(L(ee),g=n(l);g!==null&&(!(g.expirationTime>ee)||U&&!q());){var X=g.callback;if(typeof X=="function"){g.callback=null,m=g.priorityLevel;var me=X(g.expirationTime<=ee);ee=e.unstable_now(),typeof me=="function"?g.callback=me:g===n(l)&&r(l),L(ee)}else r(l);g=n(l)}if(g!==null)var ye=!0;else{var Se=n(c);Se!==null&&Z(I,Se.startTime-ee),ye=!1}return ye}finally{g=null,m=ae,y=!1}}var D=!1,N=null,z=-1,W=5,V=-1;function q(){return!(e.unstable_now()-VU||125X?(U.sortIndex=ae,t(c,U),n(l)===null&&U===n(c)&&(S?(E(z),z=-1):S=!0,Z(I,ae-X))):(U.sortIndex=me,t(l,U),b||y||(b=!0,xe(O))),U},e.unstable_shouldYield=q,e.unstable_wrapCallback=function(U){var ee=m;return function(){var ae=m;m=ee;try{return U.apply(this,arguments)}finally{m=ae}}}})(AI);(function(e){e.exports=AI})(Dp);/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var II=C.exports,oa=Dp.exports;function Oe(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),YS=Object.prototype.hasOwnProperty,Zj=/^[: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]*$/,pk={},gk={};function Yj(e){return YS.call(gk,e)?!0:YS.call(pk,e)?!1:Zj.test(e)?gk[e]=!0:(pk[e]=!0,!1)}function Xj(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Qj(e,t,n,r){if(t===null||typeof t>"u"||Xj(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function io(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Li={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Li[e]=new io(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Li[t]=new io(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Li[e]=new io(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Li[e]=new io(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Li[e]=new io(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Li[e]=new io(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Li[e]=new io(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Li[e]=new io(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Li[e]=new io(e,5,!1,e.toLowerCase(),null,!1,!1)});var Y8=/[\-:]([a-z])/g;function X8(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Y8,X8);Li[t]=new io(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Y8,X8);Li[t]=new io(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Y8,X8);Li[t]=new io(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Li[e]=new io(e,1,!1,e.toLowerCase(),null,!1,!1)});Li.xlinkHref=new io("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Li[e]=new io(e,1,!1,e.toLowerCase(),null,!0,!0)});function Q8(e,t,n,r){var i=Li.hasOwnProperty(t)?Li[t]:null;(i!==null?i.type!==0:r||!(2s||i[a]!==o[s]){var l=` -`+i[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=a&&0<=s);break}}}finally{ab=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?bg(e):""}function Jj(e){switch(e.tag){case 5:return bg(e.type);case 16:return bg("Lazy");case 13:return bg("Suspense");case 19:return bg("SuspenseList");case 0:case 2:case 15:return e=sb(e.type,!1),e;case 11:return e=sb(e.type.render,!1),e;case 1:return e=sb(e.type,!0),e;default:return""}}function ew(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Sp:return"Fragment";case bp:return"Portal";case XS:return"Profiler";case J8:return"StrictMode";case QS:return"Suspense";case JS:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case OI:return(e.displayName||"Context")+".Consumer";case RI:return(e._context.displayName||"Context")+".Provider";case e9:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case t9:return t=e.displayName||null,t!==null?t:ew(e.type)||"Memo";case Sc:t=e._payload,e=e._init;try{return ew(e(t))}catch{}}return null}function eq(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ew(t);case 8:return t===J8?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Gc(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function DI(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function tq(e){var t=DI(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function k2(e){e._valueTracker||(e._valueTracker=tq(e))}function zI(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=DI(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function E3(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function tw(e,t){var n=t.checked;return dr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function vk(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Gc(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function FI(e,t){t=t.checked,t!=null&&Q8(e,"checked",t,!1)}function nw(e,t){FI(e,t);var n=Gc(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?rw(e,t.type,n):t.hasOwnProperty("defaultValue")&&rw(e,t.type,Gc(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function yk(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function rw(e,t,n){(t!=="number"||E3(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Sg=Array.isArray;function zp(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=E2.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function gm(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Fg={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},nq=["Webkit","ms","Moz","O"];Object.keys(Fg).forEach(function(e){nq.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Fg[t]=Fg[e]})});function WI(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Fg.hasOwnProperty(e)&&Fg[e]?(""+t).trim():t+"px"}function VI(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=WI(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var rq=dr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function aw(e,t){if(t){if(rq[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(Oe(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(Oe(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(Oe(61))}if(t.style!=null&&typeof t.style!="object")throw Error(Oe(62))}}function sw(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var lw=null;function n9(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var uw=null,Fp=null,Bp=null;function Sk(e){if(e=cv(e)){if(typeof uw!="function")throw Error(Oe(280));var t=e.stateNode;t&&(t=j4(t),uw(e.stateNode,e.type,t))}}function UI(e){Fp?Bp?Bp.push(e):Bp=[e]:Fp=e}function GI(){if(Fp){var e=Fp,t=Bp;if(Bp=Fp=null,Sk(e),t)for(e=0;e>>=0,e===0?32:31-(pq(e)/gq|0)|0}var P2=64,T2=4194304;function wg(e){switch(e&-e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function A3(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~i;s!==0?r=wg(s):(o&=a,o!==0&&(r=wg(o)))}else a=n&~i,a!==0?r=wg(a):o!==0&&(r=wg(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function lv(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-gs(t),e[t]=n}function xq(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=$g),Ak=String.fromCharCode(32),Ik=!1;function dM(e,t){switch(e){case"keyup":return qq.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function fM(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var wp=!1;function Zq(e,t){switch(e){case"compositionend":return fM(t);case"keypress":return t.which!==32?null:(Ik=!0,Ak);case"textInput":return e=t.data,e===Ak&&Ik?null:e;default:return null}}function Yq(e,t){if(wp)return e==="compositionend"||!c9&&dM(e,t)?(e=uM(),zy=s9=Lc=null,wp=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Nk(n)}}function mM(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?mM(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function vM(){for(var e=window,t=E3();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=E3(e.document)}return t}function d9(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function oK(e){var t=vM(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&mM(n.ownerDocument.documentElement,n)){if(r!==null&&d9(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=Dk(n,o);var a=Dk(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Cp=null,gw=null,Wg=null,mw=!1;function zk(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;mw||Cp==null||Cp!==E3(r)||(r=Cp,"selectionStart"in r&&d9(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Wg&&Sm(Wg,r)||(Wg=r,r=R3(gw,"onSelect"),0Ep||(e.current=ww[Ep],ww[Ep]=null,Ep--)}function Un(e,t){Ep++,ww[Ep]=e.current,e.current=t}var jc={},Bi=td(jc),_o=td(!1),zf=jc;function s0(e,t){var n=e.type.contextTypes;if(!n)return jc;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function ko(e){return e=e.childContextTypes,e!=null}function N3(){Kn(_o),Kn(Bi)}function Uk(e,t,n){if(Bi.current!==jc)throw Error(Oe(168));Un(Bi,t),Un(_o,n)}function EM(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(Oe(108,eq(e)||"Unknown",i));return dr({},n,r)}function D3(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||jc,zf=Bi.current,Un(Bi,e),Un(_o,_o.current),!0}function Gk(e,t,n){var r=e.stateNode;if(!r)throw Error(Oe(169));n?(e=EM(e,t,zf),r.__reactInternalMemoizedMergedChildContext=e,Kn(_o),Kn(Bi),Un(Bi,e)):Kn(_o),Un(_o,n)}var eu=null,q4=!1,Sb=!1;function PM(e){eu===null?eu=[e]:eu.push(e)}function vK(e){q4=!0,PM(e)}function nd(){if(!Sb&&eu!==null){Sb=!0;var e=0,t=kn;try{var n=eu;for(kn=1;e>=a,i-=a,ru=1<<32-gs(t)+i|n<z?(W=N,N=null):W=N.sibling;var V=m(E,N,L[z],I);if(V===null){N===null&&(N=W);break}e&&N&&V.alternate===null&&t(E,N),k=o(V,k,z),D===null?O=V:D.sibling=V,D=V,N=W}if(z===L.length)return n(E,N),tr&&of(E,z),O;if(N===null){for(;zz?(W=N,N=null):W=N.sibling;var q=m(E,N,V.value,I);if(q===null){N===null&&(N=W);break}e&&N&&q.alternate===null&&t(E,N),k=o(q,k,z),D===null?O=q:D.sibling=q,D=q,N=W}if(V.done)return n(E,N),tr&&of(E,z),O;if(N===null){for(;!V.done;z++,V=L.next())V=g(E,V.value,I),V!==null&&(k=o(V,k,z),D===null?O=V:D.sibling=V,D=V);return tr&&of(E,z),O}for(N=r(E,N);!V.done;z++,V=L.next())V=y(N,E,z,V.value,I),V!==null&&(e&&V.alternate!==null&&N.delete(V.key===null?z:V.key),k=o(V,k,z),D===null?O=V:D.sibling=V,D=V);return e&&N.forEach(function(he){return t(E,he)}),tr&&of(E,z),O}function T(E,k,L,I){if(typeof L=="object"&&L!==null&&L.type===Sp&&L.key===null&&(L=L.props.children),typeof L=="object"&&L!==null){switch(L.$$typeof){case _2:e:{for(var O=L.key,D=k;D!==null;){if(D.key===O){if(O=L.type,O===Sp){if(D.tag===7){n(E,D.sibling),k=i(D,L.props.children),k.return=E,E=k;break e}}else if(D.elementType===O||typeof O=="object"&&O!==null&&O.$$typeof===Sc&&Qk(O)===D.type){n(E,D.sibling),k=i(D,L.props),k.ref=rg(E,D,L),k.return=E,E=k;break e}n(E,D);break}else t(E,D);D=D.sibling}L.type===Sp?(k=Tf(L.props.children,E.mode,I,L.key),k.return=E,E=k):(I=Gy(L.type,L.key,L.props,null,E.mode,I),I.ref=rg(E,k,L),I.return=E,E=I)}return a(E);case bp:e:{for(D=L.key;k!==null;){if(k.key===D)if(k.tag===4&&k.stateNode.containerInfo===L.containerInfo&&k.stateNode.implementation===L.implementation){n(E,k.sibling),k=i(k,L.children||[]),k.return=E,E=k;break e}else{n(E,k);break}else t(E,k);k=k.sibling}k=Lb(L,E.mode,I),k.return=E,E=k}return a(E);case Sc:return D=L._init,T(E,k,D(L._payload),I)}if(Sg(L))return b(E,k,L,I);if(Q1(L))return S(E,k,L,I);N2(E,L)}return typeof L=="string"&&L!==""||typeof L=="number"?(L=""+L,k!==null&&k.tag===6?(n(E,k.sibling),k=i(k,L),k.return=E,E=k):(n(E,k),k=Tb(L,E.mode,I),k.return=E,E=k),a(E)):n(E,k)}return T}var u0=NM(!0),DM=NM(!1),dv={},hl=td(dv),km=td(dv),Em=td(dv);function yf(e){if(e===dv)throw Error(Oe(174));return e}function b9(e,t){switch(Un(Em,t),Un(km,e),Un(hl,dv),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:ow(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=ow(t,e)}Kn(hl),Un(hl,t)}function c0(){Kn(hl),Kn(km),Kn(Em)}function zM(e){yf(Em.current);var t=yf(hl.current),n=ow(t,e.type);t!==n&&(Un(km,e),Un(hl,n))}function S9(e){km.current===e&&(Kn(hl),Kn(km))}var lr=td(0);function W3(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.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===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var wb=[];function w9(){for(var e=0;en?n:4,e(!0);var r=Cb.transition;Cb.transition={};try{e(!1),t()}finally{kn=n,Cb.transition=r}}function JM(){return za().memoizedState}function SK(e,t,n){var r=Hc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},eR(e))tR(t,n);else if(n=IM(e,t,n,r),n!==null){var i=to();ms(n,e,r,i),nR(n,t,r)}}function wK(e,t,n){var r=Hc(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(eR(e))tR(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,Ss(s,a)){var l=t.interleaved;l===null?(i.next=i,y9(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=IM(e,t,i,r),n!==null&&(i=to(),ms(n,e,r,i),nR(n,t,r))}}function eR(e){var t=e.alternate;return e===cr||t!==null&&t===cr}function tR(e,t){Vg=V3=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function nR(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,i9(e,n)}}var U3={readContext:Da,useCallback:Oi,useContext:Oi,useEffect:Oi,useImperativeHandle:Oi,useInsertionEffect:Oi,useLayoutEffect:Oi,useMemo:Oi,useReducer:Oi,useRef:Oi,useState:Oi,useDebugValue:Oi,useDeferredValue:Oi,useTransition:Oi,useMutableSource:Oi,useSyncExternalStore:Oi,useId:Oi,unstable_isNewReconciler:!1},CK={readContext:Da,useCallback:function(e,t){return tl().memoizedState=[e,t===void 0?null:t],e},useContext:Da,useEffect:eE,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Hy(4194308,4,KM.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Hy(4194308,4,e,t)},useInsertionEffect:function(e,t){return Hy(4,2,e,t)},useMemo:function(e,t){var n=tl();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=tl();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=SK.bind(null,cr,e),[r.memoizedState,e]},useRef:function(e){var t=tl();return e={current:e},t.memoizedState=e},useState:Jk,useDebugValue:P9,useDeferredValue:function(e){return tl().memoizedState=e},useTransition:function(){var e=Jk(!1),t=e[0];return e=bK.bind(null,e[1]),tl().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=cr,i=tl();if(tr){if(n===void 0)throw Error(Oe(407));n=n()}else{if(n=t(),si===null)throw Error(Oe(349));(Bf&30)!==0||$M(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,eE(WM.bind(null,r,o,e),[e]),r.flags|=2048,Lm(9,HM.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=tl(),t=si.identifierPrefix;if(tr){var n=iu,r=ru;n=(r&~(1<<32-gs(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pm++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[ll]=t,e[_m]=r,dR(e,t,!1,!1),t.stateNode=e;e:{switch(a=sw(n,r),n){case"dialog":jn("cancel",e),jn("close",e),i=r;break;case"iframe":case"object":case"embed":jn("load",e),i=r;break;case"video":case"audio":for(i=0;if0&&(t.flags|=128,r=!0,ig(o,!1),t.lanes=4194304)}else{if(!r)if(e=W3(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ig(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!tr)return Ni(t),null}else 2*Rr()-o.renderingStartTime>f0&&n!==1073741824&&(t.flags|=128,r=!0,ig(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Rr(),t.sibling=null,n=lr.current,Un(lr,r?n&1|2:n&1),t):(Ni(t),null);case 22:case 23:return R9(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(Xo&1073741824)!==0&&(Ni(t),t.subtreeFlags&6&&(t.flags|=8192)):Ni(t),null;case 24:return null;case 25:return null}throw Error(Oe(156,t.tag))}function IK(e,t){switch(h9(t),t.tag){case 1:return ko(t.type)&&N3(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return c0(),Kn(_o),Kn(Bi),w9(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return S9(t),null;case 13:if(Kn(lr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(Oe(340));l0()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Kn(lr),null;case 4:return c0(),null;case 10:return v9(t.type._context),null;case 22:case 23:return R9(),null;case 24:return null;default:return null}}var z2=!1,Fi=!1,MK=typeof WeakSet=="function"?WeakSet:Set,Je=null;function Ap(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){br(e,t,r)}else n.current=null}function Ow(e,t,n){try{n()}catch(r){br(e,t,r)}}var uE=!1;function RK(e,t){if(vw=I3,e=vM(),d9(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,s=-1,l=-1,c=0,p=0,g=e,m=null;t:for(;;){for(var y;g!==n||i!==0&&g.nodeType!==3||(s=a+i),g!==o||r!==0&&g.nodeType!==3||(l=a+r),g.nodeType===3&&(a+=g.nodeValue.length),(y=g.firstChild)!==null;)m=g,g=y;for(;;){if(g===e)break t;if(m===n&&++c===i&&(s=a),m===o&&++p===r&&(l=a),(y=g.nextSibling)!==null)break;g=m,m=g.parentNode}g=y}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(yw={focusedElem:e,selectionRange:n},I3=!1,Je=t;Je!==null;)if(t=Je,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Je=e;else for(;Je!==null;){t=Je;try{var b=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(b!==null){var S=b.memoizedProps,T=b.memoizedState,E=t.stateNode,k=E.getSnapshotBeforeUpdate(t.elementType===t.type?S:cs(t.type,S),T);E.__reactInternalSnapshotBeforeUpdate=k}break;case 3:var L=t.stateNode.containerInfo;L.nodeType===1?L.textContent="":L.nodeType===9&&L.documentElement&&L.removeChild(L.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(Oe(163))}}catch(I){br(t,t.return,I)}if(e=t.sibling,e!==null){e.return=t.return,Je=e;break}Je=t.return}return b=uE,uE=!1,b}function Ug(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Ow(t,n,o)}i=i.next}while(i!==r)}}function Y4(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Nw(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function pR(e){var t=e.alternate;t!==null&&(e.alternate=null,pR(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ll],delete t[_m],delete t[Sw],delete t[gK],delete t[mK])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function gR(e){return e.tag===5||e.tag===3||e.tag===4}function cE(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||gR(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Dw(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=O3));else if(r!==4&&(e=e.child,e!==null))for(Dw(e,t,n),e=e.sibling;e!==null;)Dw(e,t,n),e=e.sibling}function zw(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(zw(e,t,n),e=e.sibling;e!==null;)zw(e,t,n),e=e.sibling}var Ci=null,ds=!1;function pc(e,t,n){for(n=n.child;n!==null;)mR(e,t,n),n=n.sibling}function mR(e,t,n){if(fl&&typeof fl.onCommitFiberUnmount=="function")try{fl.onCommitFiberUnmount(W4,n)}catch{}switch(n.tag){case 5:Fi||Ap(n,t);case 6:var r=Ci,i=ds;Ci=null,pc(e,t,n),Ci=r,ds=i,Ci!==null&&(ds?(e=Ci,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ci.removeChild(n.stateNode));break;case 18:Ci!==null&&(ds?(e=Ci,n=n.stateNode,e.nodeType===8?bb(e.parentNode,n):e.nodeType===1&&bb(e,n),xm(e)):bb(Ci,n.stateNode));break;case 4:r=Ci,i=ds,Ci=n.stateNode.containerInfo,ds=!0,pc(e,t,n),Ci=r,ds=i;break;case 0:case 11:case 14:case 15:if(!Fi&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&((o&2)!==0||(o&4)!==0)&&Ow(n,t,a),i=i.next}while(i!==r)}pc(e,t,n);break;case 1:if(!Fi&&(Ap(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){br(n,t,s)}pc(e,t,n);break;case 21:pc(e,t,n);break;case 22:n.mode&1?(Fi=(r=Fi)||n.memoizedState!==null,pc(e,t,n),Fi=r):pc(e,t,n);break;default:pc(e,t,n)}}function dE(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new MK),t.forEach(function(r){var i=WK.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function os(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=Rr()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*NK(r/1960))-r,10e?16:e,Ac===null)var r=!1;else{if(e=Ac,Ac=null,q3=0,(nn&6)!==0)throw Error(Oe(331));var i=nn;for(nn|=4,Je=e.current;Je!==null;){var o=Je,a=o.child;if((Je.flags&16)!==0){var s=o.deletions;if(s!==null){for(var l=0;lRr()-I9?Pf(e,0):A9|=n),Eo(e,t)}function _R(e,t){t===0&&((e.mode&1)===0?t=1:(t=T2,T2<<=1,(T2&130023424)===0&&(T2=4194304)));var n=to();e=du(e,t),e!==null&&(lv(e,t,n),Eo(e,n))}function HK(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),_R(e,n)}function WK(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(Oe(314))}r!==null&&r.delete(t),_R(e,n)}var kR;kR=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||_o.current)Co=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Co=!1,LK(e,t,n);Co=(e.flags&131072)!==0}else Co=!1,tr&&(t.flags&1048576)!==0&&TM(t,F3,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Wy(e,t),e=t.pendingProps;var i=s0(t,Bi.current);Hp(t,n),i=_9(null,t,r,e,i,n);var o=k9();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,ko(r)?(o=!0,D3(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,x9(t),i.updater=K4,t.stateNode=i,i._reactInternals=t,Pw(t,r,e,n),t=Aw(null,t,r,!0,o,n)):(t.tag=0,tr&&o&&f9(t),Qi(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Wy(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=UK(r),e=cs(r,e),i){case 0:t=Lw(null,t,r,e,n);break e;case 1:t=aE(null,t,r,e,n);break e;case 11:t=iE(null,t,r,e,n);break e;case 14:t=oE(null,t,r,cs(r.type,e),n);break e}throw Error(Oe(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:cs(r,i),Lw(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:cs(r,i),aE(e,t,r,i,n);case 3:e:{if(lR(t),e===null)throw Error(Oe(387));r=t.pendingProps,o=t.memoizedState,i=o.element,MM(e,t),H3(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=d0(Error(Oe(423)),t),t=sE(e,t,r,n,i);break e}else if(r!==i){i=d0(Error(Oe(424)),t),t=sE(e,t,r,n,i);break e}else for(Jo=Fc(t.stateNode.containerInfo.firstChild),ta=t,tr=!0,hs=null,n=DM(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(l0(),r===i){t=fu(e,t,n);break e}Qi(e,t,r,n)}t=t.child}return t;case 5:return zM(t),e===null&&_w(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,xw(r,i)?a=null:o!==null&&xw(r,o)&&(t.flags|=32),sR(e,t),Qi(e,t,a,n),t.child;case 6:return e===null&&_w(t),null;case 13:return uR(e,t,n);case 4:return b9(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=u0(t,null,r,n):Qi(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:cs(r,i),iE(e,t,r,i,n);case 7:return Qi(e,t,t.pendingProps,n),t.child;case 8:return Qi(e,t,t.pendingProps.children,n),t.child;case 12:return Qi(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,Un(B3,r._currentValue),r._currentValue=a,o!==null)if(Ss(o.value,a)){if(o.children===i.children&&!_o.current){t=fu(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=lu(-1,n&-n),l.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var p=c.pending;p===null?l.next=l:(l.next=p.next,p.next=l),c.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),kw(o.return,n,t),s.lanes|=n;break}l=l.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(Oe(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),kw(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}Qi(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Hp(t,n),i=Da(i),r=r(i),t.flags|=1,Qi(e,t,r,n),t.child;case 14:return r=t.type,i=cs(r,t.pendingProps),i=cs(r.type,i),oE(e,t,r,i,n);case 15:return oR(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:cs(r,i),Wy(e,t),t.tag=1,ko(r)?(e=!0,D3(t)):e=!1,Hp(t,n),OM(t,r,i),Pw(t,r,i,n),Aw(null,t,r,!0,e,n);case 19:return cR(e,t,n);case 22:return aR(e,t,n)}throw Error(Oe(156,t.tag))};function ER(e,t){return QI(e,t)}function VK(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ia(e,t,n,r){return new VK(e,t,n,r)}function N9(e){return e=e.prototype,!(!e||!e.isReactComponent)}function UK(e){if(typeof e=="function")return N9(e)?1:0;if(e!=null){if(e=e.$$typeof,e===e9)return 11;if(e===t9)return 14}return 2}function Wc(e,t){var n=e.alternate;return n===null?(n=Ia(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Gy(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")N9(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Sp:return Tf(n.children,i,o,t);case J8:a=8,i|=8;break;case XS:return e=Ia(12,n,t,i|2),e.elementType=XS,e.lanes=o,e;case QS:return e=Ia(13,n,t,i),e.elementType=QS,e.lanes=o,e;case JS:return e=Ia(19,n,t,i),e.elementType=JS,e.lanes=o,e;case NI:return Q4(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case RI:a=10;break e;case OI:a=9;break e;case e9:a=11;break e;case t9:a=14;break e;case Sc:a=16,r=null;break e}throw Error(Oe(130,e==null?e:typeof e,""))}return t=Ia(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Tf(e,t,n,r){return e=Ia(7,e,r,t),e.lanes=n,e}function Q4(e,t,n,r){return e=Ia(22,e,r,t),e.elementType=NI,e.lanes=n,e.stateNode={isHidden:!1},e}function Tb(e,t,n){return e=Ia(6,e,null,t),e.lanes=n,e}function Lb(e,t,n){return t=Ia(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function GK(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ub(0),this.expirationTimes=ub(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ub(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function D9(e,t,n,r,i,o,a,s,l){return e=new GK(e,t,n,s,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Ia(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},x9(o),e}function jK(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=ua})(El);const $2=G8(El.exports);var xE=El.exports;ZS.createRoot=xE.createRoot,ZS.hydrateRoot=xE.hydrateRoot;var pl=Boolean(globalThis?.document)?C.exports.useLayoutEffect:C.exports.useEffect,r5={exports:{}},i5={};/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var XK=C.exports,QK=Symbol.for("react.element"),JK=Symbol.for("react.fragment"),eZ=Object.prototype.hasOwnProperty,tZ=XK.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,nZ={key:!0,ref:!0,__self:!0,__source:!0};function AR(e,t,n){var r,i={},o=null,a=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(a=t.ref);for(r in t)eZ.call(t,r)&&!nZ.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:QK,type:e,key:o,ref:a,props:i,_owner:tZ.current}}i5.Fragment=JK;i5.jsx=AR;i5.jsxs=AR;(function(e){e.exports=i5})(r5);const Fn=r5.exports.Fragment,w=r5.exports.jsx,ne=r5.exports.jsxs;var $9=C.exports.createContext({});$9.displayName="ColorModeContext";function o5(){const e=C.exports.useContext($9);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}var H2={light:"chakra-ui-light",dark:"chakra-ui-dark"};function rZ(e={}){const{preventTransition:t=!0}=e,n={setDataset:r=>{const i=t?n.preventTransition():void 0;document.documentElement.dataset.theme=r,document.documentElement.style.colorScheme=r,i?.()},setClassName(r){document.body.classList.add(r?H2.dark:H2.light),document.body.classList.remove(r?H2.light:H2.dark)},query(){return window.matchMedia("(prefers-color-scheme: dark)")},getSystemTheme(r){return n.query().matches??r==="dark"?"dark":"light"},addListener(r){const i=n.query(),o=a=>{r(a.matches?"dark":"light")};return typeof i.addListener=="function"?i.addListener(o):i.addEventListener("change",o),()=>{typeof i.removeListener=="function"?i.removeListener(o):i.removeEventListener("change",o)}},preventTransition(){const r=document.createElement("style");return r.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(r),()=>{window.getComputedStyle(document.body),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.head.removeChild(r)})})}}};return n}var iZ="chakra-ui-color-mode";function oZ(e){return{ssr:!1,type:"localStorage",get(t){if(!globalThis?.document)return t;let n;try{n=localStorage.getItem(e)||t}catch{}return n||t},set(t){try{localStorage.setItem(e,t)}catch{}}}}var aZ=oZ(iZ),bE=()=>{};function SE(e,t){return e.type==="cookie"&&e.ssr?e.get(t):t}function IR(e){const{value:t,children:n,options:{useSystemColorMode:r,initialColorMode:i,disableTransitionOnChange:o}={},colorModeManager:a=aZ}=e,s=i==="dark"?"dark":"light",[l,c]=C.exports.useState(()=>SE(a,s)),[p,g]=C.exports.useState(()=>SE(a)),{getSystemTheme:m,setClassName:y,setDataset:b,addListener:S}=C.exports.useMemo(()=>rZ({preventTransition:o}),[o]),T=i==="system"&&!l?p:l,E=C.exports.useCallback(I=>{const O=I==="system"?m():I;c(O),y(O==="dark"),b(O),a.set(O)},[a,m,y,b]);pl(()=>{i==="system"&&g(m())},[]),C.exports.useEffect(()=>{const I=a.get();if(I){E(I);return}if(i==="system"){E("system");return}E(s)},[a,s,i,E]);const k=C.exports.useCallback(()=>{E(T==="dark"?"light":"dark")},[T,E]);C.exports.useEffect(()=>{if(!!r)return S(E)},[r,S,E]);const L=C.exports.useMemo(()=>({colorMode:t??T,toggleColorMode:t?bE:k,setColorMode:t?bE:E,forced:t!==void 0}),[T,k,E,t]);return w($9.Provider,{value:L,children:n})}IR.displayName="ColorModeProvider";var sZ=new Set(["dark","light","system"]);function lZ(e){let t=e;return sZ.has(t)||(t="light"),t}function uZ(e={}){const{initialColorMode:t="light",type:n="localStorage",storageKey:r="chakra-ui-color-mode"}=e,i=lZ(t),o=n==="cookie",a=`(function(){try{var a=function(o){var l="(prefers-color-scheme: dark)",v=window.matchMedia(l).matches?"dark":"light",e=o==="system"?v:o,d=document.documentElement,m=document.body,i="chakra-ui-light",n="chakra-ui-dark",s=e==="dark";return m.classList.add(s?n:i),m.classList.remove(s?i:n),d.style.colorScheme=e,d.dataset.theme=e,e},u=a,h="${i}",r="${r}",t=document.cookie.match(new RegExp("(^| )".concat(r,"=([^;]+)"))),c=t?t[2]:null;c?a(c):document.cookie="".concat(r,"=").concat(a(h),"; max-age=31536000; path=/")}catch(a){}})(); - `,s=`(function(){try{var a=function(c){var v="(prefers-color-scheme: dark)",h=window.matchMedia(v).matches?"dark":"light",r=c==="system"?h:c,o=document.documentElement,s=document.body,l="chakra-ui-light",d="chakra-ui-dark",i=r==="dark";return s.classList.add(i?d:l),s.classList.remove(i?l:d),o.style.colorScheme=r,o.dataset.theme=r,r},n=a,m="${i}",e="${r}",t=localStorage.getItem(e);t?a(t):localStorage.setItem(e,a(m))}catch(a){}})(); - `;return`!${o?a:s}`.trim()}function cZ(e={}){const{nonce:t}=e;return w("script",{id:"chakra-script",nonce:t,dangerouslySetInnerHTML:{__html:uZ(e)}})}var Ww={exports:{}};(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,a=9007199254740991,s="[object Arguments]",l="[object Array]",c="[object AsyncFunction]",p="[object Boolean]",g="[object Date]",m="[object Error]",y="[object Function]",b="[object GeneratorFunction]",S="[object Map]",T="[object Number]",E="[object Null]",k="[object Object]",L="[object Proxy]",I="[object RegExp]",O="[object Set]",D="[object String]",N="[object Undefined]",z="[object WeakMap]",W="[object ArrayBuffer]",V="[object DataView]",q="[object Float32Array]",he="[object Float64Array]",de="[object Int8Array]",ve="[object Int16Array]",Ee="[object Int32Array]",xe="[object Uint8Array]",Z="[object Uint8ClampedArray]",U="[object Uint16Array]",ee="[object Uint32Array]",ae=/[\\^$.*+?()[\]{}|]/g,X=/^\[object .+?Constructor\]$/,me=/^(?:0|[1-9]\d*)$/,ye={};ye[q]=ye[he]=ye[de]=ye[ve]=ye[Ee]=ye[xe]=ye[Z]=ye[U]=ye[ee]=!0,ye[s]=ye[l]=ye[W]=ye[p]=ye[V]=ye[g]=ye[m]=ye[y]=ye[S]=ye[T]=ye[k]=ye[I]=ye[O]=ye[D]=ye[z]=!1;var Se=typeof tu=="object"&&tu&&tu.Object===Object&&tu,He=typeof self=="object"&&self&&self.Object===Object&&self,je=Se||He||Function("return this")(),ut=t&&!t.nodeType&&t,qe=ut&&!0&&e&&!e.nodeType&&e,ot=qe&&qe.exports===ut,tt=ot&&Se.process,at=function(){try{var H=qe&&qe.require&&qe.require("util").types;return H||tt&&tt.binding&&tt.binding("util")}catch{}}(),Rt=at&&at.isTypedArray;function kt(H,Y,ue){switch(ue.length){case 0:return H.call(Y);case 1:return H.call(Y,ue[0]);case 2:return H.call(Y,ue[0],ue[1]);case 3:return H.call(Y,ue[0],ue[1],ue[2])}return H.apply(Y,ue)}function Le(H,Y){for(var ue=-1,Ge=Array(H);++ue-1}function K0(H,Y){var ue=this.__data__,Ge=Ga(ue,H);return Ge<0?(++this.size,ue.push([H,Y])):ue[Ge][1]=Y,this}Io.prototype.clear=pd,Io.prototype.delete=q0,Io.prototype.get=Lu,Io.prototype.has=gd,Io.prototype.set=K0;function ks(H){var Y=-1,ue=H==null?0:H.length;for(this.clear();++Y1?ue[Nt-1]:void 0,dt=Nt>2?ue[2]:void 0;for(ln=H.length>3&&typeof ln=="function"?(Nt--,ln):void 0,dt&&hh(ue[0],ue[1],dt)&&(ln=Nt<3?void 0:ln,Nt=1),Y=Object(Y);++Ge-1&&H%1==0&&H0){if(++Y>=i)return arguments[0]}else Y=0;return H.apply(void 0,arguments)}}function Ou(H){if(H!=null){try{return wn.call(H)}catch{}try{return H+""}catch{}}return""}function ga(H,Y){return H===Y||H!==H&&Y!==Y}var bd=Il(function(){return arguments}())?Il:function(H){return $n(H)&&pn.call(H,"callee")&&!Be.call(H,"callee")},Ol=Array.isArray;function Bt(H){return H!=null&&gh(H.length)&&!Du(H)}function ph(H){return $n(H)&&Bt(H)}var Nu=Yt||s1;function Du(H){if(!No(H))return!1;var Y=Ps(H);return Y==y||Y==b||Y==c||Y==L}function gh(H){return typeof H=="number"&&H>-1&&H%1==0&&H<=a}function No(H){var Y=typeof H;return H!=null&&(Y=="object"||Y=="function")}function $n(H){return H!=null&&typeof H=="object"}function Sd(H){if(!$n(H)||Ps(H)!=k)return!1;var Y=rn(H);if(Y===null)return!0;var ue=pn.call(Y,"constructor")&&Y.constructor;return typeof ue=="function"&&ue instanceof ue&&wn.call(ue)==Zt}var mh=Rt?st(Rt):Iu;function wd(H){return Gr(H,vh(H))}function vh(H){return Bt(H)?i1(H,!0):Ts(H)}var on=ja(function(H,Y,ue,Ge){Mo(H,Y,ue,Ge)});function $t(H){return function(){return H}}function yh(H){return H}function s1(){return!1}e.exports=on})(Ww,Ww.exports);const Ma=Ww.exports;function vs(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}function xf(e,...t){return dZ(e)?e(...t):e}var dZ=e=>typeof e=="function",fZ=e=>/!(important)?$/.test(e),wE=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,Vw=(e,t)=>n=>{const r=String(t),i=fZ(r),o=wE(r),a=e?`${e}.${o}`:o;let s=vs(n.__cssMap)&&a in n.__cssMap?n.__cssMap[a].varRef:t;return s=wE(s),i?`${s} !important`:s};function Im(e){const{scale:t,transform:n,compose:r}=e;return(o,a)=>{const s=Vw(t,o)(a);let l=n?.(s,a)??s;return r&&(l=r(l,a)),l}}var W2=(...e)=>t=>e.reduce((n,r)=>r(n),t);function as(e,t){return n=>{const r={property:n,scale:e};return r.transform=Im({scale:e,transform:t}),r}}var hZ=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function pZ(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:hZ(t),transform:n?Im({scale:n,compose:r}):r}}var MR=["rotate(var(--chakra-rotate, 0))","scaleX(var(--chakra-scale-x, 1))","scaleY(var(--chakra-scale-y, 1))","skewX(var(--chakra-skew-x, 0))","skewY(var(--chakra-skew-y, 0))"];function gZ(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...MR].join(" ")}function mZ(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...MR].join(" ")}var vZ={"--chakra-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-sepia":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-drop-shadow":"var(--chakra-empty,/*!*/ /*!*/)",filter:["var(--chakra-blur)","var(--chakra-brightness)","var(--chakra-contrast)","var(--chakra-grayscale)","var(--chakra-hue-rotate)","var(--chakra-invert)","var(--chakra-saturate)","var(--chakra-sepia)","var(--chakra-drop-shadow)"].join(" ")},yZ={backdropFilter:["var(--chakra-backdrop-blur)","var(--chakra-backdrop-brightness)","var(--chakra-backdrop-contrast)","var(--chakra-backdrop-grayscale)","var(--chakra-backdrop-hue-rotate)","var(--chakra-backdrop-invert)","var(--chakra-backdrop-opacity)","var(--chakra-backdrop-saturate)","var(--chakra-backdrop-sepia)"].join(" "),"--chakra-backdrop-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-opacity":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-sepia":"var(--chakra-empty,/*!*/ /*!*/)"};function xZ(e){return{"--chakra-ring-offset-shadow":"var(--chakra-ring-inset) 0 0 0 var(--chakra-ring-offset-width) var(--chakra-ring-offset-color)","--chakra-ring-shadow":"var(--chakra-ring-inset) 0 0 0 calc(var(--chakra-ring-width) + var(--chakra-ring-offset-width)) var(--chakra-ring-color)","--chakra-ring-width":e,boxShadow:["var(--chakra-ring-offset-shadow)","var(--chakra-ring-shadow)","var(--chakra-shadow, 0 0 #0000)"].join(", ")}}var bZ={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},RR="& > :not(style) ~ :not(style)",SZ={[RR]:{marginInlineStart:"calc(var(--chakra-space-x) * calc(1 - var(--chakra-space-x-reverse)))",marginInlineEnd:"calc(var(--chakra-space-x) * var(--chakra-space-x-reverse))"}},wZ={[RR]:{marginTop:"calc(var(--chakra-space-y) * calc(1 - var(--chakra-space-y-reverse)))",marginBottom:"calc(var(--chakra-space-y) * var(--chakra-space-y-reverse))"}},Uw={"to-t":"to top","to-tr":"to top right","to-r":"to right","to-br":"to bottom right","to-b":"to bottom","to-bl":"to bottom left","to-l":"to left","to-tl":"to top left"},CZ=new Set(Object.values(Uw)),OR=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),_Z=e=>e.trim();function kZ(e,t){var n;if(e==null||OR.has(e))return e;const r=/(?^[a-z-A-Z]+)\((?(.*))\)/g,{type:i,values:o}=((n=r.exec(e))==null?void 0:n.groups)??{};if(!i||!o)return e;const a=i.includes("-gradient")?i:`${i}-gradient`,[s,...l]=o.split(",").map(_Z).filter(Boolean);if(l?.length===0)return e;const c=s in Uw?Uw[s]:s;l.unshift(c);const p=l.map(g=>{if(CZ.has(g))return g;const m=g.indexOf(" "),[y,b]=m!==-1?[g.substr(0,m),g.substr(m+1)]:[g],S=NR(b)?b:b&&b.split(" "),T=`colors.${y}`,E=T in t.__cssMap?t.__cssMap[T].varRef:y;return S?[E,...Array.isArray(S)?S:[S]].join(" "):E});return`${a}(${p.join(", ")})`}var NR=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),EZ=(e,t)=>kZ(e,t??{});function PZ(e){return/^var\(--.+\)$/.test(e)}var TZ=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Ys=e=>t=>`${e}(${t})`,tn={filter(e){return e!=="auto"?e:vZ},backdropFilter(e){return e!=="auto"?e:yZ},ring(e){return xZ(tn.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?gZ():e==="auto-gpu"?mZ():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=TZ(e);return t||typeof e=="number"?`${e}px`:e},fraction(e){return typeof e!="number"||e>1?e:`${e*100}%`},float(e,t){const n={left:"right",right:"left"};return t.direction==="rtl"?n[e]:e},degree(e){if(PZ(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:EZ,blur:Ys("blur"),opacity:Ys("opacity"),brightness:Ys("brightness"),contrast:Ys("contrast"),dropShadow:Ys("drop-shadow"),grayscale:Ys("grayscale"),hueRotate:Ys("hue-rotate"),invert:Ys("invert"),saturate:Ys("saturate"),sepia:Ys("sepia"),bgImage(e){return e==null||NR(e)||OR.has(e)?e:`url(${e})`},outline(e){const t=String(e)==="0"||String(e)==="none";return e!==null&&t?{outline:"2px solid transparent",outlineOffset:"2px"}:{outline:e}},flexDirection(e){const{space:t,divide:n}=bZ[e]??{},r={flexDirection:e};return t&&(r[t]=1),n&&(r[n]=1),r}},J={borderWidths:as("borderWidths"),borderStyles:as("borderStyles"),colors:as("colors"),borders:as("borders"),radii:as("radii",tn.px),space:as("space",W2(tn.vh,tn.px)),spaceT:as("space",W2(tn.vh,tn.px)),degreeT(e){return{property:e,transform:tn.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:Im({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:as("sizes",W2(tn.vh,tn.px)),sizesT:as("sizes",W2(tn.vh,tn.fraction)),shadows:as("shadows"),logical:pZ,blur:as("blur",tn.blur)},jy={background:J.colors("background"),backgroundColor:J.colors("backgroundColor"),backgroundImage:J.propT("backgroundImage",tn.bgImage),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:tn.bgClip},bgSize:J.prop("backgroundSize"),bgPosition:J.prop("backgroundPosition"),bg:J.colors("background"),bgColor:J.colors("backgroundColor"),bgPos:J.prop("backgroundPosition"),bgRepeat:J.prop("backgroundRepeat"),bgAttachment:J.prop("backgroundAttachment"),bgGradient:J.propT("backgroundImage",tn.gradient),bgClip:{transform:tn.bgClip}};Object.assign(jy,{bgImage:jy.backgroundImage,bgImg:jy.backgroundImage});var cn={border:J.borders("border"),borderWidth:J.borderWidths("borderWidth"),borderStyle:J.borderStyles("borderStyle"),borderColor:J.colors("borderColor"),borderRadius:J.radii("borderRadius"),borderTop:J.borders("borderTop"),borderBlockStart:J.borders("borderBlockStart"),borderTopLeftRadius:J.radii("borderTopLeftRadius"),borderStartStartRadius:J.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:J.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:J.radii("borderTopRightRadius"),borderStartEndRadius:J.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:J.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:J.borders("borderRight"),borderInlineEnd:J.borders("borderInlineEnd"),borderBottom:J.borders("borderBottom"),borderBlockEnd:J.borders("borderBlockEnd"),borderBottomLeftRadius:J.radii("borderBottomLeftRadius"),borderBottomRightRadius:J.radii("borderBottomRightRadius"),borderLeft:J.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:J.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:J.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:J.borders(["borderLeft","borderRight"]),borderInline:J.borders("borderInline"),borderY:J.borders(["borderTop","borderBottom"]),borderBlock:J.borders("borderBlock"),borderTopWidth:J.borderWidths("borderTopWidth"),borderBlockStartWidth:J.borderWidths("borderBlockStartWidth"),borderTopColor:J.colors("borderTopColor"),borderBlockStartColor:J.colors("borderBlockStartColor"),borderTopStyle:J.borderStyles("borderTopStyle"),borderBlockStartStyle:J.borderStyles("borderBlockStartStyle"),borderBottomWidth:J.borderWidths("borderBottomWidth"),borderBlockEndWidth:J.borderWidths("borderBlockEndWidth"),borderBottomColor:J.colors("borderBottomColor"),borderBlockEndColor:J.colors("borderBlockEndColor"),borderBottomStyle:J.borderStyles("borderBottomStyle"),borderBlockEndStyle:J.borderStyles("borderBlockEndStyle"),borderLeftWidth:J.borderWidths("borderLeftWidth"),borderInlineStartWidth:J.borderWidths("borderInlineStartWidth"),borderLeftColor:J.colors("borderLeftColor"),borderInlineStartColor:J.colors("borderInlineStartColor"),borderLeftStyle:J.borderStyles("borderLeftStyle"),borderInlineStartStyle:J.borderStyles("borderInlineStartStyle"),borderRightWidth:J.borderWidths("borderRightWidth"),borderInlineEndWidth:J.borderWidths("borderInlineEndWidth"),borderRightColor:J.colors("borderRightColor"),borderInlineEndColor:J.colors("borderInlineEndColor"),borderRightStyle:J.borderStyles("borderRightStyle"),borderInlineEndStyle:J.borderStyles("borderInlineEndStyle"),borderTopRadius:J.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:J.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:J.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:J.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(cn,{rounded:cn.borderRadius,roundedTop:cn.borderTopRadius,roundedTopLeft:cn.borderTopLeftRadius,roundedTopRight:cn.borderTopRightRadius,roundedTopStart:cn.borderStartStartRadius,roundedTopEnd:cn.borderStartEndRadius,roundedBottom:cn.borderBottomRadius,roundedBottomLeft:cn.borderBottomLeftRadius,roundedBottomRight:cn.borderBottomRightRadius,roundedBottomStart:cn.borderEndStartRadius,roundedBottomEnd:cn.borderEndEndRadius,roundedLeft:cn.borderLeftRadius,roundedRight:cn.borderRightRadius,roundedStart:cn.borderInlineStartRadius,roundedEnd:cn.borderInlineEndRadius,borderStart:cn.borderInlineStart,borderEnd:cn.borderInlineEnd,borderTopStartRadius:cn.borderStartStartRadius,borderTopEndRadius:cn.borderStartEndRadius,borderBottomStartRadius:cn.borderEndStartRadius,borderBottomEndRadius:cn.borderEndEndRadius,borderStartRadius:cn.borderInlineStartRadius,borderEndRadius:cn.borderInlineEndRadius,borderStartWidth:cn.borderInlineStartWidth,borderEndWidth:cn.borderInlineEndWidth,borderStartColor:cn.borderInlineStartColor,borderEndColor:cn.borderInlineEndColor,borderStartStyle:cn.borderInlineStartStyle,borderEndStyle:cn.borderInlineEndStyle});var LZ={color:J.colors("color"),textColor:J.colors("color"),fill:J.colors("fill"),stroke:J.colors("stroke")},Gw={boxShadow:J.shadows("boxShadow"),mixBlendMode:!0,blendMode:J.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:J.prop("backgroundBlendMode"),opacity:!0};Object.assign(Gw,{shadow:Gw.boxShadow});var AZ={filter:{transform:tn.filter},blur:J.blur("--chakra-blur"),brightness:J.propT("--chakra-brightness",tn.brightness),contrast:J.propT("--chakra-contrast",tn.contrast),hueRotate:J.degreeT("--chakra-hue-rotate"),invert:J.propT("--chakra-invert",tn.invert),saturate:J.propT("--chakra-saturate",tn.saturate),dropShadow:J.propT("--chakra-drop-shadow",tn.dropShadow),backdropFilter:{transform:tn.backdropFilter},backdropBlur:J.blur("--chakra-backdrop-blur"),backdropBrightness:J.propT("--chakra-backdrop-brightness",tn.brightness),backdropContrast:J.propT("--chakra-backdrop-contrast",tn.contrast),backdropHueRotate:J.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:J.propT("--chakra-backdrop-invert",tn.invert),backdropSaturate:J.propT("--chakra-backdrop-saturate",tn.saturate)},Y3={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:tn.flexDirection},experimental_spaceX:{static:SZ,transform:Im({scale:"space",transform:e=>e!==null?{"--chakra-space-x":e}:null})},experimental_spaceY:{static:wZ,transform:Im({scale:"space",transform:e=>e!=null?{"--chakra-space-y":e}:null})},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:J.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:J.space("gap"),rowGap:J.space("rowGap"),columnGap:J.space("columnGap")};Object.assign(Y3,{flexDir:Y3.flexDirection});var DR={gridGap:J.space("gridGap"),gridColumnGap:J.space("gridColumnGap"),gridRowGap:J.space("gridRowGap"),gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridColumnStart:!0,gridColumnEnd:!0,gridRowStart:!0,gridRowEnd:!0,gridAutoRows:!0,gridTemplate:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0},IZ={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:tn.outline},outlineOffset:!0,outlineColor:J.colors("outlineColor")},ka={width:J.sizesT("width"),inlineSize:J.sizesT("inlineSize"),height:J.sizes("height"),blockSize:J.sizes("blockSize"),boxSize:J.sizes(["width","height"]),minWidth:J.sizes("minWidth"),minInlineSize:J.sizes("minInlineSize"),minHeight:J.sizes("minHeight"),minBlockSize:J.sizes("minBlockSize"),maxWidth:J.sizes("maxWidth"),maxInlineSize:J.sizes("maxInlineSize"),maxHeight:J.sizes("maxHeight"),maxBlockSize:J.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:J.propT("float",tn.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(ka,{w:ka.width,h:ka.height,minW:ka.minWidth,maxW:ka.maxWidth,minH:ka.minHeight,maxH:ka.maxHeight,overscroll:ka.overscrollBehavior,overscrollX:ka.overscrollBehaviorX,overscrollY:ka.overscrollBehaviorY});var MZ={listStyleType:!0,listStylePosition:!0,listStylePos:J.prop("listStylePosition"),listStyleImage:!0,listStyleImg:J.prop("listStyleImage")};function RZ(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,a)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const s=t.get(r);if(s.has(i))return s.get(i);const l=e(r,i,o,a);return s.set(i,l),l}},NZ=OZ(RZ),DZ={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},zZ={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},Ab=(e,t,n)=>{const r={},i=NZ(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},FZ={srOnly:{transform(e){return e===!0?DZ:e==="focusable"?zZ:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>Ab(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>Ab(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>Ab(t,e,n)}},qg={position:!0,pos:J.prop("position"),zIndex:J.prop("zIndex","zIndices"),inset:J.spaceT("inset"),insetX:J.spaceT(["left","right"]),insetInline:J.spaceT("insetInline"),insetY:J.spaceT(["top","bottom"]),insetBlock:J.spaceT("insetBlock"),top:J.spaceT("top"),insetBlockStart:J.spaceT("insetBlockStart"),bottom:J.spaceT("bottom"),insetBlockEnd:J.spaceT("insetBlockEnd"),left:J.spaceT("left"),insetInlineStart:J.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:J.spaceT("right"),insetInlineEnd:J.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(qg,{insetStart:qg.insetInlineStart,insetEnd:qg.insetInlineEnd});var BZ={ring:{transform:tn.ring},ringColor:J.colors("--chakra-ring-color"),ringOffset:J.prop("--chakra-ring-offset-width"),ringOffsetColor:J.colors("--chakra-ring-offset-color"),ringInset:J.prop("--chakra-ring-inset")},qn={margin:J.spaceT("margin"),marginTop:J.spaceT("marginTop"),marginBlockStart:J.spaceT("marginBlockStart"),marginRight:J.spaceT("marginRight"),marginInlineEnd:J.spaceT("marginInlineEnd"),marginBottom:J.spaceT("marginBottom"),marginBlockEnd:J.spaceT("marginBlockEnd"),marginLeft:J.spaceT("marginLeft"),marginInlineStart:J.spaceT("marginInlineStart"),marginX:J.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:J.spaceT("marginInline"),marginY:J.spaceT(["marginTop","marginBottom"]),marginBlock:J.spaceT("marginBlock"),padding:J.space("padding"),paddingTop:J.space("paddingTop"),paddingBlockStart:J.space("paddingBlockStart"),paddingRight:J.space("paddingRight"),paddingBottom:J.space("paddingBottom"),paddingBlockEnd:J.space("paddingBlockEnd"),paddingLeft:J.space("paddingLeft"),paddingInlineStart:J.space("paddingInlineStart"),paddingInlineEnd:J.space("paddingInlineEnd"),paddingX:J.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:J.space("paddingInline"),paddingY:J.space(["paddingTop","paddingBottom"]),paddingBlock:J.space("paddingBlock")};Object.assign(qn,{m:qn.margin,mt:qn.marginTop,mr:qn.marginRight,me:qn.marginInlineEnd,marginEnd:qn.marginInlineEnd,mb:qn.marginBottom,ml:qn.marginLeft,ms:qn.marginInlineStart,marginStart:qn.marginInlineStart,mx:qn.marginX,my:qn.marginY,p:qn.padding,pt:qn.paddingTop,py:qn.paddingY,px:qn.paddingX,pb:qn.paddingBottom,pl:qn.paddingLeft,ps:qn.paddingInlineStart,paddingStart:qn.paddingInlineStart,pr:qn.paddingRight,pe:qn.paddingInlineEnd,paddingEnd:qn.paddingInlineEnd});var $Z={textDecorationColor:J.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:J.shadows("textShadow")},HZ={clipPath:!0,transform:J.propT("transform",tn.transform),transformOrigin:!0,translateX:J.spaceT("--chakra-translate-x"),translateY:J.spaceT("--chakra-translate-y"),skewX:J.degreeT("--chakra-skew-x"),skewY:J.degreeT("--chakra-skew-y"),scaleX:J.prop("--chakra-scale-x"),scaleY:J.prop("--chakra-scale-y"),scale:J.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:J.degreeT("--chakra-rotate")},WZ={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:J.prop("transitionDuration","transition.duration"),transitionProperty:J.prop("transitionProperty","transition.property"),transitionTimingFunction:J.prop("transitionTimingFunction","transition.easing")},VZ={fontFamily:J.prop("fontFamily","fonts"),fontSize:J.prop("fontSize","fontSizes",tn.px),fontWeight:J.prop("fontWeight","fontWeights"),lineHeight:J.prop("lineHeight","lineHeights"),letterSpacing:J.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},UZ={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:J.spaceT("scrollMargin"),scrollMarginTop:J.spaceT("scrollMarginTop"),scrollMarginBottom:J.spaceT("scrollMarginBottom"),scrollMarginLeft:J.spaceT("scrollMarginLeft"),scrollMarginRight:J.spaceT("scrollMarginRight"),scrollMarginX:J.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:J.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:J.spaceT("scrollPadding"),scrollPaddingTop:J.spaceT("scrollPaddingTop"),scrollPaddingBottom:J.spaceT("scrollPaddingBottom"),scrollPaddingLeft:J.spaceT("scrollPaddingLeft"),scrollPaddingRight:J.spaceT("scrollPaddingRight"),scrollPaddingX:J.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:J.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function zR(e){return vs(e)&&e.reference?e.reference:String(e)}var a5=(e,...t)=>t.map(zR).join(` ${e} `).replace(/calc/g,""),CE=(...e)=>`calc(${a5("+",...e)})`,_E=(...e)=>`calc(${a5("-",...e)})`,jw=(...e)=>`calc(${a5("*",...e)})`,kE=(...e)=>`calc(${a5("/",...e)})`,EE=e=>{const t=zR(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:jw(t,-1)},ff=Object.assign(e=>({add:(...t)=>ff(CE(e,...t)),subtract:(...t)=>ff(_E(e,...t)),multiply:(...t)=>ff(jw(e,...t)),divide:(...t)=>ff(kE(e,...t)),negate:()=>ff(EE(e)),toString:()=>e.toString()}),{add:CE,subtract:_E,multiply:jw,divide:kE,negate:EE});function GZ(e,t="-"){return e.replace(/\s+/g,t)}function jZ(e){const t=GZ(e.toString());return KZ(qZ(t))}function qZ(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function KZ(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function ZZ(e,t=""){return[t,e].filter(Boolean).join("-")}function YZ(e,t){return`var(${e}${t?`, ${t}`:""})`}function XZ(e,t=""){return jZ(`--${ZZ(e,t)}`)}function da(e,t,n){const r=XZ(e,n);return{variable:r,reference:YZ(r,t)}}function QZ(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function JZ(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function qw(e){if(e==null)return e;const{unitless:t}=JZ(e);return t||typeof e=="number"?`${e}px`:e}var FR=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,H9=e=>Object.fromEntries(Object.entries(e).sort(FR));function PE(e){const t=H9(e);return Object.assign(Object.values(t),t)}function eY(e){const t=Object.keys(H9(e));return new Set(t)}function TE(e){if(!e)return e;e=qw(e)??e;const t=e.endsWith("px")?-1:-.0625;return typeof e=="number"?`${e+t}`:e.replace(/(\d+\.?\d*)/u,n=>`${parseFloat(n)+t}`)}function _g(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${qw(e)})`),t&&n.push("and",`(max-width: ${qw(t)})`),n.join(" ")}function tY(e){if(!e)return null;e.base=e.base??"0px";const t=PE(e),n=Object.entries(e).sort(FR).map(([o,a],s,l)=>{let[,c]=l[s+1]??[];return c=parseFloat(c)>0?TE(c):void 0,{_minW:TE(a),breakpoint:o,minW:a,maxW:c,maxWQuery:_g(null,c),minWQuery:_g(a),minMaxQuery:_g(a,c)}}),r=eY(e),i=Array.from(r.values());return{keys:r,normalized:t,isResponsive(o){const a=Object.keys(o);return a.length>0&&a.every(s=>r.has(s))},asObject:H9(e),asArray:PE(e),details:n,media:[null,...t.map(o=>_g(o)).slice(1)],toArrayValue(o){if(!vs(o))throw new Error("toArrayValue: value must be an object");const a=i.map(s=>o[s]??null);for(;QZ(a)===null;)a.pop();return a},toObjectValue(o){if(!Array.isArray(o))throw new Error("toObjectValue: value must be an array");return o.reduce((a,s,l)=>{const c=i[l];return c!=null&&s!=null&&(a[c]=s),a},{})}}}var yi={hover:(e,t)=>`${e}:hover ${t}, ${e}[data-hover] ${t}`,focus:(e,t)=>`${e}:focus ${t}, ${e}[data-focus] ${t}`,focusVisible:(e,t)=>`${e}:focus-visible ${t}`,focusWithin:(e,t)=>`${e}:focus-within ${t}`,active:(e,t)=>`${e}:active ${t}, ${e}[data-active] ${t}`,disabled:(e,t)=>`${e}:disabled ${t}, ${e}[data-disabled] ${t}`,invalid:(e,t)=>`${e}:invalid ${t}, ${e}[data-invalid] ${t}`,checked:(e,t)=>`${e}:checked ${t}, ${e}[data-checked] ${t}`,indeterminate:(e,t)=>`${e}:indeterminate ${t}, ${e}[aria-checked=mixed] ${t}, ${e}[data-indeterminate] ${t}`,readOnly:(e,t)=>`${e}:read-only ${t}, ${e}[readonly] ${t}, ${e}[data-read-only] ${t}`,expanded:(e,t)=>`${e}:read-only ${t}, ${e}[aria-expanded=true] ${t}, ${e}[data-expanded] ${t}`,placeholderShown:(e,t)=>`${e}:placeholder-shown ${t}`},gc=e=>BR(t=>e(t,"&"),"[role=group]","[data-group]",".group"),Kl=e=>BR(t=>e(t,"~ &"),"[data-peer]",".peer"),BR=(e,...t)=>t.map(e).join(", "),s5={_hover:"&:hover, &[data-hover]",_active:"&:active, &[data-active]",_focus:"&:focus, &[data-focus]",_highlighted:"&[data-highlighted]",_focusWithin:"&:focus-within",_focusVisible:"&:focus-visible, &[data-focus-visible]",_disabled:"&:disabled, &[disabled], &[aria-disabled=true], &[data-disabled]",_readOnly:"&[aria-readonly=true], &[readonly], &[data-readonly]",_before:"&::before",_after:"&::after",_empty:"&:empty",_expanded:"&[aria-expanded=true], &[data-expanded]",_checked:"&[aria-checked=true], &[data-checked]",_grabbed:"&[aria-grabbed=true], &[data-grabbed]",_pressed:"&[aria-pressed=true], &[data-pressed]",_invalid:"&[aria-invalid=true], &[data-invalid]",_valid:"&[data-valid], &[data-state=valid]",_loading:"&[data-loading], &[aria-busy=true]",_selected:"&[aria-selected=true], &[data-selected]",_hidden:"&[hidden], &[data-hidden]",_autofill:"&:-webkit-autofill",_even:"&:nth-of-type(even)",_odd:"&:nth-of-type(odd)",_first:"&:first-of-type",_last:"&:last-of-type",_notFirst:"&:not(:first-of-type)",_notLast:"&:not(:last-of-type)",_visited:"&:visited",_activeLink:"&[aria-current=page]",_activeStep:"&[aria-current=step]",_indeterminate:"&:indeterminate, &[aria-checked=mixed], &[data-indeterminate]",_groupHover:gc(yi.hover),_peerHover:Kl(yi.hover),_groupFocus:gc(yi.focus),_peerFocus:Kl(yi.focus),_groupFocusVisible:gc(yi.focusVisible),_peerFocusVisible:Kl(yi.focusVisible),_groupActive:gc(yi.active),_peerActive:Kl(yi.active),_groupDisabled:gc(yi.disabled),_peerDisabled:Kl(yi.disabled),_groupInvalid:gc(yi.invalid),_peerInvalid:Kl(yi.invalid),_groupChecked:gc(yi.checked),_peerChecked:Kl(yi.checked),_groupFocusWithin:gc(yi.focusWithin),_peerFocusWithin:Kl(yi.focusWithin),_peerPlaceholderShown:Kl(yi.placeholderShown),_placeholder:"&::placeholder",_placeholderShown:"&:placeholder-shown",_fullScreen:"&:fullscreen",_selection:"&::selection",_rtl:"[dir=rtl] &, &[dir=rtl]",_ltr:"[dir=ltr] &, &[dir=ltr]",_mediaDark:"@media (prefers-color-scheme: dark)",_mediaReduceMotion:"@media (prefers-reduced-motion: reduce)",_dark:".chakra-ui-dark &:not([data-theme]),[data-theme=dark] &:not([data-theme]),&[data-theme=dark]",_light:".chakra-ui-light &:not([data-theme]),[data-theme=light] &:not([data-theme]),&[data-theme=light]"},nY=Object.keys(s5);function LE(e,t){return da(String(e).replace(/\./g,"-"),void 0,t)}function rY(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:a,value:s}=o,{variable:l,reference:c}=LE(i,t?.cssVarPrefix);if(!a){if(i.startsWith("space")){const m=i.split("."),[y,...b]=m,S=`${y}.-${b.join(".")}`,T=ff.negate(s),E=ff.negate(c);r[S]={value:T,var:l,varRef:E}}n[l]=s,r[i]={value:s,var:l,varRef:c};continue}const p=m=>{const b=[String(i).split(".")[0],m].join(".");if(!e[b])return m;const{reference:T}=LE(b,t?.cssVarPrefix);return T},g=vs(s)?s:{default:s};n=Ma(n,Object.entries(g).reduce((m,[y,b])=>{var S;const T=p(b);if(y==="default")return m[l]=T,m;const E=((S=s5)==null?void 0:S[y])??y;return m[E]={[l]:T},m},{})),r[i]={value:c,var:l,varRef:c}}return{cssVars:n,cssMap:r}}function iY(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function oY(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var aY=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur"];function sY(e){return oY(e,aY)}function lY(e){return e.semanticTokens}function uY(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}function cY({tokens:e,semanticTokens:t}){const n=Object.entries(Kw(e)??{}).map(([i,o])=>[i,{isSemantic:!1,value:o}]),r=Object.entries(Kw(t,1)??{}).map(([i,o])=>[i,{isSemantic:!0,value:o}]);return Object.fromEntries([...n,...r])}function Kw(e,t=1/0){return!vs(e)&&!Array.isArray(e)||!t?e:Object.entries(e).reduce((n,[r,i])=>(vs(i)||Array.isArray(i)?Object.entries(Kw(i,t-1)).forEach(([o,a])=>{n[`${r}.${o}`]=a}):n[r]=i,n),{})}function dY(e){var t;const n=uY(e),r=sY(n),i=lY(n),o=cY({tokens:r,semanticTokens:i}),a=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:s,cssVars:l}=rY(o,{cssVarPrefix:a});return Object.assign(n,{__cssVars:{...{"--chakra-ring-inset":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-ring-offset-width":"0px","--chakra-ring-offset-color":"#fff","--chakra-ring-color":"rgba(66, 153, 225, 0.6)","--chakra-ring-offset-shadow":"0 0 #0000","--chakra-ring-shadow":"0 0 #0000","--chakra-space-x-reverse":"0","--chakra-space-y-reverse":"0"},...l},__cssMap:s,__breakpoints:tY(n.breakpoints)}),n}var W9=Ma({},jy,cn,LZ,Y3,ka,AZ,BZ,IZ,DR,FZ,qg,Gw,qn,UZ,VZ,$Z,HZ,MZ,WZ),fY=Object.assign({},qn,ka,Y3,DR,qg),hY=Object.keys(fY),pY=[...Object.keys(W9),...nY],gY={...W9,...s5},mY=e=>e in gY,vY=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const a in e){let s=xf(e[a],t);if(s==null)continue;if(s=vs(s)&&n(s)?r(s):s,!Array.isArray(s)){o[a]=s;continue}const l=s.slice(0,i.length).length;for(let c=0;ce.startsWith("--")&&typeof t=="string"&&!xY(t),SY=(e,t)=>{if(t==null)return t;const n=a=>{var s,l;return(l=(s=e.__cssMap)==null?void 0:s[a])==null?void 0:l.varRef},r=a=>n(a)??a,[i,o]=yY(t);return t=n(i)??r(o)??r(t),t};function wY(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,a=!1)=>{var s;const l=xf(o,r),c=vY(l)(r);let p={};for(let g in c){const m=c[g];let y=xf(m,r);g in n&&(g=n[g]),bY(g,y)&&(y=SY(r,y));let b=t[g];if(b===!0&&(b={property:g}),vs(y)){p[g]=p[g]??{},p[g]=Ma({},p[g],i(y,!0));continue}let S=((s=b?.transform)==null?void 0:s.call(b,y,r,l))??y;S=b?.processResult?i(S,!0):S;const T=xf(b?.property,r);if(!a&&b?.static){const E=xf(b.static,r);p=Ma({},p,E)}if(T&&Array.isArray(T)){for(const E of T)p[E]=S;continue}if(T){T==="&"&&vs(S)?p=Ma({},p,S):p[T]=S;continue}if(vs(S)){p=Ma({},p,S);continue}p[g]=S}return p};return i}var $R=e=>t=>wY({theme:t,pseudos:s5,configs:W9})(e);function nr(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function CY(e,t){if(Array.isArray(e))return e;if(vs(e))return t(e);if(e!=null)return[e]}function _Y(e,t){for(let n=t+1;n{Ma(c,{[L]:m?k[L]:{[E]:k[L]}})});continue}if(!y){m?Ma(c,k):c[E]=k;continue}c[E]=k}}return c}}function EY(e){return t=>{const{variant:n,size:r,theme:i}=t,o=kY(i);return Ma({},xf(e.baseStyle??{},t),o(e,"sizes",r,t),o(e,"variants",n,t))}}function PY(e,t,n){var r,i;return((i=(r=e.__cssMap)==null?void 0:r[`${t}.${n}`])==null?void 0:i.varRef)??n}function hn(e){return iY(e,["styleConfig","size","variant","colorScheme"])}function TY(e){if(e.sheet)return e.sheet;for(var t=0;t0?ki(L0,--Lo):0,h0--,$r===10&&(h0=1,u5--),$r}function na(){return $r=Lo2||Rm($r)>3?"":" "}function $Y(e,t){for(;--t&&na()&&!($r<48||$r>102||$r>57&&$r<65||$r>70&&$r<97););return fv(e,qy()+(t<6&&gl()==32&&na()==32))}function Yw(e){for(;na();)switch($r){case e:return Lo;case 34:case 39:e!==34&&e!==39&&Yw($r);break;case 40:e===41&&Yw(e);break;case 92:na();break}return Lo}function HY(e,t){for(;na()&&e+$r!==47+10;)if(e+$r===42+42&&gl()===47)break;return"/*"+fv(t,Lo-1)+"*"+l5(e===47?e:na())}function WY(e){for(;!Rm(gl());)na();return fv(e,Lo)}function VY(e){return jR(Zy("",null,null,null,[""],e=GR(e),0,[0],e))}function Zy(e,t,n,r,i,o,a,s,l){for(var c=0,p=0,g=a,m=0,y=0,b=0,S=1,T=1,E=1,k=0,L="",I=i,O=o,D=r,N=L;T;)switch(b=k,k=na()){case 40:if(b!=108&&ki(N,g-1)==58){Zw(N+=yn(Ky(k),"&","&\f"),"&\f")!=-1&&(E=-1);break}case 34:case 39:case 91:N+=Ky(k);break;case 9:case 10:case 13:case 32:N+=BY(b);break;case 92:N+=$Y(qy()-1,7);continue;case 47:switch(gl()){case 42:case 47:V2(UY(HY(na(),qy()),t,n),l);break;default:N+="/"}break;case 123*S:s[c++]=ol(N)*E;case 125*S:case 59:case 0:switch(k){case 0:case 125:T=0;case 59+p:y>0&&ol(N)-g&&V2(y>32?IE(N+";",r,n,g-1):IE(yn(N," ","")+";",r,n,g-2),l);break;case 59:N+=";";default:if(V2(D=AE(N,t,n,c,p,i,s,L,I=[],O=[],g),o),k===123)if(p===0)Zy(N,t,D,D,I,o,g,s,O);else switch(m===99&&ki(N,3)===110?100:m){case 100:case 109:case 115:Zy(e,D,D,r&&V2(AE(e,D,D,0,0,i,s,L,i,I=[],g),O),i,O,g,s,r?I:O);break;default:Zy(N,D,D,D,[""],O,0,s,O)}}c=p=y=0,S=E=1,L=N="",g=a;break;case 58:g=1+ol(N),y=b;default:if(S<1){if(k==123)--S;else if(k==125&&S++==0&&FY()==125)continue}switch(N+=l5(k),k*S){case 38:E=p>0?1:(N+="\f",-1);break;case 44:s[c++]=(ol(N)-1)*E,E=1;break;case 64:gl()===45&&(N+=Ky(na())),m=gl(),p=g=ol(L=N+=WY(qy())),k++;break;case 45:b===45&&ol(N)==2&&(S=0)}}return o}function AE(e,t,n,r,i,o,a,s,l,c,p){for(var g=i-1,m=i===0?o:[""],y=G9(m),b=0,S=0,T=0;b0?m[E]+" "+k:yn(k,/&\f/g,m[E])))&&(l[T++]=L);return c5(e,t,n,i===0?V9:s,l,c,p)}function UY(e,t,n){return c5(e,t,n,HR,l5(zY()),Mm(e,2,-2),0)}function IE(e,t,n,r){return c5(e,t,n,U9,Mm(e,0,r),Mm(e,r+1,-1),r)}function Vp(e,t){for(var n="",r=G9(e),i=0;i6)switch(ki(e,t+1)){case 109:if(ki(e,t+4)!==45)break;case 102:return yn(e,/(.+:)(.+)-([^]+)/,"$1"+dn+"$2-$3$1"+X3+(ki(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Zw(e,"stretch")?KR(yn(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(ki(e,t+1)!==115)break;case 6444:switch(ki(e,ol(e)-3-(~Zw(e,"!important")&&10))){case 107:return yn(e,":",":"+dn)+e;case 101:return yn(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+dn+(ki(e,14)===45?"inline-":"")+"box$3$1"+dn+"$2$3$1"+Di+"$2box$3")+e}break;case 5936:switch(ki(e,t+11)){case 114:return dn+e+Di+yn(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return dn+e+Di+yn(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return dn+e+Di+yn(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return dn+e+Di+e+e}return e}var JY=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case U9:t.return=KR(t.value,t.length);break;case WR:return Vp([ag(t,{value:yn(t.value,"@","@"+dn)})],i);case V9:if(t.length)return DY(t.props,function(o){switch(NY(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Vp([ag(t,{props:[yn(o,/:(read-\w+)/,":"+X3+"$1")]})],i);case"::placeholder":return Vp([ag(t,{props:[yn(o,/:(plac\w+)/,":"+dn+"input-$1")]}),ag(t,{props:[yn(o,/:(plac\w+)/,":"+X3+"$1")]}),ag(t,{props:[yn(o,/:(plac\w+)/,Di+"input-$1")]})],i)}return""})}},eX=[JY],tX=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(S){var T=S.getAttribute("data-emotion");T.indexOf(" ")!==-1&&(document.head.appendChild(S),S.setAttribute("data-s",""))})}var i=t.stylisPlugins||eX,o={},a,s=[];a=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(S){for(var T=S.getAttribute("data-emotion").split(" "),E=1;E=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var fX={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},hX=/[A-Z]|^ms/g,pX=/_EMO_([^_]+?)_([^]*?)_EMO_/g,tO=function(t){return t.charCodeAt(1)===45},OE=function(t){return t!=null&&typeof t!="boolean"},Ib=qR(function(e){return tO(e)?e:e.replace(hX,"-$&").toLowerCase()}),NE=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(pX,function(r,i,o){return al={name:i,styles:o,next:al},i})}return fX[t]!==1&&!tO(t)&&typeof n=="number"&&n!==0?n+"px":n};function Om(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return al={name:n.name,styles:n.styles,next:al},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)al={name:r.name,styles:r.styles,next:al},r=r.next;var i=n.styles+";";return i}return gX(e,t,n)}case"function":{if(e!==void 0){var o=al,a=n(e);return al=o,Om(e,t,a)}break}}if(t==null)return n;var s=t[n];return s!==void 0?s:n}function gX(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i{t.includes(r)||(n[r]=e[r])}),n}function IX(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,a)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const s=t.get(r);if(s.has(i))return s.get(i);const l=e(r,i,o,a);return s.set(i,l),l}},lO=MX(IX);function uO(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var cO=e=>uO(e,t=>t!=null);function RX(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var OX=RX();function dO(e,...t){return LX(e)?e(...t):e}function NX(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}Object.freeze(["base","sm","md","lg","xl","2xl"]);function DX(e={}){const{strict:t=!0,errorMessage:n="useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",name:r}=e,i=C.exports.createContext(void 0);i.displayName=r;function o(){var a;const s=C.exports.useContext(i);if(!s&&t){const l=new Error(n);throw l.name="ContextError",(a=Error.captureStackTrace)==null||a.call(Error,l,o),l}return s}return[i.Provider,o,i]}var zX=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,FX=qR(function(e){return zX.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),BX=FX,$X=function(t){return t!=="theme"},BE=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?BX:$X},$E=function(t,n,r){var i;if(n){var o=n.shouldForwardProp;i=t.__emotion_forwardProp&&o?function(a){return t.__emotion_forwardProp(a)&&o(a)}:o}return typeof i!="function"&&r&&(i=t.__emotion_forwardProp),i},HX=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return JR(n,r,i),vX(function(){return eO(n,r,i)}),null},WX=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,o,a;n!==void 0&&(o=n.label,a=n.target);var s=$E(t,n,r),l=s||BE(i),c=!l("as");return function(){var p=arguments,g=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(o!==void 0&&g.push("label:"+o+";"),p[0]==null||p[0].raw===void 0)g.push.apply(g,p);else{g.push(p[0][0]);for(var m=p.length,y=1;y[g,m.selector]))}function s(){return Object.fromEntries(Object.entries(t).map(([g,m])=>[g,m.className]))}function l(p){const y=`chakra-${(["container","root"].includes(p??"")?[e]:[e,p]).filter(Boolean).join("__")}`;return{className:y,selector:`.${y}`,toString:()=>p}}return{parts:i,toPart:l,extend:o,selectors:a,classnames:s,get keys(){return Object.keys(t)},__type:{}}}var UX=Pn("accordion").parts("root","container","button","panel").extend("icon"),GX=Pn("alert").parts("title","description","container").extend("icon","spinner"),jX=Pn("avatar").parts("label","badge","container").extend("excessLabel","group"),qX=Pn("breadcrumb").parts("link","item","container").extend("separator");Pn("button").parts();var KX=Pn("checkbox").parts("control","icon","container").extend("label");Pn("progress").parts("track","filledTrack").extend("label");var ZX=Pn("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),YX=Pn("editable").parts("preview","input","textarea"),XX=Pn("form").parts("container","requiredIndicator","helperText"),QX=Pn("formError").parts("text","icon"),JX=Pn("input").parts("addon","field","element"),eQ=Pn("list").parts("container","item","icon"),tQ=Pn("menu").parts("button","list","item").extend("groupTitle","command","divider"),nQ=Pn("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),rQ=Pn("numberinput").parts("root","field","stepperGroup","stepper");Pn("pininput").parts("field");var iQ=Pn("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),oQ=Pn("progress").parts("label","filledTrack","track"),aQ=Pn("radio").parts("container","control","label"),sQ=Pn("select").parts("field","icon"),lQ=Pn("slider").parts("container","track","thumb","filledTrack","mark"),uQ=Pn("stat").parts("container","label","helpText","number","icon"),cQ=Pn("switch").parts("container","track","thumb"),dQ=Pn("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),fQ=Pn("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),hQ=Pn("tag").parts("container","label","closeButton");function Ti(e,t){pQ(e)&&(e="100%");var n=gQ(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function U2(e){return Math.min(1,Math.max(0,e))}function pQ(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function gQ(e){return typeof e=="string"&&e.indexOf("%")!==-1}function fO(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function G2(e){return e<=1?"".concat(Number(e)*100,"%"):e}function bf(e){return e.length===1?"0"+e:String(e)}function mQ(e,t,n){return{r:Ti(e,255)*255,g:Ti(t,255)*255,b:Ti(n,255)*255}}function HE(e,t,n){e=Ti(e,255),t=Ti(t,255),n=Ti(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=0,s=(r+i)/2;if(r===i)a=0,o=0;else{var l=r-i;switch(a=s>.5?l/(2-r-i):l/(r+i),r){case e:o=(t-n)/l+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function vQ(e,t,n){var r,i,o;if(e=Ti(e,360),t=Ti(t,100),n=Ti(n,100),t===0)i=n,o=n,r=n;else{var a=n<.5?n*(1+t):n+t-n*t,s=2*n-a;r=Mb(s,a,e+1/3),i=Mb(s,a,e),o=Mb(s,a,e-1/3)}return{r:r*255,g:i*255,b:o*255}}function WE(e,t,n){e=Ti(e,255),t=Ti(t,255),n=Ti(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=r,s=r-i,l=r===0?0:s/r;if(r===i)o=0;else{switch(r){case e:o=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var e6={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function wQ(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,o=null,a=!1,s=!1;return typeof e=="string"&&(e=kQ(e)),typeof e=="object"&&(Zl(e.r)&&Zl(e.g)&&Zl(e.b)?(t=mQ(e.r,e.g,e.b),a=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):Zl(e.h)&&Zl(e.s)&&Zl(e.v)?(r=G2(e.s),i=G2(e.v),t=yQ(e.h,r,i),a=!0,s="hsv"):Zl(e.h)&&Zl(e.s)&&Zl(e.l)&&(r=G2(e.s),o=G2(e.l),t=vQ(e.h,r,o),a=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=fO(n),{ok:a,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var CQ="[-\\+]?\\d+%?",_Q="[-\\+]?\\d*\\.\\d+%?",Ic="(?:".concat(_Q,")|(?:").concat(CQ,")"),Rb="[\\s|\\(]+(".concat(Ic,")[,|\\s]+(").concat(Ic,")[,|\\s]+(").concat(Ic,")\\s*\\)?"),Ob="[\\s|\\(]+(".concat(Ic,")[,|\\s]+(").concat(Ic,")[,|\\s]+(").concat(Ic,")[,|\\s]+(").concat(Ic,")\\s*\\)?"),us={CSS_UNIT:new RegExp(Ic),rgb:new RegExp("rgb"+Rb),rgba:new RegExp("rgba"+Ob),hsl:new RegExp("hsl"+Rb),hsla:new RegExp("hsla"+Ob),hsv:new RegExp("hsv"+Rb),hsva:new RegExp("hsva"+Ob),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function kQ(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(e6[e])e=e6[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=us.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=us.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=us.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=us.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=us.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=us.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=us.hex8.exec(e),n?{r:Yo(n[1]),g:Yo(n[2]),b:Yo(n[3]),a:UE(n[4]),format:t?"name":"hex8"}:(n=us.hex6.exec(e),n?{r:Yo(n[1]),g:Yo(n[2]),b:Yo(n[3]),format:t?"name":"hex"}:(n=us.hex4.exec(e),n?{r:Yo(n[1]+n[1]),g:Yo(n[2]+n[2]),b:Yo(n[3]+n[3]),a:UE(n[4]+n[4]),format:t?"name":"hex8"}:(n=us.hex3.exec(e),n?{r:Yo(n[1]+n[1]),g:Yo(n[2]+n[2]),b:Yo(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function Zl(e){return Boolean(us.CSS_UNIT.exec(String(e)))}var pv=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t=="number"&&(t=SQ(t)),this.originalInput=t;var i=wQ(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,i,o=t.r/255,a=t.g/255,s=t.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=fO(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.toHsv=function(){var t=WE(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=WE(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=HE(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=HE(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),VE(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),xQ(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(r,")"):"rgba(".concat(t,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(Ti(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(Ti(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+VE(this.r,this.g,this.b,!1),n=0,r=Object.entries(e6);n=0,o=!n&&i&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=U2(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=U2(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=U2(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=U2(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),o=n/100,a={r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a};return new e(a)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,o=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/t;t--;)a.push(new e({h:r,s:i,v:o})),o=(o+s)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb();return new e({r:r.r+(n.r-r.r)*n.a,g:r.g+(n.g-r.g)*n.a,b:r.b+(n.b-r.b)*n.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],o=360/t,a=1;an.length;)e.count=null,e.seed&&(e.seed+=1),n.push(hO(e));return e.count=t,n}var r=EQ(e.hue,e.seed),i=PQ(r,e),o=TQ(r,i,e),a={h:r,s:i,v:o};return e.alpha!==void 0&&(a.a=e.alpha),new pv(a)}function EQ(e,t){var n=AQ(e),r=Q3(n,t);return r<0&&(r=360+r),r}function PQ(e,t){if(t.hue==="monochrome")return 0;if(t.luminosity==="random")return Q3([0,100],t.seed);var n=pO(e).saturationRange,r=n[0],i=n[1];switch(t.luminosity){case"bright":r=55;break;case"dark":r=i-10;break;case"light":i=55;break}return Q3([r,i],t.seed)}function TQ(e,t,n){var r=LQ(e,t),i=100;switch(n.luminosity){case"dark":i=r+20;break;case"light":r=(i+r)/2;break;case"random":r=0,i=100;break}return Q3([r,i],n.seed)}function LQ(e,t){for(var n=pO(e).lowerBounds,r=0;r=i&&t<=a){var l=(s-o)/(a-i),c=o-l*i;return l*t+c}}return 0}function AQ(e){var t=parseInt(e,10);if(!Number.isNaN(t)&&t<360&&t>0)return[t,t];if(typeof e=="string"){var n=mO.find(function(a){return a.name===e});if(n){var r=gO(n);if(r.hueRange)return r.hueRange}var i=new pv(e);if(i.isValid){var o=i.toHsv().h;return[o,o]}}return[0,360]}function pO(e){e>=334&&e<=360&&(e-=360);for(var t=0,n=mO;t=i.hueRange[0]&&e<=i.hueRange[1])return i}throw Error("Color not found")}function Q3(e,t){if(t===void 0)return Math.floor(e[0]+Math.random()*(e[1]+1-e[0]));var n=e[1]||1,r=e[0]||0;t=(t*9301+49297)%233280;var i=t/233280;return Math.floor(r+i*(n-r))}function gO(e){var t=e.lowerBounds[0][0],n=e.lowerBounds[e.lowerBounds.length-1][0],r=e.lowerBounds[e.lowerBounds.length-1][1],i=e.lowerBounds[0][1];return{name:e.name,hueRange:e.hueRange,lowerBounds:e.lowerBounds,saturationRange:[t,n],brightnessRange:[r,i]}}var mO=[{name:"monochrome",hueRange:null,lowerBounds:[[0,0],[100,0]]},{name:"red",hueRange:[-26,18],lowerBounds:[[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]},{name:"orange",hueRange:[19,46],lowerBounds:[[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]},{name:"yellow",hueRange:[47,62],lowerBounds:[[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]},{name:"green",hueRange:[63,178],lowerBounds:[[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]},{name:"blue",hueRange:[179,257],lowerBounds:[[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]},{name:"purple",hueRange:[258,282],lowerBounds:[[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]},{name:"pink",hueRange:[283,334],lowerBounds:[[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]}];function IQ(e,t,n,r,i){for(t=t.split?t.split("."):t,r=0;rObject.keys(e).length===0,Ei=(e,t,n)=>{const r=IQ(e,`colors.${t}`,t),{isValid:i}=new pv(r);return i?r:n},RQ=e=>t=>{const n=Ei(t,e);return new pv(n).isDark()?"dark":"light"},OQ=e=>t=>RQ(e)(t)==="dark",p0=(e,t)=>n=>{const r=Ei(n,e);return new pv(r).setAlpha(t).toRgbString()};function GE(e="1rem",t="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( - 45deg, - ${t} 25%, - transparent 25%, - transparent 50%, - ${t} 50%, - ${t} 75%, - transparent 75%, - transparent - )`,backgroundSize:`${e} ${e}`}}function NQ(e){const t=hO().toHexString();return!e||MQ(e)?t:e.string&&e.colors?zQ(e.string,e.colors):e.string&&!e.colors?DQ(e.string):e.colors&&!e.string?FQ(e.colors):t}function DQ(e){let t=0;if(e.length===0)return t.toString();for(let r=0;r>r*8&255;n+=`00${i.toString(16)}`.substr(-2)}return n}function zQ(e,t){let n=0;if(e.length===0)return t[0];for(let r=0;rn.colorMode==="dark"?t:e}function X9(e){const{orientation:t,vertical:n,horizontal:r}=e;return t?t==="vertical"?n:r:{}}function BQ(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}function vO(e){return BQ(e)&&e.reference?e.reference:String(e)}var C5=(e,...t)=>t.map(vO).join(` ${e} `).replace(/calc/g,""),jE=(...e)=>`calc(${C5("+",...e)})`,qE=(...e)=>`calc(${C5("-",...e)})`,t6=(...e)=>`calc(${C5("*",...e)})`,KE=(...e)=>`calc(${C5("/",...e)})`,ZE=e=>{const t=vO(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:t6(t,-1)},nu=Object.assign(e=>({add:(...t)=>nu(jE(e,...t)),subtract:(...t)=>nu(qE(e,...t)),multiply:(...t)=>nu(t6(e,...t)),divide:(...t)=>nu(KE(e,...t)),negate:()=>nu(ZE(e)),toString:()=>e.toString()}),{add:jE,subtract:qE,multiply:t6,divide:KE,negate:ZE});function $Q(e){return!Number.isInteger(parseFloat(e.toString()))}function HQ(e,t="-"){return e.replace(/\s+/g,t)}function yO(e){const t=HQ(e.toString());return t.includes("\\.")?e:$Q(e)?t.replace(".","\\."):e}function WQ(e,t=""){return[t,yO(e)].filter(Boolean).join("-")}function VQ(e,t){return`var(${yO(e)}${t?`, ${t}`:""})`}function UQ(e,t=""){return`--${WQ(e,t)}`}function Ao(e,t){const n=UQ(e,t?.prefix);return{variable:n,reference:VQ(n,GQ(t?.fallback))}}function GQ(e){return typeof e=="string"?e:e?.reference}var{definePartsStyle:jQ,defineMultiStyleConfig:qQ}=nr(UX.keys),KQ={borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}},ZQ={transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"},YQ={pt:"2",px:"4",pb:"5"},XQ={fontSize:"1.25em"},QQ=jQ({container:KQ,button:ZQ,panel:YQ,icon:XQ}),JQ=qQ({baseStyle:QQ}),{definePartsStyle:gv,defineMultiStyleConfig:eJ}=nr(GX.keys),ra=da("alert-fg"),hu=da("alert-bg"),tJ=gv({container:{bg:hu.reference,px:"4",py:"3"},title:{fontWeight:"bold",lineHeight:"6",marginEnd:"2"},description:{lineHeight:"6"},icon:{color:ra.reference,flexShrink:0,marginEnd:"3",w:"5",h:"6"},spinner:{color:ra.reference,flexShrink:0,marginEnd:"3",w:"5",h:"5"}});function Q9(e){const{theme:t,colorScheme:n}=e,r=p0(`${n}.200`,.16)(t);return{light:`colors.${n}.100`,dark:r}}var nJ=gv(e=>{const{colorScheme:t}=e,n=Q9(e);return{container:{[ra.variable]:`colors.${t}.500`,[hu.variable]:n.light,_dark:{[ra.variable]:`colors.${t}.200`,[hu.variable]:n.dark}}}}),rJ=gv(e=>{const{colorScheme:t}=e,n=Q9(e);return{container:{[ra.variable]:`colors.${t}.500`,[hu.variable]:n.light,_dark:{[ra.variable]:`colors.${t}.200`,[hu.variable]:n.dark},paddingStart:"3",borderStartWidth:"4px",borderStartColor:ra.reference}}}),iJ=gv(e=>{const{colorScheme:t}=e,n=Q9(e);return{container:{[ra.variable]:`colors.${t}.500`,[hu.variable]:n.light,_dark:{[ra.variable]:`colors.${t}.200`,[hu.variable]:n.dark},pt:"2",borderTopWidth:"4px",borderTopColor:ra.reference}}}),oJ=gv(e=>{const{colorScheme:t}=e;return{container:{[ra.variable]:"colors.white",[hu.variable]:`colors.${t}.500`,_dark:{[ra.variable]:"colors.gray.900",[hu.variable]:`colors.${t}.200`},color:ra.reference}}}),aJ={subtle:nJ,"left-accent":rJ,"top-accent":iJ,solid:oJ},sJ=eJ({baseStyle:tJ,variants:aJ,defaultProps:{variant:"subtle",colorScheme:"blue"}}),xO={px:"1px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},lJ={max:"max-content",min:"min-content",full:"100%","3xs":"14rem","2xs":"16rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem","8xl":"90rem",prose:"60ch"},uJ={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},cJ={...xO,...lJ,container:uJ},bO=cJ,dJ=e=>typeof e=="function";function wr(e,...t){return dJ(e)?e(...t):e}var{definePartsStyle:SO,defineMultiStyleConfig:fJ}=nr(jX.keys),Up=da("avatar-border-color"),Nb=da("avatar-bg"),hJ={borderRadius:"full",border:"0.2em solid",[Up.variable]:"white",_dark:{[Up.variable]:"colors.gray.800"},borderColor:Up.reference},pJ={[Nb.variable]:"colors.gray.200",_dark:{[Nb.variable]:"colors.whiteAlpha.400"},bgColor:Nb.reference},YE=da("avatar-background"),gJ=e=>{const{name:t,theme:n}=e,r=t?NQ({string:t}):"colors.gray.400",i=OQ(r)(n);let o="white";return i||(o="gray.800"),{bg:YE.reference,"&:not([data-loaded])":{[YE.variable]:r},color:o,[Up.variable]:"colors.white",_dark:{[Up.variable]:"colors.gray.800"},borderColor:Up.reference,verticalAlign:"top"}},mJ=SO(e=>({badge:wr(hJ,e),excessLabel:wr(pJ,e),container:wr(gJ,e)}));function mc(e){const t=e!=="100%"?bO[e]:void 0;return SO({container:{width:e,height:e,fontSize:`calc(${t??e} / 2.5)`},excessLabel:{width:e,height:e},label:{fontSize:`calc(${t??e} / 2.5)`,lineHeight:e!=="100%"?t??e:void 0}})}var vJ={"2xs":mc(4),xs:mc(6),sm:mc(8),md:mc(12),lg:mc(16),xl:mc(24),"2xl":mc(32),full:mc("100%")},yJ=fJ({baseStyle:mJ,sizes:vJ,defaultProps:{size:"md"}}),xJ={px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold"},Gp=da("badge-bg"),dl=da("badge-color"),bJ=e=>{const{colorScheme:t,theme:n}=e,r=p0(`${t}.500`,.6)(n);return{[Gp.variable]:`colors.${t}.500`,[dl.variable]:"colors.white",_dark:{[Gp.variable]:r,[dl.variable]:"colors.whiteAlpha.800"},bg:Gp.reference,color:dl.reference}},SJ=e=>{const{colorScheme:t,theme:n}=e,r=p0(`${t}.200`,.16)(n);return{[Gp.variable]:`colors.${t}.100`,[dl.variable]:`colors.${t}.800`,_dark:{[Gp.variable]:r,[dl.variable]:`colors.${t}.200`},bg:Gp.reference,color:dl.reference}},wJ=e=>{const{colorScheme:t,theme:n}=e,r=p0(`${t}.200`,.8)(n);return{[dl.variable]:`colors.${t}.500`,_dark:{[dl.variable]:r},color:dl.reference,boxShadow:`inset 0 0 0px 1px ${dl.reference}`}},CJ={solid:bJ,subtle:SJ,outline:wJ},Zg={baseStyle:xJ,variants:CJ,defaultProps:{variant:"subtle",colorScheme:"gray"}},{defineMultiStyleConfig:_J,definePartsStyle:kJ}=nr(qX.keys),EJ={transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}},PJ=kJ({link:EJ}),TJ=_J({baseStyle:PJ}),LJ={lineHeight:"1.2",borderRadius:"md",fontWeight:"semibold",transitionProperty:"common",transitionDuration:"normal",_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{_disabled:{bg:"initial"}}},wO=e=>{const{colorScheme:t,theme:n}=e;if(t==="gray")return{color:Ie("inherit","whiteAlpha.900")(e),_hover:{bg:Ie("gray.100","whiteAlpha.200")(e)},_active:{bg:Ie("gray.200","whiteAlpha.300")(e)}};const r=p0(`${t}.200`,.12)(n),i=p0(`${t}.200`,.24)(n);return{color:Ie(`${t}.600`,`${t}.200`)(e),bg:"transparent",_hover:{bg:Ie(`${t}.50`,r)(e)},_active:{bg:Ie(`${t}.100`,i)(e)}}},AJ=e=>{const{colorScheme:t}=e,n=Ie("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:t==="gray"?n:"currentColor",".chakra-button__group[data-attached] > &:not(:last-of-type)":{marginEnd:"-1px"},...wr(wO,e)}},IJ={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},MJ=e=>{const{colorScheme:t}=e;if(t==="gray"){const s=Ie("gray.100","whiteAlpha.200")(e);return{bg:s,_hover:{bg:Ie("gray.200","whiteAlpha.300")(e),_disabled:{bg:s}},_active:{bg:Ie("gray.300","whiteAlpha.400")(e)}}}const{bg:n=`${t}.500`,color:r="white",hoverBg:i=`${t}.600`,activeBg:o=`${t}.700`}=IJ[t]??{},a=Ie(n,`${t}.200`)(e);return{bg:a,color:Ie(r,"gray.800")(e),_hover:{bg:Ie(i,`${t}.300`)(e),_disabled:{bg:a}},_active:{bg:Ie(o,`${t}.400`)(e)}}},RJ=e=>{const{colorScheme:t}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:Ie(`${t}.500`,`${t}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:Ie(`${t}.700`,`${t}.500`)(e)}}},OJ={bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"},NJ={ghost:wO,outline:AJ,solid:MJ,link:RJ,unstyled:OJ},DJ={lg:{h:"12",minW:"12",fontSize:"lg",px:"6"},md:{h:"10",minW:"10",fontSize:"md",px:"4"},sm:{h:"8",minW:"8",fontSize:"sm",px:"3"},xs:{h:"6",minW:"6",fontSize:"xs",px:"2"}},zJ={baseStyle:LJ,variants:NJ,sizes:DJ,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}},{definePartsStyle:Yy,defineMultiStyleConfig:FJ}=nr(KX.keys),Yg=da("checkbox-size"),BJ=e=>{const{colorScheme:t}=e;return{w:Yg.reference,h:Yg.reference,transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:Ie(`${t}.500`,`${t}.200`)(e),borderColor:Ie(`${t}.500`,`${t}.200`)(e),color:Ie("white","gray.900")(e),_hover:{bg:Ie(`${t}.600`,`${t}.300`)(e),borderColor:Ie(`${t}.600`,`${t}.300`)(e)},_disabled:{borderColor:Ie("gray.200","transparent")(e),bg:Ie("gray.200","whiteAlpha.300")(e),color:Ie("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:Ie(`${t}.500`,`${t}.200`)(e),borderColor:Ie(`${t}.500`,`${t}.200`)(e),color:Ie("white","gray.900")(e)},_disabled:{bg:Ie("gray.100","whiteAlpha.100")(e),borderColor:Ie("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:Ie("red.500","red.300")(e)}}},$J={_disabled:{cursor:"not-allowed"}},HJ={userSelect:"none",_disabled:{opacity:.4}},WJ={transitionProperty:"transform",transitionDuration:"normal"},VJ=Yy(e=>({icon:WJ,container:$J,control:wr(BJ,e),label:HJ})),UJ={sm:Yy({control:{[Yg.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:Yy({control:{[Yg.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:Yy({control:{[Yg.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},J3=FJ({baseStyle:VJ,sizes:UJ,defaultProps:{size:"md",colorScheme:"blue"}}),Xg=Ao("close-button-size"),GJ=e=>{const t=Ie("blackAlpha.100","whiteAlpha.100")(e),n=Ie("blackAlpha.200","whiteAlpha.200")(e);return{w:[Xg.reference],h:[Xg.reference],borderRadius:"md",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{bg:t},_active:{bg:n},_focusVisible:{boxShadow:"outline"}}},jJ={lg:{[Xg.variable]:"sizes.10",fontSize:"md"},md:{[Xg.variable]:"sizes.8",fontSize:"xs"},sm:{[Xg.variable]:"sizes.6",fontSize:"2xs"}},qJ={baseStyle:GJ,sizes:jJ,defaultProps:{size:"md"}},{variants:KJ,defaultProps:ZJ}=Zg,YJ={fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm"},XJ={baseStyle:YJ,variants:KJ,defaultProps:ZJ},QJ={w:"100%",mx:"auto",maxW:"prose",px:"4"},JJ={baseStyle:QJ},eee={opacity:.6,borderColor:"inherit"},tee={borderStyle:"solid"},nee={borderStyle:"dashed"},ree={solid:tee,dashed:nee},iee={baseStyle:eee,variants:ree,defaultProps:{variant:"solid"}},{definePartsStyle:n6,defineMultiStyleConfig:oee}=nr(ZX.keys);function op(e){return n6(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var aee={bg:"blackAlpha.600",zIndex:"overlay"},see={display:"flex",zIndex:"modal",justifyContent:"center"},lee=e=>{const{isFullHeight:t}=e;return{...t&&{height:"100vh"},zIndex:"modal",maxH:"100vh",bg:Ie("white","gray.700")(e),color:"inherit",boxShadow:Ie("lg","dark-lg")(e)}},uee={px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"},cee={position:"absolute",top:"2",insetEnd:"3"},dee={px:"6",py:"2",flex:"1",overflow:"auto"},fee={px:"6",py:"4"},hee=n6(e=>({overlay:aee,dialogContainer:see,dialog:wr(lee,e),header:uee,closeButton:cee,body:dee,footer:fee})),pee={xs:op("xs"),sm:op("md"),md:op("lg"),lg:op("2xl"),xl:op("4xl"),full:op("full")},gee=oee({baseStyle:hee,sizes:pee,defaultProps:{size:"xs"}}),{definePartsStyle:mee,defineMultiStyleConfig:vee}=nr(YX.keys),yee={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"},xee={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}},bee={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}},See=mee({preview:yee,input:xee,textarea:bee}),wee=vee({baseStyle:See}),{definePartsStyle:Cee,defineMultiStyleConfig:_ee}=nr(XX.keys),kee=e=>({marginStart:"1",color:Ie("red.500","red.300")(e)}),Eee=e=>({mt:"2",color:Ie("gray.600","whiteAlpha.600")(e),lineHeight:"normal",fontSize:"sm"}),Pee=Cee(e=>({container:{width:"100%",position:"relative"},requiredIndicator:wr(kee,e),helperText:wr(Eee,e)})),Tee=_ee({baseStyle:Pee}),{definePartsStyle:Lee,defineMultiStyleConfig:Aee}=nr(QX.keys),Iee=e=>({color:Ie("red.500","red.300")(e),mt:"2",fontSize:"sm",lineHeight:"normal"}),Mee=e=>({marginEnd:"0.5em",color:Ie("red.500","red.300")(e)}),Ree=Lee(e=>({text:wr(Iee,e),icon:wr(Mee,e)})),Oee=Aee({baseStyle:Ree}),Nee={fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}},Dee={baseStyle:Nee},zee={fontFamily:"heading",fontWeight:"bold"},Fee={"4xl":{fontSize:["6xl",null,"7xl"],lineHeight:1},"3xl":{fontSize:["5xl",null,"6xl"],lineHeight:1},"2xl":{fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]},xl:{fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]},lg:{fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]},md:{fontSize:"xl",lineHeight:1.2},sm:{fontSize:"md",lineHeight:1.2},xs:{fontSize:"sm",lineHeight:1.2}},Bee={baseStyle:zee,sizes:Fee,defaultProps:{size:"xl"}},{definePartsStyle:ou,defineMultiStyleConfig:$ee}=nr(JX.keys),Hee=ou({field:{width:"100%",minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),vc={lg:{fontSize:"lg",px:"4",h:"12",borderRadius:"md"},md:{fontSize:"md",px:"4",h:"10",borderRadius:"md"},sm:{fontSize:"sm",px:"3",h:"8",borderRadius:"sm"},xs:{fontSize:"xs",px:"2",h:"6",borderRadius:"sm"}},Wee={lg:ou({field:vc.lg,addon:vc.lg}),md:ou({field:vc.md,addon:vc.md}),sm:ou({field:vc.sm,addon:vc.sm}),xs:ou({field:vc.xs,addon:vc.xs})};function J9(e){const{focusBorderColor:t,errorBorderColor:n}=e;return{focusBorderColor:t||Ie("blue.500","blue.300")(e),errorBorderColor:n||Ie("red.500","red.300")(e)}}var Vee=ou(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=J9(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:Ie("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:Ei(t,r),boxShadow:`0 0 0 1px ${Ei(t,r)}`},_focusVisible:{zIndex:1,borderColor:Ei(t,n),boxShadow:`0 0 0 1px ${Ei(t,n)}`}},addon:{border:"1px solid",borderColor:Ie("inherit","whiteAlpha.50")(e),bg:Ie("gray.100","whiteAlpha.300")(e)}}}),Uee=ou(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=J9(e);return{field:{border:"2px solid",borderColor:"transparent",bg:Ie("gray.100","whiteAlpha.50")(e),_hover:{bg:Ie("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:Ei(t,r)},_focusVisible:{bg:"transparent",borderColor:Ei(t,n)}},addon:{border:"2px solid",borderColor:"transparent",bg:Ie("gray.100","whiteAlpha.50")(e)}}}),Gee=ou(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=J9(e);return{field:{borderBottom:"1px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent",_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:Ei(t,r),boxShadow:`0px 1px 0px 0px ${Ei(t,r)}`},_focusVisible:{borderColor:Ei(t,n),boxShadow:`0px 1px 0px 0px ${Ei(t,n)}`}},addon:{borderBottom:"2px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent"}}}),jee=ou({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),qee={outline:Vee,filled:Uee,flushed:Gee,unstyled:jee},fn=$ee({baseStyle:Hee,sizes:Wee,variants:qee,defaultProps:{size:"md",variant:"outline"}}),Kee=e=>({bg:Ie("gray.100","whiteAlpha")(e),borderRadius:"md",borderWidth:"1px",borderBottomWidth:"3px",fontSize:"0.8em",fontWeight:"bold",lineHeight:"normal",px:"0.4em",whiteSpace:"nowrap"}),Zee={baseStyle:Kee},Yee={transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}},Xee={baseStyle:Yee},{defineMultiStyleConfig:Qee,definePartsStyle:Jee}=nr(eQ.keys),ete={marginEnd:"2",display:"inline",verticalAlign:"text-bottom"},tte=Jee({icon:ete}),nte=Qee({baseStyle:tte}),{defineMultiStyleConfig:rte,definePartsStyle:ite}=nr(tQ.keys),ote=e=>({bg:Ie("#fff","gray.700")(e),boxShadow:Ie("sm","dark-lg")(e),color:"inherit",minW:"3xs",py:"2",zIndex:1,borderRadius:"md",borderWidth:"1px"}),ate=e=>({py:"1.5",px:"3",transitionProperty:"background",transitionDuration:"ultra-fast",transitionTimingFunction:"ease-in",_focus:{bg:Ie("gray.100","whiteAlpha.100")(e)},_active:{bg:Ie("gray.200","whiteAlpha.200")(e)},_expanded:{bg:Ie("gray.100","whiteAlpha.100")(e)},_disabled:{opacity:.4,cursor:"not-allowed"}}),ste={mx:4,my:2,fontWeight:"semibold",fontSize:"sm"},lte={opacity:.6},ute={border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6},cte={transitionProperty:"common",transitionDuration:"normal"},dte=ite(e=>({button:cte,list:wr(ote,e),item:wr(ate,e),groupTitle:ste,command:lte,divider:ute})),fte=rte({baseStyle:dte}),{defineMultiStyleConfig:hte,definePartsStyle:r6}=nr(nQ.keys),pte={bg:"blackAlpha.600",zIndex:"modal"},gte=e=>{const{isCentered:t,scrollBehavior:n}=e;return{display:"flex",zIndex:"modal",justifyContent:"center",alignItems:t?"center":"flex-start",overflow:n==="inside"?"hidden":"auto"}},mte=e=>{const{scrollBehavior:t}=e;return{borderRadius:"md",bg:Ie("white","gray.700")(e),color:"inherit",my:"16",zIndex:"modal",maxH:t==="inside"?"calc(100% - 7.5rem)":void 0,boxShadow:Ie("lg","dark-lg")(e)}},vte={px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"},yte={position:"absolute",top:"2",insetEnd:"3"},xte=e=>{const{scrollBehavior:t}=e;return{px:"6",py:"2",flex:"1",overflow:t==="inside"?"auto":void 0}},bte={px:"6",py:"4"},Ste=r6(e=>({overlay:pte,dialogContainer:wr(gte,e),dialog:wr(mte,e),header:vte,closeButton:yte,body:wr(xte,e),footer:bte}));function ss(e){return r6(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var wte={xs:ss("xs"),sm:ss("sm"),md:ss("md"),lg:ss("lg"),xl:ss("xl"),"2xl":ss("2xl"),"3xl":ss("3xl"),"4xl":ss("4xl"),"5xl":ss("5xl"),"6xl":ss("6xl"),full:ss("full")},Cte=hte({baseStyle:Ste,sizes:wte,defaultProps:{size:"md"}}),_te={letterSpacings:{tighter:"-0.05em",tight:"-0.025em",normal:"0",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeights:{normal:"normal",none:1,shorter:1.25,short:1.375,base:1.5,tall:1.625,taller:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},fontWeights:{hairline:100,thin:200,light:300,normal:400,medium:500,semibold:600,bold:700,extrabold:800,black:900},fonts:{heading:'-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',body:'-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',mono:'SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace'},fontSizes:{"3xs":"0.45rem","2xs":"0.625rem",xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem","5xl":"3rem","6xl":"3.75rem","7xl":"4.5rem","8xl":"6rem","9xl":"8rem"}},CO=_te,{defineMultiStyleConfig:kte,definePartsStyle:_O}=nr(rQ.keys),eC=Ao("number-input-stepper-width"),kO=Ao("number-input-input-padding"),Ete=nu(eC).add("0.5rem").toString(),Pte={[eC.variable]:"sizes.6",[kO.variable]:Ete},Tte=e=>{var t;return((t=wr(fn.baseStyle,e))==null?void 0:t.field)??{}},Lte={width:[eC.reference]},Ate=e=>({borderStart:"1px solid",borderStartColor:Ie("inherit","whiteAlpha.300")(e),color:Ie("inherit","whiteAlpha.800")(e),_active:{bg:Ie("gray.200","whiteAlpha.300")(e)},_disabled:{opacity:.4,cursor:"not-allowed"}}),Ite=_O(e=>({root:Pte,field:wr(Tte,e)??{},stepperGroup:Lte,stepper:wr(Ate,e)??{}}));function j2(e){var t,n;const r=(t=fn.sizes)==null?void 0:t[e],i={lg:"md",md:"md",sm:"sm",xs:"sm"},o=((n=r.field)==null?void 0:n.fontSize)??"md",a=CO.fontSizes[o];return _O({field:{...r.field,paddingInlineEnd:kO.reference,verticalAlign:"top"},stepper:{fontSize:nu(a).multiply(.75).toString(),_first:{borderTopEndRadius:i[e]},_last:{borderBottomEndRadius:i[e],mt:"-1px",borderTopWidth:1}}})}var Mte={xs:j2("xs"),sm:j2("sm"),md:j2("md"),lg:j2("lg")},Rte=kte({baseStyle:Ite,sizes:Mte,variants:fn.variants,defaultProps:fn.defaultProps}),XE,Ote={...(XE=fn.baseStyle)==null?void 0:XE.field,textAlign:"center"},Nte={lg:{fontSize:"lg",w:12,h:12,borderRadius:"md"},md:{fontSize:"md",w:10,h:10,borderRadius:"md"},sm:{fontSize:"sm",w:8,h:8,borderRadius:"sm"},xs:{fontSize:"xs",w:6,h:6,borderRadius:"sm"}},QE,Dte={outline:e=>{var t,n;return((n=wr((t=fn.variants)==null?void 0:t.outline,e))==null?void 0:n.field)??{}},flushed:e=>{var t,n;return((n=wr((t=fn.variants)==null?void 0:t.flushed,e))==null?void 0:n.field)??{}},filled:e=>{var t,n;return((n=wr((t=fn.variants)==null?void 0:t.filled,e))==null?void 0:n.field)??{}},unstyled:((QE=fn.variants)==null?void 0:QE.unstyled.field)??{}},zte={baseStyle:Ote,sizes:Nte,variants:Dte,defaultProps:fn.defaultProps},{defineMultiStyleConfig:Fte,definePartsStyle:Bte}=nr(iQ.keys),Db=Ao("popper-bg"),$te=Ao("popper-arrow-bg"),Hte=Ao("popper-arrow-shadow-color"),Wte={zIndex:10},Vte=e=>{const t=Ie("white","gray.700")(e),n=Ie("gray.200","whiteAlpha.300")(e);return{[Db.variable]:`colors.${t}`,bg:Db.reference,[$te.variable]:Db.reference,[Hte.variable]:`colors.${n}`,width:"xs",border:"1px solid",borderColor:"inherit",borderRadius:"md",boxShadow:"sm",zIndex:"inherit",_focusVisible:{outline:0,boxShadow:"outline"}}},Ute={px:3,py:2,borderBottomWidth:"1px"},Gte={px:3,py:2},jte={px:3,py:2,borderTopWidth:"1px"},qte={position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2},Kte=Bte(e=>({popper:Wte,content:Vte(e),header:Ute,body:Gte,footer:jte,closeButton:qte})),Zte=Fte({baseStyle:Kte}),{defineMultiStyleConfig:Yte,definePartsStyle:kg}=nr(oQ.keys),Xte=e=>{const{colorScheme:t,theme:n,isIndeterminate:r,hasStripe:i}=e,o=Ie(GE(),GE("1rem","rgba(0,0,0,0.1)"))(e),a=Ie(`${t}.500`,`${t}.200`)(e),s=`linear-gradient( - to right, - transparent 0%, - ${Ei(n,a)} 50%, - transparent 100% - )`;return{...!r&&i&&o,...r?{bgImage:s}:{bgColor:a}}},Qte={lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"},Jte=e=>({bg:Ie("gray.100","whiteAlpha.300")(e)}),ene=e=>({transitionProperty:"common",transitionDuration:"slow",...Xte(e)}),tne=kg(e=>({label:Qte,filledTrack:ene(e),track:Jte(e)})),nne={xs:kg({track:{h:"1"}}),sm:kg({track:{h:"2"}}),md:kg({track:{h:"3"}}),lg:kg({track:{h:"4"}})},rne=Yte({sizes:nne,baseStyle:tne,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:ine,definePartsStyle:Xy}=nr(aQ.keys),one=e=>{var t;const n=(t=wr(J3.baseStyle,e))==null?void 0:t.control;return{...n,borderRadius:"full",_checked:{...n?._checked,_before:{content:'""',display:"inline-block",pos:"relative",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}}}},ane=Xy(e=>{var t,n,r,i;return{label:(n=(t=J3).baseStyle)==null?void 0:n.call(t,e).label,container:(i=(r=J3).baseStyle)==null?void 0:i.call(r,e).container,control:one(e)}}),sne={md:Xy({control:{w:"4",h:"4"},label:{fontSize:"md"}}),lg:Xy({control:{w:"5",h:"5"},label:{fontSize:"lg"}}),sm:Xy({control:{width:"3",height:"3"},label:{fontSize:"sm"}})},lne=ine({baseStyle:ane,sizes:sne,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:une,definePartsStyle:cne}=nr(sQ.keys),dne=e=>{var t;return{...(t=fn.baseStyle)==null?void 0:t.field,bg:Ie("white","gray.700")(e),appearance:"none",paddingBottom:"1px",lineHeight:"normal","> option, > optgroup":{bg:Ie("white","gray.700")(e)}}},fne={width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}},hne=cne(e=>({field:dne(e),icon:fne})),q2={paddingInlineEnd:"8"},JE,eP,tP,nP,rP,iP,oP,aP,pne={lg:{...(JE=fn.sizes)==null?void 0:JE.lg,field:{...(eP=fn.sizes)==null?void 0:eP.lg.field,...q2}},md:{...(tP=fn.sizes)==null?void 0:tP.md,field:{...(nP=fn.sizes)==null?void 0:nP.md.field,...q2}},sm:{...(rP=fn.sizes)==null?void 0:rP.sm,field:{...(iP=fn.sizes)==null?void 0:iP.sm.field,...q2}},xs:{...(oP=fn.sizes)==null?void 0:oP.xs,field:{...(aP=fn.sizes)==null?void 0:aP.xs.field,...q2},icon:{insetEnd:"1"}}},gne=une({baseStyle:hne,sizes:pne,variants:fn.variants,defaultProps:fn.defaultProps}),mne=da("skeleton-start-color"),vne=da("skeleton-end-color"),yne=e=>{const t=Ie("gray.100","gray.800")(e),n=Ie("gray.400","gray.600")(e),{startColor:r=t,endColor:i=n,theme:o}=e,a=Ei(o,r),s=Ei(o,i);return{[mne.variable]:a,[vne.variable]:s,opacity:.7,borderRadius:"2px",borderColor:a,background:s}},xne={baseStyle:yne},bne=e=>({borderRadius:"md",fontWeight:"semibold",_focusVisible:{boxShadow:"outline",padding:"4",position:"fixed",top:"6",insetStart:"6",bg:Ie("white","gray.700")(e)}}),Sne={baseStyle:bne},{defineMultiStyleConfig:wne,definePartsStyle:_5}=nr(lQ.keys),zm=da("slider-thumb-size"),Fm=da("slider-track-size"),Cne=e=>{const{orientation:t}=e;return{display:"inline-block",position:"relative",cursor:"pointer",_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"},...X9({orientation:t,vertical:{h:"100%"},horizontal:{w:"100%"}})}},_ne=e=>({...X9({orientation:e.orientation,horizontal:{h:Fm.reference},vertical:{w:Fm.reference}}),overflow:"hidden",borderRadius:"sm",bg:Ie("gray.200","whiteAlpha.200")(e),_disabled:{bg:Ie("gray.300","whiteAlpha.300")(e)}}),kne=e=>{const{orientation:t}=e;return{...X9({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",_active:{transform:"translateX(-50%) scale(1.15)"}},horizontal:{top:"50%",transform:"translateY(-50%)",_active:{transform:"translateY(-50%) scale(1.15)"}}}),w:zm.reference,h:zm.reference,display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",outline:0,zIndex:1,borderRadius:"full",bg:"white",boxShadow:"base",border:"1px solid",borderColor:"transparent",transitionProperty:"transform",transitionDuration:"normal",_focusVisible:{boxShadow:"outline"},_disabled:{bg:"gray.300"}}},Ene=e=>{const{colorScheme:t}=e;return{width:"inherit",height:"inherit",bg:Ie(`${t}.500`,`${t}.200`)(e)}},Pne=_5(e=>({container:Cne(e),track:_ne(e),thumb:kne(e),filledTrack:Ene(e)})),Tne=_5({container:{[zm.variable]:"sizes.4",[Fm.variable]:"sizes.1"}}),Lne=_5({container:{[zm.variable]:"sizes.3.5",[Fm.variable]:"sizes.1"}}),Ane=_5({container:{[zm.variable]:"sizes.2.5",[Fm.variable]:"sizes.0.5"}}),Ine={lg:Tne,md:Lne,sm:Ane},Mne=wne({baseStyle:Pne,sizes:Ine,defaultProps:{size:"md",colorScheme:"blue"}}),hf=Ao("spinner-size"),Rne={width:[hf.reference],height:[hf.reference]},One={xs:{[hf.variable]:"sizes.3"},sm:{[hf.variable]:"sizes.4"},md:{[hf.variable]:"sizes.6"},lg:{[hf.variable]:"sizes.8"},xl:{[hf.variable]:"sizes.12"}},Nne={baseStyle:Rne,sizes:One,defaultProps:{size:"md"}},{defineMultiStyleConfig:Dne,definePartsStyle:EO}=nr(uQ.keys),zne={fontWeight:"medium"},Fne={opacity:.8,marginBottom:"2"},Bne={verticalAlign:"baseline",fontWeight:"semibold"},$ne={marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"},Hne=EO({container:{},label:zne,helpText:Fne,number:Bne,icon:$ne}),Wne={md:EO({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},Vne=Dne({baseStyle:Hne,sizes:Wne,defaultProps:{size:"md"}}),{defineMultiStyleConfig:Une,definePartsStyle:Qy}=nr(cQ.keys),Qg=Ao("switch-track-width"),Lf=Ao("switch-track-height"),zb=Ao("switch-track-diff"),Gne=nu.subtract(Qg,Lf),i6=Ao("switch-thumb-x"),jne=e=>{const{colorScheme:t}=e;return{borderRadius:"full",p:"0.5",width:[Qg.reference],height:[Lf.reference],transitionProperty:"common",transitionDuration:"fast",bg:Ie("gray.300","whiteAlpha.400")(e),_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed"},_checked:{bg:Ie(`${t}.500`,`${t}.200`)(e)}}},qne={bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[Lf.reference],height:[Lf.reference],_checked:{transform:`translateX(${i6.reference})`}},Kne=Qy(e=>({container:{[zb.variable]:Gne,[i6.variable]:zb.reference,_rtl:{[i6.variable]:nu(zb).negate().toString()}},track:jne(e),thumb:qne})),Zne={sm:Qy({container:{[Qg.variable]:"1.375rem",[Lf.variable]:"sizes.3"}}),md:Qy({container:{[Qg.variable]:"1.875rem",[Lf.variable]:"sizes.4"}}),lg:Qy({container:{[Qg.variable]:"2.875rem",[Lf.variable]:"sizes.6"}})},Yne=Une({baseStyle:Kne,sizes:Zne,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Xne,definePartsStyle:jp}=nr(dQ.keys),Qne=jp({table:{fontVariantNumeric:"lining-nums tabular-nums",borderCollapse:"collapse",width:"full"},th:{fontFamily:"heading",fontWeight:"bold",textTransform:"uppercase",letterSpacing:"wider",textAlign:"start"},td:{textAlign:"start"},caption:{mt:4,fontFamily:"heading",textAlign:"center",fontWeight:"medium"}}),e4={"&[data-is-numeric=true]":{textAlign:"end"}},Jne=jp(e=>{const{colorScheme:t}=e;return{th:{color:Ie("gray.600","gray.400")(e),borderBottom:"1px",borderColor:Ie(`${t}.100`,`${t}.700`)(e),...e4},td:{borderBottom:"1px",borderColor:Ie(`${t}.100`,`${t}.700`)(e),...e4},caption:{color:Ie("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),ere=jp(e=>{const{colorScheme:t}=e;return{th:{color:Ie("gray.600","gray.400")(e),borderBottom:"1px",borderColor:Ie(`${t}.100`,`${t}.700`)(e),...e4},td:{borderBottom:"1px",borderColor:Ie(`${t}.100`,`${t}.700`)(e),...e4},caption:{color:Ie("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:Ie(`${t}.100`,`${t}.700`)(e)},td:{background:Ie(`${t}.100`,`${t}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),tre={simple:Jne,striped:ere,unstyled:{}},nre={sm:jp({th:{px:"4",py:"1",lineHeight:"4",fontSize:"xs"},td:{px:"4",py:"2",fontSize:"sm",lineHeight:"4"},caption:{px:"4",py:"2",fontSize:"xs"}}),md:jp({th:{px:"6",py:"3",lineHeight:"4",fontSize:"xs"},td:{px:"6",py:"4",lineHeight:"5"},caption:{px:"6",py:"2",fontSize:"sm"}}),lg:jp({th:{px:"8",py:"4",lineHeight:"5",fontSize:"sm"},td:{px:"8",py:"5",lineHeight:"6"},caption:{px:"6",py:"2",fontSize:"md"}})},rre=Xne({baseStyle:Qne,variants:tre,sizes:nre,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),{defineMultiStyleConfig:ire,definePartsStyle:ml}=nr(fQ.keys),ore=e=>{const{orientation:t}=e;return{display:t==="vertical"?"flex":"block"}},are=e=>{const{isFitted:t}=e;return{flex:t?1:void 0,transitionProperty:"common",transitionDuration:"normal",_focusVisible:{zIndex:1,boxShadow:"outline"},_disabled:{cursor:"not-allowed",opacity:.4}}},sre=e=>{const{align:t="start",orientation:n}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[t],flexDirection:n==="vertical"?"column":"row"}},lre={p:4},ure=ml(e=>({root:ore(e),tab:are(e),tablist:sre(e),tabpanel:lre})),cre={sm:ml({tab:{py:1,px:4,fontSize:"sm"}}),md:ml({tab:{fontSize:"md",py:2,px:4}}),lg:ml({tab:{fontSize:"lg",py:3,px:4}})},dre=ml(e=>{const{colorScheme:t,orientation:n}=e,r=n==="vertical",i=n==="vertical"?"borderStart":"borderBottom",o=r?"marginStart":"marginBottom";return{tablist:{[i]:"2px solid",borderColor:"inherit"},tab:{[i]:"2px solid",borderColor:"transparent",[o]:"-2px",_selected:{color:Ie(`${t}.600`,`${t}.300`)(e),borderColor:"currentColor"},_active:{bg:Ie("gray.200","whiteAlpha.300")(e)},_disabled:{_active:{bg:"none"}}}}}),fre=ml(e=>{const{colorScheme:t}=e;return{tab:{borderTopRadius:"md",border:"1px solid",borderColor:"transparent",mb:"-1px",_selected:{color:Ie(`${t}.600`,`${t}.300`)(e),borderColor:"inherit",borderBottomColor:Ie("white","gray.800")(e)}},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),hre=ml(e=>{const{colorScheme:t}=e;return{tab:{border:"1px solid",borderColor:"inherit",bg:Ie("gray.50","whiteAlpha.50")(e),mb:"-1px",_notLast:{marginEnd:"-1px"},_selected:{bg:Ie("#fff","gray.800")(e),color:Ie(`${t}.600`,`${t}.300`)(e),borderColor:"inherit",borderTopColor:"currentColor",borderBottomColor:"transparent"}},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),pre=ml(e=>{const{colorScheme:t,theme:n}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:Ei(n,`${t}.700`),bg:Ei(n,`${t}.100`)}}}}),gre=ml(e=>{const{colorScheme:t}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:Ie("gray.600","inherit")(e),_selected:{color:Ie("#fff","gray.800")(e),bg:Ie(`${t}.600`,`${t}.300`)(e)}}}}),mre=ml({}),vre={line:dre,enclosed:fre,"enclosed-colored":hre,"soft-rounded":pre,"solid-rounded":gre,unstyled:mre},yre=ire({baseStyle:ure,sizes:cre,variants:vre,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),{defineMultiStyleConfig:xre,definePartsStyle:Af}=nr(hQ.keys),bre={fontWeight:"medium",lineHeight:1.2,outline:0,borderRadius:"md",_focusVisible:{boxShadow:"outline"}},Sre={lineHeight:1.2,overflow:"visible"},wre={fontSize:"lg",w:"5",h:"5",transitionProperty:"common",transitionDuration:"normal",borderRadius:"full",marginStart:"1.5",marginEnd:"-1",opacity:.5,_disabled:{opacity:.4},_focusVisible:{boxShadow:"outline",bg:"rgba(0, 0, 0, 0.14)"},_hover:{opacity:.8},_active:{opacity:1}},Cre=Af({container:bre,label:Sre,closeButton:wre}),_re={sm:Af({container:{minH:"5",minW:"5",fontSize:"xs",px:"2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:Af({container:{minH:"6",minW:"6",fontSize:"sm",px:"2"}}),lg:Af({container:{minH:"8",minW:"8",fontSize:"md",px:"3"}})},kre={subtle:Af(e=>{var t;return{container:(t=Zg.variants)==null?void 0:t.subtle(e)}}),solid:Af(e=>{var t;return{container:(t=Zg.variants)==null?void 0:t.solid(e)}}),outline:Af(e=>{var t;return{container:(t=Zg.variants)==null?void 0:t.outline(e)}})},Ere=xre({variants:kre,baseStyle:Cre,sizes:_re,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),sP,Pre={...(sP=fn.baseStyle)==null?void 0:sP.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"},lP,Tre={outline:e=>{var t;return((t=fn.variants)==null?void 0:t.outline(e).field)??{}},flushed:e=>{var t;return((t=fn.variants)==null?void 0:t.flushed(e).field)??{}},filled:e=>{var t;return((t=fn.variants)==null?void 0:t.filled(e).field)??{}},unstyled:((lP=fn.variants)==null?void 0:lP.unstyled.field)??{}},uP,cP,dP,fP,Lre={xs:((uP=fn.sizes)==null?void 0:uP.xs.field)??{},sm:((cP=fn.sizes)==null?void 0:cP.sm.field)??{},md:((dP=fn.sizes)==null?void 0:dP.md.field)??{},lg:((fP=fn.sizes)==null?void 0:fP.lg.field)??{}},Are={baseStyle:Pre,sizes:Lre,variants:Tre,defaultProps:{size:"md",variant:"outline"}},Fb=Ao("tooltip-bg"),hP=Ao("tooltip-fg"),Ire=Ao("popper-arrow-bg"),Mre=e=>{const t=Ie("gray.700","gray.300")(e),n=Ie("whiteAlpha.900","gray.900")(e);return{bg:Fb.reference,color:hP.reference,[Fb.variable]:`colors.${t}`,[hP.variable]:`colors.${n}`,[Ire.variable]:Fb.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"}},Rre={baseStyle:Mre},Ore={Accordion:JQ,Alert:sJ,Avatar:yJ,Badge:Zg,Breadcrumb:TJ,Button:zJ,Checkbox:J3,CloseButton:qJ,Code:XJ,Container:JJ,Divider:iee,Drawer:gee,Editable:wee,Form:Tee,FormError:Oee,FormLabel:Dee,Heading:Bee,Input:fn,Kbd:Zee,Link:Xee,List:nte,Menu:fte,Modal:Cte,NumberInput:Rte,PinInput:zte,Popover:Zte,Progress:rne,Radio:lne,Select:gne,Skeleton:xne,SkipLink:Sne,Slider:Mne,Spinner:Nne,Stat:Vne,Switch:Yne,Table:rre,Tabs:yre,Tag:Ere,Textarea:Are,Tooltip:Rre},Nre={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},Dre=Nre,zre={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},Fre=zre,Bre={transparent:"transparent",current:"currentColor",black:"#000000",white:"#FFFFFF",whiteAlpha:{50:"rgba(255, 255, 255, 0.04)",100:"rgba(255, 255, 255, 0.06)",200:"rgba(255, 255, 255, 0.08)",300:"rgba(255, 255, 255, 0.16)",400:"rgba(255, 255, 255, 0.24)",500:"rgba(255, 255, 255, 0.36)",600:"rgba(255, 255, 255, 0.48)",700:"rgba(255, 255, 255, 0.64)",800:"rgba(255, 255, 255, 0.80)",900:"rgba(255, 255, 255, 0.92)"},blackAlpha:{50:"rgba(0, 0, 0, 0.04)",100:"rgba(0, 0, 0, 0.06)",200:"rgba(0, 0, 0, 0.08)",300:"rgba(0, 0, 0, 0.16)",400:"rgba(0, 0, 0, 0.24)",500:"rgba(0, 0, 0, 0.36)",600:"rgba(0, 0, 0, 0.48)",700:"rgba(0, 0, 0, 0.64)",800:"rgba(0, 0, 0, 0.80)",900:"rgba(0, 0, 0, 0.92)"},gray:{50:"#F7FAFC",100:"#EDF2F7",200:"#E2E8F0",300:"#CBD5E0",400:"#A0AEC0",500:"#718096",600:"#4A5568",700:"#2D3748",800:"#1A202C",900:"#171923"},red:{50:"#FFF5F5",100:"#FED7D7",200:"#FEB2B2",300:"#FC8181",400:"#F56565",500:"#E53E3E",600:"#C53030",700:"#9B2C2C",800:"#822727",900:"#63171B"},orange:{50:"#FFFAF0",100:"#FEEBC8",200:"#FBD38D",300:"#F6AD55",400:"#ED8936",500:"#DD6B20",600:"#C05621",700:"#9C4221",800:"#7B341E",900:"#652B19"},yellow:{50:"#FFFFF0",100:"#FEFCBF",200:"#FAF089",300:"#F6E05E",400:"#ECC94B",500:"#D69E2E",600:"#B7791F",700:"#975A16",800:"#744210",900:"#5F370E"},green:{50:"#F0FFF4",100:"#C6F6D5",200:"#9AE6B4",300:"#68D391",400:"#48BB78",500:"#38A169",600:"#2F855A",700:"#276749",800:"#22543D",900:"#1C4532"},teal:{50:"#E6FFFA",100:"#B2F5EA",200:"#81E6D9",300:"#4FD1C5",400:"#38B2AC",500:"#319795",600:"#2C7A7B",700:"#285E61",800:"#234E52",900:"#1D4044"},blue:{50:"#ebf8ff",100:"#bee3f8",200:"#90cdf4",300:"#63b3ed",400:"#4299e1",500:"#3182ce",600:"#2b6cb0",700:"#2c5282",800:"#2a4365",900:"#1A365D"},cyan:{50:"#EDFDFD",100:"#C4F1F9",200:"#9DECF9",300:"#76E4F7",400:"#0BC5EA",500:"#00B5D8",600:"#00A3C4",700:"#0987A0",800:"#086F83",900:"#065666"},purple:{50:"#FAF5FF",100:"#E9D8FD",200:"#D6BCFA",300:"#B794F4",400:"#9F7AEA",500:"#805AD5",600:"#6B46C1",700:"#553C9A",800:"#44337A",900:"#322659"},pink:{50:"#FFF5F7",100:"#FED7E2",200:"#FBB6CE",300:"#F687B3",400:"#ED64A6",500:"#D53F8C",600:"#B83280",700:"#97266D",800:"#702459",900:"#521B41"},linkedin:{50:"#E8F4F9",100:"#CFEDFB",200:"#9BDAF3",300:"#68C7EC",400:"#34B3E4",500:"#00A0DC",600:"#008CC9",700:"#0077B5",800:"#005E93",900:"#004471"},facebook:{50:"#E8F4F9",100:"#D9DEE9",200:"#B7C2DA",300:"#6482C0",400:"#4267B2",500:"#385898",600:"#314E89",700:"#29487D",800:"#223B67",900:"#1E355B"},messenger:{50:"#D0E6FF",100:"#B9DAFF",200:"#A2CDFF",300:"#7AB8FF",400:"#2E90FF",500:"#0078FF",600:"#0063D1",700:"#0052AC",800:"#003C7E",900:"#002C5C"},whatsapp:{50:"#dffeec",100:"#b9f5d0",200:"#90edb3",300:"#65e495",400:"#3cdd78",500:"#22c35e",600:"#179848",700:"#0c6c33",800:"#01421c",900:"#001803"},twitter:{50:"#E5F4FD",100:"#C8E9FB",200:"#A8DCFA",300:"#83CDF7",400:"#57BBF5",500:"#1DA1F2",600:"#1A94DA",700:"#1681BF",800:"#136B9E",900:"#0D4D71"},telegram:{50:"#E3F2F9",100:"#C5E4F3",200:"#A2D4EC",300:"#7AC1E4",400:"#47A9DA",500:"#0088CC",600:"#007AB8",700:"#006BA1",800:"#005885",900:"#003F5E"}},$re=Bre,Hre={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},Wre=Hre,Vre={xs:"0 0 0 1px rgba(0, 0, 0, 0.05)",sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",outline:"0 0 0 3px rgba(66, 153, 225, 0.6)",inner:"inset 0 2px 4px 0 rgba(0,0,0,0.06)",none:"none","dark-lg":"rgba(0, 0, 0, 0.1) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px 5px 10px, rgba(0, 0, 0, 0.4) 0px 15px 40px"},Ure=Vre,Gre={common:"background-color, border-color, color, fill, stroke, opacity, box-shadow, transform",colors:"background-color, border-color, color, fill, stroke",dimensions:"width, height",position:"left, right, top, bottom",background:"background-color, background-image, background-position"},jre={"ease-in":"cubic-bezier(0.4, 0, 1, 1)","ease-out":"cubic-bezier(0, 0, 0.2, 1)","ease-in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},qre={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},Kre={property:Gre,easing:jre,duration:qre},Zre=Kre,Yre={hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800},Xre=Yre,Qre={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},Jre=Qre,eie={breakpoints:Fre,zIndices:Xre,radii:Wre,blur:Jre,colors:$re,...CO,sizes:bO,shadows:Ure,space:xO,borders:Dre,transition:Zre},tie={colors:{"chakra-body-text":{_light:"gray.800",_dark:"whiteAlpha.900"},"chakra-body-bg":{_light:"white",_dark:"gray.800"},"chakra-border-color":{_light:"gray.200",_dark:"whiteAlpha.300"},"chakra-placeholder-color":{_light:"gray.500",_dark:"whiteAlpha.400"}}},nie={global:{body:{fontFamily:"body",color:"chakra-body-text",bg:"chakra-body-bg",transitionProperty:"background-color",transitionDuration:"normal",lineHeight:"base"},"*::placeholder":{color:"chakra-placeholder-color"},"*, *::before, &::after":{borderColor:"chakra-border-color",wordWrap:"break-word"}}};function rie(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var iie=["borders","breakpoints","colors","components","config","direction","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","shadows","sizes","space","styles","transition","zIndices"];function oie(e){return rie(e)?iie.every(t=>Object.prototype.hasOwnProperty.call(e,t)):!1}var aie="ltr",sie={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},PO={semanticTokens:tie,direction:aie,...eie,components:Ore,styles:nie,config:sie};function Eg(e){return typeof e=="function"}function lie(...e){return t=>e.reduce((n,r)=>r(n),t)}function uie(...e){let t=[...e],n=e[e.length-1];return oie(n)&&t.length>1?t=t.slice(0,t.length-1):n=PO,lie(...t.map(r=>i=>Eg(r)?r(i):cie(i,r)))(n)}function cie(...e){return Ma({},...e,TO)}function TO(e,t,n,r){if((Eg(e)||Eg(t))&&Object.prototype.hasOwnProperty.call(r,n))return(...i)=>{const o=Eg(e)?e(...i):e,a=Eg(t)?t(...i):t;return Ma({},o,a,TO)}}var die=typeof Element<"u",fie=typeof Map=="function",hie=typeof Set=="function",pie=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Jy(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Jy(e[r],t[r]))return!1;return!0}var o;if(fie&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;for(o=e.entries();!(r=o.next()).done;)if(!Jy(r.value[1],t.get(r.value[0])))return!1;return!0}if(hie&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(pie&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;if(die&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!Jy(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var gie=function(t,n){try{return Jy(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};function A0(){const e=C.exports.useContext(Nm);if(!e)throw Error("useTheme: `theme` is undefined. Seems you forgot to wrap your app in `` or ``");return e}function LO(){const e=o5(),t=A0();return{...e,theme:t}}function mie(e,t,n){if(t==null)return t;const r=i=>{var o,a;return(a=(o=e.__breakpoints)==null?void 0:o.asArray)==null?void 0:a[i]};return r(t)??r(n)??n}function vie(e,t,n){if(t==null)return t;const r=i=>{var o,a;return(a=(o=e.__cssMap)==null?void 0:o[i])==null?void 0:a.value};return r(t)??r(n)??n}function yie(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const a=i.filter(Boolean),s=r.map((l,c)=>{if(e==="breakpoints")return mie(o,l,a[c]??l);const p=`${e}.${l}`;return vie(o,p,a[c]??l)});return Array.isArray(t)?s:s[0]}}function xie(e){const{cssVarsRoot:t,theme:n,children:r}=e,i=C.exports.useMemo(()=>dY(n),[n]);return ne(bX,{theme:i,children:[w(bie,{root:t}),r]})}function bie({root:e=":host, :root"}){const t=[e,"[data-theme]"].join(",");return w(S5,{styles:n=>({[t]:n.__cssVars})})}DX({name:"StylesContext",errorMessage:"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` "});function Sie(){const{colorMode:e}=o5();return w(S5,{styles:t=>{const n=lO(t,"styles.global"),r=dO(n,{theme:t,colorMode:e});return r?$R(r)(t):void 0}})}var wie=new Set([...pY,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),Cie=new Set(["htmlWidth","htmlHeight","htmlSize"]);function _ie(e){return Cie.has(e)||!wie.has(e)}var kie=({baseStyle:e})=>t=>{const{theme:n,css:r,__css:i,sx:o,...a}=t,s=uO(a,(g,m)=>mY(m)),l=dO(e,t),c=Object.assign({},i,l,cO(s),o),p=$R(c)(t.theme);return r?[p,r]:p};function Bb(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=_ie);const i=kie({baseStyle:n}),o=Jw(e,r)(i);return re.forwardRef(function(l,c){const{colorMode:p,forced:g}=o5();return re.createElement(o,{ref:c,"data-theme":g?p:void 0,...l})})}function ke(e){return C.exports.forwardRef(e)}function AO(e,t={}){const{styleConfig:n,...r}=t,{theme:i,colorMode:o}=LO(),a=e?lO(i,`components.${e}`):void 0,s=n||a,l=Ma({theme:i,colorMode:o},s?.defaultProps??{},cO(AX(r,["children"]))),c=C.exports.useRef({});if(s){const g=EY(s)(l);gie(c.current,g)||(c.current=g)}return c.current}function oo(e,t={}){return AO(e,t)}function Ai(e,t={}){return AO(e,t)}function Eie(){const e=new Map;return new Proxy(Bb,{apply(t,n,r){return Bb(...r)},get(t,n){return e.has(n)||e.set(n,Bb(n)),e.get(n)}})}var be=Eie();function Pie(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function xn(e={}){const{name:t,strict:n=!0,hookName:r="useContext",providerName:i="Provider",errorMessage:o}=e,a=C.exports.createContext(void 0);a.displayName=t;function s(){var l;const c=C.exports.useContext(a);if(!c&&n){const p=new Error(o??Pie(r,i));throw p.name="ContextError",(l=Error.captureStackTrace)==null||l.call(Error,p,s),p}return c}return[a.Provider,s,a]}function Tie(e,t){if(e!=null){if(typeof e=="function"){e(t);return}try{e.current=t}catch{throw new Error(`Cannot assign value '${t}' to ref '${e}'`)}}}function zn(...e){return t=>{e.forEach(n=>{Tie(n,t)})}}function Lie(...e){return C.exports.useMemo(()=>zn(...e),e)}function pP(e){return e.sort((t,n)=>{const r=t.compareDocumentPosition(n);if(r&Node.DOCUMENT_POSITION_FOLLOWING||r&Node.DOCUMENT_POSITION_CONTAINED_BY)return-1;if(r&Node.DOCUMENT_POSITION_PRECEDING||r&Node.DOCUMENT_POSITION_CONTAINS)return 1;if(r&Node.DOCUMENT_POSITION_DISCONNECTED||r&Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC)throw Error("Cannot sort the given nodes.");return 0})}var Aie=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function gP(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function mP(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var o6=typeof window<"u"?C.exports.useLayoutEffect:C.exports.useEffect,t4=e=>e,Iie=class{descendants=new Map;register=e=>{if(e!=null)return Aie(e)?this.registerNode(e):t=>{this.registerNode(t,e)}};unregister=e=>{this.descendants.delete(e);const t=pP(Array.from(this.descendants.keys()));this.assignIndex(t)};destroy=()=>{this.descendants.clear()};assignIndex=e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})};count=()=>this.descendants.size;enabledCount=()=>this.enabledValues().length;values=()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index);enabledValues=()=>this.values().filter(e=>!e.disabled);item=e=>{if(this.count()!==0)return this.values()[e]};enabledItem=e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]};first=()=>this.item(0);firstEnabled=()=>this.enabledItem(0);last=()=>this.item(this.descendants.size-1);lastEnabled=()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)};indexOf=e=>{var t;return e?((t=this.descendants.get(e))==null?void 0:t.index)??-1:-1};enabledIndexOf=e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e));next=(e,t=!0)=>{const n=gP(e,this.count(),t);return this.item(n)};nextEnabled=(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),i=gP(r,this.enabledCount(),t);return this.enabledItem(i)};prev=(e,t=!0)=>{const n=mP(e,this.count()-1,t);return this.item(n)};prevEnabled=(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),i=mP(r,this.enabledCount()-1,t);return this.enabledItem(i)};registerNode=(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=pP(n);t?.disabled&&(t.disabled=!!t.disabled);const i={node:e,index:-1,...t};this.descendants.set(e,i),this.assignIndex(r)}};function Mie(){const e=C.exports.useRef(new Iie);return o6(()=>()=>e.current.destroy()),e.current}var[Rie,IO]=xn({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function Oie(e){const t=IO(),[n,r]=C.exports.useState(-1),i=C.exports.useRef(null);o6(()=>()=>{!i.current||t.unregister(i.current)},[]),o6(()=>{if(!i.current)return;const a=Number(i.current.dataset.index);n!=a&&!Number.isNaN(a)&&r(a)});const o=t4(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(i.current),register:zn(o,i)}}function MO(){return[t4(Rie),()=>t4(IO()),()=>Mie(),i=>Oie(i)]}var Or=(...e)=>e.filter(Boolean).join(" "),vP={path:ne("g",{stroke:"currentColor",strokeWidth:"1.5",children:[w("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),w("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),w("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},ha=ke((e,t)=>{const{as:n,viewBox:r,color:i="currentColor",focusable:o=!1,children:a,className:s,__css:l,...c}=e,p=Or("chakra-icon",s),g={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:i,...l},m={ref:t,focusable:o,className:p,__css:g},y=r??vP.viewBox;if(n&&typeof n!="string")return re.createElement(be.svg,{as:n,...m,...c});const b=a??vP.path;return re.createElement(be.svg,{verticalAlign:"middle",viewBox:y,...m,...c},b)});ha.displayName="Icon";function rt(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:i={}}=e,o=C.exports.Children.toArray(e.path),a=ke((s,l)=>w(ha,{ref:l,viewBox:t,...i,...s,children:o.length?o:w("path",{fill:"currentColor",d:n})}));return a.displayName=r,a}function ur(e,t=[]){const n=C.exports.useRef(e);return C.exports.useEffect(()=>{n.current=e}),C.exports.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function k5(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:i=(m,y)=>m!==y}=e,o=ur(r),a=ur(i),[s,l]=C.exports.useState(n),c=t!==void 0,p=c?t:s,g=ur(m=>{const b=typeof m=="function"?m(p):m;!a(p,b)||(c||l(b),o(b))},[c,o,p,a]);return[p,g]}const tC=C.exports.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),E5=C.exports.createContext({});function Nie(){return C.exports.useContext(E5).visualElement}const I0=C.exports.createContext(null),Kf=typeof document<"u",n4=Kf?C.exports.useLayoutEffect:C.exports.useEffect,RO=C.exports.createContext({strict:!1});function Die(e,t,n,r){const i=Nie(),o=C.exports.useContext(RO),a=C.exports.useContext(I0),s=C.exports.useContext(tC).reducedMotion,l=C.exports.useRef(void 0);r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceId:a?a.id:void 0,blockInitialAnimation:a?a.initial===!1:!1,reducedMotionConfig:s}));const c=l.current;return n4(()=>{c&&c.syncRender()}),C.exports.useEffect(()=>{c&&c.animationState&&c.animationState.animateChanges()}),n4(()=>()=>c&&c.notifyUnmount(),[]),c}function Mp(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function zie(e,t,n){return C.exports.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):Mp(n)&&(n.current=r))},[t])}function Bm(e){return typeof e=="string"||Array.isArray(e)}function P5(e){return typeof e=="object"&&typeof e.start=="function"}const Fie=["initial","animate","exit","whileHover","whileDrag","whileTap","whileFocus","whileInView"];function T5(e){return P5(e.animate)||Fie.some(t=>Bm(e[t]))}function OO(e){return Boolean(T5(e)||e.variants)}function Bie(e,t){if(T5(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Bm(n)?n:void 0,animate:Bm(r)?r:void 0}}return e.inherit!==!1?t:{}}function $ie(e){const{initial:t,animate:n}=Bie(e,C.exports.useContext(E5));return C.exports.useMemo(()=>({initial:t,animate:n}),[yP(t),yP(n)])}function yP(e){return Array.isArray(e)?e.join(" "):e}const Yl=e=>({isEnabled:t=>e.some(n=>!!t[n])}),$m={measureLayout:Yl(["layout","layoutId","drag"]),animation:Yl(["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"]),exit:Yl(["exit"]),drag:Yl(["drag","dragControls"]),focus:Yl(["whileFocus"]),hover:Yl(["whileHover","onHoverStart","onHoverEnd"]),tap:Yl(["whileTap","onTap","onTapStart","onTapCancel"]),pan:Yl(["onPan","onPanStart","onPanSessionStart","onPanEnd"]),inView:Yl(["whileInView","onViewportEnter","onViewportLeave"])};function Hie(e){for(const t in e)t==="projectionNodeConstructor"?$m.projectionNodeConstructor=e[t]:$m[t].Component=e[t]}function L5(e){const t=C.exports.useRef(null);return t.current===null&&(t.current=e()),t.current}const Jg={hasAnimatedSinceResize:!0,hasEverUpdated:!1};let Wie=1;function Vie(){return L5(()=>{if(Jg.hasEverUpdated)return Wie++})}const nC=C.exports.createContext({});class Uie extends re.Component{getSnapshotBeforeUpdate(){const{visualElement:t,props:n}=this.props;return t&&t.setProps(n),null}componentDidUpdate(){}render(){return this.props.children}}const NO=C.exports.createContext({}),Gie=Symbol.for("motionComponentSymbol");function jie({preloadedFeatures:e,createVisualElement:t,projectionNodeConstructor:n,useRender:r,useVisualState:i,Component:o}){e&&Hie(e);function a(l,c){const p={...C.exports.useContext(tC),...l,layoutId:qie(l)},{isStatic:g}=p;let m=null;const y=$ie(l),b=g?void 0:Vie(),S=i(l,g);if(!g&&Kf){y.visualElement=Die(o,S,p,t);const T=C.exports.useContext(RO).strict,E=C.exports.useContext(NO);y.visualElement&&(m=y.visualElement.loadFeatures(p,T,e,b,n||$m.projectionNodeConstructor,E))}return ne(Uie,{visualElement:y.visualElement,props:p,children:[m,w(E5.Provider,{value:y,children:r(o,l,b,zie(S,y.visualElement,c),S,g,y.visualElement)})]})}const s=C.exports.forwardRef(a);return s[Gie]=o,s}function qie({layoutId:e}){const t=C.exports.useContext(nC).id;return t&&e!==void 0?t+"-"+e:e}function Kie(e){function t(r,i={}){return jie(e(r,i))}if(typeof Proxy>"u")return t;const n=new Map;return new Proxy(t,{get:(r,i)=>(n.has(i)||n.set(i,t(i)),n.get(i))})}const Zie=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view"];function rC(e){return typeof e!="string"||e.includes("-")?!1:!!(Zie.indexOf(e)>-1||/[A-Z]/.test(e))}const r4={};function Yie(e){Object.assign(r4,e)}const i4=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],mv=new Set(i4);function DO(e,{layout:t,layoutId:n}){return mv.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!r4[e]||e==="opacity")}const ys=e=>!!e?.getVelocity,Xie={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},Qie=(e,t)=>i4.indexOf(e)-i4.indexOf(t);function Jie({transform:e,transformKeys:t},{enableHardwareAcceleration:n=!0,allowTransformNone:r=!0},i,o){let a="";t.sort(Qie);for(const s of t)a+=`${Xie[s]||s}(${e[s]}) `;return n&&!e.z&&(a+="translateZ(0)"),a=a.trim(),o?a=o(e,i?"":a):r&&i&&(a="none"),a}function zO(e){return e.startsWith("--")}const eoe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,FO=(e,t)=>n=>Math.max(Math.min(n,t),e),em=e=>e%1?Number(e.toFixed(5)):e,Hm=/(-)?([\d]*\.?[\d])+/g,a6=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,toe=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function vv(e){return typeof e=="string"}const Zf={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},tm=Object.assign(Object.assign({},Zf),{transform:FO(0,1)}),K2=Object.assign(Object.assign({},Zf),{default:1}),yv=e=>({test:t=>vv(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),yc=yv("deg"),vl=yv("%"),vt=yv("px"),noe=yv("vh"),roe=yv("vw"),xP=Object.assign(Object.assign({},vl),{parse:e=>vl.parse(e)/100,transform:e=>vl.transform(e*100)}),iC=(e,t)=>n=>Boolean(vv(n)&&toe.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),BO=(e,t,n)=>r=>{if(!vv(r))return r;const[i,o,a,s]=r.match(Hm);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(a),alpha:s!==void 0?parseFloat(s):1}},Sf={test:iC("hsl","hue"),parse:BO("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+vl.transform(em(t))+", "+vl.transform(em(n))+", "+em(tm.transform(r))+")"},ioe=FO(0,255),$b=Object.assign(Object.assign({},Zf),{transform:e=>Math.round(ioe(e))}),Mc={test:iC("rgb","red"),parse:BO("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+$b.transform(e)+", "+$b.transform(t)+", "+$b.transform(n)+", "+em(tm.transform(r))+")"};function ooe(e){let t="",n="",r="",i="";return e.length>5?(t=e.substr(1,2),n=e.substr(3,2),r=e.substr(5,2),i=e.substr(7,2)):(t=e.substr(1,1),n=e.substr(2,1),r=e.substr(3,1),i=e.substr(4,1),t+=t,n+=n,r+=r,i+=i),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:i?parseInt(i,16)/255:1}}const s6={test:iC("#"),parse:ooe,transform:Mc.transform},Xi={test:e=>Mc.test(e)||s6.test(e)||Sf.test(e),parse:e=>Mc.test(e)?Mc.parse(e):Sf.test(e)?Sf.parse(e):s6.parse(e),transform:e=>vv(e)?e:e.hasOwnProperty("red")?Mc.transform(e):Sf.transform(e)},$O="${c}",HO="${n}";function aoe(e){var t,n,r,i;return isNaN(e)&&vv(e)&&((n=(t=e.match(Hm))===null||t===void 0?void 0:t.length)!==null&&n!==void 0?n:0)+((i=(r=e.match(a6))===null||r===void 0?void 0:r.length)!==null&&i!==void 0?i:0)>0}function WO(e){typeof e=="number"&&(e=`${e}`);const t=[];let n=0;const r=e.match(a6);r&&(n=r.length,e=e.replace(a6,$O),t.push(...r.map(Xi.parse)));const i=e.match(Hm);return i&&(e=e.replace(Hm,HO),t.push(...i.map(Zf.parse))),{values:t,numColors:n,tokenised:e}}function VO(e){return WO(e).values}function UO(e){const{values:t,numColors:n,tokenised:r}=WO(e),i=t.length;return o=>{let a=r;for(let s=0;stypeof e=="number"?0:e;function loe(e){const t=VO(e);return UO(e)(t.map(soe))}const pu={test:aoe,parse:VO,createTransformer:UO,getAnimatableNone:loe},uoe=new Set(["brightness","contrast","saturate","opacity"]);function coe(e){let[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(Hm)||[];if(!r)return e;const i=n.replace(r,"");let o=uoe.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const doe=/([a-z-]*)\(.*?\)/g,l6=Object.assign(Object.assign({},pu),{getAnimatableNone:e=>{const t=e.match(doe);return t?t.map(coe).join(" "):e}}),bP={...Zf,transform:Math.round},GO={borderWidth:vt,borderTopWidth:vt,borderRightWidth:vt,borderBottomWidth:vt,borderLeftWidth:vt,borderRadius:vt,radius:vt,borderTopLeftRadius:vt,borderTopRightRadius:vt,borderBottomRightRadius:vt,borderBottomLeftRadius:vt,width:vt,maxWidth:vt,height:vt,maxHeight:vt,size:vt,top:vt,right:vt,bottom:vt,left:vt,padding:vt,paddingTop:vt,paddingRight:vt,paddingBottom:vt,paddingLeft:vt,margin:vt,marginTop:vt,marginRight:vt,marginBottom:vt,marginLeft:vt,rotate:yc,rotateX:yc,rotateY:yc,rotateZ:yc,scale:K2,scaleX:K2,scaleY:K2,scaleZ:K2,skew:yc,skewX:yc,skewY:yc,distance:vt,translateX:vt,translateY:vt,translateZ:vt,x:vt,y:vt,z:vt,perspective:vt,transformPerspective:vt,opacity:tm,originX:xP,originY:xP,originZ:vt,zIndex:bP,fillOpacity:tm,strokeOpacity:tm,numOctaves:bP};function oC(e,t,n,r){const{style:i,vars:o,transform:a,transformKeys:s,transformOrigin:l}=e;s.length=0;let c=!1,p=!1,g=!0;for(const m in t){const y=t[m];if(zO(m)){o[m]=y;continue}const b=GO[m],S=eoe(y,b);if(mv.has(m)){if(c=!0,a[m]=S,s.push(m),!g)continue;y!==(b.default||0)&&(g=!1)}else m.startsWith("origin")?(p=!0,l[m]=S):i[m]=S}if(t.transform||(c||r?i.transform=Jie(e,n,g,r):i.transform&&(i.transform="none")),p){const{originX:m="50%",originY:y="50%",originZ:b=0}=l;i.transformOrigin=`${m} ${y} ${b}`}}const aC=()=>({style:{},transform:{},transformKeys:[],transformOrigin:{},vars:{}});function jO(e,t,n){for(const r in t)!ys(t[r])&&!DO(r,n)&&(e[r]=t[r])}function foe({transformTemplate:e},t,n){return C.exports.useMemo(()=>{const r=aC();return oC(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function hoe(e,t,n){const r=e.style||{},i={};return jO(i,r,e),Object.assign(i,foe(e,t,n)),e.transformValues?e.transformValues(i):i}function poe(e,t,n){const r={},i=hoe(e,t,n);return e.drag&&e.dragListener!==!1&&(r.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),r.style=i,r}const goe=["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"],moe=["whileTap","onTap","onTapStart","onTapCancel"],voe=["onPan","onPanStart","onPanSessionStart","onPanEnd"],yoe=["whileInView","onViewportEnter","onViewportLeave","viewport"],xoe=new Set(["initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","layout","layoutId","layoutDependency","onLayoutAnimationStart","onLayoutAnimationComplete","onLayoutMeasure","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","drag","dragControls","dragListener","dragConstraints","dragDirectionLock","dragSnapToOrigin","_dragX","_dragY","dragElastic","dragMomentum","dragPropagation","dragTransition","onHoverStart","onHoverEnd","layoutScroll",...yoe,...moe,...goe,...voe]);function o4(e){return xoe.has(e)}let qO=e=>!o4(e);function boe(e){!e||(qO=t=>t.startsWith("on")?!o4(t):e(t))}try{boe(require("@emotion/is-prop-valid").default)}catch{}function Soe(e,t,n){const r={};for(const i in e)(qO(i)||n===!0&&o4(i)||!t&&!o4(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function SP(e,t,n){return typeof e=="string"?e:vt.transform(t+n*e)}function woe(e,t,n){const r=SP(t,e.x,e.width),i=SP(n,e.y,e.height);return`${r} ${i}`}const Coe={offset:"stroke-dashoffset",array:"stroke-dasharray"},_oe={offset:"strokeDashoffset",array:"strokeDasharray"};function koe(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?Coe:_oe;e[o.offset]=vt.transform(-r);const a=vt.transform(t),s=vt.transform(n);e[o.array]=`${a} ${s}`}function sC(e,{attrX:t,attrY:n,originX:r,originY:i,pathLength:o,pathSpacing:a=1,pathOffset:s=0,...l},c,p){oC(e,l,c,p),e.attrs=e.style,e.style={};const{attrs:g,style:m,dimensions:y}=e;g.transform&&(y&&(m.transform=g.transform),delete g.transform),y&&(r!==void 0||i!==void 0||m.transform)&&(m.transformOrigin=woe(y,r!==void 0?r:.5,i!==void 0?i:.5)),t!==void 0&&(g.x=t),n!==void 0&&(g.y=n),o!==void 0&&koe(g,o,a,s,!1)}const KO=()=>({...aC(),attrs:{}});function Eoe(e,t){const n=C.exports.useMemo(()=>{const r=KO();return sC(r,t,{enableHardwareAcceleration:!1},e.transformTemplate),{...r.attrs,style:{...r.style}}},[t]);if(e.style){const r={};jO(r,e.style,e),n.style={...r,...n.style}}return n}function Poe(e=!1){return(n,r,i,o,{latestValues:a},s)=>{const c=(rC(n)?Eoe:poe)(r,a,s),g={...Soe(r,typeof n=="string",e),...c,ref:o};return i&&(g["data-projection-id"]=i),C.exports.createElement(n,g)}}const ZO=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function YO(e,{style:t,vars:n},r,i){Object.assign(e.style,t,i&&i.getProjectionStyles(r));for(const o in n)e.style.setProperty(o,n[o])}const XO=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength"]);function QO(e,t,n,r){YO(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(XO.has(i)?i:ZO(i),t.attrs[i])}function lC(e){const{style:t}=e,n={};for(const r in t)(ys(t[r])||DO(r,e))&&(n[r]=t[r]);return n}function JO(e){const t=lC(e);for(const n in e)if(ys(e[n])){const r=n==="x"||n==="y"?"attr"+n.toUpperCase():n;t[r]=e[n]}return t}function uC(e,t,n,r={},i={}){return typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),t}const Wm=e=>Array.isArray(e),Toe=e=>Boolean(e&&typeof e=="object"&&e.mix&&e.toValue),eN=e=>Wm(e)?e[e.length-1]||0:e;function e3(e){const t=ys(e)?e.get():e;return Toe(t)?t.toValue():t}function Loe({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const a={latestValues:Aoe(r,i,o,e),renderState:t()};return n&&(a.mount=s=>n(r,s,a)),a}const tN=e=>(t,n)=>{const r=C.exports.useContext(E5),i=C.exports.useContext(I0),o=()=>Loe(e,t,r,i);return n?o():L5(o)};function Aoe(e,t,n,r){const i={},o=r(e);for(const m in o)i[m]=e3(o[m]);let{initial:a,animate:s}=e;const l=T5(e),c=OO(e);t&&c&&!l&&e.inherit!==!1&&(a===void 0&&(a=t.initial),s===void 0&&(s=t.animate));let p=n?n.initial===!1:!1;p=p||a===!1;const g=p?s:a;return g&&typeof g!="boolean"&&!P5(g)&&(Array.isArray(g)?g:[g]).forEach(y=>{const b=uC(e,y);if(!b)return;const{transitionEnd:S,transition:T,...E}=b;for(const k in E){let L=E[k];if(Array.isArray(L)){const I=p?L.length-1:0;L=L[I]}L!==null&&(i[k]=L)}for(const k in S)i[k]=S[k]}),i}const Ioe={useVisualState:tN({scrapeMotionValuesFromProps:JO,createRenderState:KO,onMount:(e,t,{renderState:n,latestValues:r})=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}sC(n,r,{enableHardwareAcceleration:!1},e.transformTemplate),QO(t,n)}})},Moe={useVisualState:tN({scrapeMotionValuesFromProps:lC,createRenderState:aC})};function Roe(e,{forwardMotionProps:t=!1},n,r,i){return{...rC(e)?Ioe:Moe,preloadedFeatures:n,useRender:Poe(t),createVisualElement:r,projectionNodeConstructor:i,Component:e}}var Vn;(function(e){e.Animate="animate",e.Hover="whileHover",e.Tap="whileTap",e.Drag="whileDrag",e.Focus="whileFocus",e.InView="whileInView",e.Exit="exit"})(Vn||(Vn={}));function A5(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}function u6(e,t,n,r){C.exports.useEffect(()=>{const i=e.current;if(n&&i)return A5(i,t,n,r)},[e,t,n,r])}function Ooe({whileFocus:e,visualElement:t}){const{animationState:n}=t,r=()=>{n&&n.setActive(Vn.Focus,!0)},i=()=>{n&&n.setActive(Vn.Focus,!1)};u6(t,"focus",e?r:void 0),u6(t,"blur",e?i:void 0)}function nN(e){return typeof PointerEvent<"u"&&e instanceof PointerEvent?e.pointerType==="mouse":e instanceof MouseEvent}function rN(e){return!!e.touches}function Noe(e){return t=>{const n=t instanceof MouseEvent;(!n||n&&t.button===0)&&e(t)}}const Doe={pageX:0,pageY:0};function zoe(e,t="page"){const r=e.touches[0]||e.changedTouches[0]||Doe;return{x:r[t+"X"],y:r[t+"Y"]}}function Foe(e,t="page"){return{x:e[t+"X"],y:e[t+"Y"]}}function cC(e,t="page"){return{point:rN(e)?zoe(e,t):Foe(e,t)}}const iN=(e,t=!1)=>{const n=r=>e(r,cC(r));return t?Noe(n):n},Boe=()=>Kf&&window.onpointerdown===null,$oe=()=>Kf&&window.ontouchstart===null,Hoe=()=>Kf&&window.onmousedown===null,Woe={pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointercancel:"mousecancel",pointerover:"mouseover",pointerout:"mouseout",pointerenter:"mouseenter",pointerleave:"mouseleave"},Voe={pointerdown:"touchstart",pointermove:"touchmove",pointerup:"touchend",pointercancel:"touchcancel"};function oN(e){return Boe()?e:$oe()?Voe[e]:Hoe()?Woe[e]:e}function qp(e,t,n,r){return A5(e,oN(t),iN(n,t==="pointerdown"),r)}function a4(e,t,n,r){return u6(e,oN(t),n&&iN(n,t==="pointerdown"),r)}function aN(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const wP=aN("dragHorizontal"),CP=aN("dragVertical");function sN(e){let t=!1;if(e==="y")t=CP();else if(e==="x")t=wP();else{const n=wP(),r=CP();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function lN(){const e=sN(!0);return e?(e(),!1):!0}function _P(e,t,n){return(r,i)=>{!nN(r)||lN()||(e.animationState&&e.animationState.setActive(Vn.Hover,t),n&&n(r,i))}}function Uoe({onHoverStart:e,onHoverEnd:t,whileHover:n,visualElement:r}){a4(r,"pointerenter",e||n?_P(r,!0,e):void 0,{passive:!e}),a4(r,"pointerleave",t||n?_P(r,!1,t):void 0,{passive:!t})}const uN=(e,t)=>t?e===t?!0:uN(e,t.parentElement):!1;function dC(e){return C.exports.useEffect(()=>()=>e(),[])}function cN(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);iMath.min(Math.max(n,e),t),Hb=.001,joe=.01,kP=10,qoe=.05,Koe=1;function Zoe({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;Goe(e<=kP*1e3);let a=1-t;a=l4(qoe,Koe,a),e=l4(joe,kP,e/1e3),a<1?(i=c=>{const p=c*a,g=p*e,m=p-n,y=c6(c,a),b=Math.exp(-g);return Hb-m/y*b},o=c=>{const g=c*a*e,m=g*n+n,y=Math.pow(a,2)*Math.pow(c,2)*e,b=Math.exp(-g),S=c6(Math.pow(c,2),a);return(-i(c)+Hb>0?-1:1)*((m-y)*b)/S}):(i=c=>{const p=Math.exp(-c*e),g=(c-n)*e+1;return-Hb+p*g},o=c=>{const p=Math.exp(-c*e),g=(n-c)*(e*e);return p*g});const s=5/e,l=Xoe(i,o,s);if(e=e*1e3,isNaN(l))return{stiffness:100,damping:10,duration:e};{const c=Math.pow(l,2)*r;return{stiffness:c,damping:a*2*Math.sqrt(r*c),duration:e}}}const Yoe=12;function Xoe(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function eae(e){let t=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},e);if(!EP(e,Joe)&&EP(e,Qoe)){const n=Zoe(e);t=Object.assign(Object.assign(Object.assign({},t),n),{velocity:0,mass:1}),t.isResolvedFromDuration=!0}return t}function fC(e){var{from:t=0,to:n=1,restSpeed:r=2,restDelta:i}=e,o=cN(e,["from","to","restSpeed","restDelta"]);const a={done:!1,value:t};let{stiffness:s,damping:l,mass:c,velocity:p,duration:g,isResolvedFromDuration:m}=eae(o),y=PP,b=PP;function S(){const T=p?-(p/1e3):0,E=n-t,k=l/(2*Math.sqrt(s*c)),L=Math.sqrt(s/c)/1e3;if(i===void 0&&(i=Math.min(Math.abs(n-t)/100,.4)),k<1){const I=c6(L,k);y=O=>{const D=Math.exp(-k*L*O);return n-D*((T+k*L*E)/I*Math.sin(I*O)+E*Math.cos(I*O))},b=O=>{const D=Math.exp(-k*L*O);return k*L*D*(Math.sin(I*O)*(T+k*L*E)/I+E*Math.cos(I*O))-D*(Math.cos(I*O)*(T+k*L*E)-I*E*Math.sin(I*O))}}else if(k===1)y=I=>n-Math.exp(-L*I)*(E+(T+L*E)*I);else{const I=L*Math.sqrt(k*k-1);y=O=>{const D=Math.exp(-k*L*O),N=Math.min(I*O,300);return n-D*((T+k*L*E)*Math.sinh(N)+I*E*Math.cosh(N))/I}}}return S(),{next:T=>{const E=y(T);if(m)a.done=T>=g;else{const k=b(T)*1e3,L=Math.abs(k)<=r,I=Math.abs(n-E)<=i;a.done=L&&I}return a.value=a.done?n:E,a},flipTarget:()=>{p=-p,[t,n]=[n,t],S()}}}fC.needsInterpolation=(e,t)=>typeof e=="string"||typeof t=="string";const PP=e=>0,Vm=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},Sr=(e,t,n)=>-n*e+n*t+e;function Wb(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function TP({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,o=0,a=0;if(!t)i=o=a=n;else{const s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;i=Wb(l,s,e+1/3),o=Wb(l,s,e),a=Wb(l,s,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(a*255),alpha:r}}const tae=(e,t,n)=>{const r=e*e,i=t*t;return Math.sqrt(Math.max(0,n*(i-r)+r))},nae=[s6,Mc,Sf],LP=e=>nae.find(t=>t.test(e)),dN=(e,t)=>{let n=LP(e),r=LP(t),i=n.parse(e),o=r.parse(t);n===Sf&&(i=TP(i),n=Mc),r===Sf&&(o=TP(o),r=Mc);const a=Object.assign({},i);return s=>{for(const l in a)l!=="alpha"&&(a[l]=tae(i[l],o[l],s));return a.alpha=Sr(i.alpha,o.alpha,s),n.transform(a)}},d6=e=>typeof e=="number",rae=(e,t)=>n=>t(e(n)),I5=(...e)=>e.reduce(rae);function fN(e,t){return d6(e)?n=>Sr(e,t,n):Xi.test(e)?dN(e,t):pN(e,t)}const hN=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,a)=>fN(o,t[a]));return o=>{for(let a=0;a{const n=Object.assign(Object.assign({},e),t),r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=fN(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}};function AP(e){const t=pu.parse(e),n=t.length;let r=0,i=0,o=0;for(let a=0;a{const n=pu.createTransformer(t),r=AP(e),i=AP(t);return r.numHSL===i.numHSL&&r.numRGB===i.numRGB&&r.numNumbers>=i.numNumbers?I5(hN(r.parsed,i.parsed),n):a=>`${a>0?t:e}`},oae=(e,t)=>n=>Sr(e,t,n);function aae(e){if(typeof e=="number")return oae;if(typeof e=="string")return Xi.test(e)?dN:pN;if(Array.isArray(e))return hN;if(typeof e=="object")return iae}function sae(e,t,n){const r=[],i=n||aae(e[0]),o=e.length-1;for(let a=0;an(Vm(e,t,r))}function uae(e,t){const n=e.length,r=n-1;return i=>{let o=0,a=!1;if(i<=e[0]?a=!0:i>=e[r]&&(o=r-1,a=!0),!a){let l=1;for(;li||l===r);l++);o=l-1}const s=Vm(e[o],e[o+1],i);return t[o](s)}}function gN(e,t,{clamp:n=!0,ease:r,mixer:i}={}){const o=e.length;s4(o===t.length),s4(!r||!Array.isArray(r)||r.length===o-1),e[0]>e[o-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const a=sae(t,r,i),s=o===2?lae(e,a):uae(e,a);return n?l=>s(l4(e[0],e[o-1],l)):s}const M5=e=>t=>1-e(1-t),hC=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,cae=e=>t=>Math.pow(t,e),mN=e=>t=>t*t*((e+1)*t-e),dae=e=>{const t=mN(e);return n=>(n*=2)<1?.5*t(n):.5*(2-Math.pow(2,-10*(n-1)))},vN=1.525,fae=4/11,hae=8/11,pae=9/10,pC=e=>e,gC=cae(2),gae=M5(gC),yN=hC(gC),xN=e=>1-Math.sin(Math.acos(e)),mC=M5(xN),mae=hC(mC),vC=mN(vN),vae=M5(vC),yae=hC(vC),xae=dae(vN),bae=4356/361,Sae=35442/1805,wae=16061/1805,u4=e=>{if(e===1||e===0)return e;const t=e*e;return ee<.5?.5*(1-u4(1-e*2)):.5*u4(e*2-1)+.5;function kae(e,t){return e.map(()=>t||yN).splice(0,e.length-1)}function Eae(e){const t=e.length;return e.map((n,r)=>r!==0?r/(t-1):0)}function Pae(e,t){return e.map(n=>n*t)}function t3({from:e=0,to:t=1,ease:n,offset:r,duration:i=300}){const o={done:!1,value:e},a=Array.isArray(t)?t:[e,t],s=Pae(r&&r.length===a.length?r:Eae(a),i);function l(){return gN(s,a,{ease:Array.isArray(n)?n:kae(a,n)})}let c=l();return{next:p=>(o.value=c(p),o.done=p>=i,o),flipTarget:()=>{a.reverse(),c=l()}}}function Tae({velocity:e=0,from:t=0,power:n=.8,timeConstant:r=350,restDelta:i=.5,modifyTarget:o}){const a={done:!1,value:t};let s=n*e;const l=t+s,c=o===void 0?l:o(l);return c!==l&&(s=c-t),{next:p=>{const g=-s*Math.exp(-p/r);return a.done=!(g>i||g<-i),a.value=a.done?c:c+g,a},flipTarget:()=>{}}}const IP={keyframes:t3,spring:fC,decay:Tae};function Lae(e){if(Array.isArray(e.to))return t3;if(IP[e.type])return IP[e.type];const t=new Set(Object.keys(e));return t.has("ease")||t.has("duration")&&!t.has("dampingRatio")?t3:t.has("dampingRatio")||t.has("stiffness")||t.has("mass")||t.has("damping")||t.has("restSpeed")||t.has("restDelta")?fC:t3}const bN=1/60*1e3,Aae=typeof performance<"u"?()=>performance.now():()=>Date.now(),SN=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(Aae()),bN);function Iae(e){let t=[],n=[],r=0,i=!1,o=!1;const a=new WeakSet,s={schedule:(l,c=!1,p=!1)=>{const g=p&&i,m=g?t:n;return c&&a.add(l),m.indexOf(l)===-1&&(m.push(l),g&&i&&(r=t.length)),l},cancel:l=>{const c=n.indexOf(l);c!==-1&&n.splice(c,1),a.delete(l)},process:l=>{if(i){o=!0;return}if(i=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let c=0;c(e[t]=Iae(()=>Um=!0),e),{}),Rae=xv.reduce((e,t)=>{const n=R5[t];return e[t]=(r,i=!1,o=!1)=>(Um||Dae(),n.schedule(r,i,o)),e},{}),Oae=xv.reduce((e,t)=>(e[t]=R5[t].cancel,e),{});xv.reduce((e,t)=>(e[t]=()=>R5[t].process(Kp),e),{});const Nae=e=>R5[e].process(Kp),wN=e=>{Um=!1,Kp.delta=f6?bN:Math.max(Math.min(e-Kp.timestamp,Mae),1),Kp.timestamp=e,h6=!0,xv.forEach(Nae),h6=!1,Um&&(f6=!1,SN(wN))},Dae=()=>{Um=!0,f6=!0,h6||SN(wN)},zae=()=>Kp;function CN(e,t,n=0){return e-t-n}function Fae(e,t,n=0,r=!0){return r?CN(t+-e,t,n):t-(e-t)+n}function Bae(e,t,n,r){return r?e>=t+n:e<=-n}const $ae=e=>{const t=({delta:n})=>e(n);return{start:()=>Rae.update(t,!0),stop:()=>Oae.update(t)}};function _N(e){var t,n,{from:r,autoplay:i=!0,driver:o=$ae,elapsed:a=0,repeat:s=0,repeatType:l="loop",repeatDelay:c=0,onPlay:p,onStop:g,onComplete:m,onRepeat:y,onUpdate:b}=e,S=cN(e,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let{to:T}=S,E,k=0,L=S.duration,I,O=!1,D=!0,N;const z=Lae(S);!((n=(t=z).needsInterpolation)===null||n===void 0)&&n.call(t,r,T)&&(N=gN([0,100],[r,T],{clamp:!1}),r=0,T=100);const W=z(Object.assign(Object.assign({},S),{from:r,to:T}));function V(){k++,l==="reverse"?(D=k%2===0,a=Fae(a,L,c,D)):(a=CN(a,L,c),l==="mirror"&&W.flipTarget()),O=!1,y&&y()}function q(){E.stop(),m&&m()}function he(ve){if(D||(ve=-ve),a+=ve,!O){const Ee=W.next(Math.max(0,a));I=Ee.value,N&&(I=N(I)),O=D?Ee.done:a<=0}b?.(I),O&&(k===0&&(L??(L=a)),k{g?.(),E.stop()}}}function kN(e,t){return t?e*(1e3/t):0}function Hae({from:e=0,velocity:t=0,min:n,max:r,power:i=.8,timeConstant:o=750,bounceStiffness:a=500,bounceDamping:s=10,restDelta:l=1,modifyTarget:c,driver:p,onUpdate:g,onComplete:m,onStop:y}){let b;function S(L){return n!==void 0&&Lr}function T(L){return n===void 0?r:r===void 0||Math.abs(n-L){var O;g?.(I),(O=L.onUpdate)===null||O===void 0||O.call(L,I)},onComplete:m,onStop:y}))}function k(L){E(Object.assign({type:"spring",stiffness:a,damping:s,restDelta:l},L))}if(S(e))k({from:e,velocity:t,to:T(e)});else{let L=i*t+e;typeof c<"u"&&(L=c(L));const I=T(L),O=I===n?-1:1;let D,N;const z=W=>{D=N,N=W,t=kN(W-D,zae().delta),(O===1&&W>I||O===-1&&Wb?.stop()}}const p6=e=>e.hasOwnProperty("x")&&e.hasOwnProperty("y"),MP=e=>p6(e)&&e.hasOwnProperty("z"),Z2=(e,t)=>Math.abs(e-t);function yC(e,t){if(d6(e)&&d6(t))return Z2(e,t);if(p6(e)&&p6(t)){const n=Z2(e.x,t.x),r=Z2(e.y,t.y),i=MP(e)&&MP(t)?Z2(e.z,t.z):0;return Math.sqrt(Math.pow(n,2)+Math.pow(r,2)+Math.pow(i,2))}}const EN=(e,t)=>1-3*t+3*e,PN=(e,t)=>3*t-6*e,TN=e=>3*e,c4=(e,t,n)=>((EN(t,n)*e+PN(t,n))*e+TN(t))*e,LN=(e,t,n)=>3*EN(t,n)*e*e+2*PN(t,n)*e+TN(t),Wae=1e-7,Vae=10;function Uae(e,t,n,r,i){let o,a,s=0;do a=t+(n-t)/2,o=c4(a,r,i)-e,o>0?n=a:t=a;while(Math.abs(o)>Wae&&++s=jae?qae(a,g,e,n):m===0?g:Uae(a,s,s+Y2,e,n)}return a=>a===0||a===1?a:c4(o(a),t,r)}function Zae({onTap:e,onTapStart:t,onTapCancel:n,whileTap:r,visualElement:i}){const o=e||t||n||r,a=C.exports.useRef(!1),s=C.exports.useRef(null),l={passive:!(t||e||n||y)};function c(){s.current&&s.current(),s.current=null}function p(){return c(),a.current=!1,i.animationState&&i.animationState.setActive(Vn.Tap,!1),!lN()}function g(b,S){!p()||(uN(i.getInstance(),b.target)?e&&e(b,S):n&&n(b,S))}function m(b,S){!p()||n&&n(b,S)}function y(b,S){c(),!a.current&&(a.current=!0,s.current=I5(qp(window,"pointerup",g,l),qp(window,"pointercancel",m,l)),i.animationState&&i.animationState.setActive(Vn.Tap,!0),t&&t(b,S))}a4(i,"pointerdown",o?y:void 0,l),dC(c)}const Yae="production",AN=typeof process>"u"||process.env===void 0?Yae:"production",RP=new Set;function IN(e,t,n){e||RP.has(t)||(console.warn(t),n&&console.warn(n),RP.add(t))}const g6=new WeakMap,Vb=new WeakMap,Xae=e=>{const t=g6.get(e.target);t&&t(e)},Qae=e=>{e.forEach(Xae)};function Jae({root:e,...t}){const n=e||document;Vb.has(n)||Vb.set(n,{});const r=Vb.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(Qae,{root:e,...t})),r[i]}function ese(e,t,n){const r=Jae(t);return g6.set(e,n),r.observe(e),()=>{g6.delete(e),r.unobserve(e)}}function tse({visualElement:e,whileInView:t,onViewportEnter:n,onViewportLeave:r,viewport:i={}}){const o=C.exports.useRef({hasEnteredView:!1,isInView:!1});let a=Boolean(t||n||r);i.once&&o.current.hasEnteredView&&(a=!1),(typeof IntersectionObserver>"u"?ise:rse)(a,o.current,e,i)}const nse={some:0,all:1};function rse(e,t,n,{root:r,margin:i,amount:o="some",once:a}){C.exports.useEffect(()=>{if(!e)return;const s={root:r?.current,rootMargin:i,threshold:typeof o=="number"?o:nse[o]},l=c=>{const{isIntersecting:p}=c;if(t.isInView===p||(t.isInView=p,a&&!p&&t.hasEnteredView))return;p&&(t.hasEnteredView=!0),n.animationState&&n.animationState.setActive(Vn.InView,p);const g=n.getProps(),m=p?g.onViewportEnter:g.onViewportLeave;m&&m(c)};return ese(n.getInstance(),s,l)},[e,r,i,o])}function ise(e,t,n,{fallback:r=!0}){C.exports.useEffect(()=>{!e||!r||(AN!=="production"&&IN(!1,"IntersectionObserver not available on this device. whileInView animations will trigger on mount."),requestAnimationFrame(()=>{t.hasEnteredView=!0;const{onViewportEnter:i}=n.getProps();i&&i(null),n.animationState&&n.animationState.setActive(Vn.InView,!0)}))},[e])}const Rc=e=>t=>(e(t),null),ose={inView:Rc(tse),tap:Rc(Zae),focus:Rc(Ooe),hover:Rc(Uoe)};function xC(){const e=C.exports.useContext(I0);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=C.exports.useId();return C.exports.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function ase(){return sse(C.exports.useContext(I0))}function sse(e){return e===null?!0:e.isPresent}function MN(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;re*1e3,lse={linear:pC,easeIn:gC,easeInOut:yN,easeOut:gae,circIn:xN,circInOut:mae,circOut:mC,backIn:vC,backInOut:yae,backOut:vae,anticipate:xae,bounceIn:Cae,bounceInOut:_ae,bounceOut:u4},OP=e=>{if(Array.isArray(e)){s4(e.length===4);const[t,n,r,i]=e;return Kae(t,n,r,i)}else if(typeof e=="string")return lse[e];return e},use=e=>Array.isArray(e)&&typeof e[0]!="number",NP=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&pu.test(t)&&!t.startsWith("url(")),ef=()=>({type:"spring",stiffness:500,damping:25,restSpeed:10}),X2=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),Ub=()=>({type:"keyframes",ease:"linear",duration:.3}),cse=e=>({type:"keyframes",duration:.8,values:e}),DP={x:ef,y:ef,z:ef,rotate:ef,rotateX:ef,rotateY:ef,rotateZ:ef,scaleX:X2,scaleY:X2,scale:X2,opacity:Ub,backgroundColor:Ub,color:Ub,default:X2},dse=(e,t)=>{let n;return Wm(t)?n=cse:n=DP[e]||DP.default,{to:t,...n(t)}},fse={...GO,color:Xi,backgroundColor:Xi,outlineColor:Xi,fill:Xi,stroke:Xi,borderColor:Xi,borderTopColor:Xi,borderRightColor:Xi,borderBottomColor:Xi,borderLeftColor:Xi,filter:l6,WebkitFilter:l6},bC=e=>fse[e];function SC(e,t){var n;let r=bC(e);return r!==l6&&(r=pu),(n=r.getAnimatableNone)===null||n===void 0?void 0:n.call(r,t)}const hse={current:!1},RN=1/60*1e3,pse=typeof performance<"u"?()=>performance.now():()=>Date.now(),ON=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(pse()),RN);function gse(e){let t=[],n=[],r=0,i=!1,o=!1;const a=new WeakSet,s={schedule:(l,c=!1,p=!1)=>{const g=p&&i,m=g?t:n;return c&&a.add(l),m.indexOf(l)===-1&&(m.push(l),g&&i&&(r=t.length)),l},cancel:l=>{const c=n.indexOf(l);c!==-1&&n.splice(c,1),a.delete(l)},process:l=>{if(i){o=!0;return}if(i=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let c=0;c(e[t]=gse(()=>Gm=!0),e),{}),xs=bv.reduce((e,t)=>{const n=O5[t];return e[t]=(r,i=!1,o=!1)=>(Gm||yse(),n.schedule(r,i,o)),e},{}),Wf=bv.reduce((e,t)=>(e[t]=O5[t].cancel,e),{}),Gb=bv.reduce((e,t)=>(e[t]=()=>O5[t].process(Zp),e),{}),vse=e=>O5[e].process(Zp),NN=e=>{Gm=!1,Zp.delta=m6?RN:Math.max(Math.min(e-Zp.timestamp,mse),1),Zp.timestamp=e,v6=!0,bv.forEach(vse),v6=!1,Gm&&(m6=!1,ON(NN))},yse=()=>{Gm=!0,m6=!0,v6||ON(NN)},y6=()=>Zp;function DN(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(Wf.read(r),e(o-t))};return xs.read(r,!0),()=>Wf.read(r)}function xse({when:e,delay:t,delayChildren:n,staggerChildren:r,staggerDirection:i,repeat:o,repeatType:a,repeatDelay:s,from:l,...c}){return!!Object.keys(c).length}function bse({ease:e,times:t,yoyo:n,flip:r,loop:i,...o}){const a={...o};return t&&(a.offset=t),o.duration&&(a.duration=d4(o.duration)),o.repeatDelay&&(a.repeatDelay=d4(o.repeatDelay)),e&&(a.ease=use(e)?e.map(OP):OP(e)),o.type==="tween"&&(a.type="keyframes"),(n||i||r)&&(n?a.repeatType="reverse":i?a.repeatType="loop":r&&(a.repeatType="mirror"),a.repeat=i||n||r||o.repeat),o.type!=="spring"&&(a.type="keyframes"),a}function Sse(e,t){var n,r;return(r=(n=(wC(e,t)||{}).delay)!==null&&n!==void 0?n:e.delay)!==null&&r!==void 0?r:0}function wse(e){return Array.isArray(e.to)&&e.to[0]===null&&(e.to=[...e.to],e.to[0]=e.from),e}function Cse(e,t,n){return Array.isArray(t.to)&&e.duration===void 0&&(e.duration=.8),wse(t),xse(e)||(e={...e,...dse(n,t.to)}),{...t,...bse(e)}}function _se(e,t,n,r,i){const o=wC(r,e)||{};let a=o.from!==void 0?o.from:t.get();const s=NP(e,n);a==="none"&&s&&typeof n=="string"?a=SC(e,n):zP(a)&&typeof n=="string"?a=FP(n):!Array.isArray(n)&&zP(n)&&typeof a=="string"&&(n=FP(a));const l=NP(e,a);function c(){const g={from:a,to:n,velocity:t.getVelocity(),onComplete:i,onUpdate:m=>t.set(m)};return o.type==="inertia"||o.type==="decay"?Hae({...g,...o}):_N({...Cse(o,g,e),onUpdate:m=>{g.onUpdate(m),o.onUpdate&&o.onUpdate(m)},onComplete:()=>{g.onComplete(),o.onComplete&&o.onComplete()}})}function p(){const g=eN(n);return t.set(g),i(),o.onUpdate&&o.onUpdate(g),o.onComplete&&o.onComplete(),{stop:()=>{}}}return!l||!s||o.type===!1?p:c}function zP(e){return e===0||typeof e=="string"&&parseFloat(e)===0&&e.indexOf(" ")===-1}function FP(e){return typeof e=="number"?0:SC("",e)}function wC(e,t){return e[t]||e.default||e}function CC(e,t,n,r={}){return hse.current&&(r={type:!1}),t.start(i=>{let o;const a=_se(e,t,n,r,i),s=Sse(r,e),l=()=>o=a();let c;return s?c=DN(l,d4(s)):l(),()=>{c&&c(),o&&o.stop()}})}const kse=e=>/^\-?\d*\.?\d+$/.test(e),Ese=e=>/^0[^.\s]+$/.test(e);function _C(e,t){e.indexOf(t)===-1&&e.push(t)}function kC(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class nm{constructor(){this.subscriptions=[]}add(t){return _C(this.subscriptions,t),()=>kC(this.subscriptions,t)}notify(t,n,r){const i=this.subscriptions.length;if(!!i)if(i===1)this.subscriptions[0](t,n,r);else for(let o=0;o!isNaN(parseFloat(e));class Tse{constructor(t){this.version="7.6.2",this.timeDelta=0,this.lastUpdated=0,this.updateSubscribers=new nm,this.velocityUpdateSubscribers=new nm,this.renderSubscribers=new nm,this.canTrackVelocity=!1,this.updateAndNotify=(n,r=!0)=>{this.prev=this.current,this.current=n;const{delta:i,timestamp:o}=y6();this.lastUpdated!==o&&(this.timeDelta=i,this.lastUpdated=o,xs.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.updateSubscribers.notify(this.current),this.velocityUpdateSubscribers.getSize()&&this.velocityUpdateSubscribers.notify(this.getVelocity()),r&&this.renderSubscribers.notify(this.current)},this.scheduleVelocityCheck=()=>xs.postRender(this.velocityCheck),this.velocityCheck=({timestamp:n})=>{n!==this.lastUpdated&&(this.prev=this.current,this.velocityUpdateSubscribers.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=t,this.canTrackVelocity=Pse(this.current)}onChange(t){return this.updateSubscribers.add(t)}clearListeners(){this.updateSubscribers.clear()}onRenderRequest(t){return t(this.get()),this.renderSubscribers.add(t)}attach(t){this.passiveEffect=t}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?kN(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.stopAnimation=t(n)}).then(()=>this.clearAnimation())}stop(){this.stopAnimation&&this.stopAnimation(),this.clearAnimation()}isAnimating(){return!!this.stopAnimation}clearAnimation(){this.stopAnimation=null}destroy(){this.updateSubscribers.clear(),this.renderSubscribers.clear(),this.stop()}}function g0(e){return new Tse(e)}const zN=e=>t=>t.test(e),Lse={test:e=>e==="auto",parse:e=>e},FN=[Zf,vt,vl,yc,roe,noe,Lse],sg=e=>FN.find(zN(e)),Ase=[...FN,Xi,pu],Ise=e=>Ase.find(zN(e));function Mse(e){const t={};return e.forEachValue((n,r)=>t[r]=n.get()),t}function Rse(e){const t={};return e.forEachValue((n,r)=>t[r]=n.getVelocity()),t}function N5(e,t,n){const r=e.getProps();return uC(r,t,n!==void 0?n:r.custom,Mse(e),Rse(e))}function Ose(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,g0(n))}function Nse(e,t){const n=N5(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const a in o){const s=eN(o[a]);Ose(e,a,s)}}function Dse(e,t,n){var r,i;const o=Object.keys(t).filter(s=>!e.hasValue(s)),a=o.length;if(!!a)for(let s=0;sx6(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=x6(e,t,n);else{const i=typeof t=="function"?N5(e,t,n.custom):t;r=BN(e,i,n)}return r.then(()=>e.notifyAnimationComplete(t))}function x6(e,t,n={}){var r;const i=N5(e,t,n.custom);let{transition:o=e.getDefaultTransition()||{}}=i||{};n.transitionOverride&&(o=n.transitionOverride);const a=i?()=>BN(e,i,n):()=>Promise.resolve(),s=!((r=e.variantChildren)===null||r===void 0)&&r.size?(c=0)=>{const{delayChildren:p=0,staggerChildren:g,staggerDirection:m}=o;return $se(e,t,p+c,g,m,n)}:()=>Promise.resolve(),{when:l}=o;if(l){const[c,p]=l==="beforeChildren"?[a,s]:[s,a];return c().then(p)}else return Promise.all([a(),s(n.delay)])}function BN(e,t,{delay:n=0,transitionOverride:r,type:i}={}){var o;let{transition:a=e.getDefaultTransition(),transitionEnd:s,...l}=e.makeTargetAnimatable(t);const c=e.getValue("willChange");r&&(a=r);const p=[],g=i&&((o=e.animationState)===null||o===void 0?void 0:o.getState()[i]);for(const m in l){const y=e.getValue(m),b=l[m];if(!y||b===void 0||g&&Wse(g,m))continue;let S={delay:n,...a};e.shouldReduceMotion&&mv.has(m)&&(S={...S,type:!1,delay:0});let T=CC(m,y,b,S);f4(c)&&(c.add(m),T=T.then(()=>c.remove(m))),p.push(T)}return Promise.all(p).then(()=>{s&&Nse(e,s)})}function $se(e,t,n=0,r=0,i=1,o){const a=[],s=(e.variantChildren.size-1)*r,l=i===1?(c=0)=>c*r:(c=0)=>s-c*r;return Array.from(e.variantChildren).sort(Hse).forEach((c,p)=>{a.push(x6(c,t,{...o,delay:n+l(p)}).then(()=>c.notifyAnimationComplete(t)))}),Promise.all(a)}function Hse(e,t){return e.sortNodePosition(t)}function Wse({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,r}const EC=[Vn.Animate,Vn.InView,Vn.Focus,Vn.Hover,Vn.Tap,Vn.Drag,Vn.Exit],Vse=[...EC].reverse(),Use=EC.length;function Gse(e){return t=>Promise.all(t.map(({animation:n,options:r})=>Bse(e,n,r)))}function jse(e){let t=Gse(e);const n=Kse();let r=!0;const i=(l,c)=>{const p=N5(e,c);if(p){const{transition:g,transitionEnd:m,...y}=p;l={...l,...y,...m}}return l};function o(l){t=l(e)}function a(l,c){var p;const g=e.getProps(),m=e.getVariantContext(!0)||{},y=[],b=new Set;let S={},T=1/0;for(let k=0;kT&&D;const q=Array.isArray(O)?O:[O];let he=q.reduce(i,{});N===!1&&(he={});const{prevResolvedValues:de={}}=I,ve={...de,...he},Ee=xe=>{V=!0,b.delete(xe),I.needsAnimating[xe]=!0};for(const xe in ve){const Z=he[xe],U=de[xe];S.hasOwnProperty(xe)||(Z!==U?Wm(Z)&&Wm(U)?!MN(Z,U)||W?Ee(xe):I.protectedKeys[xe]=!0:Z!==void 0?Ee(xe):b.add(xe):Z!==void 0&&b.has(xe)?Ee(xe):I.protectedKeys[xe]=!0)}I.prevProp=O,I.prevResolvedValues=he,I.isActive&&(S={...S,...he}),r&&e.blockInitialAnimation&&(V=!1),V&&!z&&y.push(...q.map(xe=>({animation:xe,options:{type:L,...l}})))}if(b.size){const k={};b.forEach(L=>{const I=e.getBaseTarget(L);I!==void 0&&(k[L]=I)}),y.push({animation:k})}let E=Boolean(y.length);return r&&g.initial===!1&&!e.manuallyAnimateOnMount&&(E=!1),r=!1,E?t(y):Promise.resolve()}function s(l,c,p){var g;if(n[l].isActive===c)return Promise.resolve();(g=e.variantChildren)===null||g===void 0||g.forEach(y=>{var b;return(b=y.animationState)===null||b===void 0?void 0:b.setActive(l,c)}),n[l].isActive=c;const m=a(p,l);for(const y in n)n[y].protectedKeys={};return m}return{animateChanges:a,setActive:s,setAnimateFunction:o,getState:()=>n}}function qse(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!MN(t,e):!1}function tf(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function Kse(){return{[Vn.Animate]:tf(!0),[Vn.InView]:tf(),[Vn.Hover]:tf(),[Vn.Tap]:tf(),[Vn.Drag]:tf(),[Vn.Focus]:tf(),[Vn.Exit]:tf()}}const Zse={animation:Rc(({visualElement:e,animate:t})=>{e.animationState||(e.animationState=jse(e)),P5(t)&&C.exports.useEffect(()=>t.subscribe(e),[t])}),exit:Rc(e=>{const{custom:t,visualElement:n}=e,[r,i]=xC(),o=C.exports.useContext(I0);C.exports.useEffect(()=>{n.isPresent=r;const a=n.animationState&&n.animationState.setActive(Vn.Exit,!r,{custom:o&&o.custom||t});a&&!r&&a.then(i)},[r])})};class $N{constructor(t,n,{transformPagePoint:r}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const c=qb(this.lastMoveEventInfo,this.history),p=this.startEvent!==null,g=yC(c.offset,{x:0,y:0})>=3;if(!p&&!g)return;const{point:m}=c,{timestamp:y}=y6();this.history.push({...m,timestamp:y});const{onStart:b,onMove:S}=this.handlers;p||(b&&b(this.lastMoveEvent,c),this.startEvent=this.lastMoveEvent),S&&S(this.lastMoveEvent,c)},this.handlePointerMove=(c,p)=>{if(this.lastMoveEvent=c,this.lastMoveEventInfo=jb(p,this.transformPagePoint),nN(c)&&c.buttons===0){this.handlePointerUp(c,p);return}xs.update(this.updatePoint,!0)},this.handlePointerUp=(c,p)=>{this.end();const{onEnd:g,onSessionEnd:m}=this.handlers,y=qb(jb(p,this.transformPagePoint),this.history);this.startEvent&&g&&g(c,y),m&&m(c,y)},rN(t)&&t.touches.length>1)return;this.handlers=n,this.transformPagePoint=r;const i=cC(t),o=jb(i,this.transformPagePoint),{point:a}=o,{timestamp:s}=y6();this.history=[{...a,timestamp:s}];const{onSessionStart:l}=n;l&&l(t,qb(o,this.history)),this.removeListeners=I5(qp(window,"pointermove",this.handlePointerMove),qp(window,"pointerup",this.handlePointerUp),qp(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),Wf.update(this.updatePoint)}}function jb(e,t){return t?{point:t(e.point)}:e}function BP(e,t){return{x:e.x-t.x,y:e.y-t.y}}function qb({point:e},t){return{point:e,delta:BP(e,HN(t)),offset:BP(e,Yse(t)),velocity:Xse(t,.1)}}function Yse(e){return e[0]}function HN(e){return e[e.length-1]}function Xse(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=HN(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>d4(t)));)n--;if(!r)return{x:0,y:0};const o=(i.timestamp-r.timestamp)/1e3;if(o===0)return{x:0,y:0};const a={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function aa(e){return e.max-e.min}function $P(e,t=0,n=.01){return yC(e,t)n&&(e=r?Sr(n,e,r.max):Math.min(e,n)),e}function UP(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function ele(e,{top:t,left:n,bottom:r,right:i}){return{x:UP(e.x,n,i),y:UP(e.y,t,r)}}function GP(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Vm(t.min,t.max-r,e.min):r>i&&(n=Vm(e.min,e.max-i,t.min)),l4(0,1,n)}function rle(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const b6=.35;function ile(e=b6){return e===!1?e=0:e===!0&&(e=b6),{x:jP(e,"left","right"),y:jP(e,"top","bottom")}}function jP(e,t,n){return{min:qP(e,t),max:qP(e,n)}}function qP(e,t){var n;return typeof e=="number"?e:(n=e[t])!==null&&n!==void 0?n:0}const KP=()=>({translate:0,scale:1,origin:0,originPoint:0}),om=()=>({x:KP(),y:KP()}),ZP=()=>({min:0,max:0}),bi=()=>({x:ZP(),y:ZP()});function nl(e){return[e("x"),e("y")]}function WN({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function ole({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function ale(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function Kb(e){return e===void 0||e===1}function S6({scale:e,scaleX:t,scaleY:n}){return!Kb(e)||!Kb(t)||!Kb(n)}function sf(e){return S6(e)||VN(e)||e.z||e.rotate||e.rotateX||e.rotateY}function VN(e){return YP(e.x)||YP(e.y)}function YP(e){return e&&e!=="0%"}function h4(e,t,n){const r=e-n,i=t*r;return n+i}function XP(e,t,n,r,i){return i!==void 0&&(e=h4(e,i,r)),h4(e,n,r)+t}function w6(e,t=0,n=1,r,i){e.min=XP(e.min,t,n,r,i),e.max=XP(e.max,t,n,r,i)}function UN(e,{x:t,y:n}){w6(e.x,t.translate,t.scale,t.originPoint),w6(e.y,n.translate,n.scale,n.originPoint)}function sle(e,t,n,r=!1){var i,o;const a=n.length;if(!a)return;t.x=t.y=1;let s,l;for(let c=0;c{this.stopAnimation(),n&&this.snapToCursor(cC(s,"page").point)},i=(s,l)=>{var c;const{drag:p,dragPropagation:g,onDragStart:m}=this.getProps();p&&!g&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=sN(p),!this.openGlobalLock)||(this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),nl(y=>{var b,S;let T=this.getAxisMotionValue(y).get()||0;if(vl.test(T)){const E=(S=(b=this.visualElement.projection)===null||b===void 0?void 0:b.layout)===null||S===void 0?void 0:S.actual[y];E&&(T=aa(E)*(parseFloat(T)/100))}this.originPoint[y]=T}),m?.(s,l),(c=this.visualElement.animationState)===null||c===void 0||c.setActive(Vn.Drag,!0))},o=(s,l)=>{const{dragPropagation:c,dragDirectionLock:p,onDirectionLock:g,onDrag:m}=this.getProps();if(!c&&!this.openGlobalLock)return;const{offset:y}=l;if(p&&this.currentDirection===null){this.currentDirection=hle(y),this.currentDirection!==null&&g?.(this.currentDirection);return}this.updateAxis("x",l.point,y),this.updateAxis("y",l.point,y),this.visualElement.syncRender(),m?.(s,l)},a=(s,l)=>this.stop(s,l);this.panSession=new $N(t,{onSessionStart:r,onStart:i,onMove:o,onSessionEnd:a},{transformPagePoint:this.visualElement.getTransformPagePoint()})}stop(t,n){const r=this.isDragging;if(this.cancel(),!r)return;const{velocity:i}=n;this.startAnimation(i);const{onDragEnd:o}=this.getProps();o?.(t,n)}cancel(){var t,n;this.isDragging=!1,this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!1),(t=this.panSession)===null||t===void 0||t.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),(n=this.visualElement.animationState)===null||n===void 0||n.setActive(Vn.Drag,!1)}updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!Q2(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let a=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(a=Jse(a,this.constraints[t],this.elastic[t])),o.set(a)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),{layout:r}=this.visualElement.projection||{},i=this.constraints;t&&Mp(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=ele(r.actual,t):this.constraints=!1,this.elastic=ile(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&nl(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=rle(r.actual[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Mp(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=cle(r,i.root,this.visualElement.getTransformPagePoint());let a=tle(i.layout.actual,o);if(n){const s=n(ole(a));this.hasMutatedConstraints=!!s,s&&(a=WN(s))}return a}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:a,onDragTransitionEnd:s}=this.getProps(),l=this.constraints||{},c=nl(p=>{var g;if(!Q2(p,n,this.currentDirection))return;let m=(g=l?.[p])!==null&&g!==void 0?g:{};a&&(m={min:0,max:0});const y=i?200:1e6,b=i?40:1e7,S={type:"inertia",velocity:r?t[p]:0,bounceStiffness:y,bounceDamping:b,timeConstant:750,restDelta:1,restSpeed:10,...o,...m};return this.startAxisValueAnimation(p,S)});return Promise.all(c).then(s)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return CC(t,r,0,n)}stopAnimation(){nl(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){var n,r;const i="_drag"+t.toUpperCase(),o=this.visualElement.getProps()[i];return o||this.visualElement.getValue(t,(r=(n=this.visualElement.getProps().initial)===null||n===void 0?void 0:n[t])!==null&&r!==void 0?r:0)}snapToCursor(t){nl(n=>{const{drag:r}=this.getProps();if(!Q2(n,r,this.currentDirection))return;const{projection:i}=this.visualElement,o=this.getAxisMotionValue(n);if(i&&i.layout){const{min:a,max:s}=i.layout.actual[n];o.set(t[n]-Sr(a,s,.5))}})}scalePositionWithinConstraints(){var t;const{drag:n,dragConstraints:r}=this.getProps(),{projection:i}=this.visualElement;if(!Mp(r)||!i||!this.constraints)return;this.stopAnimation();const o={x:0,y:0};nl(s=>{const l=this.getAxisMotionValue(s);if(l){const c=l.get();o[s]=nle({min:c,max:c},this.constraints[s])}});const{transformTemplate:a}=this.visualElement.getProps();this.visualElement.getInstance().style.transform=a?a({},""):"none",(t=i.root)===null||t===void 0||t.updateScroll(),i.updateLayout(),this.resolveConstraints(),nl(s=>{if(!Q2(s,n,null))return;const l=this.getAxisMotionValue(s),{min:c,max:p}=this.constraints[s];l.set(Sr(c,p,o[s]))})}addListeners(){var t;dle.set(this.visualElement,this);const n=this.visualElement.getInstance(),r=qp(n,"pointerdown",c=>{const{drag:p,dragListener:g=!0}=this.getProps();p&&g&&this.start(c)}),i=()=>{const{dragConstraints:c}=this.getProps();Mp(c)&&(this.constraints=this.resolveRefConstraints())},{projection:o}=this.visualElement,a=o.addEventListener("measure",i);o&&!o.layout&&((t=o.root)===null||t===void 0||t.updateScroll(),o.updateLayout()),i();const s=A5(window,"resize",()=>this.scalePositionWithinConstraints()),l=o.addEventListener("didUpdate",({delta:c,hasLayoutChanged:p})=>{this.isDragging&&p&&(nl(g=>{const m=this.getAxisMotionValue(g);!m||(this.originPoint[g]+=c[g].translate,m.set(m.get()+c[g].translate))}),this.visualElement.syncRender())});return()=>{s(),r(),a(),l?.()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:i=!1,dragConstraints:o=!1,dragElastic:a=b6,dragMomentum:s=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:a,dragMomentum:s}}}function Q2(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function hle(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}function ple(e){const{dragControls:t,visualElement:n}=e,r=L5(()=>new fle(n));C.exports.useEffect(()=>t&&t.subscribe(r),[r,t]),C.exports.useEffect(()=>r.addListeners(),[r])}function gle({onPan:e,onPanStart:t,onPanEnd:n,onPanSessionStart:r,visualElement:i}){const o=e||t||n||r,a=C.exports.useRef(null),{transformPagePoint:s}=C.exports.useContext(tC),l={onSessionStart:r,onStart:t,onMove:e,onEnd:(p,g)=>{a.current=null,n&&n(p,g)}};C.exports.useEffect(()=>{a.current!==null&&a.current.updateHandlers(l)});function c(p){a.current=new $N(p,l,{transformPagePoint:s})}a4(i,"pointerdown",o&&c),dC(()=>a.current&&a.current.end())}const mle={pan:Rc(gle),drag:Rc(ple)},C6={current:null},jN={current:!1};function vle(){if(jN.current=!0,!!Kf)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>C6.current=e.matches;e.addListener(t),t()}else C6.current=!1}const J2=["LayoutMeasure","BeforeLayoutMeasure","LayoutUpdate","ViewportBoxUpdate","Update","Render","AnimationComplete","LayoutAnimationComplete","AnimationStart","LayoutAnimationStart","SetAxisTarget","Unmount"];function yle(){const e=J2.map(()=>new nm),t={},n={clearAllListeners:()=>e.forEach(r=>r.clear()),updatePropListeners:r=>{J2.forEach(i=>{var o;const a="on"+i,s=r[a];(o=t[i])===null||o===void 0||o.call(t),s&&(t[i]=n[a](s))})}};return e.forEach((r,i)=>{n["on"+J2[i]]=o=>r.add(o),n["notify"+J2[i]]=(...o)=>r.notify(...o)}),n}function xle(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],a=n[i];if(ys(o))e.addValue(i,o),f4(r)&&r.add(i);else if(ys(a))e.addValue(i,g0(o)),f4(r)&&r.remove(i);else if(a!==o)if(e.hasValue(i)){const s=e.getValue(i);!s.hasAnimated&&s.set(o)}else{const s=e.getStaticValue(i);e.addValue(i,g0(s!==void 0?s:o))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const qN=Object.keys($m),ble=qN.length,KN=({treeType:e="",build:t,getBaseTarget:n,makeTargetAnimatable:r,measureViewportBox:i,render:o,readValueFromInstance:a,removeValueFromRenderState:s,sortNodePosition:l,scrapeMotionValuesFromProps:c})=>({parent:p,props:g,presenceId:m,blockInitialAnimation:y,visualState:b,reducedMotionConfig:S},T={})=>{let E=!1;const{latestValues:k,renderState:L}=b;let I;const O=yle(),D=new Map,N=new Map;let z={};const W={...k},V=g.initial?{...k}:{};let q;function he(){!I||!E||(de(),o(I,L,g.style,ae.projection))}function de(){t(ae,L,k,T,g)}function ve(){O.notifyUpdate(k)}function Ee(X,me){const ye=me.onChange(He=>{k[X]=He,g.onUpdate&&xs.update(ve,!1,!0)}),Se=me.onRenderRequest(ae.scheduleRender);N.set(X,()=>{ye(),Se()})}const{willChange:xe,...Z}=c(g);for(const X in Z){const me=Z[X];k[X]!==void 0&&ys(me)&&(me.set(k[X],!1),f4(xe)&&xe.add(X))}if(g.values)for(const X in g.values){const me=g.values[X];k[X]!==void 0&&ys(me)&&me.set(k[X])}const U=T5(g),ee=OO(g),ae={treeType:e,current:null,depth:p?p.depth+1:0,parent:p,children:new Set,presenceId:m,shouldReduceMotion:null,variantChildren:ee?new Set:void 0,isVisible:void 0,manuallyAnimateOnMount:Boolean(p?.isMounted()),blockInitialAnimation:y,isMounted:()=>Boolean(I),mount(X){E=!0,I=ae.current=X,ae.projection&&ae.projection.mount(X),ee&&p&&!U&&(q=p?.addVariantChild(ae)),D.forEach((me,ye)=>Ee(ye,me)),jN.current||vle(),ae.shouldReduceMotion=S==="never"?!1:S==="always"?!0:C6.current,p?.children.add(ae),ae.setProps(g)},unmount(){var X;(X=ae.projection)===null||X===void 0||X.unmount(),Wf.update(ve),Wf.render(he),N.forEach(me=>me()),q?.(),p?.children.delete(ae),O.clearAllListeners(),I=void 0,E=!1},loadFeatures(X,me,ye,Se,He,je){const ut=[];for(let qe=0;qeae.scheduleRender(),animationType:typeof ot=="string"?ot:"both",initialPromotionConfig:je,layoutScroll:Rt})}return ut},addVariantChild(X){var me;const ye=ae.getClosestVariantNode();if(ye)return(me=ye.variantChildren)===null||me===void 0||me.add(X),()=>ye.variantChildren.delete(X)},sortNodePosition(X){return!l||e!==X.treeType?0:l(ae.getInstance(),X.getInstance())},getClosestVariantNode:()=>ee?ae:p?.getClosestVariantNode(),getLayoutId:()=>g.layoutId,getInstance:()=>I,getStaticValue:X=>k[X],setStaticValue:(X,me)=>k[X]=me,getLatestValues:()=>k,setVisibility(X){ae.isVisible!==X&&(ae.isVisible=X,ae.scheduleRender())},makeTargetAnimatable(X,me=!0){return r(ae,X,g,me)},measureViewportBox(){return i(I,g)},addValue(X,me){ae.hasValue(X)&&ae.removeValue(X),D.set(X,me),k[X]=me.get(),Ee(X,me)},removeValue(X){var me;D.delete(X),(me=N.get(X))===null||me===void 0||me(),N.delete(X),delete k[X],s(X,L)},hasValue:X=>D.has(X),getValue(X,me){if(g.values&&g.values[X])return g.values[X];let ye=D.get(X);return ye===void 0&&me!==void 0&&(ye=g0(me),ae.addValue(X,ye)),ye},forEachValue:X=>D.forEach(X),readValue:X=>k[X]!==void 0?k[X]:a(I,X,T),setBaseTarget(X,me){W[X]=me},getBaseTarget(X){var me;const{initial:ye}=g,Se=typeof ye=="string"||typeof ye=="object"?(me=uC(g,ye))===null||me===void 0?void 0:me[X]:void 0;if(ye&&Se!==void 0)return Se;if(n){const He=n(g,X);if(He!==void 0&&!ys(He))return He}return V[X]!==void 0&&Se===void 0?void 0:W[X]},...O,build(){return de(),L},scheduleRender(){xs.render(he,!1,!0)},syncRender:he,setProps(X){(X.transformTemplate||g.transformTemplate)&&ae.scheduleRender(),g=X,O.updatePropListeners(X),z=xle(ae,c(g),z)},getProps:()=>g,getVariant:X=>{var me;return(me=g.variants)===null||me===void 0?void 0:me[X]},getDefaultTransition:()=>g.transition,getTransformPagePoint:()=>g.transformPagePoint,getVariantContext(X=!1){if(X)return p?.getVariantContext();if(!U){const ye=p?.getVariantContext()||{};return g.initial!==void 0&&(ye.initial=g.initial),ye}const me={};for(let ye=0;ye{const o=i.get();if(!_6(o))return;const a=k6(o,r);a&&i.set(a)});for(const i in t){const o=t[i];if(!_6(o))continue;const a=k6(o,r);!a||(t[i]=a,n&&n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const _le=new Set(["width","height","top","left","right","bottom","x","y"]),XN=e=>_le.has(e),kle=e=>Object.keys(e).some(XN),QN=(e,t)=>{e.set(t,!1),e.set(t)},JP=e=>e===Zf||e===vt;var eT;(function(e){e.width="width",e.height="height",e.left="left",e.right="right",e.top="top",e.bottom="bottom"})(eT||(eT={}));const tT=(e,t)=>parseFloat(e.split(", ")[t]),nT=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return tT(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?tT(o[1],e):0}},Ele=new Set(["x","y","z"]),Ple=i4.filter(e=>!Ele.has(e));function Tle(e){const t=[];return Ple.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t.length&&e.syncRender(),t}const rT={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:nT(4,13),y:nT(5,14)},Lle=(e,t,n)=>{const r=t.measureViewportBox(),i=t.getInstance(),o=getComputedStyle(i),{display:a}=o,s={};a==="none"&&t.setStaticValue("display",e.display||"block"),n.forEach(c=>{s[c]=rT[c](r,o)}),t.syncRender();const l=t.measureViewportBox();return n.forEach(c=>{const p=t.getValue(c);QN(p,s[c]),e[c]=rT[c](l,o)}),e},Ale=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(XN);let o=[],a=!1;const s=[];if(i.forEach(l=>{const c=e.getValue(l);if(!e.hasValue(l))return;let p=n[l],g=sg(p);const m=t[l];let y;if(Wm(m)){const b=m.length,S=m[0]===null?1:0;p=m[S],g=sg(p);for(let T=S;T=0?window.pageYOffset:null,c=Lle(t,e,s);return o.length&&o.forEach(([p,g])=>{e.getValue(p).set(g)}),e.syncRender(),Kf&&l!==null&&window.scrollTo({top:l}),{target:c,transitionEnd:r}}else return{target:t,transitionEnd:r}};function Ile(e,t,n,r){return kle(t)?Ale(e,t,n,r):{target:t,transitionEnd:r}}const Mle=(e,t,n,r)=>{const i=Cle(e,t,r);return t=i.target,r=i.transitionEnd,Ile(e,t,n,r)};function Rle(e){return window.getComputedStyle(e)}const JN={treeType:"dom",readValueFromInstance(e,t){if(mv.has(t)){const n=bC(t);return n&&n.default||0}else{const n=Rle(e),r=(zO(t)?n.getPropertyValue(t):n[t])||0;return typeof r=="string"?r.trim():r}},sortNodePosition(e,t){return e.compareDocumentPosition(t)&2?1:-1},getBaseTarget(e,t){var n;return(n=e.style)===null||n===void 0?void 0:n[t]},measureViewportBox(e,{transformPagePoint:t}){return GN(e,t)},resetTransform(e,t,n){const{transformTemplate:r}=n;t.style.transform=r?r({},""):"none",e.scheduleRender()},restoreTransform(e,t){e.style.transform=t.style.transform},removeValueFromRenderState(e,{vars:t,style:n}){delete t[e],delete n[e]},makeTargetAnimatable(e,{transition:t,transitionEnd:n,...r},{transformValues:i},o=!0){let a=Fse(r,t||{},e);if(i&&(n&&(n=i(n)),r&&(r=i(r)),a&&(a=i(a))),o){Dse(e,r,a);const s=Mle(e,r,a,n);n=s.transitionEnd,r=s.target}return{transition:t,transitionEnd:n,...r}},scrapeMotionValuesFromProps:lC,build(e,t,n,r,i){e.isVisible!==void 0&&(t.style.visibility=e.isVisible?"visible":"hidden"),oC(t,n,r,i.transformTemplate)},render:YO},Ole=KN(JN),Nle=KN({...JN,getBaseTarget(e,t){return e[t]},readValueFromInstance(e,t){var n;return mv.has(t)?((n=bC(t))===null||n===void 0?void 0:n.default)||0:(t=XO.has(t)?t:ZO(t),e.getAttribute(t))},scrapeMotionValuesFromProps:JO,build(e,t,n,r,i){sC(t,n,r,i.transformTemplate)},render:QO}),Dle=(e,t)=>rC(e)?Nle(t,{enableHardwareAcceleration:!1}):Ole(t,{enableHardwareAcceleration:!0});function iT(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const lg={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(vt.test(e))e=parseFloat(e);else return e;const n=iT(e,t.target.x),r=iT(e,t.target.y);return`${n}% ${r}%`}},oT="_$css",zle={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=e.includes("var("),o=[];i&&(e=e.replace(YN,y=>(o.push(y),oT)));const a=pu.parse(e);if(a.length>5)return r;const s=pu.createTransformer(e),l=typeof a[0]!="number"?1:0,c=n.x.scale*t.x,p=n.y.scale*t.y;a[0+l]/=c,a[1+l]/=p;const g=Sr(c,p,.5);typeof a[2+l]=="number"&&(a[2+l]/=g),typeof a[3+l]=="number"&&(a[3+l]/=g);let m=s(a);if(i){let y=0;m=m.replace(oT,()=>{const b=o[y];return y++,b})}return m}};class Fle extends re.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;Yie($le),o&&(n.group&&n.group.add(o),r&&r.register&&i&&r.register(o),o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,onExitComplete:()=>this.safeToRemove()})),Jg.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:i,isPresent:o}=this.props,a=r.projection;return a&&(a.isPresent=o,i||t.layoutDependency!==n||n===void 0?a.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?a.promote():a.relegate()||xs.postRender(()=>{var s;!((s=a.getStack())===null||s===void 0)&&s.members.length||this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),!t.currentAnimation&&t.isLead()&&this.safeToRemove())}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:i}=t;i&&(i.scheduleCheckAfterUnmount(),n?.group&&n.group.remove(i),r?.deregister&&r.deregister(i))}safeToRemove(){const{safeToRemove:t}=this.props;t?.()}render(){return null}}function Ble(e){const[t,n]=xC(),r=C.exports.useContext(nC);return w(Fle,{...e,layoutGroup:r,switchLayoutGroup:C.exports.useContext(NO),isPresent:t,safeToRemove:n})}const $le={borderRadius:{...lg,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:lg,borderTopRightRadius:lg,borderBottomLeftRadius:lg,borderBottomRightRadius:lg,boxShadow:zle},Hle={measureLayout:Ble};function Wle(e,t,n={}){const r=ys(e)?e:g0(e);return CC("",r,t,n),{stop:()=>r.stop(),isAnimating:()=>r.isAnimating()}}const eD=["TopLeft","TopRight","BottomLeft","BottomRight"],Vle=eD.length,aT=e=>typeof e=="string"?parseFloat(e):e,sT=e=>typeof e=="number"||vt.test(e);function Ule(e,t,n,r,i,o){var a,s,l,c;i?(e.opacity=Sr(0,(a=n.opacity)!==null&&a!==void 0?a:1,Gle(r)),e.opacityExit=Sr((s=t.opacity)!==null&&s!==void 0?s:1,0,jle(r))):o&&(e.opacity=Sr((l=t.opacity)!==null&&l!==void 0?l:1,(c=n.opacity)!==null&&c!==void 0?c:1,r));for(let p=0;prt?1:n(Vm(e,t,r))}function uT(e,t){e.min=t.min,e.max=t.max}function ls(e,t){uT(e.x,t.x),uT(e.y,t.y)}function cT(e,t,n,r,i){return e-=t,e=h4(e,1/n,r),i!==void 0&&(e=h4(e,1/i,r)),e}function qle(e,t=0,n=1,r=.5,i,o=e,a=e){if(vl.test(t)&&(t=parseFloat(t),t=Sr(a.min,a.max,t/100)-a.min),typeof t!="number")return;let s=Sr(o.min,o.max,r);e===o&&(s-=t),e.min=cT(e.min,t,n,s,i),e.max=cT(e.max,t,n,s,i)}function dT(e,t,[n,r,i],o,a){qle(e,t[n],t[r],t[i],t.scale,o,a)}const Kle=["x","scaleX","originX"],Zle=["y","scaleY","originY"];function fT(e,t,n,r){dT(e.x,t,Kle,n?.x,r?.x),dT(e.y,t,Zle,n?.y,r?.y)}function hT(e){return e.translate===0&&e.scale===1}function nD(e){return hT(e.x)&&hT(e.y)}function rD(e,t){return e.x.min===t.x.min&&e.x.max===t.x.max&&e.y.min===t.y.min&&e.y.max===t.y.max}function pT(e){return aa(e.x)/aa(e.y)}function Yle(e,t,n=.1){return yC(e,t)<=n}class Xle{constructor(){this.members=[]}add(t){_C(this.members,t),t.scheduleRender()}remove(t){if(kC(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(i=>t===i);if(n===0)return!1;let r;for(let i=n;i>=0;i--){const o=this.members[i];if(o.isPresent!==!1){r=o;break}}return r?(this.promote(r),!0):!1}promote(t,n){var r;const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues,t.snapshot.isShared=!0),!((r=t.root)===null||r===void 0)&&r.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:o}=t.options;o===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var n,r,i,o,a;(r=(n=t.options).onExitComplete)===null||r===void 0||r.call(n),(a=(i=t.resumingFrom)===null||i===void 0?void 0:(o=i.options).onExitComplete)===null||a===void 0||a.call(o)})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}const Qle="translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)";function gT(e,t,n){const r=e.x.translate/t.x,i=e.y.translate/t.y;let o=`translate3d(${r}px, ${i}px, 0) `;if(o+=`scale(${1/t.x}, ${1/t.y}) `,n){const{rotate:l,rotateX:c,rotateY:p}=n;l&&(o+=`rotate(${l}deg) `),c&&(o+=`rotateX(${c}deg) `),p&&(o+=`rotateY(${p}deg) `)}const a=e.x.scale*t.x,s=e.y.scale*t.y;return o+=`scale(${a}, ${s})`,o===Qle?"none":o}const Jle=(e,t)=>e.depth-t.depth;class eue{constructor(){this.children=[],this.isDirty=!1}add(t){_C(this.children,t),this.isDirty=!0}remove(t){kC(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(Jle),this.isDirty=!1,this.children.forEach(t)}}const mT=["","X","Y","Z"],vT=1e3;function iD({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(a,s={},l=t?.()){this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.potentialNodes=new Map,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.nodes.forEach(oue),this.nodes.forEach(aue)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.id=a,this.latestValues=s,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0,a&&this.root.registerPotentialNode(a,this);for(let c=0;cthis.root.updateBlockedByResize=!1;e(a,()=>{this.root.updateBlockedByResize=!0,m&&m(),m=DN(y,250),Jg.hasAnimatedSinceResize&&(Jg.hasAnimatedSinceResize=!1,this.nodes.forEach(xT))})}c&&this.root.registerSharedNode(c,this),this.options.animate!==!1&&g&&(c||p)&&this.addEventListener("didUpdate",({delta:m,hasLayoutChanged:y,hasRelativeTargetChanged:b,layout:S})=>{var T,E,k,L,I;if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const O=(E=(T=this.options.transition)!==null&&T!==void 0?T:g.getDefaultTransition())!==null&&E!==void 0?E:due,{onLayoutAnimationStart:D,onLayoutAnimationComplete:N}=g.getProps(),z=!this.targetLayout||!rD(this.targetLayout,S)||b,W=!y&&b;if(((k=this.resumeFrom)===null||k===void 0?void 0:k.instance)||W||y&&(z||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(m,W);const V={...wC(O,"layout"),onPlay:D,onComplete:N};g.shouldReduceMotion&&(V.delay=0,V.type=!1),this.startAnimation(V)}else!y&&this.animationProgress===0&&xT(this),this.isLead()&&((I=(L=this.options).onExitComplete)===null||I===void 0||I.call(L));this.targetLayout=S})}unmount(){var a,s;this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this),(a=this.getStack())===null||a===void 0||a.remove(this),(s=this.parent)===null||s===void 0||s.children.delete(this),this.instance=void 0,Wf.preRender(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){var a;return this.isAnimationBlocked||((a=this.parent)===null||a===void 0?void 0:a.isTreeAnimationBlocked())||!1}startUpdate(){var a;this.isUpdateBlocked()||(this.isUpdating=!0,(a=this.nodes)===null||a===void 0||a.forEach(sue))}willUpdate(a=!0){var s,l,c;if(this.root.isUpdateBlocked()){(l=(s=this.options).onExitComplete)===null||l===void 0||l.call(s);return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let y=0;y{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){if(this.snapshot||!this.instance)return;const a=this.measure(),s=this.removeTransform(this.removeElementScroll(a));CT(s),this.snapshot={measured:a,layout:s,latestValues:{}}}updateLayout(){var a;if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c{var k;const L=E/1e3;bT(m.x,a.x,L),bT(m.y,a.y,L),this.setTargetDelta(m),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&((k=this.relativeParent)===null||k===void 0?void 0:k.layout)&&(im(y,this.layout.actual,this.relativeParent.layout.actual),uue(this.relativeTarget,this.relativeTargetOrigin,y,L)),b&&(this.animationValues=g,Ule(g,p,this.latestValues,L,T,S)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=L},this.mixTargetDelta(0)}startAnimation(a){var s,l;this.notifyListeners("animationStart"),(s=this.currentAnimation)===null||s===void 0||s.stop(),this.resumingFrom&&((l=this.resumingFrom.currentAnimation)===null||l===void 0||l.stop()),this.pendingAnimation&&(Wf.update(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=xs.update(()=>{Jg.hasAnimatedSinceResize=!0,this.currentAnimation=Wle(0,vT,{...a,onUpdate:c=>{var p;this.mixTargetDelta(c),(p=a.onUpdate)===null||p===void 0||p.call(a,c)},onComplete:()=>{var c;(c=a.onComplete)===null||c===void 0||c.call(a),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){var a;this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0),(a=this.getStack())===null||a===void 0||a.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){var a;this.currentAnimation&&((a=this.mixTargetDelta)===null||a===void 0||a.call(this,vT),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const a=this.getLead();let{targetWithTransforms:s,target:l,layout:c,latestValues:p}=a;if(!(!s||!l||!c)){if(this!==a&&this.layout&&c&&oD(this.options.animationType,this.layout.actual,c.actual)){l=this.target||bi();const g=aa(this.layout.actual.x);l.x.min=a.target.x.min,l.x.max=l.x.min+g;const m=aa(this.layout.actual.y);l.y.min=a.target.y.min,l.y.max=l.y.min+m}ls(s,l),Rp(s,p),rm(this.projectionDeltaWithTransform,this.layoutCorrected,s,p)}}registerSharedNode(a,s){var l,c,p;this.sharedNodes.has(a)||this.sharedNodes.set(a,new Xle),this.sharedNodes.get(a).add(s),s.promote({transition:(l=s.options.initialPromotionConfig)===null||l===void 0?void 0:l.transition,preserveFollowOpacity:(p=(c=s.options.initialPromotionConfig)===null||c===void 0?void 0:c.shouldPreserveFollowOpacity)===null||p===void 0?void 0:p.call(c,s)})}isLead(){const a=this.getStack();return a?a.lead===this:!0}getLead(){var a;const{layoutId:s}=this.options;return s?((a=this.getStack())===null||a===void 0?void 0:a.lead)||this:this}getPrevLead(){var a;const{layoutId:s}=this.options;return s?(a=this.getStack())===null||a===void 0?void 0:a.prevLead:void 0}getStack(){const{layoutId:a}=this.options;if(a)return this.root.sharedNodes.get(a)}promote({needsReset:a,transition:s,preserveFollowOpacity:l}={}){const c=this.getStack();c&&c.promote(this,l),a&&(this.projectionDelta=void 0,this.needsReset=!0),s&&this.setOptions({transition:s})}relegate(){const a=this.getStack();return a?a.relegate(this):!1}resetRotation(){const{visualElement:a}=this.options;if(!a)return;let s=!1;const l={};for(let c=0;c{var s;return(s=a.currentAnimation)===null||s===void 0?void 0:s.stop()}),this.root.nodes.forEach(yT),this.root.sharedNodes.clear()}}}function tue(e){e.updateLayout()}function nue(e){var t,n,r;const i=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&i&&e.hasListeners("didUpdate")){const{actual:o,measured:a}=e.layout,{animationType:s}=e.options;s==="size"?nl(m=>{const y=i.isShared?i.measured[m]:i.layout[m],b=aa(y);y.min=o[m].min,y.max=y.min+b}):oD(s,i.layout,o)&&nl(m=>{const y=i.isShared?i.measured[m]:i.layout[m],b=aa(o[m]);y.max=y.min+b});const l=om();rm(l,o,i.layout);const c=om();i.isShared?rm(c,e.applyTransform(a,!0),i.measured):rm(c,o,i.layout);const p=!nD(l);let g=!1;if(!e.resumeFrom&&(e.relativeParent=e.getClosestProjectingParent(),e.relativeParent&&!e.relativeParent.resumeFrom)){const{snapshot:m,layout:y}=e.relativeParent;if(m&&y){const b=bi();im(b,i.layout,m.layout);const S=bi();im(S,o,y.actual),rD(b,S)||(g=!0)}}e.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:c,layoutDelta:l,hasLayoutChanged:p,hasRelativeTargetChanged:g})}else e.isLead()&&((r=(n=e.options).onExitComplete)===null||r===void 0||r.call(n));e.options.transition=void 0}function rue(e){e.clearSnapshot()}function yT(e){e.clearMeasurements()}function iue(e){const{visualElement:t}=e.options;t?.getProps().onBeforeLayoutMeasure&&t.notifyBeforeLayoutMeasure(),e.resetTransform()}function xT(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0}function oue(e){e.resolveTargetDelta()}function aue(e){e.calcProjection()}function sue(e){e.resetRotation()}function lue(e){e.removeLeadSnapshot()}function bT(e,t,n){e.translate=Sr(t.translate,0,n),e.scale=Sr(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function ST(e,t,n,r){e.min=Sr(t.min,n.min,r),e.max=Sr(t.max,n.max,r)}function uue(e,t,n,r){ST(e.x,t.x,n.x,r),ST(e.y,t.y,n.y,r)}function cue(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const due={duration:.45,ease:[.4,0,.1,1]};function fue(e,t){let n=e.root;for(let o=e.path.length-1;o>=0;o--)if(Boolean(e.path[o].instance)){n=e.path[o];break}const i=(n&&n!==e.root?n.instance:document).querySelector(`[data-projection-id="${t}"]`);i&&e.mount(i,!0)}function wT(e){e.min=Math.round(e.min),e.max=Math.round(e.max)}function CT(e){wT(e.x),wT(e.y)}function oD(e,t,n){return e==="position"||e==="preserve-aspect"&&!Yle(pT(t),pT(n),.2)}const hue=iD({attachResizeListener:(e,t)=>A5(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Zb={current:void 0},pue=iD({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Zb.current){const e=new hue(0,{});e.mount(window),e.setOptions({layoutScroll:!0}),Zb.current=e}return Zb.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>Boolean(window.getComputedStyle(e).position==="fixed")}),gue={...Zse,...ose,...mle,...Hle},Ha=Kie((e,t)=>Roe(e,t,gue,Dle,pue));function aD(){const e=C.exports.useRef(!1);return n4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function mue(){const e=aD(),[t,n]=C.exports.useState(0),r=C.exports.useCallback(()=>{e.current&&n(t+1)},[t]);return[C.exports.useCallback(()=>xs.postRender(r),[r]),t]}class vue extends C.exports.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const r=this.props.sizeRef.current;r.height=n.offsetHeight||0,r.width=n.offsetWidth||0,r.top=n.offsetTop,r.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function yue({children:e,isPresent:t}){const n=C.exports.useId(),r=C.exports.useRef(null),i=C.exports.useRef({width:0,height:0,top:0,left:0});return C.exports.useInsertionEffect(()=>{const{width:o,height:a,top:s,left:l}=i.current;if(t||!r.current||!o||!a)return;r.current.dataset.motionPopId=n;const c=document.createElement("style");return document.head.appendChild(c),c.sheet&&c.sheet.insertRule(` - [data-motion-pop-id="${n}"] { - position: absolute !important; - width: ${o}px !important; - height: ${a}px !important; - top: ${s}px !important; - left: ${l}px !important; - } - `),()=>{document.head.removeChild(c)}},[t]),w(vue,{isPresent:t,childRef:r,sizeRef:i,children:C.exports.cloneElement(e,{ref:r})})}const Yb=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:a})=>{const s=L5(xue),l=C.exports.useId(),c=C.exports.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:p=>{s.set(p,!0);for(const g of s.values())if(!g)return;r&&r()},register:p=>(s.set(p,!1),()=>s.delete(p))}),o?void 0:[n]);return C.exports.useMemo(()=>{s.forEach((p,g)=>s.set(g,!1))},[n]),C.exports.useEffect(()=>{!n&&!s.size&&r&&r()},[n]),a==="popLayout"&&(e=w(yue,{isPresent:n,children:e})),w(I0.Provider,{value:c,children:e})};function xue(){return new Map}const yp=e=>e.key||"";function bue(e,t){e.forEach(n=>{const r=yp(n);t.set(r,n)})}function Sue(e){const t=[];return C.exports.Children.forEach(e,n=>{C.exports.isValidElement(n)&&t.push(n)}),t}const wu=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:a="sync"})=>{i&&(a="wait",IN(!1,"Replace exitBeforeEnter with mode='wait'"));let[s]=mue();const l=C.exports.useContext(nC).forceRender;l&&(s=l);const c=aD(),p=Sue(e);let g=p;const m=new Set,y=C.exports.useRef(g),b=C.exports.useRef(new Map).current,S=C.exports.useRef(!0);if(n4(()=>{S.current=!1,bue(p,b),y.current=g}),dC(()=>{S.current=!0,b.clear(),m.clear()}),S.current)return w(Fn,{children:g.map(L=>w(Yb,{isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:a,children:L},yp(L)))});g=[...g];const T=y.current.map(yp),E=p.map(yp),k=T.length;for(let L=0;L{if(E.indexOf(L)!==-1)return;const I=b.get(L);if(!I)return;const O=T.indexOf(L),D=()=>{b.delete(L),m.delete(L);const N=y.current.findIndex(z=>z.key===L);if(y.current.splice(N,1),!m.size){if(y.current=p,c.current===!1)return;s(),r&&r()}};g.splice(O,0,w(Yb,{isPresent:!1,onExitComplete:D,custom:t,presenceAffectsLayout:o,mode:a,children:I},yp(I)))}),g=g.map(L=>{const I=L.key;return m.has(I)?L:w(Yb,{isPresent:!0,presenceAffectsLayout:o,mode:a,children:L},yp(L))}),AN!=="production"&&a==="wait"&&g.length>1&&console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to "wait". This will lead to odd visual behaviour.`),w(Fn,{children:m.size?g:g.map(L=>C.exports.cloneElement(L))})};var ul=function(){return ul=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0&&o[o.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]0)&&!(i=r.next()).done;)o.push(i.value)}catch(s){a={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return o}function E6(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,o;re.filter(Boolean).join(" ");function wue(){return!1}var Cue=e=>{const{condition:t,message:n}=e;t&&wue()&&console.warn(n)},wf={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},ug={scale:{enter:{scale:1},exit:{scale:.95}},fade:{enter:{opacity:1},exit:{opacity:0}},pushLeft:{enter:{x:"100%"},exit:{x:"-30%"}},pushRight:{enter:{x:"-100%"},exit:{x:"30%"}},pushUp:{enter:{y:"100%"},exit:{y:"-30%"}},pushDown:{enter:{y:"-100%"},exit:{y:"30%"}},slideLeft:{position:{left:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"-100%",y:0}},slideRight:{position:{right:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"100%",y:0}},slideUp:{position:{top:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"-100%"}},slideDown:{position:{bottom:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"100%"}}};function P6(e){switch(e?.direction??"right"){case"right":return ug.slideRight;case"left":return ug.slideLeft;case"bottom":return ug.slideDown;case"top":return ug.slideUp;default:return ug.slideRight}}var If={enter:{duration:.2,ease:wf.easeOut},exit:{duration:.1,ease:wf.easeIn}},bs={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t?.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t?.exit})},_ue=e=>e!=null&&parseInt(e.toString(),10)>0,kT={exit:{height:{duration:.2,ease:wf.ease},opacity:{duration:.3,ease:wf.ease}},enter:{height:{duration:.3,ease:wf.ease},opacity:{duration:.4,ease:wf.ease}}},kue={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:i})=>({...e&&{opacity:_ue(t)?1:0},height:t,transitionEnd:r?.exit,transition:n?.exit??bs.exit(kT.exit,i)}),enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:i})=>({...e&&{opacity:1},height:t,transitionEnd:r?.enter,transition:n?.enter??bs.enter(kT.enter,i)})},lD=C.exports.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:i=!0,startingHeight:o=0,endingHeight:a="auto",style:s,className:l,transition:c,transitionEnd:p,...g}=e,[m,y]=C.exports.useState(!1);C.exports.useEffect(()=>{const k=setTimeout(()=>{y(!0)});return()=>clearTimeout(k)},[]),Cue({condition:Boolean(o>0&&r),message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const b=parseFloat(o.toString())>0,S={startingHeight:o,endingHeight:a,animateOpacity:i,transition:m?c:{enter:{duration:0}},transitionEnd:{enter:p?.enter,exit:r?p?.exit:{...p?.exit,display:b?"block":"none"}}},T=r?n:!0,E=n||r?"enter":"exit";return w(wu,{initial:!1,custom:S,children:T&&re.createElement(Ha.div,{ref:t,...g,className:Sv("chakra-collapse",l),style:{overflow:"hidden",display:"block",...s},custom:S,variants:kue,initial:r?"exit":!1,animate:E,exit:"exit"})})});lD.displayName="Collapse";var Eue={enter:({transition:e,transitionEnd:t,delay:n}={})=>({opacity:1,transition:e?.enter??bs.enter(If.enter,n),transitionEnd:t?.enter}),exit:({transition:e,transitionEnd:t,delay:n}={})=>({opacity:0,transition:e?.exit??bs.exit(If.exit,n),transitionEnd:t?.exit})},uD={initial:"exit",animate:"enter",exit:"exit",variants:Eue},Pue=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,className:o,transition:a,transitionEnd:s,delay:l,...c}=t,p=i||r?"enter":"exit",g=r?i&&r:!0,m={transition:a,transitionEnd:s,delay:l};return w(wu,{custom:m,children:g&&re.createElement(Ha.div,{ref:n,className:Sv("chakra-fade",o),custom:m,...uD,animate:p,...c})})});Pue.displayName="Fade";var Tue={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:i})=>({opacity:0,...e?{scale:t,transitionEnd:r?.exit}:{transitionEnd:{scale:t,...r?.exit}},transition:n?.exit??bs.exit(If.exit,i)}),enter:({transitionEnd:e,transition:t,delay:n})=>({opacity:1,scale:1,transition:t?.enter??bs.enter(If.enter,n),transitionEnd:e?.enter})},cD={initial:"exit",animate:"enter",exit:"exit",variants:Tue},Lue=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,reverse:o=!0,initialScale:a=.95,className:s,transition:l,transitionEnd:c,delay:p,...g}=t,m=r?i&&r:!0,y=i||r?"enter":"exit",b={initialScale:a,reverse:o,transition:l,transitionEnd:c,delay:p};return w(wu,{custom:b,children:m&&re.createElement(Ha.div,{ref:n,className:Sv("chakra-offset-slide",s),...cD,animate:y,custom:b,...g})})});Lue.displayName="ScaleFade";var ET={exit:{duration:.15,ease:wf.easeInOut},enter:{type:"spring",damping:25,stiffness:180}},Aue={exit:({direction:e,transition:t,transitionEnd:n,delay:r})=>{const{exit:i}=P6({direction:e});return{...i,transition:t?.exit??bs.exit(ET.exit,r),transitionEnd:n?.exit}},enter:({direction:e,transitionEnd:t,transition:n,delay:r})=>{const{enter:i}=P6({direction:e});return{...i,transition:n?.enter??bs.enter(ET.enter,r),transitionEnd:t?.enter}}},dD=C.exports.forwardRef(function(t,n){const{direction:r="right",style:i,unmountOnExit:o,in:a,className:s,transition:l,transitionEnd:c,delay:p,motionProps:g,...m}=t,y=P6({direction:r}),b=Object.assign({position:"fixed"},y.position,i),S=o?a&&o:!0,T=a||o?"enter":"exit",E={transitionEnd:c,transition:l,direction:r,delay:p};return w(wu,{custom:E,children:S&&re.createElement(Ha.div,{...m,ref:n,initial:"exit",className:Sv("chakra-slide",s),animate:T,exit:"exit",custom:E,variants:Aue,style:b,...g})})});dD.displayName="Slide";var Iue={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:i})=>({opacity:0,x:e,y:t,transition:n?.exit??bs.exit(If.exit,i),transitionEnd:r?.exit}),enter:({transition:e,transitionEnd:t,delay:n})=>({opacity:1,x:0,y:0,transition:e?.enter??bs.enter(If.enter,n),transitionEnd:t?.enter}),exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:i,delay:o})=>{const a={x:t,y:e};return{opacity:0,transition:n?.exit??bs.exit(If.exit,o),...i?{...a,transitionEnd:r?.exit}:{transitionEnd:{...a,...r?.exit}}}}},T6={initial:"initial",animate:"enter",exit:"exit",variants:Iue},Mue=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,reverse:o=!0,className:a,offsetX:s=0,offsetY:l=8,transition:c,transitionEnd:p,delay:g,...m}=t,y=r?i&&r:!0,b=i||r?"enter":"exit",S={offsetX:s,offsetY:l,reverse:o,transition:c,transitionEnd:p,delay:g};return w(wu,{custom:S,children:y&&re.createElement(Ha.div,{ref:n,className:Sv("chakra-offset-slide",a),custom:S,...T6,animate:b,...m})})});Mue.displayName="SlideFade";var wv=(...e)=>e.filter(Boolean).join(" ");function Rue(){return!1}var D5=e=>{const{condition:t,message:n}=e;t&&Rue()&&console.warn(n)};function Xb(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[Oue,z5]=xn({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[Nue,PC]=xn({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[Due,LCe,zue,Fue]=MO(),Cf=ke(function(t,n){const{getButtonProps:r}=PC(),i=r(t,n),a={display:"flex",alignItems:"center",width:"100%",outline:0,...z5().button};return re.createElement(be.button,{...i,className:wv("chakra-accordion__button",t.className),__css:a})});Cf.displayName="AccordionButton";function Bue(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:i,allowToggle:o,...a}=e;Wue(e),Vue(e);const s=zue(),[l,c]=C.exports.useState(-1);C.exports.useEffect(()=>()=>{c(-1)},[]);const[p,g]=k5({value:r,defaultValue(){return i?n??[]:n??-1},onChange:t});return{index:p,setIndex:g,htmlProps:a,getAccordionItemProps:y=>{let b=!1;return y!==null&&(b=Array.isArray(p)?p.includes(y):p===y),{isOpen:b,onChange:T=>{if(y!==null)if(i&&Array.isArray(p)){const E=T?p.concat(y):p.filter(k=>k!==y);g(E)}else T?g(y):o&&g(-1)}}},focusedIndex:l,setFocusedIndex:c,descendants:s}}var[$ue,TC]=xn({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function Hue(e){const{isDisabled:t,isFocusable:n,id:r,...i}=e,{getAccordionItemProps:o,setFocusedIndex:a}=TC(),s=C.exports.useRef(null),l=C.exports.useId(),c=r??l,p=`accordion-button-${c}`,g=`accordion-panel-${c}`;Uue(e);const{register:m,index:y,descendants:b}=Fue({disabled:t&&!n}),{isOpen:S,onChange:T}=o(y===-1?null:y);Gue({isOpen:S,isDisabled:t});const E=()=>{T?.(!0)},k=()=>{T?.(!1)},L=C.exports.useCallback(()=>{T?.(!S),a(y)},[y,a,S,T]),I=C.exports.useCallback(z=>{const V={ArrowDown:()=>{const q=b.nextEnabled(y);q?.node.focus()},ArrowUp:()=>{const q=b.prevEnabled(y);q?.node.focus()},Home:()=>{const q=b.firstEnabled();q?.node.focus()},End:()=>{const q=b.lastEnabled();q?.node.focus()}}[z.key];V&&(z.preventDefault(),V(z))},[b,y]),O=C.exports.useCallback(()=>{a(y)},[a,y]),D=C.exports.useCallback(function(W={},V=null){return{...W,type:"button",ref:zn(m,s,V),id:p,disabled:!!t,"aria-expanded":!!S,"aria-controls":g,onClick:Xb(W.onClick,L),onFocus:Xb(W.onFocus,O),onKeyDown:Xb(W.onKeyDown,I)}},[p,t,S,L,O,I,g,m]),N=C.exports.useCallback(function(W={},V=null){return{...W,ref:V,role:"region",id:g,"aria-labelledby":p,hidden:!S}},[p,S,g]);return{isOpen:S,isDisabled:t,isFocusable:n,onOpen:E,onClose:k,getButtonProps:D,getPanelProps:N,htmlProps:i}}function Wue(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;D5({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function Vue(e){D5({condition:!!(e.allowMultiple&&e.allowToggle),message:"If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not"})}function Uue(e){D5({condition:!!(e.isFocusable&&!e.isDisabled),message:`Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well. - `})}function Gue(e){D5({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function _f(e){const{isOpen:t,isDisabled:n}=PC(),{reduceMotion:r}=TC(),i=wv("chakra-accordion__icon",e.className),o=z5(),a={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...o.icon};return w(ha,{viewBox:"0 0 24 24","aria-hidden":!0,className:i,__css:a,...e,children:w("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}_f.displayName="AccordionIcon";var kf=ke(function(t,n){const{children:r,className:i}=t,{htmlProps:o,...a}=Hue(t),l={...z5().container,overflowAnchor:"none"},c=C.exports.useMemo(()=>a,[a]);return re.createElement(Nue,{value:c},re.createElement(be.div,{ref:n,...o,className:wv("chakra-accordion__item",i),__css:l},typeof r=="function"?r({isExpanded:!!a.isOpen,isDisabled:!!a.isDisabled}):r))});kf.displayName="AccordionItem";var Ef=ke(function(t,n){const{className:r,motionProps:i,...o}=t,{reduceMotion:a}=TC(),{getPanelProps:s,isOpen:l}=PC(),c=s(o,n),p=wv("chakra-accordion__panel",r),g=z5();a||delete c.hidden;const m=re.createElement(be.div,{...c,__css:g.panel,className:p});return a?m:w(lD,{in:l,...i,children:m})});Ef.displayName="AccordionPanel";var F5=ke(function({children:t,reduceMotion:n,...r},i){const o=Ai("Accordion",r),a=hn(r),{htmlProps:s,descendants:l,...c}=Bue(a),p=C.exports.useMemo(()=>({...c,reduceMotion:!!n}),[c,n]);return re.createElement(Due,{value:l},re.createElement($ue,{value:p},re.createElement(Oue,{value:o},re.createElement(be.div,{ref:i,...s,className:wv("chakra-accordion",r.className),__css:o.root},t))))});F5.displayName="Accordion";var jue=(...e)=>e.filter(Boolean).join(" "),que=hv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Cv=ke((e,t)=>{const n=oo("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:a="transparent",className:s,...l}=hn(e),c=jue("chakra-spinner",s),p={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:a,borderLeftColor:a,animation:`${que} ${o} linear infinite`,...n};return re.createElement(be.div,{ref:t,__css:p,className:c,...l},r&&re.createElement(be.span,{srOnly:!0},r))});Cv.displayName="Spinner";var B5=(...e)=>e.filter(Boolean).join(" ");function Kue(e){return w(ha,{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"})})}function Zue(e){return w(ha,{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"})})}function PT(e){return w(ha,{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})}var[Yue,Xue]=xn({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[Que,LC]=xn({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),fD={info:{icon:Zue,colorScheme:"blue"},warning:{icon:PT,colorScheme:"orange"},success:{icon:Kue,colorScheme:"green"},error:{icon:PT,colorScheme:"red"},loading:{icon:Cv,colorScheme:"blue"}};function Jue(e){return fD[e].colorScheme}function ece(e){return fD[e].icon}var hD=ke(function(t,n){const{status:r="info",addRole:i=!0,...o}=hn(t),a=t.colorScheme??Jue(r),s=Ai("Alert",{...t,colorScheme:a}),l={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...s.container};return re.createElement(Yue,{value:{status:r}},re.createElement(Que,{value:s},re.createElement(be.div,{role:i?"alert":void 0,ref:n,...o,className:B5("chakra-alert",t.className),__css:l})))});hD.displayName="Alert";var pD=ke(function(t,n){const i={display:"inline",...LC().description};return re.createElement(be.div,{ref:n,...t,className:B5("chakra-alert__desc",t.className),__css:i})});pD.displayName="AlertDescription";function gD(e){const{status:t}=Xue(),n=ece(t),r=LC(),i=t==="loading"?r.spinner:r.icon;return re.createElement(be.span,{display:"inherit",...e,className:B5("chakra-alert__icon",e.className),__css:i},e.children||w(n,{h:"100%",w:"100%"}))}gD.displayName="AlertIcon";var mD=ke(function(t,n){const r=LC();return re.createElement(be.div,{ref:n,...t,className:B5("chakra-alert__title",t.className),__css:r.title})});mD.displayName="AlertTitle";function tce(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function nce(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:a,sizes:s,ignoreFallback:l}=e,[c,p]=C.exports.useState("pending");C.exports.useEffect(()=>{p(n?"loading":"pending")},[n]);const g=C.exports.useRef(),m=C.exports.useCallback(()=>{if(!n)return;y();const b=new Image;b.src=n,a&&(b.crossOrigin=a),r&&(b.srcset=r),s&&(b.sizes=s),t&&(b.loading=t),b.onload=S=>{y(),p("loaded"),i?.(S)},b.onerror=S=>{y(),p("failed"),o?.(S)},g.current=b},[n,a,r,s,i,o,t]),y=()=>{g.current&&(g.current.onload=null,g.current.onerror=null,g.current=null)};return pl(()=>{if(!l)return c==="loading"&&m(),()=>{y()}},[c,m,l]),l?"loaded":c}var rce=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError",p4=ke(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...a}=t;return w("img",{width:r,height:i,ref:n,alt:o,...a})});p4.displayName="NativeImage";var $5=ke(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:a,align:s,fit:l,loading:c,ignoreFallback:p,crossOrigin:g,fallbackStrategy:m="beforeLoadOrError",referrerPolicy:y,...b}=t,S=r!==void 0||i!==void 0,T=c!=null||p||!S,E=nce({...t,ignoreFallback:T}),k=rce(E,m),L={ref:n,objectFit:l,objectPosition:s,...T?b:tce(b,["onError","onLoad"])};return k?i||re.createElement(be.img,{as:p4,className:"chakra-image__placeholder",src:r,...L}):re.createElement(be.img,{as:p4,src:o,srcSet:a,crossOrigin:g,loading:c,referrerPolicy:y,className:"chakra-image",...L})});$5.displayName="Image";ke((e,t)=>re.createElement(be.img,{ref:t,as:p4,className:"chakra-image",...e}));function H5(e){return C.exports.Children.toArray(e).filter(t=>C.exports.isValidElement(t))}var W5=(...e)=>e.filter(Boolean).join(" "),TT=e=>e?"":void 0,[ice,oce]=xn({strict:!1,name:"ButtonGroupContext"});function L6(e){const{children:t,className:n,...r}=e,i=C.exports.isValidElement(t)?C.exports.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,o=W5("chakra-button__icon",n);return re.createElement(be.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:o},i)}L6.displayName="ButtonIcon";function A6(e){const{label:t,placement:n,spacing:r="0.5rem",children:i=w(Cv,{color:"currentColor",width:"1em",height:"1em"}),className:o,__css:a,...s}=e,l=W5("chakra-button__spinner",o),c=n==="start"?"marginEnd":"marginStart",p=C.exports.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[c]:t?r:0,fontSize:"1em",lineHeight:"normal",...a}),[a,t,c,r]);return re.createElement(be.div,{className:l,...s,__css:p},i)}A6.displayName="ButtonSpinner";function ace(e){const[t,n]=C.exports.useState(!e);return{ref:C.exports.useCallback(o=>{!o||n(o.tagName==="BUTTON")},[]),type:t?"button":void 0}}var Oa=ke((e,t)=>{const n=oce(),r=oo("Button",{...n,...e}),{isDisabled:i=n?.isDisabled,isLoading:o,isActive:a,children:s,leftIcon:l,rightIcon:c,loadingText:p,iconSpacing:g="0.5rem",type:m,spinner:y,spinnerPlacement:b="start",className:S,as:T,...E}=hn(e),k=C.exports.useMemo(()=>{const D={...r?._focus,zIndex:1};return{display:"inline-flex",appearance:"none",alignItems:"center",justifyContent:"center",userSelect:"none",position:"relative",whiteSpace:"nowrap",verticalAlign:"middle",outline:"none",...r,...!!n&&{_focus:D}}},[r,n]),{ref:L,type:I}=ace(T),O={rightIcon:c,leftIcon:l,iconSpacing:g,children:s};return re.createElement(be.button,{disabled:i||o,ref:Lie(t,L),as:T,type:m??I,"data-active":TT(a),"data-loading":TT(o),__css:k,className:W5("chakra-button",S),...E},o&&b==="start"&&w(A6,{className:"chakra-button__spinner--start",label:p,placement:"start",spacing:g,children:y}),o?p||re.createElement(be.span,{opacity:0},w(LT,{...O})):w(LT,{...O}),o&&b==="end"&&w(A6,{className:"chakra-button__spinner--end",label:p,placement:"end",spacing:g,children:y}))});Oa.displayName="Button";function LT(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:i}=e;return ne(Fn,{children:[t&&w(L6,{marginEnd:i,children:t}),r,n&&w(L6,{marginStart:i,children:n})]})}var au=ke(function(t,n){const{size:r,colorScheme:i,variant:o,className:a,spacing:s="0.5rem",isAttached:l,isDisabled:c,...p}=t,g=W5("chakra-button__group",a),m=C.exports.useMemo(()=>({size:r,colorScheme:i,variant:o,isDisabled:c}),[r,i,o,c]);let y={display:"inline-flex"};return l?y={...y,"> *:first-of-type:not(:last-of-type)":{borderEndRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderStartRadius:0}}:y={...y,"& > *:not(style) ~ *:not(style)":{marginStart:s}},re.createElement(ice,{value:m},re.createElement(be.div,{ref:n,role:"group",__css:y,className:g,"data-attached":l?"":void 0,...p}))});au.displayName="ButtonGroup";var gu=ke((e,t)=>{const{icon:n,children:r,isRound:i,"aria-label":o,...a}=e,s=n||r,l=C.exports.isValidElement(s)?C.exports.cloneElement(s,{"aria-hidden":!0,focusable:!1}):null;return w(Oa,{padding:"0",borderRadius:i?"full":void 0,ref:t,"aria-label":o,...a,children:l})});gu.displayName="IconButton";var O0=(...e)=>e.filter(Boolean).join(" "),ey=e=>e?"":void 0,Qb=e=>e?!0:void 0;function AT(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[sce,vD]=xn({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[lce,N0]=xn({strict:!1,name:"FormControlContext"});function uce(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:i,isReadOnly:o,...a}=e,s=C.exports.useId(),l=t||`field-${s}`,c=`${l}-label`,p=`${l}-feedback`,g=`${l}-helptext`,[m,y]=C.exports.useState(!1),[b,S]=C.exports.useState(!1),[T,E]=C.exports.useState(!1),k=C.exports.useCallback((N={},z=null)=>({id:g,...N,ref:zn(z,W=>{!W||S(!0)})}),[g]),L=C.exports.useCallback((N={},z=null)=>({...N,ref:z,"data-focus":ey(T),"data-disabled":ey(i),"data-invalid":ey(r),"data-readonly":ey(o),id:N.id??c,htmlFor:N.htmlFor??l}),[l,i,T,r,o,c]),I=C.exports.useCallback((N={},z=null)=>({id:p,...N,ref:zn(z,W=>{!W||y(!0)}),"aria-live":"polite"}),[p]),O=C.exports.useCallback((N={},z=null)=>({...N,...a,ref:z,role:"group"}),[a]),D=C.exports.useCallback((N={},z=null)=>({...N,ref:z,role:"presentation","aria-hidden":!0,children:N.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!o,isDisabled:!!i,isFocused:!!T,onFocus:()=>E(!0),onBlur:()=>E(!1),hasFeedbackText:m,setHasFeedbackText:y,hasHelpText:b,setHasHelpText:S,id:l,labelId:c,feedbackId:p,helpTextId:g,htmlProps:a,getHelpTextProps:k,getErrorMessageProps:I,getRootProps:O,getLabelProps:L,getRequiredIndicatorProps:D}}var rd=ke(function(t,n){const r=Ai("Form",t),i=hn(t),{getRootProps:o,htmlProps:a,...s}=uce(i),l=O0("chakra-form-control",t.className);return re.createElement(lce,{value:s},re.createElement(sce,{value:r},re.createElement(be.div,{...o({},n),className:l,__css:r.container})))});rd.displayName="FormControl";var cce=ke(function(t,n){const r=N0(),i=vD(),o=O0("chakra-form__helper-text",t.className);return re.createElement(be.div,{...r?.getHelpTextProps(t,n),__css:i.helperText,className:o})});cce.displayName="FormHelperText";function AC(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:i,...o}=IC(e);return{...o,disabled:t,readOnly:r,required:i,"aria-invalid":Qb(n),"aria-required":Qb(i),"aria-readonly":Qb(r)}}function IC(e){const t=N0(),{id:n,disabled:r,readOnly:i,required:o,isRequired:a,isInvalid:s,isReadOnly:l,isDisabled:c,onFocus:p,onBlur:g,...m}=e,y=e["aria-describedby"]?[e["aria-describedby"]]:[];return t?.hasFeedbackText&&t?.isInvalid&&y.push(t.feedbackId),t?.hasHelpText&&y.push(t.helpTextId),{...m,"aria-describedby":y.join(" ")||void 0,id:n??t?.id,isDisabled:r??c??t?.isDisabled,isReadOnly:i??l??t?.isReadOnly,isRequired:o??a??t?.isRequired,isInvalid:s??t?.isInvalid,onFocus:AT(t?.onFocus,p),onBlur:AT(t?.onBlur,g)}}var[dce,fce]=xn({name:"FormErrorStylesContext",errorMessage:`useFormErrorStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),hce=ke((e,t)=>{const n=Ai("FormError",e),r=hn(e),i=N0();return i?.isInvalid?re.createElement(dce,{value:n},re.createElement(be.div,{...i?.getErrorMessageProps(r,t),className:O0("chakra-form__error-message",e.className),__css:{display:"flex",alignItems:"center",...n.text}})):null});hce.displayName="FormErrorMessage";var pce=ke((e,t)=>{const n=fce(),r=N0();if(!r?.isInvalid)return null;const i=O0("chakra-form__error-icon",e.className);return w(ha,{ref:t,"aria-hidden":!0,...e,__css:n.icon,className:i,children:w("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})});pce.displayName="FormErrorIcon";var Yf=ke(function(t,n){const r=oo("FormLabel",t),i=hn(t),{className:o,children:a,requiredIndicator:s=w(yD,{}),optionalIndicator:l=null,...c}=i,p=N0(),g=p?.getLabelProps(c,n)??{ref:n,...c};return re.createElement(be.label,{...g,className:O0("chakra-form__label",i.className),__css:{display:"block",textAlign:"start",...r}},a,p?.isRequired?s:l)});Yf.displayName="FormLabel";var yD=ke(function(t,n){const r=N0(),i=vD();if(!r?.isRequired)return null;const o=O0("chakra-form__required-indicator",t.className);return re.createElement(be.span,{...r?.getRequiredIndicatorProps(t,n),__css:i.requiredIndicator,className:o})});yD.displayName="RequiredIndicator";function qc(e,t){const n=C.exports.useRef(!1),r=C.exports.useRef(!1);C.exports.useEffect(()=>{if(n.current&&r.current)return e();r.current=!0},t),C.exports.useEffect(()=>(n.current=!0,()=>{n.current=!1}),[])}var MC={border:"0px",clip:"rect(0px, 0px, 0px, 0px)",height:"1px",width:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},gce=be("span",{baseStyle:MC});gce.displayName="VisuallyHidden";var mce=be("input",{baseStyle:MC});mce.displayName="VisuallyHiddenInput";var IT=!1,V5=null,m0=!1,I6=new Set,vce=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function yce(e){return!(e.metaKey||!vce&&e.altKey||e.ctrlKey)}function RC(e,t){I6.forEach(n=>n(e,t))}function MT(e){m0=!0,yce(e)&&(V5="keyboard",RC("keyboard",e))}function ap(e){V5="pointer",(e.type==="mousedown"||e.type==="pointerdown")&&(m0=!0,RC("pointer",e))}function xce(e){e.target===window||e.target===document||(m0||(V5="keyboard",RC("keyboard",e)),m0=!1)}function bce(){m0=!1}function RT(){return V5!=="pointer"}function Sce(){if(typeof window>"u"||IT)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){m0=!0,e.apply(this,n)},document.addEventListener("keydown",MT,!0),document.addEventListener("keyup",MT,!0),window.addEventListener("focus",xce,!0),window.addEventListener("blur",bce,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",ap,!0),document.addEventListener("pointermove",ap,!0),document.addEventListener("pointerup",ap,!0)):(document.addEventListener("mousedown",ap,!0),document.addEventListener("mousemove",ap,!0),document.addEventListener("mouseup",ap,!0)),IT=!0}function wce(e){Sce(),e(RT());const t=()=>e(RT());return I6.add(t),()=>{I6.delete(t)}}var[ACe,Cce]=xn({name:"CheckboxGroupContext",strict:!1}),_ce=(...e)=>e.filter(Boolean).join(" "),Yi=e=>e?"":void 0;function _a(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}function kce(...e){return function(n){e.forEach(r=>{r?.(n)})}}var xD=be(Ha.svg);function Ece(e){return w(xD,{width:"1.2em",viewBox:"0 0 12 10",variants:{unchecked:{opacity:0,strokeDashoffset:16},checked:{opacity:1,strokeDashoffset:0,transition:{duration:.2}}},style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:w("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function Pce(e){return w(xD,{width:"1.2em",viewBox:"0 0 24 24",variants:{unchecked:{scaleX:.65,opacity:0},checked:{scaleX:1,opacity:1,transition:{scaleX:{duration:0},opacity:{duration:.02}}}},style:{stroke:"currentColor",strokeWidth:4},...e,children:w("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function Tce({open:e,children:t}){return w(wu,{initial:!1,children:e&&re.createElement(Ha.div,{variants:{unchecked:{scale:.5},checked:{scale:1}},initial:"unchecked",animate:"checked",exit:"unchecked",style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"}},t)})}function Lce(e){const{isIndeterminate:t,isChecked:n,...r}=e;return w(Tce,{open:n||t,children:w(t?Pce:Ece,{...r})})}function Ace(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function bD(e={}){const t=IC(e),{isDisabled:n,isReadOnly:r,isRequired:i,isInvalid:o,id:a,onBlur:s,onFocus:l,"aria-describedby":c}=t,{defaultChecked:p,isChecked:g,isFocusable:m,onChange:y,isIndeterminate:b,name:S,value:T,tabIndex:E=void 0,"aria-label":k,"aria-labelledby":L,"aria-invalid":I,...O}=e,D=Ace(O,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),N=ur(y),z=ur(s),W=ur(l),[V,q]=C.exports.useState(!1),[he,de]=C.exports.useState(!1),[ve,Ee]=C.exports.useState(!1),[xe,Z]=C.exports.useState(!1);C.exports.useEffect(()=>wce(q),[]);const U=C.exports.useRef(null),[ee,ae]=C.exports.useState(!0),[X,me]=C.exports.useState(!!p),ye=g!==void 0,Se=ye?g:X,He=C.exports.useCallback(Le=>{if(r||n){Le.preventDefault();return}ye||me(Se?Le.target.checked:b?!0:Le.target.checked),N?.(Le)},[r,n,Se,ye,b,N]);pl(()=>{U.current&&(U.current.indeterminate=Boolean(b))},[b]),qc(()=>{n&&de(!1)},[n,de]),pl(()=>{const Le=U.current;!Le?.form||(Le.form.onreset=()=>{me(!!p)})},[]);const je=n&&!m,ut=C.exports.useCallback(Le=>{Le.key===" "&&Z(!0)},[Z]),qe=C.exports.useCallback(Le=>{Le.key===" "&&Z(!1)},[Z]);pl(()=>{if(!U.current)return;U.current.checked!==Se&&me(U.current.checked)},[U.current]);const ot=C.exports.useCallback((Le={},st=null)=>{const Lt=it=>{he&&it.preventDefault(),Z(!0)};return{...Le,ref:st,"data-active":Yi(xe),"data-hover":Yi(ve),"data-checked":Yi(Se),"data-focus":Yi(he),"data-focus-visible":Yi(he&&V),"data-indeterminate":Yi(b),"data-disabled":Yi(n),"data-invalid":Yi(o),"data-readonly":Yi(r),"aria-hidden":!0,onMouseDown:_a(Le.onMouseDown,Lt),onMouseUp:_a(Le.onMouseUp,()=>Z(!1)),onMouseEnter:_a(Le.onMouseEnter,()=>Ee(!0)),onMouseLeave:_a(Le.onMouseLeave,()=>Ee(!1))}},[xe,Se,n,he,V,ve,b,o,r]),tt=C.exports.useCallback((Le={},st=null)=>({...D,...Le,ref:zn(st,Lt=>{!Lt||ae(Lt.tagName==="LABEL")}),onClick:_a(Le.onClick,()=>{var Lt;ee||((Lt=U.current)==null||Lt.click(),requestAnimationFrame(()=>{var it;(it=U.current)==null||it.focus()}))}),"data-disabled":Yi(n),"data-checked":Yi(Se),"data-invalid":Yi(o)}),[D,n,Se,o,ee]),at=C.exports.useCallback((Le={},st=null)=>({...Le,ref:zn(U,st),type:"checkbox",name:S,value:T,id:a,tabIndex:E,onChange:_a(Le.onChange,He),onBlur:_a(Le.onBlur,z,()=>de(!1)),onFocus:_a(Le.onFocus,W,()=>de(!0)),onKeyDown:_a(Le.onKeyDown,ut),onKeyUp:_a(Le.onKeyUp,qe),required:i,checked:Se,disabled:je,readOnly:r,"aria-label":k,"aria-labelledby":L,"aria-invalid":I?Boolean(I):o,"aria-describedby":c,"aria-disabled":n,style:MC}),[S,T,a,He,z,W,ut,qe,i,Se,je,r,k,L,I,o,c,n,E]),Rt=C.exports.useCallback((Le={},st=null)=>({...Le,ref:st,onMouseDown:_a(Le.onMouseDown,OT),onTouchStart:_a(Le.onTouchStart,OT),"data-disabled":Yi(n),"data-checked":Yi(Se),"data-invalid":Yi(o)}),[Se,n,o]);return{state:{isInvalid:o,isFocused:he,isChecked:Se,isActive:xe,isHovered:ve,isIndeterminate:b,isDisabled:n,isReadOnly:r,isRequired:i},getRootProps:tt,getCheckboxProps:ot,getInputProps:at,getLabelProps:Rt,htmlProps:D}}function OT(e){e.preventDefault(),e.stopPropagation()}var Ice={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},Mce={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},SD=ke(function(t,n){const r=Cce(),i={...r,...t},o=Ai("Checkbox",i),a=hn(t),{spacing:s="0.5rem",className:l,children:c,iconColor:p,iconSize:g,icon:m=w(Lce,{}),isChecked:y,isDisabled:b=r?.isDisabled,onChange:S,inputProps:T,...E}=a;let k=y;r?.value&&a.value&&(k=r.value.includes(a.value));let L=S;r?.onChange&&a.value&&(L=kce(r.onChange,S));const{state:I,getInputProps:O,getCheckboxProps:D,getLabelProps:N,getRootProps:z}=bD({...E,isDisabled:b,isChecked:k,onChange:L}),W=C.exports.useMemo(()=>({opacity:I.isChecked||I.isIndeterminate?1:0,transform:I.isChecked||I.isIndeterminate?"scale(1)":"scale(0.95)",fontSize:g,color:p,...o.icon}),[p,g,I.isChecked,I.isIndeterminate,o.icon]),V=C.exports.cloneElement(m,{__css:W,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return re.createElement(be.label,{__css:{...Mce,...o.container},className:_ce("chakra-checkbox",l),...z()},w("input",{className:"chakra-checkbox__input",...O(T,n)}),re.createElement(be.span,{__css:{...Ice,...o.control},className:"chakra-checkbox__control",...D()},V),c&&re.createElement(be.span,{className:"chakra-checkbox__label",...N(),__css:{marginStart:s,...o.label}},c))});SD.displayName="Checkbox";function Rce(e){return w(ha,{focusable:"false","aria-hidden":!0,...e,children:w("path",{fill:"currentColor",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"})})}var U5=ke(function(t,n){const r=oo("CloseButton",t),{children:i,isDisabled:o,__css:a,...s}=hn(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return re.createElement(be.button,{type:"button","aria-label":"Close",ref:n,disabled:o,__css:{...l,...r,...a},...s},i||w(Rce,{width:"1em",height:"1em"}))});U5.displayName="CloseButton";function Oce(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function OC(e,t){let n=Oce(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function M6(e){if(!Number.isFinite(e))return 0;let t=1,n=0;for(;Math.round(e*t)/t!==e;)t*=10,n+=1;return n}function g4(e,t,n){return(e-t)*100/(n-t)}function wD(e,t,n){return(n-t)*e+t}function R6(e,t,n){const r=Math.round((e-t)/n)*n+t,i=M6(n);return OC(r,i)}function Yp(e,t,n){return e==null?e:(nr==null?"":Jb(r,o,n)??""),m=typeof i<"u",y=m?i:p,b=CD(xc(y),o),S=n??b,T=C.exports.useCallback(V=>{V!==y&&(m||g(V.toString()),c?.(V.toString(),xc(V)))},[c,m,y]),E=C.exports.useCallback(V=>{let q=V;return l&&(q=Yp(q,a,s)),OC(q,S)},[S,l,s,a]),k=C.exports.useCallback((V=o)=>{let q;y===""?q=xc(V):q=xc(y)+V,q=E(q),T(q)},[E,o,T,y]),L=C.exports.useCallback((V=o)=>{let q;y===""?q=xc(-V):q=xc(y)-V,q=E(q),T(q)},[E,o,T,y]),I=C.exports.useCallback(()=>{let V;r==null?V="":V=Jb(r,o,n)??a,T(V)},[r,n,o,T,a]),O=C.exports.useCallback(V=>{const q=Jb(V,o,S)??a;T(q)},[S,o,T,a]),D=xc(y);return{isOutOfRange:D>s||Dw(S5,{styles:_D}),zce=()=>w(S5,{styles:` - html { - line-height: 1.5; - -webkit-text-size-adjust: 100%; - font-family: system-ui, sans-serif; - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; - -moz-osx-font-smoothing: grayscale; - touch-action: manipulation; - } - - body { - position: relative; - min-height: 100%; - font-feature-settings: 'kern'; - } - - *, - *::before, - *::after { - border-width: 0; - border-style: solid; - box-sizing: border-box; - } - - main { - display: block; - } - - hr { - border-top-width: 1px; - box-sizing: content-box; - height: 0; - overflow: visible; - } - - pre, - code, - kbd, - samp { - font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; - font-size: 1em; - } - - a { - background-color: transparent; - color: inherit; - text-decoration: inherit; - } - - abbr[title] { - border-bottom: none; - text-decoration: underline; - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - } - - b, - strong { - font-weight: bold; - } - - small { - font-size: 80%; - } - - sub, - sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; - } - - sub { - bottom: -0.25em; - } - - sup { - top: -0.5em; - } - - img { - border-style: none; - } - - button, - input, - optgroup, - select, - textarea { - font-family: inherit; - font-size: 100%; - line-height: 1.15; - margin: 0; - } - - button, - input { - overflow: visible; - } - - button, - select { - text-transform: none; - } - - button::-moz-focus-inner, - [type="button"]::-moz-focus-inner, - [type="reset"]::-moz-focus-inner, - [type="submit"]::-moz-focus-inner { - border-style: none; - padding: 0; - } - - fieldset { - padding: 0.35em 0.75em 0.625em; - } - - legend { - box-sizing: border-box; - color: inherit; - display: table; - max-width: 100%; - padding: 0; - white-space: normal; - } - - progress { - vertical-align: baseline; - } - - textarea { - overflow: auto; - } - - [type="checkbox"], - [type="radio"] { - box-sizing: border-box; - padding: 0; - } - - [type="number"]::-webkit-inner-spin-button, - [type="number"]::-webkit-outer-spin-button { - -webkit-appearance: none !important; - } - - input[type="number"] { - -moz-appearance: textfield; - } - - [type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; - } - - [type="search"]::-webkit-search-decoration { - -webkit-appearance: none !important; - } - - ::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; - } - - details { - display: block; - } - - summary { - display: list-item; - } - - template { - display: none; - } - - [hidden] { - display: none !important; - } - - body, - blockquote, - dl, - dd, - h1, - h2, - h3, - h4, - h5, - h6, - hr, - figure, - p, - pre { - margin: 0; - } - - button { - background: transparent; - padding: 0; - } - - fieldset { - margin: 0; - padding: 0; - } - - ol, - ul { - margin: 0; - padding: 0; - } - - textarea { - resize: vertical; - } - - button, - [role="button"] { - cursor: pointer; - } - - button::-moz-focus-inner { - border: 0 !important; - } - - table { - border-collapse: collapse; - } - - h1, - h2, - h3, - h4, - h5, - h6 { - font-size: inherit; - font-weight: inherit; - } - - button, - input, - optgroup, - select, - textarea { - padding: 0; - line-height: inherit; - color: inherit; - } - - img, - svg, - video, - canvas, - audio, - iframe, - embed, - object { - display: block; - } - - img, - video { - max-width: 100%; - height: auto; - } - - [data-js-focus-visible] :focus:not([data-focus-visible-added]):not([data-focus-visible-disabled]) { - outline: none; - box-shadow: none; - } - - select::-ms-expand { - display: none; - } - - ${_D} - `});function Mf(e,t,n,r){const i=ur(n);return C.exports.useEffect(()=>{const o=typeof e=="function"?e():e??document;if(!(!n||!o))return o.addEventListener(t,i,r),()=>{o.removeEventListener(t,i,r)}},[t,e,r,i,n]),()=>{const o=typeof e=="function"?e():e??document;o?.removeEventListener(t,i,r)}}function Fce(e){return"current"in e}var kD=()=>typeof window<"u";function Bce(){const e=navigator.userAgentData;return e?.platform??navigator.platform}var $ce=e=>kD()&&e.test(navigator.vendor),Hce=e=>kD()&&e.test(Bce()),Wce=()=>Hce(/mac|iphone|ipad|ipod/i),Vce=()=>Wce()&&$ce(/apple/i);function Uce(e){const{ref:t,elements:n,enabled:r}=e,i=()=>{var o;return((o=t.current)==null?void 0:o.ownerDocument)??document};Mf(i,"pointerdown",o=>{if(!Vce()||!r)return;const a=o.target,l=(n??[t]).some(c=>{const p=Fce(c)?c.current:c;return p?.contains(a)||p===a});i().activeElement!==a&&l&&(o.preventDefault(),a.focus())})}var Gce=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],r=0;r"u"){n&&console.warn("unable to use e.clipboardData"),n&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var g=NT[t.format]||NT.default;window.clipboardData.setData(g,e)}else p.clipboardData.clearData(),p.clipboardData.setData(t.format,e);t.onCopy&&(p.preventDefault(),t.onCopy(p.clipboardData))}),document.body.appendChild(s),o.selectNodeContents(s),a.addRange(o);var c=document.execCommand("copy");if(!c)throw new Error("copy command was unsuccessful");l=!0}catch(p){n&&console.error("unable to copy using execCommand: ",p),n&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),l=!0}catch(g){n&&console.error("unable to copy using clipboardData: ",g),n&&console.error("falling back to prompt"),r=Kce("message"in t?t.message:qce),window.prompt(r,e)}}finally{a&&(typeof a.removeRange=="function"?a.removeRange(o):a.removeAllRanges()),s&&document.body.removeChild(s),i()}return l}var Yce=Zce,Xce=OX?C.exports.useLayoutEffect:C.exports.useEffect;function DT(e,t=[]){const n=C.exports.useRef(e);return Xce(()=>{n.current=e}),C.exports.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function Qce(e,t={}){const[n,r]=C.exports.useState(!1),[i,o]=C.exports.useState(e),{timeout:a=1500,...s}=typeof t=="number"?{timeout:t}:t,l=C.exports.useCallback(()=>{const c=Yce(i,s);r(c)},[i,s]);return C.exports.useEffect(()=>{let c=null;return n&&(c=window.setTimeout(()=>{r(!1)},a)),()=>{c&&window.clearTimeout(c)}},[a,n]),{value:i,setValue:o,onCopy:l,hasCopied:n}}function Jce(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function ede(e,t){const n=C.exports.useId();return C.exports.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function m4(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=DT(n),a=DT(t),[s,l]=C.exports.useState(e.defaultIsOpen||!1),[c,p]=Jce(r,s),g=ede(i,"disclosure"),m=C.exports.useCallback(()=>{c||l(!1),a?.()},[c,a]),y=C.exports.useCallback(()=>{c||l(!0),o?.()},[c,o]),b=C.exports.useCallback(()=>{(p?m:y)()},[p,y,m]);return{isOpen:!!p,onOpen:y,onClose:m,onToggle:b,isControlled:c,getButtonProps:(S={})=>({...S,"aria-expanded":p,"aria-controls":g,onClick:NX(S.onClick,b)}),getDisclosureProps:(S={})=>({...S,hidden:!p,id:g})}}function NC(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var DC=ke(function(t,n){const{htmlSize:r,...i}=t,o=Ai("Input",i),a=hn(i),s=AC(a),l=Or("chakra-input",t.className);return re.createElement(be.input,{size:r,...s,__css:o.field,ref:n,className:l})});DC.displayName="Input";DC.id="Input";var[tde,ED]=xn({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),nde=ke(function(t,n){const r=Ai("Input",t),{children:i,className:o,...a}=hn(t),s=Or("chakra-input__group",o),l={},c=H5(i),p=r.field;c.forEach(m=>{!r||(p&&m.type.id==="InputLeftElement"&&(l.paddingStart=p.height??p.h),p&&m.type.id==="InputRightElement"&&(l.paddingEnd=p.height??p.h),m.type.id==="InputRightAddon"&&(l.borderEndRadius=0),m.type.id==="InputLeftAddon"&&(l.borderStartRadius=0))});const g=c.map(m=>{var y,b;const S=NC({size:((y=m.props)==null?void 0:y.size)||t.size,variant:((b=m.props)==null?void 0:b.variant)||t.variant});return m.type.id!=="Input"?C.exports.cloneElement(m,S):C.exports.cloneElement(m,Object.assign(S,l,m.props))});return re.createElement(be.div,{className:s,ref:n,__css:{width:"100%",display:"flex",position:"relative"},...a},w(tde,{value:r,children:g}))});nde.displayName="InputGroup";var rde={left:{marginEnd:"-1px",borderEndRadius:0,borderEndColor:"transparent"},right:{marginStart:"-1px",borderStartRadius:0,borderStartColor:"transparent"}},ide=be("div",{baseStyle:{flex:"0 0 auto",width:"auto",display:"flex",alignItems:"center",whiteSpace:"nowrap"}}),zC=ke(function(t,n){const{placement:r="left",...i}=t,o=rde[r]??{},a=ED();return w(ide,{ref:n,...i,__css:{...a.addon,...o}})});zC.displayName="InputAddon";var PD=ke(function(t,n){return w(zC,{ref:n,placement:"left",...t,className:Or("chakra-input__left-addon",t.className)})});PD.displayName="InputLeftAddon";PD.id="InputLeftAddon";var TD=ke(function(t,n){return w(zC,{ref:n,placement:"right",...t,className:Or("chakra-input__right-addon",t.className)})});TD.displayName="InputRightAddon";TD.id="InputRightAddon";var ode=be("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),G5=ke(function(t,n){const{placement:r="left",...i}=t,o=ED(),a=o.field,l={[r==="left"?"insetStart":"insetEnd"]:"0",width:a?.height??a?.h,height:a?.height??a?.h,fontSize:a?.fontSize,...o.element};return w(ode,{ref:n,__css:l,...i})});G5.id="InputElement";G5.displayName="InputElement";var LD=ke(function(t,n){const{className:r,...i}=t,o=Or("chakra-input__left-element",r);return w(G5,{ref:n,placement:"left",className:o,...i})});LD.id="InputLeftElement";LD.displayName="InputLeftElement";var AD=ke(function(t,n){const{className:r,...i}=t,o=Or("chakra-input__right-element",r);return w(G5,{ref:n,placement:"right",className:o,...i})});AD.id="InputRightElement";AD.displayName="InputRightElement";function ade(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}Object.freeze(["base","sm","md","lg","xl","2xl"]);function Kc(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):ade(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var sde=ke(function(e,t){const{ratio:n=4/3,children:r,className:i,...o}=e,a=C.exports.Children.only(r),s=Or("chakra-aspect-ratio",i);return re.createElement(be.div,{ref:t,position:"relative",className:s,_before:{height:0,content:'""',display:"block",paddingBottom:Kc(n,l=>`${1/l*100}%`)},__css:{"& > *:not(style)":{overflow:"hidden",position:"absolute",top:"0",right:"0",bottom:"0",left:"0",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%"},"& > img, & > video":{objectFit:"cover"}},...o},a)});sde.displayName="AspectRatio";var lde=ke(function(t,n){const r=oo("Badge",t),{className:i,...o}=hn(t);return re.createElement(be.span,{ref:n,className:Or("chakra-badge",t.className),...o,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});lde.displayName="Badge";var id=be("div");id.displayName="Box";var ID=ke(function(t,n){const{size:r,centerContent:i=!0,...o}=t;return w(id,{ref:n,boxSize:r,__css:{...i?{display:"flex",alignItems:"center",justifyContent:"center"}:{},flexShrink:0,flexGrow:0},...o})});ID.displayName="Square";var ude=ke(function(t,n){const{size:r,...i}=t;return w(ID,{size:r,ref:n,borderRadius:"9999px",...i})});ude.displayName="Circle";var MD=be("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center"}});MD.displayName="Center";var cde={horizontal:{insetStart:"50%",transform:"translateX(-50%)"},vertical:{top:"50%",transform:"translateY(-50%)"},both:{insetStart:"50%",top:"50%",transform:"translate(-50%, -50%)"}};ke(function(t,n){const{axis:r="both",...i}=t;return re.createElement(be.div,{ref:n,__css:cde[r],...i,position:"absolute"})});var dde=ke(function(t,n){const r=oo("Code",t),{className:i,...o}=hn(t);return re.createElement(be.code,{ref:n,className:Or("chakra-code",t.className),...o,__css:{display:"inline-block",...r}})});dde.displayName="Code";var fde=ke(function(t,n){const{className:r,centerContent:i,...o}=hn(t),a=oo("Container",t);return re.createElement(be.div,{ref:n,className:Or("chakra-container",r),...o,__css:{...a,...i&&{display:"flex",flexDirection:"column",alignItems:"center"}}})});fde.displayName="Container";var hde=ke(function(t,n){const{borderLeftWidth:r,borderBottomWidth:i,borderTopWidth:o,borderRightWidth:a,borderWidth:s,borderStyle:l,borderColor:c,...p}=oo("Divider",t),{className:g,orientation:m="horizontal",__css:y,...b}=hn(t),S={vertical:{borderLeftWidth:r||a||s||"1px",height:"100%"},horizontal:{borderBottomWidth:i||o||s||"1px",width:"100%"}};return re.createElement(be.hr,{ref:n,"aria-orientation":m,...b,__css:{...p,border:"0",borderColor:c,borderStyle:l,...S[m],...y},className:Or("chakra-divider",g)})});hde.displayName="Divider";var Dn=ke(function(t,n){const{direction:r,align:i,justify:o,wrap:a,basis:s,grow:l,shrink:c,...p}=t,g={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:a,flexBasis:s,flexGrow:l,flexShrink:c};return re.createElement(be.div,{ref:n,__css:g,...p})});Dn.displayName="Flex";var RD=ke(function(t,n){const{templateAreas:r,gap:i,rowGap:o,columnGap:a,column:s,row:l,autoFlow:c,autoRows:p,templateRows:g,autoColumns:m,templateColumns:y,...b}=t,S={display:"grid",gridTemplateAreas:r,gridGap:i,gridRowGap:o,gridColumnGap:a,gridAutoColumns:m,gridColumn:s,gridRow:l,gridAutoFlow:c,gridAutoRows:p,gridTemplateRows:g,gridTemplateColumns:y};return re.createElement(be.div,{ref:n,__css:S,...b})});RD.displayName="Grid";function zT(e){return Kc(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var pde=ke(function(t,n){const{area:r,colSpan:i,colStart:o,colEnd:a,rowEnd:s,rowSpan:l,rowStart:c,...p}=t,g=NC({gridArea:r,gridColumn:zT(i),gridRow:zT(l),gridColumnStart:o,gridColumnEnd:a,gridRowStart:c,gridRowEnd:s});return re.createElement(be.div,{ref:n,__css:g,...p})});pde.displayName="GridItem";var Rf=ke(function(t,n){const r=oo("Heading",t),{className:i,...o}=hn(t);return re.createElement(be.h2,{ref:n,className:Or("chakra-heading",t.className),...o,__css:r})});Rf.displayName="Heading";ke(function(t,n){const r=oo("Mark",t),i=hn(t);return w(id,{ref:n,...i,as:"mark",__css:{bg:"transparent",whiteSpace:"nowrap",...r}})});var gde=ke(function(t,n){const r=oo("Kbd",t),{className:i,...o}=hn(t);return re.createElement(be.kbd,{ref:n,className:Or("chakra-kbd",i),...o,__css:{fontFamily:"mono",...r}})});gde.displayName="Kbd";var Of=ke(function(t,n){const r=oo("Link",t),{className:i,isExternal:o,...a}=hn(t);return re.createElement(be.a,{target:o?"_blank":void 0,rel:o?"noopener":void 0,ref:n,className:Or("chakra-link",i),...a,__css:r})});Of.displayName="Link";ke(function(t,n){const{isExternal:r,target:i,rel:o,className:a,...s}=t;return re.createElement(be.a,{...s,ref:n,className:Or("chakra-linkbox__overlay",a),rel:r?"noopener noreferrer":o,target:r?"_blank":i,__css:{position:"static","&::before":{content:"''",cursor:"inherit",display:"block",position:"absolute",top:0,left:0,zIndex:0,width:"100%",height:"100%"}}})});ke(function(t,n){const{className:r,...i}=t;return re.createElement(be.div,{ref:n,position:"relative",...i,className:Or("chakra-linkbox",r),__css:{"a[href]:not(.chakra-linkbox__overlay), abbr[title]":{position:"relative",zIndex:1}}})});var[mde,OD]=xn({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),FC=ke(function(t,n){const r=Ai("List",t),{children:i,styleType:o="none",stylePosition:a,spacing:s,...l}=hn(t),c=H5(i),g=s?{["& > *:not(style) ~ *:not(style)"]:{mt:s}}:{};return re.createElement(mde,{value:r},re.createElement(be.ul,{ref:n,listStyleType:o,listStylePosition:a,role:"list",__css:{...r.container,...g},...l},c))});FC.displayName="List";var vde=ke((e,t)=>{const{as:n,...r}=e;return w(FC,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});vde.displayName="OrderedList";var ND=ke(function(t,n){const{as:r,...i}=t;return w(FC,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...i})});ND.displayName="UnorderedList";var DD=ke(function(t,n){const r=OD();return re.createElement(be.li,{ref:n,...t,__css:r.item})});DD.displayName="ListItem";var yde=ke(function(t,n){const r=OD();return w(ha,{ref:n,role:"presentation",...t,__css:r.icon})});yde.displayName="ListIcon";var xde=ke(function(t,n){const{columns:r,spacingX:i,spacingY:o,spacing:a,minChildWidth:s,...l}=t,c=A0(),p=s?Sde(s,c):wde(r);return w(RD,{ref:n,gap:a,columnGap:i,rowGap:o,templateColumns:p,...l})});xde.displayName="SimpleGrid";function bde(e){return typeof e=="number"?`${e}px`:e}function Sde(e,t){return Kc(e,n=>{const r=yie("sizes",n,bde(n))(t);return n===null?null:`repeat(auto-fit, minmax(${r}, 1fr))`})}function wde(e){return Kc(e,t=>t===null?null:`repeat(${t}, minmax(0, 1fr))`)}var zD=be("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});zD.displayName="Spacer";var O6="& > *:not(style) ~ *:not(style)";function Cde(e){const{spacing:t,direction:n}=e,r={column:{marginTop:t,marginEnd:0,marginBottom:0,marginStart:0},row:{marginTop:0,marginEnd:0,marginBottom:0,marginStart:t},"column-reverse":{marginTop:0,marginEnd:0,marginBottom:t,marginStart:0},"row-reverse":{marginTop:0,marginEnd:t,marginBottom:0,marginStart:0}};return{flexDirection:n,[O6]:Kc(n,i=>r[i])}}function _de(e){const{spacing:t,direction:n}=e,r={column:{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},"column-reverse":{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},row:{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0},"row-reverse":{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0}};return{"&":Kc(n,i=>r[i])}}var FD=e=>re.createElement(be.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});FD.displayName="StackItem";var BC=ke((e,t)=>{const{isInline:n,direction:r,align:i,justify:o,spacing:a="0.5rem",wrap:s,children:l,divider:c,className:p,shouldWrapChildren:g,...m}=e,y=n?"row":r??"column",b=C.exports.useMemo(()=>Cde({direction:y,spacing:a}),[y,a]),S=C.exports.useMemo(()=>_de({spacing:a,direction:y}),[a,y]),T=!!c,E=!g&&!T,k=C.exports.useMemo(()=>{const I=H5(l);return E?I:I.map((O,D)=>{const N=typeof O.key<"u"?O.key:D,z=D+1===I.length,V=g?w(FD,{children:O},N):O;if(!T)return V;const q=C.exports.cloneElement(c,{__css:S}),he=z?null:q;return ne(C.exports.Fragment,{children:[V,he]},N)})},[c,S,T,E,g,l]),L=Or("chakra-stack",p);return re.createElement(be.div,{ref:t,display:"flex",alignItems:i,justifyContent:o,flexDirection:b.flexDirection,flexWrap:s,className:L,__css:T?{}:{[O6]:b[O6]},...m},k)});BC.displayName="Stack";var kde=ke((e,t)=>w(BC,{align:"center",...e,direction:"row",ref:t}));kde.displayName="HStack";var Ede=ke((e,t)=>w(BC,{align:"center",...e,direction:"column",ref:t}));Ede.displayName="VStack";var wo=ke(function(t,n){const r=oo("Text",t),{className:i,align:o,decoration:a,casing:s,...l}=hn(t),c=NC({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return re.createElement(be.p,{ref:n,className:Or("chakra-text",t.className),...c,...l,__css:r})});wo.displayName="Text";function FT(e){return typeof e=="number"?`${e}px`:e}var Pde=ke(function(t,n){const{spacing:r="0.5rem",spacingX:i,spacingY:o,children:a,justify:s,direction:l,align:c,className:p,shouldWrapChildren:g,...m}=t,y=C.exports.useMemo(()=>{const{spacingX:S=r,spacingY:T=r}={spacingX:i,spacingY:o};return{"--chakra-wrap-x-spacing":E=>Kc(S,k=>FT(Vw("space",k)(E))),"--chakra-wrap-y-spacing":E=>Kc(T,k=>FT(Vw("space",k)(E))),"--wrap-x-spacing":"calc(var(--chakra-wrap-x-spacing) / 2)","--wrap-y-spacing":"calc(var(--chakra-wrap-y-spacing) / 2)",display:"flex",flexWrap:"wrap",justifyContent:s,alignItems:c,flexDirection:l,listStyleType:"none",padding:"0",margin:"calc(var(--wrap-y-spacing) * -1) calc(var(--wrap-x-spacing) * -1)","& > *:not(style)":{margin:"var(--wrap-y-spacing) var(--wrap-x-spacing)"}}},[r,i,o,s,c,l]),b=C.exports.useMemo(()=>g?C.exports.Children.map(a,(S,T)=>w(BD,{children:S},T)):a,[a,g]);return re.createElement(be.div,{ref:n,className:Or("chakra-wrap",p),overflow:"hidden",...m},re.createElement(be.ul,{className:"chakra-wrap__list",__css:y},b))});Pde.displayName="Wrap";var BD=ke(function(t,n){const{className:r,...i}=t;return re.createElement(be.li,{ref:n,__css:{display:"flex",alignItems:"flex-start"},className:Or("chakra-wrap__listitem",r),...i})});BD.displayName="WrapItem";var Tde={body:{classList:{add(){},remove(){}}},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}}},$D=Tde,sp=()=>{},Lde={document:$D,navigator:{userAgent:""},CustomEvent:function(){return this},addEventListener:sp,removeEventListener:sp,getComputedStyle(){return{getPropertyValue(){return""}}},matchMedia(){return{matches:!1,addListener:sp,removeListener:sp}},requestAnimationFrame(e){return typeof setTimeout>"u"?(e(),null):setTimeout(e,0)},cancelAnimationFrame(e){typeof setTimeout>"u"||clearTimeout(e)},setTimeout:()=>0,clearTimeout:sp,setInterval:()=>0,clearInterval:sp},Ade=Lde,Ide={window:Ade,document:$D},HD=typeof window<"u"?{window,document}:Ide,WD=C.exports.createContext(HD);WD.displayName="EnvironmentContext";function VD(e){const{children:t,environment:n}=e,[r,i]=C.exports.useState(null),[o,a]=C.exports.useState(!1);C.exports.useEffect(()=>a(!0),[]);const s=C.exports.useMemo(()=>{if(n)return n;const l=r?.ownerDocument,c=r?.ownerDocument.defaultView;return l?{document:l,window:c}:HD},[r,n]);return ne(WD.Provider,{value:s,children:[t,!n&&o&&w("span",{id:"__chakra_env",hidden:!0,ref:l=>{C.exports.startTransition(()=>{l&&i(l)})}})]})}VD.displayName="EnvironmentProvider";var Mde=e=>e?"":void 0;function Rde(){const e=C.exports.useRef(new Map),t=e.current,n=C.exports.useCallback((i,o,a,s)=>{e.current.set(a,{type:o,el:i,options:s}),i.addEventListener(o,a,s)},[]),r=C.exports.useCallback((i,o,a,s)=>{i.removeEventListener(o,a,s),e.current.delete(a)},[]);return C.exports.useEffect(()=>()=>{t.forEach((i,o)=>{r(i.el,i.type,o,i.options)})},[r,t]),{add:n,remove:r}}function eS(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function Ode(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:i=!0,clickOnSpace:o=!0,onMouseDown:a,onMouseUp:s,onClick:l,onKeyDown:c,onKeyUp:p,tabIndex:g,onMouseOver:m,onMouseLeave:y,...b}=e,[S,T]=C.exports.useState(!0),[E,k]=C.exports.useState(!1),L=Rde(),I=Z=>{!Z||Z.tagName!=="BUTTON"&&T(!1)},O=S?g:g||0,D=n&&!r,N=C.exports.useCallback(Z=>{if(n){Z.stopPropagation(),Z.preventDefault();return}Z.currentTarget.focus(),l?.(Z)},[n,l]),z=C.exports.useCallback(Z=>{E&&eS(Z)&&(Z.preventDefault(),Z.stopPropagation(),k(!1),L.remove(document,"keyup",z,!1))},[E,L]),W=C.exports.useCallback(Z=>{if(c?.(Z),n||Z.defaultPrevented||Z.metaKey||!eS(Z.nativeEvent)||S)return;const U=i&&Z.key==="Enter";o&&Z.key===" "&&(Z.preventDefault(),k(!0)),U&&(Z.preventDefault(),Z.currentTarget.click()),L.add(document,"keyup",z,!1)},[n,S,c,i,o,L,z]),V=C.exports.useCallback(Z=>{if(p?.(Z),n||Z.defaultPrevented||Z.metaKey||!eS(Z.nativeEvent)||S)return;o&&Z.key===" "&&(Z.preventDefault(),k(!1),Z.currentTarget.click())},[o,S,n,p]),q=C.exports.useCallback(Z=>{Z.button===0&&(k(!1),L.remove(document,"mouseup",q,!1))},[L]),he=C.exports.useCallback(Z=>{if(Z.button!==0)return;if(n){Z.stopPropagation(),Z.preventDefault();return}S||k(!0),Z.currentTarget.focus({preventScroll:!0}),L.add(document,"mouseup",q,!1),a?.(Z)},[n,S,a,L,q]),de=C.exports.useCallback(Z=>{Z.button===0&&(S||k(!1),s?.(Z))},[s,S]),ve=C.exports.useCallback(Z=>{if(n){Z.preventDefault();return}m?.(Z)},[n,m]),Ee=C.exports.useCallback(Z=>{E&&(Z.preventDefault(),k(!1)),y?.(Z)},[E,y]),xe=zn(t,I);return S?{...b,ref:xe,type:"button","aria-disabled":D?void 0:n,disabled:D,onClick:N,onMouseDown:a,onMouseUp:s,onKeyUp:p,onKeyDown:c,onMouseOver:m,onMouseLeave:y}:{...b,ref:xe,role:"button","data-active":Mde(E),"aria-disabled":n?"true":void 0,tabIndex:D?void 0:O,onClick:N,onMouseDown:he,onMouseUp:de,onKeyUp:V,onKeyDown:W,onMouseOver:ve,onMouseLeave:Ee}}function UD(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function GD(e){if(!UD(e))return!1;const t=e.ownerDocument.defaultView??window;return e instanceof t.HTMLElement}function Nde(e){var t;return((t=jD(e))==null?void 0:t.defaultView)??window}function jD(e){return UD(e)?e.ownerDocument:document}function Dde(e){return jD(e).activeElement}var qD=e=>e.hasAttribute("tabindex"),zde=e=>qD(e)&&e.tabIndex===-1;function Fde(e){return Boolean(e.getAttribute("disabled"))===!0||Boolean(e.getAttribute("aria-disabled"))===!0}function KD(e){return e.parentElement&&KD(e.parentElement)?!0:e.hidden}function Bde(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function ZD(e){if(!GD(e)||KD(e)||Fde(e))return!1;const{localName:t}=e;if(["input","select","textarea","button"].indexOf(t)>=0)return!0;const r={a:()=>e.hasAttribute("href"),audio:()=>e.hasAttribute("controls"),video:()=>e.hasAttribute("controls")};return t in r?r[t]():Bde(e)?!0:qD(e)}function $de(e){return e?GD(e)&&ZD(e)&&!zde(e):!1}var Hde=["input:not(:disabled):not([disabled])","select:not(:disabled):not([disabled])","textarea:not(:disabled):not([disabled])","embed","iframe","object","a[href]","area[href]","button:not(:disabled):not([disabled])","[tabindex]","audio[controls]","video[controls]","*[tabindex]:not([aria-disabled])","*[contenteditable]"],Wde=Hde.join(),Vde=e=>e.offsetWidth>0&&e.offsetHeight>0;function YD(e){const t=Array.from(e.querySelectorAll(Wde));return t.unshift(e),t.filter(n=>ZD(n)&&Vde(n))}function Ude(e){const t=e.current;if(!t)return!1;const n=Dde(t);return!n||t.contains(n)?!1:!!$de(n)}function Gde(e,t){const{shouldFocus:n,visible:r,focusRef:i}=t,o=n&&!r;qc(()=>{if(!o||Ude(e))return;const a=i?.current||e.current;a&&requestAnimationFrame(()=>{a.focus()})},[o,e,i])}var jde={preventScroll:!0,shouldFocus:!1};function qde(e,t=jde){const{focusRef:n,preventScroll:r,shouldFocus:i,visible:o}=t,a=Kde(e)?e.current:e,s=i&&o,l=C.exports.useCallback(()=>{if(!(!a||!s)&&!a.contains(document.activeElement))if(n?.current)requestAnimationFrame(()=>{var c;(c=n.current)==null||c.focus({preventScroll:r})});else{const c=YD(a);c.length>0&&requestAnimationFrame(()=>{c[0].focus({preventScroll:r})})}},[s,r,a,n]);qc(()=>{l()},[l]),Mf(a,"transitionend",l)}function Kde(e){return"current"in e}var Po="top",Fa="bottom",Ba="right",To="left",$C="auto",_v=[Po,Fa,Ba,To],v0="start",jm="end",Zde="clippingParents",XD="viewport",cg="popper",Yde="reference",BT=_v.reduce(function(e,t){return e.concat([t+"-"+v0,t+"-"+jm])},[]),QD=[].concat(_v,[$C]).reduce(function(e,t){return e.concat([t,t+"-"+v0,t+"-"+jm])},[]),Xde="beforeRead",Qde="read",Jde="afterRead",efe="beforeMain",tfe="main",nfe="afterMain",rfe="beforeWrite",ife="write",ofe="afterWrite",afe=[Xde,Qde,Jde,efe,tfe,nfe,rfe,ife,ofe];function Sl(e){return e?(e.nodeName||"").toLowerCase():null}function Wa(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Vf(e){var t=Wa(e).Element;return e instanceof t||e instanceof Element}function Na(e){var t=Wa(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function HC(e){if(typeof ShadowRoot>"u")return!1;var t=Wa(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function sfe(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!Na(o)||!Sl(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(a){var s=i[a];s===!1?o.removeAttribute(a):o.setAttribute(a,s===!0?"":s)}))})}function lfe(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},a=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),s=a.reduce(function(l,c){return l[c]="",l},{});!Na(i)||!Sl(i)||(Object.assign(i.style,s),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}const ufe={name:"applyStyles",enabled:!0,phase:"write",fn:sfe,effect:lfe,requires:["computeStyles"]};function yl(e){return e.split("-")[0]}var Nf=Math.max,v4=Math.min,y0=Math.round;function N6(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function JD(){return!/^((?!chrome|android).)*safari/i.test(N6())}function x0(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&Na(e)&&(i=e.offsetWidth>0&&y0(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&y0(r.height)/e.offsetHeight||1);var a=Vf(e)?Wa(e):window,s=a.visualViewport,l=!JD()&&n,c=(r.left+(l&&s?s.offsetLeft:0))/i,p=(r.top+(l&&s?s.offsetTop:0))/o,g=r.width/i,m=r.height/o;return{width:g,height:m,top:p,right:c+g,bottom:p+m,left:c,x:c,y:p}}function WC(e){var t=x0(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function ez(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&HC(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function mu(e){return Wa(e).getComputedStyle(e)}function cfe(e){return["table","td","th"].indexOf(Sl(e))>=0}function od(e){return((Vf(e)?e.ownerDocument:e.document)||window.document).documentElement}function j5(e){return Sl(e)==="html"?e:e.assignedSlot||e.parentNode||(HC(e)?e.host:null)||od(e)}function $T(e){return!Na(e)||mu(e).position==="fixed"?null:e.offsetParent}function dfe(e){var t=/firefox/i.test(N6()),n=/Trident/i.test(N6());if(n&&Na(e)){var r=mu(e);if(r.position==="fixed")return null}var i=j5(e);for(HC(i)&&(i=i.host);Na(i)&&["html","body"].indexOf(Sl(i))<0;){var o=mu(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function kv(e){for(var t=Wa(e),n=$T(e);n&&cfe(n)&&mu(n).position==="static";)n=$T(n);return n&&(Sl(n)==="html"||Sl(n)==="body"&&mu(n).position==="static")?t:n||dfe(e)||t}function VC(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function am(e,t,n){return Nf(e,v4(t,n))}function ffe(e,t,n){var r=am(e,t,n);return r>n?n:r}function tz(){return{top:0,right:0,bottom:0,left:0}}function nz(e){return Object.assign({},tz(),e)}function rz(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var hfe=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,nz(typeof t!="number"?t:rz(t,_v))};function pfe(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=yl(n.placement),l=VC(s),c=[To,Ba].indexOf(s)>=0,p=c?"height":"width";if(!(!o||!a)){var g=hfe(i.padding,n),m=WC(o),y=l==="y"?Po:To,b=l==="y"?Fa:Ba,S=n.rects.reference[p]+n.rects.reference[l]-a[l]-n.rects.popper[p],T=a[l]-n.rects.reference[l],E=kv(o),k=E?l==="y"?E.clientHeight||0:E.clientWidth||0:0,L=S/2-T/2,I=g[y],O=k-m[p]-g[b],D=k/2-m[p]/2+L,N=am(I,D,O),z=l;n.modifiersData[r]=(t={},t[z]=N,t.centerOffset=N-D,t)}}function gfe(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!ez(t.elements.popper,i)||(t.elements.arrow=i))}const mfe={name:"arrow",enabled:!0,phase:"main",fn:pfe,effect:gfe,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function b0(e){return e.split("-")[1]}var vfe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function yfe(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:y0(t*i)/i||0,y:y0(n*i)/i||0}}function HT(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,c=e.adaptive,p=e.roundOffsets,g=e.isFixed,m=a.x,y=m===void 0?0:m,b=a.y,S=b===void 0?0:b,T=typeof p=="function"?p({x:y,y:S}):{x:y,y:S};y=T.x,S=T.y;var E=a.hasOwnProperty("x"),k=a.hasOwnProperty("y"),L=To,I=Po,O=window;if(c){var D=kv(n),N="clientHeight",z="clientWidth";if(D===Wa(n)&&(D=od(n),mu(D).position!=="static"&&s==="absolute"&&(N="scrollHeight",z="scrollWidth")),D=D,i===Po||(i===To||i===Ba)&&o===jm){I=Fa;var W=g&&D===O&&O.visualViewport?O.visualViewport.height:D[N];S-=W-r.height,S*=l?1:-1}if(i===To||(i===Po||i===Fa)&&o===jm){L=Ba;var V=g&&D===O&&O.visualViewport?O.visualViewport.width:D[z];y-=V-r.width,y*=l?1:-1}}var q=Object.assign({position:s},c&&vfe),he=p===!0?yfe({x:y,y:S}):{x:y,y:S};if(y=he.x,S=he.y,l){var de;return Object.assign({},q,(de={},de[I]=k?"0":"",de[L]=E?"0":"",de.transform=(O.devicePixelRatio||1)<=1?"translate("+y+"px, "+S+"px)":"translate3d("+y+"px, "+S+"px, 0)",de))}return Object.assign({},q,(t={},t[I]=k?S+"px":"",t[L]=E?y+"px":"",t.transform="",t))}function xfe(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,a=o===void 0?!0:o,s=n.roundOffsets,l=s===void 0?!0:s,c={placement:yl(t.placement),variation:b0(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,HT(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,HT(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const bfe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:xfe,data:{}};var ty={passive:!0};function Sfe(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,a=r.resize,s=a===void 0?!0:a,l=Wa(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(p){p.addEventListener("scroll",n.update,ty)}),s&&l.addEventListener("resize",n.update,ty),function(){o&&c.forEach(function(p){p.removeEventListener("scroll",n.update,ty)}),s&&l.removeEventListener("resize",n.update,ty)}}const wfe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Sfe,data:{}};var Cfe={left:"right",right:"left",bottom:"top",top:"bottom"};function r3(e){return e.replace(/left|right|bottom|top/g,function(t){return Cfe[t]})}var _fe={start:"end",end:"start"};function WT(e){return e.replace(/start|end/g,function(t){return _fe[t]})}function UC(e){var t=Wa(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function GC(e){return x0(od(e)).left+UC(e).scrollLeft}function kfe(e,t){var n=Wa(e),r=od(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var c=JD();(c||!c&&t==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+GC(e),y:l}}function Efe(e){var t,n=od(e),r=UC(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=Nf(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Nf(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+GC(e),l=-r.scrollTop;return mu(i||n).direction==="rtl"&&(s+=Nf(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function jC(e){var t=mu(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function iz(e){return["html","body","#document"].indexOf(Sl(e))>=0?e.ownerDocument.body:Na(e)&&jC(e)?e:iz(j5(e))}function sm(e,t){var n;t===void 0&&(t=[]);var r=iz(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=Wa(r),a=i?[o].concat(o.visualViewport||[],jC(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(sm(j5(a)))}function D6(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Pfe(e,t){var n=x0(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function VT(e,t,n){return t===XD?D6(kfe(e,n)):Vf(t)?Pfe(t,n):D6(Efe(od(e)))}function Tfe(e){var t=sm(j5(e)),n=["absolute","fixed"].indexOf(mu(e).position)>=0,r=n&&Na(e)?kv(e):e;return Vf(r)?t.filter(function(i){return Vf(i)&&ez(i,r)&&Sl(i)!=="body"}):[]}function Lfe(e,t,n,r){var i=t==="clippingParents"?Tfe(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce(function(l,c){var p=VT(e,c,r);return l.top=Nf(p.top,l.top),l.right=v4(p.right,l.right),l.bottom=v4(p.bottom,l.bottom),l.left=Nf(p.left,l.left),l},VT(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function oz(e){var t=e.reference,n=e.element,r=e.placement,i=r?yl(r):null,o=r?b0(r):null,a=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,l;switch(i){case Po:l={x:a,y:t.y-n.height};break;case Fa:l={x:a,y:t.y+t.height};break;case Ba:l={x:t.x+t.width,y:s};break;case To:l={x:t.x-n.width,y:s};break;default:l={x:t.x,y:t.y}}var c=i?VC(i):null;if(c!=null){var p=c==="y"?"height":"width";switch(o){case v0:l[c]=l[c]-(t[p]/2-n[p]/2);break;case jm:l[c]=l[c]+(t[p]/2-n[p]/2);break}}return l}function qm(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.strategy,a=o===void 0?e.strategy:o,s=n.boundary,l=s===void 0?Zde:s,c=n.rootBoundary,p=c===void 0?XD:c,g=n.elementContext,m=g===void 0?cg:g,y=n.altBoundary,b=y===void 0?!1:y,S=n.padding,T=S===void 0?0:S,E=nz(typeof T!="number"?T:rz(T,_v)),k=m===cg?Yde:cg,L=e.rects.popper,I=e.elements[b?k:m],O=Lfe(Vf(I)?I:I.contextElement||od(e.elements.popper),l,p,a),D=x0(e.elements.reference),N=oz({reference:D,element:L,strategy:"absolute",placement:i}),z=D6(Object.assign({},L,N)),W=m===cg?z:D,V={top:O.top-W.top+E.top,bottom:W.bottom-O.bottom+E.bottom,left:O.left-W.left+E.left,right:W.right-O.right+E.right},q=e.modifiersData.offset;if(m===cg&&q){var he=q[i];Object.keys(V).forEach(function(de){var ve=[Ba,Fa].indexOf(de)>=0?1:-1,Ee=[Po,Fa].indexOf(de)>=0?"y":"x";V[de]+=he[Ee]*ve})}return V}function Afe(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?QD:l,p=b0(r),g=p?s?BT:BT.filter(function(b){return b0(b)===p}):_v,m=g.filter(function(b){return c.indexOf(b)>=0});m.length===0&&(m=g);var y=m.reduce(function(b,S){return b[S]=qm(e,{placement:S,boundary:i,rootBoundary:o,padding:a})[yl(S)],b},{});return Object.keys(y).sort(function(b,S){return y[b]-y[S]})}function Ife(e){if(yl(e)===$C)return[];var t=r3(e);return[WT(e),t,WT(t)]}function Mfe(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!0:a,l=n.fallbackPlacements,c=n.padding,p=n.boundary,g=n.rootBoundary,m=n.altBoundary,y=n.flipVariations,b=y===void 0?!0:y,S=n.allowedAutoPlacements,T=t.options.placement,E=yl(T),k=E===T,L=l||(k||!b?[r3(T)]:Ife(T)),I=[T].concat(L).reduce(function(Se,He){return Se.concat(yl(He)===$C?Afe(t,{placement:He,boundary:p,rootBoundary:g,padding:c,flipVariations:b,allowedAutoPlacements:S}):He)},[]),O=t.rects.reference,D=t.rects.popper,N=new Map,z=!0,W=I[0],V=0;V=0,Ee=ve?"width":"height",xe=qm(t,{placement:q,boundary:p,rootBoundary:g,altBoundary:m,padding:c}),Z=ve?de?Ba:To:de?Fa:Po;O[Ee]>D[Ee]&&(Z=r3(Z));var U=r3(Z),ee=[];if(o&&ee.push(xe[he]<=0),s&&ee.push(xe[Z]<=0,xe[U]<=0),ee.every(function(Se){return Se})){W=q,z=!1;break}N.set(q,ee)}if(z)for(var ae=b?3:1,X=function(He){var je=I.find(function(ut){var qe=N.get(ut);if(qe)return qe.slice(0,He).every(function(ot){return ot})});if(je)return W=je,"break"},me=ae;me>0;me--){var ye=X(me);if(ye==="break")break}t.placement!==W&&(t.modifiersData[r]._skip=!0,t.placement=W,t.reset=!0)}}const Rfe={name:"flip",enabled:!0,phase:"main",fn:Mfe,requiresIfExists:["offset"],data:{_skip:!1}};function UT(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function GT(e){return[Po,Ba,Fa,To].some(function(t){return e[t]>=0})}function Ofe(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=qm(t,{elementContext:"reference"}),s=qm(t,{altBoundary:!0}),l=UT(a,r),c=UT(s,i,o),p=GT(l),g=GT(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:g},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":g})}const Nfe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Ofe};function Dfe(e,t,n){var r=yl(e),i=[To,Po].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[To,Ba].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function zfe(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,a=QD.reduce(function(p,g){return p[g]=Dfe(g,t.rects,o),p},{}),s=a[t.placement],l=s.x,c=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}const Ffe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:zfe};function Bfe(e){var t=e.state,n=e.name;t.modifiersData[n]=oz({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const $fe={name:"popperOffsets",enabled:!0,phase:"read",fn:Bfe,data:{}};function Hfe(e){return e==="x"?"y":"x"}function Wfe(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!1:a,l=n.boundary,c=n.rootBoundary,p=n.altBoundary,g=n.padding,m=n.tether,y=m===void 0?!0:m,b=n.tetherOffset,S=b===void 0?0:b,T=qm(t,{boundary:l,rootBoundary:c,padding:g,altBoundary:p}),E=yl(t.placement),k=b0(t.placement),L=!k,I=VC(E),O=Hfe(I),D=t.modifiersData.popperOffsets,N=t.rects.reference,z=t.rects.popper,W=typeof S=="function"?S(Object.assign({},t.rects,{placement:t.placement})):S,V=typeof W=="number"?{mainAxis:W,altAxis:W}:Object.assign({mainAxis:0,altAxis:0},W),q=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,he={x:0,y:0};if(!!D){if(o){var de,ve=I==="y"?Po:To,Ee=I==="y"?Fa:Ba,xe=I==="y"?"height":"width",Z=D[I],U=Z+T[ve],ee=Z-T[Ee],ae=y?-z[xe]/2:0,X=k===v0?N[xe]:z[xe],me=k===v0?-z[xe]:-N[xe],ye=t.elements.arrow,Se=y&&ye?WC(ye):{width:0,height:0},He=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:tz(),je=He[ve],ut=He[Ee],qe=am(0,N[xe],Se[xe]),ot=L?N[xe]/2-ae-qe-je-V.mainAxis:X-qe-je-V.mainAxis,tt=L?-N[xe]/2+ae+qe+ut+V.mainAxis:me+qe+ut+V.mainAxis,at=t.elements.arrow&&kv(t.elements.arrow),Rt=at?I==="y"?at.clientTop||0:at.clientLeft||0:0,kt=(de=q?.[I])!=null?de:0,Le=Z+ot-kt-Rt,st=Z+tt-kt,Lt=am(y?v4(U,Le):U,Z,y?Nf(ee,st):ee);D[I]=Lt,he[I]=Lt-Z}if(s){var it,mt=I==="x"?Po:To,Sn=I==="x"?Fa:Ba,wt=D[O],Kt=O==="y"?"height":"width",wn=wt+T[mt],pn=wt-T[Sn],Re=[Po,To].indexOf(E)!==-1,Ze=(it=q?.[O])!=null?it:0,Zt=Re?wn:wt-N[Kt]-z[Kt]-Ze+V.altAxis,Gt=Re?wt+N[Kt]+z[Kt]-Ze-V.altAxis:pn,_e=y&&Re?ffe(Zt,wt,Gt):am(y?Zt:wn,wt,y?Gt:pn);D[O]=_e,he[O]=_e-wt}t.modifiersData[r]=he}}const Vfe={name:"preventOverflow",enabled:!0,phase:"main",fn:Wfe,requiresIfExists:["offset"]};function Ufe(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Gfe(e){return e===Wa(e)||!Na(e)?UC(e):Ufe(e)}function jfe(e){var t=e.getBoundingClientRect(),n=y0(t.width)/e.offsetWidth||1,r=y0(t.height)/e.offsetHeight||1;return n!==1||r!==1}function qfe(e,t,n){n===void 0&&(n=!1);var r=Na(t),i=Na(t)&&jfe(t),o=od(t),a=x0(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Sl(t)!=="body"||jC(o))&&(s=Gfe(t)),Na(t)?(l=x0(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=GC(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function Kfe(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var l=t.get(s);l&&i(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function Zfe(e){var t=Kfe(e);return afe.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function Yfe(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Xfe(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var jT={placement:"bottom",modifiers:[],strategy:"absolute"};function qT(){for(var e=arguments.length,t=new Array(e),n=0;n({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),Hr={arrowShadowColor:lp("--popper-arrow-shadow-color"),arrowSize:lp("--popper-arrow-size","8px"),arrowSizeHalf:lp("--popper-arrow-size-half"),arrowBg:lp("--popper-arrow-bg"),transformOrigin:lp("--popper-transform-origin"),arrowOffset:lp("--popper-arrow-offset")};function the(e){if(e.includes("top"))return"1px 1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("bottom"))return"-1px -1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("right"))return"-1px 1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("left"))return"1px -1px 1px 0 var(--popper-arrow-shadow-color)"}var nhe={top:"bottom center","top-start":"bottom left","top-end":"bottom right",bottom:"top center","bottom-start":"top left","bottom-end":"top right",left:"right center","left-start":"right top","left-end":"right bottom",right:"left center","right-start":"left top","right-end":"left bottom"},rhe=e=>nhe[e],KT={scroll:!0,resize:!0};function ihe(e){let t;return typeof e=="object"?t={enabled:!0,options:{...KT,...e}}:t={enabled:e,options:KT},t}var ohe={name:"matchWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`},effect:({state:e})=>()=>{const t=e.elements.reference;e.elements.popper.style.width=`${t.offsetWidth}px`}},ahe={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{ZT(e)},effect:({state:e})=>()=>{ZT(e)}},ZT=e=>{e.elements.popper.style.setProperty(Hr.transformOrigin.var,rhe(e.placement))},she={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{lhe(e)}},lhe=e=>{var t;if(!e.placement)return;const n=uhe(e.placement);if(((t=e.elements)==null?void 0:t.arrow)&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:Hr.arrowSize.varRef,height:Hr.arrowSize.varRef,zIndex:-1});const r={[Hr.arrowSizeHalf.var]:`calc(${Hr.arrowSize.varRef} / 2)`,[Hr.arrowOffset.var]:`calc(${Hr.arrowSizeHalf.varRef} * -1)`};for(const i in r)e.elements.arrow.style.setProperty(i,r[i])}},uhe=e=>{if(e.startsWith("top"))return{property:"bottom",value:Hr.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:Hr.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:Hr.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:Hr.arrowOffset.varRef}},che={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{YT(e)},effect:({state:e})=>()=>{YT(e)}},YT=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");!t||Object.assign(t.style,{transform:"rotate(45deg)",background:Hr.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:the(e.placement)})},dhe={"start-start":{ltr:"left-start",rtl:"right-start"},"start-end":{ltr:"left-end",rtl:"right-end"},"end-start":{ltr:"right-start",rtl:"left-start"},"end-end":{ltr:"right-end",rtl:"left-end"},start:{ltr:"left",rtl:"right"},end:{ltr:"right",rtl:"left"}},fhe={"auto-start":"auto-end","auto-end":"auto-start","top-start":"top-end","top-end":"top-start","bottom-start":"bottom-end","bottom-end":"bottom-start"};function hhe(e,t="ltr"){var n;const r=((n=dhe[e])==null?void 0:n[t])||e;return t==="ltr"?r:fhe[e]??r}function az(e={}){const{enabled:t=!0,modifiers:n,placement:r="bottom",strategy:i="absolute",arrowPadding:o=8,eventListeners:a=!0,offset:s,gutter:l=8,flip:c=!0,boundary:p="clippingParents",preventOverflow:g=!0,matchWidth:m,direction:y="ltr"}=e,b=C.exports.useRef(null),S=C.exports.useRef(null),T=C.exports.useRef(null),E=hhe(r,y),k=C.exports.useRef(()=>{}),L=C.exports.useCallback(()=>{var V;!t||!b.current||!S.current||((V=k.current)==null||V.call(k),T.current=ehe(b.current,S.current,{placement:E,modifiers:[che,she,ahe,{...ohe,enabled:!!m},{name:"eventListeners",...ihe(a)},{name:"arrow",options:{padding:o}},{name:"offset",options:{offset:s??[0,l]}},{name:"flip",enabled:!!c,options:{padding:8}},{name:"preventOverflow",enabled:!!g,options:{boundary:p}},...n??[]],strategy:i}),T.current.forceUpdate(),k.current=T.current.destroy)},[E,t,n,m,a,o,s,l,c,g,p,i]);C.exports.useEffect(()=>()=>{var V;!b.current&&!S.current&&((V=T.current)==null||V.destroy(),T.current=null)},[]);const I=C.exports.useCallback(V=>{b.current=V,L()},[L]),O=C.exports.useCallback((V={},q=null)=>({...V,ref:zn(I,q)}),[I]),D=C.exports.useCallback(V=>{S.current=V,L()},[L]),N=C.exports.useCallback((V={},q=null)=>({...V,ref:zn(D,q),style:{...V.style,position:i,minWidth:m?void 0:"max-content",inset:"0 auto auto 0"}}),[i,D,m]),z=C.exports.useCallback((V={},q=null)=>{const{size:he,shadowColor:de,bg:ve,style:Ee,...xe}=V;return{...xe,ref:q,"data-popper-arrow":"",style:phe(V)}},[]),W=C.exports.useCallback((V={},q=null)=>({...V,ref:q,"data-popper-arrow-inner":""}),[]);return{update(){var V;(V=T.current)==null||V.update()},forceUpdate(){var V;(V=T.current)==null||V.forceUpdate()},transformOrigin:Hr.transformOrigin.varRef,referenceRef:I,popperRef:D,getPopperProps:N,getArrowProps:z,getArrowInnerProps:W,getReferenceProps:O}}function phe(e){const{size:t,shadowColor:n,bg:r,style:i}=e,o={...i,position:"absolute"};return t&&(o["--popper-arrow-size"]=t),n&&(o["--popper-arrow-shadow-color"]=n),r&&(o["--popper-arrow-bg"]=r),o}function sz(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=ur(n),a=ur(t),[s,l]=C.exports.useState(e.defaultIsOpen||!1),c=r!==void 0?r:s,p=r!==void 0,g=C.exports.useId(),m=i??`disclosure-${g}`,y=C.exports.useCallback(()=>{p||l(!1),a?.()},[p,a]),b=C.exports.useCallback(()=>{p||l(!0),o?.()},[p,o]),S=C.exports.useCallback(()=>{c?y():b()},[c,b,y]);function T(k={}){return{...k,"aria-expanded":c,"aria-controls":m,onClick(L){var I;(I=k.onClick)==null||I.call(k,L),S()}}}function E(k={}){return{...k,hidden:!c,id:m}}return{isOpen:c,onOpen:b,onClose:y,onToggle:S,isControlled:p,getButtonProps:T,getDisclosureProps:E}}function ghe(e){const{isOpen:t,ref:n}=e,[r,i]=C.exports.useState(t),[o,a]=C.exports.useState(!1);return C.exports.useEffect(()=>{o||(i(t),a(!0))},[t,o,r]),Mf(()=>n.current,"animationend",()=>{i(t)}),{present:!(t?!1:!r),onComplete(){var l;const c=Nde(n.current),p=new c.CustomEvent("animationend",{bubbles:!0});(l=n.current)==null||l.dispatchEvent(p)}}}function lz(e){const{wasSelected:t,enabled:n,isSelected:r,mode:i="unmount"}=e;return!!(!n||r||i==="keepMounted"&&t)}var[mhe,vhe]=xn({strict:!1,name:"PortalManagerContext"});function uz(e){const{children:t,zIndex:n}=e;return w(mhe,{value:{zIndex:n},children:t})}uz.displayName="PortalManager";var[cz,yhe]=xn({strict:!1,name:"PortalContext"}),qC="chakra-portal",xhe=".chakra-portal",bhe=e=>w("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),She=e=>{const{appendToParentPortal:t,children:n}=e,[r,i]=C.exports.useState(null),o=C.exports.useRef(null),[,a]=C.exports.useState({});C.exports.useEffect(()=>a({}),[]);const s=yhe(),l=vhe();pl(()=>{if(!r)return;const p=r.ownerDocument,g=t?s??p.body:p.body;if(!g)return;o.current=p.createElement("div"),o.current.className=qC,g.appendChild(o.current),a({});const m=o.current;return()=>{g.contains(m)&&g.removeChild(m)}},[r]);const c=l?.zIndex?w(bhe,{zIndex:l?.zIndex,children:n}):n;return o.current?El.exports.createPortal(w(cz,{value:o.current,children:c}),o.current):w("span",{ref:p=>{p&&i(p)}})},whe=e=>{const{children:t,containerRef:n,appendToParentPortal:r}=e,i=n.current,o=i??(typeof window<"u"?document.body:void 0),a=C.exports.useMemo(()=>{const l=i?.ownerDocument.createElement("div");return l&&(l.className=qC),l},[i]),[,s]=C.exports.useState({});return pl(()=>s({}),[]),pl(()=>{if(!(!a||!o))return o.appendChild(a),()=>{o.removeChild(a)}},[a,o]),o&&a?El.exports.createPortal(w(cz,{value:r?a:null,children:t}),a):null};function Xf(e){const{containerRef:t,...n}=e;return t?w(whe,{containerRef:t,...n}):w(She,{...n})}Xf.defaultProps={appendToParentPortal:!0};Xf.className=qC;Xf.selector=xhe;Xf.displayName="Portal";var Che=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},up=new WeakMap,ny=new WeakMap,ry={},tS=0,_he=function(e,t,n,r){var i=Array.isArray(e)?e:[e];ry[n]||(ry[n]=new WeakMap);var o=ry[n],a=[],s=new Set,l=new Set(i),c=function(g){!g||s.has(g)||(s.add(g),c(g.parentNode))};i.forEach(c);var p=function(g){!g||l.has(g)||Array.prototype.forEach.call(g.children,function(m){if(s.has(m))p(m);else{var y=m.getAttribute(r),b=y!==null&&y!=="false",S=(up.get(m)||0)+1,T=(o.get(m)||0)+1;up.set(m,S),o.set(m,T),a.push(m),S===1&&b&&ny.set(m,!0),T===1&&m.setAttribute(n,"true"),b||m.setAttribute(r,"true")}})};return p(t),s.clear(),tS++,function(){a.forEach(function(g){var m=up.get(g)-1,y=o.get(g)-1;up.set(g,m),o.set(g,y),m||(ny.has(g)||g.removeAttribute(r),ny.delete(g)),y||g.removeAttribute(n)}),tS--,tS||(up=new WeakMap,up=new WeakMap,ny=new WeakMap,ry={})}},dz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),i=t||Che(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll("[aria-live]"))),_he(r,i,n,"aria-hidden")):function(){return null}};function KC(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var An={exports:{}},khe="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Ehe=khe,Phe=Ehe;function fz(){}function hz(){}hz.resetWarningCache=fz;var The=function(){function e(r,i,o,a,s,l){if(l!==Phe){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:hz,resetWarningCache:fz};return n.PropTypes=n,n};An.exports=The();var z6="data-focus-lock",pz="data-focus-lock-disabled",Lhe="data-no-focus-lock",Ahe="data-autofocus-inside",Ihe="data-no-autofocus";function Mhe(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function Rhe(e,t){var n=C.exports.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var i=n.value;i!==r&&(n.value=r,n.callback(r,i))}}}})[0];return n.callback=t,n.facade}function gz(e,t){return Rhe(t||null,function(n){return e.forEach(function(r){return Mhe(r,n)})})}var nS={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"};function mz(e){return e}function vz(e,t){t===void 0&&(t=mz);var n=[],r=!1,i={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(o){var a=t(o,r);return n.push(a),function(){n=n.filter(function(s){return s!==a})}},assignSyncMedium:function(o){for(r=!0;n.length;){var a=n;n=[],a.forEach(o)}n={push:function(s){return o(s)},filter:function(){return n}}},assignMedium:function(o){r=!0;var a=[];if(n.length){var s=n;n=[],s.forEach(o),a=n}var l=function(){var p=a;a=[],p.forEach(o)},c=function(){return Promise.resolve().then(l)};c(),n={push:function(p){a.push(p),c()},filter:function(p){return a=a.filter(p),n}}}};return i}function ZC(e,t){return t===void 0&&(t=mz),vz(e,t)}function yz(e){e===void 0&&(e={});var t=vz(null);return t.options=ul({async:!0,ssr:!1},e),t}var xz=function(e){var t=e.sideCar,n=sD(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return w(r,{...ul({},n)})};xz.isSideCarExport=!0;function Ohe(e,t){return e.useMedium(t),xz}var bz=ZC({},function(e){var t=e.target,n=e.currentTarget;return{target:t,currentTarget:n}}),Sz=ZC(),Nhe=ZC(),Dhe=yz({async:!0}),zhe=[],YC=C.exports.forwardRef(function(t,n){var r,i=C.exports.useState(),o=i[0],a=i[1],s=C.exports.useRef(),l=C.exports.useRef(!1),c=C.exports.useRef(null),p=t.children,g=t.disabled,m=t.noFocusGuards,y=t.persistentFocus,b=t.crossFrame,S=t.autoFocus;t.allowTextSelection;var T=t.group,E=t.className,k=t.whiteList,L=t.hasPositiveIndices,I=t.shards,O=I===void 0?zhe:I,D=t.as,N=D===void 0?"div":D,z=t.lockProps,W=z===void 0?{}:z,V=t.sideCar,q=t.returnFocus,he=t.focusOptions,de=t.onActivation,ve=t.onDeactivation,Ee=C.exports.useState({}),xe=Ee[0],Z=C.exports.useCallback(function(){c.current=c.current||document&&document.activeElement,s.current&&de&&de(s.current),l.current=!0},[de]),U=C.exports.useCallback(function(){l.current=!1,ve&&ve(s.current)},[ve]);C.exports.useEffect(function(){g||(c.current=null)},[]);var ee=C.exports.useCallback(function(ut){var qe=c.current;if(qe&&qe.focus){var ot=typeof q=="function"?q(qe):q;if(ot){var tt=typeof ot=="object"?ot:void 0;c.current=null,ut?Promise.resolve().then(function(){return qe.focus(tt)}):qe.focus(tt)}}},[q]),ae=C.exports.useCallback(function(ut){l.current&&bz.useMedium(ut)},[]),X=Sz.useMedium,me=C.exports.useCallback(function(ut){s.current!==ut&&(s.current=ut,a(ut))},[]),ye=En((r={},r[pz]=g&&"disabled",r[z6]=T,r),W),Se=m!==!0,He=Se&&m!=="tail",je=gz([n,me]);return ne(Fn,{children:[Se&&[w("div",{"data-focus-guard":!0,tabIndex:g?-1:0,style:nS},"guard-first"),L?w("div",{"data-focus-guard":!0,tabIndex:g?-1:1,style:nS},"guard-nearest"):null],!g&&w(V,{id:xe,sideCar:Dhe,observed:o,disabled:g,persistentFocus:y,crossFrame:b,autoFocus:S,whiteList:k,shards:O,onActivation:Z,onDeactivation:U,returnFocus:ee,focusOptions:he}),w(N,{ref:je,...ye,className:E,onBlur:X,onFocus:ae,children:p}),He&&w("div",{"data-focus-guard":!0,tabIndex:g?-1:0,style:nS})]})});YC.propTypes={};YC.defaultProps={children:void 0,disabled:!1,returnFocus:!1,focusOptions:void 0,noFocusGuards:!1,autoFocus:!0,persistentFocus:!1,crossFrame:!0,hasPositiveIndices:void 0,allowTextSelection:void 0,group:void 0,className:void 0,whiteList:void 0,shards:void 0,as:"div",lockProps:{},onActivation:void 0,onDeactivation:void 0};const wz=YC;function F6(e,t){return F6=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},F6(e,t)}function XC(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,F6(e,t)}function Cz(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Fhe(e,t){function n(r){return r.displayName||r.name||"Component"}return function(i){var o=[],a;function s(){a=e(o.map(function(c){return c.props})),t(a)}var l=function(c){XC(p,c);function p(){return c.apply(this,arguments)||this}p.peek=function(){return a};var g=p.prototype;return g.componentDidMount=function(){o.push(this),s()},g.componentDidUpdate=function(){s()},g.componentWillUnmount=function(){var y=o.indexOf(this);o.splice(y,1),s()},g.render=function(){return w(i,{...this.props})},p}(C.exports.PureComponent);return Cz(l,"displayName","SideEffect("+n(i)+")"),l}}var Pl=function(e){for(var t=Array(e.length),n=0;n=0}).sort(jhe)},qhe=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],JC=qhe.join(","),Khe="".concat(JC,", [data-focus-guard]"),Mz=function(e,t){var n;return Pl(((n=e.shadowRoot)===null||n===void 0?void 0:n.children)||e.children).reduce(function(r,i){return r.concat(i.matches(t?Khe:JC)?[i]:[],Mz(i))},[])},e7=function(e,t){return e.reduce(function(n,r){return n.concat(Mz(r,t),r.parentNode?Pl(r.parentNode.querySelectorAll(JC)).filter(function(i){return i===r}):[])},[])},Zhe=function(e){var t=e.querySelectorAll("[".concat(Ahe,"]"));return Pl(t).map(function(n){return e7([n])}).reduce(function(n,r){return n.concat(r)},[])},t7=function(e,t){return Pl(e).filter(function(n){return Ez(t,n)}).filter(function(n){return Vhe(n)})},XT=function(e,t){return t===void 0&&(t=new Map),Pl(e).filter(function(n){return Pz(t,n)})},$6=function(e,t,n){return Iz(t7(e7(e,n),t),!0,n)},QT=function(e,t){return Iz(t7(e7(e),t),!1)},Yhe=function(e,t){return t7(Zhe(e),t)},Km=function(e,t){return e.shadowRoot?Km(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:Pl(e.children).some(function(n){return Km(n,t)})},Xhe=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(i),(o&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(a,s){return!t.has(s)})},Rz=function(e){return e.parentNode?Rz(e.parentNode):e},n7=function(e){var t=B6(e);return t.filter(Boolean).reduce(function(n,r){var i=r.getAttribute(z6);return n.push.apply(n,i?Xhe(Pl(Rz(r).querySelectorAll("[".concat(z6,'="').concat(i,'"]:not([').concat(pz,'="disabled"])')))):[r]),n},[])},Oz=function(e){return e.activeElement?e.activeElement.shadowRoot?Oz(e.activeElement.shadowRoot):e.activeElement:void 0},r7=function(){return document.activeElement?document.activeElement.shadowRoot?Oz(document.activeElement.shadowRoot):document.activeElement:void 0},Qhe=function(e){return e===document.activeElement},Jhe=function(e){return Boolean(Pl(e.querySelectorAll("iframe")).some(function(t){return Qhe(t)}))},Nz=function(e){var t=document&&r7();return!t||t.dataset&&t.dataset.focusGuard?!1:n7(e).some(function(n){return Km(n,t)||Jhe(n)})},epe=function(){var e=document&&r7();return e?Pl(document.querySelectorAll("[".concat(Lhe,"]"))).some(function(t){return Km(t,e)}):!1},tpe=function(e,t){return t.filter(Az).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},i7=function(e,t){return Az(e)&&e.name?tpe(e,t):e},npe=function(e){var t=new Set;return e.forEach(function(n){return t.add(i7(n,e))}),e.filter(function(n){return t.has(n)})},JT=function(e){return e[0]&&e.length>1?i7(e[0],e):e[0]},eL=function(e,t){return e.length>1?e.indexOf(i7(e[t],e)):t},Dz="NEW_FOCUS",rpe=function(e,t,n,r){var i=e.length,o=e[0],a=e[i-1],s=QC(n);if(!(n&&e.indexOf(n)>=0)){var l=n!==void 0?t.indexOf(n):-1,c=r?t.indexOf(r):l,p=r?e.indexOf(r):-1,g=l-c,m=t.indexOf(o),y=t.indexOf(a),b=npe(t),S=n!==void 0?b.indexOf(n):-1,T=S-(r?b.indexOf(r):l),E=eL(e,0),k=eL(e,i-1);if(l===-1||p===-1)return Dz;if(!g&&p>=0)return p;if(l<=m&&s&&Math.abs(g)>1)return k;if(l>=y&&s&&Math.abs(g)>1)return E;if(g&&Math.abs(T)>1)return p;if(l<=m)return k;if(l>y)return E;if(g)return Math.abs(g)>1?p:(i+p+g)%i}},ipe=function(e){return function(t){var n,r=(n=Tz(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},ope=function(e,t,n){var r=e.map(function(o){var a=o.node;return a}),i=XT(r.filter(ipe(n)));return i&&i.length?JT(i):JT(XT(t))},H6=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&H6(e.parentNode.host||e.parentNode,t),t},rS=function(e,t){for(var n=H6(e),r=H6(t),i=0;i=0)return o}return!1},zz=function(e,t,n){var r=B6(e),i=B6(t),o=r[0],a=!1;return i.filter(Boolean).forEach(function(s){a=rS(a||s,s)||a,n.filter(Boolean).forEach(function(l){var c=rS(o,l);c&&(!a||Km(c,a)?a=c:a=rS(c,a))})}),a},ape=function(e,t){return e.reduce(function(n,r){return n.concat(Yhe(r,t))},[])},spe=function(e,t){var n=new Map;return t.forEach(function(r){return n.set(r.node,r)}),e.map(function(r){return n.get(r)}).filter(Ghe)},lpe=function(e,t){var n=document&&r7(),r=n7(e).filter(y4),i=zz(n||e,e,r),o=new Map,a=QT(r,o),s=$6(r,o).filter(function(m){var y=m.node;return y4(y)});if(!(!s[0]&&(s=a,!s[0]))){var l=QT([i],o).map(function(m){var y=m.node;return y}),c=spe(l,s),p=c.map(function(m){var y=m.node;return y}),g=rpe(p,l,n,t);return g===Dz?{node:ope(a,p,ape(r,o))}:g===void 0?g:c[g]}},upe=function(e){var t=n7(e).filter(y4),n=zz(e,e,t),r=new Map,i=$6([n],r,!0),o=$6(t,r).filter(function(a){var s=a.node;return y4(s)}).map(function(a){var s=a.node;return s});return i.map(function(a){var s=a.node,l=a.index;return{node:s,index:l,lockItem:o.indexOf(s)>=0,guard:QC(s)}})},cpe=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},iS=0,oS=!1,dpe=function(e,t,n){n===void 0&&(n={});var r=lpe(e,t);if(!oS&&r){if(iS>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),oS=!0,setTimeout(function(){oS=!1},1);return}iS++,cpe(r.node,n.focusOptions),iS--}};const Fz=dpe;function Bz(e){var t=window,n=t.setImmediate;typeof n<"u"?n(e):setTimeout(e,1)}var fpe=function(){return document&&document.activeElement===document.body},hpe=function(){return fpe()||epe()},Xp=null,Op=null,Qp=null,Zm=!1,ppe=function(){return!0},gpe=function(t){return(Xp.whiteList||ppe)(t)},mpe=function(t,n){Qp={observerNode:t,portaledElement:n}},vpe=function(t){return Qp&&Qp.portaledElement===t};function tL(e,t,n,r){var i=null,o=e;do{var a=r[o];if(a.guard)a.node.dataset.focusAutoGuard&&(i=a);else if(a.lockItem){if(o!==e)return;i=null}else break}while((o+=n)!==t);i&&(i.node.tabIndex=0)}var ype=function(t){return t&&"current"in t?t.current:t},xpe=function(t){return t?Boolean(Zm):Zm==="meanwhile"},bpe=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},Spe=function(t,n){return n.some(function(r){return bpe(t,r,r)})},x4=function(){var t=!1;if(Xp){var n=Xp,r=n.observed,i=n.persistentFocus,o=n.autoFocus,a=n.shards,s=n.crossFrame,l=n.focusOptions,c=r||Qp&&Qp.portaledElement,p=document&&document.activeElement;if(c){var g=[c].concat(a.map(ype).filter(Boolean));if((!p||gpe(p))&&(i||xpe(s)||!hpe()||!Op&&o)&&(c&&!(Nz(g)||p&&Spe(p,g)||vpe(p))&&(document&&!Op&&p&&!o?(p.blur&&p.blur(),document.body.focus()):(t=Fz(g,Op,{focusOptions:l}),Qp={})),Zm=!1,Op=document&&document.activeElement),document){var m=document&&document.activeElement,y=upe(g),b=y.map(function(S){var T=S.node;return T}).indexOf(m);b>-1&&(y.filter(function(S){var T=S.guard,E=S.node;return T&&E.dataset.focusAutoGuard}).forEach(function(S){var T=S.node;return T.removeAttribute("tabIndex")}),tL(b,y.length,1,y),tL(b,-1,-1,y))}}}return t},$z=function(t){x4()&&t&&(t.stopPropagation(),t.preventDefault())},o7=function(){return Bz(x4)},wpe=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||mpe(r,n)},Cpe=function(){return null},Hz=function(){Zm="just",setTimeout(function(){Zm="meanwhile"},0)},_pe=function(){document.addEventListener("focusin",$z),document.addEventListener("focusout",o7),window.addEventListener("blur",Hz)},kpe=function(){document.removeEventListener("focusin",$z),document.removeEventListener("focusout",o7),window.removeEventListener("blur",Hz)};function Epe(e){return e.filter(function(t){var n=t.disabled;return!n})}function Ppe(e){var t=e.slice(-1)[0];t&&!Xp&&_pe();var n=Xp,r=n&&t&&t.id===n.id;Xp=t,n&&!r&&(n.onDeactivation(),e.filter(function(i){var o=i.id;return o===n.id}).length||n.returnFocus(!t)),t?(Op=null,(!r||n.observed!==t.observed)&&t.onActivation(),x4(),Bz(x4)):(kpe(),Op=null)}bz.assignSyncMedium(wpe);Sz.assignMedium(o7);Nhe.assignMedium(function(e){return e({moveFocusInside:Fz,focusInside:Nz})});const Tpe=Fhe(Epe,Ppe)(Cpe);var Wz=C.exports.forwardRef(function(t,n){return w(wz,{sideCar:Tpe,ref:n,...t})}),Vz=wz.propTypes||{};Vz.sideCar;KC(Vz,["sideCar"]);Wz.propTypes={};const Lpe=Wz;var Uz=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:i,children:o,isDisabled:a,autoFocus:s,persistentFocus:l,lockFocusAcrossFrames:c}=e,p=C.exports.useCallback(()=>{t?.current?t.current.focus():r?.current&&YD(r.current).length===0&&requestAnimationFrame(()=>{var b;(b=r.current)==null||b.focus()})},[t,r]),g=C.exports.useCallback(()=>{var y;(y=n?.current)==null||y.focus()},[n]);return w(Lpe,{crossFrame:c,persistentFocus:l,autoFocus:s,disabled:a,onActivation:p,onDeactivation:g,returnFocus:i&&!n,children:o})};Uz.displayName="FocusLock";var i3="right-scroll-bar-position",o3="width-before-scroll-bar",Ape="with-scroll-bars-hidden",Ipe="--removed-body-scroll-bar-size",Gz=yz(),aS=function(){},q5=C.exports.forwardRef(function(e,t){var n=C.exports.useRef(null),r=C.exports.useState({onScrollCapture:aS,onWheelCapture:aS,onTouchMoveCapture:aS}),i=r[0],o=r[1],a=e.forwardProps,s=e.children,l=e.className,c=e.removeScrollBar,p=e.enabled,g=e.shards,m=e.sideCar,y=e.noIsolation,b=e.inert,S=e.allowPinchZoom,T=e.as,E=T===void 0?"div":T,k=sD(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),L=m,I=gz([n,t]),O=ul(ul({},k),i);return ne(Fn,{children:[p&&w(L,{sideCar:Gz,removeScrollBar:c,shards:g,noIsolation:y,inert:b,setCallbacks:o,allowPinchZoom:!!S,lockRef:n}),a?C.exports.cloneElement(C.exports.Children.only(s),ul(ul({},O),{ref:I})):w(E,{...ul({},O,{className:l,ref:I}),children:s})]})});q5.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};q5.classNames={fullWidth:o3,zeroRight:i3};var Mpe=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Rpe(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=Mpe();return t&&e.setAttribute("nonce",t),e}function Ope(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function Npe(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var Dpe=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Rpe())&&(Ope(t,n),Npe(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},zpe=function(){var e=Dpe();return function(t,n){C.exports.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},jz=function(){var e=zpe(),t=function(n){var r=n.styles,i=n.dynamic;return e(r,i),null};return t},Fpe={left:0,top:0,right:0,gap:0},sS=function(e){return parseInt(e||"",10)||0},Bpe=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],i=t[e==="padding"?"paddingRight":"marginRight"];return[sS(n),sS(r),sS(i)]},$pe=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return Fpe;var t=Bpe(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Hpe=jz(),Wpe=function(e,t,n,r){var i=e.left,o=e.top,a=e.right,s=e.gap;return n===void 0&&(n="margin"),` - .`.concat(Ape,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(s,"px ").concat(r,`; - } - body { - overflow: hidden `).concat(r,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` - padding-left: `.concat(i,`px; - padding-top: `).concat(o,`px; - padding-right: `).concat(a,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(s,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(s,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(i3,` { - right: `).concat(s,"px ").concat(r,`; - } - - .`).concat(o3,` { - margin-right: `).concat(s,"px ").concat(r,`; - } - - .`).concat(i3," .").concat(i3,` { - right: 0 `).concat(r,`; - } - - .`).concat(o3," .").concat(o3,` { - margin-right: 0 `).concat(r,`; - } - - body { - `).concat(Ipe,": ").concat(s,`px; - } -`)},Vpe=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?"margin":r,o=C.exports.useMemo(function(){return $pe(i)},[i]);return w(Hpe,{styles:Wpe(o,!t,i,n?"":"!important")})},W6=!1;if(typeof window<"u")try{var iy=Object.defineProperty({},"passive",{get:function(){return W6=!0,!0}});window.addEventListener("test",iy,iy),window.removeEventListener("test",iy,iy)}catch{W6=!1}var cp=W6?{passive:!1}:!1,Upe=function(e){return e.tagName==="TEXTAREA"},qz=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Upe(e)&&n[t]==="visible")},Gpe=function(e){return qz(e,"overflowY")},jpe=function(e){return qz(e,"overflowX")},nL=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=Kz(e,n);if(r){var i=Zz(e,n),o=i[1],a=i[2];if(o>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},qpe=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},Kpe=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Kz=function(e,t){return e==="v"?Gpe(t):jpe(t)},Zz=function(e,t){return e==="v"?qpe(t):Kpe(t)},Zpe=function(e,t){return e==="h"&&t==="rtl"?-1:1},Ype=function(e,t,n,r,i){var o=Zpe(e,window.getComputedStyle(t).direction),a=o*r,s=n.target,l=t.contains(s),c=!1,p=a>0,g=0,m=0;do{var y=Zz(e,s),b=y[0],S=y[1],T=y[2],E=S-T-o*b;(b||E)&&Kz(e,s)&&(g+=E,m+=b),s=s.parentNode}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(p&&(i&&g===0||!i&&a>g)||!p&&(i&&m===0||!i&&-a>m))&&(c=!0),c},oy=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},rL=function(e){return[e.deltaX,e.deltaY]},iL=function(e){return e&&"current"in e?e.current:e},Xpe=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Qpe=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},Jpe=0,dp=[];function e0e(e){var t=C.exports.useRef([]),n=C.exports.useRef([0,0]),r=C.exports.useRef(),i=C.exports.useState(Jpe++)[0],o=C.exports.useState(function(){return jz()})[0],a=C.exports.useRef(e);C.exports.useEffect(function(){a.current=e},[e]),C.exports.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var S=E6([e.lockRef.current],(e.shards||[]).map(iL),!0).filter(Boolean);return S.forEach(function(T){return T.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),S.forEach(function(T){return T.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var s=C.exports.useCallback(function(S,T){if("touches"in S&&S.touches.length===2)return!a.current.allowPinchZoom;var E=oy(S),k=n.current,L="deltaX"in S?S.deltaX:k[0]-E[0],I="deltaY"in S?S.deltaY:k[1]-E[1],O,D=S.target,N=Math.abs(L)>Math.abs(I)?"h":"v";if("touches"in S&&N==="h"&&D.type==="range")return!1;var z=nL(N,D);if(!z)return!0;if(z?O=N:(O=N==="v"?"h":"v",z=nL(N,D)),!z)return!1;if(!r.current&&"changedTouches"in S&&(L||I)&&(r.current=O),!O)return!0;var W=r.current||O;return Ype(W,T,S,W==="h"?L:I,!0)},[]),l=C.exports.useCallback(function(S){var T=S;if(!(!dp.length||dp[dp.length-1]!==o)){var E="deltaY"in T?rL(T):oy(T),k=t.current.filter(function(O){return O.name===T.type&&O.target===T.target&&Xpe(O.delta,E)})[0];if(k&&k.should){T.cancelable&&T.preventDefault();return}if(!k){var L=(a.current.shards||[]).map(iL).filter(Boolean).filter(function(O){return O.contains(T.target)}),I=L.length>0?s(T,L[0]):!a.current.noIsolation;I&&T.cancelable&&T.preventDefault()}}},[]),c=C.exports.useCallback(function(S,T,E,k){var L={name:S,delta:T,target:E,should:k};t.current.push(L),setTimeout(function(){t.current=t.current.filter(function(I){return I!==L})},1)},[]),p=C.exports.useCallback(function(S){n.current=oy(S),r.current=void 0},[]),g=C.exports.useCallback(function(S){c(S.type,rL(S),S.target,s(S,e.lockRef.current))},[]),m=C.exports.useCallback(function(S){c(S.type,oy(S),S.target,s(S,e.lockRef.current))},[]);C.exports.useEffect(function(){return dp.push(o),e.setCallbacks({onScrollCapture:g,onWheelCapture:g,onTouchMoveCapture:m}),document.addEventListener("wheel",l,cp),document.addEventListener("touchmove",l,cp),document.addEventListener("touchstart",p,cp),function(){dp=dp.filter(function(S){return S!==o}),document.removeEventListener("wheel",l,cp),document.removeEventListener("touchmove",l,cp),document.removeEventListener("touchstart",p,cp)}},[]);var y=e.removeScrollBar,b=e.inert;return ne(Fn,{children:[b?w(o,{styles:Qpe(i)}):null,y?w(Vpe,{gapMode:"margin"}):null]})}const t0e=Ohe(Gz,e0e);var Yz=C.exports.forwardRef(function(e,t){return w(q5,{...ul({},e,{ref:t,sideCar:t0e})})});Yz.classNames=q5.classNames;const Xz=Yz;var Qf=(...e)=>e.filter(Boolean).join(" ");function Pg(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var n0e=class{modals;constructor(){this.modals=[]}add(e){this.modals.push(e)}remove(e){this.modals=this.modals.filter(t=>t!==e)}isTopModal(e){return this.modals[this.modals.length-1]===e}},V6=new n0e;function r0e(e,t){C.exports.useEffect(()=>(t&&V6.add(e),()=>{V6.remove(e)}),[t,e])}function i0e(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:i=!0,closeOnEsc:o=!0,useInert:a=!0,onOverlayClick:s,onEsc:l}=e,c=C.exports.useRef(null),p=C.exports.useRef(null),[g,m,y]=a0e(r,"chakra-modal","chakra-modal--header","chakra-modal--body");o0e(c,t&&a),r0e(c,t);const b=C.exports.useRef(null),S=C.exports.useCallback(z=>{b.current=z.target},[]),T=C.exports.useCallback(z=>{z.key==="Escape"&&(z.stopPropagation(),o&&n?.(),l?.())},[o,n,l]),[E,k]=C.exports.useState(!1),[L,I]=C.exports.useState(!1),O=C.exports.useCallback((z={},W=null)=>({role:"dialog",...z,ref:zn(W,c),id:g,tabIndex:-1,"aria-modal":!0,"aria-labelledby":E?m:void 0,"aria-describedby":L?y:void 0,onClick:Pg(z.onClick,V=>V.stopPropagation())}),[y,L,g,m,E]),D=C.exports.useCallback(z=>{z.stopPropagation(),b.current===z.target&&(!V6.isTopModal(c)||(i&&n?.(),s?.()))},[n,i,s]),N=C.exports.useCallback((z={},W=null)=>({...z,ref:zn(W,p),onClick:Pg(z.onClick,D),onKeyDown:Pg(z.onKeyDown,T),onMouseDown:Pg(z.onMouseDown,S)}),[T,S,D]);return{isOpen:t,onClose:n,headerId:m,bodyId:y,setBodyMounted:I,setHeaderMounted:k,dialogRef:c,overlayRef:p,getDialogProps:O,getDialogContainerProps:N}}function o0e(e,t){const n=e.current;C.exports.useEffect(()=>{if(!(!e.current||!t))return dz(e.current)},[t,e,n])}function a0e(e,...t){const n=C.exports.useId(),r=e||n;return C.exports.useMemo(()=>t.map(i=>`${i}-${r}`),[r,t])}var[s0e,Jf]=xn({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[l0e,Zc]=xn({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),S0=e=>{const{portalProps:t,children:n,autoFocus:r,trapFocus:i,initialFocusRef:o,finalFocusRef:a,returnFocusOnClose:s,blockScrollOnMount:l,allowPinchZoom:c,preserveScrollBarGap:p,motionPreset:g,lockFocusAcrossFrames:m,onCloseComplete:y}=e,b=Ai("Modal",e),T={...i0e(e),autoFocus:r,trapFocus:i,initialFocusRef:o,finalFocusRef:a,returnFocusOnClose:s,blockScrollOnMount:l,allowPinchZoom:c,preserveScrollBarGap:p,motionPreset:g,lockFocusAcrossFrames:m};return w(l0e,{value:T,children:w(s0e,{value:b,children:w(wu,{onExitComplete:y,children:T.isOpen&&w(Xf,{...t,children:n})})})})};S0.defaultProps={lockFocusAcrossFrames:!0,returnFocusOnClose:!0,scrollBehavior:"outside",trapFocus:!0,autoFocus:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale"};S0.displayName="Modal";var b4=ke((e,t)=>{const{className:n,...r}=e,{bodyId:i,setBodyMounted:o}=Zc();C.exports.useEffect(()=>(o(!0),()=>o(!1)),[o]);const a=Qf("chakra-modal__body",n),s=Jf();return re.createElement(be.div,{ref:t,className:a,id:i,...r,__css:s.body})});b4.displayName="ModalBody";var a7=ke((e,t)=>{const{onClick:n,className:r,...i}=e,{onClose:o}=Zc(),a=Qf("chakra-modal__close-btn",r),s=Jf();return w(U5,{ref:t,__css:s.closeButton,className:a,onClick:Pg(n,l=>{l.stopPropagation(),o()}),...i})});a7.displayName="ModalCloseButton";function Qz(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:i,blockScrollOnMount:o,allowPinchZoom:a,finalFocusRef:s,returnFocusOnClose:l,preserveScrollBarGap:c,lockFocusAcrossFrames:p}=Zc(),[g,m]=xC();return C.exports.useEffect(()=>{!g&&m&&setTimeout(m)},[g,m]),w(Uz,{autoFocus:t,isDisabled:!n,initialFocusRef:i,finalFocusRef:s,restoreFocus:l,contentRef:r,lockFocusAcrossFrames:p,children:w(Xz,{removeScrollBar:!c,allowPinchZoom:a,enabled:o,forwardProps:!0,children:e.children})})}var u0e={slideInBottom:{...T6,custom:{offsetY:16,reverse:!0}},slideInRight:{...T6,custom:{offsetX:16,reverse:!0}},scale:{...cD,custom:{initialScale:.95,reverse:!0}},none:{}},c0e=be(Ha.section),d0e=e=>u0e[e||"none"],Jz=C.exports.forwardRef((e,t)=>{const{preset:n,motionProps:r=d0e(n),...i}=e;return w(c0e,{ref:t,...r,...i})});Jz.displayName="ModalTransition";var Ym=ke((e,t)=>{const{className:n,children:r,containerProps:i,motionProps:o,...a}=e,{getDialogProps:s,getDialogContainerProps:l}=Zc(),c=s(a,t),p=l(i),g=Qf("chakra-modal__content",n),m=Jf(),y={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...m.dialog},b={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...m.dialogContainer},{motionPreset:S}=Zc();return re.createElement(Qz,null,re.createElement(be.div,{...p,className:"chakra-modal__content-container",tabIndex:-1,__css:b},w(Jz,{preset:S,motionProps:o,className:g,...c,__css:y,children:r})))});Ym.displayName="ModalContent";var s7=ke((e,t)=>{const{className:n,...r}=e,i=Qf("chakra-modal__footer",n),a={display:"flex",alignItems:"center",justifyContent:"flex-end",...Jf().footer};return re.createElement(be.footer,{ref:t,...r,__css:a,className:i})});s7.displayName="ModalFooter";var l7=ke((e,t)=>{const{className:n,...r}=e,{headerId:i,setHeaderMounted:o}=Zc();C.exports.useEffect(()=>(o(!0),()=>o(!1)),[o]);const a=Qf("chakra-modal__header",n),l={flex:0,...Jf().header};return re.createElement(be.header,{ref:t,className:a,id:i,...r,__css:l})});l7.displayName="ModalHeader";var f0e=be(Ha.div),Xm=ke((e,t)=>{const{className:n,transition:r,motionProps:i,...o}=e,a=Qf("chakra-modal__overlay",n),l={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...Jf().overlay},{motionPreset:c}=Zc();return w(f0e,{...i||(c==="none"?{}:uD),__css:l,ref:t,className:a,...o})});Xm.displayName="ModalOverlay";function h0e(e){const{leastDestructiveRef:t,...n}=e;return w(S0,{...n,initialFocusRef:t})}var p0e=ke((e,t)=>w(Ym,{ref:t,role:"alertdialog",...e})),[ICe,g0e]=xn(),m0e=be(dD),v0e=ke((e,t)=>{const{className:n,children:r,motionProps:i,containerProps:o,...a}=e,{getDialogProps:s,getDialogContainerProps:l,isOpen:c}=Zc(),p=s(a,t),g=l(o),m=Qf("chakra-modal__content",n),y=Jf(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...y.dialog},S={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...y.dialogContainer},{placement:T}=g0e();return re.createElement(Qz,null,re.createElement(be.div,{...g,className:"chakra-modal__content-container",__css:S},w(m0e,{motionProps:i,direction:T,in:c,className:m,...p,__css:b,children:r})))});v0e.displayName="DrawerContent";function y0e(e,t){const n=ur(e);C.exports.useEffect(()=>{let r=null;const i=()=>n();return t!==null&&(r=window.setInterval(i,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var eF=(...e)=>e.filter(Boolean).join(" "),lS=e=>e?!0:void 0;function Xs(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var x0e=e=>w(ha,{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z"})}),b0e=e=>w(ha,{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z"})});function oL(e,t,n,r){C.exports.useEffect(()=>{if(!e.current||!r)return;const i=e.current.ownerDocument.defaultView??window,o=Array.isArray(t)?t:[t],a=new i.MutationObserver(s=>{for(const l of s)l.type==="attributes"&&l.attributeName&&o.includes(l.attributeName)&&n(l)});return a.observe(e.current,{attributes:!0,attributeFilter:o}),()=>a.disconnect()})}var S0e=50,aL=300;function w0e(e,t){const[n,r]=C.exports.useState(!1),[i,o]=C.exports.useState(null),[a,s]=C.exports.useState(!0),l=C.exports.useRef(null),c=()=>clearTimeout(l.current);y0e(()=>{i==="increment"&&e(),i==="decrement"&&t()},n?S0e:null);const p=C.exports.useCallback(()=>{a&&e(),l.current=setTimeout(()=>{s(!1),r(!0),o("increment")},aL)},[e,a]),g=C.exports.useCallback(()=>{a&&t(),l.current=setTimeout(()=>{s(!1),r(!0),o("decrement")},aL)},[t,a]),m=C.exports.useCallback(()=>{s(!0),r(!1),c()},[]);return C.exports.useEffect(()=>()=>c(),[]),{up:p,down:g,stop:m,isSpinning:n}}var C0e=/^[Ee0-9+\-.]$/;function _0e(e){return C0e.test(e)}function k0e(e,t){if(e.key==null)return!0;const n=e.ctrlKey||e.altKey||e.metaKey;return!(e.key.length===1)||n?!0:t(e.key)}function E0e(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:i=Number.MIN_SAFE_INTEGER,max:o=Number.MAX_SAFE_INTEGER,step:a=1,isReadOnly:s,isDisabled:l,isRequired:c,isInvalid:p,pattern:g="[0-9]*(.[0-9]+)?",inputMode:m="decimal",allowMouseWheel:y,id:b,onChange:S,precision:T,name:E,"aria-describedby":k,"aria-label":L,"aria-labelledby":I,onFocus:O,onBlur:D,onInvalid:N,getAriaValueText:z,isValidCharacter:W,format:V,parse:q,...he}=e,de=ur(O),ve=ur(D),Ee=ur(N),xe=ur(W??_0e),Z=ur(z),U=Nce(e),{update:ee,increment:ae,decrement:X}=U,[me,ye]=C.exports.useState(!1),Se=!(s||l),He=C.exports.useRef(null),je=C.exports.useRef(null),ut=C.exports.useRef(null),qe=C.exports.useRef(null),ot=C.exports.useCallback(_e=>_e.split("").filter(xe).join(""),[xe]),tt=C.exports.useCallback(_e=>q?.(_e)??_e,[q]),at=C.exports.useCallback(_e=>(V?.(_e)??_e).toString(),[V]);qc(()=>{(U.valueAsNumber>o||U.valueAsNumber{if(!He.current)return;if(He.current.value!=U.value){const Tt=tt(He.current.value);U.setValue(ot(Tt))}},[tt,ot]);const Rt=C.exports.useCallback((_e=a)=>{Se&&ae(_e)},[ae,Se,a]),kt=C.exports.useCallback((_e=a)=>{Se&&X(_e)},[X,Se,a]),Le=w0e(Rt,kt);oL(ut,"disabled",Le.stop,Le.isSpinning),oL(qe,"disabled",Le.stop,Le.isSpinning);const st=C.exports.useCallback(_e=>{if(_e.nativeEvent.isComposing)return;const De=tt(_e.currentTarget.value);ee(ot(De)),je.current={start:_e.currentTarget.selectionStart,end:_e.currentTarget.selectionEnd}},[ee,ot,tt]),Lt=C.exports.useCallback(_e=>{var Tt;de?.(_e),je.current&&(_e.target.selectionStart=je.current.start??((Tt=_e.currentTarget.value)==null?void 0:Tt.length),_e.currentTarget.selectionEnd=je.current.end??_e.currentTarget.selectionStart)},[de]),it=C.exports.useCallback(_e=>{if(_e.nativeEvent.isComposing)return;k0e(_e,xe)||_e.preventDefault();const Tt=mt(_e)*a,De=_e.key,rn={ArrowUp:()=>Rt(Tt),ArrowDown:()=>kt(Tt),Home:()=>ee(i),End:()=>ee(o)}[De];rn&&(_e.preventDefault(),rn(_e))},[xe,a,Rt,kt,ee,i,o]),mt=_e=>{let Tt=1;return(_e.metaKey||_e.ctrlKey)&&(Tt=.1),_e.shiftKey&&(Tt=10),Tt},Sn=C.exports.useMemo(()=>{const _e=Z?.(U.value);if(_e!=null)return _e;const Tt=U.value.toString();return Tt||void 0},[U.value,Z]),wt=C.exports.useCallback(()=>{let _e=U.value;if(U.value==="")return;/^[eE]/.test(U.value.toString())?U.setValue(""):(U.valueAsNumbero&&(_e=o),U.cast(_e))},[U,o,i]),Kt=C.exports.useCallback(()=>{ye(!1),n&&wt()},[n,ye,wt]),wn=C.exports.useCallback(()=>{t&&requestAnimationFrame(()=>{var _e;(_e=He.current)==null||_e.focus()})},[t]),pn=C.exports.useCallback(_e=>{_e.preventDefault(),Le.up(),wn()},[wn,Le]),Re=C.exports.useCallback(_e=>{_e.preventDefault(),Le.down(),wn()},[wn,Le]);Mf(()=>He.current,"wheel",_e=>{var Tt;const nt=(((Tt=He.current)==null?void 0:Tt.ownerDocument)??document).activeElement===He.current;if(!y||!nt)return;_e.preventDefault();const rn=mt(_e)*a,Mn=Math.sign(_e.deltaY);Mn===-1?Rt(rn):Mn===1&&kt(rn)},{passive:!1});const Ze=C.exports.useCallback((_e={},Tt=null)=>{const De=l||r&&U.isAtMax;return{..._e,ref:zn(Tt,ut),role:"button",tabIndex:-1,onPointerDown:Xs(_e.onPointerDown,nt=>{nt.button!==0||De||pn(nt)}),onPointerLeave:Xs(_e.onPointerLeave,Le.stop),onPointerUp:Xs(_e.onPointerUp,Le.stop),disabled:De,"aria-disabled":lS(De)}},[U.isAtMax,r,pn,Le.stop,l]),Zt=C.exports.useCallback((_e={},Tt=null)=>{const De=l||r&&U.isAtMin;return{..._e,ref:zn(Tt,qe),role:"button",tabIndex:-1,onPointerDown:Xs(_e.onPointerDown,nt=>{nt.button!==0||De||Re(nt)}),onPointerLeave:Xs(_e.onPointerLeave,Le.stop),onPointerUp:Xs(_e.onPointerUp,Le.stop),disabled:De,"aria-disabled":lS(De)}},[U.isAtMin,r,Re,Le.stop,l]),Gt=C.exports.useCallback((_e={},Tt=null)=>({name:E,inputMode:m,type:"text",pattern:g,"aria-labelledby":I,"aria-label":L,"aria-describedby":k,id:b,disabled:l,..._e,readOnly:_e.readOnly??s,"aria-readonly":_e.readOnly??s,"aria-required":_e.required??c,required:_e.required??c,ref:zn(He,Tt),value:at(U.value),role:"spinbutton","aria-valuemin":i,"aria-valuemax":o,"aria-valuenow":Number.isNaN(U.valueAsNumber)?void 0:U.valueAsNumber,"aria-invalid":lS(p??U.isOutOfRange),"aria-valuetext":Sn,autoComplete:"off",autoCorrect:"off",onChange:Xs(_e.onChange,st),onKeyDown:Xs(_e.onKeyDown,it),onFocus:Xs(_e.onFocus,Lt,()=>ye(!0)),onBlur:Xs(_e.onBlur,ve,Kt)}),[E,m,g,I,L,at,k,b,l,c,s,p,U.value,U.valueAsNumber,U.isOutOfRange,i,o,Sn,st,it,Lt,ve,Kt]);return{value:at(U.value),valueAsNumber:U.valueAsNumber,isFocused:me,isDisabled:l,isReadOnly:s,getIncrementButtonProps:Ze,getDecrementButtonProps:Zt,getInputProps:Gt,htmlProps:he}}var[P0e,K5]=xn({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[T0e,u7]=xn({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),tF=ke(function(t,n){const r=Ai("NumberInput",t),i=hn(t),o=IC(i),{htmlProps:a,...s}=E0e(o),l=C.exports.useMemo(()=>s,[s]);return re.createElement(T0e,{value:l},re.createElement(P0e,{value:r},re.createElement(be.div,{...a,ref:n,className:eF("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})))});tF.displayName="NumberInput";var L0e=ke(function(t,n){const r=K5();return re.createElement(be.div,{"aria-hidden":!0,ref:n,...t,__css:{display:"flex",flexDirection:"column",position:"absolute",top:"0",insetEnd:"0px",margin:"1px",height:"calc(100% - 2px)",zIndex:1,...r.stepperGroup}})});L0e.displayName="NumberInputStepper";var nF=ke(function(t,n){const{getInputProps:r}=u7(),i=r(t,n),o=K5();return re.createElement(be.input,{...i,className:eF("chakra-numberinput__field",t.className),__css:{width:"100%",...o.field}})});nF.displayName="NumberInputField";var rF=be("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),iF=ke(function(t,n){const r=K5(),{getDecrementButtonProps:i}=u7(),o=i(t,n);return w(rF,{...o,__css:r.stepper,children:t.children??w(x0e,{})})});iF.displayName="NumberDecrementStepper";var oF=ke(function(t,n){const{getIncrementButtonProps:r}=u7(),i=r(t,n),o=K5();return w(rF,{...i,__css:o.stepper,children:t.children??w(b0e,{})})});oF.displayName="NumberIncrementStepper";var Ev=(...e)=>e.filter(Boolean).join(" ");function A0e(e,...t){return I0e(e)?e(...t):e}var I0e=e=>typeof e=="function";function Qs(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}function M0e(...e){return function(n){e.forEach(r=>{r?.(n)})}}var[R0e,eh]=xn({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[O0e,Pv]=xn({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),fp={click:"click",hover:"hover"};function N0e(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:i,returnFocusOnClose:o=!0,autoFocus:a=!0,arrowSize:s,arrowShadowColor:l,trigger:c=fp.click,openDelay:p=200,closeDelay:g=200,isLazy:m,lazyBehavior:y="unmount",computePositionOnMount:b,...S}=e,{isOpen:T,onClose:E,onOpen:k,onToggle:L}=sz(e),I=C.exports.useRef(null),O=C.exports.useRef(null),D=C.exports.useRef(null),N=C.exports.useRef(!1),z=C.exports.useRef(!1);T&&(z.current=!0);const[W,V]=C.exports.useState(!1),[q,he]=C.exports.useState(!1),de=C.exports.useId(),ve=i??de,[Ee,xe,Z,U]=["popover-trigger","popover-content","popover-header","popover-body"].map(st=>`${st}-${ve}`),{referenceRef:ee,getArrowProps:ae,getPopperProps:X,getArrowInnerProps:me,forceUpdate:ye}=az({...S,enabled:T||!!b}),Se=ghe({isOpen:T,ref:D});Uce({enabled:T,ref:O}),Gde(D,{focusRef:O,visible:T,shouldFocus:o&&c===fp.click}),qde(D,{focusRef:r,visible:T,shouldFocus:a&&c===fp.click});const He=lz({wasSelected:z.current,enabled:m,mode:y,isSelected:Se.present}),je=C.exports.useCallback((st={},Lt=null)=>{const it={...st,style:{...st.style,transformOrigin:Hr.transformOrigin.varRef,[Hr.arrowSize.var]:s?`${s}px`:void 0,[Hr.arrowShadowColor.var]:l},ref:zn(D,Lt),children:He?st.children:null,id:xe,tabIndex:-1,role:"dialog",onKeyDown:Qs(st.onKeyDown,mt=>{n&&mt.key==="Escape"&&E()}),onBlur:Qs(st.onBlur,mt=>{const Sn=sL(mt),wt=uS(D.current,Sn),Kt=uS(O.current,Sn);T&&t&&(!wt&&!Kt)&&E()}),"aria-labelledby":W?Z:void 0,"aria-describedby":q?U:void 0};return c===fp.hover&&(it.role="tooltip",it.onMouseEnter=Qs(st.onMouseEnter,()=>{N.current=!0}),it.onMouseLeave=Qs(st.onMouseLeave,mt=>{mt.nativeEvent.relatedTarget!==null&&(N.current=!1,setTimeout(()=>E(),g))})),it},[He,xe,W,Z,q,U,c,n,E,T,t,g,l,s]),ut=C.exports.useCallback((st={},Lt=null)=>X({...st,style:{visibility:T?"visible":"hidden",...st.style}},Lt),[T,X]),qe=C.exports.useCallback((st,Lt=null)=>({...st,ref:zn(Lt,I,ee)}),[I,ee]),ot=C.exports.useRef(),tt=C.exports.useRef(),at=C.exports.useCallback(st=>{I.current==null&&ee(st)},[ee]),Rt=C.exports.useCallback((st={},Lt=null)=>{const it={...st,ref:zn(O,Lt,at),id:Ee,"aria-haspopup":"dialog","aria-expanded":T,"aria-controls":xe};return c===fp.click&&(it.onClick=Qs(st.onClick,L)),c===fp.hover&&(it.onFocus=Qs(st.onFocus,()=>{ot.current===void 0&&k()}),it.onBlur=Qs(st.onBlur,mt=>{const Sn=sL(mt),wt=!uS(D.current,Sn);T&&t&&wt&&E()}),it.onKeyDown=Qs(st.onKeyDown,mt=>{mt.key==="Escape"&&E()}),it.onMouseEnter=Qs(st.onMouseEnter,()=>{N.current=!0,ot.current=window.setTimeout(()=>k(),p)}),it.onMouseLeave=Qs(st.onMouseLeave,()=>{N.current=!1,ot.current&&(clearTimeout(ot.current),ot.current=void 0),tt.current=window.setTimeout(()=>{N.current===!1&&E()},g)})),it},[Ee,T,xe,c,at,L,k,t,E,p,g]);C.exports.useEffect(()=>()=>{ot.current&&clearTimeout(ot.current),tt.current&&clearTimeout(tt.current)},[]);const kt=C.exports.useCallback((st={},Lt=null)=>({...st,id:Z,ref:zn(Lt,it=>{V(!!it)})}),[Z]),Le=C.exports.useCallback((st={},Lt=null)=>({...st,id:U,ref:zn(Lt,it=>{he(!!it)})}),[U]);return{forceUpdate:ye,isOpen:T,onAnimationComplete:Se.onComplete,onClose:E,getAnchorProps:qe,getArrowProps:ae,getArrowInnerProps:me,getPopoverPositionerProps:ut,getPopoverProps:je,getTriggerProps:Rt,getHeaderProps:kt,getBodyProps:Le}}function uS(e,t){return e===t||e?.contains(t)}function sL(e){const t=e.currentTarget.ownerDocument.activeElement;return e.relatedTarget??t}function c7(e){const t=Ai("Popover",e),{children:n,...r}=hn(e),i=A0(),o=N0e({...r,direction:i.direction});return w(R0e,{value:o,children:w(O0e,{value:t,children:A0e(n,{isOpen:o.isOpen,onClose:o.onClose,forceUpdate:o.forceUpdate})})})}c7.displayName="Popover";function d7(e){const{bg:t,bgColor:n,backgroundColor:r}=e,{getArrowProps:i,getArrowInnerProps:o}=eh(),a=Pv(),s=t??n??r;return re.createElement(be.div,{...i(),className:"chakra-popover__arrow-positioner"},re.createElement(be.div,{className:Ev("chakra-popover__arrow",e.className),...o(e),__css:{...a.arrow,"--popper-arrow-bg":s?`colors.${s}, ${s}`:void 0}}))}d7.displayName="PopoverArrow";var D0e=ke(function(t,n){const{getBodyProps:r}=eh(),i=Pv();return re.createElement(be.div,{...r(t,n),className:Ev("chakra-popover__body",t.className),__css:i.body})});D0e.displayName="PopoverBody";var z0e=ke(function(t,n){const{onClose:r}=eh(),i=Pv();return w(U5,{size:"sm",onClick:r,className:Ev("chakra-popover__close-btn",t.className),__css:i.closeButton,ref:n,...t})});z0e.displayName="PopoverCloseButton";function F0e(e){if(!!e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var B0e={exit:{opacity:0,scale:.95,transition:{duration:.1,ease:[.4,0,1,1]}},enter:{scale:1,opacity:1,transition:{duration:.15,ease:[0,0,.2,1]}}},$0e=be(Ha.section),aF=ke(function(t,n){const{variants:r=B0e,...i}=t,{isOpen:o}=eh();return re.createElement($0e,{ref:n,variants:F0e(r),initial:!1,animate:o?"enter":"exit",...i})});aF.displayName="PopoverTransition";var f7=ke(function(t,n){const{rootProps:r,motionProps:i,...o}=t,{getPopoverProps:a,getPopoverPositionerProps:s,onAnimationComplete:l}=eh(),c=Pv(),p={position:"relative",display:"flex",flexDirection:"column",...c.content};return re.createElement(be.div,{...s(r),__css:c.popper,className:"chakra-popover__popper"},w(aF,{...i,...a(o,n),onAnimationComplete:M0e(l,o.onAnimationComplete),className:Ev("chakra-popover__content",t.className),__css:p}))});f7.displayName="PopoverContent";var H0e=ke(function(t,n){const{getHeaderProps:r}=eh(),i=Pv();return re.createElement(be.header,{...r(t,n),className:Ev("chakra-popover__header",t.className),__css:i.header})});H0e.displayName="PopoverHeader";function h7(e){const t=C.exports.Children.only(e.children),{getTriggerProps:n}=eh();return C.exports.cloneElement(t,n(t.props,t.ref))}h7.displayName="PopoverTrigger";function W0e(e,t,n){return(e-t)*100/(n-t)}var V0e=hv({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),U0e=hv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),G0e=hv({"0%":{left:"-40%"},"100%":{left:"100%"}}),j0e=hv({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function sF(e){const{value:t=0,min:n,max:r,valueText:i,getValueText:o,isIndeterminate:a}=e,s=W0e(t,n,r);return{bind:{"data-indeterminate":a?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":a?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof o=="function"?o(t,s):i})(),role:"progressbar"},percent:s,value:t}}var lF=e=>{const{size:t,isIndeterminate:n,...r}=e;return re.createElement(be.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${U0e} 2s linear infinite`:void 0},...r})};lF.displayName="Shape";var U6=e=>re.createElement(be.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});U6.displayName="Circle";var q0e=ke((e,t)=>{const{size:n="48px",max:r=100,min:i=0,valueText:o,getValueText:a,value:s,capIsRound:l,children:c,thickness:p="10px",color:g="#0078d4",trackColor:m="#edebe9",isIndeterminate:y,...b}=e,S=sF({min:i,max:r,value:s,valueText:o,getValueText:a,isIndeterminate:y}),T=y?void 0:(S.percent??0)*2.64,E=T==null?void 0:`${T} ${264-T}`,k=y?{css:{animation:`${V0e} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:E,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},L={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:n};return re.createElement(be.div,{ref:t,className:"chakra-progress",...S.bind,...b,__css:L},ne(lF,{size:n,isIndeterminate:y,children:[w(U6,{stroke:m,strokeWidth:p,className:"chakra-progress__track"}),w(U6,{stroke:g,strokeWidth:p,className:"chakra-progress__indicator",strokeLinecap:l?"round":void 0,opacity:S.value===0&&!y?0:void 0,...k})]}),c)});q0e.displayName="CircularProgress";var[K0e,Z0e]=xn({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Y0e=ke((e,t)=>{const{min:n,max:r,value:i,isIndeterminate:o,...a}=e,s=sF({value:i,min:n,max:r,isIndeterminate:o}),c={height:"100%",...Z0e().filledTrack};return re.createElement(be.div,{ref:t,style:{width:`${s.percent}%`,...a.style},...s.bind,...a,__css:c})}),uF=ke((e,t)=>{var n;const{value:r,min:i=0,max:o=100,hasStripe:a,isAnimated:s,children:l,borderRadius:c,isIndeterminate:p,"aria-label":g,"aria-labelledby":m,...y}=hn(e),b=Ai("Progress",e),S=c??((n=b.track)==null?void 0:n.borderRadius),T={animation:`${j0e} 1s linear infinite`},L={...!p&&a&&s&&T,...p&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${G0e} 1s ease infinite normal none running`}},I={overflow:"hidden",position:"relative",...b.track};return re.createElement(be.div,{ref:t,borderRadius:S,__css:I,...y},ne(K0e,{value:b,children:[w(Y0e,{"aria-label":g,"aria-labelledby":m,min:i,max:o,value:r,isIndeterminate:p,css:L,borderRadius:S}),l]}))});uF.displayName="Progress";var X0e=be("div",{baseStyle:{fontSize:"0.24em",top:"50%",left:"50%",width:"100%",textAlign:"center",position:"absolute",transform:"translate(-50%, -50%)"}});X0e.displayName="CircularProgressLabel";var Q0e=(...e)=>e.filter(Boolean).join(" "),J0e=e=>e?"":void 0;function e1e(e,t){const n={},r={};for(const[i,o]of Object.entries(e))t.includes(i)?n[i]=o:r[i]=o;return[n,r]}var cF=ke(function(t,n){const{children:r,placeholder:i,className:o,...a}=t;return re.createElement(be.select,{...a,ref:n,className:Q0e("chakra-select",o)},i&&w("option",{value:"",children:i}),r)});cF.displayName="SelectField";var dF=ke((e,t)=>{var n;const r=Ai("Select",e),{rootProps:i,placeholder:o,icon:a,color:s,height:l,h:c,minH:p,minHeight:g,iconColor:m,iconSize:y,...b}=hn(e),[S,T]=e1e(b,hY),E=AC(T),k={width:"100%",height:"fit-content",position:"relative",color:s},L={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return re.createElement(be.div,{className:"chakra-select__wrapper",__css:k,...S,...i},w(cF,{ref:t,height:c??l,minH:p??g,placeholder:o,...E,__css:L,children:e.children}),w(fF,{"data-disabled":J0e(E.disabled),...(m||s)&&{color:m||s},__css:r.icon,...y&&{fontSize:y},children:a}))});dF.displayName="Select";var t1e=e=>w("svg",{viewBox:"0 0 24 24",...e,children:w("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),n1e=be("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),fF=e=>{const{children:t=w(t1e,{}),...n}=e,r=C.exports.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return w(n1e,{...n,className:"chakra-select__icon-wrapper",children:C.exports.isValidElement(t)?r:null})};fF.displayName="SelectIcon";function r1e(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function i1e(e){const t=a1e(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function hF(e){return!!e.touches}function o1e(e){return hF(e)&&e.touches.length>1}function a1e(e){return e.view??window}function s1e(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function l1e(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function pF(e,t="page"){return hF(e)?s1e(e,t):l1e(e,t)}function u1e(e){return t=>{const n=i1e(t);(!n||n&&t.button===0)&&e(t)}}function c1e(e,t=!1){function n(i){e(i,{point:pF(i)})}return t?u1e(n):n}function a3(e,t,n,r){return r1e(e,t,c1e(n,t==="pointerdown"),r)}function gF(e){const t=C.exports.useRef(null);return t.current=e,t}var d1e=class{history=[];startEvent=null;lastEvent=null;lastEventInfo=null;handlers={};removeListeners=()=>{};threshold=3;win;constructor(e,t,n){if(this.win=e.view??window,o1e(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const r={point:pF(e)},{timestamp:i}=FE();this.history=[{...r.point,timestamp:i}];const{onSessionStart:o}=t;o?.(e,cS(r,this.history)),this.removeListeners=p1e(a3(this.win,"pointermove",this.onPointerMove),a3(this.win,"pointerup",this.onPointerUp),a3(this.win,"pointercancel",this.onPointerUp))}updatePoint=()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const e=cS(this.lastEventInfo,this.history),t=this.startEvent!==null,n=g1e(e.offset,{x:0,y:0})>=this.threshold;if(!t&&!n)return;const{timestamp:r}=FE();this.history.push({...e.point,timestamp:r});const{onStart:i,onMove:o}=this.handlers;t||(i?.(this.lastEvent,e),this.startEvent=this.lastEvent),o?.(this.lastEvent,e)};onPointerMove=(e,t)=>{this.lastEvent=e,this.lastEventInfo=t,kX.update(this.updatePoint,!0)};onPointerUp=(e,t)=>{const n=cS(t,this.history),{onEnd:r,onSessionEnd:i}=this.handlers;i?.(e,n),this.end(),!(!r||!this.startEvent)&&r?.(e,n)};updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),EX.update(this.updatePoint)}};function lL(e,t){return{x:e.x-t.x,y:e.y-t.y}}function cS(e,t){return{point:e.point,delta:lL(e.point,t[t.length-1]),offset:lL(e.point,t[0]),velocity:h1e(t,.1)}}var f1e=e=>e*1e3;function h1e(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=e[e.length-1];for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>f1e(t)));)n--;if(!r)return{x:0,y:0};const o=(i.timestamp-r.timestamp)/1e3;if(o===0)return{x:0,y:0};const a={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function p1e(...e){return t=>e.reduce((n,r)=>r(n),t)}function dS(e,t){return Math.abs(e-t)}function uL(e){return"x"in e&&"y"in e}function g1e(e,t){if(typeof e=="number"&&typeof t=="number")return dS(e,t);if(uL(e)&&uL(t)){const n=dS(e.x,t.x),r=dS(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function mF(e,t){const{onPan:n,onPanStart:r,onPanEnd:i,onPanSessionStart:o,onPanSessionEnd:a,threshold:s}=t,l=Boolean(n||r||i||o||a),c=C.exports.useRef(null),p=gF({onSessionStart:o,onSessionEnd:a,onStart:r,onMove:n,onEnd(g,m){c.current=null,i?.(g,m)}});C.exports.useEffect(()=>{var g;(g=c.current)==null||g.updateHandlers(p.current)}),C.exports.useEffect(()=>{const g=e.current;if(!g||!l)return;function m(y){c.current=new d1e(y,p.current,s)}return a3(g,"pointerdown",m)},[e,l,p,s]),C.exports.useEffect(()=>()=>{var g;(g=c.current)==null||g.end(),c.current=null},[])}function m1e(e,t){if(!e){t(void 0);return}t({width:e.offsetWidth,height:e.offsetHeight});const n=e.ownerDocument.defaultView??window,r=new n.ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const[o]=i;let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,c=Array.isArray(l)?l[0]:l;a=c.inlineSize,s=c.blockSize}else a=e.offsetWidth,s=e.offsetHeight;t({width:a,height:s})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var v1e=Boolean(globalThis?.document)?C.exports.useLayoutEffect:C.exports.useEffect;function y1e(e,t){var n;if(!e||!e.parentElement)return;const r=((n=e.ownerDocument)==null?void 0:n.defaultView)??window,i=new r.MutationObserver(()=>{t()});return i.observe(e.parentElement,{childList:!0}),()=>{i.disconnect()}}function vF({getNodes:e,observeMutation:t=!0}){const[n,r]=C.exports.useState([]),[i,o]=C.exports.useState(0);return v1e(()=>{const a=e(),s=a.map((l,c)=>m1e(l,p=>{r(g=>[...g.slice(0,c),p,...g.slice(c+1)])}));if(t){const l=a[0];s.push(y1e(l,()=>{o(c=>c+1)}))}return()=>{s.forEach(l=>{l?.()})}},[i]),n}function x1e(e){return typeof e=="object"&&e!==null&&"current"in e}function b1e(e){const[t]=vF({observeMutation:!1,getNodes(){return[x1e(e)?e.current:e]}});return t}var S1e=Object.getOwnPropertyNames,w1e=(e,t)=>function(){return e&&(t=(0,e[S1e(e)[0]])(e=0)),t},ad=w1e({"../../../react-shim.js"(){}});ad();ad();ad();var La=e=>e?"":void 0,Jp=e=>e?!0:void 0,sd=(...e)=>e.filter(Boolean).join(" ");ad();function e0(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}ad();ad();function C1e(e){return{root:`slider-root-${e}`,getThumb:t=>`slider-thumb-${e}-${t}`,getInput:t=>`slider-input-${e}-${t}`,track:`slider-track-${e}`,innerTrack:`slider-filled-track-${e}`,getMarker:t=>`slider-marker-${e}-${t}`,output:`slider-output-${e}`}}function Tg(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var s3={width:0,height:0},ay=e=>e||s3;function yF(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:i}=e,o=S=>{const T=r[S]??s3;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...Tg({orientation:t,vertical:{bottom:`calc(${n[S]}% - ${T.height/2}px)`},horizontal:{left:`calc(${n[S]}% - ${T.width/2}px)`}})}},a=t==="vertical"?r.reduce((S,T)=>ay(S).height>ay(T).height?S:T,s3):r.reduce((S,T)=>ay(S).width>ay(T).width?S:T,s3),s={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...Tg({orientation:t,vertical:a?{paddingLeft:a.width/2,paddingRight:a.width/2}:{},horizontal:a?{paddingTop:a.height/2,paddingBottom:a.height/2}:{}})},l={position:"absolute",...Tg({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},c=n.length===1,p=[0,i?100-n[0]:n[0]],g=c?p:n;let m=g[0];!c&&i&&(m=100-m);const y=Math.abs(g[g.length-1]-g[0]),b={...l,...Tg({orientation:t,vertical:i?{height:`${y}%`,top:`${m}%`}:{height:`${y}%`,bottom:`${m}%`},horizontal:i?{width:`${y}%`,right:`${m}%`}:{width:`${y}%`,left:`${m}%`}})};return{trackStyle:l,innerTrackStyle:b,rootStyle:s,getThumbStyle:o}}function xF(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function _1e(e){const{min:t=0,max:n=100,onChange:r,value:i,defaultValue:o,isReversed:a,direction:s="ltr",orientation:l="horizontal",id:c,isDisabled:p,isReadOnly:g,onChangeStart:m,onChangeEnd:y,step:b=1,getAriaValueText:S,"aria-valuetext":T,"aria-label":E,"aria-labelledby":k,name:L,focusThumbOnChange:I=!0,minStepsBetweenThumbs:O=0,...D}=e,N=ur(m),z=ur(y),W=ur(S),V=xF({isReversed:a,direction:s,orientation:l}),[q,he]=k5({value:i,defaultValue:o??[25,75],onChange:r});if(!Array.isArray(q))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof q}\``);const[de,ve]=C.exports.useState(!1),[Ee,xe]=C.exports.useState(!1),[Z,U]=C.exports.useState(-1),ee=!(p||g),ae=C.exports.useRef(q),X=q.map(Be=>Yp(Be,t,n)),me=O*b,ye=k1e(X,t,n,me),Se=C.exports.useRef({eventSource:null,value:[],valueBounds:[]});Se.current.value=X,Se.current.valueBounds=ye;const He=X.map(Be=>n-Be+t),ut=(V?He:X).map(Be=>g4(Be,t,n)),qe=l==="vertical",ot=C.exports.useRef(null),tt=C.exports.useRef(null),at=vF({getNodes(){const Be=tt.current,ct=Be?.querySelectorAll("[role=slider]");return ct?Array.from(ct):[]}}),Rt=C.exports.useId(),Le=C1e(c??Rt),st=C.exports.useCallback(Be=>{var ct;if(!ot.current)return;Se.current.eventSource="pointer";const Qe=ot.current.getBoundingClientRect(),{clientX:Mt,clientY:Yt}=((ct=Be.touches)==null?void 0:ct[0])??Be,Zn=qe?Qe.bottom-Yt:Mt-Qe.left,ao=qe?Qe.height:Qe.width;let ui=Zn/ao;return V&&(ui=1-ui),wD(ui,t,n)},[qe,V,n,t]),Lt=(n-t)/10,it=b||(n-t)/100,mt=C.exports.useMemo(()=>({setValueAtIndex(Be,ct){if(!ee)return;const Qe=Se.current.valueBounds[Be];ct=parseFloat(R6(ct,Qe.min,it)),ct=Yp(ct,Qe.min,Qe.max);const Mt=[...Se.current.value];Mt[Be]=ct,he(Mt)},setActiveIndex:U,stepUp(Be,ct=it){const Qe=Se.current.value[Be],Mt=V?Qe-ct:Qe+ct;mt.setValueAtIndex(Be,Mt)},stepDown(Be,ct=it){const Qe=Se.current.value[Be],Mt=V?Qe+ct:Qe-ct;mt.setValueAtIndex(Be,Mt)},reset(){he(ae.current)}}),[it,V,he,ee]),Sn=C.exports.useCallback(Be=>{const ct=Be.key,Mt={ArrowRight:()=>mt.stepUp(Z),ArrowUp:()=>mt.stepUp(Z),ArrowLeft:()=>mt.stepDown(Z),ArrowDown:()=>mt.stepDown(Z),PageUp:()=>mt.stepUp(Z,Lt),PageDown:()=>mt.stepDown(Z,Lt),Home:()=>{const{min:Yt}=ye[Z];mt.setValueAtIndex(Z,Yt)},End:()=>{const{max:Yt}=ye[Z];mt.setValueAtIndex(Z,Yt)}}[ct];Mt&&(Be.preventDefault(),Be.stopPropagation(),Mt(Be),Se.current.eventSource="keyboard")},[mt,Z,Lt,ye]),{getThumbStyle:wt,rootStyle:Kt,trackStyle:wn,innerTrackStyle:pn}=C.exports.useMemo(()=>yF({isReversed:V,orientation:l,thumbRects:at,thumbPercents:ut}),[V,l,ut,at]),Re=C.exports.useCallback(Be=>{var ct;const Qe=Be??Z;if(Qe!==-1&&I){const Mt=Le.getThumb(Qe),Yt=(ct=tt.current)==null?void 0:ct.ownerDocument.getElementById(Mt);Yt&&setTimeout(()=>Yt.focus())}},[I,Z,Le]);qc(()=>{Se.current.eventSource==="keyboard"&&z?.(Se.current.value)},[X,z]);const Ze=Be=>{const ct=st(Be)||0,Qe=Se.current.value.map(ui=>Math.abs(ui-ct)),Mt=Math.min(...Qe);let Yt=Qe.indexOf(Mt);const Zn=Qe.filter(ui=>ui===Mt);Zn.length>1&&ct>Se.current.value[Yt]&&(Yt=Yt+Zn.length-1),U(Yt),mt.setValueAtIndex(Yt,ct),Re(Yt)},Zt=Be=>{if(Z==-1)return;const ct=st(Be)||0;U(Z),mt.setValueAtIndex(Z,ct),Re(Z)};mF(tt,{onPanSessionStart(Be){!ee||(ve(!0),Ze(Be),N?.(Se.current.value))},onPanSessionEnd(){!ee||(ve(!1),z?.(Se.current.value))},onPan(Be){!ee||Zt(Be)}});const Gt=C.exports.useCallback((Be={},ct=null)=>({...Be,...D,id:Le.root,ref:zn(ct,tt),tabIndex:-1,"aria-disabled":Jp(p),"data-focused":La(Ee),style:{...Be.style,...Kt}}),[D,p,Ee,Kt,Le]),_e=C.exports.useCallback((Be={},ct=null)=>({...Be,ref:zn(ct,ot),id:Le.track,"data-disabled":La(p),style:{...Be.style,...wn}}),[p,wn,Le]),Tt=C.exports.useCallback((Be={},ct=null)=>({...Be,ref:ct,id:Le.innerTrack,style:{...Be.style,...pn}}),[pn,Le]),De=C.exports.useCallback((Be,ct=null)=>{const{index:Qe,...Mt}=Be,Yt=X[Qe];if(Yt==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${Qe}\`. The \`value\` or \`defaultValue\` length is : ${X.length}`);const Zn=ye[Qe];return{...Mt,ref:ct,role:"slider",tabIndex:ee?0:void 0,id:Le.getThumb(Qe),"data-active":La(de&&Z===Qe),"aria-valuetext":W?.(Yt)??T?.[Qe],"aria-valuemin":Zn.min,"aria-valuemax":Zn.max,"aria-valuenow":Yt,"aria-orientation":l,"aria-disabled":Jp(p),"aria-readonly":Jp(g),"aria-label":E?.[Qe],"aria-labelledby":E?.[Qe]?void 0:k?.[Qe],style:{...Be.style,...wt(Qe)},onKeyDown:e0(Be.onKeyDown,Sn),onFocus:e0(Be.onFocus,()=>{xe(!0),U(Qe)}),onBlur:e0(Be.onBlur,()=>{xe(!1),U(-1)})}},[Le,X,ye,ee,de,Z,W,T,l,p,g,E,k,wt,Sn,xe]),nt=C.exports.useCallback((Be={},ct=null)=>({...Be,ref:ct,id:Le.output,htmlFor:X.map((Qe,Mt)=>Le.getThumb(Mt)).join(" "),"aria-live":"off"}),[Le,X]),rn=C.exports.useCallback((Be,ct=null)=>{const{value:Qe,...Mt}=Be,Yt=!(Qen),Zn=Qe>=X[0]&&Qe<=X[X.length-1];let ao=g4(Qe,t,n);ao=V?100-ao:ao;const ui={position:"absolute",pointerEvents:"none",...Tg({orientation:l,vertical:{bottom:`${ao}%`},horizontal:{left:`${ao}%`}})};return{...Mt,ref:ct,id:Le.getMarker(Be.value),role:"presentation","aria-hidden":!0,"data-disabled":La(p),"data-invalid":La(!Yt),"data-highlighted":La(Zn),style:{...Be.style,...ui}}},[p,V,n,t,l,X,Le]),Mn=C.exports.useCallback((Be,ct=null)=>{const{index:Qe,...Mt}=Be;return{...Mt,ref:ct,id:Le.getInput(Qe),type:"hidden",value:X[Qe],name:Array.isArray(L)?L[Qe]:`${L}-${Qe}`}},[L,X,Le]);return{state:{value:X,isFocused:Ee,isDragging:de,getThumbPercent:Be=>ut[Be],getThumbMinValue:Be=>ye[Be].min,getThumbMaxValue:Be=>ye[Be].max},actions:mt,getRootProps:Gt,getTrackProps:_e,getInnerTrackProps:Tt,getThumbProps:De,getMarkerProps:rn,getInputProps:Mn,getOutputProps:nt}}function k1e(e,t,n,r){return e.map((i,o)=>{const a=o===0?t:e[o-1]+r,s=o===e.length-1?n:e[o+1]-r;return{min:a,max:s}})}var[E1e,Z5]=xn({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[P1e,p7]=xn({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),bF=ke(function(t,n){const r=Ai("Slider",t),i=hn(t),{direction:o}=A0();i.direction=o;const{getRootProps:a,...s}=_1e(i),l=C.exports.useMemo(()=>({...s,name:t.name}),[s,t.name]);return re.createElement(E1e,{value:l},re.createElement(P1e,{value:r},re.createElement(be.div,{...a({},n),className:"chakra-slider",__css:r.container},t.children)))});bF.defaultProps={orientation:"horizontal"};bF.displayName="RangeSlider";var T1e=ke(function(t,n){const{getThumbProps:r,getInputProps:i,name:o}=Z5(),a=p7(),s=r(t,n);return re.createElement(be.div,{...s,className:sd("chakra-slider__thumb",t.className),__css:a.thumb},s.children,o&&w("input",{...i({index:t.index})}))});T1e.displayName="RangeSliderThumb";var L1e=ke(function(t,n){const{getTrackProps:r}=Z5(),i=p7(),o=r(t,n);return re.createElement(be.div,{...o,className:sd("chakra-slider__track",t.className),__css:i.track,"data-testid":"chakra-range-slider-track"})});L1e.displayName="RangeSliderTrack";var A1e=ke(function(t,n){const{getInnerTrackProps:r}=Z5(),i=p7(),o=r(t,n);return re.createElement(be.div,{...o,className:"chakra-slider__filled-track",__css:i.filledTrack})});A1e.displayName="RangeSliderFilledTrack";var I1e=ke(function(t,n){const{getMarkerProps:r}=Z5(),i=r(t,n);return re.createElement(be.div,{...i,className:sd("chakra-slider__marker",t.className)})});I1e.displayName="RangeSliderMark";ad();ad();function M1e(e){const{min:t=0,max:n=100,onChange:r,value:i,defaultValue:o,isReversed:a,direction:s="ltr",orientation:l="horizontal",id:c,isDisabled:p,isReadOnly:g,onChangeStart:m,onChangeEnd:y,step:b=1,getAriaValueText:S,"aria-valuetext":T,"aria-label":E,"aria-labelledby":k,name:L,focusThumbOnChange:I=!0,...O}=e,D=ur(m),N=ur(y),z=ur(S),W=xF({isReversed:a,direction:s,orientation:l}),[V,q]=k5({value:i,defaultValue:o??O1e(t,n),onChange:r}),[he,de]=C.exports.useState(!1),[ve,Ee]=C.exports.useState(!1),xe=!(p||g),Z=(n-t)/10,U=b||(n-t)/100,ee=Yp(V,t,n),ae=n-ee+t,me=g4(W?ae:ee,t,n),ye=l==="vertical",Se=gF({min:t,max:n,step:b,isDisabled:p,value:ee,isInteractive:xe,isReversed:W,isVertical:ye,eventSource:null,focusThumbOnChange:I,orientation:l}),He=C.exports.useRef(null),je=C.exports.useRef(null),ut=C.exports.useRef(null),qe=C.exports.useId(),ot=c??qe,[tt,at]=[`slider-thumb-${ot}`,`slider-track-${ot}`],Rt=C.exports.useCallback(De=>{var nt;if(!He.current)return;const rn=Se.current;rn.eventSource="pointer";const Mn=He.current.getBoundingClientRect(),{clientX:Be,clientY:ct}=((nt=De.touches)==null?void 0:nt[0])??De,Qe=ye?Mn.bottom-ct:Be-Mn.left,Mt=ye?Mn.height:Mn.width;let Yt=Qe/Mt;W&&(Yt=1-Yt);let Zn=wD(Yt,rn.min,rn.max);return rn.step&&(Zn=parseFloat(R6(Zn,rn.min,rn.step))),Zn=Yp(Zn,rn.min,rn.max),Zn},[ye,W,Se]),kt=C.exports.useCallback(De=>{const nt=Se.current;!nt.isInteractive||(De=parseFloat(R6(De,nt.min,U)),De=Yp(De,nt.min,nt.max),q(De))},[U,q,Se]),Le=C.exports.useMemo(()=>({stepUp(De=U){const nt=W?ee-De:ee+De;kt(nt)},stepDown(De=U){const nt=W?ee+De:ee-De;kt(nt)},reset(){kt(o||0)},stepTo(De){kt(De)}}),[kt,W,ee,U,o]),st=C.exports.useCallback(De=>{const nt=Se.current,Mn={ArrowRight:()=>Le.stepUp(),ArrowUp:()=>Le.stepUp(),ArrowLeft:()=>Le.stepDown(),ArrowDown:()=>Le.stepDown(),PageUp:()=>Le.stepUp(Z),PageDown:()=>Le.stepDown(Z),Home:()=>kt(nt.min),End:()=>kt(nt.max)}[De.key];Mn&&(De.preventDefault(),De.stopPropagation(),Mn(De),nt.eventSource="keyboard")},[Le,kt,Z,Se]),Lt=z?.(ee)??T,it=b1e(je),{getThumbStyle:mt,rootStyle:Sn,trackStyle:wt,innerTrackStyle:Kt}=C.exports.useMemo(()=>{const De=Se.current,nt=it??{width:0,height:0};return yF({isReversed:W,orientation:De.orientation,thumbRects:[nt],thumbPercents:[me]})},[W,it,me,Se]),wn=C.exports.useCallback(()=>{Se.current.focusThumbOnChange&&setTimeout(()=>{var nt;return(nt=je.current)==null?void 0:nt.focus()})},[Se]);qc(()=>{const De=Se.current;wn(),De.eventSource==="keyboard"&&N?.(De.value)},[ee,N]);function pn(De){const nt=Rt(De);nt!=null&&nt!==Se.current.value&&q(nt)}mF(ut,{onPanSessionStart(De){const nt=Se.current;!nt.isInteractive||(de(!0),wn(),pn(De),D?.(nt.value))},onPanSessionEnd(){const De=Se.current;!De.isInteractive||(de(!1),N?.(De.value))},onPan(De){!Se.current.isInteractive||pn(De)}});const Re=C.exports.useCallback((De={},nt=null)=>({...De,...O,ref:zn(nt,ut),tabIndex:-1,"aria-disabled":Jp(p),"data-focused":La(ve),style:{...De.style,...Sn}}),[O,p,ve,Sn]),Ze=C.exports.useCallback((De={},nt=null)=>({...De,ref:zn(nt,He),id:at,"data-disabled":La(p),style:{...De.style,...wt}}),[p,at,wt]),Zt=C.exports.useCallback((De={},nt=null)=>({...De,ref:nt,style:{...De.style,...Kt}}),[Kt]),Gt=C.exports.useCallback((De={},nt=null)=>({...De,ref:zn(nt,je),role:"slider",tabIndex:xe?0:void 0,id:tt,"data-active":La(he),"aria-valuetext":Lt,"aria-valuemin":t,"aria-valuemax":n,"aria-valuenow":ee,"aria-orientation":l,"aria-disabled":Jp(p),"aria-readonly":Jp(g),"aria-label":E,"aria-labelledby":E?void 0:k,style:{...De.style,...mt(0)},onKeyDown:e0(De.onKeyDown,st),onFocus:e0(De.onFocus,()=>Ee(!0)),onBlur:e0(De.onBlur,()=>Ee(!1))}),[xe,tt,he,Lt,t,n,ee,l,p,g,E,k,mt,st]),_e=C.exports.useCallback((De,nt=null)=>{const rn=!(De.valuen),Mn=ee>=De.value,Be=g4(De.value,t,n),ct={position:"absolute",pointerEvents:"none",...R1e({orientation:l,vertical:{bottom:W?`${100-Be}%`:`${Be}%`},horizontal:{left:W?`${100-Be}%`:`${Be}%`}})};return{...De,ref:nt,role:"presentation","aria-hidden":!0,"data-disabled":La(p),"data-invalid":La(!rn),"data-highlighted":La(Mn),style:{...De.style,...ct}}},[p,W,n,t,l,ee]),Tt=C.exports.useCallback((De={},nt=null)=>({...De,ref:nt,type:"hidden",value:ee,name:L}),[L,ee]);return{state:{value:ee,isFocused:ve,isDragging:he},actions:Le,getRootProps:Re,getTrackProps:Ze,getInnerTrackProps:Zt,getThumbProps:Gt,getMarkerProps:_e,getInputProps:Tt}}function R1e(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function O1e(e,t){return t"}),[D1e,X5]=xn({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),g7=ke((e,t)=>{const n=Ai("Slider",e),r=hn(e),{direction:i}=A0();r.direction=i;const{getInputProps:o,getRootProps:a,...s}=M1e(r),l=a(),c=o({},t);return re.createElement(N1e,{value:s},re.createElement(D1e,{value:n},re.createElement(be.div,{...l,className:sd("chakra-slider",e.className),__css:n.container},e.children,w("input",{...c}))))});g7.defaultProps={orientation:"horizontal"};g7.displayName="Slider";var SF=ke((e,t)=>{const{getThumbProps:n}=Y5(),r=X5(),i=n(e,t);return re.createElement(be.div,{...i,className:sd("chakra-slider__thumb",e.className),__css:r.thumb})});SF.displayName="SliderThumb";var wF=ke((e,t)=>{const{getTrackProps:n}=Y5(),r=X5(),i=n(e,t);return re.createElement(be.div,{...i,className:sd("chakra-slider__track",e.className),__css:r.track})});wF.displayName="SliderTrack";var CF=ke((e,t)=>{const{getInnerTrackProps:n}=Y5(),r=X5(),i=n(e,t);return re.createElement(be.div,{...i,className:sd("chakra-slider__filled-track",e.className),__css:r.filledTrack})});CF.displayName="SliderFilledTrack";var z1e=ke((e,t)=>{const{getMarkerProps:n}=Y5(),r=X5(),i=n(e,t);return re.createElement(be.div,{...i,className:sd("chakra-slider__marker",e.className),__css:r.mark})});z1e.displayName="SliderMark";var F1e=(...e)=>e.filter(Boolean).join(" "),cL=e=>e?"":void 0,m7=ke(function(t,n){const r=Ai("Switch",t),{spacing:i="0.5rem",children:o,...a}=hn(t),{state:s,getInputProps:l,getCheckboxProps:c,getRootProps:p,getLabelProps:g}=bD(a),m=C.exports.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),y=C.exports.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),b=C.exports.useMemo(()=>({userSelect:"none",marginStart:i,...r.label}),[i,r.label]);return re.createElement(be.label,{...p(),className:F1e("chakra-switch",t.className),__css:m},w("input",{className:"chakra-switch__input",...l({},n)}),re.createElement(be.span,{...c(),className:"chakra-switch__track",__css:y},re.createElement(be.span,{__css:r.thumb,className:"chakra-switch__thumb","data-checked":cL(s.isChecked),"data-hover":cL(s.isHovered)})),o&&re.createElement(be.span,{className:"chakra-switch__label",...g(),__css:b},o))});m7.displayName="Switch";var D0=(...e)=>e.filter(Boolean).join(" ");function G6(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[B1e,_F,$1e,H1e]=MO();function W1e(e){const{defaultIndex:t,onChange:n,index:r,isManual:i,isLazy:o,lazyBehavior:a="unmount",orientation:s="horizontal",direction:l="ltr",...c}=e,[p,g]=C.exports.useState(t??0),[m,y]=k5({defaultValue:t??0,value:r,onChange:n});C.exports.useEffect(()=>{r!=null&&g(r)},[r]);const b=$1e(),S=C.exports.useId();return{id:`tabs-${e.id??S}`,selectedIndex:m,focusedIndex:p,setSelectedIndex:y,setFocusedIndex:g,isManual:i,isLazy:o,lazyBehavior:a,orientation:s,descendants:b,direction:l,htmlProps:c}}var[V1e,Tv]=xn({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function U1e(e){const{focusedIndex:t,orientation:n,direction:r}=Tv(),i=_F(),o=C.exports.useCallback(a=>{const s=()=>{var k;const L=i.nextEnabled(t);L&&((k=L.node)==null||k.focus())},l=()=>{var k;const L=i.prevEnabled(t);L&&((k=L.node)==null||k.focus())},c=()=>{var k;const L=i.firstEnabled();L&&((k=L.node)==null||k.focus())},p=()=>{var k;const L=i.lastEnabled();L&&((k=L.node)==null||k.focus())},g=n==="horizontal",m=n==="vertical",y=a.key,b=r==="ltr"?"ArrowLeft":"ArrowRight",S=r==="ltr"?"ArrowRight":"ArrowLeft",E={[b]:()=>g&&l(),[S]:()=>g&&s(),ArrowDown:()=>m&&s(),ArrowUp:()=>m&&l(),Home:c,End:p}[y];E&&(a.preventDefault(),E(a))},[i,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:G6(e.onKeyDown,o)}}function G1e(e){const{isDisabled:t,isFocusable:n,...r}=e,{setSelectedIndex:i,isManual:o,id:a,setFocusedIndex:s,selectedIndex:l}=Tv(),{index:c,register:p}=H1e({disabled:t&&!n}),g=c===l,m=()=>{i(c)},y=()=>{s(c),!o&&!(t&&n)&&i(c)},b=Ode({...r,ref:zn(p,e.ref),isDisabled:t,isFocusable:n,onClick:G6(e.onClick,m)}),S="button";return{...b,id:kF(a,c),role:"tab",tabIndex:g?0:-1,type:S,"aria-selected":g,"aria-controls":EF(a,c),onFocus:t?void 0:G6(e.onFocus,y)}}var[j1e,q1e]=xn({});function K1e(e){const t=Tv(),{id:n,selectedIndex:r}=t,o=H5(e.children).map((a,s)=>C.exports.createElement(j1e,{key:s,value:{isSelected:s===r,id:EF(n,s),tabId:kF(n,s),selectedIndex:r}},a));return{...e,children:o}}function Z1e(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:i}=Tv(),{isSelected:o,id:a,tabId:s}=q1e(),l=C.exports.useRef(!1);o&&(l.current=!0);const c=lz({wasSelected:l.current,isSelected:o,enabled:r,mode:i});return{tabIndex:0,...n,children:c?t:null,role:"tabpanel","aria-labelledby":s,hidden:!o,id:a}}function Y1e(){const e=Tv(),t=_F(),{selectedIndex:n,orientation:r}=e,i=r==="horizontal",o=r==="vertical",[a,s]=C.exports.useState(()=>{if(i)return{left:0,width:0};if(o)return{top:0,height:0}}),[l,c]=C.exports.useState(!1);return pl(()=>{if(n==null)return;const p=t.item(n);if(p==null)return;i&&s({left:p.node.offsetLeft,width:p.node.offsetWidth}),o&&s({top:p.node.offsetTop,height:p.node.offsetHeight});const g=requestAnimationFrame(()=>{c(!0)});return()=>{g&&cancelAnimationFrame(g)}},[n,i,o,t]),{position:"absolute",transitionProperty:"left, right, top, bottom, height, width",transitionDuration:l?"200ms":"0ms",transitionTimingFunction:"cubic-bezier(0, 0, 0.2, 1)",...a}}function kF(e,t){return`${e}--tab-${t}`}function EF(e,t){return`${e}--tabpanel-${t}`}var[X1e,Lv]=xn({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),PF=ke(function(t,n){const r=Ai("Tabs",t),{children:i,className:o,...a}=hn(t),{htmlProps:s,descendants:l,...c}=W1e(a),p=C.exports.useMemo(()=>c,[c]),{isFitted:g,...m}=s;return re.createElement(B1e,{value:l},re.createElement(V1e,{value:p},re.createElement(X1e,{value:r},re.createElement(be.div,{className:D0("chakra-tabs",o),ref:n,...m,__css:r.root},i))))});PF.displayName="Tabs";var Q1e=ke(function(t,n){const r=Y1e(),i={...t.style,...r},o=Lv();return re.createElement(be.div,{ref:n,...t,className:D0("chakra-tabs__tab-indicator",t.className),style:i,__css:o.indicator})});Q1e.displayName="TabIndicator";var J1e=ke(function(t,n){const r=U1e({...t,ref:n}),o={display:"flex",...Lv().tablist};return re.createElement(be.div,{...r,className:D0("chakra-tabs__tablist",t.className),__css:o})});J1e.displayName="TabList";var TF=ke(function(t,n){const r=Z1e({...t,ref:n}),i=Lv();return re.createElement(be.div,{outline:"0",...r,className:D0("chakra-tabs__tab-panel",t.className),__css:i.tabpanel})});TF.displayName="TabPanel";var LF=ke(function(t,n){const r=K1e(t),i=Lv();return re.createElement(be.div,{...r,width:"100%",ref:n,className:D0("chakra-tabs__tab-panels",t.className),__css:i.tabpanels})});LF.displayName="TabPanels";var AF=ke(function(t,n){const r=Lv(),i=G1e({...t,ref:n}),o={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return re.createElement(be.button,{...i,className:D0("chakra-tabs__tab",t.className),__css:o})});AF.displayName="Tab";var ege=(...e)=>e.filter(Boolean).join(" ");function tge(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var nge=["h","minH","height","minHeight"],IF=ke((e,t)=>{const n=oo("Textarea",e),{className:r,rows:i,...o}=hn(e),a=AC(o),s=i?tge(n,nge):n;return re.createElement(be.textarea,{ref:t,rows:i,...a,className:ege("chakra-textarea",r),__css:s})});IF.displayName="Textarea";function rge(e,t){const n=ur(e);C.exports.useEffect(()=>{if(t==null)return;let r=null;return r=window.setTimeout(()=>{n()},t),()=>{r&&window.clearTimeout(r)}},[t,n])}function j6(e,...t){return ige(e)?e(...t):e}var ige=e=>typeof e=="function";function oge(e,t){const n=e??"bottom",i={"top-start":{ltr:"top-left",rtl:"top-right"},"top-end":{ltr:"top-right",rtl:"top-left"},"bottom-start":{ltr:"bottom-left",rtl:"bottom-right"},"bottom-end":{ltr:"bottom-right",rtl:"bottom-left"}}[n];return i?.[t]??n}var age=(e,t)=>e.find(n=>n.id===t);function dL(e,t){const n=MF(e,t),r=n?e[n].findIndex(i=>i.id===t):-1;return{position:n,index:r}}function MF(e,t){for(const[n,r]of Object.entries(e))if(age(r,t))return n}function sge(e){const t=e.includes("right"),n=e.includes("left");let r="center";return t&&(r="flex-end"),n&&(r="flex-start"),{display:"flex",flexDirection:"column",alignItems:r}}function lge(e){const n=e==="top"||e==="bottom"?"0 auto":void 0,r=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,i=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,o=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",a=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:5500,pointerEvents:"none",display:"flex",flexDirection:"column",margin:n,top:r,bottom:i,right:o,left:a}}var uge={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},cl=cge(uge);function cge(e){let t=e;const n=new Set,r=i=>{t=i(t),n.forEach(o=>o())};return{getState:()=>t,subscribe:i=>(n.add(i),()=>{r(()=>e),n.delete(i)}),removeToast:(i,o)=>{r(a=>({...a,[o]:a[o].filter(s=>s.id!=i)}))},notify:(i,o)=>{const a=dge(i,o),{position:s,id:l}=a;return r(c=>{const g=s.includes("top")?[a,...c[s]??[]]:[...c[s]??[],a];return{...c,[s]:g}}),l},update:(i,o)=>{!i||r(a=>{const s={...a},{position:l,index:c}=dL(s,i);return l&&c!==-1&&(s[l][c]={...s[l][c],...o,message:RF(o)}),s})},closeAll:({positions:i}={})=>{r(o=>(i??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,c)=>(l[c]=o[c].map(p=>({...p,requestClose:!0})),l),{...o}))},close:i=>{r(o=>{const a=MF(o,i);return a?{...o,[a]:o[a].map(s=>s.id==i?{...s,requestClose:!0}:s)}:o})},isActive:i=>Boolean(dL(cl.getState(),i).position)}}var fL=0;function dge(e,t={}){fL+=1;const n=t.id??fL,r=t.position??"bottom";return{id:n,message:e,position:r,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>cl.removeToast(String(n),r),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var fge=e=>{const{status:t,variant:n="solid",id:r,title:i,isClosable:o,onClose:a,description:s,icon:l}=e,c=r?{root:`toast-${r}`,title:`toast-${r}-title`,description:`toast-${r}-description`}:void 0;return re.createElement(hD,{addRole:!1,status:t,variant:n,id:c?.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto"},w(gD,{children:l}),re.createElement(be.div,{flex:"1",maxWidth:"100%"},i&&w(mD,{id:c?.title,children:i}),s&&w(pD,{id:c?.description,display:"block",children:s})),o&&w(U5,{size:"sm",onClick:a,position:"absolute",insetEnd:1,top:1}))};function RF(e={}){const{render:t,toastComponent:n=fge}=e;return i=>typeof t=="function"?t({...i,...e}):w(n,{...i,...e})}function hge(e,t){const n=i=>({...t,...i,position:oge(i?.position??t?.position,e)}),r=i=>{const o=n(i),a=RF(o);return cl.notify(a,o)};return r.update=(i,o)=>{cl.update(i,n(o))},r.promise=(i,o)=>{const a=r({...o.loading,status:"loading",duration:null});i.then(s=>r.update(a,{status:"success",duration:5e3,...j6(o.success,s)})).catch(s=>r.update(a,{status:"error",duration:5e3,...j6(o.error,s)}))},r.closeAll=cl.closeAll,r.close=cl.close,r.isActive=cl.isActive,r}function ld(e){const{theme:t}=LO();return C.exports.useMemo(()=>hge(t.direction,e),[e,t.direction])}var pge={initial:e=>{const{position:t}=e,n=["top","bottom"].includes(t)?"y":"x";let r=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(r=1),{opacity:0,[n]:r*24}},animate:{opacity:1,y:0,x:0,scale:1,transition:{duration:.4,ease:[.4,0,.2,1]}},exit:{opacity:0,scale:.85,transition:{duration:.2,ease:[.4,0,1,1]}}},OF=C.exports.memo(e=>{const{id:t,message:n,onCloseComplete:r,onRequestRemove:i,requestClose:o=!1,position:a="bottom",duration:s=5e3,containerStyle:l,motionVariants:c=pge,toastSpacing:p="0.5rem"}=e,[g,m]=C.exports.useState(s),y=ase();qc(()=>{y||r?.()},[y]),qc(()=>{m(s)},[s]);const b=()=>m(null),S=()=>m(s),T=()=>{y&&i()};C.exports.useEffect(()=>{y&&o&&i()},[y,o,i]),rge(T,g);const E=C.exports.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:p,...l}),[l,p]),k=C.exports.useMemo(()=>sge(a),[a]);return re.createElement(Ha.li,{layout:!0,className:"chakra-toast",variants:c,initial:"initial",animate:"animate",exit:"exit",onHoverStart:b,onHoverEnd:S,custom:{position:a},style:k},re.createElement(be.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:E},j6(n,{id:t,onClose:T})))});OF.displayName="ToastComponent";var gge=e=>{const t=C.exports.useSyncExternalStore(cl.subscribe,cl.getState,cl.getState),{children:n,motionVariants:r,component:i=OF,portalProps:o}=e,s=Object.keys(t).map(l=>{const c=t[l];return w("ul",{role:"region","aria-live":"polite",id:`chakra-toast-manager-${l}`,style:lge(l),children:w(wu,{initial:!1,children:c.map(p=>w(i,{motionVariants:r,...p},p.id))})},l)});return ne(Fn,{children:[n,w(Xf,{...o,children:s})]})};function mge(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function vge(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var yge={exit:{scale:.85,opacity:0,transition:{opacity:{duration:.15,easings:"easeInOut"},scale:{duration:.2,easings:"easeInOut"}}},enter:{scale:1,opacity:1,transition:{opacity:{easings:"easeOut",duration:.2},scale:{duration:.2,ease:[.175,.885,.4,1.1]}}}};function dg(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var S4=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},q6=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function xge(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:i,closeOnScroll:o,closeOnPointerDown:a=i,closeOnEsc:s=!0,onOpen:l,onClose:c,placement:p,id:g,isOpen:m,defaultIsOpen:y,arrowSize:b=10,arrowShadowColor:S,arrowPadding:T,modifiers:E,isDisabled:k,gutter:L,offset:I,direction:O,...D}=e,{isOpen:N,onOpen:z,onClose:W}=sz({isOpen:m,defaultIsOpen:y,onOpen:l,onClose:c}),{referenceRef:V,getPopperProps:q,getArrowInnerProps:he,getArrowProps:de}=az({enabled:N,placement:p,arrowPadding:T,modifiers:E,gutter:L,offset:I,direction:O}),ve=C.exports.useId(),xe=`tooltip-${g??ve}`,Z=C.exports.useRef(null),U=C.exports.useRef(),ee=C.exports.useRef(),ae=C.exports.useCallback(()=>{ee.current&&(clearTimeout(ee.current),ee.current=void 0),W()},[W]),X=bge(Z,ae),me=C.exports.useCallback(()=>{if(!k&&!U.current){X();const tt=q6(Z);U.current=tt.setTimeout(z,t)}},[X,k,z,t]),ye=C.exports.useCallback(()=>{U.current&&(clearTimeout(U.current),U.current=void 0);const tt=q6(Z);ee.current=tt.setTimeout(ae,n)},[n,ae]),Se=C.exports.useCallback(()=>{N&&r&&ye()},[r,ye,N]),He=C.exports.useCallback(()=>{N&&a&&ye()},[a,ye,N]),je=C.exports.useCallback(tt=>{N&&tt.key==="Escape"&&ye()},[N,ye]);Mf(()=>S4(Z),"keydown",s?je:void 0),Mf(()=>S4(Z),"scroll",()=>{N&&o&&ae()}),C.exports.useEffect(()=>()=>{clearTimeout(U.current),clearTimeout(ee.current)},[]),Mf(()=>Z.current,"pointerleave",ye);const ut=C.exports.useCallback((tt={},at=null)=>({...tt,ref:zn(Z,at,V),onPointerEnter:dg(tt.onPointerEnter,kt=>{kt.pointerType!=="touch"&&me()}),onClick:dg(tt.onClick,Se),onPointerDown:dg(tt.onPointerDown,He),onFocus:dg(tt.onFocus,me),onBlur:dg(tt.onBlur,ye),"aria-describedby":N?xe:void 0}),[me,ye,He,N,xe,Se,V]),qe=C.exports.useCallback((tt={},at=null)=>q({...tt,style:{...tt.style,[Hr.arrowSize.var]:b?`${b}px`:void 0,[Hr.arrowShadowColor.var]:S}},at),[q,b,S]),ot=C.exports.useCallback((tt={},at=null)=>{const Rt={...tt.style,position:"relative",transformOrigin:Hr.transformOrigin.varRef};return{ref:at,...D,...tt,id:xe,role:"tooltip",style:Rt}},[D,xe]);return{isOpen:N,show:me,hide:ye,getTriggerProps:ut,getTooltipProps:ot,getTooltipPositionerProps:qe,getArrowProps:de,getArrowInnerProps:he}}var fS="chakra-ui:close-tooltip";function bge(e,t){return C.exports.useEffect(()=>{const n=S4(e);return n.addEventListener(fS,t),()=>n.removeEventListener(fS,t)},[t,e]),()=>{const n=S4(e),r=q6(e);n.dispatchEvent(new r.CustomEvent(fS))}}var Sge=be(Ha.div),$i=ke((e,t)=>{const n=oo("Tooltip",e),r=hn(e),i=A0(),{children:o,label:a,shouldWrapChildren:s,"aria-label":l,hasArrow:c,bg:p,portalProps:g,background:m,backgroundColor:y,bgColor:b,motionProps:S,...T}=r,E=m??y??p??b;if(E){n.bg=E;const W=PY(i,"colors",E);n[Hr.arrowBg.var]=W}const k=xge({...T,direction:i.direction}),L=typeof o=="string"||s;let I;if(L)I=re.createElement(be.span,{display:"inline-block",tabIndex:0,...k.getTriggerProps()},o);else{const W=C.exports.Children.only(o);I=C.exports.cloneElement(W,k.getTriggerProps(W.props,W.ref))}const O=!!l,D=k.getTooltipProps({},t),N=O?mge(D,["role","id"]):D,z=vge(D,["role","id"]);return a?ne(Fn,{children:[I,w(wu,{children:k.isOpen&&re.createElement(Xf,{...g},re.createElement(be.div,{...k.getTooltipPositionerProps(),__css:{zIndex:n.zIndex,pointerEvents:"none"}},ne(Sge,{variants:yge,initial:"exit",animate:"enter",exit:"exit",...S,...N,__css:n,children:[a,O&&re.createElement(be.span,{srOnly:!0,...z},l),c&&re.createElement(be.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper"},re.createElement(be.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:n.bg}}))]})))})]}):w(Fn,{children:o})});$i.displayName="Tooltip";var wge=e=>{const{children:t,colorModeManager:n,portalZIndex:r,resetCSS:i=!0,theme:o={},environment:a,cssVarsRoot:s}=e,l=w(VD,{environment:a,children:t});return w(xie,{theme:o,cssVarsRoot:s,children:ne(IR,{colorModeManager:n,options:o.config,children:[i?w(zce,{}):w(Dce,{}),w(Sie,{}),r?w(uz,{zIndex:r,children:l}):l]})})};function Cge({children:e,theme:t=PO,toastOptions:n,...r}){return ne(wge,{theme:t,...r,children:[e,w(gge,{...n})]})}function ps(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:v7(e)?2:y7(e)?3:0}function t0(e,t){return z0(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function _ge(e,t){return z0(e)===2?e.get(t):e[t]}function NF(e,t,n){var r=z0(e);r===2?e.set(t,n):r===3?(e.delete(t),e.add(n)):e[t]=n}function DF(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function v7(e){return Age&&e instanceof Map}function y7(e){return Ige&&e instanceof Set}function lf(e){return e.o||e.t}function x7(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=FF(e);delete t[er];for(var n=n0(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=kge),Object.freeze(e),t&&Uf(e,function(n,r){return b7(r,!0)},!0)),e}function kge(){ps(2)}function S7(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function xl(e){var t=X6[e];return t||ps(18,e),t}function Ege(e,t){X6[e]||(X6[e]=t)}function K6(){return Qm}function hS(e,t){t&&(xl("Patches"),e.u=[],e.s=[],e.v=t)}function w4(e){Z6(e),e.p.forEach(Pge),e.p=null}function Z6(e){e===Qm&&(Qm=e.l)}function hL(e){return Qm={p:[],l:Qm,h:e,m:!0,_:0}}function Pge(e){var t=e[er];t.i===0||t.i===1?t.j():t.O=!0}function pS(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.g||xl("ES5").S(t,e,r),r?(n[er].P&&(w4(t),ps(4)),vu(e)&&(e=C4(t,e),t.l||_4(t,e)),t.u&&xl("Patches").M(n[er].t,e,t.u,t.s)):e=C4(t,n,[]),w4(t),t.u&&t.v(t.u,t.s),e!==zF?e:void 0}function C4(e,t,n){if(S7(t))return t;var r=t[er];if(!r)return Uf(t,function(o,a){return pL(e,r,t,o,a,n)},!0),t;if(r.A!==e)return t;if(!r.P)return _4(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=x7(r.k):r.o;Uf(r.i===3?new Set(i):i,function(o,a){return pL(e,r,i,o,a,n)}),_4(e,i,!1),n&&e.u&&xl("Patches").R(r,n,e.u,e.s)}return r.o}function pL(e,t,n,r,i,o){if(Yc(i)){var a=C4(e,i,o&&t&&t.i!==3&&!t0(t.D,r)?o.concat(r):void 0);if(NF(n,r,a),!Yc(a))return;e.m=!1}if(vu(i)&&!S7(i)){if(!e.h.F&&e._<1)return;C4(e,i),t&&t.A.l||_4(e,i)}}function _4(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&b7(t,n)}function gS(e,t){var n=e[er];return(n?lf(n):e)[t]}function gL(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function Pc(e){e.P||(e.P=!0,e.l&&Pc(e.l))}function mS(e){e.o||(e.o=x7(e.t))}function Y6(e,t,n){var r=v7(t)?xl("MapSet").N(t,n):y7(t)?xl("MapSet").T(t,n):e.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:K6(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=s,c=Jm;a&&(l=[s],c=Lg);var p=Proxy.revocable(l,c),g=p.revoke,m=p.proxy;return s.k=m,s.j=g,m}(t,n):xl("ES5").J(t,n);return(n?n.A:K6()).p.push(r),r}function Tge(e){return Yc(e)||ps(22,e),function t(n){if(!vu(n))return n;var r,i=n[er],o=z0(n);if(i){if(!i.P&&(i.i<4||!xl("ES5").K(i)))return i.t;i.I=!0,r=mL(n,o),i.I=!1}else r=mL(n,o);return Uf(r,function(a,s){i&&_ge(i.t,a)===s||NF(r,a,t(s))}),o===3?new Set(r):r}(e)}function mL(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return x7(e)}function Lge(){function e(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var l=this[er];return Jm.get(l,o)},set:function(l){var c=this[er];Jm.set(c,o,l)}},s}function t(o){for(var a=o.length-1;a>=0;a--){var s=o[a][er];if(!s.P)switch(s.i){case 5:r(s)&&Pc(s);break;case 4:n(s)&&Pc(s)}}}function n(o){for(var a=o.t,s=o.k,l=n0(s),c=l.length-1;c>=0;c--){var p=l[c];if(p!==er){var g=a[p];if(g===void 0&&!t0(a,p))return!0;var m=s[p],y=m&&m[er];if(y?y.t!==g:!DF(m,g))return!0}}var b=!!a[er];return l.length!==n0(a).length+(b?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var l=0;l1?E-1:0),L=1;L1?p-1:0),m=1;m=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=xl("Patches").$;return Yc(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},e}(),sa=new Rge,BF=sa.produce;sa.produceWithPatches.bind(sa);sa.setAutoFreeze.bind(sa);sa.setUseProxies.bind(sa);sa.applyPatches.bind(sa);sa.createDraft.bind(sa);sa.finishDraft.bind(sa);function bL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function SL(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(zi(1));return n(C7)(e,t)}if(typeof e!="function")throw new Error(zi(2));var i=e,o=t,a=[],s=a,l=!1;function c(){s===a&&(s=a.slice())}function p(){if(l)throw new Error(zi(3));return o}function g(S){if(typeof S!="function")throw new Error(zi(4));if(l)throw new Error(zi(5));var T=!0;return c(),s.push(S),function(){if(!!T){if(l)throw new Error(zi(6));T=!1,c();var k=s.indexOf(S);s.splice(k,1),a=null}}}function m(S){if(!Oge(S))throw new Error(zi(7));if(typeof S.type>"u")throw new Error(zi(8));if(l)throw new Error(zi(9));try{l=!0,o=i(o,S)}finally{l=!1}for(var T=a=s,E=0;E"u")throw new Error(zi(12));if(typeof n(void 0,{type:k4.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(zi(13))})}function $F(e){for(var t=Object.keys(e),n={},r=0;r"u")throw c&&c.type,new Error(zi(14));g[y]=T,p=p||T!==S}return p=p||o.length!==Object.keys(l).length,p?g:l}}function E4(){for(var e=arguments.length,t=new Array(e),n=0;n-1){var c=n[l];return l>0&&(n.splice(l,1),n.unshift(c)),c.value}return P4}function i(s,l){r(s)===P4&&(n.unshift({key:s,value:l}),n.length>e&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var Bge=function(t,n){return t===n};function $ge(e){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o1?t-1:0),r=1;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?fme:dme;GF.useSyncExternalStore=w0.useSyncExternalStore!==void 0?w0.useSyncExternalStore:hme;(function(e){e.exports=GF})(UF);var jF={exports:{}},qF={};/** - * @license React - * use-sync-external-store-shim/with-selector.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var J5=C.exports,pme=UF.exports;function gme(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mme=typeof Object.is=="function"?Object.is:gme,vme=pme.useSyncExternalStore,yme=J5.useRef,xme=J5.useEffect,bme=J5.useMemo,Sme=J5.useDebugValue;qF.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=yme(null);if(o.current===null){var a={hasValue:!1,value:null};o.current=a}else a=o.current;o=bme(function(){function l(y){if(!c){if(c=!0,p=y,y=r(y),i!==void 0&&a.hasValue){var b=a.value;if(i(b,y))return g=b}return g=y}if(b=g,mme(p,y))return b;var S=r(y);return i!==void 0&&i(b,S)?b:(p=y,g=S)}var c=!1,p,g,m=n===void 0?null:n;return[function(){return l(t())},m===null?void 0:function(){return l(m())}]},[t,n,r,i]);var s=vme(e,o[0],o[1]);return xme(function(){a.hasValue=!0,a.value=s},[s]),Sme(s),s};(function(e){e.exports=qF})(jF);function wme(e){e()}let KF=wme;const Cme=e=>KF=e,_me=()=>KF,Xc=C.exports.createContext(null);function ZF(){return C.exports.useContext(Xc)}const kme=()=>{throw new Error("uSES not initialized!")};let YF=kme;const Eme=e=>{YF=e},Pme=(e,t)=>e===t;function Tme(e=Xc){const t=e===Xc?ZF:()=>C.exports.useContext(e);return function(r,i=Pme){const{store:o,subscription:a,getServerState:s}=t(),l=YF(a.addNestedSub,o.getState,s||o.getState,r,i);return C.exports.useDebugValue(l),l}}const Lme=Tme();var Ame={exports:{}},Ln={};/** - * @license React - * react-is.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var k7=Symbol.for("react.element"),E7=Symbol.for("react.portal"),ex=Symbol.for("react.fragment"),tx=Symbol.for("react.strict_mode"),nx=Symbol.for("react.profiler"),rx=Symbol.for("react.provider"),ix=Symbol.for("react.context"),Ime=Symbol.for("react.server_context"),ox=Symbol.for("react.forward_ref"),ax=Symbol.for("react.suspense"),sx=Symbol.for("react.suspense_list"),lx=Symbol.for("react.memo"),ux=Symbol.for("react.lazy"),Mme=Symbol.for("react.offscreen"),XF;XF=Symbol.for("react.module.reference");function Va(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case k7:switch(e=e.type,e){case ex:case nx:case tx:case ax:case sx:return e;default:switch(e=e&&e.$$typeof,e){case Ime:case ix:case ox:case ux:case lx:case rx:return e;default:return t}}case E7:return t}}}Ln.ContextConsumer=ix;Ln.ContextProvider=rx;Ln.Element=k7;Ln.ForwardRef=ox;Ln.Fragment=ex;Ln.Lazy=ux;Ln.Memo=lx;Ln.Portal=E7;Ln.Profiler=nx;Ln.StrictMode=tx;Ln.Suspense=ax;Ln.SuspenseList=sx;Ln.isAsyncMode=function(){return!1};Ln.isConcurrentMode=function(){return!1};Ln.isContextConsumer=function(e){return Va(e)===ix};Ln.isContextProvider=function(e){return Va(e)===rx};Ln.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===k7};Ln.isForwardRef=function(e){return Va(e)===ox};Ln.isFragment=function(e){return Va(e)===ex};Ln.isLazy=function(e){return Va(e)===ux};Ln.isMemo=function(e){return Va(e)===lx};Ln.isPortal=function(e){return Va(e)===E7};Ln.isProfiler=function(e){return Va(e)===nx};Ln.isStrictMode=function(e){return Va(e)===tx};Ln.isSuspense=function(e){return Va(e)===ax};Ln.isSuspenseList=function(e){return Va(e)===sx};Ln.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===ex||e===nx||e===tx||e===ax||e===sx||e===Mme||typeof e=="object"&&e!==null&&(e.$$typeof===ux||e.$$typeof===lx||e.$$typeof===rx||e.$$typeof===ix||e.$$typeof===ox||e.$$typeof===XF||e.getModuleId!==void 0)};Ln.typeOf=Va;(function(e){e.exports=Ln})(Ame);function Rme(){const e=_me();let t=null,n=null;return{clear(){t=null,n=null},notify(){e(()=>{let r=t;for(;r;)r.callback(),r=r.next})},get(){let r=[],i=t;for(;i;)r.push(i),i=i.next;return r},subscribe(r){let i=!0,o=n={callback:r,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){!i||t===null||(i=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}const EL={notify(){},get:()=>[]};function Ome(e,t){let n,r=EL;function i(g){return l(),r.subscribe(g)}function o(){r.notify()}function a(){p.onStateChange&&p.onStateChange()}function s(){return Boolean(n)}function l(){n||(n=t?t.addNestedSub(a):e.subscribe(a),r=Rme())}function c(){n&&(n(),n=void 0,r.clear(),r=EL)}const p={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:a,isSubscribed:s,trySubscribe:l,tryUnsubscribe:c,getListeners:()=>r};return p}const Nme=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Dme=Nme?C.exports.useLayoutEffect:C.exports.useEffect;function zme({store:e,context:t,children:n,serverState:r}){const i=C.exports.useMemo(()=>{const s=Ome(e);return{store:e,subscription:s,getServerState:r?()=>r:void 0}},[e,r]),o=C.exports.useMemo(()=>e.getState(),[e]);return Dme(()=>{const{subscription:s}=i;return s.onStateChange=s.notifyNestedSubs,s.trySubscribe(),o!==e.getState()&&s.notifyNestedSubs(),()=>{s.tryUnsubscribe(),s.onStateChange=void 0}},[i,o]),w((t||Xc).Provider,{value:i,children:n})}function QF(e=Xc){const t=e===Xc?ZF:()=>C.exports.useContext(e);return function(){const{store:r}=t();return r}}const Fme=QF();function Bme(e=Xc){const t=e===Xc?Fme:QF(e);return function(){return t().dispatch}}const $me=Bme();Eme(jF.exports.useSyncExternalStoreWithSelector);Cme(El.exports.unstable_batchedUpdates);var P7="persist:",JF="persist/FLUSH",T7="persist/REHYDRATE",eB="persist/PAUSE",tB="persist/PERSIST",nB="persist/PURGE",rB="persist/REGISTER",Hme=-1;function l3(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?l3=function(n){return typeof n}:l3=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},l3(e)}function PL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function Wme(e){for(var t=1;t=0)&&(!Object.prototype.propertyIsEnumerable.call(e,r)||(n[r]=e[r]))}return n}function Jme(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var eve=5e3;function u3(e,t){var n=e.version!==void 0?e.version:Hme;e.debug;var r=e.stateReconciler===void 0?Ume:e.stateReconciler,i=e.getStoredState||qme,o=e.timeout!==void 0?e.timeout:eve,a=null,s=!1,l=!0,c=function(g){return g._persist.rehydrated&&a&&!l&&a.update(g),g};return function(p,g){var m=p||{},y=m._persist,b=Qme(m,["_persist"]),S=b;if(g.type===tB){var T=!1,E=function(z,W){T||(g.rehydrate(e.key,z,W),T=!0)};if(o&&setTimeout(function(){!T&&E(void 0,new Error('redux-persist: persist timed out for persist key "'.concat(e.key,'"')))},o),l=!1,a||(a=Gme(e)),y)return Xl({},t(S,g),{_persist:y});if(typeof g.rehydrate!="function"||typeof g.register!="function")throw new Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return g.register(e.key),i(e).then(function(N){var z=e.migrate||function(W,V){return Promise.resolve(W)};z(N,n).then(function(W){E(W)},function(W){E(void 0,W)})},function(N){E(void 0,N)}),Xl({},t(S,g),{_persist:{version:n,rehydrated:!1}})}else{if(g.type===nB)return s=!0,g.result(Zme(e)),Xl({},t(S,g),{_persist:y});if(g.type===JF)return g.result(a&&a.flush()),Xl({},t(S,g),{_persist:y});if(g.type===eB)l=!0;else if(g.type===T7){if(s)return Xl({},S,{_persist:Xl({},y,{rehydrated:!0})});if(g.key===e.key){var k=t(S,g),L=g.payload,I=r!==!1&&L!==void 0?r(L,p,k,e):k,O=Xl({},I,{_persist:Xl({},y,{rehydrated:!0})});return c(O)}}}if(!y)return t(p,g);var D=t(S,g);return D===S?p:c(Xl({},D,{_persist:y}))}}function lm(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?lm=function(n){return typeof n}:lm=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},lm(e)}function LL(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function AL(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:iB,n=arguments.length>1?arguments[1]:void 0;switch(n.type){case rB:return J6({},t,{registry:[].concat(IL(t.registry),[n.key])});case T7:var r=t.registry.indexOf(n.key),i=IL(t.registry);return i.splice(r,1),J6({},t,{registry:i,bootstrapped:i.length===0});default:return t}};function lve(e,t,n){var r=n||!1,i=C7(sve,iB,t&&t.enhancer?t.enhancer:void 0),o=function(c){i.dispatch({type:rB,key:c})},a=function(c,p,g){var m={type:T7,payload:p,err:g,key:c};e.dispatch(m),i.dispatch(m),r&&s.getState().bootstrapped&&(r(),r=!1)},s=J6({},i,{purge:function(){var c=[];return e.dispatch({type:nB,result:function(g){c.push(g)}}),Promise.all(c)},flush:function(){var c=[];return e.dispatch({type:JF,result:function(g){c.push(g)}}),Promise.all(c)},pause:function(){e.dispatch({type:eB})},persist:function(){e.dispatch({type:tB,register:o,rehydrate:a})}});return t&&t.manualPersist||s.persist(),s}var L7={},A7={};A7.__esModule=!0;A7.default=dve;function c3(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?c3=function(n){return typeof n}:c3=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},c3(e)}function xS(){}var uve={getItem:xS,setItem:xS,removeItem:xS};function cve(e){if((typeof self>"u"?"undefined":c3(self))!=="object"||!(e in self))return!1;try{var t=self[e],n="redux-persist ".concat(e," test");t.setItem(n,"test"),t.getItem(n),t.removeItem(n)}catch{return!1}return!0}function dve(e){var t="".concat(e,"Storage");return cve(t)?self[t]:uve}L7.__esModule=!0;L7.default=pve;var fve=hve(A7);function hve(e){return e&&e.__esModule?e:{default:e}}function pve(e){var t=(0,fve.default)(e);return{getItem:function(r){return new Promise(function(i,o){i(t.getItem(r))})},setItem:function(r,i){return new Promise(function(o,a){o(t.setItem(r,i))})},removeItem:function(r){return new Promise(function(i,o){i(t.removeItem(r))})}}}var Av=void 0,gve=mve(L7);function mve(e){return e&&e.__esModule?e:{default:e}}var vve=(0,gve.default)("local");Av=vve;const d3=e=>e.length===1?e[0].prompt:e.map(t=>`${t.prompt}:${t.weight}`).join(" "),yve=e=>{const r=e.split(",").map(i=>i.split(":")).map(i=>({seed:Number(i[0]),weight:Number(i[1])}));return I7(r)?r:!1},I7=e=>Boolean(typeof e=="string"?yve(e):e.length&&!e.some(t=>{const{seed:n,weight:r}=t,i=!isNaN(parseInt(n.toString(),10)),o=!isNaN(parseInt(r.toString(),10))&&r>=0&&r<=1;return!(i&&o)})),L4=e=>e.reduce((t,n,r,i)=>{const{seed:o,weight:a}=n;return t+=`${o}:${a}`,r!==i.length-1&&(t+=","),t},""),xve=e=>e.split(",").map(r=>r.split(":")).map(r=>[parseInt(r[0]),parseFloat(r[1])]);var la={exports:{}};/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(e,t){(function(){var n,r="4.17.21",i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",s="Invalid `variable` option passed into `_.template`",l="__lodash_hash_undefined__",c=500,p="__lodash_placeholder__",g=1,m=2,y=4,b=1,S=2,T=1,E=2,k=4,L=8,I=16,O=32,D=64,N=128,z=256,W=512,V=30,q="...",he=800,de=16,ve=1,Ee=2,xe=3,Z=1/0,U=9007199254740991,ee=17976931348623157e292,ae=0/0,X=4294967295,me=X-1,ye=X>>>1,Se=[["ary",N],["bind",T],["bindKey",E],["curry",L],["curryRight",I],["flip",W],["partial",O],["partialRight",D],["rearg",z]],He="[object Arguments]",je="[object Array]",ut="[object AsyncFunction]",qe="[object Boolean]",ot="[object Date]",tt="[object DOMException]",at="[object Error]",Rt="[object Function]",kt="[object GeneratorFunction]",Le="[object Map]",st="[object Number]",Lt="[object Null]",it="[object Object]",mt="[object Promise]",Sn="[object Proxy]",wt="[object RegExp]",Kt="[object Set]",wn="[object String]",pn="[object Symbol]",Re="[object Undefined]",Ze="[object WeakMap]",Zt="[object WeakSet]",Gt="[object ArrayBuffer]",_e="[object DataView]",Tt="[object Float32Array]",De="[object Float64Array]",nt="[object Int8Array]",rn="[object Int16Array]",Mn="[object Int32Array]",Be="[object Uint8Array]",ct="[object Uint8ClampedArray]",Qe="[object Uint16Array]",Mt="[object Uint32Array]",Yt=/\b__p \+= '';/g,Zn=/\b(__p \+=) '' \+/g,ao=/(__e\(.*?\)|\b__t\)) \+\n'';/g,ui=/&(?:amp|lt|gt|quot|#39);/g,_s=/[&<>"']/g,G0=RegExp(ui.source),pa=RegExp(_s.source),lh=/<%-([\s\S]+?)%>/g,j0=/<%([\s\S]+?)%>/g,Tu=/<%=([\s\S]+?)%>/g,uh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ch=/^\w*$/,Io=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,pd=/[\\^$.*+?()[\]{}|]/g,q0=RegExp(pd.source),Lu=/^\s+/,gd=/\s/,K0=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ks=/\{\n\/\* \[wrapped with (.+)\] \*/,Au=/,? & /,Z0=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Y0=/[()=,{}\[\]\/\s]/,X0=/\\(\\)?/g,Q0=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ua=/\w*$/,J0=/^[-+]0x[0-9a-f]+$/i,e1=/^0b[01]+$/i,t1=/^\[object .+?Constructor\]$/,n1=/^0o[0-7]+$/i,r1=/^(?:0|[1-9]\d*)$/,i1=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Es=/($^)/,o1=/['\n\r\u2028\u2029\\]/g,Ga="\\ud800-\\udfff",Ll="\\u0300-\\u036f",Al="\\ufe20-\\ufe2f",Ps="\\u20d0-\\u20ff",Il=Ll+Al+Ps,dh="\\u2700-\\u27bf",Iu="a-z\\xdf-\\xf6\\xf8-\\xff",Ts="\\xac\\xb1\\xd7\\xf7",Mo="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Cn="\\u2000-\\u206f",gn=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Ro="A-Z\\xc0-\\xd6\\xd8-\\xde",_r="\\ufe0e\\ufe0f",Ur=Ts+Mo+Cn+gn,Oo="['\u2019]",Ls="["+Ga+"]",Gr="["+Ur+"]",ja="["+Il+"]",md="\\d+",Ml="["+dh+"]",qa="["+Iu+"]",vd="[^"+Ga+Ur+md+dh+Iu+Ro+"]",ci="\\ud83c[\\udffb-\\udfff]",fh="(?:"+ja+"|"+ci+")",hh="[^"+Ga+"]",yd="(?:\\ud83c[\\udde6-\\uddff]){2}",As="[\\ud800-\\udbff][\\udc00-\\udfff]",so="["+Ro+"]",Is="\\u200d",Rl="(?:"+qa+"|"+vd+")",a1="(?:"+so+"|"+vd+")",Mu="(?:"+Oo+"(?:d|ll|m|re|s|t|ve))?",Ru="(?:"+Oo+"(?:D|LL|M|RE|S|T|VE))?",xd=fh+"?",Ou="["+_r+"]?",ga="(?:"+Is+"(?:"+[hh,yd,As].join("|")+")"+Ou+xd+")*",bd="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ol="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Bt=Ou+xd+ga,ph="(?:"+[Ml,yd,As].join("|")+")"+Bt,Nu="(?:"+[hh+ja+"?",ja,yd,As,Ls].join("|")+")",Du=RegExp(Oo,"g"),gh=RegExp(ja,"g"),No=RegExp(ci+"(?="+ci+")|"+Nu+Bt,"g"),$n=RegExp([so+"?"+qa+"+"+Mu+"(?="+[Gr,so,"$"].join("|")+")",a1+"+"+Ru+"(?="+[Gr,so+Rl,"$"].join("|")+")",so+"?"+Rl+"+"+Mu,so+"+"+Ru,Ol,bd,md,ph].join("|"),"g"),Sd=RegExp("["+Is+Ga+Il+_r+"]"),mh=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,wd=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],vh=-1,on={};on[Tt]=on[De]=on[nt]=on[rn]=on[Mn]=on[Be]=on[ct]=on[Qe]=on[Mt]=!0,on[He]=on[je]=on[Gt]=on[qe]=on[_e]=on[ot]=on[at]=on[Rt]=on[Le]=on[st]=on[it]=on[wt]=on[Kt]=on[wn]=on[Ze]=!1;var $t={};$t[He]=$t[je]=$t[Gt]=$t[_e]=$t[qe]=$t[ot]=$t[Tt]=$t[De]=$t[nt]=$t[rn]=$t[Mn]=$t[Le]=$t[st]=$t[it]=$t[wt]=$t[Kt]=$t[wn]=$t[pn]=$t[Be]=$t[ct]=$t[Qe]=$t[Mt]=!0,$t[at]=$t[Rt]=$t[Ze]=!1;var yh={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},s1={"&":"&","<":"<",">":">",'"':""","'":"'"},H={"&":"&","<":"<",">":">",""":'"',"'":"'"},Y={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ue=parseFloat,Ge=parseInt,Nt=typeof tu=="object"&&tu&&tu.Object===Object&&tu,ln=typeof self=="object"&&self&&self.Object===Object&&self,dt=Nt||ln||Function("return this")(),Ct=t&&!t.nodeType&&t,Ht=Ct&&!0&&e&&!e.nodeType&&e,Nr=Ht&&Ht.exports===Ct,pr=Nr&&Nt.process,un=function(){try{var Q=Ht&&Ht.require&&Ht.require("util").types;return Q||pr&&pr.binding&&pr.binding("util")}catch{}}(),jr=un&&un.isArrayBuffer,lo=un&&un.isDate,Wi=un&&un.isMap,ma=un&&un.isRegExp,Ms=un&&un.isSet,l1=un&&un.isTypedArray;function di(Q,ge,fe){switch(fe.length){case 0:return Q.call(ge);case 1:return Q.call(ge,fe[0]);case 2:return Q.call(ge,fe[0],fe[1]);case 3:return Q.call(ge,fe[0],fe[1],fe[2])}return Q.apply(ge,fe)}function u1(Q,ge,fe,Ve){for(var xt=-1,Xt=Q==null?0:Q.length;++xt-1}function xh(Q,ge,fe){for(var Ve=-1,xt=Q==null?0:Q.length;++Ve-1;);return fe}function Ka(Q,ge){for(var fe=Q.length;fe--&&Bu(ge,Q[fe],0)>-1;);return fe}function d1(Q,ge){for(var fe=Q.length,Ve=0;fe--;)Q[fe]===ge&&++Ve;return Ve}var $v=Ed(yh),Za=Ed(s1);function Os(Q){return"\\"+Y[Q]}function Sh(Q,ge){return Q==null?n:Q[ge]}function Dl(Q){return Sd.test(Q)}function wh(Q){return mh.test(Q)}function Hv(Q){for(var ge,fe=[];!(ge=Q.next()).done;)fe.push(ge.value);return fe}function Ch(Q){var ge=-1,fe=Array(Q.size);return Q.forEach(function(Ve,xt){fe[++ge]=[xt,Ve]}),fe}function _h(Q,ge){return function(fe){return Q(ge(fe))}}function Fo(Q,ge){for(var fe=-1,Ve=Q.length,xt=0,Xt=[];++fe-1}function a2(u,h){var x=this.__data__,A=Er(x,u);return A<0?(++this.size,x.push([u,h])):x[A][1]=h,this}Bo.prototype.clear=i2,Bo.prototype.delete=o2,Bo.prototype.get=E1,Bo.prototype.has=P1,Bo.prototype.set=a2;function $o(u){var h=-1,x=u==null?0:u.length;for(this.clear();++h=h?u:h)),u}function ti(u,h,x,A,R,B){var G,K=h&g,oe=h&m,we=h&y;if(x&&(G=R?x(u,A,R,B):x(u)),G!==n)return G;if(!ar(u))return u;var Ce=It(u);if(Ce){if(G=lW(u),!K)return vi(u,G)}else{var Te=ii(u),We=Te==Rt||Te==kt;if(hc(u))return Gs(u,K);if(Te==it||Te==He||We&&!R){if(G=oe||We?{}:S_(u),!K)return oe?G1(u,rc(G,u)):mo(u,Ke(G,u))}else{if(!$t[Te])return R?u:{};G=uW(u,Te,K)}}B||(B=new mr);var lt=B.get(u);if(lt)return lt;B.set(u,G),Y_(u)?u.forEach(function(gt){G.add(ti(gt,h,x,gt,u,B))}):K_(u)&&u.forEach(function(gt,Vt){G.set(Vt,ti(gt,h,x,Vt,u,B))});var pt=we?oe?ce:Go:oe?yo:oi,Ft=Ce?n:pt(u);return Hn(Ft||u,function(gt,Vt){Ft&&(Vt=gt,gt=u[Vt]),zs(G,Vt,ti(gt,h,x,Vt,u,B))}),G}function Mh(u){var h=oi(u);return function(x){return Rh(x,u,h)}}function Rh(u,h,x){var A=x.length;if(u==null)return!A;for(u=an(u);A--;){var R=x[A],B=h[R],G=u[R];if(G===n&&!(R in u)||!B(G))return!1}return!0}function I1(u,h,x){if(typeof u!="function")throw new fi(a);return Y1(function(){u.apply(n,x)},h)}function ic(u,h,x,A){var R=-1,B=Ii,G=!0,K=u.length,oe=[],we=h.length;if(!K)return oe;x&&(h=On(h,kr(x))),A?(B=xh,G=!1):h.length>=i&&(B=Hu,G=!1,h=new ba(h));e:for(;++RR?0:R+x),A=A===n||A>R?R:Ot(A),A<0&&(A+=R),A=x>A?0:Q_(A);x0&&x(K)?h>1?Pr(K,h-1,x,A,R):va(R,K):A||(R[R.length]=K)}return R}var Nh=js(),ho=js(!0);function Uo(u,h){return u&&Nh(u,h,oi)}function po(u,h){return u&&ho(u,h,oi)}function Dh(u,h){return co(h,function(x){return Gl(u[x])})}function Fs(u,h){h=Us(h,u);for(var x=0,A=h.length;u!=null&&xh}function Fh(u,h){return u!=null&&Jt.call(u,h)}function Bh(u,h){return u!=null&&h in an(u)}function $h(u,h,x){return u>=Kr(h,x)&&u=120&&Ce.length>=120)?new ba(G&&Ce):n}Ce=u[0];var Te=-1,We=K[0];e:for(;++Te-1;)K!==u&&Od.call(K,oe,1),Od.call(u,oe,1);return u}function Vd(u,h){for(var x=u?h.length:0,A=x-1;x--;){var R=h[x];if(x==A||R!==B){var B=R;Ul(R)?Od.call(u,R,1):Yh(u,R)}}return u}function Ud(u,h){return u+Fl(b1()*(h-u+1))}function Ws(u,h,x,A){for(var R=-1,B=gr(zd((h-u)/(x||1)),0),G=fe(B);B--;)G[A?B:++R]=u,u+=x;return G}function cc(u,h){var x="";if(!u||h<1||h>U)return x;do h%2&&(x+=u),h=Fl(h/2),h&&(u+=u);while(h);return x}function yt(u,h){return Wx(__(u,h,xo),u+"")}function Gh(u){return nc(rp(u))}function Gd(u,h){var x=rp(u);return p2(x,$l(h,0,x.length))}function Wl(u,h,x,A){if(!ar(u))return u;h=Us(h,u);for(var R=-1,B=h.length,G=B-1,K=u;K!=null&&++RR?0:R+h),x=x>R?R:x,x<0&&(x+=R),R=h>x?0:x-h>>>0,h>>>=0;for(var B=fe(R);++A>>1,G=u[B];G!==null&&!jo(G)&&(x?G<=h:G=i){var we=h?null:$(u);if(we)return Ad(we);G=!1,R=Hu,oe=new ba}else oe=h?[]:K;e:for(;++A=A?u:Lr(u,h,x)}var H1=jv||function(u){return dt.clearTimeout(u)};function Gs(u,h){if(h)return u.slice();var x=u.length,A=ju?ju(x):new u.constructor(x);return u.copy(A),A}function W1(u){var h=new u.constructor(u.byteLength);return new hi(h).set(new hi(u)),h}function Vl(u,h){var x=h?W1(u.buffer):u.buffer;return new u.constructor(x,u.byteOffset,u.byteLength)}function c2(u){var h=new u.constructor(u.source,Ua.exec(u));return h.lastIndex=u.lastIndex,h}function Wn(u){return Bd?an(Bd.call(u)):{}}function d2(u,h){var x=h?W1(u.buffer):u.buffer;return new u.constructor(x,u.byteOffset,u.length)}function V1(u,h){if(u!==h){var x=u!==n,A=u===null,R=u===u,B=jo(u),G=h!==n,K=h===null,oe=h===h,we=jo(h);if(!K&&!we&&!B&&u>h||B&&G&&oe&&!K&&!we||A&&G&&oe||!x&&oe||!R)return 1;if(!A&&!B&&!we&&u=K)return oe;var we=x[A];return oe*(we=="desc"?-1:1)}}return u.index-h.index}function f2(u,h,x,A){for(var R=-1,B=u.length,G=x.length,K=-1,oe=h.length,we=gr(B-G,0),Ce=fe(oe+we),Te=!A;++K1?x[R-1]:n,G=R>2?x[2]:n;for(B=u.length>3&&typeof B=="function"?(R--,B):n,G&&Ki(x[0],x[1],G)&&(B=R<3?n:B,R=1),h=an(h);++A-1?R[B?h[G]:G]:n}}function q1(u){return Xn(function(h){var x=h.length,A=x,R=Ui.prototype.thru;for(u&&h.reverse();A--;){var B=h[A];if(typeof B!="function")throw new fi(a);if(R&&!G&&pe(B)=="wrapper")var G=new Ui([],!0)}for(A=G?A:x;++A1&&Qt.reverse(),Ce&&oeK))return!1;var we=B.get(u),Ce=B.get(h);if(we&&Ce)return we==h&&Ce==u;var Te=-1,We=!0,lt=x&S?new ba:n;for(B.set(u,h),B.set(h,u);++Te1?"& ":"")+h[A],h=h.join(x>2?", ":" "),u.replace(K0,`{ -/* [wrapped with `+h+`] */ -`)}function dW(u){return It(u)||Jd(u)||!!(y1&&u&&u[y1])}function Ul(u,h){var x=typeof u;return h=h??U,!!h&&(x=="number"||x!="symbol"&&r1.test(u))&&u>-1&&u%1==0&&u0){if(++h>=he)return arguments[0]}else h=0;return u.apply(n,arguments)}}function p2(u,h){var x=-1,A=u.length,R=A-1;for(h=h===n?A:h;++x1?u[h-1]:n;return x=typeof x=="function"?(u.pop(),x):n,D_(u,x)});function z_(u){var h=F(u);return h.__chain__=!0,h}function wV(u,h){return h(u),u}function g2(u,h){return h(u)}var CV=Xn(function(u){var h=u.length,x=h?u[0]:0,A=this.__wrapped__,R=function(B){return Ih(B,u)};return h>1||this.__actions__.length||!(A instanceof Wt)||!Ul(x)?this.thru(R):(A=A.slice(x,+x+(h?1:0)),A.__actions__.push({func:g2,args:[R],thisArg:n}),new Ui(A,this.__chain__).thru(function(B){return h&&!B.length&&B.push(n),B}))});function _V(){return z_(this)}function kV(){return new Ui(this.value(),this.__chain__)}function EV(){this.__values__===n&&(this.__values__=X_(this.value()));var u=this.__index__>=this.__values__.length,h=u?n:this.__values__[this.__index__++];return{done:u,value:h}}function PV(){return this}function TV(u){for(var h,x=this;x instanceof $d;){var A=A_(x);A.__index__=0,A.__values__=n,h?R.__wrapped__=A:h=A;var R=A;x=x.__wrapped__}return R.__wrapped__=u,h}function LV(){var u=this.__wrapped__;if(u instanceof Wt){var h=u;return this.__actions__.length&&(h=new Wt(this)),h=h.reverse(),h.__actions__.push({func:g2,args:[Vx],thisArg:n}),new Ui(h,this.__chain__)}return this.thru(Vx)}function AV(){return Vs(this.__wrapped__,this.__actions__)}var IV=Qh(function(u,h,x){Jt.call(u,x)?++u[x]:Ho(u,x,1)});function MV(u,h,x){var A=It(u)?Rn:M1;return x&&Ki(u,h,x)&&(h=n),A(u,Pe(h,3))}function RV(u,h){var x=It(u)?co:Vo;return x(u,Pe(h,3))}var OV=j1(I_),NV=j1(M_);function DV(u,h){return Pr(m2(u,h),1)}function zV(u,h){return Pr(m2(u,h),Z)}function FV(u,h,x){return x=x===n?1:Ot(x),Pr(m2(u,h),x)}function F_(u,h){var x=It(u)?Hn:Qa;return x(u,Pe(h,3))}function B_(u,h){var x=It(u)?uo:Oh;return x(u,Pe(h,3))}var BV=Qh(function(u,h,x){Jt.call(u,x)?u[x].push(h):Ho(u,x,[h])});function $V(u,h,x,A){u=vo(u)?u:rp(u),x=x&&!A?Ot(x):0;var R=u.length;return x<0&&(x=gr(R+x,0)),S2(u)?x<=R&&u.indexOf(h,x)>-1:!!R&&Bu(u,h,x)>-1}var HV=yt(function(u,h,x){var A=-1,R=typeof h=="function",B=vo(u)?fe(u.length):[];return Qa(u,function(G){B[++A]=R?di(h,G,x):Ja(G,h,x)}),B}),WV=Qh(function(u,h,x){Ho(u,x,h)});function m2(u,h){var x=It(u)?On:yr;return x(u,Pe(h,3))}function VV(u,h,x,A){return u==null?[]:(It(h)||(h=h==null?[]:[h]),x=A?n:x,It(x)||(x=x==null?[]:[x]),gi(u,h,x))}var UV=Qh(function(u,h,x){u[x?0:1].push(h)},function(){return[[],[]]});function GV(u,h,x){var A=It(u)?Cd:bh,R=arguments.length<3;return A(u,Pe(h,4),x,R,Qa)}function jV(u,h,x){var A=It(u)?Dv:bh,R=arguments.length<3;return A(u,Pe(h,4),x,R,Oh)}function qV(u,h){var x=It(u)?co:Vo;return x(u,x2(Pe(h,3)))}function KV(u){var h=It(u)?nc:Gh;return h(u)}function ZV(u,h,x){(x?Ki(u,h,x):h===n)?h=1:h=Ot(h);var A=It(u)?ei:Gd;return A(u,h)}function YV(u){var h=It(u)?Ox:ri;return h(u)}function XV(u){if(u==null)return 0;if(vo(u))return S2(u)?ya(u):u.length;var h=ii(u);return h==Le||h==Kt?u.size:Tr(u).length}function QV(u,h,x){var A=It(u)?zu:go;return x&&Ki(u,h,x)&&(h=n),A(u,Pe(h,3))}var JV=yt(function(u,h){if(u==null)return[];var x=h.length;return x>1&&Ki(u,h[0],h[1])?h=[]:x>2&&Ki(h[0],h[1],h[2])&&(h=[h[0]]),gi(u,Pr(h,1),[])}),v2=qv||function(){return dt.Date.now()};function eU(u,h){if(typeof h!="function")throw new fi(a);return u=Ot(u),function(){if(--u<1)return h.apply(this,arguments)}}function $_(u,h,x){return h=x?n:h,h=u&&h==null?u.length:h,le(u,N,n,n,n,n,h)}function H_(u,h){var x;if(typeof h!="function")throw new fi(a);return u=Ot(u),function(){return--u>0&&(x=h.apply(this,arguments)),u<=1&&(h=n),x}}var Gx=yt(function(u,h,x){var A=T;if(x.length){var R=Fo(x,$e(Gx));A|=O}return le(u,A,h,x,R)}),W_=yt(function(u,h,x){var A=T|E;if(x.length){var R=Fo(x,$e(W_));A|=O}return le(h,A,u,x,R)});function V_(u,h,x){h=x?n:h;var A=le(u,L,n,n,n,n,n,h);return A.placeholder=V_.placeholder,A}function U_(u,h,x){h=x?n:h;var A=le(u,I,n,n,n,n,n,h);return A.placeholder=U_.placeholder,A}function G_(u,h,x){var A,R,B,G,K,oe,we=0,Ce=!1,Te=!1,We=!0;if(typeof u!="function")throw new fi(a);h=Ca(h)||0,ar(x)&&(Ce=!!x.leading,Te="maxWait"in x,B=Te?gr(Ca(x.maxWait)||0,h):B,We="trailing"in x?!!x.trailing:We);function lt(Ir){var is=A,ql=R;return A=R=n,we=Ir,G=u.apply(ql,is),G}function pt(Ir){return we=Ir,K=Y1(Vt,h),Ce?lt(Ir):G}function Ft(Ir){var is=Ir-oe,ql=Ir-we,ck=h-is;return Te?Kr(ck,B-ql):ck}function gt(Ir){var is=Ir-oe,ql=Ir-we;return oe===n||is>=h||is<0||Te&&ql>=B}function Vt(){var Ir=v2();if(gt(Ir))return Qt(Ir);K=Y1(Vt,Ft(Ir))}function Qt(Ir){return K=n,We&&A?lt(Ir):(A=R=n,G)}function qo(){K!==n&&H1(K),we=0,A=oe=R=K=n}function Zi(){return K===n?G:Qt(v2())}function Ko(){var Ir=v2(),is=gt(Ir);if(A=arguments,R=this,oe=Ir,is){if(K===n)return pt(oe);if(Te)return H1(K),K=Y1(Vt,h),lt(oe)}return K===n&&(K=Y1(Vt,h)),G}return Ko.cancel=qo,Ko.flush=Zi,Ko}var tU=yt(function(u,h){return I1(u,1,h)}),nU=yt(function(u,h,x){return I1(u,Ca(h)||0,x)});function rU(u){return le(u,W)}function y2(u,h){if(typeof u!="function"||h!=null&&typeof h!="function")throw new fi(a);var x=function(){var A=arguments,R=h?h.apply(this,A):A[0],B=x.cache;if(B.has(R))return B.get(R);var G=u.apply(this,A);return x.cache=B.set(R,G)||B,G};return x.cache=new(y2.Cache||$o),x}y2.Cache=$o;function x2(u){if(typeof u!="function")throw new fi(a);return function(){var h=arguments;switch(h.length){case 0:return!u.call(this);case 1:return!u.call(this,h[0]);case 2:return!u.call(this,h[0],h[1]);case 3:return!u.call(this,h[0],h[1],h[2])}return!u.apply(this,h)}}function iU(u){return H_(2,u)}var oU=zx(function(u,h){h=h.length==1&&It(h[0])?On(h[0],kr(Pe())):On(Pr(h,1),kr(Pe()));var x=h.length;return yt(function(A){for(var R=-1,B=Kr(A.length,x);++R=h}),Jd=Wh(function(){return arguments}())?Wh:function(u){return xr(u)&&Jt.call(u,"callee")&&!v1.call(u,"callee")},It=fe.isArray,bU=jr?kr(jr):O1;function vo(u){return u!=null&&b2(u.length)&&!Gl(u)}function Ar(u){return xr(u)&&vo(u)}function SU(u){return u===!0||u===!1||xr(u)&&ni(u)==qe}var hc=Kv||rb,wU=lo?kr(lo):N1;function CU(u){return xr(u)&&u.nodeType===1&&!X1(u)}function _U(u){if(u==null)return!0;if(vo(u)&&(It(u)||typeof u=="string"||typeof u.splice=="function"||hc(u)||np(u)||Jd(u)))return!u.length;var h=ii(u);if(h==Le||h==Kt)return!u.size;if(Z1(u))return!Tr(u).length;for(var x in u)if(Jt.call(u,x))return!1;return!0}function kU(u,h){return ac(u,h)}function EU(u,h,x){x=typeof x=="function"?x:n;var A=x?x(u,h):n;return A===n?ac(u,h,n,x):!!A}function qx(u){if(!xr(u))return!1;var h=ni(u);return h==at||h==tt||typeof u.message=="string"&&typeof u.name=="string"&&!X1(u)}function PU(u){return typeof u=="number"&&Ph(u)}function Gl(u){if(!ar(u))return!1;var h=ni(u);return h==Rt||h==kt||h==ut||h==Sn}function q_(u){return typeof u=="number"&&u==Ot(u)}function b2(u){return typeof u=="number"&&u>-1&&u%1==0&&u<=U}function ar(u){var h=typeof u;return u!=null&&(h=="object"||h=="function")}function xr(u){return u!=null&&typeof u=="object"}var K_=Wi?kr(Wi):Dx;function TU(u,h){return u===h||sc(u,h,bt(h))}function LU(u,h,x){return x=typeof x=="function"?x:n,sc(u,h,bt(h),x)}function AU(u){return Z_(u)&&u!=+u}function IU(u){if(pW(u))throw new xt(o);return Vh(u)}function MU(u){return u===null}function RU(u){return u==null}function Z_(u){return typeof u=="number"||xr(u)&&ni(u)==st}function X1(u){if(!xr(u)||ni(u)!=it)return!1;var h=qu(u);if(h===null)return!0;var x=Jt.call(h,"constructor")&&h.constructor;return typeof x=="function"&&x instanceof x&&rr.call(x)==Jr}var Kx=ma?kr(ma):ir;function OU(u){return q_(u)&&u>=-U&&u<=U}var Y_=Ms?kr(Ms):Dt;function S2(u){return typeof u=="string"||!It(u)&&xr(u)&&ni(u)==wn}function jo(u){return typeof u=="symbol"||xr(u)&&ni(u)==pn}var np=l1?kr(l1):Dr;function NU(u){return u===n}function DU(u){return xr(u)&&ii(u)==Ze}function zU(u){return xr(u)&&ni(u)==Zt}var FU=_(Bs),BU=_(function(u,h){return u<=h});function X_(u){if(!u)return[];if(vo(u))return S2(u)?Mi(u):vi(u);if(Ku&&u[Ku])return Hv(u[Ku]());var h=ii(u),x=h==Le?Ch:h==Kt?Ad:rp;return x(u)}function jl(u){if(!u)return u===0?u:0;if(u=Ca(u),u===Z||u===-Z){var h=u<0?-1:1;return h*ee}return u===u?u:0}function Ot(u){var h=jl(u),x=h%1;return h===h?x?h-x:h:0}function Q_(u){return u?$l(Ot(u),0,X):0}function Ca(u){if(typeof u=="number")return u;if(jo(u))return ae;if(ar(u)){var h=typeof u.valueOf=="function"?u.valueOf():u;u=ar(h)?h+"":h}if(typeof u!="string")return u===0?u:+u;u=Vi(u);var x=e1.test(u);return x||n1.test(u)?Ge(u.slice(2),x?2:8):J0.test(u)?ae:+u}function J_(u){return Sa(u,yo(u))}function $U(u){return u?$l(Ot(u),-U,U):u===0?u:0}function vn(u){return u==null?"":ji(u)}var HU=qi(function(u,h){if(Z1(h)||vo(h)){Sa(h,oi(h),u);return}for(var x in h)Jt.call(h,x)&&zs(u,x,h[x])}),ek=qi(function(u,h){Sa(h,yo(h),u)}),w2=qi(function(u,h,x,A){Sa(h,yo(h),u,A)}),WU=qi(function(u,h,x,A){Sa(h,oi(h),u,A)}),VU=Xn(Ih);function UU(u,h){var x=Bl(u);return h==null?x:Ke(x,h)}var GU=yt(function(u,h){u=an(u);var x=-1,A=h.length,R=A>2?h[2]:n;for(R&&Ki(h[0],h[1],R)&&(A=1);++x1),B}),Sa(u,ce(u),x),A&&(x=ti(x,g|m|y,Et));for(var R=h.length;R--;)Yh(x,h[R]);return x});function uG(u,h){return nk(u,x2(Pe(h)))}var cG=Xn(function(u,h){return u==null?{}:F1(u,h)});function nk(u,h){if(u==null)return{};var x=On(ce(u),function(A){return[A]});return h=Pe(h),Uh(u,x,function(A,R){return h(A,R[0])})}function dG(u,h,x){h=Us(h,u);var A=-1,R=h.length;for(R||(R=1,u=n);++Ah){var A=u;u=h,h=A}if(x||u%1||h%1){var R=b1();return Kr(u+R*(h-u+ue("1e-"+((R+"").length-1))),h)}return Ud(u,h)}var wG=qs(function(u,h,x){return h=h.toLowerCase(),u+(x?ok(h):h)});function ok(u){return Xx(vn(u).toLowerCase())}function ak(u){return u=vn(u),u&&u.replace(i1,$v).replace(gh,"")}function CG(u,h,x){u=vn(u),h=ji(h);var A=u.length;x=x===n?A:$l(Ot(x),0,A);var R=x;return x-=h.length,x>=0&&u.slice(x,R)==h}function _G(u){return u=vn(u),u&&pa.test(u)?u.replace(_s,Za):u}function kG(u){return u=vn(u),u&&q0.test(u)?u.replace(pd,"\\$&"):u}var EG=qs(function(u,h,x){return u+(x?"-":"")+h.toLowerCase()}),PG=qs(function(u,h,x){return u+(x?" ":"")+h.toLowerCase()}),TG=ep("toLowerCase");function LG(u,h,x){u=vn(u),h=Ot(h);var A=h?ya(u):0;if(!h||A>=h)return u;var R=(h-A)/2;return d(Fl(R),x)+u+d(zd(R),x)}function AG(u,h,x){u=vn(u),h=Ot(h);var A=h?ya(u):0;return h&&A>>0,x?(u=vn(u),u&&(typeof h=="string"||h!=null&&!Kx(h))&&(h=ji(h),!h&&Dl(u))?ts(Mi(u),0,x):u.split(h,x)):[]}var zG=qs(function(u,h,x){return u+(x?" ":"")+Xx(h)});function FG(u,h,x){return u=vn(u),x=x==null?0:$l(Ot(x),0,u.length),h=ji(h),u.slice(x,x+h.length)==h}function BG(u,h,x){var A=F.templateSettings;x&&Ki(u,h,x)&&(h=n),u=vn(u),h=w2({},h,A,Ne);var R=w2({},h.imports,A.imports,Ne),B=oi(R),G=Ld(R,B),K,oe,we=0,Ce=h.interpolate||Es,Te="__p += '",We=Md((h.escape||Es).source+"|"+Ce.source+"|"+(Ce===Tu?Q0:Es).source+"|"+(h.evaluate||Es).source+"|$","g"),lt="//# sourceURL="+(Jt.call(h,"sourceURL")?(h.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++vh+"]")+` -`;u.replace(We,function(gt,Vt,Qt,qo,Zi,Ko){return Qt||(Qt=qo),Te+=u.slice(we,Ko).replace(o1,Os),Vt&&(K=!0,Te+=`' + -__e(`+Vt+`) + -'`),Zi&&(oe=!0,Te+=`'; -`+Zi+`; -__p += '`),Qt&&(Te+=`' + -((__t = (`+Qt+`)) == null ? '' : __t) + -'`),we=Ko+gt.length,gt}),Te+=`'; -`;var pt=Jt.call(h,"variable")&&h.variable;if(!pt)Te=`with (obj) { -`+Te+` -} -`;else if(Y0.test(pt))throw new xt(s);Te=(oe?Te.replace(Yt,""):Te).replace(Zn,"$1").replace(ao,"$1;"),Te="function("+(pt||"obj")+`) { -`+(pt?"":`obj || (obj = {}); -`)+"var __t, __p = ''"+(K?", __e = _.escape":"")+(oe?`, __j = Array.prototype.join; -function print() { __p += __j.call(arguments, '') } -`:`; -`)+Te+`return __p -}`;var Ft=lk(function(){return Xt(B,lt+"return "+Te).apply(n,G)});if(Ft.source=Te,qx(Ft))throw Ft;return Ft}function $G(u){return vn(u).toLowerCase()}function HG(u){return vn(u).toUpperCase()}function WG(u,h,x){if(u=vn(u),u&&(x||h===n))return Vi(u);if(!u||!(h=ji(h)))return u;var A=Mi(u),R=Mi(h),B=zo(A,R),G=Ka(A,R)+1;return ts(A,B,G).join("")}function VG(u,h,x){if(u=vn(u),u&&(x||h===n))return u.slice(0,h1(u)+1);if(!u||!(h=ji(h)))return u;var A=Mi(u),R=Ka(A,Mi(h))+1;return ts(A,0,R).join("")}function UG(u,h,x){if(u=vn(u),u&&(x||h===n))return u.replace(Lu,"");if(!u||!(h=ji(h)))return u;var A=Mi(u),R=zo(A,Mi(h));return ts(A,R).join("")}function GG(u,h){var x=V,A=q;if(ar(h)){var R="separator"in h?h.separator:R;x="length"in h?Ot(h.length):x,A="omission"in h?ji(h.omission):A}u=vn(u);var B=u.length;if(Dl(u)){var G=Mi(u);B=G.length}if(x>=B)return u;var K=x-ya(A);if(K<1)return A;var oe=G?ts(G,0,K).join(""):u.slice(0,K);if(R===n)return oe+A;if(G&&(K+=oe.length-K),Kx(R)){if(u.slice(K).search(R)){var we,Ce=oe;for(R.global||(R=Md(R.source,vn(Ua.exec(R))+"g")),R.lastIndex=0;we=R.exec(Ce);)var Te=we.index;oe=oe.slice(0,Te===n?K:Te)}}else if(u.indexOf(ji(R),K)!=K){var We=oe.lastIndexOf(R);We>-1&&(oe=oe.slice(0,We))}return oe+A}function jG(u){return u=vn(u),u&&G0.test(u)?u.replace(ui,Uv):u}var qG=qs(function(u,h,x){return u+(x?" ":"")+h.toUpperCase()}),Xx=ep("toUpperCase");function sk(u,h,x){return u=vn(u),h=x?n:h,h===n?wh(u)?Id(u):c1(u):u.match(h)||[]}var lk=yt(function(u,h){try{return di(u,n,h)}catch(x){return qx(x)?x:new xt(x)}}),KG=Xn(function(u,h){return Hn(h,function(x){x=Ks(x),Ho(u,x,Gx(u[x],u))}),u});function ZG(u){var h=u==null?0:u.length,x=Pe();return u=h?On(u,function(A){if(typeof A[1]!="function")throw new fi(a);return[x(A[0]),A[1]]}):[],yt(function(A){for(var R=-1;++RU)return[];var x=X,A=Kr(u,X);h=Pe(h),u-=X;for(var R=Td(A,h);++x0||h<0)?new Wt(x):(u<0?x=x.takeRight(-u):u&&(x=x.drop(u)),h!==n&&(h=Ot(h),x=h<0?x.dropRight(-h):x.take(h-u)),x)},Wt.prototype.takeRightWhile=function(u){return this.reverse().takeWhile(u).reverse()},Wt.prototype.toArray=function(){return this.take(X)},Uo(Wt.prototype,function(u,h){var x=/^(?:filter|find|map|reject)|While$/.test(h),A=/^(?:head|last)$/.test(h),R=F[A?"take"+(h=="last"?"Right":""):h],B=A||/^find/.test(h);!R||(F.prototype[h]=function(){var G=this.__wrapped__,K=A?[1]:arguments,oe=G instanceof Wt,we=K[0],Ce=oe||It(G),Te=function(Vt){var Qt=R.apply(F,va([Vt],K));return A&&We?Qt[0]:Qt};Ce&&x&&typeof we=="function"&&we.length!=1&&(oe=Ce=!1);var We=this.__chain__,lt=!!this.__actions__.length,pt=B&&!We,Ft=oe&&!lt;if(!B&&Ce){G=Ft?G:new Wt(this);var gt=u.apply(G,K);return gt.__actions__.push({func:g2,args:[Te],thisArg:n}),new Ui(gt,We)}return pt&&Ft?u.apply(this,K):(gt=this.thru(Te),pt?A?gt.value()[0]:gt.value():gt)})}),Hn(["pop","push","shift","sort","splice","unshift"],function(u){var h=Vu[u],x=/^(?:push|sort|unshift)$/.test(u)?"tap":"thru",A=/^(?:pop|shift)$/.test(u);F.prototype[u]=function(){var R=arguments;if(A&&!this.__chain__){var B=this.value();return h.apply(It(B)?B:[],R)}return this[x](function(G){return h.apply(It(G)?G:[],R)})}}),Uo(Wt.prototype,function(u,h){var x=F[h];if(x){var A=x.name+"";Jt.call(Ya,A)||(Ya[A]=[]),Ya[A].push({name:h,func:x})}}),Ya[Yd(n,E).name]=[{name:"wrapper",func:n}],Wt.prototype.clone=Ri,Wt.prototype.reverse=pi,Wt.prototype.value=Jv,F.prototype.at=CV,F.prototype.chain=_V,F.prototype.commit=kV,F.prototype.next=EV,F.prototype.plant=TV,F.prototype.reverse=LV,F.prototype.toJSON=F.prototype.valueOf=F.prototype.value=AV,F.prototype.first=F.prototype.head,Ku&&(F.prototype[Ku]=PV),F},xa=fo();Ht?((Ht.exports=xa)._=xa,Ct._=xa):dt._=xa}).call(tu)})(la,la.exports);const ht=la.exports;var bS=typeof navigator<"u"?navigator.userAgent.toLowerCase().indexOf("firefox")>0:!1;function SS(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r):e.attachEvent&&e.attachEvent("on".concat(t),function(){n(window.event)})}function oB(e,t){for(var n=t.slice(0,t.length-1),r=0;r=0;)t[n-1]+=",",t.splice(n,1),n=t.lastIndexOf("");return t}function bve(e,t){for(var n=e.length>=t.length?e:t,r=e.length>=t.length?t:e,i=!0,o=0;o=0&&Jn.splice(n,1),e.key&&e.key.toLowerCase()==="meta"&&Jn.splice(0,Jn.length),(t===93||t===224)&&(t=91),t in _i){_i[t]=!1;for(var r in Qc)Qc[r]===t&&(ea[r]=!1)}}function Eve(e){if(typeof e>"u")Object.keys(Br).forEach(function(a){return delete Br[a]});else if(Array.isArray(e))e.forEach(function(a){a.key&&wS(a)});else if(typeof e=="object")e.key&&wS(e);else if(typeof e=="string"){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?oB(Qc,c):[];Br[m]=Br[m].filter(function(b){var S=i?b.method===i:!0;return!(S&&b.scope===r&&bve(b.mods,y))})}})};function OL(e,t,n,r){if(t.element===r){var i;if(t.scope===n||t.scope==="all"){i=t.mods.length>0;for(var o in _i)Object.prototype.hasOwnProperty.call(_i,o)&&(!_i[o]&&t.mods.indexOf(+o)>-1||_i[o]&&t.mods.indexOf(+o)===-1)&&(i=!1);(t.mods.length===0&&!_i[16]&&!_i[18]&&!_i[17]&&!_i[91]||i||t.shortcut==="*")&&t.method(e,t)===!1&&(e.preventDefault?e.preventDefault():e.returnValue=!1,e.stopPropagation&&e.stopPropagation(),e.cancelBubble&&(e.cancelBubble=!0))}}}function NL(e,t){var n=Br["*"],r=e.keyCode||e.which||e.charCode;if(!!ea.filter.call(this,e)){if((r===93||r===224)&&(r=91),Jn.indexOf(r)===-1&&r!==229&&Jn.push(r),["ctrlKey","altKey","shiftKey","metaKey"].forEach(function(b){var S=e8[b];e[b]&&Jn.indexOf(S)===-1?Jn.push(S):!e[b]&&Jn.indexOf(S)>-1?Jn.splice(Jn.indexOf(S),1):b==="metaKey"&&e[b]&&Jn.length===3&&(e.ctrlKey||e.shiftKey||e.altKey||(Jn=Jn.slice(Jn.indexOf(S))))}),r in _i){_i[r]=!0;for(var i in Qc)Qc[i]===r&&(ea[i]=!0);if(!n)return}for(var o in _i)Object.prototype.hasOwnProperty.call(_i,o)&&(_i[o]=e[e8[o]]);e.getModifierState&&!(e.altKey&&!e.ctrlKey)&&e.getModifierState("AltGraph")&&(Jn.indexOf(17)===-1&&Jn.push(17),Jn.indexOf(18)===-1&&Jn.push(18),_i[17]=!0,_i[18]=!0);var a=tv();if(n)for(var s=0;s-1}function ea(e,t,n){Jn=[];var r=aB(e),i=[],o="all",a=document,s=0,l=!1,c=!0,p="+",g=!1;for(n===void 0&&typeof t=="function"&&(n=t),Object.prototype.toString.call(t)==="[object Object]"&&(t.scope&&(o=t.scope),t.element&&(a=t.element),t.keyup&&(l=t.keyup),t.keydown!==void 0&&(c=t.keydown),t.capture!==void 0&&(g=t.capture),typeof t.splitKey=="string"&&(p=t.splitKey)),typeof t=="string"&&(o=t);s1&&(i=oB(Qc,e)),e=e[e.length-1],e=e==="*"?"*":dx(e),e in Br||(Br[e]=[]),Br[e].push({keyup:l,keydown:c,scope:o,mods:i,shortcut:r[s],method:n,key:r[s],splitKey:p,element:a});typeof a<"u"&&!Pve(a)&&window&&(lB.push(a),SS(a,"keydown",function(m){NL(m,a)},g),RL||(RL=!0,SS(window,"focus",function(){Jn=[]},g)),SS(a,"keyup",function(m){NL(m,a),kve(m)},g))}function Tve(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"all";Object.keys(Br).forEach(function(n){var r=Br[n].find(function(i){return i.scope===t&&i.shortcut===e});r&&r.method&&r.method()})}var CS={setScope:uB,getScope:tv,deleteScope:_ve,getPressedKeyCodes:Sve,isPressed:Cve,filter:wve,trigger:Tve,unbind:Eve,keyMap:M7,modifier:Qc,modifierMap:e8};for(var _S in CS)Object.prototype.hasOwnProperty.call(CS,_S)&&(ea[_S]=CS[_S]);if(typeof window<"u"){var Lve=window.hotkeys;ea.noConflict=function(e){return e&&window.hotkeys===ea&&(window.hotkeys=Lve),ea},window.hotkeys=ea}ea.filter=function(){return!0};var cB=function(t,n){var r=t.target,i=r&&r.tagName;return Boolean(i&&n&&n.includes(i))},Ave=function(t){return cB(t,["INPUT","TEXTAREA","SELECT"])};function _t(e,t,n,r){n instanceof Array&&(r=n,n=void 0);var i=n||{},o=i.enableOnTags,a=i.filter,s=i.keyup,l=i.keydown,c=i.filterPreventDefault,p=c===void 0?!0:c,g=i.enabled,m=g===void 0?!0:g,y=i.enableOnContentEditable,b=y===void 0?!1:y,S=C.exports.useRef(null),T=C.exports.useCallback(function(E,k){var L,I;return a&&!a(E)?!p:Ave(E)&&!cB(E,o)||(L=E.target)!=null&&L.isContentEditable&&!b?!0:S.current===null||document.activeElement===S.current||(I=S.current)!=null&&I.contains(document.activeElement)?(t(E,k),!0):!1},r?[S,o,a].concat(r):[S,o,a]);return C.exports.useEffect(function(){if(!m){ea.unbind(e,T);return}return s&&l!==!0&&(n.keydown=!1),ea(e,n||{},T),function(){return ea.unbind(e,T)}},[T,e,m]),S}ea.isPressed;function Ive(){return ne("div",{className:"work-in-progress nodes-work-in-progress",children:[w("h1",{children:"Nodes"}),w("p",{children:"A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature."})]})}function Mve(){return ne("div",{className:"work-in-progress outpainting-work-in-progress",children:[w("h1",{children:"Outpainting"}),w("p",{children:"Outpainting is available as a part of the Invoke AI Command Line Interface. A dedicated WebUI interface will be released in the near future."})]})}const Rve=()=>ne("div",{className:"work-in-progress post-processing-work-in-progress",children:[w("h1",{children:"Post Processing"}),w("p",{children:"Invoke AI offers a wide variety of post processing features. Image Upscaling and Face Restoration are already available in the WebUI. You can access them from the Advanced Options menu of the Text To Image and Image To Image tabs. You can also process images directly, using the image action buttons above the main image display."}),w("p",{children:"A dedicated UI will be released soon to facilitate more advanced post processing workflows."}),w("p",{children:"The Invoke AI Command Line Interface offers various other features including Embiggen."})]}),Ove=rt({displayName:"ImageToImageIcon",viewBox:"0 0 3543 3543",path:w("g",{transform:"matrix(1.10943,0,0,1.10943,-206.981,-213.533)",children:w("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M688.533,2405.95L542.987,2405.95C349.532,2405.95 192.47,2248.89 192.47,2055.44L192.47,542.987C192.47,349.532 349.532,192.47 542.987,192.47L2527.88,192.47C2721.33,192.47 2878.4,349.532 2878.4,542.987L2878.4,1172.79L3023.94,1172.79C3217.4,1172.79 3374.46,1329.85 3374.46,1523.3C3374.46,1523.3 3374.46,3035.75 3374.46,3035.75C3374.46,3229.21 3217.4,3386.27 3023.94,3386.27L1039.05,3386.27C845.595,3386.27 688.533,3229.21 688.533,3035.75L688.533,2405.95ZM3286.96,2634.37L3286.96,1523.3C3286.96,1378.14 3169.11,1260.29 3023.94,1260.29C3023.94,1260.29 1039.05,1260.29 1039.05,1260.29C893.887,1260.29 776.033,1378.14 776.033,1523.3L776.033,2489.79L1440.94,1736.22L2385.83,2775.59L2880.71,2200.41L3286.96,2634.37ZM2622.05,1405.51C2778.5,1405.51 2905.51,1532.53 2905.51,1688.98C2905.51,1845.42 2778.5,1972.44 2622.05,1972.44C2465.6,1972.44 2338.58,1845.42 2338.58,1688.98C2338.58,1532.53 2465.6,1405.51 2622.05,1405.51ZM2790.9,1172.79L1323.86,1172.79L944.882,755.906L279.97,1509.47L279.97,542.987C279.97,397.824 397.824,279.97 542.987,279.97C542.987,279.97 2527.88,279.97 2527.88,279.97C2673.04,279.97 2790.9,397.824 2790.9,542.987L2790.9,1172.79ZM2125.98,425.197C2282.43,425.197 2409.45,552.213 2409.45,708.661C2409.45,865.11 2282.43,992.126 2125.98,992.126C1969.54,992.126 1842.52,865.11 1842.52,708.661C1842.52,552.213 1969.54,425.197 2125.98,425.197Z"})})}),Nve=rt({displayName:"InpaintIcon",viewBox:"0 0 3543 3543",path:w("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3543.31,768.593C3543.31,517.323 3339.31,313.324 3088.04,313.324L455.269,313.324C203.999,313.324 0,517.323 0,768.593C0,768.593 0,2774.71 0,2774.71C0,3025.98 203.999,3229.98 455.269,3229.98L3088.04,3229.98C3339.31,3229.98 3543.31,3025.98 3543.31,2774.71C3543.31,2774.71 3543.31,768.593 3543.31,768.593ZM3446.56,2252.63L3446.56,768.593C3446.56,570.718 3285.91,410.068 3088.04,410.068C3088.04,410.068 455.269,410.068 455.269,410.068C257.394,410.068 96.745,570.718 96.745,768.593L96.745,2061.49L988.344,1051.01L1326.63,1423.12C1281.74,1438.3 1227.39,1454.93 1158.26,1480.89C995.738,1541.9 944.356,1613.28 911.834,1718.7C884.979,1805.76 875.814,1922.93 811.322,2093.5C763.918,2218.87 765.18,2304.83 790.606,2364.87C817.014,2427.22 869.858,2467.73 941.71,2493.83C1023.86,2523.67 1134.43,2534.25 1242.45,2557.97C1365.72,2585.04 1455.23,2643.2 1532.76,2665.96C1587.03,2681.89 1637.04,2683.6 1686.56,2663.56C1731.54,2645.36 1777.95,2607.64 1825.43,2535.92C1874.9,2461.2 1979.98,2369.94 2102.8,2276.91L2241.64,2429.63L2739.91,1850.53C2754.47,1841.35 2767.47,1833.12 2778.66,1825.94C2832.6,1791.35 2866.82,1742.41 2884.38,1682.61L2898.06,1666.72L3446.56,2252.63ZM1680.71,2559.9C1666.7,2570.37 1652.86,2577.22 1638.81,2580.95L1610.62,2588.45L1625.61,2644.82L1653.8,2637.33C1674.48,2631.83 1695.02,2622.04 1715.64,2606.61L1739,2589.14L1704.06,2542.43L1680.71,2559.9ZM1541.62,2570.42C1524.94,2564.58 1507.63,2557.37 1489.49,2549.48L1462.75,2537.84L1439.48,2591.33L1466.22,2602.97C1485.74,2611.46 1504.38,2619.18 1522.33,2625.47L1549.86,2635.12L1569.15,2580.07L1541.62,2570.42ZM1381.21,2503.1C1363.08,2496.04 1344.17,2489.24 1324.38,2483.03L1296.55,2474.29L1279.07,2529.94L1306.9,2538.68C1325.41,2544.49 1343.09,2550.86 1360.05,2557.46L1387.23,2568.04L1408.39,2513.68L1381.21,2503.1ZM1788.46,2430.83C1773.91,2447.61 1761.19,2463.86 1750.55,2479.44L1734.09,2503.52L1782.25,2536.43L1798.71,2512.35C1808.2,2498.46 1819.56,2484 1832.53,2469.04L1851.64,2447.01L1807.57,2408.79L1788.46,2430.83ZM1262.54,2466.49C1243.17,2462.24 1223.71,2458.43 1204.35,2454.87L1175.67,2449.6L1165.12,2506.97L1193.81,2512.24C1212.52,2515.68 1231.32,2519.35 1250.03,2523.46L1278.52,2529.72L1291.03,2472.74L1262.54,2466.49ZM1089.5,2434.66C1070.28,2431.1 1051.6,2427.35 1033.72,2423.15L1005.32,2416.49L992.002,2473.28L1020.4,2479.94C1039.14,2484.34 1058.71,2488.28 1078.86,2492.02L1107.54,2497.34L1118.18,2439.99L1089.5,2434.66ZM932.182,2386.94C917.545,2378.53 904.788,2368.71 894.532,2356.8L875.504,2334.69L831.294,2372.75L850.322,2394.85C864.755,2411.62 882.513,2425.67 903.11,2437.51L928.396,2452.05L957.469,2401.48L932.182,2386.94ZM1917.04,2306.1C1901.59,2319.37 1886.77,2332.5 1872.67,2345.44L1851.18,2365.17L1890.64,2408.14L1912.12,2388.41C1925.76,2375.89 1940.1,2363.19 1955.04,2350.36L1977.17,2331.36L1939.17,2287.1L1917.04,2306.1ZM866.485,2267.79C866.715,2251.85 868.706,2234.39 872.54,2215.21L878.257,2186.61L821.055,2175.17L815.338,2203.77C810.733,2226.81 808.434,2247.8 808.158,2266.94L807.737,2296.11L866.064,2296.95L866.485,2267.79ZM2055.08,2195.63C2039.24,2207.6 2023.66,2219.55 2008.43,2231.46L1985.45,2249.43L2021.38,2295.38L2044.36,2277.42C2059.34,2265.7 2074.66,2253.95 2090.23,2242.18L2113.51,2224.61L2078.35,2178.06L2055.08,2195.63ZM2197.62,2092.3C2181.57,2103.52 2165.6,2114.82 2149.74,2126.16L2126.02,2143.12L2159.95,2190.57L2183.67,2173.61C2199.36,2162.38 2215.18,2151.21 2231.05,2140.1L2254.95,2123.38L2221.52,2075.58L2197.62,2092.3ZM905.788,2108.14C912.858,2088.7 919.236,2069.96 925.03,2051.88L933.93,2024.1L878.378,2006.3L869.478,2034.08C863.905,2051.47 857.769,2069.5 850.968,2088.2L840.998,2115.61L895.817,2135.55L905.788,2108.14ZM2342.87,1993.45C2326.76,2004.15 2310.52,2015.01 2294.22,2026L2270.04,2042.31L2302.65,2090.67L2326.83,2074.37C2343.01,2063.45 2359.14,2052.67 2375.14,2042.04L2399.44,2025.91L2367.17,1977.31L2342.87,1993.45ZM2489.92,1897.67C2473.88,1907.94 2457.46,1918.5 2440.74,1929.32L2416.26,1945.16L2447.95,1994.14L2472.44,1978.29C2489.07,1967.53 2505.41,1957.02 2521.37,1946.8L2545.93,1931.07L2514.48,1881.94L2489.92,1897.67ZM956.972,1937.49C961.849,1917.31 966.133,1898.15 970.079,1879.93L976.253,1851.43L919.241,1839.08L913.067,1867.59C909.215,1885.38 905.033,1904.08 900.271,1923.79L893.42,1952.13L950.121,1965.84L956.972,1937.49ZM2638.01,1803.95C2622.5,1813.69 2605.98,1824.08 2588.59,1835.04L2563.91,1850.59L2595.02,1899.94L2619.69,1884.38C2637.05,1873.44 2653.55,1863.08 2669.03,1853.35L2693.73,1837.84L2662.71,1788.44L2638.01,1803.95ZM2769.59,1708.14C2760.26,1721.07 2748.81,1732.54 2735.03,1742.4L2711.31,1759.37L2745.25,1806.81L2768.97,1789.84C2788.08,1776.17 2803.93,1760.22 2816.88,1742.3L2833.95,1718.65L2786.67,1684.5L2769.59,1708.14ZM995.304,1767.43C1000.24,1748.86 1005.64,1731.66 1012.23,1715.62L1023.31,1688.64L969.359,1666.47L958.273,1693.45C950.767,1711.72 944.551,1731.29 938.928,1752.44L931.436,1780.63L987.812,1795.62L995.304,1767.43ZM1071.42,1633.09C1083.85,1622.63 1098.26,1612.75 1115.07,1603.23L1140.45,1588.86L1111.71,1538.1L1086.33,1552.47C1066.11,1563.92 1048.82,1575.88 1033.86,1588.46L1011.55,1607.24L1049.11,1651.87L1071.42,1633.09ZM2804.87,1559.28C2805.5,1578.06 2804.95,1596.1 2803,1613.27L2799.72,1642.25L2857.68,1648.81L2860.97,1619.83C2863.22,1599.96 2863.9,1579.07 2863.17,1557.33L2862.2,1528.18L2803.9,1530.12L2804.87,1559.28ZM1217.5,1558.88C1236.87,1551.88 1254.98,1545.61 1271.98,1539.88L1299.62,1530.55L1280.97,1475.28L1253.33,1484.6C1235.96,1490.46 1217.45,1496.87 1197.66,1504.02L1170.23,1513.94L1190.07,1568.8L1217.5,1558.88ZM1383.15,1502.63C1403.9,1495.17 1422.61,1487.67 1439.93,1479.27L1466.18,1466.54L1440.73,1414.06L1414.48,1426.78C1398.91,1434.33 1382.06,1441.03 1363.41,1447.74L1335.96,1457.62L1355.71,1512.51L1383.15,1502.63ZM2777.41,1393.4C2782.33,1412.11 2786.73,1430.56 2790.49,1448.67L2796.42,1477.23L2853.54,1465.37L2847.6,1436.81C2843.64,1417.72 2839.01,1398.28 2833.83,1378.57L2826.41,1350.36L2770,1365.19L2777.41,1393.4ZM1541.19,1401.64C1553.52,1387.35 1565.77,1370.94 1578.31,1351.79L1594.28,1327.39L1545.48,1295.44L1529.5,1319.84C1518.52,1336.62 1507.83,1351.02 1497.03,1363.53L1477.97,1385.61L1522.14,1423.72L1541.19,1401.64ZM2725.02,1229.27C2731.61,1247.45 2738.01,1265.61 2744.12,1283.7L2753.45,1311.33L2808.72,1292.66L2799.38,1265.03C2793.13,1246.53 2786.6,1227.96 2779.85,1209.37L2769.9,1181.95L2715.07,1201.86L2725.02,1229.27ZM1636.99,1247.12C1644.26,1232.56 1651.77,1217.04 1659.58,1200.45C1660.59,1198.3 1661.61,1196.15 1662.61,1194.02L1675.08,1167.65L1622.34,1142.72L1609.88,1169.09C1608.86,1171.25 1607.83,1173.42 1606.81,1175.59C1599.2,1191.75 1591.88,1206.88 1584.8,1221.06L1571.77,1247.16L1623.96,1273.21L1636.99,1247.12ZM2251.58,766.326C2320.04,672.986 2430.48,612.355 2554.96,612.355C2762.48,612.355 2930.95,780.83 2930.95,988.344C2930.95,1087.56 2892.44,1177.85 2829.58,1245.06C2804.67,1171.95 2775.67,1097.93 2747.18,1026.98C2699.54,908.311 2654.38,849.115 2602.9,816.501C2565.59,792.868 2523.88,781.903 2471.8,777.274C2416.47,772.355 2346.53,774.829 2251.58,766.326ZM2662.3,1066.95C2669.46,1084.79 2676.66,1102.83 2683.81,1120.98L2694.51,1148.12L2748.78,1126.72L2738.08,1099.59C2730.88,1081.32 2723.64,1063.18 2716.44,1045.23L2705.58,1018.16L2651.44,1039.88L2662.3,1066.95ZM1713.81,1090.65C1723.08,1073.13 1732.27,1056.54 1741.52,1040.87L1756.33,1015.74L1706.08,986.113L1691.27,1011.24C1681.59,1027.65 1671.95,1045.03 1662.25,1063.39L1648.61,1089.17L1700.18,1116.44L1713.81,1090.65ZM2584.06,922.671C2594.47,934.345 2604.5,948.467 2614.55,965.492L2629.38,990.608L2679.62,960.949L2664.79,935.834C2652.56,915.134 2640.26,898.042 2627.6,883.849L2608.19,862.079L2564.65,900.901L2584.06,922.671ZM1805.33,949.853C1817.51,935.859 1830.16,923.259 1843.5,912.06L1865.85,893.314L1828.36,848.625L1806.01,867.372C1790.4,880.469 1775.59,895.178 1761.34,911.545L1742.18,933.541L1786.17,971.849L1805.33,949.853ZM2446.47,869.303C2466.17,870.516 2483.98,872.335 2500.35,875.649L2528.94,881.438L2540.51,824.265L2511.93,818.476C2493.13,814.67 2472.68,812.474 2450.05,811.08L2420.94,809.287L2417.35,867.51L2446.47,869.303ZM1935.15,861.305C1951.44,856.036 1968.78,851.999 1987.35,849.144L2016.18,844.713L2007.32,787.057L1978.49,791.488C1956.68,794.84 1936.32,799.616 1917.19,805.802L1889.44,814.778L1907.39,870.28L1935.15,861.305ZM2271.35,861.832C2292.28,863.33 2311.95,864.351 2330.47,865.114L2359.61,866.316L2362.01,808.032L2332.87,806.83C2314.9,806.09 2295.82,805.1 2275.51,803.648L2246.42,801.567L2242.26,859.751L2271.35,861.832ZM2097.81,844.858C2115.7,845.771 2134.46,847.337 2154.17,849.543L2183.16,852.787L2189.65,794.816L2160.66,791.572C2139.72,789.228 2119.79,787.57 2100.78,786.6L2071.65,785.114L2068.68,843.372L2097.81,844.858Z"})}),Dve=rt({displayName:"NodesIcon",viewBox:"0 0 3543 3543",path:w("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3543.31,770.787C3543.31,515.578 3336.11,308.38 3080.9,308.38L462.407,308.38C207.197,308.38 0,515.578 0,770.787L0,2766.03C0,3021.24 207.197,3228.44 462.407,3228.44L3080.9,3228.44C3336.11,3228.44 3543.31,3021.24 3543.31,2766.03C3543.31,2766.03 3543.31,770.787 3543.31,770.787ZM3427.88,770.787L3427.88,2766.03C3427.88,2957.53 3272.4,3113.01 3080.9,3113.01C3080.9,3113.01 462.407,3113.01 462.407,3113.01C270.906,3113.01 115.431,2957.53 115.431,2766.03L115.431,770.787C115.431,579.286 270.906,423.812 462.407,423.812L3080.9,423.812C3272.4,423.812 3427.88,579.286 3427.88,770.787ZM1214.23,1130.69L1321.47,1130.69C1324.01,1130.69 1326.54,1130.53 1329.05,1130.2C1329.05,1130.2 1367.3,1125.33 1397.94,1149.8C1421.63,1168.72 1437.33,1204.3 1437.33,1265.48L1437.33,2078.74L1220.99,2078.74C1146.83,2078.74 1086.61,2138.95 1086.61,2213.12L1086.61,2762.46C1086.61,2836.63 1146.83,2896.84 1220.99,2896.84L1770.34,2896.84C1844.5,2896.84 1904.71,2836.63 1904.71,2762.46L1904.71,2213.12C1904.71,2138.95 1844.5,2078.74 1770.34,2078.74L1554,2078.74L1554,1604.84C1625.84,1658.19 1703.39,1658.1 1703.39,1658.1C1703.54,1658.1 1703.69,1658.11 1703.84,1658.11L2362.2,1658.11L2362.2,1874.44C2362.2,1948.61 2422.42,2008.82 2496.58,2008.82L3045.93,2008.82C3120.09,2008.82 3180.3,1948.61 3180.3,1874.44L3180.3,1325.1C3180.3,1250.93 3120.09,1190.72 3045.93,1190.72L2496.58,1190.72C2422.42,1190.72 2362.2,1250.93 2362.2,1325.1L2362.2,1558.97L2362.2,1541.44L1704.23,1541.44C1702.2,1541.37 1650.96,1539.37 1609.51,1499.26C1577.72,1468.49 1554,1416.47 1554,1331.69L1554,1265.48C1554,1153.86 1513.98,1093.17 1470.76,1058.64C1411.24,1011.1 1338.98,1012.58 1319.15,1014.03L1214.23,1014.03L1214.23,796.992C1214.23,722.828 1154.02,662.617 1079.85,662.617L530.507,662.617C456.343,662.617 396.131,722.828 396.131,796.992L396.131,1346.34C396.131,1420.5 456.343,1480.71 530.507,1480.71L1079.85,1480.71C1154.02,1480.71 1214.23,1420.5 1214.23,1346.34L1214.23,1130.69Z"})}),zve=rt({displayName:"OutpaintIcon",viewBox:"0 0 3543 3543",path:w("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3543.31,766.352C3543.31,516.705 3340.63,314.024 3090.98,314.024L452.328,314.024C202.681,314.024 0,516.705 0,766.352L0,2776.95C0,3026.6 202.681,3229.28 452.328,3229.28C452.328,3229.28 3090.98,3229.28 3090.98,3229.28C3340.63,3229.28 3543.31,3026.6 3543.31,2776.95C3543.31,2776.95 3543.31,766.352 3543.31,766.352ZM3454.26,766.352L3454.26,2776.95C3454.26,2977.46 3291.48,3140.24 3090.98,3140.24L452.328,3140.24C251.825,3140.24 89.043,2977.46 89.043,2776.95C89.043,2776.95 89.043,766.352 89.043,766.352C89.043,565.849 251.825,403.067 452.328,403.067C452.328,403.067 3090.98,403.067 3090.98,403.067C3291.48,403.067 3454.26,565.849 3454.26,766.352ZM1294.01,2603.04L1394.01,2603.04L1394.01,2553.04L1294.01,2553.04L1294.01,2603.04ZM2494.01,2603.04L2524.53,2603.04C2541.26,2603.04 2557.62,2601.44 2573.47,2598.39L2598.02,2593.66L2588.56,2544.56L2564.01,2549.29C2551.23,2551.75 2538.03,2553.04 2524.53,2553.04L2494.01,2553.04L2494.01,2603.04ZM2344.01,2603.04L2444.01,2603.04L2444.01,2553.04L2344.01,2553.04L2344.01,2603.04ZM994.01,2603.04L1094.01,2603.04L1094.01,2553.04L994.01,2553.04L994.01,2603.04ZM1144.01,2603.04L1244.01,2603.04L1244.01,2553.04L1144.01,2553.04L1144.01,2603.04ZM2194.01,2603.04L2294.01,2603.04L2294.01,2553.04L2194.01,2553.04L2194.01,2603.04ZM2044.01,2603.04L2144.01,2603.04L2144.01,2553.04L2044.01,2553.04L2044.01,2603.04ZM1894.01,2603.04L1994.01,2603.04L1994.01,2553.04L1894.01,2553.04L1894.01,2603.04ZM1744.01,2603.04L1844.01,2603.04L1844.01,2553.04L1744.01,2553.04L1744.01,2603.04ZM1444.01,2603.04L1544.01,2603.04L1544.01,2553.04L1444.01,2553.04L1444.01,2603.04ZM1594.01,2603.04L1694.01,2603.04L1694.01,2553.04L1594.01,2553.04L1594.01,2603.04ZM864.145,2551.46C878.835,2562.5 894.741,2572 911.624,2579.74L934.352,2590.15L955.18,2544.7L932.452,2534.28C918.844,2528.05 906.024,2520.39 894.185,2511.49L874.199,2496.47L844.16,2536.44L864.145,2551.46ZM2674.44,2554.92C2689.46,2544.16 2703.28,2531.82 2715.65,2518.14L2732.42,2499.61L2695.35,2466.06L2678.58,2484.6C2668.59,2495.63 2657.44,2505.59 2645.32,2514.28L2625,2528.84L2654.12,2569.48L2674.44,2554.92ZM865.632,1911.31L1339.59,1374.15L2030.89,2134.59L2392.97,1713.77L2677.68,2017.9L2677.68,2324.93C2677.68,2424.23 2597.06,2504.85 2497.76,2504.85C2497.76,2504.85 1045.55,2504.85 1045.55,2504.85C946.251,2504.85 865.632,2424.23 865.632,2324.93L865.632,1911.31ZM771.251,2417.22C776.455,2435.14 783.552,2452.26 792.313,2468.35L804.27,2490.3L848.18,2466.39L836.223,2444.43C829.171,2431.49 823.457,2417.7 819.268,2403.28L812.297,2379.27L764.28,2393.21L771.251,2417.22ZM2770.36,2422.83C2775.83,2405.47 2779.52,2387.33 2781.2,2368.61L2783.43,2343.71L2733.64,2339.24L2731.4,2364.14C2730.05,2379.21 2727.08,2393.82 2722.67,2407.79L2715.15,2431.63L2762.84,2446.67L2770.36,2422.83ZM761.068,2236.12L761.068,2336.12L811.068,2336.12L811.068,2236.12L761.068,2236.12ZM2782.24,2291.41L2782.24,2191.41L2732.24,2191.41L2732.24,2291.41L2782.24,2291.41ZM761.068,2086.12L761.068,2186.12L811.068,2186.12L811.068,2086.12L761.068,2086.12ZM2782.24,2141.41L2782.24,2041.4L2732.24,2041.4L2732.24,2141.41L2782.24,2141.41ZM761.068,1936.12L761.068,2036.12L811.068,2036.12L811.068,1936.12L761.068,1936.12ZM2782.24,1991.4L2782.24,1891.4L2732.24,1891.4L2732.24,1991.4L2782.24,1991.4ZM761.068,1786.12L761.068,1886.12L811.068,1886.12L811.068,1786.12L761.068,1786.12ZM2782.24,1841.4L2782.24,1741.41L2732.24,1741.41L2732.24,1841.4L2782.24,1841.4ZM761.068,1636.12L761.068,1736.12L811.068,1736.12L811.068,1636.12L761.068,1636.12ZM2782.24,1691.41L2782.24,1591.41L2732.24,1591.41L2732.24,1691.41L2782.24,1691.41ZM761.068,1486.12L761.068,1586.12L811.068,1586.12L811.068,1486.12L761.068,1486.12ZM2203.72,1132.2C2318.18,1132.2 2411.11,1225.13 2411.11,1339.59C2411.11,1454.05 2318.18,1546.98 2203.72,1546.98C2089.26,1546.98 1996.33,1454.05 1996.33,1339.59C1996.33,1225.13 2089.26,1132.2 2203.72,1132.2ZM2782.24,1541.41L2782.24,1441.41L2732.24,1441.41L2732.24,1541.41L2782.24,1541.41ZM761.068,1336.12L761.068,1436.12L811.068,1436.12L811.068,1336.12L761.068,1336.12ZM2782.24,1391.41L2782.24,1291.41L2732.24,1291.41L2732.24,1391.41L2782.24,1391.41ZM761.068,1186.12L761.068,1286.12L811.068,1286.12L811.068,1186.12L761.068,1186.12ZM2732.24,1197.98L2732.24,1241.41L2782.24,1241.41L2782.24,1172.98L2781.03,1172.98C2780.06,1162.82 2778.49,1152.83 2776.36,1143.04L2771.04,1118.62L2722.18,1129.24L2727.5,1153.67C2730.61,1167.95 2732.24,1182.78 2732.24,1197.98ZM804.386,1055C794.186,1070.26 785.572,1086.67 778.777,1103.99L769.647,1127.26L816.194,1145.52L825.324,1122.25C830.797,1108.3 837.738,1095.08 845.955,1082.79L859.848,1062L818.279,1034.21L804.386,1055ZM2730.5,1043.14C2719.39,1028.39 2706.73,1014.86 2692.77,1002.81L2673.84,986.48L2641.17,1024.34L2660.1,1040.67C2671.37,1050.39 2681.59,1061.31 2690.56,1073.22L2705.6,1093.19L2745.54,1063.11L2730.5,1043.14ZM933.266,954.821C915.698,961.006 898.998,969.041 883.402,978.694L862.144,991.851L888.457,1034.37L909.715,1021.21C922.275,1013.44 935.723,1006.96 949.871,1001.98L973.452,993.681L956.848,946.518L933.266,954.821ZM2596.18,950.378C2578.71,945.327 2560.49,942.072 2541.72,940.832L2516.78,939.183L2513.48,989.074L2538.43,990.723C2553.54,991.722 2568.22,994.341 2582.28,998.409L2606.3,1005.36L2620.19,957.325L2596.18,950.378ZM2165.09,940.265L2065.09,940.265L2065.09,990.265L2165.09,990.265L2165.09,940.265ZM2015.09,940.265L1915.09,940.265L1915.09,990.265L2015.09,990.265L2015.09,940.265ZM1115.08,940.265L1015.08,940.265L1015.08,990.265L1115.08,990.265L1115.08,940.265ZM1865.08,940.265L1765.08,940.265L1765.08,990.265L1865.08,990.265L1865.08,940.265ZM1265.08,940.265L1165.08,940.265L1165.08,990.265L1265.08,990.265L1265.08,940.265ZM1415.08,940.265L1315.08,940.265L1315.08,990.265L1415.08,990.265L1415.08,940.265ZM1565.08,940.265L1465.08,940.265L1465.08,990.265L1565.08,990.265L1565.08,940.265ZM1715.08,940.265L1615.08,940.265L1615.08,990.265L1715.08,990.265L1715.08,940.265ZM2465.09,940.265L2365.09,940.265L2365.09,990.265L2465.09,990.265L2465.09,940.265ZM2315.09,940.265L2215.09,940.265L2215.09,990.265L2315.09,990.265L2315.09,940.265Z"})}),Fve=rt({displayName:"PostprocessingIcon",viewBox:"0 0 3543 3543",path:w("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M709.477,1596.53L992.591,1275.66L2239.09,2646.81L2891.95,1888.03L3427.88,2460.51L3427.88,994.78C3427.88,954.66 3421.05,916.122 3408.5,880.254L3521.9,855.419C3535.8,899.386 3543.31,946.214 3543.31,994.78L3543.31,2990.02C3543.31,3245.23 3336.11,3452.43 3080.9,3452.43C3080.9,3452.43 462.407,3452.43 462.407,3452.43C207.197,3452.43 -0,3245.23 -0,2990.02L-0,994.78C-0,739.571 207.197,532.373 462.407,532.373L505.419,532.373L504.644,532.546L807.104,600.085C820.223,601.729 832.422,607.722 841.77,617.116C850.131,625.517 855.784,636.21 858.055,647.804L462.407,647.804C270.906,647.804 115.431,803.279 115.431,994.78L115.431,2075.73L-0,2101.5L115.431,2127.28L115.431,2269.78L220.47,2150.73L482.345,2209.21C503.267,2211.83 522.722,2221.39 537.63,2236.37C552.538,2251.35 562.049,2270.9 564.657,2291.93L671.84,2776.17L779.022,2291.93C781.631,2270.9 791.141,2251.35 806.05,2236.37C820.958,2221.39 840.413,2211.83 861.334,2209.21L1353.15,2101.5L861.334,1993.8C840.413,1991.18 820.958,1981.62 806.05,1966.64C791.141,1951.66 781.631,1932.11 779.022,1911.08L709.477,1596.53ZM671.84,1573.09L725.556,2006.07C726.863,2016.61 731.63,2026.4 739.101,2033.91C746.573,2041.42 756.323,2046.21 766.808,2047.53L1197.68,2101.5L766.808,2155.48C756.323,2156.8 746.573,2161.59 739.101,2169.09C731.63,2176.6 726.863,2186.4 725.556,2196.94L671.84,2629.92L618.124,2196.94C616.817,2186.4 612.05,2176.6 604.579,2169.09C597.107,2161.59 587.357,2156.8 576.872,2155.48L146.001,2101.5L576.872,2047.53C587.357,2046.21 597.107,2041.42 604.579,2033.91C612.05,2026.4 616.817,2016.61 618.124,2006.07L671.84,1573.09ZM609.035,1710.36L564.657,1911.08C562.049,1932.11 552.538,1951.66 537.63,1966.64C522.722,1981.62 503.267,1991.18 482.345,1993.8L328.665,2028.11L609.035,1710.36ZM2297.12,938.615L2451.12,973.003C2480.59,976.695 2507.99,990.158 2528.99,1011.26C2549.99,1032.37 2563.39,1059.9 2567.07,1089.52L2672.73,1566.9C2634.5,1580.11 2593.44,1587.29 2550.72,1587.29C2344.33,1587.29 2176.77,1419.73 2176.77,1213.34C2176.77,1104.78 2223.13,1006.96 2297.12,938.615ZM2718.05,76.925L2793.72,686.847C2795.56,701.69 2802.27,715.491 2812.8,726.068C2823.32,736.644 2837.06,743.391 2851.83,745.242L3458.78,821.28L2851.83,897.318C2837.06,899.168 2823.32,905.916 2812.8,916.492C2802.27,927.068 2795.56,940.87 2793.72,955.712L2718.05,1565.63L2642.38,955.712C2640.54,940.87 2633.83,927.068 2623.3,916.492C2612.78,905.916 2599.04,899.168 2584.27,897.318L1977.32,821.28L2584.27,745.242C2599.04,743.391 2612.78,736.644 2623.3,726.068C2633.83,715.491 2640.54,701.69 2642.38,686.847L2718.05,76.925ZM2883.68,1043.06C2909.88,1094.13 2924.67,1152.02 2924.67,1213.34C2924.67,1335.4 2866.06,1443.88 2775.49,1512.14L2869.03,1089.52C2871.07,1073.15 2876.07,1057.42 2883.68,1043.06ZM925.928,201.2L959.611,472.704C960.431,479.311 963.42,485.455 968.105,490.163C972.79,494.871 978.904,497.875 985.479,498.698L1255.66,532.546L985.479,566.395C978.904,567.218 972.79,570.222 968.105,574.93C963.42,579.638 960.431,585.781 959.611,592.388L925.928,863.893L892.245,592.388C891.425,585.781 888.436,579.638 883.751,574.93C879.066,570.222 872.952,567.218 866.378,566.395L596.195,532.546L866.378,498.698C872.952,497.875 879.066,494.871 883.751,490.163C888.436,485.455 891.425,479.311 892.245,472.704L925.928,201.2ZM2864.47,532.373L3080.9,532.373C3258.7,532.373 3413.2,632.945 3490.58,780.281L3319.31,742.773C3257.14,683.925 3173.2,647.804 3080.9,647.804L2927.07,647.804C2919.95,642.994 2913.25,637.473 2907.11,631.298C2886.11,610.194 2872.71,582.655 2869.03,553.04L2864.47,532.373ZM1352.36,532.373L2571.64,532.373L2567.07,553.04C2563.39,582.655 2549.99,610.194 2528.99,631.298C2522.85,637.473 2516.16,642.994 2509.03,647.804L993.801,647.804C996.072,636.21 1001.73,625.517 1010.09,617.116C1019.43,607.722 1031.63,601.729 1044.75,600.085L1353.15,532.546L1352.36,532.373Z"})}),Bve=rt({displayName:"TextToImageIcon",viewBox:"0 0 3543 3543",path:w("g",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",transform:"matrix(1.11667,0,0,1.1066,-231.131,-213.062)",children:w("path",{d:"M2209.59,1137.35L2209.59,1098.17C2177.13,1108.99 2125.74,1121.91 2055.41,1136.94C2054.77,1137.08 2054.14,1137.21 2053.49,1137.35L1662.79,1137.35C1687.75,1101.98 1720.8,1074.35 1761.93,1054.44C1808.52,1031.9 1875.69,1012.22 1963.45,995.386C2081.86,973.146 2163.91,952.409 2209.59,933.174L2209.59,907.929C2209.59,859.241 2197.57,824.529 2173.53,803.792C2149.48,783.054 2104.1,772.686 2037.38,772.686C1992.3,772.686 1957.14,781.552 1931.89,799.284C1906.64,817.015 1886.21,848.121 1870.58,892.601L1640.67,851.127C1666.51,758.56 1710.99,690.037 1774.11,645.557C1837.22,601.077 1930.99,578.837 2055.41,578.837C2168.42,578.837 2252.57,592.211 2307.87,618.959C2363.17,645.707 2402.09,679.668 2424.63,720.842C2447.17,762.016 2458.44,837.602 2458.44,947.6L2456.7,1137.35L3021.34,1137.35C3214.79,1137.35 3371.86,1294.41 3371.86,1487.87C3371.86,1487.87 3371.86,3000.32 3371.86,3000.32C3371.86,3193.78 3214.79,3350.84 3021.34,3350.84C3021.34,3350.84 1036.45,3350.84 1036.45,3350.84C842.991,3350.84 685.93,3193.78 685.93,3000.32L685.93,1487.87C685.93,1400.21 718.174,1320.03 771.448,1258.54L772.123,1257.76L607.408,1257.76L498.311,1558L215.202,1558L730.028,236.22L1012.24,236.22L1373.06,1137.35L2209.59,1137.35ZM3284.36,2598.93L3284.36,1487.87C3284.36,1342.71 3166.5,1224.85 3021.34,1224.85C3021.34,1224.85 1036.45,1224.85 1036.45,1224.85C891.284,1224.85 773.43,1342.71 773.43,1487.87L773.43,2454.35L1438.34,1700.79L2383.22,2740.16L2878.11,2164.98L3284.36,2598.93ZM2619.44,1370.08C2775.89,1370.08 2902.91,1497.1 2902.91,1653.54C2902.91,1809.99 2775.89,1937.01 2619.44,1937.01C2462.99,1937.01 2335.98,1809.99 2335.98,1653.54C2335.98,1497.1 2462.99,1370.08 2619.44,1370.08ZM772.877,1256.89L772.849,1256.93L773.167,1256.57L772.877,1256.89ZM773.634,1256.04L773.563,1256.12L773.985,1255.64L773.634,1256.04ZM774.394,1255.18L774.276,1255.31L774.746,1254.78L774.394,1255.18ZM775.157,1254.32L774.988,1254.51L775.493,1253.95L775.157,1254.32ZM775.923,1253.47L775.698,1253.72L776.237,1253.12L775.923,1253.47ZM776.691,1252.62L776.403,1252.94L776.979,1252.3L776.691,1252.62ZM777.462,1251.77L777.098,1252.17L777.723,1251.49L777.462,1251.77ZM925.081,1155.44C868.026,1174.57 817.508,1207.99 777.775,1251.43C817.511,1207.99 868.031,1174.57 925.081,1155.44ZM925.646,1155.25L925.108,1155.43L926.103,1155.1L925.646,1155.25ZM935.286,1152.2C932.214,1153.12 929.159,1154.09 926.13,1155.09C929.165,1154.09 932.219,1153.12 935.286,1152.2ZM935.716,1152.07L935.384,1152.17L936.292,1151.89L935.716,1152.07ZM936.843,1151.73L936.451,1151.85L937.327,1151.59L936.843,1151.73ZM937.972,1151.4L937.514,1151.53L938.377,1151.28L937.972,1151.4ZM939.102,1151.07L938.57,1151.22L939.438,1150.97L939.102,1151.07ZM940.233,1150.74L939.613,1150.92L940.505,1150.67L940.233,1150.74ZM946.659,1148.98C944.639,1149.51 942.626,1150.07 940.626,1150.63C942.631,1150.06 944.642,1149.51 946.659,1148.98ZM947.056,1148.87L946.829,1148.93L947.659,1148.71L947.056,1148.87ZM948.198,1148.57L947.919,1148.65L948.705,1148.44L948.198,1148.57ZM949.342,1148.28L949.008,1148.37L949.771,1148.17L949.342,1148.28ZM950.488,1147.99L950.096,1148.09L950.848,1147.9L950.488,1147.99ZM951.635,1147.7L951.182,1147.81L951.932,1147.63L951.635,1147.7ZM952.783,1147.42L952.262,1147.55L953.022,1147.36L952.783,1147.42ZM953.933,1147.14L953.327,1147.28L954.115,1147.09L953.933,1147.14ZM958.213,1146.13C956.927,1146.42 955.644,1146.73 954.354,1147.04C955.637,1146.73 956.923,1146.43 958.213,1146.13ZM958.547,1146.06L958.409,1146.09L959.174,1145.91L958.547,1146.06ZM959.704,1145.79L959.517,1145.84L960.229,1145.68L959.704,1145.79ZM960.863,1145.54L960.626,1145.59L961.311,1145.44L960.863,1145.54ZM962.023,1145.28L961.736,1145.35L962.406,1145.2L962.023,1145.28ZM963.184,1145.03L962.846,1145.11L963.508,1144.97L963.184,1145.03ZM964.347,1144.79L963.956,1144.87L964.615,1144.73L964.347,1144.79ZM965.511,1144.55L965.066,1144.64L965.725,1144.5L965.511,1144.55ZM966.677,1144.31L966.172,1144.41L966.838,1144.28L966.677,1144.31ZM967.844,1144.08L967.269,1144.19L967.953,1144.05L967.844,1144.08ZM970.183,1143.62C969.793,1143.69 969.403,1143.77 969.013,1143.85L969.055,1143.84C969.413,1143.77 969.771,1143.7 970.129,1143.63L970.183,1143.62ZM971.354,1143.4L971.245,1143.42L971.882,1143.3L971.354,1143.4ZM972.526,1143.18L972.37,1143.21L972.987,1143.09L972.526,1143.18ZM973.7,1142.96L973.496,1143L974.103,1142.89L973.7,1142.96ZM974.876,1142.75L974.624,1142.8L975.225,1142.69L974.876,1142.75ZM976.052,1142.55L975.754,1142.6L976.349,1142.49L976.052,1142.55ZM977.23,1142.34L976.885,1142.4L977.476,1142.3L977.23,1142.34ZM978.41,1142.14L978.019,1142.21L978.605,1142.11L978.41,1142.14ZM979.59,1141.95L979.156,1142.02L979.736,1141.92L979.59,1141.95ZM980.772,1141.76L980.299,1141.83L980.868,1141.74L980.772,1141.76ZM981.955,1141.57L981.464,1141.65L982.002,1141.56L981.955,1141.57ZM983.14,1141.39L983.1,1141.39L983.605,1141.32L983.14,1141.39ZM984.326,1141.21L984.239,1141.22L984.778,1141.14L984.326,1141.21ZM985.513,1141.03L985.379,1141.05L985.928,1140.97L985.513,1141.03ZM986.702,1140.86L986.521,1140.89L987.073,1140.81L986.702,1140.86ZM987.891,1140.69L987.665,1140.73L988.218,1140.65L987.891,1140.69ZM989.082,1140.53L988.811,1140.57L989.363,1140.49L989.082,1140.53ZM990.275,1140.37L989.96,1140.41L990.508,1140.34L990.275,1140.37ZM991.468,1140.22L991.113,1140.26L991.654,1140.19L991.468,1140.22ZM992.663,1140.07L992.273,1140.12L992.8,1140.05L992.663,1140.07ZM993.859,1139.92L993.447,1139.97L993.948,1139.91L993.859,1139.92ZM995.056,1139.78L994.671,1139.82L995.097,1139.77L995.056,1139.78ZM996.255,1139.64L996.23,1139.64L996.578,1139.6L996.255,1139.64ZM997.454,1139.5L997.383,1139.51L997.852,1139.46L997.454,1139.5ZM998.655,1139.37L998.537,1139.38L999.041,1139.33L998.655,1139.37ZM999.857,1139.24L999.693,1139.26L1000.21,1139.21L999.857,1139.24ZM1001.06,1139.12L1000.85,1139.14L1001.38,1139.09L1001.06,1139.12ZM1002.26,1139L1002.01,1139.03L1002.54,1138.98L1002.26,1139ZM1003.47,1138.89L1003.18,1138.91L1003.7,1138.87L1003.47,1138.89ZM1004.68,1138.78L1004.34,1138.81L1004.86,1138.76L1004.68,1138.78ZM1005.89,1138.67L1005.52,1138.7L1006.02,1138.66L1005.89,1138.67ZM1007.1,1138.57L1006.71,1138.6L1007.18,1138.56L1007.1,1138.57ZM1008.31,1138.47L1007.96,1138.5L1008.35,1138.46L1008.31,1138.47ZM1009.52,1138.37L1009.5,1138.38L1009.72,1138.36L1009.52,1138.37ZM1010.73,1138.28L1010.67,1138.29L1011.1,1138.26L1010.73,1138.28ZM1011.94,1138.2L1011.84,1138.2L1012.32,1138.17L1011.94,1138.2ZM1013.16,1138.12L1013,1138.13L1013.51,1138.09L1013.16,1138.12ZM1014.37,1138.04L1014.17,1138.05L1014.69,1138.02L1014.37,1138.04ZM1015.59,1137.96L1015.35,1137.98L1015.86,1137.95L1015.59,1137.96ZM1016.81,1137.89L1016.52,1137.91L1017.04,1137.88L1016.81,1137.89ZM1018.03,1137.83L1017.7,1137.85L1018.21,1137.82L1018.03,1137.83ZM1019.25,1137.77L1018.89,1137.79L1019.39,1137.76L1019.25,1137.77ZM1020.47,1137.71L1020.1,1137.73L1020.56,1137.71L1020.47,1137.71ZM1021.69,1137.66L1021.36,1137.67L1021.74,1137.66L1021.69,1137.66ZM1022.92,1137.61L1022.91,1137.61L1023.02,1137.61L1022.92,1137.61ZM1024.14,1137.57L1024.09,1137.57L1024.49,1137.55L1024.14,1137.57ZM1025.37,1137.52L1025.27,1137.53L1025.74,1137.51L1025.37,1137.52ZM1026.6,1137.49L1026.45,1137.49L1026.94,1137.48L1026.6,1137.49ZM1027.82,1137.46L1027.63,1137.46L1028.14,1137.45L1027.82,1137.46ZM1029.05,1137.43L1028.81,1137.43L1029.33,1137.42L1029.05,1137.43ZM1030.28,1137.41L1030,1137.41L1030.52,1137.4L1030.28,1137.41ZM1031.51,1137.39L1031.19,1137.39L1031.7,1137.38L1031.51,1137.39ZM1032.75,1137.37L1032.39,1137.38L1032.89,1137.37L1032.75,1137.37ZM1033.98,1137.36L1033.61,1137.36L1034.07,1137.36L1033.98,1137.36ZM1035.21,1137.35L1034.87,1137.36L1035.26,1137.35L1035.21,1137.35ZM1050.1,1035.06L867.977,544.575L689.455,1035.06L1050.1,1035.06Z"})})});var Ji=(e=>(e[e.PROMPT=0]="PROMPT",e[e.GALLERY=1]="GALLERY",e[e.OTHER=2]="OTHER",e[e.SEED=3]="SEED",e[e.VARIATIONS=4]="VARIATIONS",e[e.UPSCALE=5]="UPSCALE",e[e.FACE_CORRECTION=6]="FACE_CORRECTION",e[e.IMAGE_TO_IMAGE=7]="IMAGE_TO_IMAGE",e))(Ji||{});const $ve={[0]:{text:"This field will take all prompt text, including both content and stylistic terms. While weights can be included in the prompt, standard CLI Commands/parameters will not work.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[1]:{text:"As new invocations are generated, files from the output directory will be displayed here. Generations have additional options to configure new generations.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[2]:{text:"These options will enable alternative processing modes for Invoke. Seamless tiling will work to generate repeating patterns in the output. High Resolution Optimization performs a two-step generation cycle, and should be used at higher resolutions when you desire a more coherent image/composition. ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[3]:{text:"Seed values provide an initial set of noise which guide the denoising process, and can be randomized or populated with a seed from a previous invocation. The Threshold feature can be used to mitigate undesirable outcomes at higher CFG values (try between 0-10), and Perlin can be used to add Perlin noise into the denoising process - Both serve to add variation to your outputs. ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[4]:{text:"Try a variation with an amount of between 0 and 1 to change the output image for the set seed - Interesting variations on the seed are found between 0.1 and 0.3.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[5]:{text:"Using ESRGAN you can increase the output resolution without requiring a higher width/height in the initial generation.",href:"link/to/docs/feature1.html",guideImage:"asset/path.gif"},[6]:{text:"Using GFPGAN or Codeformer, Face Correction will attempt to identify faces in outputs, and correct any defects/abnormalities. Higher strength values will apply a stronger corrective pressure on outputs, resulting in more appealing faces. With Codeformer, a higher fidelity will attempt to preserve the original image, at the expense of face correction strength.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[7]:{text:"ImageToImage allows the upload of an initial image, which InvokeAI will use to guide the generation process, along with a prompt. A lower value for this setting will more closely resemble the original image. Values between 0-1 are accepted, and a range of .25-.75 is recommended ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"}},wl=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:i,formLabelProps:o,styleClass:a,...s}=e;return w(rd,{isDisabled:n,width:r,className:`invokeai__switch-form-control ${a}`,...i,children:ne(Yf,{className:"invokeai__switch-form-label",whiteSpace:"nowrap",...o,children:[t,w(m7,{className:"invokeai__switch-root",...s})]})})};function R7(){const e=Me(i=>i.system.isGFPGANAvailable),t=Me(i=>i.options.shouldRunFacetool),n=Xe();return ne(Dn,{justifyContent:"space-between",alignItems:"center",width:"100%",mr:2,children:[w("p",{children:"Restore Face"}),w(wl,{isDisabled:!e,isChecked:t,onChange:i=>n(F6e(i.target.checked))})]})}const DL=/^-?(0\.)?\.?$/,no=e=>{const{label:t,styleClass:n,isDisabled:r=!1,showStepper:i=!0,width:o,textAlign:a,isInvalid:s,value:l,onChange:c,min:p,max:g,isInteger:m=!0,formControlProps:y,formLabelProps:b,numberInputFieldProps:S,numberInputStepperProps:T,tooltipProps:E,...k}=e,[L,I]=C.exports.useState(String(l));C.exports.useEffect(()=>{!L.match(DL)&&l!==Number(L)&&I(String(l))},[l,L]);const O=N=>{I(N),N.match(DL)||c(m?Math.floor(Number(N)):Number(N))},D=N=>{const z=ht.clamp(m?Math.floor(Number(N.target.value)):Number(N.target.value),p,g);I(String(z)),c(z)};return w($i,{...E,children:ne(rd,{isDisabled:r,isInvalid:s,className:n?`invokeai__number-input-form-control ${n}`:"invokeai__number-input-form-control",...y,children:[t&&w(Yf,{className:"invokeai__number-input-form-label",style:{display:t?"block":"none"},...b,children:t}),ne(tF,{className:"invokeai__number-input-root",value:L,keepWithinRange:!0,clampValueOnBlur:!1,onChange:O,onBlur:D,width:o,...k,children:[w(nF,{className:"invokeai__number-input-field",textAlign:a,...S}),i&&ne("div",{className:"invokeai__number-input-stepper",children:[w(oF,{...T,className:"invokeai__number-input-stepper-button"}),w(iF,{...T,className:"invokeai__number-input-stepper-button"})]})]})]})})},F0=e=>{const{label:t,isDisabled:n,validValues:r,size:i="sm",fontSize:o="md",styleClass:a,...s}=e;return ne(rd,{isDisabled:n,className:`invokeai__select ${a}`,onClick:l=>{l.stopPropagation(),l.nativeEvent.stopImmediatePropagation(),l.nativeEvent.stopPropagation(),l.nativeEvent.cancelBubble=!0},children:[w(Yf,{className:"invokeai__select-label",fontSize:o,marginBottom:1,flexGrow:2,whiteSpace:"nowrap",children:t}),w(dF,{className:"invokeai__select-picker",fontSize:o,size:i,...s,children:r.map(l=>typeof l=="string"||typeof l=="number"?w("option",{value:l,className:"invokeai__select-option",children:l},l):w("option",{value:l.value,className:"invokeai__select-option",children:l.key},l.value))})]})},Hve=["ddim","plms","k_lms","k_dpm_2","k_dpm_2_a","k_euler","k_euler_a","k_heun"],Wve=[64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408,1472,1536,1600,1664,1728,1792,1856,1920,1984,2048],Vve=[64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408,1472,1536,1600,1664,1728,1792,1856,1920,1984,2048],Uve=[{key:"2x",value:2},{key:"4x",value:4}],O7=0,N7=4294967295,Gve=["gfpgan","codeformer"],jve=[{key:"None",value:"none"},{key:"Fast",value:"latents"},{key:"Accurate",value:"full-res"}],qve=St(e=>e.options,e=>({facetoolStrength:e.facetoolStrength,facetoolType:e.facetoolType,codeformerFidelity:e.codeformerFidelity}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),Kve=St(e=>e.system,e=>({isGFPGANAvailable:e.isGFPGANAvailable}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),fx=()=>{const e=Xe(),{facetoolStrength:t,facetoolType:n,codeformerFidelity:r}=Me(qve),{isGFPGANAvailable:i}=Me(Kve),o=l=>e(v3(l)),a=l=>e(EH(l)),s=l=>e(y3(l.target.value));return ne(Dn,{direction:"column",gap:2,children:[w(F0,{label:"Type",validValues:Gve.concat(),value:n,onChange:s}),w(no,{isDisabled:!i,label:"Strength",step:.05,min:0,max:1,onChange:o,value:t,width:"90px",isInteger:!1}),n==="codeformer"&&w(no,{isDisabled:!i,label:"Fidelity",step:.05,min:0,max:1,onChange:a,value:r,width:"90px",isInteger:!1})]})};function Zve(){const e=Xe(),t=Me(r=>r.options.shouldFitToWidthHeight);return w(wl,{label:"Fit Initial Image To Output Size",isChecked:t,onChange:r=>e(PH(r.target.checked))})}function dB(e){const{label:t="Strength",styleClass:n}=e,r=Me(a=>a.options.img2imgStrength),i=Xe();return w(no,{label:t,step:.01,min:.01,max:.99,onChange:a=>i(kH(a)),value:r,width:"100%",isInteger:!1,styleClass:n})}const fB=()=>w(id,{flex:"1",textAlign:"left",children:"Other Options"}),Yve=()=>{const e=Xe(),t=Me(r=>r.options.hiresFix);return w(Dn,{gap:2,direction:"column",children:w(wl,{label:"High Res Optimization",fontSize:"md",isChecked:t,onChange:r=>e(_H(r.target.checked))})})},Xve=()=>{const e=Xe(),t=Me(r=>r.options.seamless);return w(Dn,{gap:2,direction:"column",children:w(wl,{label:"Seamless tiling",fontSize:"md",isChecked:t,onChange:r=>e(CH(r.target.checked))})})},hB=()=>ne(Dn,{gap:2,direction:"column",children:[w(Xve,{}),w(Yve,{})]}),D7=()=>w(id,{flex:"1",textAlign:"left",children:"Seed"});function Qve(){const e=Xe(),t=Me(r=>r.options.shouldRandomizeSeed);return w(wl,{label:"Randomize Seed",isChecked:t,onChange:r=>e($6e(r.target.checked))})}function Jve(){const e=Me(o=>o.options.seed),t=Me(o=>o.options.shouldRandomizeSeed),n=Me(o=>o.options.shouldGenerateVariations),r=Xe(),i=o=>r(Ov(o));return w(no,{label:"Seed",step:1,precision:0,flexGrow:1,min:O7,max:N7,isDisabled:t,isInvalid:e<0&&n,onChange:i,value:e,width:"10rem"})}const pB=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function e2e(){const e=Xe(),t=Me(r=>r.options.shouldRandomizeSeed);return w(Oa,{size:"sm",isDisabled:t,onClick:()=>e(Ov(pB(O7,N7))),children:w("p",{children:"Shuffle"})})}function t2e(){const e=Xe(),t=Me(r=>r.options.threshold);return w(no,{label:"Threshold",min:0,max:1e3,step:.1,onChange:r=>e(R6e(r)),value:t,isInteger:!1})}function n2e(){const e=Xe(),t=Me(r=>r.options.perlin);return w(no,{label:"Perlin Noise",min:0,max:1,step:.05,onChange:r=>e(O6e(r)),value:t,isInteger:!1})}const z7=()=>ne(Dn,{gap:2,direction:"column",children:[w(Qve,{}),ne(Dn,{gap:2,children:[w(Jve,{}),w(e2e,{})]}),w(Dn,{gap:2,children:w(t2e,{})}),w(Dn,{gap:2,children:w(n2e,{})})]});function F7(){const e=Me(i=>i.system.isESRGANAvailable),t=Me(i=>i.options.shouldRunESRGAN),n=Xe();return ne(Dn,{justifyContent:"space-between",alignItems:"center",width:"100%",mr:2,children:[w("p",{children:"Upscale"}),w(wl,{isDisabled:!e,isChecked:t,onChange:i=>n(B6e(i.target.checked))})]})}const r2e=St(e=>e.options,e=>({upscalingLevel:e.upscalingLevel,upscalingStrength:e.upscalingStrength}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),i2e=St(e=>e.system,e=>({isESRGANAvailable:e.isESRGANAvailable}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),hx=()=>{const e=Xe(),{upscalingLevel:t,upscalingStrength:n}=Me(r2e),{isESRGANAvailable:r}=Me(i2e);return ne("div",{className:"upscale-options",children:[w(F0,{isDisabled:!r,label:"Scale",value:t,onChange:a=>e(A8(Number(a.target.value))),validValues:Uve}),w(no,{isDisabled:!r,label:"Strength",step:.05,min:0,max:1,onChange:a=>e(I8(a)),value:n,isInteger:!1})]})};function o2e(){const e=Me(r=>r.options.shouldGenerateVariations),t=Xe();return w(wl,{isChecked:e,width:"auto",onChange:r=>t(N6e(r.target.checked))})}function B7(){return ne(Dn,{justifyContent:"space-between",alignItems:"center",width:"100%",mr:2,children:[w("p",{children:"Variations"}),w(o2e,{})]})}function a2e(e){const{label:t,styleClass:n,isDisabled:r=!1,fontSize:i="1rem",width:o,isInvalid:a,...s}=e;return ne(rd,{className:`input ${n}`,isInvalid:a,isDisabled:r,flexGrow:1,children:[w(Yf,{fontSize:i,marginBottom:1,whiteSpace:"nowrap",className:"input-label",children:t}),w(DC,{...s,className:"input-entry",size:"sm",width:o})]})}function s2e(){const e=Me(i=>i.options.seedWeights),t=Me(i=>i.options.shouldGenerateVariations),n=Xe(),r=i=>n(TH(i.target.value));return w(a2e,{label:"Seed Weights",value:e,isInvalid:t&&!(I7(e)||e===""),isDisabled:!t,onChange:r})}function l2e(){const e=Me(i=>i.options.variationAmount),t=Me(i=>i.options.shouldGenerateVariations),n=Xe();return w(no,{label:"Variation Amount",value:e,step:.01,min:0,max:1,isDisabled:!t,onChange:i=>n(D6e(i)),isInteger:!1})}const $7=()=>ne(Dn,{gap:2,direction:"column",children:[w(l2e,{}),w(s2e,{})]}),nv=e=>{const{label:t,styleClass:n,...r}=e;return w(SD,{className:`invokeai__checkbox ${n}`,...r,children:t})};function H7(){const e=Me(r=>r.options.showAdvancedOptions),t=Xe();return w(nv,{label:"Advanced Options",styleClass:"advanced-options-checkbox",onChange:r=>t(H6e(r.target.checked)),isChecked:e})}function u2e(){const e=Xe(),t=Me(r=>r.options.cfgScale);return w(no,{label:"CFG Scale",step:.5,min:1.01,max:30,onChange:r=>e(xH(r)),value:t,width:W7,fontSize:B0,styleClass:"main-option-block",textAlign:"center",isInteger:!1})}const Cr=St(e=>e.options,e=>Ex[e.activeTab],{memoizeOptions:{equalityCheck:ht.isEqual}}),c2e=St(e=>e.options,e=>{const{shouldRandomizeSeed:t,shouldGenerateVariations:n}=e;return t||n},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function d2e(){const e=Me(i=>i.options.height),t=Me(Cr),n=Xe();return w(F0,{isDisabled:t==="inpainting",label:"Height",value:e,flexGrow:1,onChange:i=>n(bH(Number(i.target.value))),validValues:Vve,fontSize:B0,styleClass:"main-option-block"})}const f2e=St([e=>e.options,c2e],(e,t)=>{const{iterations:n}=e;return{iterations:n,mayGenerateMultipleImages:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function h2e(){const e=Xe(),{iterations:t,mayGenerateMultipleImages:n}=Me(f2e);return w(no,{label:"Images",step:1,min:1,max:9999,isDisabled:!n,onChange:i=>e(M6e(i)),value:t,width:W7,fontSize:B0,styleClass:"main-option-block",textAlign:"center"})}function p2e(){const e=Me(r=>r.options.sampler),t=Xe();return w(F0,{label:"Sampler",value:e,onChange:r=>t(wH(r.target.value)),validValues:Hve,fontSize:B0,styleClass:"main-option-block"})}function g2e(){const e=Xe(),t=Me(r=>r.options.steps);return w(no,{label:"Steps",min:1,max:9999,step:1,onChange:r=>e(yH(r)),value:t,width:W7,fontSize:B0,styleClass:"main-option-block",textAlign:"center"})}function m2e(){const e=Me(i=>i.options.width),t=Me(Cr),n=Xe();return w(F0,{isDisabled:t==="inpainting",label:"Width",value:e,flexGrow:1,onChange:i=>n(SH(Number(i.target.value))),validValues:Wve,fontSize:B0,styleClass:"main-option-block"})}const B0="0.9rem",W7="auto";function V7(){return w("div",{className:"main-options",children:ne("div",{className:"main-options-list",children:[ne("div",{className:"main-options-row",children:[w(h2e,{}),w(g2e,{}),w(u2e,{})]}),ne("div",{className:"main-options-row",children:[w(m2e,{}),w(d2e,{}),w(p2e,{})]})]})})}const v2e={isConnected:!1,isProcessing:!1,log:[],shouldShowLogViewer:!1,shouldDisplayInProgressType:"latents",shouldDisplayGuides:!0,isGFPGANAvailable:!0,isESRGANAvailable:!0,socketId:"",shouldConfirmOnDelete:!0,openAccordions:[0],currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatus:"Disconnected",currentStatusHasSteps:!1,model:"",model_id:"",model_hash:"",app_id:"",app_version:"",model_list:{},hasError:!1,wasErrorSeen:!0,isCancelable:!0,saveIntermediatesInterval:5},gB=Q5({name:"system",initialState:v2e,reducers:{setShouldDisplayInProgressType:(e,t)=>{e.shouldDisplayInProgressType=t.payload},setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.currentStatus=t.payload},setSystemStatus:(e,t)=>({...e,...t.payload}),errorOccurred:e=>{e.hasError=!0,e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.currentStatus="Error",e.wasErrorSeen=!1},errorSeen:e=>{e.hasError=!1,e.wasErrorSeen=!0,e.currentStatus=e.isConnected?"Connected":"Disconnected"},addLogEntry:(e,t)=>{const{timestamp:n,message:r,level:i}=t.payload,a={timestamp:n,message:r,level:i||"info"};e.log.push(a)},setShouldShowLogViewer:(e,t)=>{e.shouldShowLogViewer=t.payload},setIsConnected:(e,t)=>{e.isConnected=t.payload,e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.hasError=!1},setSocketId:(e,t)=>{e.socketId=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setOpenAccordions:(e,t)=>{e.openAccordions=t.payload},setSystemConfig:(e,t)=>({...e,...t.payload}),setShouldDisplayGuides:(e,t)=>{e.shouldDisplayGuides=t.payload},processingCanceled:e=>{e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.currentStatus="Processing canceled"},setModelList:(e,t)=>{e.model_list=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},modelChangeRequested:e=>{e.currentStatus="Loading Model",e.isCancelable=!1,e.isProcessing=!0,e.currentStatusHasSteps=!1},setSaveIntermediatesInterval:(e,t)=>{e.saveIntermediatesInterval=t.payload}}}),{setShouldDisplayInProgressType:y2e,setIsProcessing:r0,addLogEntry:Si,setShouldShowLogViewer:kS,setIsConnected:zL,setSocketId:MCe,setShouldConfirmOnDelete:mB,setOpenAccordions:x2e,setSystemStatus:b2e,setCurrentStatus:ES,setSystemConfig:S2e,setShouldDisplayGuides:w2e,processingCanceled:C2e,errorOccurred:t8,errorSeen:vB,setModelList:FL,setIsCancelable:BL,modelChangeRequested:_2e,setSaveIntermediatesInterval:k2e}=gB.actions,E2e=gB.reducer;var yB={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},$L=re.createContext&&re.createContext(yB),Vc=globalThis&&globalThis.__assign||function(){return Vc=Object.assign||function(e){for(var t,n=1,r=arguments.length;ne.system,e=>e.shouldDisplayGuides),N2e=({children:e,feature:t})=>{const n=Me(O2e),{text:r}=$ve[t];return n?ne(c7,{trigger:"hover",children:[w(h7,{children:w(id,{children:e})}),ne(f7,{className:"guide-popover-content",maxWidth:"400px",onClick:i=>i.preventDefault(),cursor:"initial",children:[w(d7,{className:"guide-popover-arrow"}),w("div",{className:"guide-popover-guide-content",children:r})]})]}):null},D2e=ke(({feature:e,icon:t=L2e},n)=>w(N2e,{feature:e,children:w(id,{ref:n,children:w(ha,{as:t})})}));function z2e(e){const{header:t,feature:n,options:r}=e;return ne(kf,{className:"advanced-settings-item",children:[w("h2",{children:ne(Cf,{className:"advanced-settings-header",children:[t,w(D2e,{feature:n}),w(_f,{})]})}),w(Ef,{className:"advanced-settings-panel",children:r})]})}const U7=e=>{const{accordionInfo:t}=e,n=Me(a=>a.system.openAccordions),r=Xe();return w(F5,{defaultIndex:n,allowMultiple:!0,reduceMotion:!0,onChange:a=>r(x2e(a)),className:"advanced-settings",children:(()=>{const a=[];return t&&Object.keys(t).forEach(s=>{a.push(w(z2e,{header:t[s].header,feature:t[s].feature,options:t[s].options},s))}),a})()})};function F2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"}}]})(e)}function B2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"}}]})(e)}function $2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 320 512"},child:[{tag:"path",attr:{d:"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"}}]})(e)}function H2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"}}]})(e)}function W2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"}}]})(e)}function V2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"}}]})(e)}function U2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"}}]})(e)}function G2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"}}]})(e)}function SB(e){return ft({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"}}]})(e)}function wB(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"}}]})(e)}function j2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function q2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"}}]})(e)}function K2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"}}]})(e)}function Z2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"}}]})(e)}function Y2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"}}]})(e)}function X2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"}}]})(e)}function Q2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"}}]})(e)}function J2e(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function eye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z"}}]})(e)}function tye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"}}]})(e)}function nye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"}}]})(e)}function rye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"}}]})(e)}function iye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function oye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"}}]})(e)}function aye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"}}]})(e)}function sye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"}}]})(e)}function lye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"}}]})(e)}function uye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"}}]})(e)}function HL(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"}}]})(e)}function cye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z"}}]})(e)}function dye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"}}]})(e)}function fye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"}}]})(e)}function hye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"}}]})(e)}function pye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"}}]})(e)}function CB(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function gye(e){return ft({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"}}]})(e)}function mye(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z"}}]})(e)}function _B(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"}}]})(e)}const kB=St([e=>e.options,e=>e.system,e=>e.inpainting,Cr],(e,t,n,r)=>{const{prompt:i,shouldGenerateVariations:o,seedWeights:a,initialImage:s,seed:l}=e,{isProcessing:c,isConnected:p}=t,{imageToInpaint:g}=n;let m=!0;const y=[];return(!i||Boolean(i.match(/^[\s\r\n]+$/)))&&(m=!1,y.push("Missing prompt")),r==="img2img"&&!s&&(m=!1,y.push("No initial image selected")),r==="inpainting"&&!g&&(m=!1,y.push("No inpainting image selected")),c&&(m=!1,y.push("System Busy")),p||(m=!1,y.push("System Disconnected")),o&&(!(I7(a)||a==="")||l===-1)&&(m=!1,y.push("Seed-Weights badly formatted.")),{isReady:m,reasonsWhyNotReady:y}},{memoizeOptions:{equalityCheck:ht.isEqual,resultEqualityCheck:ht.isEqual}}),n8=Hi("socketio/generateImage"),vye=Hi("socketio/runESRGAN"),yye=Hi("socketio/runFacetool"),xye=Hi("socketio/deleteImage"),r8=Hi("socketio/requestImages"),WL=Hi("socketio/requestNewImages"),bye=Hi("socketio/cancelProcessing"),VL=Hi("socketio/uploadImage");Hi("socketio/uploadMaskImage");const Sye=Hi("socketio/requestSystemConfig"),wye=Hi("socketio/requestModelChange"),_c=ke((e,t)=>{const{children:n,tooltip:r="",tooltipProps:i,styleClass:o,...a}=e;return w($i,{label:r,...i,children:w(Oa,{ref:t,className:["invokeai__button",o].join(" "),...a,children:n})})}),Ut=ke((e,t)=>{const{tooltip:n="",styleClass:r,tooltipProps:i,asCheckbox:o,isChecked:a,...s}=e;return w($i,{label:n,hasArrow:!0,...i,children:w(gu,{ref:t,className:`invokeai__icon-button ${r}`,"data-as-checkbox":o,"data-selected":a!==void 0?a:void 0,style:e.onClick?{cursor:"pointer"}:{},...s})})}),Df=e=>{const{triggerComponent:t,children:n,styleClass:r,hasArrow:i=!0,...o}=e;return ne(c7,{...o,children:[w(h7,{children:t}),ne(f7,{className:`invokeai__popover-content ${r}`,children:[i&&w(d7,{className:"invokeai__popover-arrow"}),n]})]})};function EB(e){const{iconButton:t=!1,...n}=e,r=Xe(),{isReady:i,reasonsWhyNotReady:o}=Me(kB),a=Me(Cr),s=()=>{r(n8(a))};_t("ctrl+enter, cmd+enter",()=>{i&&r(n8(a))},[i,a]);const l=w("div",{style:{flexGrow:4},children:t?w(Ut,{"aria-label":"Invoke",type:"submit",icon:w(rye,{}),isDisabled:!i,onClick:s,className:"invoke-btn invoke",tooltip:"Invoke",tooltipProps:{placement:"bottom"},...n}):w(_c,{"aria-label":"Invoke",type:"submit",isDisabled:!i,onClick:s,className:"invoke-btn",...n,children:"Invoke"})});return i?l:w(Df,{trigger:"hover",triggerComponent:l,children:o&&w(ND,{children:o.map((c,p)=>w(DD,{children:c},p))})})}const Cye=St(e=>e.system,e=>({isProcessing:e.isProcessing,isConnected:e.isConnected,isCancelable:e.isCancelable}),{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function PB(e){const{...t}=e,n=Xe(),{isProcessing:r,isConnected:i,isCancelable:o}=Me(Cye),a=()=>n(bye());return _t("shift+x",()=>{(i||r)&&o&&a()},[i,r,o]),w(Ut,{icon:w(R2e,{}),tooltip:"Cancel","aria-label":"Cancel",isDisabled:!i||!r||!o,onClick:a,styleClass:"cancel-btn",...t})}const _ye=St(e=>e.options,e=>e.shouldLoopback),TB=()=>{const e=Xe(),t=Me(_ye);return w(Ut,{"aria-label":"Toggle Loopback",tooltip:"Toggle Loopback",styleClass:"loopback-btn",asCheckbox:!0,isChecked:t,icon:w(aye,{}),onClick:()=>{e(K6e(!t))}})},G7=()=>ne("div",{className:"process-buttons",children:[w(EB,{}),w(TB,{}),w(PB,{})]}),kye=St([e=>e.options,Cr],(e,t)=>({prompt:e.prompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),j7=()=>{const e=Xe(),{prompt:t,activeTabName:n}=Me(kye),{isReady:r}=Me(kB),i=C.exports.useRef(null),o=s=>{e(Px(s.target.value))};_t("alt+a",()=>{i.current?.focus()},[]);const a=s=>{s.key==="Enter"&&s.shiftKey===!1&&r&&(s.preventDefault(),e(n8(n)))};return w("div",{className:"prompt-bar",children:w(rd,{isInvalid:t.length===0||Boolean(t.match(/^[\s\r\n]+$/)),children:w(IF,{id:"prompt",name:"prompt",placeholder:"I'm dreaming of...",size:"lg",value:t,onChange:o,onKeyDown:a,resize:"vertical",height:30,ref:i})})})};function LB(e){return ft({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146z"}}]})(e)}function AB(e){return ft({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146zm.122 2.112v-.002.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a4.507 4.507 0 0 0-.288-.076 4.922 4.922 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a4.924 4.924 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034.114 0 .23-.011.343-.04L9.927 2.028c-.029.113-.04.23-.04.343a1.779 1.779 0 0 0 .062.46z"}}]})(e)}function Eye(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function Pye(e,t){e.classList?e.classList.add(t):Eye(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function UL(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function Tye(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=UL(e.className,t):e.setAttribute("class",UL(e.className&&e.className.baseVal||"",t))}const GL={disabled:!1},IB=re.createContext(null);var MB=function(t){return t.scrollTop},Ag="unmounted",uf="exited",cf="entering",xp="entered",i8="exiting",Cu=function(e){XC(t,e);function t(r,i){var o;o=e.call(this,r,i)||this;var a=i,s=a&&!a.isMounting?r.enter:r.appear,l;return o.appearStatus=null,r.in?s?(l=uf,o.appearStatus=cf):l=xp:r.unmountOnExit||r.mountOnEnter?l=Ag:l=uf,o.state={status:l},o.nextCallback=null,o}t.getDerivedStateFromProps=function(i,o){var a=i.in;return a&&o.status===Ag?{status:uf}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var o=null;if(i!==this.props){var a=this.state.status;this.props.in?a!==cf&&a!==xp&&(o=cf):(a===cf||a===xp)&&(o=i8)}this.updateStatus(!1,o)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,o,a,s;return o=a=s=i,i!=null&&typeof i!="number"&&(o=i.exit,a=i.enter,s=i.appear!==void 0?i.appear:a),{exit:o,enter:a,appear:s}},n.updateStatus=function(i,o){if(i===void 0&&(i=!1),o!==null)if(this.cancelNextCallback(),o===cf){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:$2.findDOMNode(this);a&&MB(a)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===uf&&this.setState({status:Ag})},n.performEnter=function(i){var o=this,a=this.props.enter,s=this.context?this.context.isMounting:i,l=this.props.nodeRef?[s]:[$2.findDOMNode(this),s],c=l[0],p=l[1],g=this.getTimeouts(),m=s?g.appear:g.enter;if(!i&&!a||GL.disabled){this.safeSetState({status:xp},function(){o.props.onEntered(c)});return}this.props.onEnter(c,p),this.safeSetState({status:cf},function(){o.props.onEntering(c,p),o.onTransitionEnd(m,function(){o.safeSetState({status:xp},function(){o.props.onEntered(c,p)})})})},n.performExit=function(){var i=this,o=this.props.exit,a=this.getTimeouts(),s=this.props.nodeRef?void 0:$2.findDOMNode(this);if(!o||GL.disabled){this.safeSetState({status:uf},function(){i.props.onExited(s)});return}this.props.onExit(s),this.safeSetState({status:i8},function(){i.props.onExiting(s),i.onTransitionEnd(a.exit,function(){i.safeSetState({status:uf},function(){i.props.onExited(s)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,o){o=this.setNextCallback(o),this.setState(i,o)},n.setNextCallback=function(i){var o=this,a=!0;return this.nextCallback=function(s){a&&(a=!1,o.nextCallback=null,i(s))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(i,o){this.setNextCallback(o);var a=this.props.nodeRef?this.props.nodeRef.current:$2.findDOMNode(this),s=i==null&&!this.props.addEndListener;if(!a||s){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],c=l[0],p=l[1];this.props.addEndListener(c,p)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===Ag)return null;var o=this.props,a=o.children;o.in,o.mountOnEnter,o.unmountOnExit,o.appear,o.enter,o.exit,o.timeout,o.addEndListener,o.onEnter,o.onEntering,o.onEntered,o.onExit,o.onExiting,o.onExited,o.nodeRef;var s=KC(o,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return w(IB.Provider,{value:null,children:typeof a=="function"?a(i,s):re.cloneElement(re.Children.only(a),s)})},t}(re.Component);Cu.contextType=IB;Cu.propTypes={};function hp(){}Cu.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:hp,onEntering:hp,onEntered:hp,onExit:hp,onExiting:hp,onExited:hp};Cu.UNMOUNTED=Ag;Cu.EXITED=uf;Cu.ENTERING=cf;Cu.ENTERED=xp;Cu.EXITING=i8;const Lye=Cu;var Aye=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return Pye(t,r)})},PS=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return Tye(t,r)})},q7=function(e){XC(t,e);function t(){for(var r,i=arguments.length,o=new Array(i),a=0;a{C.exports.useEffect(()=>{function r(i){e.current&&!e.current.contains(i.target)&&t()}return n&&document.addEventListener("mousedown",r),()=>{n&&document.removeEventListener("mousedown",r)}},[e,n,t])},rl=(e,t)=>Math.floor(e/t)*t,jL=(e,t)=>Math.round(e/t)*t,Iye={tool:"brush",brushSize:50,maskColor:{r:255,g:90,b:90,a:.5},canvasDimensions:{width:0,height:0},boundingBoxDimensions:{width:512,height:512},boundingBoxCoordinate:{x:0,y:0},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},shouldShowBoundingBox:!0,shouldShowBoundingBoxFill:!0,cursorPosition:null,lines:[],pastLines:[],futureLines:[],shouldShowMask:!0,shouldInvertMask:!1,shouldShowCheckboardTransparency:!1,shouldShowBrush:!0,shouldShowBrushPreview:!1,needsCache:!1,isDrawing:!1,isTransformingBoundingBox:!1,isMouseOverBoundingBox:!1,isMovingBoundingBox:!1,stageScale:1,shouldUseInpaintReplace:!1,inpaintReplace:.1,shouldLockBoundingBox:!0,isSpacebarHeld:!1},Mye=Iye,NB=Q5({name:"inpainting",initialState:Mye,reducers:{setTool:(e,t)=>{e.tool=t.payload},toggleTool:e=>{e.tool=e.tool==="brush"?"eraser":"brush"},setBrushSize:(e,t)=>{e.brushSize=t.payload},addLine:(e,t)=>{e.pastLines.push(e.lines),e.lines.push(t.payload),e.futureLines=[]},addPointToCurrentLine:(e,t)=>{e.lines[e.lines.length-1].points.push(...t.payload)},undo:e=>{if(e.pastLines.length===0)return;const t=e.pastLines.pop();!t||(e.futureLines.unshift(e.lines),e.lines=t)},redo:e=>{if(e.futureLines.length===0)return;const t=e.futureLines.shift();!t||(e.pastLines.push(e.lines),e.lines=t)},clearMask:e=>{e.pastLines.push(e.lines),e.lines=[],e.futureLines=[],e.shouldInvertMask=!1},toggleShouldInvertMask:e=>{e.shouldInvertMask=!e.shouldInvertMask},toggleShouldShowMask:e=>{e.shouldShowMask=!e.shouldShowMask},setShouldInvertMask:(e,t)=>{e.shouldInvertMask=t.payload},setShouldShowMask:(e,t)=>{e.shouldShowMask=t.payload,t.payload||(e.shouldInvertMask=!1)},setShouldShowCheckboardTransparency:(e,t)=>{e.shouldShowCheckboardTransparency=t.payload},setShouldShowBrushPreview:(e,t)=>{e.shouldShowBrushPreview=t.payload},setShouldShowBrush:(e,t)=>{e.shouldShowBrush=t.payload},setMaskColor:(e,t)=>{e.maskColor=t.payload},setCursorPosition:(e,t)=>{e.cursorPosition=t.payload},clearImageToInpaint:e=>{e.imageToInpaint=void 0},setImageToInpaint:(e,t)=>{const{width:n,height:r}=t.payload,{width:i,height:o}=e.boundingBoxDimensions,{x:a,y:s}=e.boundingBoxCoordinate,l={x:a,y:s},c={width:i,height:o};i+a>n&&(i>n&&(c.width=rl(n,64)),l.x=n-c.width),o+s>r&&(o>r&&(c.height=rl(r,64)),l.y=r-c.height),e.boundingBoxDimensions=c,e.boundingBoxCoordinate=l,e.canvasDimensions={width:n,height:r},e.imageToInpaint=t.payload,e.needsCache=!0},setCanvasDimensions:(e,t)=>{e.canvasDimensions=t.payload;const{width:n,height:r}=t.payload,{width:i,height:o}=e.boundingBoxDimensions,a=rl(ht.clamp(i,64,n),64),s=rl(ht.clamp(o,64,r),64);e.boundingBoxDimensions={width:a,height:s}},setBoundingBoxDimensions:(e,t)=>{e.boundingBoxDimensions=t.payload;const{width:n,height:r}=t.payload,{x:i,y:o}=e.boundingBoxCoordinate,{width:a,height:s}=e.canvasDimensions,l=rl(a,64),c=rl(s,64),p=rl(n,64),g=rl(r,64),m=i+n-a,y=o+r-s,b=ht.clamp(p,64,l),S=ht.clamp(g,64,c),T=m>0?i-m:i,E=y>0?o-y:o,k=ht.clamp(T,0,l-b),L=ht.clamp(E,0,c-S);e.boundingBoxDimensions={width:b,height:S},e.boundingBoxCoordinate={x:k,y:L}},setBoundingBoxCoordinate:(e,t)=>{e.boundingBoxCoordinate=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setNeedsCache:(e,t)=>{e.needsCache=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload,e.needsCache=!1},setShouldShowBoundingBoxFill:(e,t)=>{e.shouldShowBoundingBoxFill=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},setClearBrushHistory:e=>{e.pastLines=[],e.futureLines=[]},setShouldUseInpaintReplace:(e,t)=>{e.shouldUseInpaintReplace=t.payload},setInpaintReplace:(e,t)=>{e.inpaintReplace=t.payload},setShouldLockBoundingBox:(e,t)=>{e.shouldLockBoundingBox=t.payload},toggleShouldLockBoundingBox:e=>{e.shouldLockBoundingBox=!e.shouldLockBoundingBox},setShouldShowBoundingBox:(e,t)=>{e.shouldShowBoundingBox=t.payload},setIsTransformingBoundingBox:(e,t)=>{e.isTransformingBoundingBox=t.payload},setIsMovingBoundingBox:(e,t)=>{e.isMovingBoundingBox=t.payload},setIsMouseOverBoundingBox:(e,t)=>{e.isMouseOverBoundingBox=t.payload},setIsSpacebarHeld:(e,t)=>{e.isSpacebarHeld=t.payload}}}),{setTool:DB,setBrushSize:Rye,addLine:qL,addPointToCurrentLine:KL,setShouldInvertMask:Oye,setShouldShowMask:Nye,setShouldShowCheckboardTransparency:RCe,setShouldShowBrushPreview:TS,setMaskColor:Dye,clearMask:zye,clearImageToInpaint:zB,undo:Fye,redo:Bye,setCursorPosition:ZL,setCanvasDimensions:OCe,setImageToInpaint:A4,setBoundingBoxDimensions:Ig,setBoundingBoxCoordinate:YL,setBoundingBoxPreviewFill:NCe,setNeedsCache:su,setStageScale:$ye,toggleTool:Hye,setShouldShowBoundingBox:FB,setShouldShowBoundingBoxFill:Wye,setIsDrawing:ly,setShouldShowBrush:DCe,setClearBrushHistory:Vye,setShouldUseInpaintReplace:Uye,setInpaintReplace:Gye,setShouldLockBoundingBox:K7,toggleShouldLockBoundingBox:jye,setIsMovingBoundingBox:XL,setIsTransformingBoundingBox:LS,setIsMouseOverBoundingBox:pp,setIsSpacebarHeld:qye}=NB.actions,Kye=NB.reducer,BB=""+new URL("logo.13003d72.png",import.meta.url).href,Zye=St(e=>e.options,e=>{const{shouldShowOptionsPanel:t,shouldHoldOptionsPanelOpen:n,shouldPinOptionsPanel:r,optionsPanelScrollPosition:i}=e;return{shouldShowOptionsPanel:t,shouldHoldOptionsPanelOpen:n,shouldPinOptionsPanel:r,optionsPanelScrollPosition:i}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),Z7=e=>{const t=Xe(),{shouldShowOptionsPanel:n,shouldHoldOptionsPanelOpen:r,shouldPinOptionsPanel:i}=Me(Zye),o=C.exports.useRef(null),a=C.exports.useRef(null),s=C.exports.useRef(null),{children:l}=e;_t("o",()=>{t(x3(!n))},[n]),_t("esc",()=>{i||t(x3(!1))},[i]),_t("shift+o",()=>{m()},[i]);const c=C.exports.useCallback(()=>{i||(t(j6e(a.current?a.current.scrollTop:0)),t(x3(!1)),t(q6e(!1)))},[t,i]);OB(o,c,!i);const p=()=>{s.current=window.setTimeout(()=>c(),500)},g=()=>{s.current&&window.clearTimeout(s.current)},m=()=>{t(G6e(!i)),t(su(!0))};return w(RB,{nodeRef:o,in:n||r&&!i,unmountOnExit:!0,timeout:200,classNames:"options-panel-wrapper",children:w("div",{className:"options-panel-wrapper","data-pinned":i,tabIndex:1,ref:o,onMouseEnter:i?void 0:g,onMouseOver:i?void 0:g,children:w("div",{className:"options-panel-margin",children:ne("div",{className:"options-panel",ref:a,onMouseLeave:y=>{y.target!==a.current?g():!i&&p()},children:[w($i,{label:"Pin Options Panel",children:w("div",{className:"options-panel-pin-button","data-selected":i,onClick:m,children:i?w(LB,{}):w(AB,{})})}),!i&&ne("div",{className:"invoke-ai-logo-wrapper",children:[w("img",{src:BB,alt:"invoke-ai-logo"}),ne("h1",{children:["invoke ",w("strong",{children:"ai"})]})]}),l]})})})})};function Yye(){const e=Me(n=>n.options.showAdvancedOptions),t={seed:{header:w(D7,{}),feature:Ji.SEED,options:w(z7,{})},variations:{header:w(B7,{}),feature:Ji.VARIATIONS,options:w($7,{})},face_restore:{header:w(R7,{}),feature:Ji.FACE_CORRECTION,options:w(fx,{})},upscale:{header:w(F7,{}),feature:Ji.UPSCALE,options:w(hx,{})},other:{header:w(fB,{}),feature:Ji.OTHER,options:w(hB,{})}};return ne(Z7,{children:[w(j7,{}),w(G7,{}),w(V7,{}),w(dB,{label:"Image To Image Strength",styleClass:"main-option-block image-to-image-strength-main-option"}),w(Zve,{}),w(H7,{}),e?w(U7,{accordionInfo:t}):null]})}const Y7=C.exports.createContext(null),$B=e=>{const{styleClass:t}=e,n=C.exports.useContext(Y7),r=()=>{n&&n()};return w("div",{className:`image-uploader-button-outer ${t}`,onClick:r,children:ne("div",{className:"image-upload-button",children:[w(CB,{}),w(Rf,{size:"lg",children:"Click or Drag and Drop"})]})})},Xye=St(e=>e.system,e=>{const{shouldConfirmOnDelete:t,isConnected:n,isProcessing:r}=e;return{shouldConfirmOnDelete:t,isConnected:n,isProcessing:r}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),o8=C.exports.forwardRef(({image:e,children:t},n)=>{const{isOpen:r,onOpen:i,onClose:o}=m4(),a=Xe(),{shouldConfirmOnDelete:s,isConnected:l,isProcessing:c}=Me(Xye),p=C.exports.useRef(null),g=b=>{b.stopPropagation(),s?i():m()},m=()=>{l&&!c&&e&&a(xye(e)),o()};_t("del",()=>{s?i():m()},[e,s]);const y=b=>a(mB(!b.target.checked));return ne(Fn,{children:[C.exports.cloneElement(t,{onClick:e?g:void 0,ref:n}),w(h0e,{isOpen:r,leastDestructiveRef:p,onClose:o,children:w(Xm,{children:ne(p0e,{children:[w(l7,{fontSize:"lg",fontWeight:"bold",children:"Delete image"}),w(b4,{children:ne(Dn,{direction:"column",gap:5,children:[w(wo,{children:"Are you sure? You can't undo this action afterwards."}),w(rd,{children:ne(Dn,{alignItems:"center",children:[w(Yf,{mb:0,children:"Don't ask me again"}),w(m7,{checked:!s,onChange:y})]})})]})}),ne(s7,{children:[w(Oa,{ref:p,onClick:o,children:"Cancel"}),w(Oa,{colorScheme:"red",onClick:m,ml:3,children:"Delete"})]})]})})})]})}),Qye=St([e=>e.system,e=>e.options,e=>e.gallery,Cr],(e,t,n,r)=>{const{isProcessing:i,isConnected:o,isGFPGANAvailable:a,isESRGANAvailable:s}=e,{upscalingLevel:l,facetoolStrength:c,shouldShowImageDetails:p}=t,{intermediateImage:g,currentImage:m}=n;return{isProcessing:i,isConnected:o,isGFPGANAvailable:a,isESRGANAvailable:s,upscalingLevel:l,facetoolStrength:c,shouldDisableToolbarButtons:Boolean(g)||!m,currentImage:m,shouldShowImageDetails:p,activeTabName:r}},{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),Jye=()=>{const e=Xe(),{isProcessing:t,isConnected:n,isGFPGANAvailable:r,isESRGANAvailable:i,upscalingLevel:o,facetoolStrength:a,shouldDisableToolbarButtons:s,shouldShowImageDetails:l,currentImage:c}=Me(Qye),{onCopy:p}=Qce(c?window.location.toString()+c.url:""),g=ld(),m=()=>{!c||(e(ov(c)),e(Ea("img2img")))},y=()=>{p(),g({title:"Image Link Copied",status:"success",duration:2500,isClosable:!0})};_t("shift+i",()=>{c?(m(),g({title:"Sent To Image To Image",status:"success",duration:2500,isClosable:!0})):g({title:"No Image Loaded",description:"No image found to send to image to image module.",status:"error",duration:2500,isClosable:!0})},[c]);const b=()=>{!c||c.metadata&&e(z6e(c.metadata))};_t("a",()=>{["txt2img","img2img"].includes(c?.metadata?.image?.type)?(b(),g({title:"Parameters Set",status:"success",duration:2500,isClosable:!0})):g({title:"Parameters Not Set",description:"No metadata found for this image.",status:"error",duration:2500,isClosable:!0})},[c]);const S=()=>{c?.metadata&&e(Ov(c.metadata.image.seed))};_t("s",()=>{c?.metadata?.image?.seed?(S(),g({title:"Seed Set",status:"success",duration:2500,isClosable:!0})):g({title:"Seed Not Set",description:"Could not find seed for this image.",status:"error",duration:2500,isClosable:!0})},[c]);const T=()=>c?.metadata?.image?.prompt&&e(Px(c.metadata.image.prompt));_t("p",()=>{c?.metadata?.image?.prompt?(T(),g({title:"Prompt Set",status:"success",duration:2500,isClosable:!0})):g({title:"Prompt Not Set",description:"Could not find prompt for this image.",status:"error",duration:2500,isClosable:!0})},[c]);const E=()=>{c&&e(vye(c))};_t("u",()=>{i&&!s&&n&&!t&&o?E():g({title:"Upscaling Failed",status:"error",duration:2500,isClosable:!0})},[c,i,s,n,t,o]);const k=()=>{c&&e(yye(c))};_t("r",()=>{r&&!s&&n&&!t&&a?k():g({title:"Face Restoration Failed",status:"error",duration:2500,isClosable:!0})},[c,r,s,n,t,a]);const L=()=>e(LH(!l)),I=()=>{!c||(e(A4(c)),e(Ea("inpainting")),e(su(!0)),g({title:"Sent to Inpainting",status:"success",duration:2500,isClosable:!0}))};return _t("i",()=>{c?L():g({title:"Failed to load metadata",status:"error",duration:2500,isClosable:!0})},[c,l]),ne("div",{className:"current-image-options",children:[w(au,{isAttached:!0,children:w(Df,{trigger:"hover",triggerComponent:w(Ut,{"aria-label":"Send to...",icon:w(uye,{})}),children:ne("div",{className:"current-image-send-to-popover",children:[w(_c,{size:"sm",onClick:m,leftIcon:w(HL,{}),children:"Send to Image to Image"}),w(_c,{size:"sm",onClick:I,leftIcon:w(HL,{}),children:"Send to Inpainting"}),w(_c,{size:"sm",onClick:y,leftIcon:w(wB,{}),children:"Copy Link to Image"}),w(_c,{leftIcon:w(j2e,{}),size:"sm",children:w(Of,{download:!0,href:c?.url,children:"Download Image"})})]})})}),ne(au,{isAttached:!0,children:[w(Ut,{icon:w(oye,{}),tooltip:"Use Prompt","aria-label":"Use Prompt",isDisabled:!c?.metadata?.image?.prompt,onClick:T}),w(Ut,{icon:w(lye,{}),tooltip:"Use Seed","aria-label":"Use Seed",isDisabled:!c?.metadata?.image?.seed,onClick:S}),w(Ut,{icon:w(V2e,{}),tooltip:"Use All","aria-label":"Use All",isDisabled:!["txt2img","img2img"].includes(c?.metadata?.image?.type),onClick:b})]}),ne(au,{isAttached:!0,children:[w(Df,{trigger:"hover",triggerComponent:w(Ut,{icon:w(Z2e,{}),"aria-label":"Restore Faces"}),children:ne("div",{className:"current-image-postprocessing-popover",children:[w(fx,{}),w(_c,{isDisabled:!r||!c||!(n&&!t)||!a,onClick:k,children:"Restore Faces"})]})}),w(Df,{trigger:"hover",triggerComponent:w(Ut,{icon:w(K2e,{}),"aria-label":"Upscale"}),children:ne("div",{className:"current-image-postprocessing-popover",children:[w(hx,{}),w(_c,{isDisabled:!i||!c||!(n&&!t)||!o,onClick:E,children:"Upscale Image"})]})})]}),w(Ut,{icon:w(SB,{}),tooltip:"Details","aria-label":"Details","data-selected":l,onClick:L}),w(o8,{image:c,children:w(Ut,{icon:w(fye,{}),tooltip:"Delete Image","aria-label":"Delete Image",isDisabled:!c||!n||t,className:"delete-image-btn"})})]})},e3e={currentImageUuid:"",shouldPinGallery:!0,shouldShowGallery:!0,galleryScrollPosition:0,galleryImageMinimumWidth:64,galleryImageObjectFit:"cover",shouldHoldGalleryOpen:!1,shouldAutoSwitchToNewImages:!0,currentCategory:"result",categories:{user:{images:[],latest_mtime:void 0,earliest_mtime:void 0,areMoreImagesAvailable:!0},result:{images:[],latest_mtime:void 0,earliest_mtime:void 0,areMoreImagesAvailable:!0}},galleryWidth:300},HB=Q5({name:"gallery",initialState:e3e,reducers:{setCurrentImage:(e,t)=>{e.currentImage=t.payload,e.currentImageUuid=t.payload.uuid},removeImage:(e,t)=>{const{uuid:n,category:r}=t.payload,i=e.categories[r].images,o=i.filter(a=>a.uuid!==n);if(n===e.currentImageUuid){const a=i.findIndex(l=>l.uuid===n),s=la.exports.clamp(a,0,o.length-1);e.currentImage=o.length?o[s]:void 0,e.currentImageUuid=o.length?o[s].uuid:""}e.categories[r].images=o},addImage:(e,t)=>{const{image:n,category:r}=t.payload,{uuid:i,url:o,mtime:a}=n,s=e.categories[r];s.images.find(l=>l.url===o&&l.mtime===a)||(s.images.unshift(n),e.shouldAutoSwitchToNewImages&&(e.currentImageUuid=i,e.currentImage=n,e.currentCategory=r),e.intermediateImage=void 0,s.latest_mtime=a)},setIntermediateImage:(e,t)=>{e.intermediateImage=t.payload},clearIntermediateImage:e=>{e.intermediateImage=void 0},selectNextImage:e=>{const{currentImage:t}=e;if(!t)return;const n=e.categories[t.category].images;if(t){const r=n.findIndex(i=>i.uuid===t.uuid);if(ht.inRange(r,0,n.length)){const i=n[r+1];e.currentImage=i,e.currentImageUuid=i.uuid}}},selectPrevImage:e=>{const{currentImage:t}=e;if(!t)return;const n=e.categories[t.category].images;if(t){const r=n.findIndex(i=>i.uuid===t.uuid);if(ht.inRange(r,1,n.length+1)){const i=n[r-1];e.currentImage=i,e.currentImageUuid=i.uuid}}},addGalleryImages:(e,t)=>{const{images:n,areMoreImagesAvailable:r,category:i}=t.payload,o=e.categories[i].images;if(n.length>0){const a=n.filter(s=>!o.find(l=>l.url===s.url&&l.mtime===s.mtime));if(e.categories[i].images=o.concat(a).sort((s,l)=>l.mtime-s.mtime),!e.currentImage){const s=n[0];e.currentImage=s,e.currentImageUuid=s.uuid}e.categories[i].latest_mtime=n[0].mtime,e.categories[i].earliest_mtime=n[n.length-1].mtime}r!==void 0&&(e.categories[i].areMoreImagesAvailable=r)},setShouldPinGallery:(e,t)=>{e.shouldPinGallery=t.payload},setShouldShowGallery:(e,t)=>{e.shouldShowGallery=t.payload},setGalleryScrollPosition:(e,t)=>{e.galleryScrollPosition=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},setGalleryImageObjectFit:(e,t)=>{e.galleryImageObjectFit=t.payload},setShouldHoldGalleryOpen:(e,t)=>{e.shouldHoldGalleryOpen=t.payload},setShouldAutoSwitchToNewImages:(e,t)=>{e.shouldAutoSwitchToNewImages=t.payload},setCurrentCategory:(e,t)=>{e.currentCategory=t.payload},setGalleryWidth:(e,t)=>{e.galleryWidth=t.payload}}}),{addImage:uy,clearIntermediateImage:QL,removeImage:WB,setCurrentImage:VB,addGalleryImages:t3e,setIntermediateImage:n3e,selectNextImage:UB,selectPrevImage:GB,setShouldPinGallery:r3e,setShouldShowGallery:f3,setGalleryScrollPosition:i3e,setGalleryImageMinimumWidth:nf,setGalleryImageObjectFit:o3e,setShouldHoldGalleryOpen:a3e,setShouldAutoSwitchToNewImages:s3e,setCurrentCategory:cy,setGalleryWidth:dy}=HB.actions,l3e=HB.reducer;rt({d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z",displayName:"CopyIcon"});rt({d:"M23.384,21.619,16.855,15.09a9.284,9.284,0,1,0-1.768,1.768l6.529,6.529a1.266,1.266,0,0,0,1.768,0A1.251,1.251,0,0,0,23.384,21.619ZM2.75,9.5a6.75,6.75,0,1,1,6.75,6.75A6.758,6.758,0,0,1,2.75,9.5Z",displayName:"SearchIcon"});rt({d:"M23.414,20.591l-4.645-4.645a10.256,10.256,0,1,0-2.828,2.829l4.645,4.644a2.025,2.025,0,0,0,2.828,0A2,2,0,0,0,23.414,20.591ZM10.25,3.005A7.25,7.25,0,1,1,3,10.255,7.258,7.258,0,0,1,10.25,3.005Z",displayName:"Search2Icon"});rt({d:"M21.4,13.7C20.6,13.9,19.8,14,19,14c-5,0-9-4-9-9c0-0.8,0.1-1.6,0.3-2.4c0.1-0.3,0-0.7-0.3-1 c-0.3-0.3-0.6-0.4-1-0.3C4.3,2.7,1,7.1,1,12c0,6.1,4.9,11,11,11c4.9,0,9.3-3.3,10.6-8.1c0.1-0.3,0-0.7-0.3-1 C22.1,13.7,21.7,13.6,21.4,13.7z",displayName:"MoonIcon"});rt({displayName:"SunIcon",path:ne("g",{strokeLinejoin:"round",strokeLinecap:"round",strokeWidth:"2",fill:"none",stroke:"currentColor",children:[w("circle",{cx:"12",cy:"12",r:"5"}),w("path",{d:"M12 1v2"}),w("path",{d:"M12 21v2"}),w("path",{d:"M4.22 4.22l1.42 1.42"}),w("path",{d:"M18.36 18.36l1.42 1.42"}),w("path",{d:"M1 12h2"}),w("path",{d:"M21 12h2"}),w("path",{d:"M4.22 19.78l1.42-1.42"}),w("path",{d:"M18.36 5.64l1.42-1.42"})]})});rt({d:"M0,12a1.5,1.5,0,0,0,1.5,1.5h8.75a.25.25,0,0,1,.25.25V22.5a1.5,1.5,0,0,0,3,0V13.75a.25.25,0,0,1,.25-.25H22.5a1.5,1.5,0,0,0,0-3H13.75a.25.25,0,0,1-.25-.25V1.5a1.5,1.5,0,0,0-3,0v8.75a.25.25,0,0,1-.25.25H1.5A1.5,1.5,0,0,0,0,12Z",displayName:"AddIcon"});rt({displayName:"SmallAddIcon",viewBox:"0 0 20 20",path:w("path",{fill:"currentColor",d:"M14 9h-3V6c0-.55-.45-1-1-1s-1 .45-1 1v3H6c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1z",fillRule:"evenodd"})});rt({viewBox:"0 0 14 14",d:"M14,7.77 L14,6.17 L12.06,5.53 L11.61,4.44 L12.49,2.6 L11.36,1.47 L9.55,2.38 L8.46,1.93 L7.77,0.01 L6.17,0.01 L5.54,1.95 L4.43,2.4 L2.59,1.52 L1.46,2.65 L2.37,4.46 L1.92,5.55 L0,6.23 L0,7.82 L1.94,8.46 L2.39,9.55 L1.51,11.39 L2.64,12.52 L4.45,11.61 L5.54,12.06 L6.23,13.98 L7.82,13.98 L8.45,12.04 L9.56,11.59 L11.4,12.47 L12.53,11.34 L11.61,9.53 L12.08,8.44 L14,7.75 L14,7.77 Z M7,10 C5.34,10 4,8.66 4,7 C4,5.34 5.34,4 7,4 C8.66,4 10,5.34 10,7 C10,8.66 8.66,10 7,10 Z",displayName:"SettingsIcon"});rt({displayName:"CheckCircleIcon",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"});rt({d:"M19.5,9.5h-.75V6.75a6.75,6.75,0,0,0-13.5,0V9.5H4.5a2,2,0,0,0-2,2V22a2,2,0,0,0,2,2h15a2,2,0,0,0,2-2V11.5A2,2,0,0,0,19.5,9.5Zm-9.5,6a2,2,0,1,1,3,1.723V19.5a1,1,0,0,1-2,0V17.223A1.994,1.994,0,0,1,10,15.5ZM7.75,6.75a4.25,4.25,0,0,1,8.5,0V9a.5.5,0,0,1-.5.5H8.25a.5.5,0,0,1-.5-.5Z",displayName:"LockIcon"});rt({d:"M19.5,9.5h-.75V6.75A6.751,6.751,0,0,0,5.533,4.811a1.25,1.25,0,1,0,2.395.717A4.251,4.251,0,0,1,16.25,6.75V9a.5.5,0,0,1-.5.5H4.5a2,2,0,0,0-2,2V22a2,2,0,0,0,2,2h15a2,2,0,0,0,2-2V11.5A2,2,0,0,0,19.5,9.5Zm-9.5,6a2,2,0,1,1,3,1.723V19.5a1,1,0,0,1-2,0V17.223A1.994,1.994,0,0,1,10,15.5Z",displayName:"UnlockIcon"});rt({displayName:"ViewIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M23.432,10.524C20.787,7.614,16.4,4.538,12,4.6,7.6,4.537,3.213,7.615.568,10.524a2.211,2.211,0,0,0,0,2.948C3.182,16.351,7.507,19.4,11.839,19.4h.308c4.347,0,8.671-3.049,11.288-5.929A2.21,2.21,0,0,0,23.432,10.524ZM7.4,12A4.6,4.6,0,1,1,12,16.6,4.6,4.6,0,0,1,7.4,12Z"}),w("circle",{cx:"12",cy:"12",r:"2"})]})});rt({displayName:"ViewOffIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M23.2,10.549a20.954,20.954,0,0,0-4.3-3.6l4-3.995a1,1,0,1,0-1.414-1.414l-.018.018a.737.737,0,0,1-.173.291l-19.5,19.5c-.008.007-.018.009-.026.017a1,1,0,0,0,1.631,1.088l4.146-4.146a11.26,11.26,0,0,0,4.31.939h.3c4.256,0,8.489-2.984,11.051-5.8A2.171,2.171,0,0,0,23.2,10.549ZM16.313,13.27a4.581,4.581,0,0,1-3,3.028,4.3,4.3,0,0,1-3.1-.19.253.253,0,0,1-.068-.407l5.56-5.559a.252.252,0,0,1,.407.067A4.3,4.3,0,0,1,16.313,13.27Z"}),w("path",{d:"M7.615,13.4a.244.244,0,0,0,.061-.24A4.315,4.315,0,0,1,7.5,12,4.5,4.5,0,0,1,12,7.5a4.276,4.276,0,0,1,1.16.173.244.244,0,0,0,.24-.062l1.941-1.942a.254.254,0,0,0-.1-.421A10.413,10.413,0,0,0,12,4.75C7.7,4.692,3.4,7.7.813,10.549a2.15,2.15,0,0,0-.007,2.9,21.209,21.209,0,0,0,3.438,3.03.256.256,0,0,0,.326-.029Z"})]})});rt({d:"M11.2857,6.05714 L10.08571,4.85714 L7.85714,7.14786 L7.85714,1 L6.14286,1 L6.14286,7.14786 L3.91429,4.85714 L2.71429,6.05714 L7,10.42857 L11.2857,6.05714 Z M1,11.2857 L1,13 L13,13 L13,11.2857 L1,11.2857 Z",displayName:"DownloadIcon",viewBox:"0 0 14 14"});rt({displayName:"DeleteIcon",path:w("g",{fill:"currentColor",children:w("path",{d:"M19.452 7.5H4.547a.5.5 0 00-.5.545l1.287 14.136A2 2 0 007.326 24h9.347a2 2 0 001.992-1.819L19.95 8.045a.5.5 0 00-.129-.382.5.5 0 00-.369-.163zm-9.2 13a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zm5 0a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zM22 4h-4.75a.25.25 0 01-.25-.25V2.5A2.5 2.5 0 0014.5 0h-5A2.5 2.5 0 007 2.5v1.25a.25.25 0 01-.25.25H2a1 1 0 000 2h20a1 1 0 000-2zM9 3.75V2.5a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v1.25a.25.25 0 01-.25.25h-5.5A.25.25 0 019 3.75z"})})});rt({displayName:"RepeatIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z"}),w("path",{d:"M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z"})]})});rt({displayName:"RepeatClockIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M12.965,6a1,1,0,0,0-1,1v5.5a1,1,0,0,0,1,1h5a1,1,0,0,0,0-2h-3.75a.25.25,0,0,1-.25-.25V7A1,1,0,0,0,12.965,6Z"}),w("path",{d:"M12.567,1.258A10.822,10.822,0,0,0,2.818,8.4a.25.25,0,0,1-.271.163L.858,8.309a.514.514,0,0,0-.485.213.5.5,0,0,0-.021.53l2.679,4.7a.5.5,0,0,0,.786.107l3.77-3.746a.5.5,0,0,0-.279-.85L5.593,9.007a.25.25,0,0,1-.192-.35,8.259,8.259,0,1,1,7.866,11.59,1.25,1.25,0,0,0,.045,2.5h.047a10.751,10.751,0,1,0-.792-21.487Z"})]})});rt({displayName:"EditIcon",path:ne("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[w("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),w("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})});rt({d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z",displayName:"ChevronLeftIcon"});rt({d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z",displayName:"ChevronRightIcon"});rt({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});rt({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"});rt({d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",displayName:"ArrowBackIcon"});rt({d:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z",displayName:"ArrowForwardIcon"});rt({d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z",displayName:"ArrowUpIcon"});rt({viewBox:"0 0 16 16",d:"M11.891 9.992a1 1 0 1 1 1.416 1.415l-4.3 4.3a1 1 0 0 1-1.414 0l-4.3-4.3A1 1 0 0 1 4.71 9.992l3.59 3.591 3.591-3.591zm0-3.984L8.3 2.417 4.709 6.008a1 1 0 0 1-1.416-1.415l4.3-4.3a1 1 0 0 1 1.414 0l4.3 4.3a1 1 0 1 1-1.416 1.415z",displayName:"ArrowUpDownIcon"});rt({d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z",displayName:"ArrowDownIcon"});var jB=rt({displayName:"ExternalLinkIcon",path:ne("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[w("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),w("path",{d:"M15 3h6v6"}),w("path",{d:"M10 14L21 3"})]})});rt({displayName:"LinkIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z"}),w("path",{d:"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z"})]})});rt({displayName:"PlusSquareIcon",path:ne("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[w("rect",{height:"18",width:"18",rx:"2",ry:"2",x:"3",y:"3"}),w("path",{d:"M12 8v8"}),w("path",{d:"M8 12h8"})]})});rt({displayName:"CalendarIcon",viewBox:"0 0 14 14",d:"M10.8889,5.5 L3.11111,5.5 L3.11111,7.05556 L10.8889,7.05556 L10.8889,5.5 Z M12.4444,1.05556 L11.6667,1.05556 L11.6667,0 L10.1111,0 L10.1111,1.05556 L3.88889,1.05556 L3.88889,0 L2.33333,0 L2.33333,1.05556 L1.55556,1.05556 C0.692222,1.05556 0.00777777,1.75556 0.00777777,2.61111 L0,12.5 C0,13.3556 0.692222,14 1.55556,14 L12.4444,14 C13.3,14 14,13.3556 14,12.5 L14,2.61111 C14,1.75556 13.3,1.05556 12.4444,1.05556 Z M12.4444,12.5 L1.55556,12.5 L1.55556,3.94444 L12.4444,3.94444 L12.4444,12.5 Z M8.55556,8.61111 L3.11111,8.61111 L3.11111,10.1667 L8.55556,10.1667 L8.55556,8.61111 Z"});rt({d:"M0.913134,0.920639 C1.49851,0.331726 2.29348,0 3.12342,0 L10.8766,0 C11.7065,0 12.5015,0.331725 13.0869,0.920639 C13.6721,1.50939 14,2.30689 14,3.13746 L14,8.12943 C13.9962,8.51443 13.9059,8.97125 13.7629,9.32852 C13.6128,9.683 13.3552,10.0709 13.0869,10.3462 C12.813,10.6163 12.4265,10.8761 12.0734,11.0274 C11.7172,11.1716 11.2607,11.263 10.8766,11.2669 L10.1234,11.2669 L10.1234,12.5676 L10.1209,12.5676 C10.1204,12.793 10.0633,13.0791 9.97807,13.262 C9.8627,13.466 9.61158,13.7198 9.40818,13.8382 L9.40824,13.8383 C9.4077,13.8386 9.40716,13.8388 9.40661,13.8391 C9.40621,13.8393 9.4058,13.8396 9.40539,13.8398 L9.40535,13.8397 C9.22958,13.9254 8.94505,13.9951 8.75059,14 L8.74789,14 C8.35724,13.9963 7.98473,13.8383 7.71035,13.5617 L5.39553,11.2669 L3.12342,11.2669 C2.29348,11.2669 1.49851,10.9352 0.913134,10.3462 C0.644826,10.0709 0.387187,9.683 0.23711,9.32852 C0.0941235,8.97125 0.00379528,8.51443 0,8.12943 L0,3.13746 C0,2.30689 0.327915,1.50939 0.913134,0.920639 Z M3.12342,1.59494 C2.71959,1.59494 2.33133,1.75628 2.04431,2.04503 C1.75713,2.33395 1.59494,2.72681 1.59494,3.13746 L1.59494,8.12943 C1.59114,8.35901 1.62114,8.51076 1.71193,8.72129 C1.79563,8.9346 1.88065,9.06264 2.04431,9.22185 C2.33133,9.5106 2.71959,9.67195 3.12342,9.67195 L5.72383,9.67195 C5.93413,9.67195 6.13592,9.75502 6.28527,9.90308 L8.52848,12.1269 L8.52848,10.4694 C8.52848,10.029 8.88552,9.67195 9.32595,9.67195 L10.8766,9.67195 C11.1034,9.67583 11.2517,9.64614 11.4599,9.55518 C11.6712,9.47132 11.7976,9.38635 11.9557,9.22185 C12.1193,9.06264 12.2044,8.9346 12.2881,8.72129 C12.3789,8.51076 12.4089,8.35901 12.4051,8.12943 L12.4051,3.13746 C12.4051,2.72681 12.2429,2.33394 11.9557,2.04503 C11.6687,1.75628 11.2804,1.59494 10.8766,1.59494 L3.12342,1.59494 Z",displayName:"ChatIcon",viewBox:"0 0 14 14"});rt({displayName:"TimeIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm0,22A10,10,0,1,1,22,12,10.011,10.011,0,0,1,12,22Z"}),w("path",{d:"M17.134,15.81,12.5,11.561V6.5a1,1,0,0,0-2,0V12a1,1,0,0,0,.324.738l4.959,4.545a1.01,1.01,0,0,0,1.413-.061A1,1,0,0,0,17.134,15.81Z"})]})});rt({displayName:"ArrowRightIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M13.584,12a2.643,2.643,0,0,1-.775,1.875L3.268,23.416a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L.768,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,13.584,12Z"}),w("path",{d:"M23.75,12a2.643,2.643,0,0,1-.775,1.875l-9.541,9.541a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L10.934,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,23.75,12Z"})]})});rt({displayName:"ArrowLeftIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M10.416,12a2.643,2.643,0,0,1,.775-1.875L20.732.584a1.768,1.768,0,0,1,2.5,2.5l-8.739,8.739a.25.25,0,0,0,0,.354l8.739,8.739a1.768,1.768,0,0,1-2.5,2.5l-9.541-9.541A2.643,2.643,0,0,1,10.416,12Z"}),w("path",{d:"M.25,12a2.643,2.643,0,0,1,.775-1.875L10.566.584a1.768,1.768,0,0,1,2.5,2.5L4.327,11.823a.25.25,0,0,0,0,.354l8.739,8.739a1.768,1.768,0,0,1-2.5,2.5L1.025,13.875A2.643,2.643,0,0,1,.25,12Z"})]})});rt({displayName:"AtSignIcon",d:"M12,.5A11.634,11.634,0,0,0,.262,12,11.634,11.634,0,0,0,12,23.5a11.836,11.836,0,0,0,6.624-2,1.25,1.25,0,1,0-1.393-2.076A9.34,9.34,0,0,1,12,21a9.132,9.132,0,0,1-9.238-9A9.132,9.132,0,0,1,12,3a9.132,9.132,0,0,1,9.238,9v.891a1.943,1.943,0,0,1-3.884,0V12A5.355,5.355,0,1,0,12,17.261a5.376,5.376,0,0,0,3.861-1.634,4.438,4.438,0,0,0,7.877-2.736V12A11.634,11.634,0,0,0,12,.5Zm0,14.261A2.763,2.763,0,1,1,14.854,12,2.812,2.812,0,0,1,12,14.761Z"});rt({displayName:"AttachmentIcon",d:"M21.843,3.455a6.961,6.961,0,0,0-9.846,0L1.619,13.832a5.128,5.128,0,0,0,7.252,7.252L17.3,12.653A3.293,3.293,0,1,0,12.646,8L7.457,13.184A1,1,0,1,0,8.871,14.6L14.06,9.409a1.294,1.294,0,0,1,1.829,1.83L7.457,19.67a3.128,3.128,0,0,1-4.424-4.424L13.411,4.869a4.962,4.962,0,1,1,7.018,7.018L12.646,19.67a1,1,0,1,0,1.414,1.414L21.843,13.3a6.96,6.96,0,0,0,0-9.846Z"});rt({displayName:"UpDownIcon",viewBox:"-1 -1 9 11",d:"M 3.5 0L 3.98809 -0.569442L 3.5 -0.987808L 3.01191 -0.569442L 3.5 0ZM 3.5 9L 3.01191 9.56944L 3.5 9.98781L 3.98809 9.56944L 3.5 9ZM 0.488094 3.56944L 3.98809 0.569442L 3.01191 -0.569442L -0.488094 2.43056L 0.488094 3.56944ZM 3.01191 0.569442L 6.51191 3.56944L 7.48809 2.43056L 3.98809 -0.569442L 3.01191 0.569442ZM -0.488094 6.56944L 3.01191 9.56944L 3.98809 8.43056L 0.488094 5.43056L -0.488094 6.56944ZM 3.98809 9.56944L 7.48809 6.56944L 6.51191 5.43056L 3.01191 8.43056L 3.98809 9.56944Z"});rt({d:"M23.555,8.729a1.505,1.505,0,0,0-1.406-.98H16.062a.5.5,0,0,1-.472-.334L13.405,1.222a1.5,1.5,0,0,0-2.81,0l-.005.016L8.41,7.415a.5.5,0,0,1-.471.334H1.85A1.5,1.5,0,0,0,.887,10.4l5.184,4.3a.5.5,0,0,1,.155.543L4.048,21.774a1.5,1.5,0,0,0,2.31,1.684l5.346-3.92a.5.5,0,0,1,.591,0l5.344,3.919a1.5,1.5,0,0,0,2.312-1.683l-2.178-6.535a.5.5,0,0,1,.155-.543l5.194-4.306A1.5,1.5,0,0,0,23.555,8.729Z",displayName:"StarIcon"});rt({displayName:"EmailIcon",path:ne("g",{fill:"currentColor",children:[w("path",{d:"M11.114,14.556a1.252,1.252,0,0,0,1.768,0L22.568,4.87a.5.5,0,0,0-.281-.849A1.966,1.966,0,0,0,22,4H2a1.966,1.966,0,0,0-.289.021.5.5,0,0,0-.281.849Z"}),w("path",{d:"M23.888,5.832a.182.182,0,0,0-.2.039l-6.2,6.2a.251.251,0,0,0,0,.354l5.043,5.043a.75.75,0,1,1-1.06,1.061l-5.043-5.043a.25.25,0,0,0-.354,0l-2.129,2.129a2.75,2.75,0,0,1-3.888,0L7.926,13.488a.251.251,0,0,0-.354,0L2.529,18.531a.75.75,0,0,1-1.06-1.061l5.043-5.043a.251.251,0,0,0,0-.354l-6.2-6.2a.18.18,0,0,0-.2-.039A.182.182,0,0,0,0,6V18a2,2,0,0,0,2,2H22a2,2,0,0,0,2-2V6A.181.181,0,0,0,23.888,5.832Z"})]})});rt({d:"M2.20731,0.0127209 C2.1105,-0.0066419 1.99432,-0.00664663 1.91687,0.032079 C0.871279,0.438698 0.212942,1.92964 0.0580392,2.95587 C-0.426031,6.28627 2.20731,9.17133 4.62766,11.0689 C6.77694,12.7534 10.9012,15.5223 13.3409,12.8503 C13.6507,12.5211 14.0186,12.037 13.9993,11.553 C13.9412,10.7397 13.186,10.1588 12.6051,9.71349 C12.1598,9.38432 11.2304,8.47427 10.6495,8.49363 C10.1267,8.51299 9.79754,9.05515 9.46837,9.38432 L8.88748,9.96521 C8.79067,10.062 7.55145,9.24878 7.41591,9.15197 C6.91248,8.8228 6.4284,8.45491 6.00242,8.04829 C5.57644,7.64167 5.18919,7.19632 4.86002,6.73161 C4.7632,6.59607 3.96933,5.41495 4.04678,5.31813 C4.04678,5.31813 4.72448,4.58234 4.91811,4.2919 C5.32473,3.67229 5.63453,3.18822 5.16982,2.45243 C4.99556,2.18135 4.78257,1.96836 4.55021,1.73601 C4.14359,1.34875 3.73698,0.942131 3.27227,0.612963 C3.02055,0.419335 2.59457,0.0708094 2.20731,0.0127209 Z",displayName:"PhoneIcon",viewBox:"0 0 14 14"});rt({viewBox:"0 0 10 10",d:"M3,2 C2.44771525,2 2,1.55228475 2,1 C2,0.44771525 2.44771525,0 3,0 C3.55228475,0 4,0.44771525 4,1 C4,1.55228475 3.55228475,2 3,2 Z M3,6 C2.44771525,6 2,5.55228475 2,5 C2,4.44771525 2.44771525,4 3,4 C3.55228475,4 4,4.44771525 4,5 C4,5.55228475 3.55228475,6 3,6 Z M3,10 C2.44771525,10 2,9.55228475 2,9 C2,8.44771525 2.44771525,8 3,8 C3.55228475,8 4,8.44771525 4,9 C4,9.55228475 3.55228475,10 3,10 Z M7,2 C6.44771525,2 6,1.55228475 6,1 C6,0.44771525 6.44771525,0 7,0 C7.55228475,0 8,0.44771525 8,1 C8,1.55228475 7.55228475,2 7,2 Z M7,6 C6.44771525,6 6,5.55228475 6,5 C6,4.44771525 6.44771525,4 7,4 C7.55228475,4 8,4.44771525 8,5 C8,5.55228475 7.55228475,6 7,6 Z M7,10 C6.44771525,10 6,9.55228475 6,9 C6,8.44771525 6.44771525,8 7,8 C7.55228475,8 8,8.44771525 8,9 C8,9.55228475 7.55228475,10 7,10 Z",displayName:"DragHandleIcon"});rt({displayName:"SpinnerIcon",path:ne(Fn,{children:[w("defs",{children:ne("linearGradient",{x1:"28.154%",y1:"63.74%",x2:"74.629%",y2:"17.783%",id:"a",children:[w("stop",{stopColor:"currentColor",offset:"0%"}),w("stop",{stopColor:"#fff",stopOpacity:"0",offset:"100%"})]})}),ne("g",{transform:"translate(2)",fill:"none",children:[w("circle",{stroke:"url(#a)",strokeWidth:"4",cx:"10",cy:"12",r:"10"}),w("path",{d:"M10 2C4.477 2 0 6.477 0 12",stroke:"currentColor",strokeWidth:"4"}),w("rect",{fill:"currentColor",x:"8",width:"4",height:"4",rx:"8"})]})]})});rt({displayName:"CloseIcon",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"});rt({displayName:"SmallCloseIcon",viewBox:"0 0 16 16",path:w("path",{d:"M9.41 8l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 0 0-1.71-.71L8 6.59l-2.29-2.3a1.003 1.003 0 0 0-1.42 1.42L6.59 8 4.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 0 0 1.71.71L8 9.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 0 0 .71-1.71L9.41 8z",fillRule:"evenodd",fill:"currentColor"})});rt({d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z",displayName:"NotAllowedIcon"});rt({d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z",displayName:"TriangleDownIcon"});rt({d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z",displayName:"TriangleUpIcon"});rt({displayName:"InfoOutlineIcon",path:ne("g",{fill:"currentColor",stroke:"currentColor",strokeLinecap:"square",strokeWidth:"2",children:[w("circle",{cx:"12",cy:"12",fill:"none",r:"11",stroke:"currentColor"}),w("line",{fill:"none",x1:"11.959",x2:"11.959",y1:"11",y2:"17"}),w("circle",{cx:"11.959",cy:"7",r:"1",stroke:"none"})]})});rt({displayName:"BellIcon",d:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"});rt({d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"});rt({d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm0,19a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,12,19Zm1.6-6.08a1,1,0,0,0-.6.917,1,1,0,1,1-2,0,3,3,0,0,1,1.8-2.75A2,2,0,1,0,10,9.255a1,1,0,1,1-2,0,4,4,0,1,1,5.6,3.666Z",displayName:"QuestionIcon"});rt({displayName:"QuestionOutlineIcon",path:ne("g",{stroke:"currentColor",strokeWidth:"1.5",children:[w("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),w("path",{fill:"none",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),w("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]})});rt({d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z",displayName:"WarningIcon"});rt({displayName:"WarningTwoIcon",d:"M23.119,20,13.772,2.15h0a2,2,0,0,0-3.543,0L.881,20a2,2,0,0,0,1.772,2.928H21.347A2,2,0,0,0,23.119,20ZM11,8.423a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Zm1.05,11.51h-.028a1.528,1.528,0,0,1-1.522-1.47,1.476,1.476,0,0,1,1.448-1.53h.028A1.527,1.527,0,0,1,13.5,18.4,1.475,1.475,0,0,1,12.05,19.933Z"});rt({viewBox:"0 0 14 14",path:w("g",{fill:"currentColor",children:w("polygon",{points:"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"})})});rt({displayName:"MinusIcon",path:w("g",{fill:"currentColor",children:w("rect",{height:"4",width:"20",x:"2",y:"10"})})});rt({displayName:"HamburgerIcon",viewBox:"0 0 24 24",d:"M 3 5 A 1.0001 1.0001 0 1 0 3 7 L 21 7 A 1.0001 1.0001 0 1 0 21 5 L 3 5 z M 3 11 A 1.0001 1.0001 0 1 0 3 13 L 21 13 A 1.0001 1.0001 0 1 0 21 11 L 3 11 z M 3 17 A 1.0001 1.0001 0 1 0 3 19 L 21 19 A 1.0001 1.0001 0 1 0 21 17 L 3 17 z"});function u3e(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M245.09 327.74v-37.32c57.07 0 84.51 13.47 108.58 38.68 5.4 5.65 15 1.32 14.29-6.43-5.45-61.45-34.14-117.09-122.87-117.09v-37.32a8.32 8.32 0 00-14.05-6L146.58 242a8.2 8.2 0 000 11.94L231 333.71a8.32 8.32 0 0014.09-5.97z"}},{tag:"path",attr:{fill:"none",strokeMiterlimit:"10",strokeWidth:"32",d:"M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z"}}]})(e)}const Qn=({label:e,value:t,onClick:n,isLink:r,labelPosition:i})=>ne(Dn,{gap:2,children:[n&&w($i,{label:`Recall ${e}`,children:w(gu,{"aria-label":"Use this parameter",icon:w(u3e,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),ne(Dn,{direction:i?"column":"row",children:[ne(wo,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?ne(Of,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",w(jB,{mx:"2px"})]}):w(wo,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}),c3e=(e,t)=>e.image.uuid===t.image.uuid,d3e=C.exports.memo(({image:e,styleClass:t})=>{const n=Xe();_t("esc",()=>{n(LH(!1))});const r=e?.metadata?.image||{},{type:i,postprocessing:o,sampler:a,prompt:s,seed:l,variations:c,steps:p,cfg_scale:g,seamless:m,hires_fix:y,width:b,height:S,strength:T,fit:E,init_image_path:k,mask_image_path:L,orig_path:I,scale:O}=r,D=JSON.stringify(r,null,2);return w("div",{className:`image-metadata-viewer ${t}`,children:ne(Dn,{gap:1,direction:"column",width:"100%",children:[ne(Dn,{gap:2,children:[w(wo,{fontWeight:"semibold",children:"File:"}),ne(Of,{href:e.url,isExternal:!0,children:[e.url,w(jB,{mx:"2px"})]})]}),Object.keys(r).length>0?ne(Fn,{children:[i&&w(Qn,{label:"Generation type",value:i}),["esrgan","gfpgan"].includes(i)&&w(Qn,{label:"Original image",value:I}),i==="gfpgan"&&T!==void 0&&w(Qn,{label:"Fix faces strength",value:T,onClick:()=>n(v3(T))}),i==="esrgan"&&O!==void 0&&w(Qn,{label:"Upscaling scale",value:O,onClick:()=>n(A8(O))}),i==="esrgan"&&T!==void 0&&w(Qn,{label:"Upscaling strength",value:T,onClick:()=>n(I8(T))}),s&&w(Qn,{label:"Prompt",labelPosition:"top",value:d3(s),onClick:()=>n(Px(s))}),l!==void 0&&w(Qn,{label:"Seed",value:l,onClick:()=>n(Ov(l))}),a&&w(Qn,{label:"Sampler",value:a,onClick:()=>n(wH(a))}),p&&w(Qn,{label:"Steps",value:p,onClick:()=>n(yH(p))}),g!==void 0&&w(Qn,{label:"CFG scale",value:g,onClick:()=>n(xH(g))}),c&&c.length>0&&w(Qn,{label:"Seed-weight pairs",value:L4(c),onClick:()=>n(TH(L4(c)))}),m&&w(Qn,{label:"Seamless",value:m,onClick:()=>n(CH(m))}),y&&w(Qn,{label:"High Resolution Optimization",value:y,onClick:()=>n(_H(y))}),b&&w(Qn,{label:"Width",value:b,onClick:()=>n(SH(b))}),S&&w(Qn,{label:"Height",value:S,onClick:()=>n(bH(S))}),k&&w(Qn,{label:"Initial image",value:k,isLink:!0,onClick:()=>n(ov(k))}),L&&w(Qn,{label:"Mask image",value:L,isLink:!0,onClick:()=>n(M8(L))}),i==="img2img"&&T&&w(Qn,{label:"Image to image strength",value:T,onClick:()=>n(kH(T))}),E&&w(Qn,{label:"Image to image fit",value:E,onClick:()=>n(PH(E))}),o&&o.length>0&&ne(Fn,{children:[w(Rf,{size:"sm",children:"Postprocessing"}),o.map((N,z)=>{if(N.type==="esrgan"){const{scale:W,strength:V}=N;return ne(Dn,{pl:"2rem",gap:1,direction:"column",children:[w(wo,{size:"md",children:`${z+1}: Upscale (ESRGAN)`}),w(Qn,{label:"Scale",value:W,onClick:()=>n(A8(W))}),w(Qn,{label:"Strength",value:V,onClick:()=>n(I8(V))})]},z)}else if(N.type==="gfpgan"){const{strength:W}=N;return ne(Dn,{pl:"2rem",gap:1,direction:"column",children:[w(wo,{size:"md",children:`${z+1}: Face restoration (GFPGAN)`}),w(Qn,{label:"Strength",value:W,onClick:()=>{n(v3(W)),n(y3("gfpgan"))}})]},z)}else if(N.type==="codeformer"){const{strength:W,fidelity:V}=N;return ne(Dn,{pl:"2rem",gap:1,direction:"column",children:[w(wo,{size:"md",children:`${z+1}: Face restoration (Codeformer)`}),w(Qn,{label:"Strength",value:W,onClick:()=>{n(v3(W)),n(y3("codeformer"))}}),V&&w(Qn,{label:"Fidelity",value:V,onClick:()=>{n(EH(V)),n(y3("codeformer"))}})]},z)}})]}),ne(Dn,{gap:2,direction:"column",children:[ne(Dn,{gap:2,children:[w($i,{label:"Copy metadata JSON",children:w(gu,{"aria-label":"Copy metadata JSON",icon:w(wB,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(D)})}),w(wo,{fontWeight:"semibold",children:"Metadata JSON:"})]}),w("div",{className:"image-json-viewer",children:w("pre",{children:D})})]})]}):w(MD,{width:"100%",pt:10,children:w(wo,{fontSize:"lg",fontWeight:"semibold",children:"No metadata available"})})]})})},c3e),f3e=St([e=>e.gallery,e=>e.options],(e,t)=>{const{currentCategory:n,currentImage:r,intermediateImage:i}=e,{shouldShowImageDetails:o}=t,a=e.categories[r?r.category:"result"].images,s=a.findIndex(c=>c.uuid===e?.currentImage?.uuid),l=a.length;return{imageToDisplay:i||r,currentCategory:n,isOnFirstImage:s===0,isOnLastImage:!isNaN(s)&&s===l-1,shouldShowImageDetails:o,shouldShowPrevImageButton:s===0,shouldShowNextImageButton:!isNaN(s)&&s===l-1}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function h3e(){const e=Xe(),{isOnFirstImage:t,isOnLastImage:n,shouldShowImageDetails:r,imageToDisplay:i}=Me(f3e),[o,a]=C.exports.useState(!1),s=()=>{a(!0)},l=()=>{a(!1)},c=()=>{e(GB())},p=()=>{e(UB())};return ne("div",{className:"current-image-preview",children:[i&&w($5,{src:i.url,width:i.width,height:i.height}),!r&&ne("div",{className:"current-image-next-prev-buttons",children:[w("div",{className:"next-prev-button-trigger-area prev-button-trigger-area",onMouseOver:s,onMouseOut:l,children:o&&!t&&w(gu,{"aria-label":"Previous image",icon:w(H2e,{className:"next-prev-button"}),variant:"unstyled",onClick:c})}),w("div",{className:"next-prev-button-trigger-area next-button-trigger-area",onMouseOver:s,onMouseOut:l,children:o&&!n&&w(gu,{"aria-label":"Next image",icon:w(W2e,{className:"next-prev-button"}),variant:"unstyled",onClick:p})})]}),r&&i&&w(d3e,{image:i,styleClass:"current-image-metadata"})]})}const p3e=St([e=>e.gallery,e=>e.options,Cr],(e,t,n)=>{const{currentImage:r,intermediateImage:i}=e,{shouldShowImageDetails:o}=t;return{activeTabName:n,shouldShowImageDetails:o,hasAnImageToDisplay:r||i}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),X7=()=>{const{hasAnImageToDisplay:e,activeTabName:t}=Me(p3e);return w("div",{className:"current-image-area","data-tab-name":t,children:e?ne(Fn,{children:[w(Jye,{}),w(h3e,{})]}):w("div",{className:"current-image-display-placeholder",children:w(M2e,{})})})},qB=()=>{const e=C.exports.useContext(Y7);return w(Ut,{"aria-label":"Upload Image",tooltip:"Upload Image",icon:w(CB,{}),onClick:e||void 0})};function g3e(){const e=Me(i=>i.options.initialImage),t=Xe(),n=ld(),r=()=>{n({title:"Problem loading parameters",description:"Unable to load init image.",status:"error",isClosable:!0}),t(AH())};return ne(Fn,{children:[ne("div",{className:"init-image-preview-header",children:[w("h2",{children:"Initial Image"}),w(qB,{})]}),e&&w("div",{className:"init-image-preview",children:w($5,{fit:"contain",maxWidth:"100%",maxHeight:"100%",src:typeof e=="string"?e:e.url,onError:r})})]})}const m3e=()=>{const e=Me(r=>r.options.initialImage),{currentImage:t}=Me(r=>r.gallery);return ne("div",{className:"workarea-split-view",children:[w("div",{className:"workarea-split-view-left",children:e?w("div",{className:"image-to-image-area",children:w(g3e,{})}):w($B,{})}),t&&w("div",{className:"workarea-split-view-right",children:w(X7,{})})]})};function v3e(e){return ft({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{d:"M14 1H3L2 2v11l1 1h11l1-1V2l-1-1zM8 13H3V2h5v11zm6 0H9V2h5v11z"}}]})(e)}var y3e=globalThis&&globalThis.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Fr=globalThis&&globalThis.__assign||function(){return Fr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"u"?void 0:Number(r),maxHeight:typeof i>"u"?void 0:Number(i),minWidth:typeof o>"u"?void 0:Number(o),minHeight:typeof a>"u"?void 0:Number(a)}},k3e=["as","style","className","grid","snap","bounds","boundsByDirection","size","defaultSize","minWidth","minHeight","maxWidth","maxHeight","lockAspectRatio","lockAspectRatioExtraWidth","lockAspectRatioExtraHeight","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","children","onResizeStart","onResize","onResizeStop","handleComponent","scale","resizeRatio","snapGap"],rA="__resizable_base__",KB=function(e){S3e(t,e);function t(n){var r=e.call(this,n)||this;return r.ratio=1,r.resizable=null,r.parentLeft=0,r.parentTop=0,r.resizableLeft=0,r.resizableRight=0,r.resizableTop=0,r.resizableBottom=0,r.targetLeft=0,r.targetTop=0,r.appendBase=function(){if(!r.resizable||!r.window)return null;var i=r.parentNode;if(!i)return null;var o=r.window.document.createElement("div");return o.style.width="100%",o.style.height="100%",o.style.position="absolute",o.style.transform="scale(0, 0)",o.style.left="0",o.style.flex="0 0 100%",o.classList?o.classList.add(rA):o.className+=rA,i.appendChild(o),o},r.removeBase=function(i){var o=r.parentNode;!o||o.removeChild(i)},r.ref=function(i){i&&(r.resizable=i)},r.state={isResizing:!1,width:typeof(r.propsSize&&r.propsSize.width)>"u"?"auto":r.propsSize&&r.propsSize.width,height:typeof(r.propsSize&&r.propsSize.height)>"u"?"auto":r.propsSize&&r.propsSize.height,direction:"right",original:{x:0,y:0,width:0,height:0},backgroundStyle:{height:"100%",width:"100%",backgroundColor:"rgba(0,0,0,0)",cursor:"auto",opacity:0,position:"fixed",zIndex:9999,top:"0",left:"0",bottom:"0",right:"0"},flexBasis:void 0},r.onResizeStart=r.onResizeStart.bind(r),r.onMouseMove=r.onMouseMove.bind(r),r.onMouseUp=r.onMouseUp.bind(r),r}return Object.defineProperty(t.prototype,"parentNode",{get:function(){return this.resizable?this.resizable.parentNode:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"window",{get:function(){return!this.resizable||!this.resizable.ownerDocument?null:this.resizable.ownerDocument.defaultView},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"propsSize",{get:function(){return this.props.size||this.props.defaultSize||w3e},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){var n=0,r=0;if(this.resizable&&this.window){var i=this.resizable.offsetWidth,o=this.resizable.offsetHeight,a=this.resizable.style.position;a!=="relative"&&(this.resizable.style.position="relative"),n=this.resizable.style.width!=="auto"?this.resizable.offsetWidth:i,r=this.resizable.style.height!=="auto"?this.resizable.offsetHeight:o,this.resizable.style.position=a}return{width:n,height:r}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sizeStyle",{get:function(){var n=this,r=this.props.size,i=function(s){if(typeof n.state[s]>"u"||n.state[s]==="auto")return"auto";if(n.propsSize&&n.propsSize[s]&&n.propsSize[s].toString().endsWith("%")){if(n.state[s].toString().endsWith("%"))return n.state[s].toString();var l=n.getParentSize(),c=Number(n.state[s].toString().replace("px","")),p=c/l[s]*100;return p+"%"}return AS(n.state[s])},o=r&&typeof r.width<"u"&&!this.state.isResizing?AS(r.width):i("width"),a=r&&typeof r.height<"u"&&!this.state.isResizing?AS(r.height):i("height");return{width:o,height:a}},enumerable:!1,configurable:!0}),t.prototype.getParentSize=function(){if(!this.parentNode)return this.window?{width:this.window.innerWidth,height:this.window.innerHeight}:{width:0,height:0};var n=this.appendBase();if(!n)return{width:0,height:0};var r=!1,i=this.parentNode.style.flexWrap;i!=="wrap"&&(r=!0,this.parentNode.style.flexWrap="wrap"),n.style.position="relative",n.style.minWidth="100%",n.style.minHeight="100%";var o={width:n.offsetWidth,height:n.offsetHeight};return r&&(this.parentNode.style.flexWrap=i),this.removeBase(n),o},t.prototype.bindEvents=function(){this.window&&(this.window.addEventListener("mouseup",this.onMouseUp),this.window.addEventListener("mousemove",this.onMouseMove),this.window.addEventListener("mouseleave",this.onMouseUp),this.window.addEventListener("touchmove",this.onMouseMove,{capture:!0,passive:!1}),this.window.addEventListener("touchend",this.onMouseUp))},t.prototype.unbindEvents=function(){this.window&&(this.window.removeEventListener("mouseup",this.onMouseUp),this.window.removeEventListener("mousemove",this.onMouseMove),this.window.removeEventListener("mouseleave",this.onMouseUp),this.window.removeEventListener("touchmove",this.onMouseMove,!0),this.window.removeEventListener("touchend",this.onMouseUp))},t.prototype.componentDidMount=function(){if(!(!this.resizable||!this.window)){var n=this.window.getComputedStyle(this.resizable);this.setState({width:this.state.width||this.size.width,height:this.state.height||this.size.height,flexBasis:n.flexBasis!=="auto"?n.flexBasis:void 0})}},t.prototype.componentWillUnmount=function(){this.window&&this.unbindEvents()},t.prototype.createSizeForCssProperty=function(n,r){var i=this.propsSize&&this.propsSize[r];return this.state[r]==="auto"&&this.state.original[r]===n&&(typeof i>"u"||i==="auto")?"auto":n},t.prototype.calculateNewMaxFromBoundary=function(n,r){var i=this.props.boundsByDirection,o=this.state.direction,a=i&&gp("left",o),s=i&&gp("top",o),l,c;if(this.props.bounds==="parent"){var p=this.parentNode;p&&(l=a?this.resizableRight-this.parentLeft:p.offsetWidth+(this.parentLeft-this.resizableLeft),c=s?this.resizableBottom-this.parentTop:p.offsetHeight+(this.parentTop-this.resizableTop))}else this.props.bounds==="window"?this.window&&(l=a?this.resizableRight:this.window.innerWidth-this.resizableLeft,c=s?this.resizableBottom:this.window.innerHeight-this.resizableTop):this.props.bounds&&(l=a?this.resizableRight-this.targetLeft:this.props.bounds.offsetWidth+(this.targetLeft-this.resizableLeft),c=s?this.resizableBottom-this.targetTop:this.props.bounds.offsetHeight+(this.targetTop-this.resizableTop));return l&&Number.isFinite(l)&&(n=n&&n"u"?10:o.width,g=typeof i.width>"u"||i.width<0?n:i.width,m=typeof o.height>"u"?10:o.height,y=typeof i.height>"u"||i.height<0?r:i.height,b=l||0,S=c||0;if(s){var T=(m-b)*this.ratio+S,E=(y-b)*this.ratio+S,k=(p-S)/this.ratio+b,L=(g-S)/this.ratio+b,I=Math.max(p,T),O=Math.min(g,E),D=Math.max(m,k),N=Math.min(y,L);n=hy(n,I,O),r=hy(r,D,N)}else n=hy(n,p,g),r=hy(r,m,y);return{newWidth:n,newHeight:r}},t.prototype.setBoundingClientRect=function(){if(this.props.bounds==="parent"){var n=this.parentNode;if(n){var r=n.getBoundingClientRect();this.parentLeft=r.left,this.parentTop=r.top}}if(this.props.bounds&&typeof this.props.bounds!="string"){var i=this.props.bounds.getBoundingClientRect();this.targetLeft=i.left,this.targetTop=i.top}if(this.resizable){var o=this.resizable.getBoundingClientRect(),a=o.left,s=o.top,l=o.right,c=o.bottom;this.resizableLeft=a,this.resizableRight=l,this.resizableTop=s,this.resizableBottom=c}},t.prototype.onResizeStart=function(n,r){if(!(!this.resizable||!this.window)){var i=0,o=0;if(n.nativeEvent&&C3e(n.nativeEvent)?(i=n.nativeEvent.clientX,o=n.nativeEvent.clientY):n.nativeEvent&&py(n.nativeEvent)&&(i=n.nativeEvent.touches[0].clientX,o=n.nativeEvent.touches[0].clientY),this.props.onResizeStart&&this.resizable){var a=this.props.onResizeStart(n,r,this.resizable);if(a===!1)return}this.props.size&&(typeof this.props.size.height<"u"&&this.props.size.height!==this.state.height&&this.setState({height:this.props.size.height}),typeof this.props.size.width<"u"&&this.props.size.width!==this.state.width&&this.setState({width:this.props.size.width})),this.ratio=typeof this.props.lockAspectRatio=="number"?this.props.lockAspectRatio:this.size.width/this.size.height;var s,l=this.window.getComputedStyle(this.resizable);if(l.flexBasis!=="auto"){var c=this.parentNode;if(c){var p=this.window.getComputedStyle(c).flexDirection;this.flexDir=p.startsWith("row")?"row":"column",s=l.flexBasis}}this.setBoundingClientRect(),this.bindEvents();var g={original:{x:i,y:o,width:this.size.width,height:this.size.height},isResizing:!0,backgroundStyle:il(il({},this.state.backgroundStyle),{cursor:this.window.getComputedStyle(n.target).cursor||"auto"}),direction:r,flexBasis:s};this.setState(g)}},t.prototype.onMouseMove=function(n){var r=this;if(!(!this.state.isResizing||!this.resizable||!this.window)){if(this.window.TouchEvent&&py(n))try{n.preventDefault(),n.stopPropagation()}catch{}var i=this.props,o=i.maxWidth,a=i.maxHeight,s=i.minWidth,l=i.minHeight,c=py(n)?n.touches[0].clientX:n.clientX,p=py(n)?n.touches[0].clientY:n.clientY,g=this.state,m=g.direction,y=g.original,b=g.width,S=g.height,T=this.getParentSize(),E=_3e(T,this.window.innerWidth,this.window.innerHeight,o,a,s,l);o=E.maxWidth,a=E.maxHeight,s=E.minWidth,l=E.minHeight;var k=this.calculateNewSizeFromDirection(c,p),L=k.newHeight,I=k.newWidth,O=this.calculateNewMaxFromBoundary(o,a);this.props.snap&&this.props.snap.x&&(I=nA(I,this.props.snap.x,this.props.snapGap)),this.props.snap&&this.props.snap.y&&(L=nA(L,this.props.snap.y,this.props.snapGap));var D=this.calculateNewSizeFromAspectRatio(I,L,{width:O.maxWidth,height:O.maxHeight},{width:s,height:l});if(I=D.newWidth,L=D.newHeight,this.props.grid){var N=tA(I,this.props.grid[0]),z=tA(L,this.props.grid[1]),W=this.props.snapGap||0;I=W===0||Math.abs(N-I)<=W?N:I,L=W===0||Math.abs(z-L)<=W?z:L}var V={width:I-y.width,height:L-y.height};if(b&&typeof b=="string"){if(b.endsWith("%")){var q=I/T.width*100;I=q+"%"}else if(b.endsWith("vw")){var he=I/this.window.innerWidth*100;I=he+"vw"}else if(b.endsWith("vh")){var de=I/this.window.innerHeight*100;I=de+"vh"}}if(S&&typeof S=="string"){if(S.endsWith("%")){var q=L/T.height*100;L=q+"%"}else if(S.endsWith("vw")){var he=L/this.window.innerWidth*100;L=he+"vw"}else if(S.endsWith("vh")){var de=L/this.window.innerHeight*100;L=de+"vh"}}var ve={width:this.createSizeForCssProperty(I,"width"),height:this.createSizeForCssProperty(L,"height")};this.flexDir==="row"?ve.flexBasis=ve.width:this.flexDir==="column"&&(ve.flexBasis=ve.height),El.exports.flushSync(function(){r.setState(ve)}),this.props.onResize&&this.props.onResize(n,m,this.resizable,V)}},t.prototype.onMouseUp=function(n){var r=this.state,i=r.isResizing,o=r.direction,a=r.original;if(!(!i||!this.resizable)){var s={width:this.size.width-a.width,height:this.size.height-a.height};this.props.onResizeStop&&this.props.onResizeStop(n,o,this.resizable,s),this.props.size&&this.setState(this.props.size),this.unbindEvents(),this.setState({isResizing:!1,backgroundStyle:il(il({},this.state.backgroundStyle),{cursor:"auto"})})}},t.prototype.updateSize=function(n){this.setState({width:n.width,height:n.height})},t.prototype.renderResizer=function(){var n=this,r=this.props,i=r.enable,o=r.handleStyles,a=r.handleClasses,s=r.handleWrapperStyle,l=r.handleWrapperClass,c=r.handleComponent;if(!i)return null;var p=Object.keys(i).map(function(g){return i[g]!==!1?w(b3e,{direction:g,onResizeStart:n.onResizeStart,replaceStyles:o&&o[g],className:a&&a[g],children:c&&c[g]?c[g]:null},g):null});return w("div",{className:l,style:s,children:p})},t.prototype.render=function(){var n=this,r=Object.keys(this.props).reduce(function(a,s){return k3e.indexOf(s)!==-1||(a[s]=n.props[s]),a},{}),i=il(il(il({position:"relative",userSelect:this.state.isResizing?"none":"auto"},this.props.style),this.sizeStyle),{maxWidth:this.props.maxWidth,maxHeight:this.props.maxHeight,minWidth:this.props.minWidth,minHeight:this.props.minHeight,boxSizing:"border-box",flexShrink:0});this.state.flexBasis&&(i.flexBasis=this.state.flexBasis);var o=this.props.as||"div";return ne(o,{...il({ref:this.ref,style:i,className:this.props.className},r),children:[this.state.isResizing&&w("div",{style:this.state.backgroundStyle}),this.props.children,this.renderResizer()]})},t.defaultProps={as:"div",onResizeStart:function(){},onResize:function(){},onResizeStop:function(){},enable:{top:!0,right:!0,bottom:!0,left:!0,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},style:{},grid:[1,1],lockAspectRatio:!1,lockAspectRatioExtraWidth:0,lockAspectRatioExtraHeight:0,scale:1,resizeRatio:1,snapGap:0},t}(C.exports.PureComponent);function Gn(e,t,{checkForDefaultPrevented:n=!0}={}){return function(i){if(e?.(i),n===!1||!i.defaultPrevented)return t?.(i)}}function Iv(e,t=[]){let n=[];function r(o,a){const s=C.exports.createContext(a),l=n.length;n=[...n,a];function c(g){const{scope:m,children:y,...b}=g,S=m?.[e][l]||s,T=C.exports.useMemo(()=>b,Object.values(b));return C.exports.createElement(S.Provider,{value:T},y)}function p(g,m){const y=m?.[e][l]||s,b=C.exports.useContext(y);if(b)return b;if(a!==void 0)return a;throw new Error(`\`${g}\` must be used within \`${o}\``)}return c.displayName=o+"Provider",[c,p]}const i=()=>{const o=n.map(a=>C.exports.createContext(a));return function(s){const l=s?.[e]||o;return C.exports.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return i.scopeName=e,[r,E3e(i,...t)]}function E3e(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(o){const a=r.reduce((s,{useScope:l,scopeName:c})=>{const g=l(o)[`__scope${c}`];return{...s,...g}},{});return C.exports.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}function P3e(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function ZB(...e){return t=>e.forEach(n=>P3e(n,t))}function $a(...e){return C.exports.useCallback(ZB(...e),e)}const rv=C.exports.forwardRef((e,t)=>{const{children:n,...r}=e,i=C.exports.Children.toArray(n),o=i.find(L3e);if(o){const a=o.props.children,s=i.map(l=>l===o?C.exports.Children.count(a)>1?C.exports.Children.only(null):C.exports.isValidElement(a)?a.props.children:null:l);return C.exports.createElement(a8,En({},r,{ref:t}),C.exports.isValidElement(a)?C.exports.cloneElement(a,void 0,s):null)}return C.exports.createElement(a8,En({},r,{ref:t}),n)});rv.displayName="Slot";const a8=C.exports.forwardRef((e,t)=>{const{children:n,...r}=e;return C.exports.isValidElement(n)?C.exports.cloneElement(n,{...A3e(r,n.props),ref:ZB(t,n.ref)}):C.exports.Children.count(n)>1?C.exports.Children.only(null):null});a8.displayName="SlotClone";const T3e=({children:e})=>C.exports.createElement(C.exports.Fragment,null,e);function L3e(e){return C.exports.isValidElement(e)&&e.type===T3e}function A3e(e,t){const n={...t};for(const r in t){const i=e[r],o=t[r];/^on[A-Z]/.test(r)?i&&o?n[r]=(...s)=>{o(...s),i(...s)}:i&&(n[r]=i):r==="style"?n[r]={...i,...o}:r==="className"&&(n[r]=[i,o].filter(Boolean).join(" "))}return{...e,...n}}const I3e=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],yu=I3e.reduce((e,t)=>{const n=C.exports.forwardRef((r,i)=>{const{asChild:o,...a}=r,s=o?rv:t;return C.exports.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),C.exports.createElement(s,En({},a,{ref:i}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function YB(e,t){e&&El.exports.flushSync(()=>e.dispatchEvent(t))}function XB(e){const t=e+"CollectionProvider",[n,r]=Iv(t),[i,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=y=>{const{scope:b,children:S}=y,T=re.useRef(null),E=re.useRef(new Map).current;return re.createElement(i,{scope:b,itemMap:E,collectionRef:T},S)},s=e+"CollectionSlot",l=re.forwardRef((y,b)=>{const{scope:S,children:T}=y,E=o(s,S),k=$a(b,E.collectionRef);return re.createElement(rv,{ref:k},T)}),c=e+"CollectionItemSlot",p="data-radix-collection-item",g=re.forwardRef((y,b)=>{const{scope:S,children:T,...E}=y,k=re.useRef(null),L=$a(b,k),I=o(c,S);return re.useEffect(()=>(I.itemMap.set(k,{ref:k,...E}),()=>void I.itemMap.delete(k))),re.createElement(rv,{[p]:"",ref:L},T)});function m(y){const b=o(e+"CollectionConsumer",y);return re.useCallback(()=>{const T=b.collectionRef.current;if(!T)return[];const E=Array.from(T.querySelectorAll(`[${p}]`));return Array.from(b.itemMap.values()).sort((I,O)=>E.indexOf(I.ref.current)-E.indexOf(O.ref.current))},[b.collectionRef,b.itemMap])}return[{Provider:a,Slot:l,ItemSlot:g},m,r]}const M3e=C.exports.createContext(void 0);function QB(e){const t=C.exports.useContext(M3e);return e||t||"ltr"}function Cl(e){const t=C.exports.useRef(e);return C.exports.useEffect(()=>{t.current=e}),C.exports.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function R3e(e,t=globalThis?.document){const n=Cl(e);C.exports.useEffect(()=>{const r=i=>{i.key==="Escape"&&n(i)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const s8="dismissableLayer.update",O3e="dismissableLayer.pointerDownOutside",N3e="dismissableLayer.focusOutside";let iA;const D3e=C.exports.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),z3e=C.exports.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...c}=e,p=C.exports.useContext(D3e),[g,m]=C.exports.useState(null),y=(n=g?.ownerDocument)!==null&&n!==void 0?n:globalThis?.document,[,b]=C.exports.useState({}),S=$a(t,z=>m(z)),T=Array.from(p.layers),[E]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),k=T.indexOf(E),L=g?T.indexOf(g):-1,I=p.layersWithOutsidePointerEventsDisabled.size>0,O=L>=k,D=F3e(z=>{const W=z.target,V=[...p.branches].some(q=>q.contains(W));!O||V||(o?.(z),s?.(z),z.defaultPrevented||l?.())},y),N=B3e(z=>{const W=z.target;[...p.branches].some(q=>q.contains(W))||(a?.(z),s?.(z),z.defaultPrevented||l?.())},y);return R3e(z=>{L===p.layers.size-1&&(i?.(z),!z.defaultPrevented&&l&&(z.preventDefault(),l()))},y),C.exports.useEffect(()=>{if(!!g)return r&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(iA=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),p.layersWithOutsidePointerEventsDisabled.add(g)),p.layers.add(g),oA(),()=>{r&&p.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=iA)}},[g,y,r,p]),C.exports.useEffect(()=>()=>{!g||(p.layers.delete(g),p.layersWithOutsidePointerEventsDisabled.delete(g),oA())},[g,p]),C.exports.useEffect(()=>{const z=()=>b({});return document.addEventListener(s8,z),()=>document.removeEventListener(s8,z)},[]),C.exports.createElement(yu.div,En({},c,{ref:S,style:{pointerEvents:I?O?"auto":"none":void 0,...e.style},onFocusCapture:Gn(e.onFocusCapture,N.onFocusCapture),onBlurCapture:Gn(e.onBlurCapture,N.onBlurCapture),onPointerDownCapture:Gn(e.onPointerDownCapture,D.onPointerDownCapture)}))});function F3e(e,t=globalThis?.document){const n=Cl(e),r=C.exports.useRef(!1),i=C.exports.useRef(()=>{});return C.exports.useEffect(()=>{const o=s=>{if(s.target&&!r.current){let c=function(){JB(O3e,n,l,{discrete:!0})};const l={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",i.current),i.current=c,t.addEventListener("click",i.current,{once:!0})):c()}r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",o),t.removeEventListener("click",i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function B3e(e,t=globalThis?.document){const n=Cl(e),r=C.exports.useRef(!1);return C.exports.useEffect(()=>{const i=o=>{o.target&&!r.current&&JB(N3e,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function oA(){const e=new CustomEvent(s8);document.dispatchEvent(e)}function JB(e,t,n,{discrete:r}){const i=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?YB(i,o):i.dispatchEvent(o)}let IS=0;function $3e(){C.exports.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:aA()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:aA()),IS++,()=>{IS===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),IS--}},[])}function aA(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const MS="focusScope.autoFocusOnMount",RS="focusScope.autoFocusOnUnmount",sA={bubbles:!1,cancelable:!0},H3e=C.exports.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:o,...a}=e,[s,l]=C.exports.useState(null),c=Cl(i),p=Cl(o),g=C.exports.useRef(null),m=$a(t,S=>l(S)),y=C.exports.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;C.exports.useEffect(()=>{if(r){let S=function(E){if(y.paused||!s)return;const k=E.target;s.contains(k)?g.current=k:df(g.current,{select:!0})},T=function(E){y.paused||!s||s.contains(E.relatedTarget)||df(g.current,{select:!0})};return document.addEventListener("focusin",S),document.addEventListener("focusout",T),()=>{document.removeEventListener("focusin",S),document.removeEventListener("focusout",T)}}},[r,s,y.paused]),C.exports.useEffect(()=>{if(s){uA.add(y);const S=document.activeElement;if(!s.contains(S)){const E=new CustomEvent(MS,sA);s.addEventListener(MS,c),s.dispatchEvent(E),E.defaultPrevented||(W3e(q3e(e$(s)),{select:!0}),document.activeElement===S&&df(s))}return()=>{s.removeEventListener(MS,c),setTimeout(()=>{const E=new CustomEvent(RS,sA);s.addEventListener(RS,p),s.dispatchEvent(E),E.defaultPrevented||df(S??document.body,{select:!0}),s.removeEventListener(RS,p),uA.remove(y)},0)}}},[s,c,p,y]);const b=C.exports.useCallback(S=>{if(!n&&!r||y.paused)return;const T=S.key==="Tab"&&!S.altKey&&!S.ctrlKey&&!S.metaKey,E=document.activeElement;if(T&&E){const k=S.currentTarget,[L,I]=V3e(k);L&&I?!S.shiftKey&&E===I?(S.preventDefault(),n&&df(L,{select:!0})):S.shiftKey&&E===L&&(S.preventDefault(),n&&df(I,{select:!0})):E===k&&S.preventDefault()}},[n,r,y.paused]);return C.exports.createElement(yu.div,En({tabIndex:-1},a,{ref:m,onKeyDown:b}))});function W3e(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(df(r,{select:t}),document.activeElement!==n)return}function V3e(e){const t=e$(e),n=lA(t,e),r=lA(t.reverse(),e);return[n,r]}function e$(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const i=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||i?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function lA(e,t){for(const n of e)if(!U3e(n,{upTo:t}))return n}function U3e(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function G3e(e){return e instanceof HTMLInputElement&&"select"in e}function df(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&G3e(e)&&t&&e.select()}}const uA=j3e();function j3e(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=cA(e,t),e.unshift(t)},remove(t){var n;e=cA(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function cA(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function q3e(e){return e.filter(t=>t.tagName!=="A")}const C0=Boolean(globalThis?.document)?C.exports.useLayoutEffect:()=>{},K3e=KS["useId".toString()]||(()=>{});let Z3e=0;function Y3e(e){const[t,n]=C.exports.useState(K3e());return C0(()=>{e||n(r=>r??String(Z3e++))},[e]),e||(t?`radix-${t}`:"")}function $0(e){return e.split("-")[0]}function px(e){return e.split("-")[1]}function H0(e){return["top","bottom"].includes($0(e))?"x":"y"}function Q7(e){return e==="y"?"height":"width"}function dA(e,t,n){let{reference:r,floating:i}=e;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=H0(t),l=Q7(s),c=r[l]/2-i[l]/2,p=$0(t),g=s==="x";let m;switch(p){case"top":m={x:o,y:r.y-i.height};break;case"bottom":m={x:o,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:a};break;case"left":m={x:r.x-i.width,y:a};break;default:m={x:r.x,y:r.y}}switch(px(t)){case"start":m[s]-=c*(n&&g?-1:1);break;case"end":m[s]+=c*(n&&g?-1:1);break}return m}const X3e=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(t));let l=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:p}=dA(l,r,s),g=r,m={},y=0;for(let b=0;b({name:"arrow",options:e,async fn(t){const{element:n,padding:r=0}=e??{},{x:i,y:o,placement:a,rects:s,platform:l}=t;if(n==null)return{};const c=t$(r),p={x:i,y:o},g=H0(a),m=px(a),y=Q7(g),b=await l.getDimensions(n),S=g==="y"?"top":"left",T=g==="y"?"bottom":"right",E=s.reference[y]+s.reference[g]-p[g]-s.floating[y],k=p[g]-s.reference[g],L=await(l.getOffsetParent==null?void 0:l.getOffsetParent(n));let I=L?g==="y"?L.clientHeight||0:L.clientWidth||0:0;I===0&&(I=s.floating[y]);const O=E/2-k/2,D=c[S],N=I-b[y]-c[T],z=I/2-b[y]/2+O,W=l8(D,z,N),he=(m==="start"?c[S]:c[T])>0&&z!==W&&s.reference[y]<=s.floating[y]?zt4e[t])}function n4e(e,t,n){n===void 0&&(n=!1);const r=px(e),i=H0(e),o=Q7(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=R4(a)),{main:a,cross:R4(a)}}const r4e={start:"end",end:"start"};function hA(e){return e.replace(/start|end/g,t=>r4e[t])}const i4e=["top","right","bottom","left"];function o4e(e){const t=R4(e);return[hA(e),t,hA(t)]}const a4e=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:l}=t,{mainAxis:c=!0,crossAxis:p=!0,fallbackPlacements:g,fallbackStrategy:m="bestFit",flipAlignment:y=!0,...b}=e,S=$0(r),E=g||(S===a||!y?[R4(a)]:o4e(a)),k=[a,...E],L=await M4(t,b),I=[];let O=((n=i.flip)==null?void 0:n.overflows)||[];if(c&&I.push(L[S]),p){const{main:W,cross:V}=n4e(r,o,await(s.isRTL==null?void 0:s.isRTL(l.floating)));I.push(L[W],L[V])}if(O=[...O,{placement:r,overflows:I}],!I.every(W=>W<=0)){var D,N;const W=((D=(N=i.flip)==null?void 0:N.index)!=null?D:0)+1,V=k[W];if(V)return{data:{index:W,overflows:O},reset:{placement:V}};let q="bottom";switch(m){case"bestFit":{var z;const he=(z=O.map(de=>[de,de.overflows.filter(ve=>ve>0).reduce((ve,Ee)=>ve+Ee,0)]).sort((de,ve)=>de[1]-ve[1])[0])==null?void 0:z[0].placement;he&&(q=he);break}case"initialPlacement":q=a;break}if(r!==q)return{reset:{placement:q}}}return{}}}};function pA(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function gA(e){return i4e.some(t=>e[t]>=0)}const s4e=function(e){let{strategy:t="referenceHidden",...n}=e===void 0?{}:e;return{name:"hide",async fn(r){const{rects:i}=r;switch(t){case"referenceHidden":{const o=await M4(r,{...n,elementContext:"reference"}),a=pA(o,i.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:gA(a)}}}case"escaped":{const o=await M4(r,{...n,altBoundary:!0}),a=pA(o,i.floating);return{data:{escapedOffsets:a,escaped:gA(a)}}}default:return{}}}}};async function l4e(e,t){const{placement:n,platform:r,elements:i}=e,o=await(r.isRTL==null?void 0:r.isRTL(i.floating)),a=$0(n),s=px(n),l=H0(n)==="x",c=["left","top"].includes(a)?-1:1,p=o&&l?-1:1,g=typeof t=="function"?t(e):t;let{mainAxis:m,crossAxis:y,alignmentAxis:b}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return s&&typeof b=="number"&&(y=s==="end"?b*-1:b),l?{x:y*p,y:m*c}:{x:m*c,y:y*p}}const u4e=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,i=await l4e(t,e);return{x:n+i.x,y:r+i.y,data:i}}}};function n$(e){return e==="x"?"y":"x"}const c4e=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:T=>{let{x:E,y:k}=T;return{x:E,y:k}}},...l}=e,c={x:n,y:r},p=await M4(t,l),g=H0($0(i)),m=n$(g);let y=c[g],b=c[m];if(o){const T=g==="y"?"top":"left",E=g==="y"?"bottom":"right",k=y+p[T],L=y-p[E];y=l8(k,y,L)}if(a){const T=m==="y"?"top":"left",E=m==="y"?"bottom":"right",k=b+p[T],L=b-p[E];b=l8(k,b,L)}const S=s.fn({...t,[g]:y,[m]:b});return{...S,data:{x:S.x-n,y:S.y-r}}}}},d4e=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=e,p={x:n,y:r},g=H0(i),m=n$(g);let y=p[g],b=p[m];const S=typeof s=="function"?s({...o,placement:i}):s,T=typeof S=="number"?{mainAxis:S,crossAxis:0}:{mainAxis:0,crossAxis:0,...S};if(l){const O=g==="y"?"height":"width",D=o.reference[g]-o.floating[O]+T.mainAxis,N=o.reference[g]+o.reference[O]-T.mainAxis;yN&&(y=N)}if(c){var E,k,L,I;const O=g==="y"?"width":"height",D=["top","left"].includes($0(i)),N=o.reference[m]-o.floating[O]+(D&&(E=(k=a.offset)==null?void 0:k[m])!=null?E:0)+(D?0:T.crossAxis),z=o.reference[m]+o.reference[O]+(D?0:(L=(I=a.offset)==null?void 0:I[m])!=null?L:0)-(D?T.crossAxis:0);bz&&(b=z)}return{[g]:y,[m]:b}}}};function r$(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function _u(e){if(e==null)return window;if(!r$(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function Mv(e){return _u(e).getComputedStyle(e)}function xu(e){return r$(e)?"":e?(e.nodeName||"").toLowerCase():""}function i$(){const e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(t=>t.brand+"/"+t.version).join(" "):navigator.userAgent}function _l(e){return e instanceof _u(e).HTMLElement}function Jc(e){return e instanceof _u(e).Element}function f4e(e){return e instanceof _u(e).Node}function J7(e){if(typeof ShadowRoot>"u")return!1;const t=_u(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function gx(e){const{overflow:t,overflowX:n,overflowY:r}=Mv(e);return/auto|scroll|overlay|hidden/.test(t+r+n)}function h4e(e){return["table","td","th"].includes(xu(e))}function o$(e){const t=/firefox/i.test(i$()),n=Mv(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)}function a$(){return!/^((?!chrome|android).)*safari/i.test(i$())}const mA=Math.min,um=Math.max,O4=Math.round;function bu(e,t,n){var r,i,o,a;t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect();let l=1,c=1;t&&_l(e)&&(l=e.offsetWidth>0&&O4(s.width)/e.offsetWidth||1,c=e.offsetHeight>0&&O4(s.height)/e.offsetHeight||1);const p=Jc(e)?_u(e):window,g=!a$()&&n,m=(s.left+(g&&(r=(i=p.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/l,y=(s.top+(g&&(o=(a=p.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/c,b=s.width/l,S=s.height/c;return{width:b,height:S,top:y,right:m+b,bottom:y+S,left:m,x:m,y}}function ud(e){return((f4e(e)?e.ownerDocument:e.document)||window.document).documentElement}function mx(e){return Jc(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function s$(e){return bu(ud(e)).left+mx(e).scrollLeft}function p4e(e){const t=bu(e);return O4(t.width)!==e.offsetWidth||O4(t.height)!==e.offsetHeight}function g4e(e,t,n){const r=_l(t),i=ud(t),o=bu(e,r&&p4e(t),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((xu(t)!=="body"||gx(i))&&(a=mx(t)),_l(t)){const l=bu(t,!0);s.x=l.x+t.clientLeft,s.y=l.y+t.clientTop}else i&&(s.x=s$(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function l$(e){return xu(e)==="html"?e:e.assignedSlot||e.parentNode||(J7(e)?e.host:null)||ud(e)}function vA(e){return!_l(e)||getComputedStyle(e).position==="fixed"?null:e.offsetParent}function m4e(e){let t=l$(e);for(J7(t)&&(t=t.host);_l(t)&&!["html","body"].includes(xu(t));){if(o$(t))return t;t=t.parentNode}return null}function u8(e){const t=_u(e);let n=vA(e);for(;n&&h4e(n)&&getComputedStyle(n).position==="static";)n=vA(n);return n&&(xu(n)==="html"||xu(n)==="body"&&getComputedStyle(n).position==="static"&&!o$(n))?t:n||m4e(e)||t}function yA(e){if(_l(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=bu(e);return{width:t.width,height:t.height}}function v4e(e){let{rect:t,offsetParent:n,strategy:r}=e;const i=_l(n),o=ud(n);if(n===o)return t;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((xu(n)!=="body"||gx(o))&&(a=mx(n)),_l(n))){const l=bu(n,!0);s.x=l.x+n.clientLeft,s.y=l.y+n.clientTop}return{...t,x:t.x-a.scrollLeft+s.x,y:t.y-a.scrollTop+s.y}}function y4e(e,t){const n=_u(e),r=ud(e),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;const c=a$();(c||!c&&t==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s,y:l}}function x4e(e){var t;const n=ud(e),r=mx(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=um(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=um(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+s$(e);const l=-r.scrollTop;return Mv(i||n).direction==="rtl"&&(s+=um(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function u$(e){const t=l$(e);return["html","body","#document"].includes(xu(t))?e.ownerDocument.body:_l(t)&&gx(t)?t:u$(t)}function N4(e,t){var n;t===void 0&&(t=[]);const r=u$(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=_u(r),a=i?[o].concat(o.visualViewport||[],gx(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(N4(a))}function b4e(e,t){const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&J7(n)){let r=t;do{if(r&&e===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function S4e(e,t){const n=bu(e,!1,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft;return{top:r,left:i,x:i,y:r,right:i+e.clientWidth,bottom:r+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}function xA(e,t,n){return t==="viewport"?I4(y4e(e,n)):Jc(t)?S4e(t,n):I4(x4e(ud(e)))}function w4e(e){const t=N4(e),r=["absolute","fixed"].includes(Mv(e).position)&&_l(e)?u8(e):e;return Jc(r)?t.filter(i=>Jc(i)&&b4e(i,r)&&xu(i)!=="body"):[]}function C4e(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const a=[...n==="clippingAncestors"?w4e(t):[].concat(n),r],s=a[0],l=a.reduce((c,p)=>{const g=xA(t,p,i);return c.top=um(g.top,c.top),c.right=mA(g.right,c.right),c.bottom=mA(g.bottom,c.bottom),c.left=um(g.left,c.left),c},xA(t,s,i));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}const _4e={getClippingRect:C4e,convertOffsetParentRelativeRectToViewportRelativeRect:v4e,isElement:Jc,getDimensions:yA,getOffsetParent:u8,getDocumentElement:ud,getElementRects:e=>{let{reference:t,floating:n,strategy:r}=e;return{reference:g4e(t,u8(n),r),floating:{...yA(n),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Mv(e).direction==="rtl"};function k4e(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a=!0,animationFrame:s=!1}=r,l=i&&!s,c=o&&!s,p=l||c?[...Jc(e)?N4(e):[],...N4(t)]:[];p.forEach(S=>{l&&S.addEventListener("scroll",n,{passive:!0}),c&&S.addEventListener("resize",n)});let g=null;if(a){let S=!0;g=new ResizeObserver(()=>{S||n(),S=!1}),Jc(e)&&!s&&g.observe(e),g.observe(t)}let m,y=s?bu(e):null;s&&b();function b(){const S=bu(e);y&&(S.x!==y.x||S.y!==y.y||S.width!==y.width||S.height!==y.height)&&n(),y=S,m=requestAnimationFrame(b)}return n(),()=>{var S;p.forEach(T=>{l&&T.removeEventListener("scroll",n),c&&T.removeEventListener("resize",n)}),(S=g)==null||S.disconnect(),g=null,s&&cancelAnimationFrame(m)}}const E4e=(e,t,n)=>X3e(e,t,{platform:_4e,...n});var c8=typeof document<"u"?C.exports.useLayoutEffect:C.exports.useEffect;function d8(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!d8(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){const o=i[r];if(!(o==="_owner"&&e.$$typeof)&&!d8(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function P4e(e){const t=C.exports.useRef(e);return c8(()=>{t.current=e}),t}function T4e(e){let{middleware:t,placement:n="bottom",strategy:r="absolute",whileElementsMounted:i}=e===void 0?{}:e;const o=C.exports.useRef(null),a=C.exports.useRef(null),s=P4e(i),l=C.exports.useRef(null),[c,p]=C.exports.useState({x:null,y:null,strategy:r,placement:n,middlewareData:{}}),[g,m]=C.exports.useState(t);d8(g?.map(L=>{let{options:I}=L;return I}),t?.map(L=>{let{options:I}=L;return I}))||m(t);const y=C.exports.useCallback(()=>{!o.current||!a.current||E4e(o.current,a.current,{middleware:g,placement:n,strategy:r}).then(L=>{b.current&&El.exports.flushSync(()=>{p(L)})})},[g,n,r]);c8(()=>{b.current&&y()},[y]);const b=C.exports.useRef(!1);c8(()=>(b.current=!0,()=>{b.current=!1}),[]);const S=C.exports.useCallback(()=>{if(typeof l.current=="function"&&(l.current(),l.current=null),o.current&&a.current)if(s.current){const L=s.current(o.current,a.current,y);l.current=L}else y()},[y,s]),T=C.exports.useCallback(L=>{o.current=L,S()},[S]),E=C.exports.useCallback(L=>{a.current=L,S()},[S]),k=C.exports.useMemo(()=>({reference:o,floating:a}),[]);return C.exports.useMemo(()=>({...c,update:y,refs:k,reference:T,floating:E}),[c,y,k,T,E])}const L4e=e=>{const{element:t,padding:n}=e;function r(i){return Object.prototype.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){return r(t)?t.current!=null?fA({element:t.current,padding:n}).fn(i):{}:t?fA({element:t,padding:n}).fn(i):{}}}};function A4e(e){const[t,n]=C.exports.useState(void 0);return C0(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const o=i[0];let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,c=Array.isArray(l)?l[0]:l;a=c.inlineSize,s=c.blockSize}else a=e.offsetWidth,s=e.offsetHeight;n({width:a,height:s})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const c$="Popper",[e_,d$]=Iv(c$),[I4e,f$]=e_(c$),M4e=e=>{const{__scopePopper:t,children:n}=e,[r,i]=C.exports.useState(null);return C.exports.createElement(I4e,{scope:t,anchor:r,onAnchorChange:i},n)},R4e="PopperAnchor",O4e=C.exports.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...i}=e,o=f$(R4e,n),a=C.exports.useRef(null),s=$a(t,a);return C.exports.useEffect(()=>{o.onAnchorChange(r?.current||a.current)}),r?null:C.exports.createElement(yu.div,En({},i,{ref:s}))}),D4="PopperContent",[N4e,zCe]=e_(D4),[D4e,z4e]=e_(D4,{hasParent:!1,positionUpdateFns:new Set}),F4e=C.exports.forwardRef((e,t)=>{var n,r,i,o,a,s,l,c;const{__scopePopper:p,side:g="bottom",sideOffset:m=0,align:y="center",alignOffset:b=0,arrowPadding:S=0,collisionBoundary:T=[],collisionPadding:E=0,sticky:k="partial",hideWhenDetached:L=!1,avoidCollisions:I=!0,...O}=e,D=f$(D4,p),[N,z]=C.exports.useState(null),W=$a(t,wt=>z(wt)),[V,q]=C.exports.useState(null),he=A4e(V),de=(n=he?.width)!==null&&n!==void 0?n:0,ve=(r=he?.height)!==null&&r!==void 0?r:0,Ee=g+(y!=="center"?"-"+y:""),xe=typeof E=="number"?E:{top:0,right:0,bottom:0,left:0,...E},Z=Array.isArray(T)?T:[T],U=Z.length>0,ee={padding:xe,boundary:Z.filter($4e),altBoundary:U},{reference:ae,floating:X,strategy:me,x:ye,y:Se,placement:He,middlewareData:je,update:ut}=T4e({strategy:"fixed",placement:Ee,whileElementsMounted:k4e,middleware:[u4e({mainAxis:m+ve,alignmentAxis:b}),I?c4e({mainAxis:!0,crossAxis:!1,limiter:k==="partial"?d4e():void 0,...ee}):void 0,V?L4e({element:V,padding:S}):void 0,I?a4e({...ee}):void 0,H4e({arrowWidth:de,arrowHeight:ve}),L?s4e({strategy:"referenceHidden"}):void 0].filter(B4e)});C0(()=>{ae(D.anchor)},[ae,D.anchor]);const qe=ye!==null&&Se!==null,[ot,tt]=h$(He),at=(i=je.arrow)===null||i===void 0?void 0:i.x,Rt=(o=je.arrow)===null||o===void 0?void 0:o.y,kt=((a=je.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Le,st]=C.exports.useState();C0(()=>{N&&st(window.getComputedStyle(N).zIndex)},[N]);const{hasParent:Lt,positionUpdateFns:it}=z4e(D4,p),mt=!Lt;C.exports.useLayoutEffect(()=>{if(!mt)return it.add(ut),()=>{it.delete(ut)}},[mt,it,ut]),C.exports.useLayoutEffect(()=>{mt&&qe&&Array.from(it).reverse().forEach(wt=>requestAnimationFrame(wt))},[mt,qe,it]);const Sn={"data-side":ot,"data-align":tt,...O,ref:W,style:{...O.style,animation:qe?void 0:"none",opacity:(s=je.hide)!==null&&s!==void 0&&s.referenceHidden?0:void 0}};return C.exports.createElement("div",{ref:X,"data-radix-popper-content-wrapper":"",style:{position:me,left:0,top:0,transform:qe?`translate3d(${Math.round(ye)}px, ${Math.round(Se)}px, 0)`:"translate3d(0, -200%, 0)",minWidth:"max-content",zIndex:Le,["--radix-popper-transform-origin"]:[(l=je.transformOrigin)===null||l===void 0?void 0:l.x,(c=je.transformOrigin)===null||c===void 0?void 0:c.y].join(" ")}},C.exports.createElement(N4e,{scope:p,placedSide:ot,onArrowChange:q,arrowX:at,arrowY:Rt,shouldHideArrow:kt},mt?C.exports.createElement(D4e,{scope:p,hasParent:!0,positionUpdateFns:it},C.exports.createElement(yu.div,Sn)):C.exports.createElement(yu.div,Sn)))});function B4e(e){return e!==void 0}function $4e(e){return e!==null}const H4e=e=>({name:"transformOrigin",options:e,fn(t){var n,r,i,o,a;const{placement:s,rects:l,middlewareData:c}=t,g=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,m=g?0:e.arrowWidth,y=g?0:e.arrowHeight,[b,S]=h$(s),T={start:"0%",center:"50%",end:"100%"}[S],E=((r=(i=c.arrow)===null||i===void 0?void 0:i.x)!==null&&r!==void 0?r:0)+m/2,k=((o=(a=c.arrow)===null||a===void 0?void 0:a.y)!==null&&o!==void 0?o:0)+y/2;let L="",I="";return b==="bottom"?(L=g?T:`${E}px`,I=`${-y}px`):b==="top"?(L=g?T:`${E}px`,I=`${l.floating.height+y}px`):b==="right"?(L=`${-y}px`,I=g?T:`${k}px`):b==="left"&&(L=`${l.floating.width+y}px`,I=g?T:`${k}px`),{data:{x:L,y:I}}}});function h$(e){const[t,n="center"]=e.split("-");return[t,n]}const W4e=M4e,V4e=O4e,U4e=F4e;function G4e(e,t){return C.exports.useReducer((n,r)=>{const i=t[n][r];return i??n},e)}const p$=e=>{const{present:t,children:n}=e,r=j4e(t),i=typeof n=="function"?n({present:r.isPresent}):C.exports.Children.only(n),o=$a(r.ref,i.ref);return typeof n=="function"||r.isPresent?C.exports.cloneElement(i,{ref:o}):null};p$.displayName="Presence";function j4e(e){const[t,n]=C.exports.useState(),r=C.exports.useRef({}),i=C.exports.useRef(e),o=C.exports.useRef("none"),a=e?"mounted":"unmounted",[s,l]=G4e(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return C.exports.useEffect(()=>{const c=my(r.current);o.current=s==="mounted"?c:"none"},[s]),C0(()=>{const c=r.current,p=i.current;if(p!==e){const m=o.current,y=my(c);e?l("MOUNT"):y==="none"||c?.display==="none"?l("UNMOUNT"):l(p&&m!==y?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),C0(()=>{if(t){const c=g=>{const y=my(r.current).includes(g.animationName);g.target===t&&y&&El.exports.flushSync(()=>l("ANIMATION_END"))},p=g=>{g.target===t&&(o.current=my(r.current))};return t.addEventListener("animationstart",p),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",p),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:C.exports.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function my(e){return e?.animationName||"none"}function q4e({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,i]=K4e({defaultProp:t,onChange:n}),o=e!==void 0,a=o?e:r,s=Cl(n),l=C.exports.useCallback(c=>{if(o){const g=typeof c=="function"?c(e):c;g!==e&&s(g)}else i(c)},[o,e,i,s]);return[a,l]}function K4e({defaultProp:e,onChange:t}){const n=C.exports.useState(e),[r]=n,i=C.exports.useRef(r),o=Cl(t);return C.exports.useEffect(()=>{i.current!==r&&(o(r),i.current=r)},[r,i,o]),n}const OS="rovingFocusGroup.onEntryFocus",Z4e={bubbles:!1,cancelable:!0},t_="RovingFocusGroup",[f8,g$,Y4e]=XB(t_),[X4e,m$]=Iv(t_,[Y4e]),[Q4e,J4e]=X4e(t_),e5e=C.exports.forwardRef((e,t)=>C.exports.createElement(f8.Provider,{scope:e.__scopeRovingFocusGroup},C.exports.createElement(f8.Slot,{scope:e.__scopeRovingFocusGroup},C.exports.createElement(t5e,En({},e,{ref:t}))))),t5e=C.exports.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:c,...p}=e,g=C.exports.useRef(null),m=$a(t,g),y=QB(o),[b=null,S]=q4e({prop:a,defaultProp:s,onChange:l}),[T,E]=C.exports.useState(!1),k=Cl(c),L=g$(n),I=C.exports.useRef(!1),[O,D]=C.exports.useState(0);return C.exports.useEffect(()=>{const N=g.current;if(N)return N.addEventListener(OS,k),()=>N.removeEventListener(OS,k)},[k]),C.exports.createElement(Q4e,{scope:n,orientation:r,dir:y,loop:i,currentTabStopId:b,onItemFocus:C.exports.useCallback(N=>S(N),[S]),onItemShiftTab:C.exports.useCallback(()=>E(!0),[]),onFocusableItemAdd:C.exports.useCallback(()=>D(N=>N+1),[]),onFocusableItemRemove:C.exports.useCallback(()=>D(N=>N-1),[])},C.exports.createElement(yu.div,En({tabIndex:T||O===0?-1:0,"data-orientation":r},p,{ref:m,style:{outline:"none",...e.style},onMouseDown:Gn(e.onMouseDown,()=>{I.current=!0}),onFocus:Gn(e.onFocus,N=>{const z=!I.current;if(N.target===N.currentTarget&&z&&!T){const W=new CustomEvent(OS,Z4e);if(N.currentTarget.dispatchEvent(W),!W.defaultPrevented){const V=L().filter(Ee=>Ee.focusable),q=V.find(Ee=>Ee.active),he=V.find(Ee=>Ee.id===b),ve=[q,he,...V].filter(Boolean).map(Ee=>Ee.ref.current);v$(ve)}}I.current=!1}),onBlur:Gn(e.onBlur,()=>E(!1))})))}),n5e="RovingFocusGroupItem",r5e=C.exports.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,...o}=e,a=Y3e(),s=J4e(n5e,n),l=s.currentTabStopId===a,c=g$(n),{onFocusableItemAdd:p,onFocusableItemRemove:g}=s;return C.exports.useEffect(()=>{if(r)return p(),()=>g()},[r,p,g]),C.exports.createElement(f8.ItemSlot,{scope:n,id:a,focusable:r,active:i},C.exports.createElement(yu.span,En({tabIndex:l?0:-1,"data-orientation":s.orientation},o,{ref:t,onMouseDown:Gn(e.onMouseDown,m=>{r?s.onItemFocus(a):m.preventDefault()}),onFocus:Gn(e.onFocus,()=>s.onItemFocus(a)),onKeyDown:Gn(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){s.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const y=a5e(m,s.orientation,s.dir);if(y!==void 0){m.preventDefault();let S=c().filter(T=>T.focusable).map(T=>T.ref.current);if(y==="last")S.reverse();else if(y==="prev"||y==="next"){y==="prev"&&S.reverse();const T=S.indexOf(m.currentTarget);S=s.loop?s5e(S,T+1):S.slice(T+1)}setTimeout(()=>v$(S))}})})))}),i5e={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function o5e(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function a5e(e,t,n){const r=o5e(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return i5e[r]}function v$(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function s5e(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const l5e=e5e,u5e=r5e,c5e=["Enter"," "],d5e=["ArrowDown","PageUp","Home"],y$=["ArrowUp","PageDown","End"],f5e=[...d5e,...y$],vx="Menu",[h8,h5e,p5e]=XB(vx),[th,x$]=Iv(vx,[p5e,d$,m$]),n_=d$(),b$=m$(),[g5e,yx]=th(vx),[m5e,r_]=th(vx),v5e=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:o,modal:a=!0}=e,s=n_(t),[l,c]=C.exports.useState(null),p=C.exports.useRef(!1),g=Cl(o),m=QB(i);return C.exports.useEffect(()=>{const y=()=>{p.current=!0,document.addEventListener("pointerdown",b,{capture:!0,once:!0}),document.addEventListener("pointermove",b,{capture:!0,once:!0})},b=()=>p.current=!1;return document.addEventListener("keydown",y,{capture:!0}),()=>{document.removeEventListener("keydown",y,{capture:!0}),document.removeEventListener("pointerdown",b,{capture:!0}),document.removeEventListener("pointermove",b,{capture:!0})}},[]),C.exports.createElement(W4e,s,C.exports.createElement(g5e,{scope:t,open:n,onOpenChange:g,content:l,onContentChange:c},C.exports.createElement(m5e,{scope:t,onClose:C.exports.useCallback(()=>g(!1),[g]),isUsingKeyboardRef:p,dir:m,modal:a},r)))},y5e=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=n_(n);return C.exports.createElement(V4e,En({},i,r,{ref:t}))}),x5e="MenuPortal",[FCe,b5e]=th(x5e,{forceMount:void 0}),Uc="MenuContent",[S5e,S$]=th(Uc),w5e=C.exports.forwardRef((e,t)=>{const n=b5e(Uc,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,o=yx(Uc,e.__scopeMenu),a=r_(Uc,e.__scopeMenu);return C.exports.createElement(h8.Provider,{scope:e.__scopeMenu},C.exports.createElement(p$,{present:r||o.open},C.exports.createElement(h8.Slot,{scope:e.__scopeMenu},a.modal?C.exports.createElement(C5e,En({},i,{ref:t})):C.exports.createElement(_5e,En({},i,{ref:t})))))}),C5e=C.exports.forwardRef((e,t)=>{const n=yx(Uc,e.__scopeMenu),r=C.exports.useRef(null),i=$a(t,r);return C.exports.useEffect(()=>{const o=r.current;if(o)return dz(o)},[]),C.exports.createElement(w$,En({},e,{ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:Gn(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)}))}),_5e=C.exports.forwardRef((e,t)=>{const n=yx(Uc,e.__scopeMenu);return C.exports.createElement(w$,En({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)}))}),w$=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:p,onInteractOutside:g,onDismiss:m,disableOutsideScroll:y,...b}=e,S=yx(Uc,n),T=r_(Uc,n),E=n_(n),k=b$(n),L=h5e(n),[I,O]=C.exports.useState(null),D=C.exports.useRef(null),N=$a(t,D,S.onContentChange),z=C.exports.useRef(0),W=C.exports.useRef(""),V=C.exports.useRef(0),q=C.exports.useRef(null),he=C.exports.useRef("right"),de=C.exports.useRef(0),ve=y?Xz:C.exports.Fragment,Ee=y?{as:rv,allowPinchZoom:!0}:void 0,xe=U=>{var ee,ae;const X=W.current+U,me=L().filter(qe=>!qe.disabled),ye=document.activeElement,Se=(ee=me.find(qe=>qe.ref.current===ye))===null||ee===void 0?void 0:ee.textValue,He=me.map(qe=>qe.textValue),je=R5e(He,X,Se),ut=(ae=me.find(qe=>qe.textValue===je))===null||ae===void 0?void 0:ae.ref.current;(function qe(ot){W.current=ot,window.clearTimeout(z.current),ot!==""&&(z.current=window.setTimeout(()=>qe(""),1e3))})(X),ut&&setTimeout(()=>ut.focus())};C.exports.useEffect(()=>()=>window.clearTimeout(z.current),[]),$3e();const Z=C.exports.useCallback(U=>{var ee,ae;return he.current===((ee=q.current)===null||ee===void 0?void 0:ee.side)&&N5e(U,(ae=q.current)===null||ae===void 0?void 0:ae.area)},[]);return C.exports.createElement(S5e,{scope:n,searchRef:W,onItemEnter:C.exports.useCallback(U=>{Z(U)&&U.preventDefault()},[Z]),onItemLeave:C.exports.useCallback(U=>{var ee;Z(U)||((ee=D.current)===null||ee===void 0||ee.focus(),O(null))},[Z]),onTriggerLeave:C.exports.useCallback(U=>{Z(U)&&U.preventDefault()},[Z]),pointerGraceTimerRef:V,onPointerGraceIntentChange:C.exports.useCallback(U=>{q.current=U},[])},C.exports.createElement(ve,Ee,C.exports.createElement(H3e,{asChild:!0,trapped:i,onMountAutoFocus:Gn(o,U=>{var ee;U.preventDefault(),(ee=D.current)===null||ee===void 0||ee.focus()}),onUnmountAutoFocus:a},C.exports.createElement(z3e,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:p,onInteractOutside:g,onDismiss:m},C.exports.createElement(l5e,En({asChild:!0},k,{dir:T.dir,orientation:"vertical",loop:r,currentTabStopId:I,onCurrentTabStopIdChange:O,onEntryFocus:U=>{T.isUsingKeyboardRef.current||U.preventDefault()}}),C.exports.createElement(U4e,En({role:"menu","aria-orientation":"vertical","data-state":A5e(S.open),"data-radix-menu-content":"",dir:T.dir},E,b,{ref:N,style:{outline:"none",...b.style},onKeyDown:Gn(b.onKeyDown,U=>{const ae=U.target.closest("[data-radix-menu-content]")===U.currentTarget,X=U.ctrlKey||U.altKey||U.metaKey,me=U.key.length===1;ae&&(U.key==="Tab"&&U.preventDefault(),!X&&me&&xe(U.key));const ye=D.current;if(U.target!==ye||!f5e.includes(U.key))return;U.preventDefault();const He=L().filter(je=>!je.disabled).map(je=>je.ref.current);y$.includes(U.key)&&He.reverse(),I5e(He)}),onBlur:Gn(e.onBlur,U=>{U.currentTarget.contains(U.target)||(window.clearTimeout(z.current),W.current="")}),onPointerMove:Gn(e.onPointerMove,g8(U=>{const ee=U.target,ae=de.current!==U.clientX;if(U.currentTarget.contains(ee)&&ae){const X=U.clientX>de.current?"right":"left";he.current=X,de.current=U.clientX}}))})))))))}),p8="MenuItem",bA="menu.itemSelect",k5e=C.exports.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...i}=e,o=C.exports.useRef(null),a=r_(p8,e.__scopeMenu),s=S$(p8,e.__scopeMenu),l=$a(t,o),c=C.exports.useRef(!1),p=()=>{const g=o.current;if(!n&&g){const m=new CustomEvent(bA,{bubbles:!0,cancelable:!0});g.addEventListener(bA,y=>r?.(y),{once:!0}),YB(g,m),m.defaultPrevented?c.current=!1:a.onClose()}};return C.exports.createElement(E5e,En({},i,{ref:l,disabled:n,onClick:Gn(e.onClick,p),onPointerDown:g=>{var m;(m=e.onPointerDown)===null||m===void 0||m.call(e,g),c.current=!0},onPointerUp:Gn(e.onPointerUp,g=>{var m;c.current||(m=g.currentTarget)===null||m===void 0||m.click()}),onKeyDown:Gn(e.onKeyDown,g=>{const m=s.searchRef.current!=="";n||m&&g.key===" "||c5e.includes(g.key)&&(g.currentTarget.click(),g.preventDefault())})}))}),E5e=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:i,...o}=e,a=S$(p8,n),s=b$(n),l=C.exports.useRef(null),c=$a(t,l),[p,g]=C.exports.useState(!1),[m,y]=C.exports.useState("");return C.exports.useEffect(()=>{const b=l.current;if(b){var S;y(((S=b.textContent)!==null&&S!==void 0?S:"").trim())}},[o.children]),C.exports.createElement(h8.ItemSlot,{scope:n,disabled:r,textValue:i??m},C.exports.createElement(u5e,En({asChild:!0},s,{focusable:!r}),C.exports.createElement(yu.div,En({role:"menuitem","data-highlighted":p?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0},o,{ref:c,onPointerMove:Gn(e.onPointerMove,g8(b=>{r?a.onItemLeave(b):(a.onItemEnter(b),b.defaultPrevented||b.currentTarget.focus())})),onPointerLeave:Gn(e.onPointerLeave,g8(b=>a.onItemLeave(b))),onFocus:Gn(e.onFocus,()=>g(!0)),onBlur:Gn(e.onBlur,()=>g(!1))}))))}),P5e="MenuRadioGroup";th(P5e,{value:void 0,onValueChange:()=>{}});const T5e="MenuItemIndicator";th(T5e,{checked:!1});const L5e="MenuSub";th(L5e);function A5e(e){return e?"open":"closed"}function I5e(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function M5e(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function R5e(e,t,n){const i=t.length>1&&Array.from(t).every(c=>c===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let a=M5e(e,Math.max(o,0));i.length===1&&(a=a.filter(c=>c!==n));const l=a.find(c=>c.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function O5e(e,t){const{x:n,y:r}=e;let i=!1;for(let o=0,a=t.length-1;or!=p>r&&n<(c-s)*(r-l)/(p-l)+s&&(i=!i)}return i}function N5e(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return O5e(n,t)}function g8(e){return t=>t.pointerType==="mouse"?e(t):void 0}const D5e=v5e,z5e=y5e,F5e=w5e,B5e=k5e,C$="ContextMenu",[$5e,BCe]=Iv(C$,[x$]),xx=x$(),[H5e,_$]=$5e(C$),W5e=e=>{const{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:o=!0}=e,[a,s]=C.exports.useState(!1),l=xx(t),c=Cl(r),p=C.exports.useCallback(g=>{s(g),c(g)},[c]);return C.exports.createElement(H5e,{scope:t,open:a,onOpenChange:p,modal:o},C.exports.createElement(D5e,En({},l,{dir:i,open:a,onOpenChange:p,modal:o}),n))},V5e="ContextMenuTrigger",U5e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=_$(V5e,n),o=xx(n),a=C.exports.useRef({x:0,y:0}),s=C.exports.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),l=C.exports.useRef(0),c=C.exports.useCallback(()=>window.clearTimeout(l.current),[]),p=g=>{a.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return C.exports.useEffect(()=>c,[c]),C.exports.createElement(C.exports.Fragment,null,C.exports.createElement(z5e,En({},o,{virtualRef:s})),C.exports.createElement(yu.span,En({"data-state":i.open?"open":"closed"},r,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:Gn(e.onContextMenu,g=>{c(),p(g),g.preventDefault()}),onPointerDown:Gn(e.onPointerDown,vy(g=>{c(),l.current=window.setTimeout(()=>p(g),700)})),onPointerMove:Gn(e.onPointerMove,vy(c)),onPointerCancel:Gn(e.onPointerCancel,vy(c)),onPointerUp:Gn(e.onPointerUp,vy(c))})))}),G5e="ContextMenuContent",j5e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=_$(G5e,n),o=xx(n),a=C.exports.useRef(!1);return C.exports.createElement(F5e,En({},o,r,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,["--radix-context-menu-content-transform-origin"]:"var(--radix-popper-transform-origin)"}}))}),q5e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=xx(n);return C.exports.createElement(B5e,En({},i,r,{ref:t}))});function vy(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const K5e=W5e,Z5e=U5e,Y5e=j5e,rf=q5e,X5e=St([e=>e.gallery,e=>e.options,Cr],(e,t,n)=>{const{categories:r,currentCategory:i,currentImageUuid:o,shouldPinGallery:a,shouldShowGallery:s,galleryScrollPosition:l,galleryImageMinimumWidth:c,galleryImageObjectFit:p,shouldHoldGalleryOpen:g,shouldAutoSwitchToNewImages:m,galleryWidth:y}=e;return{currentImageUuid:o,shouldPinGallery:a,shouldShowGallery:s,galleryScrollPosition:l,galleryImageMinimumWidth:c,galleryImageObjectFit:p,galleryGridTemplateColumns:`repeat(auto-fill, minmax(${c}px, auto))`,activeTabName:n,shouldHoldGalleryOpen:g,shouldAutoSwitchToNewImages:m,images:r[i].images,areMoreImagesAvailable:r[i].areMoreImagesAvailable,currentCategory:i,galleryWidth:y}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),Q5e=St([e=>e.options,e=>e.gallery,e=>e.system,Cr],(e,t,n,r)=>({mayDeleteImage:n.isConnected&&!n.isProcessing,galleryImageObjectFit:t.galleryImageObjectFit,galleryImageMinimumWidth:t.galleryImageMinimumWidth,activeTabName:r}),{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),J5e=(e,t)=>e.image.uuid===t.image.uuid&&e.isSelected===t.isSelected,exe=C.exports.memo(e=>{const t=Xe(),{activeTabName:n,galleryImageObjectFit:r,galleryImageMinimumWidth:i,mayDeleteImage:o}=Me(Q5e),{image:a,isSelected:s}=e,{url:l,uuid:c,metadata:p}=a,[g,m]=C.exports.useState(!1),y=ld(),b=()=>m(!0),S=()=>m(!1),T=()=>{a.metadata&&t(Px(a.metadata.image.prompt)),y({title:"Prompt Set",status:"success",duration:2500,isClosable:!0})},E=()=>{a.metadata&&t(Ov(a.metadata.image.seed)),y({title:"Seed Set",status:"success",duration:2500,isClosable:!0})},k=()=>{t(ov(a)),n!=="img2img"&&t(Ea("img2img")),y({title:"Sent to Image To Image",status:"success",duration:2500,isClosable:!0})},L=()=>{t(A4(a)),n!=="inpainting"&&t(Ea("inpainting")),y({title:"Sent to Inpainting",status:"success",duration:2500,isClosable:!0})},I=()=>{p&&t(W6e(p)),y({title:"Parameters Set",status:"success",duration:2500,isClosable:!0})},O=async()=>{if(p?.image?.init_image_path&&(await fetch(p.image.init_image_path)).ok){t(Ea("img2img")),t(V6e(p)),y({title:"Initial Image Set",status:"success",duration:2500,isClosable:!0});return}y({title:"Initial Image Not Set",description:"Could not load initial image.",status:"error",duration:2500,isClosable:!0})};return ne(K5e,{children:[w(Z5e,{children:ne(id,{position:"relative",className:"hoverable-image",onMouseOver:b,onMouseOut:S,children:[w($5,{className:"hoverable-image-image",objectFit:r,rounded:"md",src:l,loading:"lazy"}),w("div",{className:"hoverable-image-content",onClick:()=>t(VB(a)),children:s&&w(ha,{width:"50%",height:"50%",as:G2e,className:"hoverable-image-check"})}),g&&i>=64&&w("div",{className:"hoverable-image-delete-button",children:w($i,{label:"Delete image",hasArrow:!0,children:w(o8,{image:a,children:w(gu,{"aria-label":"Delete image",icon:w(dye,{}),size:"xs",variant:"imageHoverIconButton",fontSize:14,isDisabled:!o})})})})]},c)}),ne(Y5e,{className:"hoverable-image-context-menu",sticky:"always",children:[w(rf,{onClickCapture:T,disabled:a?.metadata?.image?.prompt===void 0,children:"Use Prompt"}),w(rf,{onClickCapture:E,disabled:a?.metadata?.image?.seed===void 0,children:"Use Seed"}),w(rf,{onClickCapture:I,disabled:!["txt2img","img2img"].includes(a?.metadata?.image?.type),children:"Use All Parameters"}),w($i,{label:"Load initial image used for this generation",children:w(rf,{onClickCapture:O,disabled:a?.metadata?.image?.type!=="img2img",children:"Use Initial Image"})}),w(rf,{onClickCapture:k,children:"Send to Image To Image"}),w(rf,{onClickCapture:L,children:"Send to Inpainting"}),w(o8,{image:a,children:w(rf,{"data-warning":!0,children:"Delete Image"})})]})]})},J5e),i_=e=>{const{label:t,styleClass:n,formControlProps:r,formLabelProps:i,sliderTrackProps:o,sliderInnerTrackProps:a,sliderThumbProps:s,sliderThumbTooltipProps:l,...c}=e;return w(rd,{className:`invokeai__slider-form-control ${n}`,...r,children:ne("div",{className:"invokeai__slider-inner-container",children:[w(Yf,{className:"invokeai__slider-form-label",whiteSpace:"nowrap",...i,children:t}),ne(g7,{className:"invokeai__slider-root","aria-label":t,...c,children:[w(wF,{className:"invokeai__slider-track",...o,children:w(CF,{className:"invokeai__slider-filled-track",...a})}),w($i,{className:"invokeai__slider-thumb-tooltip",placement:"top",hasArrow:!0,...l,children:w(SF,{className:"invokeai__slider-thumb",...s})})]})]})})};function k$(e){return ft({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12 19c.946 0 1.81-.103 2.598-.281l-1.757-1.757c-.273.021-.55.038-.841.038-5.351 0-7.424-3.846-7.926-5a8.642 8.642 0 0 1 1.508-2.297L4.184 8.305c-1.538 1.667-2.121 3.346-2.132 3.379a.994.994 0 0 0 0 .633C2.073 12.383 4.367 19 12 19zm0-14c-1.837 0-3.346.396-4.604.981L3.707 2.293 2.293 3.707l18 18 1.414-1.414-3.319-3.319c2.614-1.951 3.547-4.615 3.561-4.657a.994.994 0 0 0 0-.633C21.927 11.617 19.633 5 12 5zm4.972 10.558-2.28-2.28c.19-.39.308-.819.308-1.278 0-1.641-1.359-3-3-3-.459 0-.888.118-1.277.309L8.915 7.501A9.26 9.26 0 0 1 12 7c5.351 0 7.424 3.846 7.926 5-.302.692-1.166 2.342-2.954 3.558z"}}]})(e)}function E$(e){return ft({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12 16c1.671 0 3-1.331 3-3s-1.329-3-3-3-3 1.331-3 3 1.329 3 3 3z"}},{tag:"path",attr:{d:"M20.817 11.186a8.94 8.94 0 0 0-1.355-3.219 9.053 9.053 0 0 0-2.43-2.43 8.95 8.95 0 0 0-3.219-1.355 9.028 9.028 0 0 0-1.838-.18V2L8 5l3.975 3V6.002c.484-.002.968.044 1.435.14a6.961 6.961 0 0 1 2.502 1.053 7.005 7.005 0 0 1 1.892 1.892A6.967 6.967 0 0 1 19 13a7.032 7.032 0 0 1-.55 2.725 7.11 7.11 0 0 1-.644 1.188 7.2 7.2 0 0 1-.858 1.039 7.028 7.028 0 0 1-3.536 1.907 7.13 7.13 0 0 1-2.822 0 6.961 6.961 0 0 1-2.503-1.054 7.002 7.002 0 0 1-1.89-1.89A6.996 6.996 0 0 1 5 13H3a9.02 9.02 0 0 0 1.539 5.034 9.096 9.096 0 0 0 2.428 2.428A8.95 8.95 0 0 0 12 22a9.09 9.09 0 0 0 1.814-.183 9.014 9.014 0 0 0 3.218-1.355 8.886 8.886 0 0 0 1.331-1.099 9.228 9.228 0 0 0 1.1-1.332A8.952 8.952 0 0 0 21 13a9.09 9.09 0 0 0-.183-1.814z"}}]})(e)}function P$(e){return ft({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12 9a3.02 3.02 0 0 0-3 3c0 1.642 1.358 3 3 3 1.641 0 3-1.358 3-3 0-1.641-1.359-3-3-3z"}},{tag:"path",attr:{d:"M12 5c-7.633 0-9.927 6.617-9.948 6.684L1.946 12l.105.316C2.073 12.383 4.367 19 12 19s9.927-6.617 9.948-6.684l.106-.316-.105-.316C21.927 11.617 19.633 5 12 5zm0 12c-5.351 0-7.424-3.846-7.926-5C4.578 10.842 6.652 7 12 7c5.351 0 7.424 3.846 7.926 5-.504 1.158-2.578 5-7.926 5z"}}]})(e)}const txe=320;function nxe(){const e=Xe(),t=ld(),{images:n,currentCategory:r,currentImageUuid:i,shouldPinGallery:o,shouldShowGallery:a,galleryScrollPosition:s,galleryImageMinimumWidth:l,galleryGridTemplateColumns:c,activeTabName:p,galleryImageObjectFit:g,shouldHoldGalleryOpen:m,shouldAutoSwitchToNewImages:y,areMoreImagesAvailable:b,galleryWidth:S}=Me(X5e),[T,E]=C.exports.useState(300),[k,L]=C.exports.useState(590),[I,O]=C.exports.useState(S>=txe);C.exports.useEffect(()=>{!o||(p==="inpainting"?(e(dy(190)),E(190),L(190)):p==="img2img"?(e(dy(Math.min(Math.max(Number(S),0),490))),L(490)):(e(dy(Math.min(Math.max(Number(S),0),590))),L(590)),e(su(!0)))},[e,p,o,S]),C.exports.useEffect(()=>{o||L(window.innerWidth)},[o]);const D=C.exports.useRef(null),N=C.exports.useRef(null),z=C.exports.useRef(null),W=()=>{e(r3e(!o)),e(su(!0))},V=()=>{a?he():q()},q=()=>{e(f3(!0)),o&&e(su(!0))},he=()=>{e(f3(!1)),e(i3e(N.current?N.current.scrollTop:0)),e(a3e(!1))},de=()=>{e(r8(r))},ve=U=>{e(nf(U)),e(su(!0))},Ee=()=>{z.current=window.setTimeout(()=>he(),500)},xe=()=>{z.current&&window.clearTimeout(z.current)};_t("g",()=>{V()},[a]),_t("left",()=>{e(GB())}),_t("right",()=>{e(UB())}),_t("shift+g",()=>{W()},[o]),_t("esc",()=>{o||e(f3(!1))},[o]);const Z=32;return _t("shift+up",()=>{if(!(l>=256)&&l<256){const U=l+Z;U<=256?(e(nf(U)),t({title:`Gallery Thumbnail Size set to ${U}`,status:"success",duration:1e3,isClosable:!0})):(e(nf(256)),t({title:"Gallery Thumbnail Size set to 256",status:"success",duration:1e3,isClosable:!0}))}},[l]),_t("shift+down",()=>{if(!(l<=32)&&l>32){const U=l-Z;U>32?(e(nf(U)),t({title:`Gallery Thumbnail Size set to ${U}`,status:"success",duration:1e3,isClosable:!0})):(e(nf(32)),t({title:"Gallery Thumbnail Size set to 32",status:"success",duration:1e3,isClosable:!0}))}},[l]),_t("shift+r",()=>{e(nf(64)),t({title:"Reset Gallery Image Size",status:"success",duration:2500,isClosable:!0})},[l]),C.exports.useEffect(()=>{!N.current||(N.current.scrollTop=s)},[s,a]),C.exports.useEffect(()=>{O(S>=280)},[S]),OB(D,he,!o),w(RB,{nodeRef:D,in:a||m&&!o,unmountOnExit:!0,timeout:200,classNames:"image-gallery-wrapper",children:w("div",{className:"image-gallery-wrapper",style:{zIndex:o?1:100},"data-pinned":o,ref:D,onMouseLeave:o?void 0:Ee,onMouseEnter:o?void 0:xe,onMouseOver:o?void 0:xe,children:ne(KB,{minWidth:T,maxWidth:k,className:"image-gallery-popup",handleStyles:{left:{width:"15px"}},enable:{top:!1,right:!1,bottom:!1,left:!0,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},size:{width:S,height:o?"100%":"100vh"},onResizeStop:(U,ee,ae,X)=>{e(dy(ht.clamp(Number(S)+X.width,0,Number(k)))),ae.removeAttribute("data-resize-alert")},onResize:(U,ee,ae,X)=>{const me=ht.clamp(Number(S)+X.width,0,Number(k));me>=280&&!I?O(!0):me<280&&I&&O(!1),me>=k?ae.setAttribute("data-resize-alert","true"):ae.removeAttribute("data-resize-alert")},children:[ne("div",{className:"image-gallery-header",children:[w("div",{children:w(au,{size:"sm",isAttached:!0,variant:"solid",className:"image-gallery-category-btn-group",children:I?ne(Fn,{children:[w(Oa,{"data-selected":r==="result",onClick:()=>e(cy("result")),children:"Invocations"}),w(Oa,{"data-selected":r==="user",onClick:()=>e(cy("user")),children:"User"})]}):ne(Fn,{children:[w(Ut,{"aria-label":"Show Invocations",tooltip:"Show Invocations","data-selected":r==="result",icon:w(Y2e,{}),onClick:()=>e(cy("result"))}),w(Ut,{"aria-label":"Show Uploads",tooltip:"Show Uploads","data-selected":r==="user",icon:w(gye,{}),onClick:()=>e(cy("user"))})]})})}),ne("div",{children:[w(Df,{isLazy:!0,trigger:"hover",placement:"left",triggerComponent:w(Ut,{size:"sm","aria-label":"Gallery Settings",icon:w(_B,{}),className:"image-gallery-icon-btn",cursor:"pointer"}),children:ne("div",{className:"image-gallery-settings-popover",children:[ne("div",{children:[w(i_,{value:l,onChange:ve,min:32,max:256,width:100,label:"Image Size",formLabelProps:{style:{fontSize:"0.9rem"}},sliderThumbTooltipProps:{label:`${l}px`}}),w(Ut,{size:"sm","aria-label":"Reset",tooltip:"Reset Size",onClick:()=>e(nf(64)),icon:w(E$,{}),"data-selected":o,styleClass:"image-gallery-icon-btn"})]}),w("div",{children:w(nv,{label:"Maintain Aspect Ratio",isChecked:g==="contain",onChange:()=>e(o3e(g==="contain"?"cover":"contain"))})}),w("div",{children:w(nv,{label:"Auto-Switch to New Images",isChecked:y,onChange:U=>e(s3e(U.target.checked))})})]})}),w(Ut,{size:"sm",className:"image-gallery-icon-btn","aria-label":"Pin Gallery",tooltip:"Pin Gallery (Shift+G)",onClick:W,icon:o?w(LB,{}):w(AB,{})})]})]}),w("div",{className:"image-gallery-container",ref:N,children:n.length||b?ne(Fn,{children:[w("div",{className:"image-gallery",style:{gridTemplateColumns:c},children:n.map(U=>{const{uuid:ee}=U;return w(exe,{image:U,isSelected:i===ee},ee)})}),w(Oa,{onClick:de,isDisabled:!b,className:"image-gallery-load-more-btn",children:b?"Load More":"All Images Loaded"})]}):ne("div",{className:"image-gallery-container-placeholder",children:[w(bB,{}),w("p",{children:"No Images In Gallery"})]})})]})})})}const rxe=St([e=>e.options,Cr],(e,t)=>{const{showDualDisplay:n,shouldPinOptionsPanel:r}=e;return{showDualDisplay:n,shouldPinOptionsPanel:r,activeTabName:t}}),o_=e=>{const t=Xe(),{optionsPanel:n,children:r,styleClass:i}=e,{showDualDisplay:o,activeTabName:a}=Me(rxe),s=()=>{t(U6e(!o))};return _t("shift+j",()=>{s()},{enabled:a==="inpainting"},[o]),w("div",{className:i?`workarea-wrapper ${i}`:"workarea-wrapper",children:ne("div",{className:"workarea-main",children:[n,ne("div",{className:"workarea-children-wrapper",children:[r,a==="inpainting"&&w($i,{label:"Toggle Split View",children:w("div",{className:"workarea-split-button","data-selected":o,onClick:s,children:w(v3e,{})})})]}),w(nxe,{})]})})};function ixe(){return w(o_,{optionsPanel:w(Yye,{}),children:w(m3e,{})})}function oxe(){const e=Xe(),t=Me(r=>r.inpainting.shouldShowBoundingBoxFill);return w(nv,{label:"Darken Outside Box",isChecked:t,onChange:()=>{e(Wye(!t))},styleClass:"inpainting-bounding-box-darken"})}const axe=St(e=>e.inpainting,e=>{const{canvasDimensions:t,boundingBoxDimensions:n,shouldLockBoundingBox:r}=e;return{canvasDimensions:t,boundingBoxDimensions:n,shouldLockBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function SA(e){const{dimension:t}=e,n=Xe(),{shouldLockBoundingBox:r,canvasDimensions:i,boundingBoxDimensions:o}=Me(axe),a=i[t],s=o[t],l=p=>{t=="width"&&n(Ig({...o,width:Math.floor(p)})),t=="height"&&n(Ig({...o,height:Math.floor(p)}))},c=()=>{t=="width"&&n(Ig({...o,width:Math.floor(a)})),t=="height"&&n(Ig({...o,height:Math.floor(a)}))};return ne("div",{className:"inpainting-bounding-box-dimensions-slider-numberinput",children:[w(i_,{isDisabled:r,label:"Box H",min:64,max:rl(a,64),step:64,value:s,onChange:l,width:"5rem"}),w(no,{isDisabled:r,value:s,onChange:l,min:64,max:rl(a,64),step:64,padding:"0",width:"5rem"}),w(Ut,{size:"sm","aria-label":"Reset Height",tooltip:"Reset Height",onClick:c,icon:w(E$,{}),styleClass:"inpainting-bounding-box-reset-icon-btn",isDisabled:r||a===s})]})}function sxe(){const e=Me(r=>r.inpainting.shouldLockBoundingBox),t=Xe();return w(nv,{label:"Lock Bounding Box",isChecked:e,onChange:()=>{t(K7(!e))},styleClass:"inpainting-bounding-box-darken"})}function lxe(){const e=Me(r=>r.inpainting.shouldShowBoundingBox),t=Xe();return w(Ut,{"aria-label":"Toggle Bounding Box Visibility",icon:e?w(P$,{size:22}):w(k$,{size:22}),onClick:()=>t(FB(!e)),background:"none",padding:0})}const uxe=()=>ne("div",{className:"inpainting-bounding-box-settings",children:[ne("div",{className:"inpainting-bounding-box-header",children:[w("p",{children:"Inpaint Box"}),w(lxe,{})]}),ne("div",{className:"inpainting-bounding-box-settings-items",children:[w(SA,{dimension:"width"}),w(SA,{dimension:"height"}),ne(Dn,{alignItems:"center",justifyContent:"space-between",children:[w(oxe,{}),w(sxe,{})]})]})]}),cxe=St(e=>e.inpainting,e=>{const{inpaintReplace:t,shouldUseInpaintReplace:n}=e;return{inpaintReplace:t,shouldUseInpaintReplace:n}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function dxe(){const{inpaintReplace:e,shouldUseInpaintReplace:t}=Me(cxe),n=Xe();return ne("div",{style:{display:"flex",alignItems:"center",padding:"0 1rem 0 0.2rem"},children:[w(no,{label:"Inpaint Replace",value:e,min:0,max:1,step:.05,width:"auto",formControlProps:{style:{paddingRight:"1rem"}},isInteger:!1,isDisabled:!t,onChange:r=>{n(Gye(r))}}),w(wl,{isChecked:t,onChange:r=>n(Uye(r.target.checked))})]})}const fxe=St(e=>e.inpainting,e=>{const{pastLines:t,futureLines:n}=e;return{mayClearBrushHistory:!(n.length>0||t.length>0)}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function hxe(){const e=Xe(),t=ld(),{mayClearBrushHistory:n}=Me(fxe);return w(_c,{onClick:()=>{e(Vye()),t({title:"Brush Stroke History Cleared",status:"success",duration:2500,isClosable:!0})},tooltip:"Clears brush stroke history",disabled:n,styleClass:"inpainting-options-btn",children:"Clear Brush History"})}function pxe(){return ne(Fn,{children:[w(dxe,{}),w(uxe,{}),w(hxe,{})]})}function gxe(){const e=Me(n=>n.options.showAdvancedOptions),t={seed:{header:w(D7,{}),feature:Ji.SEED,options:w(z7,{})},variations:{header:w(B7,{}),feature:Ji.VARIATIONS,options:w($7,{})},face_restore:{header:w(R7,{}),feature:Ji.FACE_CORRECTION,options:w(fx,{})},upscale:{header:w(F7,{}),feature:Ji.UPSCALE,options:w(hx,{})}};return ne(Z7,{children:[w(j7,{}),w(G7,{}),w(V7,{}),w(dB,{label:"Image To Image Strength",styleClass:"main-option-block image-to-image-strength-main-option"}),w(pxe,{}),w(H7,{}),e?w(U7,{accordionInfo:t}):null]})}var mxe=Math.PI/180;function vxe(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}const i0=typeof global<"u"?global:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},et={_global:i0,version:"8.3.13",isBrowser:vxe(),isUnminified:/param/.test(function(e){}.toString()),dblClickWindow:400,getAngle(e){return et.angleDeg?e*mxe:e},enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,pixelRatio:typeof window<"u"&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging(){return et.DD.isDragging},isDragReady(){return!!et.DD.node},document:i0.document,_injectGlobal(e){i0.Konva=e}},hr=e=>{et[e.prototype.getClassName()]=e};et._injectGlobal(et);class Qo{constructor(t=[1,0,0,1,0,0]){this.dirty=!1,this.m=t&&t.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new Qo(this.m)}copyInto(t){t.m[0]=this.m[0],t.m[1]=this.m[1],t.m[2]=this.m[2],t.m[3]=this.m[3],t.m[4]=this.m[4],t.m[5]=this.m[5]}point(t){var n=this.m;return{x:n[0]*t.x+n[2]*t.y+n[4],y:n[1]*t.x+n[3]*t.y+n[5]}}translate(t,n){return this.m[4]+=this.m[0]*t+this.m[2]*n,this.m[5]+=this.m[1]*t+this.m[3]*n,this}scale(t,n){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=n,this.m[3]*=n,this}rotate(t){var n=Math.cos(t),r=Math.sin(t),i=this.m[0]*n+this.m[2]*r,o=this.m[1]*n+this.m[3]*r,a=this.m[0]*-r+this.m[2]*n,s=this.m[1]*-r+this.m[3]*n;return this.m[0]=i,this.m[1]=o,this.m[2]=a,this.m[3]=s,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(t,n){var r=this.m[0]+this.m[2]*n,i=this.m[1]+this.m[3]*n,o=this.m[2]+this.m[0]*t,a=this.m[3]+this.m[1]*t;return this.m[0]=r,this.m[1]=i,this.m[2]=o,this.m[3]=a,this}multiply(t){var n=this.m[0]*t.m[0]+this.m[2]*t.m[1],r=this.m[1]*t.m[0]+this.m[3]*t.m[1],i=this.m[0]*t.m[2]+this.m[2]*t.m[3],o=this.m[1]*t.m[2]+this.m[3]*t.m[3],a=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],s=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=n,this.m[1]=r,this.m[2]=i,this.m[3]=o,this.m[4]=a,this.m[5]=s,this}invert(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),n=this.m[3]*t,r=-this.m[1]*t,i=-this.m[2]*t,o=this.m[0]*t,a=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=n,this.m[1]=r,this.m[2]=i,this.m[3]=o,this.m[4]=a,this.m[5]=s,this}getMatrix(){return this.m}decompose(){var t=this.m[0],n=this.m[1],r=this.m[2],i=this.m[3],o=this.m[4],a=this.m[5],s=t*i-n*r;let l={x:o,y:a,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(t!=0||n!=0){var c=Math.sqrt(t*t+n*n);l.rotation=n>0?Math.acos(t/c):-Math.acos(t/c),l.scaleX=c,l.scaleY=s/c,l.skewX=(t*r+n*i)/s,l.skewY=0}else if(r!=0||i!=0){var p=Math.sqrt(r*r+i*i);l.rotation=Math.PI/2-(i>0?Math.acos(-r/p):-Math.acos(r/p)),l.scaleX=s/p,l.scaleY=p,l.skewX=0,l.skewY=(t*r+n*i)/s}return l.rotation=se._getRotation(l.rotation),l}}var yxe="[object Array]",xxe="[object Number]",bxe="[object String]",Sxe="[object Boolean]",wxe=Math.PI/180,Cxe=180/Math.PI,NS="#",_xe="",kxe="0",Exe="Konva warning: ",wA="Konva error: ",Pxe="rgb(",DS={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},Txe=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,yy=[];const Lxe=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(e){setTimeout(e,60)},se={_isElement(e){return!!(e&&e.nodeType==1)},_isFunction(e){return!!(e&&e.constructor&&e.call&&e.apply)},_isPlainObject(e){return!!e&&e.constructor===Object},_isArray(e){return Object.prototype.toString.call(e)===yxe},_isNumber(e){return Object.prototype.toString.call(e)===xxe&&!isNaN(e)&&isFinite(e)},_isString(e){return Object.prototype.toString.call(e)===bxe},_isBoolean(e){return Object.prototype.toString.call(e)===Sxe},isObject(e){return e instanceof Object},isValidSelector(e){if(typeof e!="string")return!1;var t=e[0];return t==="#"||t==="."||t===t.toUpperCase()},_sign(e){return e===0||e>0?1:-1},requestAnimFrame(e){yy.push(e),yy.length===1&&Lxe(function(){const t=yy;yy=[],t.forEach(function(n){n()})})},createCanvasElement(){var e=document.createElement("canvas");try{e.style=e.style||{}}catch{}return e},createImageElement(){return document.createElement("img")},_isInDocument(e){for(;e=e.parentNode;)if(e==document)return!0;return!1},_urlToImage(e,t){var n=se.createImageElement();n.onload=function(){t(n)},n.src=e},_rgbToHex(e,t,n){return((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)},_hexToRgb(e){e=e.replace(NS,_xe);var t=parseInt(e,16);return{r:t>>16&255,g:t>>8&255,b:t&255}},getRandomColor(){for(var e=(Math.random()*16777215<<0).toString(16);e.length<6;)e=kxe+e;return NS+e},getRGB(e){var t;return e in DS?(t=DS[e],{r:t[0],g:t[1],b:t[2]}):e[0]===NS?this._hexToRgb(e.substring(1)):e.substr(0,4)===Pxe?(t=Txe.exec(e.replace(/ /g,"")),{r:parseInt(t[1],10),g:parseInt(t[2],10),b:parseInt(t[3],10)}):{r:0,g:0,b:0}},colorToRGBA(e){return e=e||"black",se._namedColorToRBA(e)||se._hex3ColorToRGBA(e)||se._hex6ColorToRGBA(e)||se._rgbColorToRGBA(e)||se._rgbaColorToRGBA(e)||se._hslColorToRGBA(e)},_namedColorToRBA(e){var t=DS[e.toLowerCase()];return t?{r:t[0],g:t[1],b:t[2],a:1}:null},_rgbColorToRGBA(e){if(e.indexOf("rgb(")===0){e=e.match(/rgb\(([^)]+)\)/)[1];var t=e.split(/ *, */).map(Number);return{r:t[0],g:t[1],b:t[2],a:1}}},_rgbaColorToRGBA(e){if(e.indexOf("rgba(")===0){e=e.match(/rgba\(([^)]+)\)/)[1];var t=e.split(/ *, */).map((n,r)=>n.slice(-1)==="%"?r===3?parseInt(n)/100:parseInt(n)/100*255:Number(n));return{r:t[0],g:t[1],b:t[2],a:t[3]}}},_hex6ColorToRGBA(e){if(e[0]==="#"&&e.length===7)return{r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16),a:1}},_hex3ColorToRGBA(e){if(e[0]==="#"&&e.length===4)return{r:parseInt(e[1]+e[1],16),g:parseInt(e[2]+e[2],16),b:parseInt(e[3]+e[3],16),a:1}},_hslColorToRGBA(e){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(e)){const[t,...n]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e),r=Number(n[0])/360,i=Number(n[1])/100,o=Number(n[2])/100;let a,s,l;if(i===0)return l=o*255,{r:Math.round(l),g:Math.round(l),b:Math.round(l),a:1};o<.5?a=o*(1+i):a=o+i-o*i;const c=2*o-a,p=[0,0,0];for(let g=0;g<3;g++)s=r+1/3*-(g-1),s<0&&s++,s>1&&s--,6*s<1?l=c+(a-c)*6*s:2*s<1?l=a:3*s<2?l=c+(a-c)*(2/3-s)*6:l=c,p[g]=l*255;return{r:Math.round(p[0]),g:Math.round(p[1]),b:Math.round(p[2]),a:1}}},haveIntersection(e,t){return!(t.x>e.x+e.width||t.x+t.widthe.y+e.height||t.y+t.height1?(a=n,s=r,l=(n-i)*(n-i)+(r-o)*(r-o)):(a=e+p*(n-e),s=t+p*(r-t),l=(a-i)*(a-i)+(s-o)*(s-o))}return[a,s,l]},_getProjectionToLine(e,t,n){var r=se.cloneObject(e),i=Number.MAX_VALUE;return t.forEach(function(o,a){if(!(!n&&a===t.length-1)){var s=t[(a+1)%t.length],l=se._getProjectionToSegment(o.x,o.y,s.x,s.y,e.x,e.y),c=l[0],p=l[1],g=l[2];gt.length){var a=t;t=e,e=a}for(r=0;r255?255:e<0?0:Math.round(e)}function ze(){if(et.isUnminified)return function(e,t){return se._isNumber(e)||se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}function L$(e){if(et.isUnminified)return function(t,n){let r=se._isNumber(t),i=se._isArray(t)&&t.length==e;return!r&&!i&&se.warn(cd(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}function a_(){if(et.isUnminified)return function(e,t){var n=se._isNumber(e),r=e==="auto";return n||r||se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}function W0(){if(et.isUnminified)return function(e,t){return se._isString(e)||se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}function A$(){if(et.isUnminified)return function(e,t){const n=se._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}function Axe(){if(et.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(se._isArray(e)?e.forEach(function(r){se._isNumber(r)||se.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}function ws(){if(et.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||se.warn(cd(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}function Ixe(e){if(et.isUnminified)return function(t,n){return t==null||se.isObject(t)||se.warn(cd(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}var fg="get",hg="set";const j={addGetterSetter(e,t,n,r,i){j.addGetter(e,t,n),j.addSetter(e,t,r,i),j.addOverloadedGetterSetter(e,t)},addGetter(e,t,n){var r=fg+se._capitalize(t);e.prototype[r]=e.prototype[r]||function(){var i=this.attrs[t];return i===void 0?n:i}},addSetter(e,t,n,r){var i=hg+se._capitalize(t);e.prototype[i]||j.overWriteSetter(e,t,n,r)},overWriteSetter(e,t,n,r){var i=hg+se._capitalize(t);e.prototype[i]=function(o){return n&&o!==void 0&&o!==null&&(o=n.call(this,o,t)),this._setAttr(t,o),r&&r.call(this),this}},addComponentsGetterSetter(e,t,n,r,i){var o=n.length,a=se._capitalize,s=fg+a(t),l=hg+a(t),c,p;e.prototype[s]=function(){var m={};for(c=0;c{this._setAttr(t+a(S),void 0)}),this._fireChangeEvent(t,y,m),i&&i.call(this),this},j.addOverloadedGetterSetter(e,t)},addOverloadedGetterSetter(e,t){var n=se._capitalize(t),r=hg+n,i=fg+n;e.prototype[t]=function(){return arguments.length?(this[r](arguments[0]),this):this[i]()}},addDeprecatedGetterSetter(e,t,n,r){se.error("Adding deprecated "+t);var i=fg+se._capitalize(t),o=t+" property is deprecated and will be removed soon. Look at Konva change log for more information.";e.prototype[i]=function(){se.error(o);var a=this.attrs[t];return a===void 0?n:a},j.addSetter(e,t,r,function(){se.error(o)}),j.addOverloadedGetterSetter(e,t)},backCompat(e,t){se.each(t,function(n,r){var i=e.prototype[r],o=fg+se._capitalize(n),a=hg+se._capitalize(n);function s(){i.apply(this,arguments),se.error('"'+n+'" method is deprecated and will be removed soon. Use ""'+r+'" instead.')}e.prototype[n]=s,e.prototype[o]=s,e.prototype[a]=s})},afterSetFilter(){this._filterUpToDate=!1}};function Mxe(e){var t=[],n=e.length,r=se,i,o;for(i=0;itypeof p=="number"?Math.floor(p):p)),o+=Rxe+c.join(CA)+Oxe)):(o+=s.property,t||(o+=Bxe+s.val)),o+=zxe;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=Hxe&&n.shift()}reset(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)}getCanvas(){return this.canvas}clear(t){var n=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,n.getWidth()/n.pixelRatio,n.getHeight()/n.pixelRatio)}_applyLineCap(t){var n=t.getLineCap();n&&this.setAttr("lineCap",n)}_applyOpacity(t){var n=t.getAbsoluteOpacity();n!==1&&this.setAttr("globalAlpha",n)}_applyLineJoin(t){var n=t.attrs.lineJoin;n&&this.setAttr("lineJoin",n)}setAttr(t,n){this._context[t]=n}arc(t,n,r,i,o,a){this._context.arc(t,n,r,i,o,a)}arcTo(t,n,r,i,o){this._context.arcTo(t,n,r,i,o)}beginPath(){this._context.beginPath()}bezierCurveTo(t,n,r,i,o,a){this._context.bezierCurveTo(t,n,r,i,o,a)}clearRect(t,n,r,i){this._context.clearRect(t,n,r,i)}clip(){this._context.clip()}closePath(){this._context.closePath()}createImageData(t,n){var r=arguments;if(r.length===2)return this._context.createImageData(t,n);if(r.length===1)return this._context.createImageData(t)}createLinearGradient(t,n,r,i){return this._context.createLinearGradient(t,n,r,i)}createPattern(t,n){return this._context.createPattern(t,n)}createRadialGradient(t,n,r,i,o,a){return this._context.createRadialGradient(t,n,r,i,o,a)}drawImage(t,n,r,i,o,a,s,l,c){var p=arguments,g=this._context;p.length===3?g.drawImage(t,n,r):p.length===5?g.drawImage(t,n,r,i,o):p.length===9&&g.drawImage(t,n,r,i,o,a,s,l,c)}ellipse(t,n,r,i,o,a,s,l){this._context.ellipse(t,n,r,i,o,a,s,l)}isPointInPath(t,n){return this._context.isPointInPath(t,n)}fill(t){t?this._context.fill(t):this._context.fill()}fillRect(t,n,r,i){this._context.fillRect(t,n,r,i)}strokeRect(t,n,r,i){this._context.strokeRect(t,n,r,i)}fillText(t,n,r,i){i?this._context.fillText(t,n,r,i):this._context.fillText(t,n,r)}measureText(t){return this._context.measureText(t)}getImageData(t,n,r,i){return this._context.getImageData(t,n,r,i)}lineTo(t,n){this._context.lineTo(t,n)}moveTo(t,n){this._context.moveTo(t,n)}rect(t,n,r,i){this._context.rect(t,n,r,i)}putImageData(t,n,r){this._context.putImageData(t,n,r)}quadraticCurveTo(t,n,r,i){this._context.quadraticCurveTo(t,n,r,i)}restore(){this._context.restore()}rotate(t){this._context.rotate(t)}save(){this._context.save()}scale(t,n){this._context.scale(t,n)}setLineDash(t){this._context.setLineDash?this._context.setLineDash(t):"mozDash"in this._context?this._context.mozDash=t:"webkitLineDash"in this._context&&(this._context.webkitLineDash=t)}getLineDash(){return this._context.getLineDash()}setTransform(t,n,r,i,o,a){this._context.setTransform(t,n,r,i,o,a)}stroke(t){t?this._context.stroke(t):this._context.stroke()}strokeText(t,n,r,i){this._context.strokeText(t,n,r,i)}transform(t,n,r,i,o,a){this._context.transform(t,n,r,i,o,a)}translate(t,n){this._context.translate(t,n)}_enableTrace(){var t=this,n=_A.length,r=this.setAttr,i,o,a=function(s){var l=t[s],c;t[s]=function(){return o=Mxe(Array.prototype.slice.call(arguments,0)),c=l.apply(t,arguments),t._trace({method:s,args:o}),c}};for(i=0;i{t.dragStatus==="dragging"&&(e=!0)}),e},justDragged:!1,get node(){var e;return sn._dragElements.forEach(t=>{e=t.node}),e},_dragElements:new Map,_drag(e){const t=[];sn._dragElements.forEach((n,r)=>{const{node:i}=n,o=i.getStage();o.setPointersPositions(e),n.pointerId===void 0&&(n.pointerId=se._getFirstPointerId(e));const a=o._changedPointerPositions.find(c=>c.id===n.pointerId);if(!!a){if(n.dragStatus!=="dragging"){var s=i.dragDistance(),l=Math.max(Math.abs(a.x-n.startPointerPos.x),Math.abs(a.y-n.startPointerPos.y));if(l{n.fire("dragmove",{type:"dragmove",target:n,evt:e},!0)})},_endDragBefore(e){const t=[];sn._dragElements.forEach(n=>{const{node:r}=n,i=r.getStage();if(e&&i.setPointersPositions(e),!i._changedPointerPositions.find(s=>s.id===n.pointerId))return;(n.dragStatus==="dragging"||n.dragStatus==="stopped")&&(sn.justDragged=!0,et._mouseListenClick=!1,et._touchListenClick=!1,et._pointerListenClick=!1,n.dragStatus="stopped");const a=n.node.getLayer()||n.node instanceof et.Stage&&n.node;a&&t.indexOf(a)===-1&&t.push(a)}),t.forEach(n=>{n.draw()})},_endDragAfter(e){sn._dragElements.forEach((t,n)=>{t.dragStatus==="stopped"&&t.node.fire("dragend",{type:"dragend",target:t.node,evt:e},!0),t.dragStatus!=="dragging"&&sn._dragElements.delete(n)})}};et.isBrowser&&(window.addEventListener("mouseup",sn._endDragBefore,!0),window.addEventListener("touchend",sn._endDragBefore,!0),window.addEventListener("mousemove",sn._drag),window.addEventListener("touchmove",sn._drag),window.addEventListener("mouseup",sn._endDragAfter,!1),window.addEventListener("touchend",sn._endDragAfter,!1));var h3="absoluteOpacity",by="allEventListeners",Ql="absoluteTransform",kA="absoluteScale",pg="canvas",Gxe="Change",jxe="children",qxe="konva",m8="listening",EA="mouseenter",PA="mouseleave",TA="set",LA="Shape",p3=" ",AA="stage",bc="transform",Kxe="Stage",v8="visible",Zxe=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(p3);let Yxe=1;class Fe{constructor(t){this._id=Yxe++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(t),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(t){(t===bc||t===Ql)&&this._cache.get(t)?this._cache.get(t).dirty=!0:t?this._cache.delete(t):this._cache.clear()}_getCache(t,n){var r=this._cache.get(t),i=t===bc||t===Ql,o=r===void 0||i&&r.dirty===!0;return o&&(r=n.call(this),this._cache.set(t,r)),r}_calculate(t,n,r){if(!this._attachedDepsListeners.get(t)){const i=n.map(o=>o+"Change.konva").join(p3);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(pg)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===Ql&&this.fire("absoluteTransformChange")}clearCache(){return this._cache.delete(pg),this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(t){var n=t||{},r={};(n.x===void 0||n.y===void 0||n.width===void 0||n.height===void 0)&&(r=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()}));var i=Math.ceil(n.width||r.width),o=Math.ceil(n.height||r.height),a=n.pixelRatio,s=n.x===void 0?Math.floor(r.x):n.x,l=n.y===void 0?Math.floor(r.y):n.y,c=n.offset||0,p=n.drawBorder||!1,g=n.hitCanvasPixelRatio||1;if(!i||!o){se.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}i+=c*2+1,o+=c*2+1,s-=c,l-=c;var m=new o0({pixelRatio:a,width:i,height:o}),y=new o0({pixelRatio:a,width:0,height:0}),b=new s_({pixelRatio:g,width:i,height:o}),S=m.getContext(),T=b.getContext();return b.isCache=!0,m.isCache=!0,this._cache.delete(pg),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(m.getContext()._context.imageSmoothingEnabled=!1,y.getContext()._context.imageSmoothingEnabled=!1),S.save(),T.save(),S.translate(-s,-l),T.translate(-s,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(h3),this._clearSelfAndDescendantCache(kA),this.drawScene(m,this),this.drawHit(b,this),this._isUnderCache=!1,S.restore(),T.restore(),p&&(S.save(),S.beginPath(),S.rect(0,0,i,o),S.closePath(),S.setAttr("strokeStyle","red"),S.setAttr("lineWidth",5),S.stroke(),S.restore()),this._cache.set(pg,{scene:m,filter:y,hit:b,x:s,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(pg)}getClientRect(t){throw new Error('abstract "getClientRect" method call')}_transformedRect(t,n){var r=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],i,o,a,s,l=this.getAbsoluteTransform(n);return r.forEach(function(c){var p=l.point(c);i===void 0&&(i=a=p.x,o=s=p.y),i=Math.min(i,p.x),o=Math.min(o,p.y),a=Math.max(a,p.x),s=Math.max(s,p.y)}),{x:i,y:o,width:a-i,height:s-o}}_drawCachedSceneCanvas(t){t.save(),t._applyOpacity(this),t._applyGlobalCompositeOperation(this);const n=this._getCanvasCache();t.translate(n.x,n.y);var r=this._getCachedSceneCanvas(),i=r.pixelRatio;t.drawImage(r._canvas,0,0,r.width/i,r.height/i),t.restore()}_drawCachedHitCanvas(t){var n=this._getCanvasCache(),r=n.hit;t.save(),t.translate(n.x,n.y),t.drawImage(r._canvas,0,0,r.width/r.pixelRatio,r.height/r.pixelRatio),t.restore()}_getCachedSceneCanvas(){var t=this.filters(),n=this._getCanvasCache(),r=n.scene,i=n.filter,o=i.getContext(),a,s,l,c;if(t){if(!this._filterUpToDate){var p=r.pixelRatio;i.setSize(r.width/r.pixelRatio,r.height/r.pixelRatio);try{for(a=t.length,o.clear(),o.drawImage(r._canvas,0,0,r.getWidth()/p,r.getHeight()/p),s=o.getImageData(0,0,i.getWidth(),i.getHeight()),l=0;l{var n,r;if(!t)return this;for(n in t)n!==jxe&&(r=TA+se._capitalize(n),se._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(m8,this._isListening)}_isListening(t){if(!this.listening())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isListening(t):!0}isVisible(){return this._getCache(v8,this._isVisible)}_isVisible(t){if(!this.visible())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isVisible(t):!0}shouldDrawHit(t,n=!1){if(t)return this._isVisible(t)&&this._isListening(t);var r=this.getLayer(),i=!1;sn._dragElements.forEach(a=>{a.dragStatus==="dragging"&&(a.node.nodeType==="Stage"||a.node.getLayer()===r)&&(i=!0)});var o=!n&&!et.hitOnDragEnabled&&i;return this.isListening()&&this.isVisible()&&!o}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){var t=this.getDepth(),n=this,r=0,i,o,a,s;function l(c){for(i=[],o=c.length,a=0;a0&&i[0].getDepth()<=t&&l(i)}return n.nodeType!==Kxe&&l(n.getStage().getChildren()),r}getDepth(){for(var t=0,n=this.parent;n;)t++,n=n.parent;return t}_batchTransformChanges(t){this._batchingTransformChange=!0,t(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(bc),this._clearSelfAndDescendantCache(Ql)),this._needClearTransformCache=!1}setPosition(t){return this._batchTransformChanges(()=>{this.x(t.x),this.y(t.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){if(!this.getStage())return null;var t=this.getStage().getPointerPosition();if(!t)return null;var n=this.getAbsoluteTransform().copy();return n.invert(),n.point(t)}getAbsolutePosition(t){let n=!1,r=this.parent;for(;r;){if(r.isCached()){n=!0;break}r=r.parent}n&&!t&&(t=!0);var i=this.getAbsoluteTransform(t).getMatrix(),o=new Qo,a=this.offset();return o.m=i.slice(),o.translate(a.x,a.y),o.getTranslation()}setAbsolutePosition(t){var n=this._clearTransform();this.attrs.x=n.x,this.attrs.y=n.y,delete n.x,delete n.y,this._clearCache(bc);var r=this._getAbsoluteTransform().copy();return r.invert(),r.translate(t.x,t.y),t={x:this.attrs.x+r.getTranslation().x,y:this.attrs.y+r.getTranslation().y},this._setTransform(n),this.setPosition({x:t.x,y:t.y}),this._clearCache(bc),this._clearSelfAndDescendantCache(Ql),this}_setTransform(t){var n;for(n in t)this.attrs[n]=t[n]}_clearTransform(){var t={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,t}move(t){var n=t.x,r=t.y,i=this.x(),o=this.y();return n!==void 0&&(i+=n),r!==void 0&&(o+=r),this.setPosition({x:i,y:o}),this}_eachAncestorReverse(t,n){var r=[],i=this.getParent(),o,a;if(!(n&&n._id===this._id)){for(r.unshift(this);i&&(!n||i._id!==n._id);)r.unshift(i),i=i.parent;for(o=r.length,a=0;a0?(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return se.warn("Node has no parent. moveToBottom function is ignored."),!1;var t=this.index;return t>0?(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(t){if(!this.parent)return se.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&se.warn("Unexpected value "+t+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");var n=this.index;return this.parent.children.splice(n,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(h3,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){var t=this.opacity(),n=this.getParent();return n&&!n._isUnderCache&&(t*=n.getAbsoluteOpacity()),t}moveTo(t){return this.getParent()!==t&&(this._remove(),t.add(this)),this}toObject(){var t={},n=this.getAttrs(),r,i,o,a,s;t.attrs={};for(r in n)i=n[r],s=se.isObject(i)&&!se._isPlainObject(i)&&!se._isArray(i),!s&&(o=typeof this[r]=="function"&&this[r],delete n[r],a=o?o.call(this):null,n[r]=i,a!==i&&(t.attrs[r]=i));return t.className=this.getClassName(),se._prepareToStringify(t)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(t,n,r){var i=[];n&&this._isMatch(t)&&i.push(this);for(var o=this.parent;o;){if(o===r)return i;o._isMatch(t)&&i.push(o),o=o.parent}return i}isAncestorOf(t){return!1}findAncestor(t,n,r){return this.findAncestors(t,n,r)[0]}_isMatch(t){if(!t)return!1;if(typeof t=="function")return t(this);var n=t.replace(/ /g,"").split(","),r=n.length,i,o;for(i=0;i{try{const i=t?.callback;i&&delete t.callback,se._urlToImage(this.toDataURL(t),function(o){n(o),i?.(o)})}catch(i){r(i)}})}toBlob(t){return new Promise((n,r)=>{try{const i=t?.callback;i&&delete t.callback,this.toCanvas(t).toBlob(o=>{n(o),i?.(o)})}catch(i){r(i)}})}setSize(t){return this.width(t.width),this.height(t.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():et.dragDistance}_off(t,n,r){var i=this.eventListeners[t],o,a,s;for(o=0;o=0;if(!!r&&!this.isDragging()){var i=!1;sn._dragElements.forEach(o=>{this.isAncestorOf(o.node)&&(i=!0)}),i||this._createDragElement(t)}})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage();if(!t)return;const n=sn._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&sn._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(t={x:0,y:0}){const n=this.getStage();if(!n)return!1;const r={x:-t.x,y:-t.y,width:n.width()+2*t.x,height:n.height()+2*t.y};return se.haveIntersection(r,this.getClientRect())}static create(t,n){return se._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=Fe.prototype.getClassName.call(t),i=t.children,o,a,s;n&&(t.attrs.container=n),et[r]||(se.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=et[r];if(o=new l(t.attrs),i)for(a=i.length,s=0;s0}removeChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.destroy()}),this.children=[],this._requestDraw(),this}add(...t){if(arguments.length>1){for(var n=0;n0?n[0]:void 0}_generalFind(t,n){var r=[];return this._descendants(i=>{const o=i._isMatch(t);return o&&r.push(i),!!(o&&n)}),r}_descendants(t){let n=!1;const r=this.getChildren();for(const i of r){if(n=t(i),n)return!0;if(!!i.hasChildren()&&(n=i._descendants(t),n))return!0}return!1}toObject(){var t=Fe.prototype.toObject.call(this);return t.children=[],this.getChildren().forEach(n=>{t.children.push(n.toObject())}),t}isAncestorOf(t){for(var n=t.getParent();n;){if(n._id===this._id)return!0;n=n.getParent()}return!1}clone(t){var n=Fe.prototype.clone.call(this,t);return this.getChildren().forEach(function(r){n.add(r.clone())}),n}getAllIntersections(t){var n=[];return this.find("Shape").forEach(function(r){r.isVisible()&&r.intersects(t)&&n.push(r)}),n}_clearSelfAndDescendantCache(t){var n;super._clearSelfAndDescendantCache(t),!this.isCached()&&((n=this.children)===null||n===void 0||n.forEach(function(r){r._clearSelfAndDescendantCache(t)}))}_setChildrenIndices(){var t;(t=this.children)===null||t===void 0||t.forEach(function(n,r){n.index=r}),this._requestDraw()}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas(),o=i&&i.getContext(),a=this._getCanvasCache(),s=a&&a.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(s){o.save();var c=this.getAbsoluteTransform(n).getMatrix();o.transform(c[0],c[1],c[2],c[3],c[4],c[5]),this._drawCachedSceneCanvas(o),o.restore()}else this._drawChildren("drawScene",i,n);return this}drawHit(t,n){if(!this.shouldDrawHit(n))return this;var r=this.getLayer(),i=t||r&&r.hitCanvas,o=i&&i.getContext(),a=this._getCanvasCache(),s=a&&a.hit;if(s){o.save();var l=this.getAbsoluteTransform(n).getMatrix();o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),this._drawCachedHitCanvas(o),o.restore()}else this._drawChildren("drawHit",i,n);return this}_drawChildren(t,n,r){var i,o=n&&n.getContext(),a=this.clipWidth(),s=this.clipHeight(),l=this.clipFunc(),c=a&&s||l;const p=r===this;if(c){o.save();var g=this.getAbsoluteTransform(r),m=g.getMatrix();if(o.transform(m[0],m[1],m[2],m[3],m[4],m[5]),o.beginPath(),l)l.call(this,o,this);else{var y=this.clipX(),b=this.clipY();o.rect(y,b,a,s)}o.clip(),m=g.copy().invert().getMatrix(),o.transform(m[0],m[1],m[2],m[3],m[4],m[5])}var S=!p&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";S&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(T){T[t](n,r)}),S&&o.restore(),c&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,a,s,l,c={x:1/0,y:1/0,width:0,height:0},p=this;(n=this.children)===null||n===void 0||n.forEach(function(S){if(!!S.visible()){var T=S.getClientRect({relativeTo:p,skipShadow:t.skipShadow,skipStroke:t.skipStroke});T.width===0&&T.height===0||(o===void 0?(o=T.x,a=T.y,s=T.x+T.width,l=T.y+T.height):(o=Math.min(o,T.x),a=Math.min(a,T.y),s=Math.max(s,T.x+T.width),l=Math.max(l,T.y+T.height)))}});for(var g=this.find("Shape"),m=!1,y=0;ye.indexOf("pointer")>=0?"pointer":e.indexOf("touch")>=0?"touch":"mouse",mp=e=>{const t=Ng(e);if(t==="pointer")return et.pointerEventsEnabled&&FS.pointer;if(t==="touch")return FS.touch;if(t==="mouse")return FS.mouse};function MA(e={}){return(e.clipFunc||e.clipWidth||e.clipHeight)&&se.warn("Stage does not support clipping. Please use clip for Layers or Groups."),e}const rbe="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);",g3=[];class wx extends ia{constructor(t){super(MA(t)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),g3.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{MA(this.attrs)}),this._checkVisibility()}_validateAdd(t){const n=t.getType()==="Layer",r=t.getType()==="FastLayer";n||r||se.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const t=this.visible()?"":"none";this.content.style.display=t}setContainer(t){if(typeof t===Qxe){if(t.charAt(0)==="."){var n=t.slice(1);t=document.getElementsByClassName(n)[0]}else{var r;t.charAt(0)!=="#"?r=t:r=t.slice(1),t=document.getElementById(r)}if(!t)throw"Can not find container in document with id "+r}return this._setAttr("container",t),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),t.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var t=this.children,n=t.length,r;for(r=0;r-1&&g3.splice(n,1),this}getPointerPosition(){const t=this._pointerPositions[0]||this._changedPointerPositions[0];return t?{x:t.x,y:t.y}:(se.warn(rbe),null)}_getPointerById(t){return this._pointerPositions.find(n=>n.id===t)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(t){t=t||{},t.x=t.x||0,t.y=t.y||0,t.width=t.width||this.width(),t.height=t.height||this.height();var n=new o0({width:t.width,height:t.height,pixelRatio:t.pixelRatio||1}),r=n.getContext()._context,i=this.children;return(t.x||t.y)&&r.translate(-1*t.x,-1*t.y),i.forEach(function(o){if(!!o.isVisible()){var a=o._toKonvaCanvas(t);r.drawImage(a._canvas,t.x,t.y,a.getWidth()/a.getPixelRatio(),a.getHeight()/a.getPixelRatio())}}),n}getIntersection(t){if(!t)return null;var n=this.children,r=n.length,i=r-1,o;for(o=i;o>=0;o--){const a=n[o].getIntersection(t);if(a)return a}return null}_resizeDOM(){var t=this.width(),n=this.height();this.content&&(this.content.style.width=t+IA,this.content.style.height=n+IA),this.bufferCanvas.setSize(t,n),this.bufferHitCanvas.setSize(t,n),this.children.forEach(r=>{r.setSize({width:t,height:n}),r.draw()})}add(t,...n){if(arguments.length>1){for(var r=0;rtbe&&se.warn("The stage has "+i+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),t.setSize({width:this.width(),height:this.height()}),t.draw(),et.isBrowser&&this.content.appendChild(t.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(t){return M$(t,this)}setPointerCapture(t){R$(t,this)}releaseCapture(t){cm(t)}getLayers(){return this.children}_bindContentEvents(){!et.isBrowser||nbe.forEach(([t,n])=>{this.content.addEventListener(t,r=>{this[n](r)},{passive:!1})})}_pointerenter(t){this.setPointersPositions(t);const n=mp(t.type);this._fire(n.pointerenter,{evt:t,target:this,currentTarget:this})}_pointerover(t){this.setPointersPositions(t);const n=mp(t.type);this._fire(n.pointerover,{evt:t,target:this,currentTarget:this})}_getTargetShape(t){let n=this[t+"targetShape"];return n&&!n.getStage()&&(n=null),n}_pointerleave(t){const n=mp(t.type),r=Ng(t.type);if(!!n){this.setPointersPositions(t);var i=this._getTargetShape(r),o=!sn.isDragging||et.hitOnDragEnabled;i&&o?(i._fireAndBubble(n.pointerout,{evt:t}),i._fireAndBubble(n.pointerleave,{evt:t}),this._fire(n.pointerleave,{evt:t,target:this,currentTarget:this}),this[r+"targetShape"]=null):o&&(this._fire(n.pointerleave,{evt:t,target:this,currentTarget:this}),this._fire(n.pointerout,{evt:t,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(t){const n=mp(t.type),r=Ng(t.type);if(!!n){this.setPointersPositions(t);var i=!1;this._changedPointerPositions.forEach(o=>{var a=this.getIntersection(o);if(sn.justDragged=!1,et["_"+r+"ListenClick"]=!0,!(a&&a.isListening()))return;et.capturePointerEventsEnabled&&a.setPointerCapture(o.id),this[r+"ClickStartShape"]=a,a._fireAndBubble(n.pointerdown,{evt:t,pointerId:o.id}),i=!0;const l=t.type.indexOf("touch")>=0;a.preventDefault()&&t.cancelable&&l&&t.preventDefault()}),i||this._fire(n.pointerdown,{evt:t,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(t){const n=mp(t.type),r=Ng(t.type);if(!n)return;sn.isDragging&&sn.node.preventDefault()&&t.cancelable&&t.preventDefault(),this.setPointersPositions(t);var i=!sn.isDragging||et.hitOnDragEnabled;if(!i)return;var o={};let a=!1;var s=this._getTargetShape(r);this._changedPointerPositions.forEach(l=>{const c=zS(l.id)||this.getIntersection(l),p=l.id,g={evt:t,pointerId:p};var m=s!==c;if(m&&s&&(s._fireAndBubble(n.pointerout,Object.assign({},g),c),s._fireAndBubble(n.pointerleave,Object.assign({},g),c)),c){if(o[c._id])return;o[c._id]=!0}c&&c.isListening()?(a=!0,m&&(c._fireAndBubble(n.pointerover,Object.assign({},g),s),c._fireAndBubble(n.pointerenter,Object.assign({},g),s),this[r+"targetShape"]=c),c._fireAndBubble(n.pointermove,Object.assign({},g))):s&&(this._fire(n.pointerover,{evt:t,target:this,currentTarget:this,pointerId:p}),this[r+"targetShape"]=null)}),a||this._fire(n.pointermove,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(t){const n=mp(t.type),r=Ng(t.type);if(!n)return;this.setPointersPositions(t);const i=this[r+"ClickStartShape"],o=this[r+"ClickEndShape"];var a={};let s=!1;this._changedPointerPositions.forEach(l=>{const c=zS(l.id)||this.getIntersection(l);if(c){if(c.releaseCapture(l.id),a[c._id])return;a[c._id]=!0}const p=l.id,g={evt:t,pointerId:p};let m=!1;et["_"+r+"InDblClickWindow"]?(m=!0,clearTimeout(this[r+"DblTimeout"])):sn.justDragged||(et["_"+r+"InDblClickWindow"]=!0,clearTimeout(this[r+"DblTimeout"])),this[r+"DblTimeout"]=setTimeout(function(){et["_"+r+"InDblClickWindow"]=!1},et.dblClickWindow),c&&c.isListening()?(s=!0,this[r+"ClickEndShape"]=c,c._fireAndBubble(n.pointerup,Object.assign({},g)),et["_"+r+"ListenClick"]&&i&&i===c&&(c._fireAndBubble(n.pointerclick,Object.assign({},g)),m&&o&&o===c&&c._fireAndBubble(n.pointerdblclick,Object.assign({},g)))):(this[r+"ClickEndShape"]=null,et["_"+r+"ListenClick"]&&this._fire(n.pointerclick,{evt:t,target:this,currentTarget:this,pointerId:p}),m&&this._fire(n.pointerdblclick,{evt:t,target:this,currentTarget:this,pointerId:p}))}),s||this._fire(n.pointerup,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),et["_"+r+"ListenClick"]=!1,t.cancelable&&r!=="touch"&&t.preventDefault()}_contextmenu(t){this.setPointersPositions(t);var n=this.getIntersection(this.getPointerPosition());n&&n.isListening()?n._fireAndBubble(y8,{evt:t}):this._fire(y8,{evt:t,target:this,currentTarget:this})}_wheel(t){this.setPointersPositions(t);var n=this.getIntersection(this.getPointerPosition());n&&n.isListening()?n._fireAndBubble(x8,{evt:t}):this._fire(x8,{evt:t,target:this,currentTarget:this})}_pointercancel(t){this.setPointersPositions(t);const n=zS(t.pointerId)||this.getIntersection(this.getPointerPosition());n&&n._fireAndBubble(Np,l_(t)),cm(t.pointerId)}_lostpointercapture(t){cm(t.pointerId)}setPointersPositions(t){var n=this._getContentPosition(),r=null,i=null;t=t||window.event,t.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(t.touches,o=>{this._pointerPositions.push({id:o.identifier,x:(o.clientX-n.left)/n.scaleX,y:(o.clientY-n.top)/n.scaleY})}),Array.prototype.forEach.call(t.changedTouches||t.touches,o=>{this._changedPointerPositions.push({id:o.identifier,x:(o.clientX-n.left)/n.scaleX,y:(o.clientY-n.top)/n.scaleY})})):(r=(t.clientX-n.left)/n.scaleX,i=(t.clientY-n.top)/n.scaleY,this.pointerPos={x:r,y:i},this._pointerPositions=[{x:r,y:i,id:se._getFirstPointerId(t)}],this._changedPointerPositions=[{x:r,y:i,id:se._getFirstPointerId(t)}])}_setPointerPosition(t){se.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(t)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var t=this.content.getBoundingClientRect();return{top:t.top,left:t.left,scaleX:t.width/this.content.clientWidth||1,scaleY:t.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o0({width:this.width(),height:this.height()}),this.bufferHitCanvas=new s_({pixelRatio:1,width:this.width(),height:this.height()}),!!et.isBrowser){var t=this.container();if(!t)throw"Stage has no container. A container is required.";t.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),t.appendChild(this.content),this._resizeDOM()}}cache(){return se.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(t){t.batchDraw()}),this}}wx.prototype.nodeType=Xxe;hr(wx);j.addGetterSetter(wx,"container");var U$="hasShadow",G$="shadowRGBA",j$="patternImage",q$="linearGradient",K$="radialGradient";let ky;function BS(){return ky||(ky=se.createCanvasElement().getContext("2d"),ky)}const dm={};function ibe(e){e.fill()}function obe(e){e.stroke()}function abe(e){e.fill()}function sbe(e){e.stroke()}function lbe(){this._clearCache(U$)}function ube(){this._clearCache(G$)}function cbe(){this._clearCache(j$)}function dbe(){this._clearCache(q$)}function fbe(){this._clearCache(K$)}class Ae extends Fe{constructor(t){super(t);let n;for(;n=se.getRandomColor(),!(n&&!(n in dm)););this.colorKey=n,dm[n]=this}getContext(){return se.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return se.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(U$,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(j$,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var t=BS();const n=t.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(n&&n.setTransform){const r=new Qo;r.translate(this.fillPatternX(),this.fillPatternY()),r.rotate(et.getAngle(this.fillPatternRotation())),r.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),r.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const i=r.getMatrix(),o=typeof DOMMatrix>"u"?{a:i[0],b:i[1],c:i[2],d:i[3],e:i[4],f:i[5]}:new DOMMatrix(i);n.setTransform(o)}return n}}_getLinearGradient(){return this._getCache(q$,this.__getLinearGradient)}__getLinearGradient(){var t=this.fillLinearGradientColorStops();if(t){for(var n=BS(),r=this.fillLinearGradientStartPoint(),i=this.fillLinearGradientEndPoint(),o=n.createLinearGradient(r.x,r.y,i.x,i.y),a=0;athis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const t=this.hitStrokeWidth();return t==="auto"?this.hasStroke():this.strokeEnabled()&&!!t}intersects(t){var n=this.getStage(),r=n.bufferHitCanvas,i;return r.getContext().clear(),this.drawHit(r,null,!0),i=r.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data,i[3]>0}destroy(){return Fe.prototype.destroy.call(this),delete dm[this.colorKey],delete this.colorKey,this}_useBufferCanvas(t){var n;if(!this.getStage()||!((n=this.attrs.perfectDrawEnabled)!==null&&n!==void 0?n:!0))return!1;const i=t||this.hasFill(),o=this.hasStroke(),a=this.getAbsoluteOpacity()!==1;if(i&&o&&a)return!0;const s=this.hasShadow(),l=this.shadowForStrokeEnabled();return!!(i&&o&&s&&l)}setStrokeHitEnabled(t){se.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),t?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var t=this.size();return{x:this._centroid?-t.width/2:0,y:this._centroid?-t.height/2:0,width:t.width,height:t.height}}getClientRect(t={}){const n=t.skipTransform,r=t.relativeTo,i=this.getSelfRect(),a=!t.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,s=i.width+a,l=i.height+a,c=!t.skipShadow&&this.hasShadow(),p=c?this.shadowOffsetX():0,g=c?this.shadowOffsetY():0,m=s+Math.abs(p),y=l+Math.abs(g),b=c&&this.shadowBlur()||0,S=m+b*2,T=y+b*2,E={width:S,height:T,x:-(a/2+b)+Math.min(p,0)+i.x,y:-(a/2+b)+Math.min(g,0)+i.y};return n?E:this._transformedRect(E,r)}drawScene(t,n){var r=this.getLayer(),i=t||r.getCanvas(),o=i.getContext(),a=this._getCanvasCache(),s=this.getSceneFunc(),l=this.hasShadow(),c,p,g,m=i.isCache,y=n===this;if(!this.isVisible()&&!y)return this;if(a){o.save();var b=this.getAbsoluteTransform(n).getMatrix();return o.transform(b[0],b[1],b[2],b[3],b[4],b[5]),this._drawCachedSceneCanvas(o),o.restore(),this}if(!s)return this;if(o.save(),this._useBufferCanvas()&&!m){c=this.getStage(),p=c.bufferCanvas,g=p.getContext(),g.clear(),g.save(),g._applyLineJoin(this);var S=this.getAbsoluteTransform(n).getMatrix();g.transform(S[0],S[1],S[2],S[3],S[4],S[5]),s.call(this,g,this),g.restore();var T=p.pixelRatio;l&&o._applyShadow(this),o._applyOpacity(this),o._applyGlobalCompositeOperation(this),o.drawImage(p._canvas,0,0,p.width/T,p.height/T)}else{if(o._applyLineJoin(this),!y){var S=this.getAbsoluteTransform(n).getMatrix();o.transform(S[0],S[1],S[2],S[3],S[4],S[5]),o._applyOpacity(this),o._applyGlobalCompositeOperation(this)}l&&o._applyShadow(this),s.call(this,o,this)}return o.restore(),this}drawHit(t,n,r=!1){if(!this.shouldDrawHit(n,r))return this;var i=this.getLayer(),o=t||i.hitCanvas,a=o&&o.getContext(),s=this.hitFunc()||this.sceneFunc(),l=this._getCanvasCache(),c=l&&l.hit;if(this.colorKey||se.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),c){a.save();var p=this.getAbsoluteTransform(n).getMatrix();return a.transform(p[0],p[1],p[2],p[3],p[4],p[5]),this._drawCachedHitCanvas(a),a.restore(),this}if(!s)return this;if(a.save(),a._applyLineJoin(this),!(this===n)){var m=this.getAbsoluteTransform(n).getMatrix();a.transform(m[0],m[1],m[2],m[3],m[4],m[5])}return s.call(this,a,this),a.restore(),this}drawHitFromCache(t=0){var n=this._getCanvasCache(),r=this._getCachedSceneCanvas(),i=n.hit,o=i.getContext(),a=i.getWidth(),s=i.getHeight(),l,c,p,g,m,y;o.clear(),o.drawImage(r._canvas,0,0,a,s);try{for(l=o.getImageData(0,0,a,s),c=l.data,p=c.length,g=se._hexToRgb(this.colorKey),m=0;mt?(c[m]=g.r,c[m+1]=g.g,c[m+2]=g.b,c[m+3]=255):c[m+3]=0;o.putImageData(l,0,0)}catch(b){se.error("Unable to draw hit graph from cached scene canvas. "+b.message)}return this}hasPointerCapture(t){return M$(t,this)}setPointerCapture(t){R$(t,this)}releaseCapture(t){cm(t)}}Ae.prototype._fillFunc=ibe;Ae.prototype._strokeFunc=obe;Ae.prototype._fillFuncHit=abe;Ae.prototype._strokeFuncHit=sbe;Ae.prototype._centroid=!1;Ae.prototype.nodeType="Shape";hr(Ae);Ae.prototype.eventListeners={};Ae.prototype.on.call(Ae.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",lbe);Ae.prototype.on.call(Ae.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",ube);Ae.prototype.on.call(Ae.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",cbe);Ae.prototype.on.call(Ae.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",dbe);Ae.prototype.on.call(Ae.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",fbe);j.addGetterSetter(Ae,"stroke",void 0,A$());j.addGetterSetter(Ae,"strokeWidth",2,ze());j.addGetterSetter(Ae,"fillAfterStrokeEnabled",!1);j.addGetterSetter(Ae,"hitStrokeWidth","auto",a_());j.addGetterSetter(Ae,"strokeHitEnabled",!0,ws());j.addGetterSetter(Ae,"perfectDrawEnabled",!0,ws());j.addGetterSetter(Ae,"shadowForStrokeEnabled",!0,ws());j.addGetterSetter(Ae,"lineJoin");j.addGetterSetter(Ae,"lineCap");j.addGetterSetter(Ae,"sceneFunc");j.addGetterSetter(Ae,"hitFunc");j.addGetterSetter(Ae,"dash");j.addGetterSetter(Ae,"dashOffset",0,ze());j.addGetterSetter(Ae,"shadowColor",void 0,W0());j.addGetterSetter(Ae,"shadowBlur",0,ze());j.addGetterSetter(Ae,"shadowOpacity",1,ze());j.addComponentsGetterSetter(Ae,"shadowOffset",["x","y"]);j.addGetterSetter(Ae,"shadowOffsetX",0,ze());j.addGetterSetter(Ae,"shadowOffsetY",0,ze());j.addGetterSetter(Ae,"fillPatternImage");j.addGetterSetter(Ae,"fill",void 0,A$());j.addGetterSetter(Ae,"fillPatternX",0,ze());j.addGetterSetter(Ae,"fillPatternY",0,ze());j.addGetterSetter(Ae,"fillLinearGradientColorStops");j.addGetterSetter(Ae,"strokeLinearGradientColorStops");j.addGetterSetter(Ae,"fillRadialGradientStartRadius",0);j.addGetterSetter(Ae,"fillRadialGradientEndRadius",0);j.addGetterSetter(Ae,"fillRadialGradientColorStops");j.addGetterSetter(Ae,"fillPatternRepeat","repeat");j.addGetterSetter(Ae,"fillEnabled",!0);j.addGetterSetter(Ae,"strokeEnabled",!0);j.addGetterSetter(Ae,"shadowEnabled",!0);j.addGetterSetter(Ae,"dashEnabled",!0);j.addGetterSetter(Ae,"strokeScaleEnabled",!0);j.addGetterSetter(Ae,"fillPriority","color");j.addComponentsGetterSetter(Ae,"fillPatternOffset",["x","y"]);j.addGetterSetter(Ae,"fillPatternOffsetX",0,ze());j.addGetterSetter(Ae,"fillPatternOffsetY",0,ze());j.addComponentsGetterSetter(Ae,"fillPatternScale",["x","y"]);j.addGetterSetter(Ae,"fillPatternScaleX",1,ze());j.addGetterSetter(Ae,"fillPatternScaleY",1,ze());j.addComponentsGetterSetter(Ae,"fillLinearGradientStartPoint",["x","y"]);j.addComponentsGetterSetter(Ae,"strokeLinearGradientStartPoint",["x","y"]);j.addGetterSetter(Ae,"fillLinearGradientStartPointX",0);j.addGetterSetter(Ae,"strokeLinearGradientStartPointX",0);j.addGetterSetter(Ae,"fillLinearGradientStartPointY",0);j.addGetterSetter(Ae,"strokeLinearGradientStartPointY",0);j.addComponentsGetterSetter(Ae,"fillLinearGradientEndPoint",["x","y"]);j.addComponentsGetterSetter(Ae,"strokeLinearGradientEndPoint",["x","y"]);j.addGetterSetter(Ae,"fillLinearGradientEndPointX",0);j.addGetterSetter(Ae,"strokeLinearGradientEndPointX",0);j.addGetterSetter(Ae,"fillLinearGradientEndPointY",0);j.addGetterSetter(Ae,"strokeLinearGradientEndPointY",0);j.addComponentsGetterSetter(Ae,"fillRadialGradientStartPoint",["x","y"]);j.addGetterSetter(Ae,"fillRadialGradientStartPointX",0);j.addGetterSetter(Ae,"fillRadialGradientStartPointY",0);j.addComponentsGetterSetter(Ae,"fillRadialGradientEndPoint",["x","y"]);j.addGetterSetter(Ae,"fillRadialGradientEndPointX",0);j.addGetterSetter(Ae,"fillRadialGradientEndPointY",0);j.addGetterSetter(Ae,"fillPatternRotation",0);j.backCompat(Ae,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"});var hbe="#",pbe="beforeDraw",gbe="draw",Z$=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],mbe=Z$.length;class nh extends ia{constructor(t){super(t),this.canvas=new o0,this.hitCanvas=new s_({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this}setZIndex(t){super.setZIndex(t);var n=this.getStage();return n&&n.content&&(n.content.removeChild(this.getNativeCanvasElement()),t{this.draw(),this._waitingForDraw=!1})),this}getIntersection(t){if(!this.isListening()||!this.isVisible())return null;for(var n=1,r=!1;;){for(let i=0;i0)return{antialiased:!0};return{}}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas();return this._fire(pbe,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),ia.prototype.drawScene.call(this,i,n),this._fire(gbe,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),ia.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){se.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return se.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!(!this.parent||!this.parent.content)){var t=this.parent,n=!!this.hitCanvas._canvas.parentNode;n?t.content.removeChild(this.hitCanvas._canvas):t.content.appendChild(this.hitCanvas._canvas)}}}nh.prototype.nodeType="Layer";hr(nh);j.addGetterSetter(nh,"imageSmoothingEnabled",!0);j.addGetterSetter(nh,"clearBeforeDraw",!0);j.addGetterSetter(nh,"hitGraphEnabled",!0,ws());class u_ extends nh{constructor(t){super(t),this.listening(!1),se.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}u_.prototype.nodeType="FastLayer";hr(u_);class _0 extends ia{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&se.throw("You may only add groups and shapes to groups.")}}_0.prototype.nodeType="Group";hr(_0);var $S=function(){return i0.performance&&i0.performance.now?function(){return i0.performance.now()}:function(){return new Date().getTime()}}();class Aa{constructor(t,n){this.id=Aa.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:$S(),frameRate:0},this.func=t,this.setLayers(n)}setLayers(t){var n=[];return t?t.length>0?n=t:n=[t]:n=[],this.layers=n,this}getLayers(){return this.layers}addLayer(t){var n=this.layers,r=n.length,i;for(i=0;ithis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():t<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())}getTime(){return this._time}setPosition(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t}getPosition(t){return t===void 0&&(t=this._time),this.func(t,this.begin,this._change,this.duration)}play(){this.state=RA,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=OA,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(t){this.pause(),this._time=t,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var t=this.getTimer()-this._startTime;this.state===RA?this.setTime(t):this.state===OA&&this.setTime(this.duration-t)}pause(){this.state=ybe,this.fire("onPause")}getTimer(){return new Date().getTime()}}class Mr{constructor(t){var n=this,r=t.node,i=r._id,o,a=t.easing||fm.Linear,s=!!t.yoyo,l;typeof t.duration>"u"?o=.3:t.duration===0?o=.001:o=t.duration,this.node=r,this._id=xbe++;var c=r.getLayer()||(r instanceof et.Stage?r.getLayers():null);c||se.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new Aa(function(){n.tween.onEnterFrame()},c),this.tween=new bbe(l,function(p){n._tweenFunc(p)},a,0,1,o*1e3,s),this._addListeners(),Mr.attrs[i]||(Mr.attrs[i]={}),Mr.attrs[i][this._id]||(Mr.attrs[i][this._id]={}),Mr.tweens[i]||(Mr.tweens[i]={});for(l in t)vbe[l]===void 0&&this._addAttr(l,t[l]);this.reset(),this.onFinish=t.onFinish,this.onReset=t.onReset,this.onUpdate=t.onUpdate}_addAttr(t,n){var r=this.node,i=r._id,o,a,s,l,c,p,g,m;if(s=Mr.tweens[i][t],s&&delete Mr.attrs[i][s][t],o=r.getAttr(t),se._isArray(n))if(a=[],c=Math.max(n.length,o.length),t==="points"&&n.length!==o.length&&(n.length>o.length?(g=o,o=se._prepareArrayForTween(o,n,r.closed())):(p=n,n=se._prepareArrayForTween(n,o,r.closed()))),t.indexOf("fill")===0)for(l=0;l{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var t=this.node,n=Mr.attrs[t._id][this._id];n.points&&n.points.trueEnd&&t.setAttr("points",n.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var t=this.node,n=Mr.attrs[t._id][this._id];n.points&&n.points.trueStart&&t.points(n.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(t){return this.tween.seek(t*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var t=this.node._id,n=this._id,r=Mr.tweens[t],i;this.pause();for(i in r)delete Mr.tweens[t][i];delete Mr.attrs[t][n]}}Mr.attrs={};Mr.tweens={};Fe.prototype.to=function(e){var t=e.onFinish;e.node=this,e.onFinish=function(){this.destroy(),t&&t()};var n=new Mr(e);n.play()};const fm={BackEaseIn(e,t,n,r){var i=1.70158;return n*(e/=r)*e*((i+1)*e-i)+t},BackEaseOut(e,t,n,r){var i=1.70158;return n*((e=e/r-1)*e*((i+1)*e+i)+1)+t},BackEaseInOut(e,t,n,r){var i=1.70158;return(e/=r/2)<1?n/2*(e*e*(((i*=1.525)+1)*e-i))+t:n/2*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)+t},ElasticEaseIn(e,t,n,r,i,o){var a=0;return e===0?t:(e/=r)===1?t+n:(o||(o=r*.3),!i||i0?t:n),p=a*n,g=s*(s>0?t:n),m=l*(l>0?n:t);return{x:c,y:r?-1*m:g,width:p-c,height:m-g}}}ku.prototype._centroid=!0;ku.prototype.className="Arc";ku.prototype._attrsAffectingSize=["innerRadius","outerRadius"];hr(ku);j.addGetterSetter(ku,"innerRadius",0,ze());j.addGetterSetter(ku,"outerRadius",0,ze());j.addGetterSetter(ku,"angle",0,ze());j.addGetterSetter(ku,"clockwise",!1,ws());function b8(e,t,n,r,i,o,a){var s=Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2)),l=Math.sqrt(Math.pow(i-n,2)+Math.pow(o-r,2)),c=a*s/(s+l),p=a*l/(s+l),g=n-c*(i-e),m=r-c*(o-t),y=n+p*(i-e),b=r+p*(o-t);return[g,m,y,b]}function DA(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(s=this.getTensionPoints(),l=s.length,c=o?0:4,o||t.quadraticCurveTo(s[0],s[1],s[2],s[3]);cp?c:p,T=c>p?1:c/p,E=c>p?p/c:1;t.translate(s,l),t.rotate(y),t.scale(T,E),t.arc(0,0,S,g,g+m,1-b),t.scale(1/T,1/E),t.rotate(-y),t.translate(-s,-l);break;case"z":r=!0,t.closePath();break}}!r&&!this.hasFill()?t.strokeShape(this):t.fillStrokeShape(this)}getSelfRect(){var t=[];this.dataArray.forEach(function(c){if(c.command==="A"){var p=c.points[4],g=c.points[5],m=c.points[4]+g,y=Math.PI/180;if(Math.abs(p-m)m;b-=y){const S=In.getPointOnEllipticalArc(c.points[0],c.points[1],c.points[2],c.points[3],b,0);t.push(S.x,S.y)}else for(let b=p+y;bthis.dataArray[r].pathLength;)t-=this.dataArray[r].pathLength,++r;if(r===i)return n=this.dataArray[r-1].points.slice(-2),{x:n[0],y:n[1]};if(t<.01)return n=this.dataArray[r].points.slice(0,2),{x:n[0],y:n[1]};var o=this.dataArray[r],a=o.points;switch(o.command){case"L":return In.getPointOnLine(t,o.start.x,o.start.y,a[0],a[1]);case"C":return In.getPointOnCubicBezier(t/o.pathLength,o.start.x,o.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return In.getPointOnQuadraticBezier(t/o.pathLength,o.start.x,o.start.y,a[0],a[1],a[2],a[3]);case"A":var s=a[0],l=a[1],c=a[2],p=a[3],g=a[4],m=a[5],y=a[6];return g+=m*t/o.pathLength,In.getPointOnEllipticalArc(s,l,c,p,g,y)}return null}static getLineLength(t,n,r,i){return Math.sqrt((r-t)*(r-t)+(i-n)*(i-n))}static getPointOnLine(t,n,r,i,o,a,s){a===void 0&&(a=n),s===void 0&&(s=r);var l=(o-r)/(i-n+1e-8),c=Math.sqrt(t*t/(1+l*l));i0&&!isNaN(b[0]);){var k=null,L=[],I=l,O=c,D,N,z,W,V,q,he,de,ve,Ee;switch(y){case"l":l+=b.shift(),c+=b.shift(),k="L",L.push(l,c);break;case"L":l=b.shift(),c=b.shift(),L.push(l,c);break;case"m":var xe=b.shift(),Z=b.shift();if(l+=xe,c+=Z,k="M",a.length>2&&a[a.length-1].command==="z"){for(var U=a.length-2;U>=0;U--)if(a[U].command==="M"){l=a[U].points[0]+xe,c=a[U].points[1]+Z;break}}L.push(l,c),y="l";break;case"M":l=b.shift(),c=b.shift(),k="M",L.push(l,c),y="L";break;case"h":l+=b.shift(),k="L",L.push(l,c);break;case"H":l=b.shift(),k="L",L.push(l,c);break;case"v":c+=b.shift(),k="L",L.push(l,c);break;case"V":c=b.shift(),k="L",L.push(l,c);break;case"C":L.push(b.shift(),b.shift(),b.shift(),b.shift()),l=b.shift(),c=b.shift(),L.push(l,c);break;case"c":L.push(l+b.shift(),c+b.shift(),l+b.shift(),c+b.shift()),l+=b.shift(),c+=b.shift(),k="C",L.push(l,c);break;case"S":N=l,z=c,D=a[a.length-1],D.command==="C"&&(N=l+(l-D.points[2]),z=c+(c-D.points[3])),L.push(N,z,b.shift(),b.shift()),l=b.shift(),c=b.shift(),k="C",L.push(l,c);break;case"s":N=l,z=c,D=a[a.length-1],D.command==="C"&&(N=l+(l-D.points[2]),z=c+(c-D.points[3])),L.push(N,z,l+b.shift(),c+b.shift()),l+=b.shift(),c+=b.shift(),k="C",L.push(l,c);break;case"Q":L.push(b.shift(),b.shift()),l=b.shift(),c=b.shift(),L.push(l,c);break;case"q":L.push(l+b.shift(),c+b.shift()),l+=b.shift(),c+=b.shift(),k="Q",L.push(l,c);break;case"T":N=l,z=c,D=a[a.length-1],D.command==="Q"&&(N=l+(l-D.points[0]),z=c+(c-D.points[1])),l=b.shift(),c=b.shift(),k="Q",L.push(N,z,l,c);break;case"t":N=l,z=c,D=a[a.length-1],D.command==="Q"&&(N=l+(l-D.points[0]),z=c+(c-D.points[1])),l+=b.shift(),c+=b.shift(),k="Q",L.push(N,z,l,c);break;case"A":W=b.shift(),V=b.shift(),q=b.shift(),he=b.shift(),de=b.shift(),ve=l,Ee=c,l=b.shift(),c=b.shift(),k="A",L=this.convertEndpointToCenterParameterization(ve,Ee,l,c,he,de,W,V,q);break;case"a":W=b.shift(),V=b.shift(),q=b.shift(),he=b.shift(),de=b.shift(),ve=l,Ee=c,l+=b.shift(),c+=b.shift(),k="A",L=this.convertEndpointToCenterParameterization(ve,Ee,l,c,he,de,W,V,q);break}a.push({command:k||y,points:L,start:{x:I,y:O},pathLength:this.calcLength(I,O,k||y,L)})}(y==="z"||y==="Z")&&a.push({command:"z",points:[],start:void 0,pathLength:0})}return a}static calcLength(t,n,r,i){var o,a,s,l,c=In;switch(r){case"L":return c.getLineLength(t,n,i[0],i[1]);case"C":for(o=0,a=c.getPointOnCubicBezier(0,t,n,i[0],i[1],i[2],i[3],i[4],i[5]),l=.01;l<=1;l+=.01)s=c.getPointOnCubicBezier(l,t,n,i[0],i[1],i[2],i[3],i[4],i[5]),o+=c.getLineLength(a.x,a.y,s.x,s.y),a=s;return o;case"Q":for(o=0,a=c.getPointOnQuadraticBezier(0,t,n,i[0],i[1],i[2],i[3]),l=.01;l<=1;l+=.01)s=c.getPointOnQuadraticBezier(l,t,n,i[0],i[1],i[2],i[3]),o+=c.getLineLength(a.x,a.y,s.x,s.y),a=s;return o;case"A":o=0;var p=i[4],g=i[5],m=i[4]+g,y=Math.PI/180;if(Math.abs(p-m)m;l-=y)s=c.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=c.getLineLength(a.x,a.y,s.x,s.y),a=s;else for(l=p+y;l1&&(s*=Math.sqrt(y),l*=Math.sqrt(y));var b=Math.sqrt((s*s*(l*l)-s*s*(m*m)-l*l*(g*g))/(s*s*(m*m)+l*l*(g*g)));o===a&&(b*=-1),isNaN(b)&&(b=0);var S=b*s*m/l,T=b*-l*g/s,E=(t+r)/2+Math.cos(p)*S-Math.sin(p)*T,k=(n+i)/2+Math.sin(p)*S+Math.cos(p)*T,L=function(V){return Math.sqrt(V[0]*V[0]+V[1]*V[1])},I=function(V,q){return(V[0]*q[0]+V[1]*q[1])/(L(V)*L(q))},O=function(V,q){return(V[0]*q[1]=1&&(W=0),a===0&&W>0&&(W=W-2*Math.PI),a===1&&W<0&&(W=W+2*Math.PI),[E,k,s,l,D,W,p,a]}}In.prototype.className="Path";In.prototype._attrsAffectingSize=["data"];hr(In);j.addGetterSetter(In,"data");class rh extends Eu{_sceneFunc(t){super._sceneFunc(t);var n=Math.PI*2,r=this.points(),i=r,o=this.tension()!==0&&r.length>4;o&&(i=this.getTensionPoints());var a=this.pointerLength(),s=r.length,l,c;if(o){const m=[i[i.length-4],i[i.length-3],i[i.length-2],i[i.length-1],r[s-2],r[s-1]],y=In.calcLength(i[i.length-4],i[i.length-3],"C",m),b=In.getPointOnQuadraticBezier(Math.min(1,1-a/y),m[0],m[1],m[2],m[3],m[4],m[5]);l=r[s-2]-b.x,c=r[s-1]-b.y}else l=r[s-2]-r[s-4],c=r[s-1]-r[s-3];var p=(Math.atan2(c,l)+n)%n,g=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(r[s-2],r[s-1]),t.rotate(p),t.moveTo(0,0),t.lineTo(-a,g/2),t.lineTo(-a,-g/2),t.closePath(),t.restore(),this.__fillStroke(t)),this.pointerAtBeginning()&&(t.save(),t.beginPath(),t.translate(r[0],r[1]),o?(l=(i[0]+i[2])/2-r[0],c=(i[1]+i[3])/2-r[1]):(l=r[2]-r[0],c=r[3]-r[1]),t.rotate((Math.atan2(-c,-l)+n)%n),t.moveTo(0,0),t.lineTo(-a,g/2),t.lineTo(-a,-g/2),t.closePath(),t.restore(),this.__fillStroke(t))}__fillStroke(t){var n=this.dashEnabled();n&&(this.attrs.dashEnabled=!1,t.setLineDash([])),t.fillStrokeShape(this),n&&(this.attrs.dashEnabled=!0)}getSelfRect(){const t=super.getSelfRect(),n=this.pointerWidth()/2;return{x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2}}}rh.prototype.className="Arrow";hr(rh);j.addGetterSetter(rh,"pointerLength",10,ze());j.addGetterSetter(rh,"pointerWidth",10,ze());j.addGetterSetter(rh,"pointerAtBeginning",!1);j.addGetterSetter(rh,"pointerAtEnding",!0);class V0 extends Ae{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius()!==t/2&&this.radius(t/2)}setHeight(t){this.radius()!==t/2&&this.radius(t/2)}}V0.prototype._centroid=!0;V0.prototype.className="Circle";V0.prototype._attrsAffectingSize=["radius"];hr(V0);j.addGetterSetter(V0,"radius",0,ze());class dd extends Ae{_sceneFunc(t){var n=this.radiusX(),r=this.radiusY();t.beginPath(),t.save(),n!==r&&t.scale(1,r/n),t.arc(0,0,n,0,Math.PI*2,!1),t.restore(),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(t){this.radiusX(t/2)}setHeight(t){this.radiusY(t/2)}}dd.prototype.className="Ellipse";dd.prototype._centroid=!0;dd.prototype._attrsAffectingSize=["radiusX","radiusY"];hr(dd);j.addComponentsGetterSetter(dd,"radius",["x","y"]);j.addGetterSetter(dd,"radiusX",0,ze());j.addGetterSetter(dd,"radiusY",0,ze());class Cs extends Ae{constructor(t){super(t),this.on("imageChange.konva",()=>{this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const t=this.image();t&&t.complete||t&&t.readyState===4||t&&t.addEventListener&&t.addEventListener("load",()=>{this._requestDraw()})}_useBufferCanvas(){return super._useBufferCanvas(!0)}_sceneFunc(t){const n=this.getWidth(),r=this.getHeight(),i=this.attrs.image;let o;if(i){const a=this.attrs.cropWidth,s=this.attrs.cropHeight;a&&s?o=[i,this.cropX(),this.cropY(),a,s,0,0,n,r]:o=[i,0,0,n,r]}(this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)),i&&t.drawImage.apply(t,o)}_hitFunc(t){var n=this.width(),r=this.height();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}getWidth(){var t,n;return(t=this.attrs.width)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.width}getHeight(){var t,n;return(t=this.attrs.height)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.height}static fromURL(t,n,r=null){var i=se.createImageElement();i.onload=function(){var o=new Cs({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}}Cs.prototype.className="Image";hr(Cs);j.addGetterSetter(Cs,"image");j.addComponentsGetterSetter(Cs,"crop",["x","y","width","height"]);j.addGetterSetter(Cs,"cropX",0,ze());j.addGetterSetter(Cs,"cropY",0,ze());j.addGetterSetter(Cs,"cropWidth",0,ze());j.addGetterSetter(Cs,"cropHeight",0,ze());var Y$=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],Sbe="Change.konva",wbe="none",S8="up",w8="right",C8="down",_8="left",Cbe=Y$.length;class c_ extends _0{constructor(t){super(t),this.on("add.konva",function(n){this._addListeners(n.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(t){var n=this,r,i=function(){n._sync()};for(r=0;r{n=Math.min(n,a.x),r=Math.max(r,a.x),i=Math.min(i,a.y),o=Math.max(o,a.y)}),{x:n,y:i,width:r-n,height:o-i}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}oh.prototype.className="RegularPolygon";oh.prototype._centroid=!0;oh.prototype._attrsAffectingSize=["radius"];hr(oh);j.addGetterSetter(oh,"radius",0,ze());j.addGetterSetter(oh,"sides",0,ze());var zA=Math.PI*2;class ah extends Ae{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,zA,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),zA,0,!0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(t){this.outerRadius(t/2)}setHeight(t){this.outerRadius(t/2)}}ah.prototype.className="Ring";ah.prototype._centroid=!0;ah.prototype._attrsAffectingSize=["innerRadius","outerRadius"];hr(ah);j.addGetterSetter(ah,"innerRadius",0,ze());j.addGetterSetter(ah,"outerRadius",0,ze());class Tl extends Ae{constructor(t){super(t),this._updated=!0,this.anim=new Aa(()=>{var n=this._updated;return this._updated=!1,n}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){!this.anim.isRunning()||(clearInterval(this.interval),this._setInterval())})}_sceneFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],a=this.frameOffsets(),s=o[i+0],l=o[i+1],c=o[i+2],p=o[i+3],g=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,c,p),t.closePath(),t.fillStrokeShape(this)),g)if(a){var m=a[n],y=r*2;t.drawImage(g,s,l,c,p,m[y+0],m[y+1],c,p)}else t.drawImage(g,s,l,c,p,0,0,c,p)}_hitFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],a=this.frameOffsets(),s=o[i+2],l=o[i+3];if(t.beginPath(),a){var c=a[n],p=r*2;t.rect(c[p+0],c[p+1],s,l)}else t.rect(0,0,s,l);t.closePath(),t.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.frameRate())}start(){if(!this.isRunning()){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()}}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){var t=this.frameIndex(),n=this.animation(),r=this.animations(),i=r[n],o=i.length/4;t{t=t.trim();const n=t.indexOf(" ")>=0,r=t.indexOf('"')>=0||t.indexOf("'")>=0;return n&&!r&&(t=`"${t}"`),t}).join(", ")}var Py;function WS(){return Py||(Py=se.createCanvasElement().getContext(Ebe),Py)}function zbe(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function Fbe(e){e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function Bbe(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}class fr extends Ae{constructor(t){super(Bbe(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(E+=a)}}}_hitFunc(t){var n=this.getWidth(),r=this.getHeight();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}setText(t){var n=se._isString(t)?t:t==null?"":t+"";return this._setAttr(Pbe,n),this}getWidth(){var t=this.attrs.width===vp||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===vp||this.attrs.height===void 0;return t?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return se.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(t){var n=WS(),r=this.fontSize(),i;return n.save(),n.font=this._getContextFont(),i=n.measureText(t),n.restore(),{width:i.width,height:r}}_getContextFont(){return this.fontStyle()+Ey+this.fontVariant()+Ey+(this.fontSize()+Ibe)+Dbe(this.fontFamily())}_addTextLine(t){this.align()===gg&&(t=t.trim());var n=this._getTextWidth(t);return this.textArr.push({text:t,width:n,lastInParagraph:!1})}_getTextWidth(t){var n=this.letterSpacing(),r=t.length;return WS().measureText(t).width+(r?n*(r-1):0)}_setTextData(){var t=this.text().split(` -`),n=+this.fontSize(),r=0,i=this.lineHeight()*n,o=this.attrs.width,a=this.attrs.height,s=o!==vp&&o!==void 0,l=a!==vp&&a!==void 0,c=this.padding(),p=o-c*2,g=a-c*2,m=0,y=this.wrap(),b=y!==$A,S=y!==Obe&&b,T=this.ellipsis();this.textArr=[],WS().font=this._getContextFont();for(var E=T?this._getTextWidth(HS):0,k=0,L=t.length;kp)for(;I.length>0;){for(var D=0,N=I.length,z="",W=0;D>>1,q=I.slice(0,V+1),he=this._getTextWidth(q)+E;he<=p?(D=V+1,z=q,W=he):N=V}if(z){if(S){var de,ve=I[z.length],Ee=ve===Ey||ve===FA;Ee&&W<=p?de=z.length:de=Math.max(z.lastIndexOf(Ey),z.lastIndexOf(FA))+1,de>0&&(D=de,z=z.slice(0,D),W=this._getTextWidth(z))}z=z.trimRight(),this._addTextLine(z),r=Math.max(r,W),m+=i;var xe=this._shouldHandleEllipsis(m);if(xe){this._tryToAddEllipsisToLastLine();break}if(I=I.slice(D),I=I.trimLeft(),I.length>0&&(O=this._getTextWidth(I),O<=p)){this._addTextLine(I),m+=i,r=Math.max(r,O);break}}else break}else this._addTextLine(I),m+=i,r=Math.max(r,O),this._shouldHandleEllipsis(m)&&kg)break;this.textArr[this.textArr.length-1]&&(this.textArr[this.textArr.length-1].lastInParagraph=!0)}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==vp&&i!==void 0,a=this.padding(),s=i-a*2,l=this.wrap(),c=l!==$A;return!c||o&&t+r>s}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==vp&&t!==void 0,r=this.padding(),i=t-r*2,o=this.ellipsis(),a=this.textArr[this.textArr.length-1];if(!(!a||!o)){if(n){var s=this._getTextWidth(a.text+HS)=1){var r=n[0].p0;t.moveTo(r.x,r.y)}for(var i=0;i0&&(s+=t.dataArray[l].pathLength);var c=0;i==="center"&&(c=Math.max(0,s/2-a/2)),i==="right"&&(c=Math.max(0,s-a));for(var p=X$(this.text()),g=this.text().split(" ").length-1,m,y,b,S=-1,T=0,E=function(){T=0;for(var he=t.dataArray,de=S+1;de0)return S=de,he[de];he[de].command==="M"&&(m={x:he[de].points[0],y:he[de].points[1]})}return{}},k=function(he){var de=t._getTextSize(he).width+r;he===" "&&i==="justify"&&(de+=(s-a)/g);var ve=0,Ee=0;for(y=void 0;Math.abs(de-ve)/de>.01&&Ee<20;){Ee++;for(var xe=ve;b===void 0;)b=E(),b&&xe+b.pathLengthde?y=In.getPointOnLine(de,m.x,m.y,b.points[0],b.points[1],m.x,m.y):b=void 0;break;case"A":var U=b.points[4],ee=b.points[5],ae=b.points[4]+ee;T===0?T=U+1e-8:de>ve?T+=Math.PI/180*ee/Math.abs(ee):T-=Math.PI/360*ee/Math.abs(ee),(ee<0&&T=0&&T>ae)&&(T=ae,Z=!0),y=In.getPointOnEllipticalArc(b.points[0],b.points[1],b.points[2],b.points[3],T,b.points[6]);break;case"C":T===0?de>b.pathLength?T=1e-8:T=de/b.pathLength:de>ve?T+=(de-ve)/b.pathLength/2:T=Math.max(T-(ve-de)/b.pathLength/2,0),T>1&&(T=1,Z=!0),y=In.getPointOnCubicBezier(T,b.start.x,b.start.y,b.points[0],b.points[1],b.points[2],b.points[3],b.points[4],b.points[5]);break;case"Q":T===0?T=de/b.pathLength:de>ve?T+=(de-ve)/b.pathLength:T-=(ve-de)/b.pathLength,T>1&&(T=1,Z=!0),y=In.getPointOnQuadraticBezier(T,b.start.x,b.start.y,b.points[0],b.points[1],b.points[2],b.points[3]);break}y!==void 0&&(ve=In.getLineLength(m.x,m.y,y.x,y.y)),Z&&(Z=!1,b=void 0)}},L="C",I=t._getTextSize(L).width+r,O=c/I-1,D=0;De+`.${iH}`).join(" "),HA="nodesRect",Wbe=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],Vbe={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135};const Ube="ontouchstart"in et._global;function Gbe(e,t){if(e==="rotater")return"crosshair";t+=se.degToRad(Vbe[e]||0);var n=(se.radToDeg(t)%360+360)%360;return se._inRange(n,315+22.5,360)||se._inRange(n,0,22.5)?"ns-resize":se._inRange(n,45-22.5,45+22.5)?"nesw-resize":se._inRange(n,90-22.5,90+22.5)?"ew-resize":se._inRange(n,135-22.5,135+22.5)?"nwse-resize":se._inRange(n,180-22.5,180+22.5)?"ns-resize":se._inRange(n,225-22.5,225+22.5)?"nesw-resize":se._inRange(n,270-22.5,270+22.5)?"ew-resize":se._inRange(n,315-22.5,315+22.5)?"nwse-resize":(se.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var z4=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],WA=1e8;function jbe(e){return{x:e.x+e.width/2*Math.cos(e.rotation)+e.height/2*Math.sin(-e.rotation),y:e.y+e.height/2*Math.cos(e.rotation)+e.width/2*Math.sin(e.rotation)}}function oH(e,t,n){const r=n.x+(e.x-n.x)*Math.cos(t)-(e.y-n.y)*Math.sin(t),i=n.y+(e.x-n.x)*Math.sin(t)+(e.y-n.y)*Math.cos(t);return Object.assign(Object.assign({},e),{rotation:e.rotation+t,x:r,y:i})}function qbe(e,t){const n=jbe(e);return oH(e,t,n)}function Kbe(e,t,n){let r=t;for(let i=0;i{const i=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},o=r._attrsAffectingSize.map(a=>a+"Change."+this._getEventNamespace()).join(" ");r.on(o,i),r.on(Wbe.map(a=>a+`.${this._getEventNamespace()}`).join(" "),i),r.on(`absoluteTransformChange.${this._getEventNamespace()}`,i),this._proxyDrag(r)}),this._resetTransformCache();var n=!!this.findOne(".top-left");return n&&this.update(),this}_proxyDrag(t){let n;t.on(`dragstart.${this._getEventNamespace()}`,r=>{n=t.getAbsolutePosition(),!this.isDragging()&&t!==this.findOne(".back")&&this.startDrag(r,!1)}),t.on(`dragmove.${this._getEventNamespace()}`,r=>{if(!n)return;const i=t.getAbsolutePosition(),o=i.x-n.x,a=i.y-n.y;this.nodes().forEach(s=>{if(s===t||s.isDragging())return;const l=s.getAbsolutePosition();s.setAbsolutePosition({x:l.x+o,y:l.y+a}),s.startDrag(r)}),n=null})}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach(t=>{t.off("."+this._getEventNamespace())}),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(HA),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(HA,this.__getNodeRect)}__getNodeShape(t,n=this.rotation(),r){var i=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),o=t.getAbsoluteScale(r),a=t.getAbsolutePosition(r),s=i.x*o.x-t.offsetX()*o.x,l=i.y*o.y-t.offsetY()*o.y;const c=(et.getAngle(t.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),p={x:a.x+s*Math.cos(c)+l*Math.sin(-c),y:a.y+l*Math.cos(c)+s*Math.sin(c),width:i.width*o.x,height:i.height*o.y,rotation:c};return oH(p,-et.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-WA,y:-WA,width:0,height:0,rotation:0};const n=[];this.nodes().map(c=>{const p=c.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var g=[{x:p.x,y:p.y},{x:p.x+p.width,y:p.y},{x:p.x+p.width,y:p.y+p.height},{x:p.x,y:p.y+p.height}],m=c.getAbsoluteTransform();g.forEach(function(y){var b=m.point(y);n.push(b)})});const r=new Qo;r.rotate(-et.getAngle(this.rotation()));var i,o,a,s;n.forEach(function(c){var p=r.point(c);i===void 0&&(i=a=p.x,o=s=p.y),i=Math.min(i,p.x),o=Math.min(o,p.y),a=Math.max(a,p.x),s=Math.max(s,p.y)}),r.invert();const l=r.point({x:i,y:o});return{x:l.x,y:l.y,width:a-i,height:s-o,rotation:et.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),z4.forEach(function(t){this._createAnchor(t)}.bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new Rv({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:Ube?10:"auto"}),r=this;n.on("mousedown touchstart",function(i){r._handleMouseDown(i)}),n.on("dragstart",i=>{n.stopDrag(),i.cancelBubble=!0}),n.on("dragend",i=>{i.cancelBubble=!0}),n.on("mouseenter",()=>{var i=et.getAngle(this.rotation()),o=Gbe(t,i);n.getStage().content&&(n.getStage().content.style.cursor=o),this._cursorChange=!0}),n.on("mouseout",()=>{n.getStage().content&&(n.getStage().content.style.cursor=""),this._cursorChange=!1}),this.add(n)}_createBack(){var t=new Ae({name:"back",width:0,height:0,draggable:!0,sceneFunc(n){var r=this.getParent(),i=r.padding();n.beginPath(),n.rect(-i,-i,this.width()+i*2,this.height()+i*2),n.moveTo(this.width()/2,-i),r.rotateEnabled()&&n.lineTo(this.width()/2,-r.rotateAnchorOffset()*se._sign(this.height())-i),n.fillStrokeShape(this)},hitFunc:(n,r)=>{if(!!this.shouldOverdrawWholeArea()){var i=this.padding();n.beginPath(),n.rect(-i,-i,r.width()+i*2,r.height()+i*2),n.fillStrokeShape(r)}}});this.add(t),this._proxyDrag(t),t.on("dragstart",n=>{n.cancelBubble=!0}),t.on("dragmove",n=>{n.cancelBubble=!0}),t.on("dragend",n=>{n.cancelBubble=!0}),this.on("dragmove",n=>{this.update()})}_handleMouseDown(t){this._movingAnchorName=t.target.name().split(" ")[0];var n=this._getNodeRect(),r=n.width,i=n.height,o=Math.sqrt(Math.pow(r,2)+Math.pow(i,2));this.sin=Math.abs(i/o),this.cos=Math.abs(r/o),typeof window<"u"&&(window.addEventListener("mousemove",this._handleMouseMove),window.addEventListener("touchmove",this._handleMouseMove),window.addEventListener("mouseup",this._handleMouseUp,!0),window.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;var a=t.target.getAbsolutePosition(),s=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:s.x-a.x,y:s.y-a.y},this._fire("transformstart",{evt:t.evt,target:this.getNode()}),this._nodes.forEach(l=>{l._fire("transformstart",{evt:t.evt,target:l})})}_handleMouseMove(t){var n,r,i,o=this.findOne("."+this._movingAnchorName),a=o.getStage();a.setPointersPositions(t);const s=a.getPointerPosition();let l={x:s.x-this._anchorDragOffset.x,y:s.y-this._anchorDragOffset.y};const c=o.getAbsolutePosition();this.anchorDragBoundFunc()&&(l=this.anchorDragBoundFunc()(c,l,t)),o.setAbsolutePosition(l);const p=o.getAbsolutePosition();if(!(c.x===p.x&&c.y===p.y)){if(this._movingAnchorName==="rotater"){var g=this._getNodeRect();n=o.x()-g.width/2,r=-o.y()+g.height/2;let he=Math.atan2(-r,n)+Math.PI/2;g.height<0&&(he-=Math.PI);var m=et.getAngle(this.rotation());const de=m+he,ve=et.getAngle(this.rotationSnapTolerance()),xe=Kbe(this.rotationSnaps(),de,ve)-g.rotation,Z=qbe(g,xe);this._fitNodesInto(Z,t);return}var y=this.keepRatio()||t.shiftKey,k=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(y){var b=k?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};i=Math.sqrt(Math.pow(b.x-o.x(),2)+Math.pow(b.y-o.y(),2));var S=this.findOne(".top-left").x()>b.x?-1:1,T=this.findOne(".top-left").y()>b.y?-1:1;n=i*this.cos*S,r=i*this.sin*T,this.findOne(".top-left").x(b.x-n),this.findOne(".top-left").y(b.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(y){var b=k?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};i=Math.sqrt(Math.pow(o.x()-b.x,2)+Math.pow(b.y-o.y(),2));var S=this.findOne(".top-right").x()b.y?-1:1;n=i*this.cos*S,r=i*this.sin*T,this.findOne(".top-right").x(b.x+n),this.findOne(".top-right").y(b.y-r)}var E=o.position();this.findOne(".top-left").y(E.y),this.findOne(".bottom-right").x(E.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(o.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(o.x());else if(this._movingAnchorName==="bottom-left"){if(y){var b=k?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};i=Math.sqrt(Math.pow(b.x-o.x(),2)+Math.pow(o.y()-b.y,2));var S=b.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(se._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(se._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var a=new Qo;if(a.rotate(et.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const g=a.point({x:-this.padding()*2,y:0});if(t.x+=g.x,t.y+=g.y,t.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,!o){this.update();return}}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const g=a.point({x:this.padding()*2,y:0});if(this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.width+=this.padding()*2,!o){this.update();return}}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const g=a.point({x:0,y:-this.padding()*2});if(t.x+=g.x,t.y+=g.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.height+=this.padding()*2,!o){this.update();return}}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const g=a.point({x:0,y:this.padding()*2});if(this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.height+=this.padding()*2,!o){this.update();return}}if(this.boundBoxFunc()){const g=this.boundBoxFunc()(r,t);g?t=g:se.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const s=1e7,l=new Qo;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/s,r.height/s);const c=new Qo;c.translate(t.x,t.y),c.rotate(t.rotation),c.scale(t.width/s,t.height/s);const p=c.multiply(l.invert());this._nodes.forEach(g=>{var m;const y=g.getParent().getAbsoluteTransform(),b=g.getTransform().copy();b.translate(g.offsetX(),g.offsetY());const S=new Qo;S.multiply(y.copy().invert()).multiply(p).multiply(y).multiply(b);const T=S.decompose();g.setAttrs(T),this._fire("transform",{evt:n,target:g}),g._fire("transform",{evt:n,target:g}),(m=g.getLayer())===null||m===void 0||m.batchDraw()}),this.rotation(se._getRotation(t.rotation)),this._resetTransformCache(),this.update(),this.getLayer().batchDraw()}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(t,n){this.findOne(t).setAttrs(n)}update(){var t,n=this._getNodeRect();this.rotation(se._getRotation(n.rotation));var r=n.width,i=n.height,o=this.enabledAnchors(),a=this.resizeEnabled(),s=this.padding(),l=this.anchorSize();this.find("._anchor").forEach(c=>{c.setAttrs({width:l,height:l,offsetX:l/2,offsetY:l/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})}),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:l/2+s,offsetY:l/2+s,visible:a&&o.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:r/2,y:0,offsetY:l/2+s,visible:a&&o.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:r,y:0,offsetX:l/2-s,offsetY:l/2+s,visible:a&&o.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:i/2,offsetX:l/2+s,visible:a&&o.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:r,y:i/2,offsetX:l/2-s,visible:a&&o.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:i,offsetX:l/2+s,offsetY:l/2-s,visible:a&&o.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:r/2,y:i,offsetY:l/2-s,visible:a&&o.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:r,y:i,offsetX:l/2-s,offsetY:l/2-s,visible:a&&o.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:r/2,y:-this.rotateAnchorOffset()*se._sign(i)-s,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:r,height:i,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),x:0,y:0}),(t=this.getLayer())===null||t===void 0||t.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();var t=this.findOne("."+this._movingAnchorName);t&&t.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),_0.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return Fe.prototype.toObject.call(this)}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}function Zbe(e){return e instanceof Array||se.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){z4.indexOf(t)===-1&&se.warn("Unknown anchor name: "+t+". Available names are: "+z4.join(", "))}),e||[]}bn.prototype.className="Transformer";hr(bn);j.addGetterSetter(bn,"enabledAnchors",z4,Zbe);j.addGetterSetter(bn,"flipEnabled",!0,ws());j.addGetterSetter(bn,"resizeEnabled",!0);j.addGetterSetter(bn,"anchorSize",10,ze());j.addGetterSetter(bn,"rotateEnabled",!0);j.addGetterSetter(bn,"rotationSnaps",[]);j.addGetterSetter(bn,"rotateAnchorOffset",50,ze());j.addGetterSetter(bn,"rotationSnapTolerance",5,ze());j.addGetterSetter(bn,"borderEnabled",!0);j.addGetterSetter(bn,"anchorStroke","rgb(0, 161, 255)");j.addGetterSetter(bn,"anchorStrokeWidth",1,ze());j.addGetterSetter(bn,"anchorFill","white");j.addGetterSetter(bn,"anchorCornerRadius",0,ze());j.addGetterSetter(bn,"borderStroke","rgb(0, 161, 255)");j.addGetterSetter(bn,"borderStrokeWidth",1,ze());j.addGetterSetter(bn,"borderDash");j.addGetterSetter(bn,"keepRatio",!0);j.addGetterSetter(bn,"centeredScaling",!1);j.addGetterSetter(bn,"ignoreStroke",!1);j.addGetterSetter(bn,"padding",0,ze());j.addGetterSetter(bn,"node");j.addGetterSetter(bn,"nodes");j.addGetterSetter(bn,"boundBoxFunc");j.addGetterSetter(bn,"anchorDragBoundFunc");j.addGetterSetter(bn,"shouldOverdrawWholeArea",!1);j.addGetterSetter(bn,"useSingleNodeRotation",!0);j.backCompat(bn,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});class Pu extends Ae{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,et.getAngle(this.angle()),this.clockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}Pu.prototype.className="Wedge";Pu.prototype._centroid=!0;Pu.prototype._attrsAffectingSize=["radius"];hr(Pu);j.addGetterSetter(Pu,"radius",0,ze());j.addGetterSetter(Pu,"angle",0,ze());j.addGetterSetter(Pu,"clockwise",!1);j.backCompat(Pu,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});function VA(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var Ybe=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],Xbe=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function Qbe(e,t){var n=e.data,r=e.width,i=e.height,o,a,s,l,c,p,g,m,y,b,S,T,E,k,L,I,O,D,N,z,W,V,q,he,de=t+t+1,ve=r-1,Ee=i-1,xe=t+1,Z=xe*(xe+1)/2,U=new VA,ee=null,ae=U,X=null,me=null,ye=Ybe[t],Se=Xbe[t];for(s=1;s>Se,q!==0?(q=255/q,n[p]=(m*ye>>Se)*q,n[p+1]=(y*ye>>Se)*q,n[p+2]=(b*ye>>Se)*q):n[p]=n[p+1]=n[p+2]=0,m-=T,y-=E,b-=k,S-=L,T-=X.r,E-=X.g,k-=X.b,L-=X.a,l=g+((l=o+t+1)>Se,q>0?(q=255/q,n[l]=(m*ye>>Se)*q,n[l+1]=(y*ye>>Se)*q,n[l+2]=(b*ye>>Se)*q):n[l]=n[l+1]=n[l+2]=0,m-=T,y-=E,b-=k,S-=L,T-=X.r,E-=X.g,k-=X.b,L-=X.a,l=o+((l=a+xe)0&&Qbe(t,n)};j.addGetterSetter(Fe,"blurRadius",0,ze(),j.afterSetFilter);const eSe=function(e){var t=this.brightness()*255,n=e.data,r=n.length,i;for(i=0;i255?255:i,o=o<0?0:o>255?255:o,a=a<0?0:a>255?255:a,n[s]=i,n[s+1]=o,n[s+2]=a};j.addGetterSetter(Fe,"contrast",0,ze(),j.afterSetFilter);const nSe=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,a=0,s=e.data,l=e.width,c=e.height,p=l*4,g=c;switch(r){case"top-left":o=-1,a=-1;break;case"top":o=-1,a=0;break;case"top-right":o=-1,a=1;break;case"right":o=0,a=1;break;case"bottom-right":o=1,a=1;break;case"bottom":o=1,a=0;break;case"bottom-left":o=1,a=-1;break;case"left":o=0,a=-1;break;default:se.error("Unknown emboss direction: "+r)}do{var m=(g-1)*p,y=o;g+y<1&&(y=0),g+y>c&&(y=0);var b=(g-1+y)*l*4,S=l;do{var T=m+(S-1)*4,E=a;S+E<1&&(E=0),S+E>l&&(E=0);var k=b+(S-1+E)*4,L=s[T]-s[k],I=s[T+1]-s[k+1],O=s[T+2]-s[k+2],D=L,N=D>0?D:-D,z=I>0?I:-I,W=O>0?O:-O;if(z>N&&(D=I),W>N&&(D=O),D*=t,i){var V=s[T]+D,q=s[T+1]+D,he=s[T+2]+D;s[T]=V>255?255:V<0?0:V,s[T+1]=q>255?255:q<0?0:q,s[T+2]=he>255?255:he<0?0:he}else{var de=n-D;de<0?de=0:de>255&&(de=255),s[T]=s[T+1]=s[T+2]=de}}while(--S)}while(--g)};j.addGetterSetter(Fe,"embossStrength",.5,ze(),j.afterSetFilter);j.addGetterSetter(Fe,"embossWhiteLevel",.5,ze(),j.afterSetFilter);j.addGetterSetter(Fe,"embossDirection","top-left",null,j.afterSetFilter);j.addGetterSetter(Fe,"embossBlend",!1,null,j.afterSetFilter);function VS(e,t,n,r,i){var o=n-t,a=i-r,s;return o===0?r+a/2:a===0?r:(s=(e-t)/o,s=a*s+r,s)}const rSe=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,a=t[1],s=a,l,c=t[2],p=c,g,m,y=this.enhance();if(y!==0){for(m=0;mi&&(i=o),l=t[m+1],ls&&(s=l),g=t[m+2],gp&&(p=g);i===r&&(i=255,r=0),s===a&&(s=255,a=0),p===c&&(p=255,c=0);var b,S,T,E,k,L,I,O,D;for(y>0?(S=i+y*(255-i),T=r-y*(r-0),k=s+y*(255-s),L=a-y*(a-0),O=p+y*(255-p),D=c-y*(c-0)):(b=(i+r)*.5,S=i+y*(i-b),T=r+y*(r-b),E=(s+a)*.5,k=s+y*(s-E),L=a+y*(a-E),I=(p+c)*.5,O=p+y*(p-I),D=c+y*(c-I)),m=0;mE?T:E;var k=a,L=o,I,O,D=360/L*Math.PI/180,N,z;for(O=0;OL?k:L;var I=a,O=o,D,N,z=n.polarRotation||0,W,V;for(p=0;pt&&(I=L,O=0,D=-1),i=0;i=0&&y=0&&b=0&&y=0&&b=255*4?255:0}return a}function mSe(e,t,n){for(var r=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),a=[],s=0;s=0&&y=0&&b=n))for(o=S;o=r||(a=(n*o+i)*4,s+=I[a+0],l+=I[a+1],c+=I[a+2],p+=I[a+3],L+=1);for(s=s/L,l=l/L,c=c/L,p=p/L,i=y;i=n))for(o=S;o=r||(a=(n*o+i)*4,I[a+0]=s,I[a+1]=l,I[a+2]=c,I[a+3]=p)}};j.addGetterSetter(Fe,"pixelSize",8,ze(),j.afterSetFilter);const bSe=function(e){var t=Math.round(this.levels()*254)+1,n=e.data,r=n.length,i=255/t,o;for(o=0;o255?255:e<0?0:Math.round(e)});j.addGetterSetter(Fe,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});j.addGetterSetter(Fe,"blue",0,T$,j.afterSetFilter);const wSe=function(e){var t=e.data,n=t.length,r=this.red(),i=this.green(),o=this.blue(),a=this.alpha(),s,l;for(s=0;s255?255:e<0?0:Math.round(e)});j.addGetterSetter(Fe,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});j.addGetterSetter(Fe,"blue",0,T$,j.afterSetFilter);j.addGetterSetter(Fe,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});const CSe=function(e){var t=e.data,n=t.length,r,i,o,a;for(r=0;r127&&(c=255-c),p>127&&(p=255-p),g>127&&(g=255-g),t[l]=c,t[l+1]=p,t[l+2]=g}while(--s)}while(--o)},kSe=function(e){var t=this.threshold()*255,n=e.data,r=n.length,i;for(i=0;ite||P[$]!==M[te]){var le=` -`+P[$].replace(" at new "," at ");return d.displayName&&le.includes("")&&(le=le.replace("",d.displayName)),le}while(1<=$&&0<=te);break}}}finally{Ps=!1,Error.prepareStackTrace=v}return(d=d?d.displayName||d.name:"")?Al(d):""}var dh=Object.prototype.hasOwnProperty,Iu=[],Ts=-1;function Mo(d){return{current:d}}function Cn(d){0>Ts||(d.current=Iu[Ts],Iu[Ts]=null,Ts--)}function gn(d,f){Ts++,Iu[Ts]=d.current,d.current=f}var Ro={},_r=Mo(Ro),Ur=Mo(!1),Oo=Ro;function Ls(d,f){var v=d.type.contextTypes;if(!v)return Ro;var _=d.stateNode;if(_&&_.__reactInternalMemoizedUnmaskedChildContext===f)return _.__reactInternalMemoizedMaskedChildContext;var P={},M;for(M in v)P[M]=f[M];return _&&(d=d.stateNode,d.__reactInternalMemoizedUnmaskedChildContext=f,d.__reactInternalMemoizedMaskedChildContext=P),P}function Gr(d){return d=d.childContextTypes,d!=null}function ja(){Cn(Ur),Cn(_r)}function md(d,f,v){if(_r.current!==Ro)throw Error(a(168));gn(_r,f),gn(Ur,v)}function Ml(d,f,v){var _=d.stateNode;if(f=f.childContextTypes,typeof _.getChildContext!="function")return v;_=_.getChildContext();for(var P in _)if(!(P in f))throw Error(a(108,z(d)||"Unknown",P));return o({},v,_)}function qa(d){return d=(d=d.stateNode)&&d.__reactInternalMemoizedMergedChildContext||Ro,Oo=_r.current,gn(_r,d),gn(Ur,Ur.current),!0}function vd(d,f,v){var _=d.stateNode;if(!_)throw Error(a(169));v?(d=Ml(d,f,Oo),_.__reactInternalMemoizedMergedChildContext=d,Cn(Ur),Cn(_r),gn(_r,d)):Cn(Ur),gn(Ur,v)}var ci=Math.clz32?Math.clz32:yd,fh=Math.log,hh=Math.LN2;function yd(d){return d>>>=0,d===0?32:31-(fh(d)/hh|0)|0}var As=64,so=4194304;function Is(d){switch(d&-d){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: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 d&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return d&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return d}}function Rl(d,f){var v=d.pendingLanes;if(v===0)return 0;var _=0,P=d.suspendedLanes,M=d.pingedLanes,$=v&268435455;if($!==0){var te=$&~P;te!==0?_=Is(te):(M&=$,M!==0&&(_=Is(M)))}else $=v&~P,$!==0?_=Is($):M!==0&&(_=Is(M));if(_===0)return 0;if(f!==0&&f!==_&&(f&P)===0&&(P=_&-_,M=f&-f,P>=M||P===16&&(M&4194240)!==0))return f;if((_&4)!==0&&(_|=v&16),f=d.entangledLanes,f!==0)for(d=d.entanglements,f&=_;0v;v++)f.push(d);return f}function ga(d,f,v){d.pendingLanes|=f,f!==536870912&&(d.suspendedLanes=0,d.pingedLanes=0),d=d.eventTimes,f=31-ci(f),d[f]=v}function bd(d,f){var v=d.pendingLanes&~f;d.pendingLanes=f,d.suspendedLanes=0,d.pingedLanes=0,d.expiredLanes&=f,d.mutableReadLanes&=f,d.entangledLanes&=f,f=d.entanglements;var _=d.eventTimes;for(d=d.expirationTimes;0>=$,P-=$,Wi=1<<32-ci(f)+P|v<zt?(zr=bt,bt=null):zr=bt.sibling;var jt=Ue(ce,bt,pe[zt],$e);if(jt===null){bt===null&&(bt=zr);break}d&&bt&&jt.alternate===null&&f(ce,bt),ie=M(jt,ie,zt),Pt===null?Pe=jt:Pt.sibling=jt,Pt=jt,bt=zr}if(zt===pe.length)return v(ce,bt),Rn&&Ms(ce,zt),Pe;if(bt===null){for(;ztzt?(zr=bt,bt=null):zr=bt.sibling;var ns=Ue(ce,bt,jt.value,$e);if(ns===null){bt===null&&(bt=zr);break}d&&bt&&ns.alternate===null&&f(ce,bt),ie=M(ns,ie,zt),Pt===null?Pe=ns:Pt.sibling=ns,Pt=ns,bt=zr}if(jt.done)return v(ce,bt),Rn&&Ms(ce,zt),Pe;if(bt===null){for(;!jt.done;zt++,jt=pe.next())jt=Et(ce,jt.value,$e),jt!==null&&(ie=M(jt,ie,zt),Pt===null?Pe=jt:Pt.sibling=jt,Pt=jt);return Rn&&Ms(ce,zt),Pe}for(bt=_(ce,bt);!jt.done;zt++,jt=pe.next())jt=Nn(bt,ce,zt,jt.value,$e),jt!==null&&(d&&jt.alternate!==null&&bt.delete(jt.key===null?zt:jt.key),ie=M(jt,ie,zt),Pt===null?Pe=jt:Pt.sibling=jt,Pt=jt);return d&&bt.forEach(function(ii){return f(ce,ii)}),Rn&&Ms(ce,zt),Pe}function Go(ce,ie,pe,$e){if(typeof pe=="object"&&pe!==null&&pe.type===p&&pe.key===null&&(pe=pe.props.children),typeof pe=="object"&&pe!==null){switch(pe.$$typeof){case l:e:{for(var Pe=pe.key,Pt=ie;Pt!==null;){if(Pt.key===Pe){if(Pe=pe.type,Pe===p){if(Pt.tag===7){v(ce,Pt.sibling),ie=P(Pt,pe.props.children),ie.return=ce,ce=ie;break e}}else if(Pt.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===L&&h1(Pe)===Pt.type){v(ce,Pt.sibling),ie=P(Pt,pe.props),ie.ref=ya(ce,Pt,pe),ie.return=ce,ce=ie;break e}v(ce,Pt);break}else f(ce,Pt);Pt=Pt.sibling}pe.type===p?(ie=js(pe.props.children,ce.mode,$e,pe.key),ie.return=ce,ce=ie):($e=Kd(pe.type,pe.key,pe.props,null,ce.mode,$e),$e.ref=ya(ce,ie,pe),$e.return=ce,ce=$e)}return $(ce);case c:e:{for(Pt=pe.key;ie!==null;){if(ie.key===Pt)if(ie.tag===4&&ie.stateNode.containerInfo===pe.containerInfo&&ie.stateNode.implementation===pe.implementation){v(ce,ie.sibling),ie=P(ie,pe.children||[]),ie.return=ce,ce=ie;break e}else{v(ce,ie);break}else f(ce,ie);ie=ie.sibling}ie=qs(pe,ce.mode,$e),ie.return=ce,ce=ie}return $(ce);case L:return Pt=pe._init,Go(ce,ie,Pt(pe._payload),$e)}if(Ee(pe))return _n(ce,ie,pe,$e);if(D(pe))return Xn(ce,ie,pe,$e);Mi(ce,pe)}return typeof pe=="string"&&pe!==""||typeof pe=="number"?(pe=""+pe,ie!==null&&ie.tag===6?(v(ce,ie.sibling),ie=P(ie,pe),ie.return=ce,ce=ie):(v(ce,ie),ie=ep(pe,ce.mode,$e),ie.return=ce,ce=ie),$(ce)):v(ce,ie)}return Go}var Wu=Uv(!0),Gv=Uv(!1),Id={},fo=Mo(Id),xa=Mo(Id),Q=Mo(Id);function ge(d){if(d===Id)throw Error(a(174));return d}function fe(d,f){gn(Q,f),gn(xa,d),gn(fo,Id),d=Z(f),Cn(fo),gn(fo,d)}function Ve(){Cn(fo),Cn(xa),Cn(Q)}function xt(d){var f=ge(Q.current),v=ge(fo.current);f=U(v,d.type,f),v!==f&&(gn(xa,d),gn(fo,f))}function Xt(d){xa.current===d&&(Cn(fo),Cn(xa))}var At=Mo(0);function an(d){for(var f=d;f!==null;){if(f.tag===13){var v=f.memoizedState;if(v!==null&&(v=v.dehydrated,v===null||Lu(v)||gd(v)))return f}else if(f.tag===19&&f.memoizedProps.revealOrder!==void 0){if((f.flags&128)!==0)return f}else if(f.child!==null){f.child.return=f,f=f.child;continue}if(f===d)break;for(;f.sibling===null;){if(f.return===null||f.return===d)return null;f=f.return}f.sibling.return=f.return,f=f.sibling}return null}var Md=[];function p1(){for(var d=0;dv?v:4,d(!0);var _=Vu.transition;Vu.transition={};try{d(!1),f()}finally{Bt=v,Vu.transition=_}}function Yu(){return hi().memoizedState}function w1(d,f,v){var _=Lr(d);if(v={lane:_,action:v,hasEagerState:!1,eagerState:null,next:null},Qu(d))Ju(f,v);else if(v=Hu(d,f,v,_),v!==null){var P=ri();go(v,d,_,P),Fd(v,f,_)}}function Xu(d,f,v){var _=Lr(d),P={lane:_,action:v,hasEagerState:!1,eagerState:null,next:null};if(Qu(d))Ju(f,P);else{var M=d.alternate;if(d.lanes===0&&(M===null||M.lanes===0)&&(M=f.lastRenderedReducer,M!==null))try{var $=f.lastRenderedState,te=M($,v);if(P.hasEagerState=!0,P.eagerState=te,H(te,$)){var le=f.interleaved;le===null?(P.next=P,Ld(f)):(P.next=le.next,le.next=P),f.interleaved=P;return}}catch{}finally{}v=Hu(d,f,P,_),v!==null&&(P=ri(),go(v,d,_,P),Fd(v,f,_))}}function Qu(d){var f=d.alternate;return d===mn||f!==null&&f===mn}function Ju(d,f){Rd=Jt=!0;var v=d.pending;v===null?f.next=f:(f.next=v.next,v.next=f),d.pending=f}function Fd(d,f,v){if((v&4194240)!==0){var _=f.lanes;_&=d.pendingLanes,v|=_,f.lanes=v,Ol(d,v)}}var Ya={readContext:Vi,useCallback:Jr,useContext:Jr,useEffect:Jr,useImperativeHandle:Jr,useInsertionEffect:Jr,useLayoutEffect:Jr,useMemo:Jr,useReducer:Jr,useRef:Jr,useState:Jr,useDebugValue:Jr,useDeferredValue:Jr,useTransition:Jr,useMutableSource:Jr,useSyncExternalStore:Jr,useId:Jr,unstable_isNewReconciler:!1},Lx={readContext:Vi,useCallback:function(d,f){return qr().memoizedState=[d,f===void 0?null:f],d},useContext:Vi,useEffect:Kv,useImperativeHandle:function(d,f,v){return v=v!=null?v.concat([d]):null,Fl(4194308,4,gr.bind(null,f,d),v)},useLayoutEffect:function(d,f){return Fl(4194308,4,d,f)},useInsertionEffect:function(d,f){return Fl(4,2,d,f)},useMemo:function(d,f){var v=qr();return f=f===void 0?null:f,d=d(),v.memoizedState=[d,f],d},useReducer:function(d,f,v){var _=qr();return f=v!==void 0?v(f):f,_.memoizedState=_.baseState=f,d={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:f},_.queue=d,d=d.dispatch=w1.bind(null,mn,d),[_.memoizedState,d]},useRef:function(d){var f=qr();return d={current:d},f.memoizedState=d},useState:qv,useDebugValue:x1,useDeferredValue:function(d){return qr().memoizedState=d},useTransition:function(){var d=qv(!1),f=d[0];return d=S1.bind(null,d[1]),qr().memoizedState=d,[f,d]},useMutableSource:function(){},useSyncExternalStore:function(d,f,v){var _=mn,P=qr();if(Rn){if(v===void 0)throw Error(a(407));v=v()}else{if(v=f(),Dr===null)throw Error(a(349));(zl&30)!==0||y1(_,f,v)}P.memoizedState=v;var M={value:v,getSnapshot:f};return P.queue=M,Kv(Ns.bind(null,_,M,d),[d]),_.flags|=2048,Dd(9,Ku.bind(null,_,M,v,f),void 0,null),v},useId:function(){var d=qr(),f=Dr.identifierPrefix;if(Rn){var v=ma,_=Wi;v=(_&~(1<<32-ci(_)-1)).toString(32)+v,f=":"+f+"R"+v,v=Uu++,0Uh&&(f.flags|=128,_=!0,nc(P,!1),f.lanes=4194304)}else{if(!_)if(d=an(M),d!==null){if(f.flags|=128,_=!0,d=d.updateQueue,d!==null&&(f.updateQueue=d,f.flags|=4),nc(P,!0),P.tail===null&&P.tailMode==="hidden"&&!M.alternate&&!Rn)return ei(f),null}else 2*$n()-P.renderingStartTime>Uh&&v!==1073741824&&(f.flags|=128,_=!0,nc(P,!1),f.lanes=4194304);P.isBackwards?(M.sibling=f.child,f.child=M):(d=P.last,d!==null?d.sibling=M:f.child=M,P.last=M)}return P.tail!==null?(f=P.tail,P.rendering=f,P.tail=f.sibling,P.renderingStartTime=$n(),f.sibling=null,d=At.current,gn(At,_?d&1|2:d&1),f):(ei(f),null);case 22:case 23:return dc(),v=f.memoizedState!==null,d!==null&&d.memoizedState!==null!==v&&(f.flags|=8192),v&&(f.mode&1)!==0?(Gi&1073741824)!==0&&(ei(f),at&&f.subtreeFlags&6&&(f.flags|=8192)):ei(f),null;case 24:return null;case 25:return null}throw Error(a(156,f.tag))}function A1(d,f){switch(u1(f),f.tag){case 1:return Gr(f.type)&&ja(),d=f.flags,d&65536?(f.flags=d&-65537|128,f):null;case 3:return Ve(),Cn(Ur),Cn(_r),p1(),d=f.flags,(d&65536)!==0&&(d&128)===0?(f.flags=d&-65537|128,f):null;case 5:return Xt(f),null;case 13:if(Cn(At),d=f.memoizedState,d!==null&&d.dehydrated!==null){if(f.alternate===null)throw Error(a(340));Fu()}return d=f.flags,d&65536?(f.flags=d&-65537|128,f):null;case 19:return Cn(At),null;case 4:return Ve(),null;case 10:return Pd(f.type._context),null;case 22:case 23:return dc(),null;case 24:return null;default:return null}}var zs=!1,Er=!1,Nx=typeof WeakSet=="function"?WeakSet:Set,Ke=null;function rc(d,f){var v=d.ref;if(v!==null)if(typeof v=="function")try{v(null)}catch(_){Wn(d,f,_)}else v.current=null}function Ho(d,f,v){try{v()}catch(_){Wn(d,f,_)}}var Ih=!1;function $l(d,f){for(ee(d.containerInfo),Ke=f;Ke!==null;)if(d=Ke,f=d.child,(d.subtreeFlags&1028)!==0&&f!==null)f.return=d,Ke=f;else for(;Ke!==null;){d=Ke;try{var v=d.alternate;if((d.flags&1024)!==0)switch(d.tag){case 0:case 11:case 15:break;case 1:if(v!==null){var _=v.memoizedProps,P=v.memoizedState,M=d.stateNode,$=M.getSnapshotBeforeUpdate(d.elementType===d.type?_:Do(d.type,_),P);M.__reactInternalSnapshotBeforeUpdate=$}break;case 3:at&&_s(d.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(te){Wn(d,d.return,te)}if(f=d.sibling,f!==null){f.return=d.return,Ke=f;break}Ke=d.return}return v=Ih,Ih=!1,v}function ti(d,f,v){var _=f.updateQueue;if(_=_!==null?_.lastEffect:null,_!==null){var P=_=_.next;do{if((P.tag&d)===d){var M=P.destroy;P.destroy=void 0,M!==void 0&&Ho(f,v,M)}P=P.next}while(P!==_)}}function Mh(d,f){if(f=f.updateQueue,f=f!==null?f.lastEffect:null,f!==null){var v=f=f.next;do{if((v.tag&d)===d){var _=v.create;v.destroy=_()}v=v.next}while(v!==f)}}function Rh(d){var f=d.ref;if(f!==null){var v=d.stateNode;switch(d.tag){case 5:d=xe(v);break;default:d=v}typeof f=="function"?f(d):f.current=d}}function I1(d){var f=d.alternate;f!==null&&(d.alternate=null,I1(f)),d.child=null,d.deletions=null,d.sibling=null,d.tag===5&&(f=d.stateNode,f!==null&&it(f)),d.stateNode=null,d.return=null,d.dependencies=null,d.memoizedProps=null,d.memoizedState=null,d.pendingProps=null,d.stateNode=null,d.updateQueue=null}function ic(d){return d.tag===5||d.tag===3||d.tag===4}function Qa(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||ic(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function Oh(d,f,v){var _=d.tag;if(_===5||_===6)d=d.stateNode,f?Be(v,d,f):Tt(v,d);else if(_!==4&&(d=d.child,d!==null))for(Oh(d,f,v),d=d.sibling;d!==null;)Oh(d,f,v),d=d.sibling}function M1(d,f,v){var _=d.tag;if(_===5||_===6)d=d.stateNode,f?Mn(v,d,f):_e(v,d);else if(_!==4&&(d=d.child,d!==null))for(M1(d,f,v),d=d.sibling;d!==null;)M1(d,f,v),d=d.sibling}var vr=null,Wo=!1;function Vo(d,f,v){for(v=v.child;v!==null;)Pr(d,f,v),v=v.sibling}function Pr(d,f,v){if($t&&typeof $t.onCommitFiberUnmount=="function")try{$t.onCommitFiberUnmount(on,v)}catch{}switch(v.tag){case 5:Er||rc(v,f);case 6:if(at){var _=vr,P=Wo;vr=null,Vo(d,f,v),vr=_,Wo=P,vr!==null&&(Wo?Qe(vr,v.stateNode):ct(vr,v.stateNode))}else Vo(d,f,v);break;case 18:at&&vr!==null&&(Wo?i1(vr,v.stateNode):r1(vr,v.stateNode));break;case 4:at?(_=vr,P=Wo,vr=v.stateNode.containerInfo,Wo=!0,Vo(d,f,v),vr=_,Wo=P):(Rt&&(_=v.stateNode.containerInfo,P=pa(_),Tu(_,P)),Vo(d,f,v));break;case 0:case 11:case 14:case 15:if(!Er&&(_=v.updateQueue,_!==null&&(_=_.lastEffect,_!==null))){P=_=_.next;do{var M=P,$=M.destroy;M=M.tag,$!==void 0&&((M&2)!==0||(M&4)!==0)&&Ho(v,f,$),P=P.next}while(P!==_)}Vo(d,f,v);break;case 1:if(!Er&&(rc(v,f),_=v.stateNode,typeof _.componentWillUnmount=="function"))try{_.props=v.memoizedProps,_.state=v.memoizedState,_.componentWillUnmount()}catch(te){Wn(v,f,te)}Vo(d,f,v);break;case 21:Vo(d,f,v);break;case 22:v.mode&1?(Er=(_=Er)||v.memoizedState!==null,Vo(d,f,v),Er=_):Vo(d,f,v);break;default:Vo(d,f,v)}}function Nh(d){var f=d.updateQueue;if(f!==null){d.updateQueue=null;var v=d.stateNode;v===null&&(v=d.stateNode=new Nx),f.forEach(function(_){var P=f2.bind(null,d,_);v.has(_)||(v.add(_),_.then(P,P))})}}function ho(d,f){var v=f.deletions;if(v!==null)for(var _=0;_";case Bh:return":has("+(N1(d)||"")+")";case $h:return'[role="'+d.value+'"]';case Hh:return'"'+d.value+'"';case oc:return'[data-testname="'+d.value+'"]';default:throw Error(a(365))}}function ac(d,f){var v=[];d=[d,0];for(var _=0;_P&&(P=$),_&=~M}if(_=P,_=$n()-_,_=(120>_?120:480>_?480:1080>_?1080:1920>_?1920:3e3>_?3e3:4320>_?4320:1960*Dx(_/1960))-_,10<_){d.timeoutHandle=ut(Gs.bind(null,d,gi,es),_);break}Gs(d,gi,es);break;case 5:Gs(d,gi,es);break;default:throw Error(a(329))}}}return Zr(d,$n()),d.callbackNode===v?qh.bind(null,d):null}function Kh(d,f){var v=uc;return d.current.memoizedState.isDehydrated&&(Vs(d,f).flags|=256),d=fc(d,f),d!==2&&(f=gi,gi=v,f!==null&&Zh(f)),d}function Zh(d){gi===null?gi=d:gi.push.apply(gi,d)}function ji(d){for(var f=d;;){if(f.flags&16384){var v=f.updateQueue;if(v!==null&&(v=v.stores,v!==null))for(var _=0;_d?16:d,yt===null)var _=!1;else{if(d=yt,yt=null,Gh=0,(Dt&6)!==0)throw Error(a(331));var P=Dt;for(Dt|=4,Ke=d.current;Ke!==null;){var M=Ke,$=M.child;if((Ke.flags&16)!==0){var te=M.deletions;if(te!==null){for(var le=0;le$n()-F1?Vs(d,0):z1|=v),Zr(d,f)}function V1(d,f){f===0&&((d.mode&1)===0?f=1:(f=so,so<<=1,(so&130023424)===0&&(so=4194304)));var v=ri();d=zo(d,f),d!==null&&(ga(d,f,v),Zr(d,v))}function Fx(d){var f=d.memoizedState,v=0;f!==null&&(v=f.retryLane),V1(d,v)}function f2(d,f){var v=0;switch(d.tag){case 13:var _=d.stateNode,P=d.memoizedState;P!==null&&(v=P.retryLane);break;case 19:_=d.stateNode;break;default:throw Error(a(314))}_!==null&&_.delete(f),V1(d,v)}var U1;U1=function(d,f,v){if(d!==null)if(d.memoizedProps!==f.pendingProps||Ur.current)Ri=!0;else{if((d.lanes&v)===0&&(f.flags&128)===0)return Ri=!1,Rx(d,f,v);Ri=(d.flags&131072)!==0}else Ri=!1,Rn&&(f.flags&1048576)!==0&&l1(f,pr,f.index);switch(f.lanes=0,f.tag){case 2:var _=f.type;ba(d,f),d=f.pendingProps;var P=Ls(f,_r.current);$u(f,v),P=m1(null,f,_,d,P,v);var M=Gu();return f.flags|=1,typeof P=="object"&&P!==null&&typeof P.render=="function"&&P.$$typeof===void 0?(f.tag=1,f.memoizedState=null,f.updateQueue=null,Gr(_)?(M=!0,qa(f)):M=!1,f.memoizedState=P.state!==null&&P.state!==void 0?P.state:null,d1(f),P.updater=Fo,f.stateNode=P,P._reactInternals=f,f1(f,_,d,v),f=Bo(null,f,_,!0,M,v)):(f.tag=0,Rn&&M&&di(f),pi(null,f,P,v),f=f.child),f;case 16:_=f.elementType;e:{switch(ba(d,f),d=f.pendingProps,P=_._init,_=P(_._payload),f.type=_,P=f.tag=Qh(_),d=Do(_,d),P){case 0:f=k1(null,f,_,d,v);break e;case 1:f=r2(null,f,_,d,v);break e;case 11:f=Jv(null,f,_,d,v);break e;case 14:f=Ds(null,f,_,Do(_.type,d),v);break e}throw Error(a(306,_,""))}return f;case 0:return _=f.type,P=f.pendingProps,P=f.elementType===_?P:Do(_,P),k1(d,f,_,P,v);case 1:return _=f.type,P=f.pendingProps,P=f.elementType===_?P:Do(_,P),r2(d,f,_,P,v);case 3:e:{if(i2(f),d===null)throw Error(a(387));_=f.pendingProps,M=f.memoizedState,P=M.element,$v(d,f),wh(f,_,null,v);var $=f.memoizedState;if(_=$.element,kt&&M.isDehydrated)if(M={element:_,isDehydrated:!1,cache:$.cache,pendingSuspenseBoundaries:$.pendingSuspenseBoundaries,transitions:$.transitions},f.updateQueue.baseState=M,f.memoizedState=M,f.flags&256){P=ec(Error(a(423)),f),f=o2(d,f,_,v,P);break e}else if(_!==P){P=ec(Error(a(424)),f),f=o2(d,f,_,v,P);break e}else for(kt&&(uo=Y0(f.stateNode.containerInfo),Hn=f,Rn=!0,Ii=null,co=!1),v=Gv(f,null,_,v),f.child=v;v;)v.flags=v.flags&-3|4096,v=v.sibling;else{if(Fu(),_===P){f=Xa(d,f,v);break e}pi(d,f,_,v)}f=f.child}return f;case 5:return xt(f),d===null&&Cd(f),_=f.type,P=f.pendingProps,M=d!==null?d.memoizedProps:null,$=P.children,He(_,P)?$=null:M!==null&&He(_,M)&&(f.flags|=32),n2(d,f),pi(d,f,$,v),f.child;case 6:return d===null&&Cd(f),null;case 13:return a2(d,f,v);case 4:return fe(f,f.stateNode.containerInfo),_=f.pendingProps,d===null?f.child=Wu(f,null,_,v):pi(d,f,_,v),f.child;case 11:return _=f.type,P=f.pendingProps,P=f.elementType===_?P:Do(_,P),Jv(d,f,_,P,v);case 7:return pi(d,f,f.pendingProps,v),f.child;case 8:return pi(d,f,f.pendingProps.children,v),f.child;case 12:return pi(d,f,f.pendingProps.children,v),f.child;case 10:e:{if(_=f.type._context,P=f.pendingProps,M=f.memoizedProps,$=P.value,Bv(f,_,$),M!==null)if(H(M.value,$)){if(M.children===P.children&&!Ur.current){f=Xa(d,f,v);break e}}else for(M=f.child,M!==null&&(M.return=f);M!==null;){var te=M.dependencies;if(te!==null){$=M.child;for(var le=te.firstContext;le!==null;){if(le.context===_){if(M.tag===1){le=Za(-1,v&-v),le.tag=2;var Ne=M.updateQueue;if(Ne!==null){Ne=Ne.shared;var Ye=Ne.pending;Ye===null?le.next=le:(le.next=Ye.next,Ye.next=le),Ne.pending=le}}M.lanes|=v,le=M.alternate,le!==null&&(le.lanes|=v),Td(M.return,v,f),te.lanes|=v;break}le=le.next}}else if(M.tag===10)$=M.type===f.type?null:M.child;else if(M.tag===18){if($=M.return,$===null)throw Error(a(341));$.lanes|=v,te=$.alternate,te!==null&&(te.lanes|=v),Td($,v,f),$=M.sibling}else $=M.child;if($!==null)$.return=M;else for($=M;$!==null;){if($===f){$=null;break}if(M=$.sibling,M!==null){M.return=$.return,$=M;break}$=$.return}M=$}pi(d,f,P.children,v),f=f.child}return f;case 9:return P=f.type,_=f.pendingProps.children,$u(f,v),P=Vi(P),_=_(P),f.flags|=1,pi(d,f,_,v),f.child;case 14:return _=f.type,P=Do(_,f.pendingProps),P=Do(_.type,P),Ds(d,f,_,P,v);case 15:return e2(d,f,f.type,f.pendingProps,v);case 17:return _=f.type,P=f.pendingProps,P=f.elementType===_?P:Do(_,P),ba(d,f),f.tag=1,Gr(_)?(d=!0,qa(f)):d=!1,$u(f,v),Wv(f,_,P),f1(f,_,P,v),Bo(null,f,_,!0,d,v);case 19:return l2(d,f,v);case 22:return t2(d,f,v)}throw Error(a(156,f.tag))};function vi(d,f){return Nu(d,f)}function Sa(d,f,v,_){this.tag=d,this.key=v,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=f,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=_,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function mo(d,f,v,_){return new Sa(d,f,v,_)}function G1(d){return d=d.prototype,!(!d||!d.isReactComponent)}function Qh(d){if(typeof d=="function")return G1(d)?1:0;if(d!=null){if(d=d.$$typeof,d===S)return 11;if(d===k)return 14}return 2}function qi(d,f){var v=d.alternate;return v===null?(v=mo(d.tag,f,d.key,d.mode),v.elementType=d.elementType,v.type=d.type,v.stateNode=d.stateNode,v.alternate=d,d.alternate=v):(v.pendingProps=f,v.type=d.type,v.flags=0,v.subtreeFlags=0,v.deletions=null),v.flags=d.flags&14680064,v.childLanes=d.childLanes,v.lanes=d.lanes,v.child=d.child,v.memoizedProps=d.memoizedProps,v.memoizedState=d.memoizedState,v.updateQueue=d.updateQueue,f=d.dependencies,v.dependencies=f===null?null:{lanes:f.lanes,firstContext:f.firstContext},v.sibling=d.sibling,v.index=d.index,v.ref=d.ref,v}function Kd(d,f,v,_,P,M){var $=2;if(_=d,typeof d=="function")G1(d)&&($=1);else if(typeof d=="string")$=5;else e:switch(d){case p:return js(v.children,P,M,f);case g:$=8,P|=8;break;case m:return d=mo(12,v,f,P|2),d.elementType=m,d.lanes=M,d;case T:return d=mo(13,v,f,P),d.elementType=T,d.lanes=M,d;case E:return d=mo(19,v,f,P),d.elementType=E,d.lanes=M,d;case I:return Jh(v,P,M,f);default:if(typeof d=="object"&&d!==null)switch(d.$$typeof){case y:$=10;break e;case b:$=9;break e;case S:$=11;break e;case k:$=14;break e;case L:$=16,_=null;break e}throw Error(a(130,d==null?d:typeof d,""))}return f=mo($,v,f,P),f.elementType=d,f.type=_,f.lanes=M,f}function js(d,f,v,_){return d=mo(7,d,_,f),d.lanes=v,d}function Jh(d,f,v,_){return d=mo(22,d,_,f),d.elementType=I,d.lanes=v,d.stateNode={isHidden:!1},d}function ep(d,f,v){return d=mo(6,d,null,f),d.lanes=v,d}function qs(d,f,v){return f=mo(4,d.children!==null?d.children:[],d.key,f),f.lanes=v,f.stateNode={containerInfo:d.containerInfo,pendingChildren:null,implementation:d.implementation},f}function Zd(d,f,v,_,P){this.tag=f,this.containerInfo=d,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=ot,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ou(0),this.expirationTimes=Ou(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ou(0),this.identifierPrefix=_,this.onRecoverableError=P,kt&&(this.mutableSourceEagerHydrationData=null)}function h2(d,f,v,_,P,M,$,te,le){return d=new Zd(d,f,v,te,le),f===1?(f=1,M===!0&&(f|=8)):f=0,M=mo(3,null,null,f),d.current=M,M.stateNode=d,M.memoizedState={element:_,isDehydrated:v,cache:null,transitions:null,pendingSuspenseBoundaries:null},d1(M),d}function j1(d){if(!d)return Ro;d=d._reactInternals;e:{if(W(d)!==d||d.tag!==1)throw Error(a(170));var f=d;do{switch(f.tag){case 3:f=f.stateNode.context;break e;case 1:if(Gr(f.type)){f=f.stateNode.__reactInternalMemoizedMergedChildContext;break e}}f=f.return}while(f!==null);throw Error(a(171))}if(d.tag===1){var v=d.type;if(Gr(v))return Ml(d,v,f)}return f}function q1(d){var f=d._reactInternals;if(f===void 0)throw typeof d.render=="function"?Error(a(188)):(d=Object.keys(d).join(","),Error(a(268,d)));return d=he(f),d===null?null:d.stateNode}function Yd(d,f){if(d=d.memoizedState,d!==null&&d.dehydrated!==null){var v=d.retryLane;d.retryLane=v!==0&&v=Ne&&M>=Et&&P<=Ye&&$<=Ue){d.splice(f,1);break}else if(_!==Ne||v.width!==le.width||Ue$){if(!(M!==Et||v.height!==le.height||Ye<_||Ne>P)){Ne>_&&(le.width+=Ne-_,le.x=_),YeM&&(le.height+=Et-M,le.y=M),Ue<$&&(le.height=$-Et),d.splice(f,1);break}}}return d},n.findHostInstance=q1,n.findHostInstanceWithNoPortals=function(d){return d=q(d),d=d!==null?ve(d):null,d===null?null:d.stateNode},n.findHostInstanceWithWarning=function(d){return q1(d)},n.flushControlled=function(d){var f=Dt;Dt|=1;var v=ir.transition,_=Bt;try{ir.transition=null,Bt=1,d()}finally{Bt=_,ir.transition=v,Dt=f,Dt===0&&(Hs(),dt())}},n.flushPassiveEffects=Vl,n.flushSync=B1,n.focusWithin=function(d,f){if(!wt)throw Error(a(363));for(d=Wh(d),f=ac(d,f),f=Array.from(f),d=0;dv&&(v=$)),$ ")+` - -No matching component was found for: - `)+d.join(" > ")}return null},n.getPublicRootInstance=function(d){if(d=d.current,!d.child)return null;switch(d.child.tag){case 5:return xe(d.child.stateNode);default:return d.child.stateNode}},n.injectIntoDevTools=function(d){if(d={bundleType:d.bundleType,version:d.version,rendererPackageName:d.rendererPackageName,rendererConfig:d.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:s.ReactCurrentDispatcher,findHostInstanceByFiber:tp,findFiberByHostInstance:d.findFiberByHostInstance||K1,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")d=!1;else{var f=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(f.isDisabled||!f.supportsFiber)d=!0;else{try{on=f.inject(d),$t=f}catch{}d=!!f.checkDCE}}return d},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(d,f,v,_){if(!wt)throw Error(a(363));d=D1(d,f);var P=Gt(d,v,_).disconnect;return{disconnect:function(){P()}}},n.registerMutableSourceForHydration=function(d,f){var v=f._getVersion;v=v(f._source),d.mutableSourceEagerHydrationData==null?d.mutableSourceEagerHydrationData=[f,v]:d.mutableSourceEagerHydrationData.push(f,v)},n.runWithPriority=function(d,f){var v=Bt;try{return Bt=d,f()}finally{Bt=v}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(d,f,v,_){var P=f.current,M=ri(),$=Lr(P);return v=j1(v),f.context===null?f.context=v:f.pendingContext=v,f=Za(M,$),f.payload={element:d},_=_===void 0?null:_,_!==null&&(f.callback=_),d=Os(P,f,$),d!==null&&(go(d,P,$,M),Sh(d,P,$)),$},n};(function(e){e.exports=ESe})(aH);const PSe=G8(aH.exports);var d_={exports:{}},sh={};/** - * @license React - * react-reconciler-constants.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */sh.ConcurrentRoot=1;sh.ContinuousEventPriority=4;sh.DefaultEventPriority=16;sh.DiscreteEventPriority=1;sh.IdleEventPriority=536870912;sh.LegacyRoot=0;(function(e){e.exports=sh})(d_);const UA={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let GA=!1,jA=!1;const f_=".react-konva-event",TSe=`ReactKonva: You have a Konva node with draggable = true and position defined but no onDragMove or onDragEnd events are handled. -Position of a node will be changed during drag&drop, so you should update state of the react app as well. -Consider to add onDragMove or onDragEnd events. -For more info see: https://github.com/konvajs/react-konva/issues/256 -`,LSe=`ReactKonva: You are using "zIndex" attribute for a Konva node. -react-konva may get confused with ordering. Just define correct order of elements in your render function of a component. -For more info see: https://github.com/konvajs/react-konva/issues/194 -`,ASe={};function Cx(e,t,n=ASe){if(!GA&&"zIndex"in t&&(console.warn(LSe),GA=!0),!jA&&t.draggable){var r=t.x!==void 0||t.y!==void 0,i=t.onDragEnd||t.onDragMove;r&&!i&&(console.warn(TSe),jA=!0)}for(var o in n)if(!UA[o]){var a=o.slice(0,2)==="on",s=n[o]!==t[o];if(a&&s){var l=o.substr(2).toLowerCase();l.substr(0,7)==="content"&&(l="content"+l.substr(7,1).toUpperCase()+l.substr(8)),e.off(l,n[o])}var c=!t.hasOwnProperty(o);c&&e.setAttr(o,void 0)}var p=t._useStrictMode,g={},m=!1;const y={};for(var o in t)if(!UA[o]){var a=o.slice(0,2)==="on",b=n[o]!==t[o];if(a&&b){var l=o.substr(2).toLowerCase();l.substr(0,7)==="content"&&(l="content"+l.substr(7,1).toUpperCase()+l.substr(8)),t[o]&&(y[l]=t[o])}!a&&(t[o]!==n[o]||p&&t[o]!==e.getAttr(o))&&(m=!0,g[o]=t[o])}m&&(e.setAttrs(g),hd(e));for(var l in y)e.on(l+f_,y[l])}function hd(e){if(!et.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const sH={},ISe={};Gf.Node.prototype._applyProps=Cx;function MSe(e,t){if(typeof t=="string"){console.error(`Do not use plain text as child of Konva.Node. You are using text: ${t}`);return}e.add(t),hd(e)}function RSe(e,t,n){let r=Gf[e];r||(console.error(`Konva has no node with the type ${e}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: "import "konva/lib/shapes/${e}" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`),r=Gf.Group);const i={},o={};for(var a in t){var s=a.slice(0,2)==="on";s?o[a]=t[a]:i[a]=t[a]}const l=new r(i);return Cx(l,o),l}function OSe(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function NSe(e,t,n){return!1}function DSe(e){return e}function zSe(){return null}function FSe(){return null}function BSe(e,t,n,r){return ISe}function $Se(){}function HSe(e){}function WSe(e,t){return!1}function VSe(){return sH}function USe(){return sH}const GSe=setTimeout,jSe=clearTimeout,qSe=-1;function KSe(e,t){return!1}const ZSe=!1,YSe=!0,XSe=!0;function QSe(e,t){t.parent===e?t.moveToTop():e.add(t),hd(e)}function JSe(e,t){t.parent===e?t.moveToTop():e.add(t),hd(e)}function lH(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),hd(e)}function ewe(e,t,n){lH(e,t,n)}function twe(e,t){t.destroy(),t.off(f_),hd(e)}function nwe(e,t){t.destroy(),t.off(f_),hd(e)}function rwe(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function iwe(e,t,n){}function owe(e,t,n,r,i){Cx(e,i,r)}function awe(e){e.hide(),hd(e)}function swe(e){}function lwe(e,t){(t.visible==null||t.visible)&&e.show()}function uwe(e,t){}function cwe(e){}function dwe(){}const fwe=()=>d_.exports.DefaultEventPriority,hwe=Object.freeze(Object.defineProperty({__proto__:null,appendInitialChild:MSe,createInstance:RSe,createTextInstance:OSe,finalizeInitialChildren:NSe,getPublicInstance:DSe,prepareForCommit:zSe,preparePortalMount:FSe,prepareUpdate:BSe,resetAfterCommit:$Se,resetTextContent:HSe,shouldDeprioritizeSubtree:WSe,getRootHostContext:VSe,getChildHostContext:USe,scheduleTimeout:GSe,cancelTimeout:jSe,noTimeout:qSe,shouldSetTextContent:KSe,isPrimaryRenderer:ZSe,warnsIfNotActing:YSe,supportsMutation:XSe,appendChild:QSe,appendChildToContainer:JSe,insertBefore:lH,insertInContainerBefore:ewe,removeChild:twe,removeChildFromContainer:nwe,commitTextUpdate:rwe,commitMount:iwe,commitUpdate:owe,hideInstance:awe,hideTextInstance:swe,unhideInstance:lwe,unhideTextInstance:uwe,clearContainer:cwe,detachDeletedInstance:dwe,getCurrentEventPriority:fwe,now:Dp.exports.unstable_now,idlePriority:Dp.exports.unstable_IdlePriority,run:Dp.exports.unstable_runWithPriority},Symbol.toStringTag,{value:"Module"}));var pwe=Object.defineProperty,gwe=Object.defineProperties,mwe=Object.getOwnPropertyDescriptors,qA=Object.getOwnPropertySymbols,vwe=Object.prototype.hasOwnProperty,ywe=Object.prototype.propertyIsEnumerable,KA=(e,t,n)=>t in e?pwe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ZA=(e,t)=>{for(var n in t||(t={}))vwe.call(t,n)&&KA(e,n,t[n]);if(qA)for(var n of qA(t))ywe.call(t,n)&&KA(e,n,t[n]);return e},xwe=(e,t)=>gwe(e,mwe(t));function h_(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const i=h_(r,t,n);if(i)return i;r=t?null:r.sibling}}function uH(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const p_=uH(C.exports.createContext(null));class cH extends C.exports.Component{render(){return w(p_.Provider,{value:this._reactInternals,children:this.props.children})}}const{ReactCurrentOwner:bwe,ReactCurrentDispatcher:Swe}=C.exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function wwe(){const e=C.exports.useContext(p_);if(!e)throw new Error("its-fine: useFiber must be called within a !");const t=C.exports.useId();return C.exports.useMemo(()=>{var r;return(r=bwe.current)!=null?r:h_(e,!1,i=>{let o=i.memoizedState;for(;o;){if(o.memoizedState===t)return!0;o=o.next}})},[e,t])}const vg=[],YA=new WeakMap;function Cwe(){var e;const t=wwe();vg.splice(0,vg.length),h_(t,!0,n=>{var r;const i=(r=n.type)==null?void 0:r._context;i&&i!==p_&&vg.push(uH(i))});for(const n of vg){const r=(e=Swe.current)==null?void 0:e.readContext(n);YA.set(n,r)}return C.exports.useMemo(()=>vg.reduce((n,r)=>i=>C.exports.createElement(n,null,C.exports.createElement(r.Provider,xwe(ZA({},i),{value:YA.get(r)}))),n=>w(cH,{...ZA({},n)})),[])}function _we(e){const t=re.useRef();return re.useLayoutEffect(()=>{t.current=e}),t.current}const kwe=e=>{const t=re.useRef(),n=re.useRef(),r=re.useRef(),i=_we(e),o=Cwe(),a=s=>{const{forwardedRef:l}=e;!l||(typeof l=="function"?l(s):l.current=s)};return re.useLayoutEffect(()=>(n.current=new Gf.Stage({width:e.width,height:e.height,container:t.current}),a(n.current),r.current=Dg.createContainer(n.current,d_.exports.LegacyRoot,!1,null),Dg.updateContainer(w(o,{children:e.children}),r.current),()=>{!Gf.isBrowser||(a(null),Dg.updateContainer(null,r.current,null),n.current.destroy())}),[]),re.useLayoutEffect(()=>{a(n.current),Cx(n.current,e,i),Dg.updateContainer(w(o,{children:e.children}),r.current,null)}),w("div",{ref:t,accessKey:e.accessKey,className:e.className,role:e.role,style:e.style,tabIndex:e.tabIndex,title:e.title})},US="Layer",Ewe="Group",k8="Rect",E8="Circle",Pwe="Line",GS="Image",Twe="Transformer",Dg=PSe(hwe);Dg.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:re.version,rendererPackageName:"react-konva"});const Lwe=re.forwardRef((e,t)=>w(cH,{children:w(kwe,{...e,forwardedRef:t})})),Awe=e=>{const{r:t,g:n,b:r,a:i}=e;return`rgba(${t}, ${n}, ${r}, ${i})`},dH=e=>{const{r:t,g:n,b:r}=e;return`rgba(${t}, ${n}, ${r})`},Iwe=St(e=>e.inpainting,e=>{const{lines:t,maskColor:n}=e;return{lines:t,maskColorString:dH(n)}});St([e=>e.inpainting,e=>e.options,Cr],(e,t,n)=>{const{tool:r,brushSize:i,maskColor:o,shouldInvertMask:a,shouldShowMask:s,shouldShowCheckboardTransparency:l,lines:c,pastLines:p,futureLines:g,shouldShowBoundingBoxFill:m}=e,{showDualDisplay:y}=t;return{tool:r,brushSize:i,maskColor:o,shouldInvertMask:a,shouldShowMask:s,shouldShowCheckboardTransparency:l,canUndo:p.length>0,canRedo:g.length>0,isMaskEmpty:c.length===0,activeTabName:n,showDualDisplay:y,shouldShowBoundingBoxFill:m}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});const Mwe=St(e=>e.inpainting,e=>{const{tool:t,brushSize:n,maskColor:r,shouldInvertMask:i,shouldShowMask:o,shouldShowCheckboardTransparency:a,imageToInpaint:s,stageScale:l,shouldShowBoundingBox:c,shouldShowBoundingBoxFill:p,isDrawing:g,shouldLockBoundingBox:m,boundingBoxDimensions:y,isTransformingBoundingBox:b,isMouseOverBoundingBox:S,isMovingBoundingBox:T}=e;let E="";return b?E=void 0:T||S?E="move":o?E="none":E="default",{tool:t,brushSize:n,shouldInvertMask:i,shouldShowMask:o,shouldShowCheckboardTransparency:a,maskColor:r,imageToInpaint:s,stageScale:l,shouldShowBoundingBox:c,shouldShowBoundingBoxFill:p,isDrawing:g,shouldLockBoundingBox:m,boundingBoxDimensions:y,isTransformingBoundingBox:b,isModifyingBoundingBox:b||T,stageCursor:E,isMouseOverBoundingBox:S}},{memoizeOptions:{resultEqualityCheck:(e,t)=>{const{imageToInpaint:n,...r}=e,{imageToInpaint:i,...o}=t;return ht.isEqual(r,o)&&n==i}}}),Rwe=()=>{const{lines:e,maskColorString:t}=Me(Iwe);return w(Fn,{children:e.map((n,r)=>w(Pwe,{points:n.points,stroke:t,strokeWidth:n.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,listening:!1,globalCompositeOperation:n.tool==="brush"?"source-over":"destination-out"},r))})},Owe=St(e=>e.inpainting,e=>{const{cursorPosition:t,canvasDimensions:{width:n,height:r},brushSize:i,maskColor:o,tool:a,shouldShowBrush:s,isMovingBoundingBox:l,isTransformingBoundingBox:c}=e;return{cursorPosition:t,width:n,height:r,brushSize:i,maskColorString:dH(o),tool:a,shouldShowBrush:s,shouldDrawBrushPreview:!(l||c||!t)&&s}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),Nwe=()=>{const{cursorPosition:e,width:t,height:n,brushSize:r,maskColorString:i,tool:o,shouldDrawBrushPreview:a}=Me(Owe);return a?w(E8,{x:e?e.x:t/2,y:e?e.y:n/2,radius:r/2,fill:i,listening:!1,globalCompositeOperation:o==="eraser"?"destination-out":"source-over"}):null},Dwe=St(e=>e.inpainting,e=>{const{cursorPosition:t,canvasDimensions:{width:n,height:r},brushSize:i,tool:o,shouldShowBrush:a,isMovingBoundingBox:s,isTransformingBoundingBox:l,stageScale:c}=e;return{cursorPosition:t,width:n,height:r,brushSize:i,tool:o,strokeWidth:1/c,radius:1/c,shouldDrawBrushPreview:!(s||l||!t)&&a}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),zwe=()=>{const{cursorPosition:e,width:t,height:n,brushSize:r,shouldDrawBrushPreview:i,strokeWidth:o,radius:a}=Me(Dwe);return i?ne(Fn,{children:[w(E8,{x:e?e.x:t/2,y:e?e.y:n/2,radius:r/2,stroke:"rgba(0,0,0,1)",strokeWidth:o,strokeEnabled:!0,listening:!1}),w(E8,{x:e?e.x:t/2,y:e?e.y:n/2,radius:a,fill:"rgba(0,0,0,1)",listening:!1})]}):null},Fwe=()=>{const{tool:e,lines:t,cursorPosition:n,brushSize:r,canvasDimensions:{width:i,height:o},maskColor:a,shouldInvertMask:s,shouldShowMask:l,shouldShowBrushPreview:c,shouldShowCheckboardTransparency:p,imageToInpaint:g,shouldShowBrush:m,shouldShowBoundingBoxFill:y,shouldLockBoundingBox:b,stageScale:S,pastLines:T,futureLines:E,needsCache:k,isDrawing:L,isTransformingBoundingBox:I,isMovingBoundingBox:O,shouldShowBoundingBox:D}=Me(N=>N.inpainting);return C.exports.useLayoutEffect(()=>{!sl.current||sl.current.cache({x:0,y:0,width:i,height:o})},[t,n,i,o,e,r,a,s,l,c,p,g,m,y,D,b,S,T,E,k,L,I,O]),C.exports.useEffect(()=>{const N=window.setTimeout(()=>{!sl.current||sl.current.cache({x:0,y:0,width:i,height:o})},0);return()=>{window.clearTimeout(N)}}),null},Ly=e=>{const t=e.getPointerPosition(),n=e.getAbsoluteTransform().copy();if(!t||!n)return;const r=n.invert().point(t);return{x:Math.floor(r.x),y:Math.floor(r.y)}},Bwe=4,fH=St(e=>e.inpainting,e=>{const{boundingBoxCoordinate:t,boundingBoxDimensions:n,boundingBoxPreviewFill:r,canvasDimensions:i,stageScale:o,imageToInpaint:a,shouldLockBoundingBox:s,isDrawing:l,isTransformingBoundingBox:c,isMovingBoundingBox:p,isMouseOverBoundingBox:g,isSpacebarHeld:m}=e;return{boundingBoxCoordinate:t,boundingBoxDimensions:n,boundingBoxPreviewFillString:Awe(r),canvasDimensions:i,stageScale:o,imageToInpaint:a,dash:Bwe/o,strokeWidth:1/o,shouldLockBoundingBox:s,isDrawing:l,isTransformingBoundingBox:c,isMouseOverBoundingBox:g,isMovingBoundingBox:p,isSpacebarHeld:m}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),$we=()=>{const{boundingBoxCoordinate:e,boundingBoxDimensions:t,boundingBoxPreviewFillString:n,canvasDimensions:r}=Me(fH);return ne(Ewe,{children:[w(k8,{x:0,y:0,height:r.height,width:r.width,fill:n}),w(k8,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,globalCompositeOperation:"destination-out"})]})},Hwe=()=>{const e=Xe(),{boundingBoxCoordinate:t,boundingBoxDimensions:n,stageScale:r,imageToInpaint:i,shouldLockBoundingBox:o,isDrawing:a,isTransformingBoundingBox:s,isMovingBoundingBox:l,isMouseOverBoundingBox:c,isSpacebarHeld:p}=Me(fH),g=C.exports.useRef(null),m=C.exports.useRef(null);C.exports.useEffect(()=>{!g.current||!m.current||(g.current.nodes([m.current]),g.current.getLayer()?.batchDraw())},[o]);const y=64*r,b=C.exports.useCallback(z=>{e(YL({x:Math.floor(z.target.x()),y:Math.floor(z.target.y())}))},[e]),S=C.exports.useCallback(z=>{if(!i)return t;const{x:W,y:V}=z,q=i.width-n.width,he=i.height-n.height,de=Math.floor(ht.clamp(W,0,q*r)),ve=Math.floor(ht.clamp(V,0,he*r));return{x:de,y:ve}},[t,n,i,r]),T=C.exports.useCallback(()=>{if(!m.current)return;const z=m.current,W=z.scaleX(),V=z.scaleY(),q=Math.round(z.width()*W),he=Math.round(z.height()*V),de=Math.round(z.x()),ve=Math.round(z.y());e(Ig({width:q,height:he})),e(YL({x:de,y:ve})),z.scaleX(1),z.scaleY(1)},[e]),E=C.exports.useCallback((z,W,V)=>{const q=z.x%y,he=z.y%y,de=jL(W.x,y)+q,ve=jL(W.y,y)+he,Ee=Math.abs(W.x-de),xe=Math.abs(W.y-ve),Z=Ee!i||W.width+W.x>i.width*r||W.height+W.y>i.height*r||W.x<0||W.y<0?z:W,[i,r]),L=z=>{z.cancelBubble=!0,z.evt.stopImmediatePropagation(),console.log("Started transform"),e(LS(!0))},I=z=>{e(LS(!1)),e(pp(!1))},O=z=>{z.cancelBubble=!0,z.evt.stopImmediatePropagation(),e(XL(!0))},D=z=>{e(LS(!1)),e(XL(!1)),e(pp(!1))},N=(z,W)=>{z.rect(0,0,i?.width,i?.height),z.fillShape(W)};return ne(Fn,{children:[w(k8,{x:t.x,y:t.y,width:n.width,height:n.height,ref:m,stroke:c?"rgba(255,255,255,0.3)":"white",strokeWidth:Math.floor((c?8:1)/r),fillEnabled:p,hitFunc:p?N:void 0,hitStrokeWidth:Math.floor(13/r),listening:!a&&!o,onMouseOver:()=>{e(pp(!0))},onMouseOut:()=>{!s&&!l&&e(pp(!1))},onMouseDown:O,onMouseUp:D,draggable:!0,onDragMove:b,dragBoundFunc:S,onTransform:T,onDragEnd:D,onTransformEnd:I}),w(Twe,{ref:g,anchorCornerRadius:3,anchorFill:"rgba(212,216,234,1)",anchorSize:15,anchorStroke:"rgb(42,42,42)",borderDash:[4,4],borderStroke:"black",rotateEnabled:!1,borderEnabled:!0,flipEnabled:!1,ignoreStroke:!0,keepRatio:!1,listening:!a&&!o,onMouseDown:L,onMouseUp:I,enabledAnchors:o?[]:void 0,boundBoxFunc:k,anchorDragBoundFunc:E,onDragEnd:D,onTransformEnd:I,onMouseOver:()=>{e(pp(!0))},onMouseOut:()=>{!s&&!l&&e(pp(!1))}})]})},Wwe=St([e=>e.options,e=>e.inpainting,Cr],(e,t,n)=>{const{shouldShowMask:r,cursorPosition:i,shouldLockBoundingBox:o,shouldShowBoundingBox:a}=t;return{activeTabName:n,shouldShowMask:r,isCursorOnCanvas:Boolean(i),shouldLockBoundingBox:o,shouldShowBoundingBox:a}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),Vwe=()=>{const e=Xe(),{shouldShowMask:t,activeTabName:n,isCursorOnCanvas:r,shouldLockBoundingBox:i,shouldShowBoundingBox:o}=Me(Wwe),a=C.exports.useRef(!1),s=C.exports.useRef(null);return _t("shift+q",l=>{l.preventDefault(),e(jye())},{enabled:n==="inpainting"&&t},[n,t]),C.exports.useEffect(()=>{const l=c=>{if(!(!["x","q"].includes(c.key)||n!=="inpainting"||!t)){if(!r){s.current||(s.current=c),a.current=!1;return}if(c.stopPropagation(),c.preventDefault(),!c.repeat){if(s.current||(a.current=!0,s.current=c),!a.current&&c.type==="keyup"){a.current=!0,s.current=c;return}switch(c.key){case"x":{e(Hye());break}case"q":{if(!t||!o)break;e(qye(c.type==="keydown")),e(K7(c.type!=="keydown"));break}}s.current=c,a.current=!0}}};return document.addEventListener("keydown",l),document.addEventListener("keyup",l),()=>{document.removeEventListener("keydown",l),document.removeEventListener("keyup",l)}},[e,n,t,r,i,o]),null};let Js,sl,F4;const Uwe=()=>{const e=Xe(),{tool:t,brushSize:n,shouldInvertMask:r,shouldShowMask:i,shouldShowCheckboardTransparency:o,maskColor:a,imageToInpaint:s,stageScale:l,shouldShowBoundingBox:c,shouldShowBoundingBoxFill:p,isDrawing:g,isModifyingBoundingBox:m,stageCursor:y}=Me(Mwe),b=ld();Js=C.exports.useRef(null),sl=C.exports.useRef(null),F4=C.exports.useRef(null);const S=C.exports.useRef({x:0,y:0}),T=C.exports.useRef(!1),[E,k]=C.exports.useState(null);C.exports.useEffect(()=>{if(s){const z=new Image;z.onload=()=>{F4.current=z,k(z)},z.onerror=()=>{b({title:"Unable to Load Image",description:`Image ${s.url} failed to load`,status:"error",isClosable:!0}),e(zB())},z.src=s.url}else k(null)},[s,e,l,b]);const L=C.exports.useCallback(()=>{if(!Js.current)return;const z=Ly(Js.current);!z||!sl.current||m||(e(ly(!0)),e(qL({tool:t,strokeWidth:n/2,points:[z.x,z.y]})))},[e,n,t,m]),I=C.exports.useCallback(()=>{if(!Js.current)return;const z=Ly(Js.current);!z||(e(ZL(z)),sl.current&&(S.current=z,!(!g||m)&&(T.current=!0,e(KL([z.x,z.y])))))},[e,g,m]),O=C.exports.useCallback(()=>{if(!T.current&&g&&Js.current){const z=Ly(Js.current);if(!z||!sl.current||m)return;e(KL([z.x,z.y]))}else T.current=!1;e(ly(!1))},[e,g,m]),D=C.exports.useCallback(()=>{e(ZL(null)),e(ly(!1))},[e]),N=C.exports.useCallback(z=>{if(z.evt.buttons===1){if(!Js.current)return;const W=Ly(Js.current);if(!W||!sl.current||m)return;e(ly(!0)),e(qL({tool:t,strokeWidth:n/2,points:[W.x,W.y]}))}},[e,n,t,m]);return w("div",{className:"inpainting-canvas-container",children:ne("div",{className:"inpainting-canvas-wrapper",children:[E&&ne(Lwe,{width:Math.floor(E.width*l),height:Math.floor(E.height*l),scale:{x:l,y:l},onMouseDown:L,onMouseMove:I,onMouseEnter:N,onMouseUp:O,onMouseOut:D,onMouseLeave:D,style:{...y?{cursor:y}:{}},className:"inpainting-canvas-stage checkerboard",ref:Js,children:[!r&&!o&&w(US,{name:"image-layer",listening:!1,children:w(GS,{listening:!1,image:E})}),i&&ne(Fn,{children:[ne(US,{name:"mask-layer",listening:!1,opacity:o||r?1:a.a,ref:sl,children:[w(Rwe,{}),w(Nwe,{}),r&&w(GS,{image:E,listening:!1,globalCompositeOperation:"source-in"}),!r&&o&&w(GS,{image:E,listening:!1,globalCompositeOperation:"source-out"})]}),ne(US,{children:[p&&c&&w($we,{}),c&&w(Hwe,{}),w(zwe,{})]})]})]}),w(Fwe,{}),w(Vwe,{})]})})},Gwe=()=>{const e=Xe(),{needsCache:t,imageToInpaint:n}=Me(i=>i.inpainting),r=C.exports.useRef(null);return C.exports.useLayoutEffect(()=>{window.setTimeout(()=>{if(!r.current||!n)return;const i=r.current.clientWidth,o=r.current.clientHeight,a=Math.min(1,Math.min(i/n.width,o/n.height));e($ye(a))},0)},[e,n,t]),w("div",{ref:r,className:"inpainting-canvas-area",children:w(Cv,{thickness:"2px",speed:"1s",size:"xl"})})};function _x(){return(_x=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}function P8(e){var t=C.exports.useRef(e),n=C.exports.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var k0=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:T.buttons>0)&&i.current?o(XA(i.current,T,s.current)):S(!1)},b=function(){return S(!1)};function S(T){var E=l.current,k=T8(i.current),L=T?k.addEventListener:k.removeEventListener;L(E?"touchmove":"mousemove",y),L(E?"touchend":"mouseup",b)}return[function(T){var E=T.nativeEvent,k=i.current;if(k&&(QA(E),!function(I,O){return O&&!hm(I)}(E,l.current)&&k)){if(hm(E)){l.current=!0;var L=E.changedTouches||[];L.length&&(s.current=L[0].identifier)}k.focus(),o(XA(k,E,s.current)),S(!0)}},function(T){var E=T.which||T.keyCode;E<37||E>40||(T.preventDefault(),a({left:E===39?.05:E===37?-.05:0,top:E===40?.05:E===38?-.05:0}))},S]},[a,o]),p=c[0],g=c[1],m=c[2];return C.exports.useEffect(function(){return m},[m]),w("div",{..._x({},r,{onTouchStart:p,onMouseDown:p,className:"react-colorful__interactive",ref:i,onKeyDown:g,tabIndex:0,role:"slider"})})}),kx=function(e){return e.filter(Boolean).join(" ")},m_=function(e){var t=e.color,n=e.left,r=e.top,i=r===void 0?.5:r,o=kx(["react-colorful__pointer",e.className]);return w("div",{className:o,style:{top:100*i+"%",left:100*n+"%"},children:w("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}})})},eo=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},pH=function(e){var t=e.s,n=e.v,r=e.a,i=(200-t)*n/100;return{h:eo(e.h),s:eo(i>0&&i<200?t*n/100/(i<=100?i:200-i)*100:0),l:eo(i/2),a:eo(r,2)}},L8=function(e){var t=pH(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},jS=function(e){var t=pH(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},jwe=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var o=Math.floor(t),a=r*(1-n),s=r*(1-(t-o)*n),l=r*(1-(1-t+o)*n),c=o%6;return{r:eo(255*[r,s,a,a,l,r][c]),g:eo(255*[l,r,r,s,a,a][c]),b:eo(255*[a,a,l,r,r,s][c]),a:eo(i,2)}},qwe=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,o=Math.max(t,n,r),a=o-Math.min(t,n,r),s=a?o===t?(n-r)/a:o===n?2+(r-t)/a:4+(t-n)/a:0;return{h:eo(60*(s<0?s+6:s)),s:eo(o?a/o*100:0),v:eo(o/255*100),a:i}},Kwe=re.memo(function(e){var t=e.hue,n=e.onChange,r=kx(["react-colorful__hue",e.className]);return re.createElement("div",{className:r},re.createElement(g_,{onMove:function(i){n({h:360*i.left})},onKey:function(i){n({h:k0(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":eo(t),"aria-valuemax":"360","aria-valuemin":"0"},re.createElement(m_,{className:"react-colorful__hue-pointer",left:t/360,color:L8({h:t,s:100,v:100,a:1})})))}),Zwe=re.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:L8({h:t.h,s:100,v:100,a:1})};return re.createElement("div",{className:"react-colorful__saturation",style:r},re.createElement(g_,{onMove:function(i){n({s:100*i.left,v:100-100*i.top})},onKey:function(i){n({s:k0(t.s+100*i.left,0,100),v:k0(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+eo(t.s)+"%, Brightness "+eo(t.v)+"%"},re.createElement(m_,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:L8(t)})))}),gH=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function Ywe(e,t,n){var r=P8(n),i=C.exports.useState(function(){return e.toHsva(t)}),o=i[0],a=i[1],s=C.exports.useRef({color:t,hsva:o});C.exports.useEffect(function(){if(!e.equal(t,s.current.color)){var c=e.toHsva(t);s.current={hsva:c,color:t},a(c)}},[t,e]),C.exports.useEffect(function(){var c;gH(o,s.current.hsva)||e.equal(c=e.fromHsva(o),s.current.color)||(s.current={hsva:o,color:c},r(c))},[o,e,r]);var l=C.exports.useCallback(function(c){a(function(p){return Object.assign({},p,c)})},[]);return[o,l]}var Xwe=typeof window<"u"?C.exports.useLayoutEffect:C.exports.useEffect,Qwe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},JA=new Map,Jwe=function(e){Xwe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!JA.has(t)){var n=t.createElement("style");n.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,JA.set(t,n);var r=Qwe();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},e6e=function(e){var t=e.className,n=e.hsva,r=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+jS(Object.assign({},n,{a:0}))+", "+jS(Object.assign({},n,{a:1}))+")"},o=kx(["react-colorful__alpha",t]),a=eo(100*n.a);return re.createElement("div",{className:o},w("div",{className:"react-colorful__alpha-gradient",style:i}),re.createElement(g_,{onMove:function(s){r({a:s.left})},onKey:function(s){r({a:k0(n.a+s.left)})},"aria-label":"Alpha","aria-valuetext":a+"%","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":"100"},re.createElement(m_,{className:"react-colorful__alpha-pointer",left:n.a,color:jS(n)})))},t6e=function(e){var t=e.className,n=e.colorModel,r=e.color,i=r===void 0?n.defaultColor:r,o=e.onChange,a=hH(e,["className","colorModel","color","onChange"]),s=C.exports.useRef(null);Jwe(s);var l=Ywe(n,i,o),c=l[0],p=l[1],g=kx(["react-colorful",t]);return re.createElement("div",_x({},a,{ref:s,className:g}),w(Zwe,{hsva:c,onChange:p}),w(Kwe,{hue:c.h,onChange:p}),re.createElement(e6e,{hsva:c,onChange:p,className:"react-colorful__last-control"}))},n6e={defaultColor:{r:0,g:0,b:0,a:1},toHsva:qwe,fromHsva:jwe,equal:gH},r6e=function(e){return re.createElement(t6e,_x({},e,{colorModel:n6e}))};const i6e=e=>{const{styleClass:t,...n}=e;return w(r6e,{className:`invokeai__color-picker ${t}`,...n})},o6e=St([e=>e.inpainting,Cr],(e,t)=>{const{shouldShowMask:n,maskColor:r}=e;return{shouldShowMask:n,maskColor:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function a6e(){const{shouldShowMask:e,maskColor:t,activeTabName:n}=Me(o6e),r=Xe(),i=o=>{r(Dye(o))};return _t("shift+[",o=>{o.preventDefault(),i({...t,a:Math.max(t.a-.05,0)})},{enabled:n==="inpainting"&&e},[n,e,t.a]),_t("shift+]",o=>{o.preventDefault(),i({...t,a:Math.min(t.a+.05,100)})},{enabled:n==="inpainting"&&e},[n,e,t.a]),w(Df,{trigger:"hover",styleClass:"inpainting-color-picker",triggerComponent:w(Ut,{"aria-label":"Mask Color",icon:w(nye,{}),isDisabled:!e,cursor:"pointer"}),children:w(i6e,{color:t,onChange:i})})}const s6e=St([e=>e.inpainting,Cr],(e,t)=>{const{tool:n,brushSize:r,shouldShowMask:i}=e;return{tool:n,brushSize:r,shouldShowMask:i,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function l6e(){const e=Xe(),{tool:t,brushSize:n,shouldShowMask:r,activeTabName:i}=Me(s6e),o=()=>e(DB("brush")),a=()=>{e(TS(!0))},s=()=>{e(TS(!1))},l=c=>{e(TS(!0)),e(Rye(c))};return _t("[",c=>{c.preventDefault(),n-5>0?l(n-5):l(1)},{enabled:i==="inpainting"&&r},[i,r,n]),_t("]",c=>{c.preventDefault(),l(n+5)},{enabled:i==="inpainting"&&r},[i,r,n]),_t("b",c=>{c.preventDefault(),o()},{enabled:i==="inpainting"&&r},[i,r]),w(Df,{trigger:"hover",onOpen:a,onClose:s,triggerComponent:w(Ut,{"aria-label":"Brush (B)",tooltip:"Brush (B)",icon:w(tye,{}),onClick:o,"data-selected":t==="brush",isDisabled:!r}),children:ne("div",{className:"inpainting-brush-options",children:[w(i_,{label:"Brush Size",value:n,onChange:l,min:1,max:200,width:"100px",focusThumbOnChange:!1,isDisabled:!r}),w(no,{value:n,onChange:l,width:"80px",min:1,max:999,isDisabled:!r}),w(a6e,{})]})})}const u6e=St([e=>e.inpainting,Cr],(e,t)=>{const{tool:n,shouldShowMask:r}=e;return{tool:n,shouldShowMask:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function c6e(){const{tool:e,shouldShowMask:t,activeTabName:n}=Me(u6e),r=Xe(),i=()=>r(DB("eraser"));return _t("e",o=>{o.preventDefault(),!(n!=="inpainting"||!t)&&i()},{enabled:n==="inpainting"&&t},[n,t]),w(Ut,{"aria-label":"Eraser (E)",tooltip:"Eraser (E)",icon:w(q2e,{}),onClick:i,"data-selected":e==="eraser",isDisabled:!t})}const d6e=St([e=>e.inpainting,Cr],(e,t)=>{const{pastLines:n,shouldShowMask:r}=e;return{canUndo:n.length>0,shouldShowMask:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function f6e(){const e=Xe(),{canUndo:t,shouldShowMask:n,activeTabName:r}=Me(d6e),i=()=>e(Fye());return _t("cmd+z, control+z",o=>{o.preventDefault(),i()},{enabled:r==="inpainting"&&n&&t},[r,n,t]),w(Ut,{"aria-label":"Undo",tooltip:"Undo",icon:w(hye,{}),onClick:i,isDisabled:!t||!n})}const h6e=St([e=>e.inpainting,Cr],(e,t)=>{const{futureLines:n,shouldShowMask:r}=e;return{canRedo:n.length>0,shouldShowMask:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function p6e(){const e=Xe(),{canRedo:t,shouldShowMask:n,activeTabName:r}=Me(h6e),i=()=>e(Bye());return _t("cmd+shift+z, control+shift+z, control+y, cmd+y",o=>{o.preventDefault(),i()},{enabled:r==="inpainting"&&n&&t},[r,n,t]),w(Ut,{"aria-label":"Redo",tooltip:"Redo",icon:w(sye,{}),onClick:i,isDisabled:!t||!n})}const g6e=St([e=>e.inpainting,Cr],(e,t)=>{const{shouldShowMask:n,lines:r}=e;return{shouldShowMask:n,activeTabName:t,isMaskEmpty:r.length===0}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function m6e(){const{shouldShowMask:e,activeTabName:t,isMaskEmpty:n}=Me(g6e),r=Xe(),i=ld(),o=()=>{r(zye())};return _t("shift+c",a=>{a.preventDefault(),o(),i({title:"Mask Cleared",status:"success",duration:2500,isClosable:!0})},{enabled:t==="inpainting"&&e&&!n},[t,n,e]),w(Ut,{"aria-label":"Clear Mask (Shift+C)",tooltip:"Clear Mask (Shift+C)",icon:w(iye,{size:20,style:{transform:"rotate(45deg)"}}),onClick:o,isDisabled:n||!e})}const v6e=St([e=>e.inpainting,Cr],(e,t)=>{const{shouldShowMask:n}=e;return{shouldShowMask:n,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function y6e(){const e=Xe(),{shouldShowMask:t,activeTabName:n}=Me(v6e),r=()=>e(Nye(!t));return _t("h",i=>{i.preventDefault(),r()},{enabled:n==="inpainting"},[n,t]),w(Ut,{"aria-label":"Hide Mask (H)",tooltip:"Hide Mask (H)","data-alert":!t,icon:t?w(P$,{size:22}):w(k$,{size:22}),onClick:r})}const x6e=St([e=>e.inpainting,Cr],(e,t)=>{const{shouldShowMask:n,shouldInvertMask:r}=e;return{shouldInvertMask:r,shouldShowMask:n,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}});function b6e(){const{shouldInvertMask:e,shouldShowMask:t,activeTabName:n}=Me(x6e),r=Xe(),i=()=>r(Oye(!e));return _t("shift+m",o=>{o.preventDefault(),i()},{enabled:n==="inpainting"&&t},[n,e,t]),w(Ut,{tooltip:"Invert Mask Display (Shift+M)","aria-label":"Invert Mask Display (Shift+M)","data-selected":e,icon:e?w(A2e,{size:22}):w(I2e,{size:22}),onClick:i,isDisabled:!t})}const S6e=()=>{const e=Xe(),t=Me(n=>n.inpainting.shouldLockBoundingBox);return w(Ut,{"aria-label":"Lock Inpainting Box",tooltip:"Lock Inpainting Box",icon:t?w(Q2e,{}):w(pye,{}),"data-selected":t,onClick:()=>{e(K7(!t))}})},w6e=()=>{const e=Xe(),t=Me(n=>n.inpainting.shouldShowBoundingBox);return w(Ut,{"aria-label":"Hide Inpainting Box",tooltip:"Hide Inpainting Box",icon:w(mye,{}),"data-alert":!t,onClick:()=>{e(FB(!t))}})},C6e=()=>ne("div",{className:"inpainting-settings",children:[ne(au,{isAttached:!0,children:[w(l6e,{}),w(c6e,{})]}),ne(au,{isAttached:!0,children:[w(y6e,{}),w(b6e,{}),w(S6e,{}),w(w6e,{}),w(m6e,{})]}),ne(au,{isAttached:!0,children:[w(f6e,{}),w(p6e,{})]}),w(au,{isAttached:!0,children:w(qB,{})})]}),_6e=St([e=>e.inpainting,e=>e.options],(e,t)=>{const{needsCache:n,imageToInpaint:r}=e,{showDualDisplay:i}=t;return{needsCache:n,showDualDisplay:i,imageToInpaint:r}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),k6e=()=>{const e=Xe(),{showDualDisplay:t,needsCache:n,imageToInpaint:r}=Me(_6e);return C.exports.useLayoutEffect(()=>{const o=ht.debounce(()=>e(su(!0)),250);return window.addEventListener("resize",o),()=>window.removeEventListener("resize",o)},[e]),ne("div",{className:t?"workarea-split-view":"workarea-single-view",children:[ne("div",{className:"workarea-split-view-left",children:[r?ne("div",{className:"inpainting-main-area",children:[w(C6e,{}),w("div",{className:"inpainting-canvas-area",children:n?w(Gwe,{}):w(Uwe,{})})]}):w($B,{})," "]}),t&&w("div",{className:"workarea-split-view-right",children:w(X7,{})})]})};function E6e(){return w(o_,{optionsPanel:w(gxe,{}),styleClass:"inpainting-workarea-overrides",children:w(k6e,{})})}function P6e(){const e=Me(n=>n.options.showAdvancedOptions),t={seed:{header:w(D7,{}),feature:Ji.SEED,options:w(z7,{})},variations:{header:w(B7,{}),feature:Ji.VARIATIONS,options:w($7,{})},face_restore:{header:w(R7,{}),feature:Ji.FACE_CORRECTION,options:w(fx,{})},upscale:{header:w(F7,{}),feature:Ji.UPSCALE,options:w(hx,{})},other:{header:w(fB,{}),feature:Ji.OTHER,options:w(hB,{})}};return ne(Z7,{children:[w(j7,{}),w(G7,{}),w(V7,{}),w(H7,{}),e?w(U7,{accordionInfo:t}):null]})}const T6e=()=>w("div",{className:"workarea-single-view",children:w("div",{className:"text-to-image-area",children:w(X7,{})})});function L6e(){return w(o_,{optionsPanel:w(P6e,{}),children:w(T6e,{})})}const pf={txt2img:{title:w(Bve,{fill:"black",boxSize:"2.5rem"}),workarea:w(L6e,{}),tooltip:"Text To Image"},img2img:{title:w(Ove,{fill:"black",boxSize:"2.5rem"}),workarea:w(ixe,{}),tooltip:"Image To Image"},inpainting:{title:w(Nve,{fill:"black",boxSize:"2.5rem"}),workarea:w(E6e,{}),tooltip:"Inpainting"},outpainting:{title:w(zve,{fill:"black",boxSize:"2.5rem"}),workarea:w(Mve,{}),tooltip:"Outpainting"},nodes:{title:w(Dve,{fill:"black",boxSize:"2.5rem"}),workarea:w(Ive,{}),tooltip:"Nodes"},postprocess:{title:w(Fve,{fill:"black",boxSize:"2.5rem"}),workarea:w(Rve,{}),tooltip:"Post Processing"}},Ex=ht.map(pf,(e,t)=>t);[...Ex];function A6e(){const e=Me(i=>i.options.activeTab),t=Xe();_t("1",()=>{t(Ea(0))}),_t("2",()=>{t(Ea(1))}),_t("3",()=>{t(Ea(2)),t(su(!0))}),_t("4",()=>{t(Ea(3))}),_t("5",()=>{t(Ea(4))}),_t("6",()=>{t(Ea(5))});const n=()=>{const i=[];return Object.keys(pf).forEach(o=>{i.push(w($i,{hasArrow:!0,label:pf[o].tooltip,placement:"right",children:w(AF,{children:pf[o].title})},o))}),i},r=()=>{const i=[];return Object.keys(pf).forEach(o=>{i.push(w(TF,{className:"app-tabs-panel",children:pf[o].workarea},o))}),i};return ne(PF,{isLazy:!0,className:"app-tabs",variant:"unstyled",defaultIndex:e,index:e,onChange:i=>{t(Ea(i)),t(su(!0))},children:[w("div",{className:"app-tabs-list",children:n()}),w(LF,{className:"app-tabs-panels",children:r()})]})}const mH={prompt:"",iterations:1,steps:50,cfgScale:7.5,height:512,width:512,sampler:"k_lms",threshold:0,perlin:0,seed:0,seamless:!1,hiresFix:!1,img2imgStrength:.75,maskPath:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,variationAmount:.1,seedWeights:"",shouldRunESRGAN:!1,upscalingLevel:4,upscalingStrength:.75,shouldRunFacetool:!1,facetoolStrength:.8,facetoolType:"gfpgan",codeformerFidelity:.75,shouldRandomizeSeed:!0,showAdvancedOptions:!0,activeTab:0,shouldShowImageDetails:!1,showDualDisplay:!0,shouldShowOptionsPanel:!0,shouldPinOptionsPanel:!0,optionsPanelScrollPosition:0,shouldHoldOptionsPanelOpen:!1,shouldLoopback:!1},I6e=mH,vH=Q5({name:"options",initialState:I6e,reducers:{setPrompt:(e,t)=>{const n=t.payload;typeof n=="string"?e.prompt=n:e.prompt=d3(n)},setIterations:(e,t)=>{e.iterations=t.payload},setSteps:(e,t)=>{e.steps=t.payload},setCfgScale:(e,t)=>{e.cfgScale=t.payload},setThreshold:(e,t)=>{e.threshold=t.payload},setPerlin:(e,t)=>{e.perlin=t.payload},setHeight:(e,t)=>{e.height=t.payload},setWidth:(e,t)=>{e.width=t.payload},setSampler:(e,t)=>{e.sampler=t.payload},setSeed:(e,t)=>{e.seed=t.payload,e.shouldRandomizeSeed=!1},setImg2imgStrength:(e,t)=>{e.img2imgStrength=t.payload},setFacetoolStrength:(e,t)=>{e.facetoolStrength=t.payload},setCodeformerFidelity:(e,t)=>{e.codeformerFidelity=t.payload},setUpscalingLevel:(e,t)=>{e.upscalingLevel=t.payload},setUpscalingStrength:(e,t)=>{e.upscalingStrength=t.payload},setMaskPath:(e,t)=>{e.maskPath=t.payload},setSeamless:(e,t)=>{e.seamless=t.payload},setHiresFix:(e,t)=>{e.hiresFix=t.payload},setShouldFitToWidthHeight:(e,t)=>{e.shouldFitToWidthHeight=t.payload},resetSeed:e=>{e.seed=-1},setParameter:(e,t)=>{const{key:n,value:r}=t.payload,i={...e,[n]:r};return n==="seed"&&(i.shouldRandomizeSeed=!1),i},setShouldGenerateVariations:(e,t)=>{e.shouldGenerateVariations=t.payload},setVariationAmount:(e,t)=>{e.variationAmount=t.payload},setSeedWeights:(e,t)=>{e.seedWeights=t.payload},setAllTextToImageParameters:(e,t)=>{const{sampler:n,prompt:r,seed:i,variations:o,steps:a,cfg_scale:s,threshold:l,perlin:c,seamless:p,hires_fix:g,width:m,height:y}=t.payload.image;o&&o.length>0?(e.seedWeights=L4(o),e.shouldGenerateVariations=!0):e.shouldGenerateVariations=!1,i&&(e.seed=i,e.shouldRandomizeSeed=!1),r&&(e.prompt=d3(r)),n&&(e.sampler=n),a&&(e.steps=a),s&&(e.cfgScale=s),l&&(e.threshold=l),typeof l>"u"&&(e.threshold=0),c&&(e.perlin=c),typeof c>"u"&&(e.perlin=0),typeof p=="boolean"&&(e.seamless=p),typeof g=="boolean"&&(e.hiresFix=g),m&&(e.width=m),y&&(e.height=y)},setAllImageToImageParameters:(e,t)=>{const{type:n,strength:r,fit:i,init_image_path:o,mask_image_path:a}=t.payload.image;n==="img2img"&&(o&&(e.initialImage=o),a&&(e.maskPath=a),r&&(e.img2imgStrength=r),typeof i=="boolean"&&(e.shouldFitToWidthHeight=i))},setAllParameters:(e,t)=>{const{type:n,sampler:r,prompt:i,seed:o,variations:a,steps:s,cfg_scale:l,threshold:c,perlin:p,seamless:g,hires_fix:m,width:y,height:b,strength:S,fit:T,init_image_path:E,mask_image_path:k}=t.payload.image;n==="img2img"&&(E&&(e.initialImage=E),k&&(e.maskPath=k),S&&(e.img2imgStrength=S),typeof T=="boolean"&&(e.shouldFitToWidthHeight=T)),a&&a.length>0?(e.seedWeights=L4(a),e.shouldGenerateVariations=!0):e.shouldGenerateVariations=!1,o&&(e.seed=o,e.shouldRandomizeSeed=!1),i&&(e.prompt=d3(i)),r&&(e.sampler=r),s&&(e.steps=s),l&&(e.cfgScale=l),c&&(e.threshold=c),typeof c>"u"&&(e.threshold=0),p&&(e.perlin=p),typeof p>"u"&&(e.perlin=0),typeof g=="boolean"&&(e.seamless=g),typeof m=="boolean"&&(e.hiresFix=m),y&&(e.width=y),b&&(e.height=b)},resetOptionsState:e=>({...e,...mH}),setShouldRunFacetool:(e,t)=>{e.shouldRunFacetool=t.payload},setFacetoolType:(e,t)=>{e.facetoolType=t.payload},setShouldRunESRGAN:(e,t)=>{e.shouldRunESRGAN=t.payload},setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},setShowAdvancedOptions:(e,t)=>{e.showAdvancedOptions=t.payload},setActiveTab:(e,t)=>{typeof t.payload=="number"?e.activeTab=t.payload:e.activeTab=Ex.indexOf(t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShowDualDisplay:(e,t)=>{e.showDualDisplay=t.payload},setInitialImage:(e,t)=>{e.initialImage=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setShouldPinOptionsPanel:(e,t)=>{e.shouldPinOptionsPanel=t.payload},setShouldShowOptionsPanel:(e,t)=>{e.shouldShowOptionsPanel=t.payload},setOptionsPanelScrollPosition:(e,t)=>{e.optionsPanelScrollPosition=t.payload},setShouldHoldOptionsPanelOpen:(e,t)=>{e.shouldHoldOptionsPanelOpen=t.payload},setShouldLoopback:(e,t)=>{e.shouldLoopback=t.payload}}}),{setPrompt:Px,setIterations:M6e,setSteps:yH,setCfgScale:xH,setThreshold:R6e,setPerlin:O6e,setHeight:bH,setWidth:SH,setSampler:wH,setSeed:Ov,setSeamless:CH,setHiresFix:_H,setImg2imgStrength:kH,setFacetoolStrength:v3,setFacetoolType:y3,setCodeformerFidelity:EH,setUpscalingLevel:A8,setUpscalingStrength:I8,setMaskPath:M8,resetSeed:$Ce,resetOptionsState:HCe,setShouldFitToWidthHeight:PH,setParameter:WCe,setShouldGenerateVariations:N6e,setSeedWeights:TH,setVariationAmount:D6e,setAllParameters:z6e,setShouldRunFacetool:F6e,setShouldRunESRGAN:B6e,setShouldRandomizeSeed:$6e,setShowAdvancedOptions:H6e,setActiveTab:Ea,setShouldShowImageDetails:LH,setAllTextToImageParameters:W6e,setAllImageToImageParameters:V6e,setShowDualDisplay:U6e,setInitialImage:ov,clearInitialImage:AH,setShouldShowOptionsPanel:x3,setShouldPinOptionsPanel:G6e,setOptionsPanelScrollPosition:j6e,setShouldHoldOptionsPanelOpen:q6e,setShouldLoopback:K6e}=vH.actions,Z6e=vH.reducer,kl=Object.create(null);kl.open="0";kl.close="1";kl.ping="2";kl.pong="3";kl.message="4";kl.upgrade="5";kl.noop="6";const b3=Object.create(null);Object.keys(kl).forEach(e=>{b3[kl[e]]=e});const Y6e={type:"error",data:"parser error"},X6e=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Q6e=typeof ArrayBuffer=="function",J6e=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,IH=({type:e,data:t},n,r)=>X6e&&t instanceof Blob?n?r(t):eI(t,r):Q6e&&(t instanceof ArrayBuffer||J6e(t))?n?r(t):eI(new Blob([t]),r):r(kl[e]+(t||"")),eI=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+r)},n.readAsDataURL(e)},tI="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",zg=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,i=0,o,a,s,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const c=new ArrayBuffer(t),p=new Uint8Array(c);for(r=0;r>4,p[i++]=(a&15)<<4|s>>2,p[i++]=(s&3)<<6|l&63;return c},t8e=typeof ArrayBuffer=="function",MH=(e,t)=>{if(typeof e!="string")return{type:"message",data:RH(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:n8e(e.substring(1),t)}:b3[n]?e.length>1?{type:b3[n],data:e.substring(1)}:{type:b3[n]}:Y6e},n8e=(e,t)=>{if(t8e){const n=e8e(e);return RH(n,t)}else return{base64:!0,data:e}},RH=(e,t)=>{switch(t){case"blob":return e instanceof ArrayBuffer?new Blob([e]):e;case"arraybuffer":default:return e}},OH=String.fromCharCode(30),r8e=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,a)=>{IH(o,!1,s=>{r[a]=s,++i===n&&t(r.join(OH))})})},i8e=(e,t)=>{const n=e.split(OH),r=[];for(let i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function DH(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const a8e=setTimeout,s8e=clearTimeout;function Tx(e,t){t.useNativeTimers?(e.setTimeoutFn=a8e.bind(Oc),e.clearTimeoutFn=s8e.bind(Oc)):(e.setTimeoutFn=setTimeout.bind(Oc),e.clearTimeoutFn=clearTimeout.bind(Oc))}const l8e=1.33;function u8e(e){return typeof e=="string"?c8e(e):Math.ceil((e.byteLength||e.size)*l8e)}function c8e(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}class d8e extends Error{constructor(t,n,r){super(t),this.description=n,this.context=r,this.type="TransportError"}}class zH extends Vr{constructor(t){super(),this.writable=!1,Tx(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,n,r){return super.emitReserved("error",new d8e(t,n,r)),this}open(){return(this.readyState==="closed"||this.readyState==="")&&(this.readyState="opening",this.doOpen()),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const n=MH(t,this.socket.binaryType);this.onPacket(n)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}}const FH="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),R8=64,f8e={};let nI=0,Ay=0,rI;function iI(e){let t="";do t=FH[e%R8]+t,e=Math.floor(e/R8);while(e>0);return t}function BH(){const e=iI(+new Date);return e!==rI?(nI=0,rI=e):e+"."+iI(nI++)}for(;Ay{this.readyState="paused",t()};if(this.polling||!this.writable){let r=0;this.polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};i8e(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,r8e(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){let t=this.query||{};const n=this.opts.secure?"https":"http";let r="";this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=BH()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.opts.port&&(n==="https"&&Number(this.opts.port)!==443||n==="http"&&Number(this.opts.port)!==80)&&(r=":"+this.opts.port);const i=$H(t),o=this.opts.hostname.indexOf(":")!==-1;return n+"://"+(o?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new bl(this.uri(),t)}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(i,o)=>{this.onError("xhr post error",i,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}class bl extends Vr{constructor(t,n){super(),Tx(this,n),this.opts=n,this.method=n.method||"GET",this.uri=t,this.async=n.async!==!1,this.data=n.data!==void 0?n.data:null,this.create()}create(){const t=DH(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const n=this.xhr=new WH(t);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let r in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}}catch{}if(this.method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=()=>{n.readyState===4&&(n.status===200||n.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof n.status=="number"?n.status:0)},0))},n.send(this.data)}catch(r){this.setTimeoutFn(()=>{this.onError(r)},0);return}typeof document<"u"&&(this.index=bl.requestsCount++,bl.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=g8e,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete bl.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}bl.requestsCount=0;bl.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",oI);else if(typeof addEventListener=="function"){const e="onpagehide"in Oc?"pagehide":"unload";addEventListener(e,oI,!1)}}function oI(){for(let e in bl.requests)bl.requests.hasOwnProperty(e)&&bl.requests[e].abort()}const VH=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),Iy=Oc.WebSocket||Oc.MozWebSocket,aI=!0,y8e="arraybuffer",sI=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class x8e extends zH{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),n=this.opts.protocols,r=sI?{}:DH(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=aI&&!sI?n?new Iy(t,n):new Iy(t):new Iy(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType||y8e,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{const a={};try{aI&&this.ws.send(o)}catch{}i&&VH(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const n=this.opts.secure?"wss":"ws";let r="";this.opts.port&&(n==="wss"&&Number(this.opts.port)!==443||n==="ws"&&Number(this.opts.port)!==80)&&(r=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=BH()),this.supportsBinary||(t.b64=1);const i=$H(t),o=this.opts.hostname.indexOf(":")!==-1;return n+"://"+(o?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!!Iy}}const b8e={websocket:x8e,polling:v8e},S8e=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,w8e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function O8(e){const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=S8e.exec(e||""),o={},a=14;for(;a--;)o[w8e[a]]=i[a]||"";return n!=-1&&r!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=C8e(o,o.path),o.queryKey=_8e(o,o.query),o}function C8e(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function _8e(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}class Tc extends Vr{constructor(t,n={}){super(),t&&typeof t=="object"&&(n=t,t=null),t?(t=O8(t),n.hostname=t.host,n.secure=t.protocol==="https"||t.protocol==="wss",n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=O8(n.host).host),Tx(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=n.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},n),this.opts.path=this.opts.path.replace(/\/$/,"")+"/",typeof this.opts.query=="string"&&(this.opts.query=h8e(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=NH,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts.transportOptions[t],this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new b8e[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Tc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else t=this.transports[0];this.readyState="opening";try{t=this.createTransport(t)}catch{this.transports.shift(),this.open();return}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",n=>this.onClose("transport close",n))}probe(t){let n=this.createTransport(t),r=!1;Tc.priorWebsocketSuccess=!1;const i=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",g=>{if(!r)if(g.type==="pong"&&g.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Tc.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(p(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const m=new Error("probe error");m.transport=n.name,this.emitReserved("upgradeError",m)}}))};function o(){r||(r=!0,p(),n.close(),n=null)}const a=g=>{const m=new Error("probe error: "+g);m.transport=n.name,o(),this.emitReserved("upgradeError",m)};function s(){a("transport closed")}function l(){a("socket closed")}function c(g){n&&g.name!==n.name&&o()}const p=()=>{n.removeListener("open",i),n.removeListener("error",a),n.removeListener("close",s),this.off("close",l),this.off("upgrading",c)};n.once("open",i),n.once("error",a),n.once("close",s),this.once("close",l),this.once("upgrading",c),n.open()}onOpen(){if(this.readyState="open",Tc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade&&this.transport.pause){let t=0;const n=this.upgrades.length;for(;t{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this.maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}write(t,n,r){return this.sendPacket("message",t,n,r),this}send(t,n,r){return this.sendPacket("message",t,n,r),this}sendPacket(t,n,r,i){if(typeof n=="function"&&(i=n,n=void 0),typeof r=="function"&&(i=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const o={type:t,data:n,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),i&&this.once("flush",i),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}onError(t){Tc.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,n){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const n=[];let r=0;const i=t.length;for(;rtypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,UH=Object.prototype.toString,T8e=typeof Blob=="function"||typeof Blob<"u"&&UH.call(Blob)==="[object BlobConstructor]",L8e=typeof File=="function"||typeof File<"u"&&UH.call(File)==="[object FileConstructor]";function v_(e){return E8e&&(e instanceof ArrayBuffer||P8e(e))||T8e&&e instanceof Blob||L8e&&e instanceof File}function S3(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num0;case en.ACK:case en.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class O8e{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=I8e(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const N8e=Object.freeze(Object.defineProperty({__proto__:null,protocol:M8e,get PacketType(){return en},Encoder:R8e,Decoder:y_},Symbol.toStringTag,{value:"Module"}));function fs(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const D8e=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class GH extends Vr{constructor(t,n,r){super(),this.connected=!1,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[fs(t,"open",this.onopen.bind(this)),fs(t,"packet",this.onpacket.bind(this)),fs(t,"error",this.onerror.bind(this)),fs(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){if(D8e.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');n.unshift(t);const r={type:en.EVENT,data:n};if(r.options={},r.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const a=this.ids++,s=n.pop();this._registerAckCallback(a,s),r.id=a}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(t,n){const r=this.flags.timeout;if(r===void 0){this.acks[t]=n;return}const i=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let o=0;o{this.io.clearTimeoutFn(i),n.apply(this,[null,...o])}}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this.packet({type:en.CONNECT,data:t})}):this.packet({type:en.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case en.CONNECT:if(t.data&&t.data.sid){const i=t.data.sid;this.onconnect(i)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case en.EVENT:case en.BINARY_EVENT:this.onevent(t);break;case en.ACK:case en.BINARY_ACK:this.onack(t);break;case en.DISCONNECT:this.ondisconnect();break;case en.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t)}ack(t){const n=this;let r=!1;return function(...i){r||(r=!0,n.packet({type:en.ACK,id:t,data:i}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(n.apply(this,t.data),delete this.acks[t.id])}onconnect(t){this.id=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:en.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}U0.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};U0.prototype.reset=function(){this.attempts=0};U0.prototype.setMin=function(e){this.ms=e};U0.prototype.setMax=function(e){this.max=e};U0.prototype.setJitter=function(e){this.jitter=e};class z8 extends Vr{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,Tx(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new U0({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const i=n.parser||N8e;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Tc(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=fs(n,"open",function(){r.onopen(),t&&t()}),o=fs(n,"error",a=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",a),t?t(a):r.maybeReconnectOnOpen()});if(this._timeout!==!1){const a=this._timeout;a===0&&i();const s=this.setTimeoutFn(()=>{i(),n.close(),n.emit("error",new Error("timeout"))},a);this.opts.autoUnref&&s.unref(),this.subs.push(function(){clearTimeout(s)})}return this.subs.push(i),this.subs.push(o),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(fs(t,"ping",this.onping.bind(this)),fs(t,"data",this.ondata.bind(this)),fs(t,"error",this.onerror.bind(this)),fs(t,"close",this.onclose.bind(this)),fs(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){VH(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r||(r=new GH(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,n){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(i=>{i?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",i)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(function(){clearTimeout(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const yg={};function w3(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=k8e(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,a=yg[i]&&o in yg[i].nsps,s=t.forceNew||t["force new connection"]||t.multiplex===!1||a;let l;return s?l=new z8(r,t):(yg[i]||(yg[i]=new z8(r,t)),l=yg[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(w3,{Manager:z8,Socket:GH,io:w3,connect:w3});let My;const z8e=new Uint8Array(16);function F8e(){if(!My&&(My=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!My))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return My(z8e)}const xi=[];for(let e=0;e<256;++e)xi.push((e+256).toString(16).slice(1));function B8e(e,t=0){return(xi[e[t+0]]+xi[e[t+1]]+xi[e[t+2]]+xi[e[t+3]]+"-"+xi[e[t+4]]+xi[e[t+5]]+"-"+xi[e[t+6]]+xi[e[t+7]]+"-"+xi[e[t+8]]+xi[e[t+9]]+"-"+xi[e[t+10]]+xi[e[t+11]]+xi[e[t+12]]+xi[e[t+13]]+xi[e[t+14]]+xi[e[t+15]]).toLowerCase()}const $8e=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),lI={randomUUID:$8e};function xg(e,t,n){if(lI.randomUUID&&!t&&!e)return lI.randomUUID();e=e||{};const r=e.random||(e.rng||F8e)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n=n||0;for(let i=0;i<16;++i)t[n+i]=r[i];return t}return B8e(r)}var H8e=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g,W8e=/\b(?:[A-Z]{1,3}[A-Z][TC])(?:[-+]\d{4})?|((?:Australian )?(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time)\b/g,V8e=/[^-+\dA-Z]/g;function wi(e,t,n,r){if(arguments.length===1&&typeof e=="string"&&!/\d/.test(e)&&(t=e,e=void 0),e=e||e===0?e:new Date,e instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");t=String(uI[t]||t||uI.default);var i=t.slice(0,4);(i==="UTC:"||i==="GMT:")&&(t=t.slice(4),n=!0,i==="GMT:"&&(r=!0));var o=function(){return n?"getUTC":"get"},a=function(){return e[o()+"Date"]()},s=function(){return e[o()+"Day"]()},l=function(){return e[o()+"Month"]()},c=function(){return e[o()+"FullYear"]()},p=function(){return e[o()+"Hours"]()},g=function(){return e[o()+"Minutes"]()},m=function(){return e[o()+"Seconds"]()},y=function(){return e[o()+"Milliseconds"]()},b=function(){return n?0:e.getTimezoneOffset()},S=function(){return U8e(e)},T=function(){return G8e(e)},E={d:function(){return a()},dd:function(){return Zo(a())},ddd:function(){return bo.dayNames[s()]},DDD:function(){return cI({y:c(),m:l(),d:a(),_:o(),dayName:bo.dayNames[s()],short:!0})},dddd:function(){return bo.dayNames[s()+7]},DDDD:function(){return cI({y:c(),m:l(),d:a(),_:o(),dayName:bo.dayNames[s()+7]})},m:function(){return l()+1},mm:function(){return Zo(l()+1)},mmm:function(){return bo.monthNames[l()]},mmmm:function(){return bo.monthNames[l()+12]},yy:function(){return String(c()).slice(2)},yyyy:function(){return Zo(c(),4)},h:function(){return p()%12||12},hh:function(){return Zo(p()%12||12)},H:function(){return p()},HH:function(){return Zo(p())},M:function(){return g()},MM:function(){return Zo(g())},s:function(){return m()},ss:function(){return Zo(m())},l:function(){return Zo(y(),3)},L:function(){return Zo(Math.floor(y()/10))},t:function(){return p()<12?bo.timeNames[0]:bo.timeNames[1]},tt:function(){return p()<12?bo.timeNames[2]:bo.timeNames[3]},T:function(){return p()<12?bo.timeNames[4]:bo.timeNames[5]},TT:function(){return p()<12?bo.timeNames[6]:bo.timeNames[7]},Z:function(){return r?"GMT":n?"UTC":j8e(e)},o:function(){return(b()>0?"-":"+")+Zo(Math.floor(Math.abs(b())/60)*100+Math.abs(b())%60,4)},p:function(){return(b()>0?"-":"+")+Zo(Math.floor(Math.abs(b())/60),2)+":"+Zo(Math.floor(Math.abs(b())%60),2)},S:function(){return["th","st","nd","rd"][a()%10>3?0:(a()%100-a()%10!=10)*a()%10]},W:function(){return S()},WW:function(){return Zo(S())},N:function(){return T()}};return t.replace(H8e,function(k){return k in E?E[k]():k.slice(1,k.length-1)})}var uI={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},bo={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]},Zo=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(t).padStart(n,"0")},cI=function(t){var n=t.y,r=t.m,i=t.d,o=t._,a=t.dayName,s=t.short,l=s===void 0?!1:s,c=new Date,p=new Date;p.setDate(p[o+"Date"]()-1);var g=new Date;g.setDate(g[o+"Date"]()+1);var m=function(){return c[o+"Date"]()},y=function(){return c[o+"Month"]()},b=function(){return c[o+"FullYear"]()},S=function(){return p[o+"Date"]()},T=function(){return p[o+"Month"]()},E=function(){return p[o+"FullYear"]()},k=function(){return g[o+"Date"]()},L=function(){return g[o+"Month"]()},I=function(){return g[o+"FullYear"]()};return b()===n&&y()===r&&m()===i?l?"Tdy":"Today":E()===n&&T()===r&&S()===i?l?"Ysd":"Yesterday":I()===n&&L()===r&&k()===i?l?"Tmw":"Tomorrow":a},U8e=function(t){var n=new Date(t.getFullYear(),t.getMonth(),t.getDate());n.setDate(n.getDate()-(n.getDay()+6)%7+3);var r=new Date(n.getFullYear(),0,4);r.setDate(r.getDate()-(r.getDay()+6)%7+3);var i=n.getTimezoneOffset()-r.getTimezoneOffset();n.setHours(n.getHours()-i);var o=(n-r)/(864e5*7);return 1+Math.floor(o)},G8e=function(t){var n=t.getDay();return n===0&&(n=7),n},j8e=function(t){return(String(t).match(W8e)||[""]).pop().replace(V8e,"").replace(/GMT\+0000/g,"UTC")};const q8e=e=>{const{dispatch:t,getState:n}=e;return{onConnect:()=>{try{t(zL(!0)),t(ES("Connected"));const r=n().gallery;r.categories.user.latest_mtime?t(WL("user")):t(r8("user")),r.categories.result.latest_mtime?t(WL("result")):t(r8("result"))}catch(r){console.error(r)}},onDisconnect:()=>{try{t(zL(!1)),t(ES("Disconnected")),t(Si({timestamp:wi(new Date,"isoDateTime"),message:"Disconnected from server",level:"warning"}))}catch(r){console.error(r)}},onGenerationResult:r=>{try{const{shouldLoopback:i,activeTab:o}=n().options,a={uuid:xg(),...r,category:"result"};if(t(uy({category:"result",image:a})),i)switch(Ex[o]){case"img2img":{t(ov(a));break}case"inpainting":{t(A4(a));break}}t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Image generated: ${r.url}`}))}catch(i){console.error(i)}},onIntermediateResult:r=>{try{t(n3e({uuid:xg(),...r})),r.isBase64||t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Intermediate image generated: ${r.url}`}))}catch(i){console.error(i)}},onPostprocessingResult:r=>{try{t(uy({category:"result",image:{uuid:xg(),...r,category:"result"}})),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Postprocessed: ${r.url}`}))}catch(i){console.error(i)}},onProgressUpdate:r=>{try{t(r0(!0)),t(b2e(r))}catch(i){console.error(i)}},onError:r=>{const{message:i,additionalData:o}=r;try{t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Server error: ${i}`,level:"error"})),t(t8()),t(QL())}catch(a){console.error(a)}},onGalleryImages:r=>{const{images:i,areMoreImagesAvailable:o,category:a}=r,s=i.map(l=>({uuid:xg(),...l}));t(t3e({images:s,areMoreImagesAvailable:o,category:a})),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Loaded ${i.length} images`}))},onProcessingCanceled:()=>{t(C2e());const{intermediateImage:r}=n().gallery;r&&(r.isBase64||(t(uy({category:"result",image:r})),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Intermediate image saved: ${r.url}`}))),t(QL())),t(Si({timestamp:wi(new Date,"isoDateTime"),message:"Processing canceled",level:"warning"}))},onImageDeleted:r=>{const{url:i}=r;t(WB(r));const{initialImage:o,maskPath:a}=n().options,{imageToInpaint:s}=n().inpainting;(o?.url===i||o===i)&&t(AH()),s?.url===i&&t(zB()),a===i&&t(M8("")),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Image deleted: ${i}`}))},onImageUploaded:r=>{const{destination:i,...o}=r,a={uuid:xg(),...o};try{switch(t(uy({image:a,category:"user"})),i){case"img2img":{t(ov(a));break}case"inpainting":{t(A4(a));break}default:{t(VB(a));break}}t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Image uploaded: ${r.url}`}))}catch(s){console.error(s)}},onMaskImageUploaded:r=>{const{url:i}=r;t(M8(i)),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Mask image uploaded: ${i}`}))},onSystemConfig:r=>{t(S2e(r))},onModelChanged:r=>{const{model_name:i,model_list:o}=r;t(FL(o)),t(ES("Model Changed")),t(r0(!1)),t(BL(!0)),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Model changed: ${i}`,level:"info"}))},onModelChangeFailed:r=>{const{model_name:i,model_list:o}=r;t(FL(o)),t(r0(!1)),t(BL(!0)),t(t8()),t(Si({timestamp:wi(new Date,"isoDateTime"),message:`Model change failed: ${i}`,level:"error"}))}}},K8e=(e,t)=>{const{width:n,height:r}=e,i=document.createElement("div"),o=new m3.Stage({container:i,width:n,height:r}),a=new m3.Layer;return o.add(a),t.forEach(s=>a.add(new m3.Line({points:s.points,stroke:"rgb(0,0,0)",strokeWidth:s.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,globalCompositeOperation:s.tool==="brush"?"source-over":"destination-out"}))),a.draw(),i.remove(),{stage:o,layer:a}},Z8e=(e,t)=>{const n=e.toCanvas().getContext("2d")?.getImageData(t.x,t.y,t.width,t.height);if(!n)throw new Error("Unable to get image data from generated canvas");return!new Uint32Array(n.data.buffer).some(i=>i!==0)},Y8e=(e,t,n)=>{const{stage:r,layer:i}=K8e(e,t),o=Z8e(r,n);return i.add(new m3.Image({image:e,globalCompositeOperation:"source-out"})),{maskDataURL:r.toDataURL({...n}),isMaskEmpty:o}},X8e=e=>{const{generationMode:t,optionsState:n,inpaintingState:r,systemState:i,imageToProcessUrl:o,maskImageElement:a}=e,{prompt:s,iterations:l,steps:c,cfgScale:p,threshold:g,perlin:m,height:y,width:b,sampler:S,seed:T,seamless:E,hiresFix:k,img2imgStrength:L,initialImage:I,shouldFitToWidthHeight:O,shouldGenerateVariations:D,variationAmount:N,seedWeights:z,shouldRunESRGAN:W,upscalingLevel:V,upscalingStrength:q,shouldRunFacetool:he,facetoolStrength:de,codeformerFidelity:ve,facetoolType:Ee,shouldRandomizeSeed:xe}=n,{shouldDisplayInProgressType:Z,saveIntermediatesInterval:U}=i,ee={prompt:s,iterations:xe||D?l:1,steps:c,cfg_scale:p,threshold:g,perlin:m,height:y,width:b,sampler_name:S,seed:T,progress_images:Z==="full-res",progress_latents:Z==="latents",save_intermediates:U};if(ee.seed=xe?pB(O7,N7):T,["txt2img","img2img"].includes(t)&&(ee.seamless=E,ee.hires_fix=k),t==="img2img"&&I&&(ee.init_img=typeof I=="string"?I:I.url,ee.strength=L,ee.fit=O),t==="inpainting"&&a){const{lines:me,boundingBoxCoordinate:ye,boundingBoxDimensions:Se,inpaintReplace:He,shouldUseInpaintReplace:je}=r,ut={...ye,...Se};ee.init_img=o,ee.strength=L,ee.fit=!1;const{maskDataURL:qe,isMaskEmpty:ot}=Y8e(a,me,ut);ee.is_mask_empty=ot,ee.init_mask=qe.split("data:image/png;base64,")[1],je&&(ee.inpaint_replace=He),ee.bounding_box=ut,ee.progress_images=!1}D?(ee.variation_amount=N,z&&(ee.with_variations=xve(z))):ee.variation_amount=0;let ae=!1,X=!1;return W&&(ae={level:V,strength:q}),he&&(X={type:Ee,strength:de},Ee==="codeformer"&&(X.codeformer_fidelity=ve)),{generationParameters:ee,esrganParameters:ae,facetoolParameters:X}},Q8e=(e,t)=>{const{dispatch:n,getState:r}=e;return{emitGenerateImage:i=>{n(r0(!0));const o=r(),{options:a,system:s,inpainting:l,gallery:c}=o,p={generationMode:i,optionsState:a,inpaintingState:l,systemState:s};if(i==="inpainting"){if(!F4.current||!l.imageToInpaint?.url){n(Si({timestamp:wi(new Date,"isoDateTime"),message:"Inpainting image not loaded, cannot generate image.",level:"error"})),n(t8());return}p.imageToProcessUrl=l.imageToInpaint.url,p.maskImageElement=F4.current}else if(!["txt2img","img2img"].includes(i)){if(!c.currentImage?.url)return;p.imageToProcessUrl=c.currentImage.url}const{generationParameters:g,esrganParameters:m,facetoolParameters:y}=X8e(p);t.emit("generateImage",g,m,y),g.init_mask&&(g.init_mask=g.init_mask.substr(0,20).concat("...")),n(Si({timestamp:wi(new Date,"isoDateTime"),message:`Image generation requested: ${JSON.stringify({...g,...m,...y})}`}))},emitRunESRGAN:i=>{n(r0(!0));const o=r().options,{upscalingLevel:a,upscalingStrength:s}=o,l={upscale:[a,s]};t.emit("runPostprocessing",i,{type:"esrgan",...l}),n(Si({timestamp:wi(new Date,"isoDateTime"),message:`ESRGAN upscale requested: ${JSON.stringify({file:i.url,...l})}`}))},emitRunFacetool:i=>{n(r0(!0));const o=r().options,{facetoolType:a,facetoolStrength:s,codeformerFidelity:l}=o,c={facetool_strength:s};a==="codeformer"&&(c.codeformer_fidelity=l),t.emit("runPostprocessing",i,{type:a,...c}),n(Si({timestamp:wi(new Date,"isoDateTime"),message:`Face restoration (${a}) requested: ${JSON.stringify({file:i.url,...c})}`}))},emitDeleteImage:i=>{const{url:o,uuid:a,category:s}=i;n(WB(i)),t.emit("deleteImage",o,a,s)},emitRequestImages:i=>{const o=r().gallery,{earliest_mtime:a}=o.categories[i];t.emit("requestImages",i,a)},emitRequestNewImages:i=>{const o=r().gallery,{latest_mtime:a}=o.categories[i];t.emit("requestLatestImages",i,a)},emitCancelProcessing:()=>{t.emit("cancel")},emitUploadImage:i=>{const{file:o,destination:a}=i;t.emit("uploadImage",o,o.name,a)},emitUploadMaskImage:i=>{t.emit("uploadMaskImage",i,i.name)},emitRequestSystemConfig:()=>{t.emit("requestSystemConfig")},emitRequestModelChange:i=>{n(_2e()),t.emit("requestModelChange",i)}}},J8e=()=>{const{origin:e}=new URL(window.location.href),t=w3(e,{timeout:6e4,path:window.location.pathname+"socket.io"});let n=!1;return i=>o=>a=>{const{onConnect:s,onDisconnect:l,onError:c,onPostprocessingResult:p,onGenerationResult:g,onIntermediateResult:m,onProgressUpdate:y,onGalleryImages:b,onProcessingCanceled:S,onImageDeleted:T,onImageUploaded:E,onMaskImageUploaded:k,onSystemConfig:L,onModelChanged:I,onModelChangeFailed:O}=q8e(i),{emitGenerateImage:D,emitRunESRGAN:N,emitRunFacetool:z,emitDeleteImage:W,emitRequestImages:V,emitRequestNewImages:q,emitCancelProcessing:he,emitUploadImage:de,emitUploadMaskImage:ve,emitRequestSystemConfig:Ee,emitRequestModelChange:xe}=Q8e(i,t);switch(n||(t.on("connect",()=>s()),t.on("disconnect",()=>l()),t.on("error",Z=>c(Z)),t.on("generationResult",Z=>g(Z)),t.on("postprocessingResult",Z=>p(Z)),t.on("intermediateResult",Z=>m(Z)),t.on("progressUpdate",Z=>y(Z)),t.on("galleryImages",Z=>b(Z)),t.on("processingCanceled",()=>{S()}),t.on("imageDeleted",Z=>{T(Z)}),t.on("imageUploaded",Z=>{E(Z)}),t.on("maskImageUploaded",Z=>{k(Z)}),t.on("systemConfig",Z=>{L(Z)}),t.on("modelChanged",Z=>{I(Z)}),t.on("modelChangeFailed",Z=>{O(Z)}),n=!0),a.type){case"socketio/generateImage":{D(a.payload);break}case"socketio/runESRGAN":{N(a.payload);break}case"socketio/runFacetool":{z(a.payload);break}case"socketio/deleteImage":{W(a.payload);break}case"socketio/requestImages":{V(a.payload);break}case"socketio/requestNewImages":{q(a.payload);break}case"socketio/cancelProcessing":{he();break}case"socketio/uploadImage":{de(a.payload);break}case"socketio/uploadMaskImage":{ve(a.payload);break}case"socketio/requestSystemConfig":{Ee();break}case"socketio/requestModelChange":{xe(a.payload);break}}o(a)}},e9e={key:"root",storage:Av,stateReconciler:cx,blacklist:["gallery","system","inpainting"]},t9e={key:"system",storage:Av,stateReconciler:cx,blacklist:["isCancelable","isConnected","isProcessing","currentStep","socketId","isESRGANAvailable","isGFPGANAvailable","currentStep","totalSteps","currentIteration","totalIterations","currentStatus"]},n9e={key:"gallery",storage:Av,stateReconciler:cx,whitelist:["galleryWidth","shouldPinGallery","shouldShowGallery","galleryScrollPosition","galleryImageMinimumWidth","galleryImageObjectFit"]},r9e={key:"inpainting",storage:Av,stateReconciler:cx,blacklist:["pastLines","futuresLines","cursorPosition"]},i9e=$F({options:Z6e,gallery:u3(n9e,l3e),system:u3(t9e,E2e),inpainting:u3(r9e,Kye)}),o9e=u3(e9e,i9e),jH=tme({reducer:o9e,middleware:e=>e({serializableCheck:!1}).concat(J8e())}),Xe=$me,Me=Lme;function C3(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?C3=function(n){return typeof n}:C3=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},C3(e)}function a9e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function dI(e,t){for(var n=0;n({textColor:e.colorMode==="dark"?"gray.800":"gray.100"})},Accordion:{baseStyle:e=>({button:{fontWeight:"bold",_hover:{bgColor:e.colorMode==="dark"?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.05)"}},panel:{paddingBottom:2}})},FormLabel:{baseStyle:{fontWeight:"light"}},Button:{variants:{imageHoverIconButton:e=>({bg:e.colorMode==="dark"?"blackAlpha.700":"whiteAlpha.800",color:e.colorMode==="dark"?"whiteAlpha.700":"blackAlpha.700",_hover:{bg:e.colorMode==="dark"?"blackAlpha.800":"whiteAlpha.800",color:e.colorMode==="dark"?"whiteAlpha.900":"blackAlpha.900"}})}}}}),c9e=()=>w(Dn,{width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",children:w(Cv,{thickness:"2px",speed:"1s",emptyColor:"gray.200",color:"gray.400",size:"xl"})}),d9e=St(e=>e.system,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),f9e=()=>{const{isProcessing:e,currentStep:t,totalSteps:n,currentStatusHasSteps:r}=Me(d9e),i=t?Math.round(t*100/n):0;return w(uF,{value:i,isIndeterminate:e&&!r,className:"progress-bar"})};function h9e(e){const{title:t,hotkey:n,description:r}=e;return ne("div",{className:"hotkey-modal-item",children:[ne("div",{className:"hotkey-info",children:[w("p",{className:"hotkey-title",children:t}),r&&w("p",{className:"hotkey-description",children:r})]}),w("div",{className:"hotkey-key",children:n})]})}function p9e({children:e}){const{isOpen:t,onOpen:n,onClose:r}=m4(),i=[{title:"Invoke",desc:"Generate an image",hotkey:"Ctrl+Enter"},{title:"Cancel",desc:"Cancel image generation",hotkey:"Shift+X"},{title:"Focus Prompt",desc:"Focus the prompt input area",hotkey:"Alt+A"},{title:"Toggle Options",desc:"Open and close the options panel",hotkey:"O"},{title:"Pin Options",desc:"Pin the options panel",hotkey:"Shift+O"},{title:"Toggle Gallery",desc:"Open and close the gallery drawer",hotkey:"G"},{title:"Change Tabs",desc:"Switch to another workspace",hotkey:"1-6"},{title:"Theme Toggle",desc:"Switch between dark and light modes",hotkey:"Shift+D"},{title:"Console Toggle",desc:"Open and close console",hotkey:"`"}],o=[{title:"Set Prompt",desc:"Use the prompt of the current image",hotkey:"P"},{title:"Set Seed",desc:"Use the seed of the current image",hotkey:"S"},{title:"Set Parameters",desc:"Use all parameters of the current image",hotkey:"A"},{title:"Restore Faces",desc:"Restore the current image",hotkey:"R"},{title:"Upscale",desc:"Upscale the current image",hotkey:"U"},{title:"Show Info",desc:"Show metadata info of the current image",hotkey:"I"},{title:"Send To Image To Image",desc:"Send current image to Image to Image",hotkey:"Shift+I"},{title:"Delete Image",desc:"Delete the current image",hotkey:"Del"},{title:"Close Panels",desc:"Closes open panels",hotkey:"Esc"}],a=[{title:"Previous Image",desc:"Display the previous image in gallery",hotkey:"Arrow left"},{title:"Next Image",desc:"Display the next image in gallery",hotkey:"Arrow right"},{title:"Toggle Gallery Pin",desc:"Pins and unpins the gallery to the UI",hotkey:"Shift+G"},{title:"Increase Gallery Image Size",desc:"Increases gallery thumbnails size",hotkey:"Shift+Up"},{title:"Decrease Gallery Image Size",desc:"Decreases gallery thumbnails size",hotkey:"Shift+Down"},{title:"Reset Gallery Image Size",desc:"Resets image gallery size",hotkey:"Shift+R"}],s=[{title:"Select Brush",desc:"Selects the inpainting brush",hotkey:"B"},{title:"Select Eraser",desc:"Selects the inpainting eraser",hotkey:"E"},{title:"Quick Toggle Brush/Eraser",desc:"Quick toggle between brush and eraser",hotkey:"X"},{title:"Decrease Brush Size",desc:"Decreases the size of the inpainting brush/eraser",hotkey:"["},{title:"Increase Brush Size",desc:"Increases the size of the inpainting brush/eraser",hotkey:"]"},{title:"Hide Mask",desc:"Hide and unhide mask",hotkey:"H"},{title:"Decrease Mask Opacity",desc:"Decreases the opacity of the mask",hotkey:"Shift+["},{title:"Increase Mask Opacity",desc:"Increases the opacity of the mask",hotkey:"Shift+]"},{title:"Invert Mask",desc:"Invert the mask preview",hotkey:"Shift+M"},{title:"Clear Mask",desc:"Clear the entire mask",hotkey:"Shift+C"},{title:"Undo Stroke",desc:"Undo a brush stroke",hotkey:"Ctrl+Z"},{title:"Redo Stroke",desc:"Redo a brush stroke",hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:"Lock Bounding Box",desc:"Locks the bounding box",hotkey:"Shift+Q"},{title:"Quick Toggle Lock Bounding Box",desc:"Hold to toggle locking the bounding box",hotkey:"Q"},{title:"Expand Inpainting Area",desc:"Expand your inpainting work area",hotkey:"Shift+J"}],l=c=>{const p=[];return c.forEach((g,m)=>{p.push(w(h9e,{title:g.title,description:g.desc,hotkey:g.hotkey},m))}),w("div",{className:"hotkey-modal-category",children:p})};return ne(Fn,{children:[C.exports.cloneElement(e,{onClick:n}),ne(S0,{isOpen:t,onClose:r,children:[w(Xm,{}),ne(Ym,{className:"hotkeys-modal",children:[w(a7,{}),w("h1",{children:"Keyboard Shorcuts"}),w("div",{className:"hotkeys-modal-items",children:ne(F5,{allowMultiple:!0,children:[ne(kf,{children:[ne(Cf,{className:"hotkeys-modal-button",children:[w("h2",{children:"App Hotkeys"}),w(_f,{})]}),w(Ef,{children:l(i)})]}),ne(kf,{children:[ne(Cf,{className:"hotkeys-modal-button",children:[w("h2",{children:"General Hotkeys"}),w(_f,{})]}),w(Ef,{children:l(o)})]}),ne(kf,{children:[ne(Cf,{className:"hotkeys-modal-button",children:[w("h2",{children:"Gallery Hotkeys"}),w(_f,{})]}),w(Ef,{children:l(a)})]}),ne(kf,{children:[ne(Cf,{className:"hotkeys-modal-button",children:[w("h2",{children:"Inpainting Hotkeys"}),w(_f,{})]}),w(Ef,{children:l(s)})]})]})})]})]})]})}const g9e=e=>{const{isProcessing:t,isConnected:n}=Me(l=>l.system),r=Xe(),{name:i,status:o,description:a}=e,s=()=>{r(wye(i))};return ne("div",{className:"model-list-item",children:[w($i,{label:a,hasArrow:!0,placement:"bottom",children:w("div",{className:"model-list-item-name",children:i})}),w(zD,{}),w("div",{className:`model-list-item-status ${o.split(" ").join("-")}`,children:o}),w("div",{className:"model-list-item-load-btn",children:w(Oa,{size:"sm",onClick:s,isDisabled:o==="active"||t||!n,children:"Load"})})]})},m9e=St(e=>e.system,e=>{const t=ht.map(e.model_list,(r,i)=>({name:i,...r})),n=t.find(r=>r.status==="active");return{models:t,activeModel:n}}),v9e=()=>{const{models:e}=Me(m9e);return w(F5,{allowToggle:!0,className:"model-list-accordion",variant:"unstyled",children:ne(kf,{children:[w(Cf,{children:ne("div",{className:"model-list-button",children:[w("h2",{children:"Models"}),w(_f,{})]})}),w(Ef,{children:w("div",{className:"model-list-list",children:e.map((t,n)=>w(g9e,{name:t.name,status:t.status,description:t.description},n))})})]})})},y9e=St(e=>e.system,e=>{const{shouldDisplayInProgressType:t,shouldConfirmOnDelete:n,shouldDisplayGuides:r,model_list:i}=e;return{shouldDisplayInProgressType:t,shouldConfirmOnDelete:n,shouldDisplayGuides:r,models:ht.map(i,(o,a)=>a)}},{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),x9e=({children:e})=>{const t=Xe(),n=Me(S=>S.system.saveIntermediatesInterval),r=Me(S=>S.options.steps),{isOpen:i,onOpen:o,onClose:a}=m4(),{isOpen:s,onOpen:l,onClose:c}=m4(),{shouldDisplayInProgressType:p,shouldConfirmOnDelete:g,shouldDisplayGuides:m}=Me(y9e),y=()=>{oW.purge().then(()=>{a(),l()})},b=S=>{S>r&&(S=r),S<1&&(S=1),t(k2e(S))};return ne(Fn,{children:[C.exports.cloneElement(e,{onClick:o}),ne(S0,{isOpen:i,onClose:a,children:[w(Xm,{}),ne(Ym,{className:"settings-modal",children:[w(l7,{className:"settings-modal-header",children:"Settings"}),w(a7,{}),ne(b4,{className:"settings-modal-content",children:[ne("div",{className:"settings-modal-items",children:[w("div",{className:"settings-modal-item",children:w(v9e,{})}),ne("div",{className:"settings-modal-item",style:{gridAutoFlow:"row",rowGap:"0.5rem"},children:[w(F0,{label:"Display In-Progress Images",validValues:jve,value:p,onChange:S=>t(y2e(S.target.value))}),p==="full-res"&&w(no,{label:"Save images every n steps",min:1,max:r,step:1,onChange:b,value:n,width:"auto",textAlign:"center"})]}),w(wl,{styleClass:"settings-modal-item",label:"Confirm on Delete",isChecked:g,onChange:S=>t(mB(S.target.checked))}),w(wl,{styleClass:"settings-modal-item",label:"Display Help Icons",isChecked:m,onChange:S=>t(w2e(S.target.checked))})]}),ne("div",{className:"settings-modal-reset",children:[w(Rf,{size:"md",children:"Reset Web UI"}),w(Oa,{colorScheme:"red",onClick:y,children:"Reset Web UI"}),w(wo,{children:"Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk."}),w(wo,{children:"If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub."})]})]}),w(s7,{children:w(Oa,{onClick:a,children:"Close"})})]})]}),ne(S0,{closeOnOverlayClick:!1,isOpen:s,onClose:c,isCentered:!0,children:[w(Xm,{bg:"blackAlpha.300",backdropFilter:"blur(40px)"}),w(Ym,{children:w(b4,{pb:6,pt:6,children:w(Dn,{justifyContent:"center",children:w(wo,{fontSize:"lg",children:"Web UI has been reset. Refresh the page to reload."})})})})]})]})},b9e=St(e=>e.system,e=>({isConnected:e.isConnected,isProcessing:e.isProcessing,currentIteration:e.currentIteration,totalIterations:e.totalIterations,currentStatus:e.currentStatus,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),S9e=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,currentStatus:i,hasError:o,wasErrorSeen:a}=Me(b9e),s=Xe();let l;e&&!o?l="status-good":l="status-bad";let c=i;return["generating","preparing","saving image","restoring faces","upscaling"].includes(c.toLowerCase())&&(l="status-working"),c&&t&&r>1&&(c+=` (${n}/${r})`),w($i,{label:o&&!a?"Click to clear, check logs for details":void 0,children:w(wo,{cursor:o&&!a?"pointer":"initial",onClick:()=>{(o||!a)&&s(vB())},className:`status ${l}`,children:c})})},w9e=()=>{const{colorMode:e,toggleColorMode:t}=o5();return _t("shift+d",()=>{t()},[e,t]),ne("div",{className:"site-header",children:[ne("div",{className:"site-header-left-side",children:[w("img",{src:BB,alt:"invoke-ai-logo"}),ne("h1",{children:["invoke ",w("strong",{children:"ai"})]})]}),ne("div",{className:"site-header-right-side",children:[w(S9e,{}),w(p9e,{children:w(Ut,{"aria-label":"Hotkeys",tooltip:"Hotkeys",size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:w(X2e,{})})}),w(Ut,{"aria-label":"Toggle Dark Mode",tooltip:"Dark Mode",onClick:t,variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:e==="light"?w(eye,{}):w(cye,{})}),w(Ut,{"aria-label":"Report Bug",tooltip:"Report Bug",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:w(Of,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI/issues",children:w(U2e,{})})}),w(Ut,{"aria-label":"Link to Github Repo",tooltip:"Github",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:w(Of,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI",children:w(B2e,{})})}),w(Ut,{"aria-label":"Link to Discord Server",tooltip:"Discord",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:w(Of,{isExternal:!0,href:"https://discord.gg/ZmtBAhwWhy",children:w(F2e,{})})}),w(x9e,{children:w(Ut,{"aria-label":"Settings",tooltip:"Settings",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:w(_B,{})})})]})]})},C9e=St(e=>e.system,e=>e.log,{memoizeOptions:{resultEqualityCheck:(e,t)=>e.length===t.length}}),_9e=St(e=>e.system,e=>({shouldShowLogViewer:e.shouldShowLogViewer,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:la.exports.isEqual}}),k9e=()=>{const e=Xe(),t=Me(C9e),{shouldShowLogViewer:n,hasError:r,wasErrorSeen:i}=Me(_9e),[o,a]=C.exports.useState(!0),s=C.exports.useRef(null);C.exports.useLayoutEffect(()=>{s.current!==null&&o&&(s.current.scrollTop=s.current.scrollHeight)},[o,t,n]);const l=()=>{e(vB()),e(kS(!n))};return _t("`",()=>{e(kS(!n))},[n]),_t("esc",()=>{e(kS(!1))}),ne(Fn,{children:[n&&w(KB,{defaultSize:{width:"100%",height:200},style:{display:"flex",position:"fixed",left:0,bottom:0,zIndex:9999},maxHeight:"90vh",children:w("div",{className:"console",ref:s,onScroll:()=>{!s.current||o&&s.current.scrollTop{const{timestamp:m,message:y,level:b}=p;return ne("div",{className:`console-entry console-${b}-color`,children:[ne("p",{className:"console-timestamp",children:[m,":"]}),w("p",{className:"console-message",children:y})]},g)})})}),n&&w($i,{hasArrow:!0,label:o?"Autoscroll On":"Autoscroll Off",children:w(gu,{className:"console-autoscroll-icon-button","data-autoscroll-enabled":o,size:"sm","aria-label":"Toggle autoscroll",variant:"solid",icon:w($2e,{}),onClick:()=>a(!o)})}),w($i,{hasArrow:!0,label:n?"Hide Console":"Show Console",children:w(gu,{className:"console-toggle-icon-button","data-error-seen":r||!i,size:"sm",position:"fixed",variant:"solid","aria-label":"Toggle Log Viewer",icon:n?w(J2e,{}):w(SB,{}),onClick:l})})]})};function E9e(){async function e(n=""){return await fetch(n,{method:"GET",cache:"no-cache"})}const t=()=>{const n=document.location;e(n+"/flaskwebgui-keep-server-alive").then(i=>i)};(!{BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0}.NODE_ENV||{BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0}.NODE_ENV==="production")&&document.addEventListener("DOMContentLoaded",()=>{t(),setInterval(t,3e3)})}var P9e=new Map([["aac","audio/aac"],["abw","application/x-abiword"],["arc","application/x-freearc"],["avif","image/avif"],["avi","video/x-msvideo"],["azw","application/vnd.amazon.ebook"],["bin","application/octet-stream"],["bmp","image/bmp"],["bz","application/x-bzip"],["bz2","application/x-bzip2"],["cda","application/x-cdf"],["csh","application/x-csh"],["css","text/css"],["csv","text/csv"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],["eot","application/vnd.ms-fontobject"],["epub","application/epub+zip"],["gz","application/gzip"],["gif","image/gif"],["heic","image/heic"],["heif","image/heif"],["htm","text/html"],["html","text/html"],["ico","image/vnd.microsoft.icon"],["ics","text/calendar"],["jar","application/java-archive"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["js","text/javascript"],["json","application/json"],["jsonld","application/ld+json"],["mid","audio/midi"],["midi","audio/midi"],["mjs","text/javascript"],["mp3","audio/mpeg"],["mp4","video/mp4"],["mpeg","video/mpeg"],["mpkg","application/vnd.apple.installer+xml"],["odp","application/vnd.oasis.opendocument.presentation"],["ods","application/vnd.oasis.opendocument.spreadsheet"],["odt","application/vnd.oasis.opendocument.text"],["oga","audio/ogg"],["ogv","video/ogg"],["ogx","application/ogg"],["opus","audio/opus"],["otf","font/otf"],["png","image/png"],["pdf","application/pdf"],["php","application/x-httpd-php"],["ppt","application/vnd.ms-powerpoint"],["pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"],["rar","application/vnd.rar"],["rtf","application/rtf"],["sh","application/x-sh"],["svg","image/svg+xml"],["swf","application/x-shockwave-flash"],["tar","application/x-tar"],["tif","image/tiff"],["tiff","image/tiff"],["ts","video/mp2t"],["ttf","font/ttf"],["txt","text/plain"],["vsd","application/vnd.visio"],["wav","audio/wav"],["weba","audio/webm"],["webm","video/webm"],["webp","image/webp"],["woff","font/woff"],["woff2","font/woff2"],["xhtml","application/xhtml+xml"],["xls","application/vnd.ms-excel"],["xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],["xml","application/xml"],["xul","application/vnd.mozilla.xul+xml"],["zip","application/zip"],["7z","application/x-7z-compressed"],["mkv","video/x-matroska"],["mov","video/quicktime"],["msg","application/vnd.ms-outlook"]]);function Nv(e,t){var n=T9e(e);if(typeof n.path!="string"){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:typeof t=="string"?t:typeof r=="string"&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}function T9e(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),i=P9e.get(r);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var L9e=[".DS_Store","Thumbs.db"];function A9e(e){return M0(this,void 0,void 0,function(){return R0(this,function(t){return B4(e)&&I9e(e.dataTransfer)?[2,N9e(e.dataTransfer,e.type)]:M9e(e)?[2,R9e(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,O9e(e)]:[2,[]]})})}function I9e(e){return B4(e)}function M9e(e){return B4(e)&&B4(e.target)}function B4(e){return typeof e=="object"&&e!==null}function R9e(e){return $8(e.target.files).map(function(t){return Nv(t)})}function O9e(e){return M0(this,void 0,void 0,function(){var t;return R0(this,function(n){switch(n.label){case 0:return[4,Promise.all(e.map(function(r){return r.getFile()}))];case 1:return t=n.sent(),[2,t.map(function(r){return Nv(r)})]}})})}function N9e(e,t){return M0(this,void 0,void 0,function(){var n,r;return R0(this,function(i){switch(i.label){case 0:return e.items?(n=$8(e.items).filter(function(o){return o.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(D9e))]):[3,2];case 1:return r=i.sent(),[2,hI(KH(r))];case 2:return[2,hI($8(e.files).map(function(o){return Nv(o)}))]}})})}function hI(e){return e.filter(function(t){return L9e.indexOf(t.name)===-1})}function $8(e){if(e===null)return[];for(var t=[],n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);nn)return[!1,yI(n)];if(e.sizen)return[!1,yI(n)]}return[!0,null]}function gf(e){return e!=null}function Q9e(e){var t=e.files,n=e.accept,r=e.minSize,i=e.maxSize,o=e.multiple,a=e.maxFiles,s=e.validator;return!o&&t.length>1||o&&a>=1&&t.length>a?!1:t.every(function(l){var c=QH(l,n),p=av(c,1),g=p[0],m=JH(l,r,i),y=av(m,1),b=y[0],S=s?s(l):null;return g&&b&&!S})}function $4(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Ry(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(t){return t==="Files"||t==="application/x-moz-file"}):!!e.target&&!!e.target.files}function bI(e){e.preventDefault()}function J9e(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function eCe(e){return e.indexOf("Edge/")!==-1}function tCe(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return J9e(e)||eCe(e)}function el(){for(var e=arguments.length,t=new Array(e),n=0;n1?i-1:0),a=1;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&(!Object.prototype.propertyIsEnumerable.call(e,r)||(n[r]=e[r]))}return n}function yCe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var x_=C.exports.forwardRef(function(e,t){var n=e.children,r=H4(e,sCe),i=iW(r),o=i.open,a=H4(i,lCe);return C.exports.useImperativeHandle(t,function(){return{open:o}},[o]),w(C.exports.Fragment,{children:n(sr(sr({},a),{},{open:o}))})});x_.displayName="Dropzone";var rW={disabled:!1,getFilesFromEvent:A9e,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};x_.defaultProps=rW;x_.propTypes={children:An.exports.func,accept:An.exports.objectOf(An.exports.arrayOf(An.exports.string)),multiple:An.exports.bool,preventDropOnDocument:An.exports.bool,noClick:An.exports.bool,noKeyboard:An.exports.bool,noDrag:An.exports.bool,noDragEventsBubbling:An.exports.bool,minSize:An.exports.number,maxSize:An.exports.number,maxFiles:An.exports.number,disabled:An.exports.bool,getFilesFromEvent:An.exports.func,onFileDialogCancel:An.exports.func,onFileDialogOpen:An.exports.func,useFsAccessApi:An.exports.bool,autoFocus:An.exports.bool,onDragEnter:An.exports.func,onDragLeave:An.exports.func,onDragOver:An.exports.func,onDrop:An.exports.func,onDropAccepted:An.exports.func,onDropRejected:An.exports.func,onError:An.exports.func,validator:An.exports.func};var U8={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function iW(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=sr(sr({},rW),e),n=t.accept,r=t.disabled,i=t.getFilesFromEvent,o=t.maxSize,a=t.minSize,s=t.multiple,l=t.maxFiles,c=t.onDragEnter,p=t.onDragLeave,g=t.onDragOver,m=t.onDrop,y=t.onDropAccepted,b=t.onDropRejected,S=t.onFileDialogCancel,T=t.onFileDialogOpen,E=t.useFsAccessApi,k=t.autoFocus,L=t.preventDropOnDocument,I=t.noClick,O=t.noKeyboard,D=t.noDrag,N=t.noDragEventsBubbling,z=t.onError,W=t.validator,V=C.exports.useMemo(function(){return iCe(n)},[n]),q=C.exports.useMemo(function(){return rCe(n)},[n]),he=C.exports.useMemo(function(){return typeof T=="function"?T:wI},[T]),de=C.exports.useMemo(function(){return typeof S=="function"?S:wI},[S]),ve=C.exports.useRef(null),Ee=C.exports.useRef(null),xe=C.exports.useReducer(xCe,U8),Z=qS(xe,2),U=Z[0],ee=Z[1],ae=U.isFocused,X=U.isFileDialogActive,me=C.exports.useRef(typeof window<"u"&&window.isSecureContext&&E&&nCe()),ye=function(){!me.current&&X&&setTimeout(function(){if(Ee.current){var Ze=Ee.current.files;Ze.length||(ee({type:"closeDialog"}),de())}},300)};C.exports.useEffect(function(){return window.addEventListener("focus",ye,!1),function(){window.removeEventListener("focus",ye,!1)}},[Ee,X,de,me]);var Se=C.exports.useRef([]),He=function(Ze){ve.current&&ve.current.contains(Ze.target)||(Ze.preventDefault(),Se.current=[])};C.exports.useEffect(function(){return L&&(document.addEventListener("dragover",bI,!1),document.addEventListener("drop",He,!1)),function(){L&&(document.removeEventListener("dragover",bI),document.removeEventListener("drop",He))}},[ve,L]),C.exports.useEffect(function(){return!r&&k&&ve.current&&ve.current.focus(),function(){}},[ve,k,r]);var je=C.exports.useCallback(function(Re){z?z(Re):console.error(Re)},[z]),ut=C.exports.useCallback(function(Re){Re.preventDefault(),Re.persist(),wt(Re),Se.current=[].concat(dCe(Se.current),[Re.target]),Ry(Re)&&Promise.resolve(i(Re)).then(function(Ze){if(!($4(Re)&&!N)){var Zt=Ze.length,Gt=Zt>0&&Q9e({files:Ze,accept:V,minSize:a,maxSize:o,multiple:s,maxFiles:l,validator:W}),_e=Zt>0&&!Gt;ee({isDragAccept:Gt,isDragReject:_e,isDragActive:!0,type:"setDraggedFiles"}),c&&c(Re)}}).catch(function(Ze){return je(Ze)})},[i,c,je,N,V,a,o,s,l,W]),qe=C.exports.useCallback(function(Re){Re.preventDefault(),Re.persist(),wt(Re);var Ze=Ry(Re);if(Ze&&Re.dataTransfer)try{Re.dataTransfer.dropEffect="copy"}catch{}return Ze&&g&&g(Re),!1},[g,N]),ot=C.exports.useCallback(function(Re){Re.preventDefault(),Re.persist(),wt(Re);var Ze=Se.current.filter(function(Gt){return ve.current&&ve.current.contains(Gt)}),Zt=Ze.indexOf(Re.target);Zt!==-1&&Ze.splice(Zt,1),Se.current=Ze,!(Ze.length>0)&&(ee({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Ry(Re)&&p&&p(Re))},[ve,p,N]),tt=C.exports.useCallback(function(Re,Ze){var Zt=[],Gt=[];Re.forEach(function(_e){var Tt=QH(_e,V),De=qS(Tt,2),nt=De[0],rn=De[1],Mn=JH(_e,a,o),Be=qS(Mn,2),ct=Be[0],Qe=Be[1],Mt=W?W(_e):null;if(nt&&ct&&!Mt)Zt.push(_e);else{var Yt=[rn,Qe];Mt&&(Yt=Yt.concat(Mt)),Gt.push({file:_e,errors:Yt.filter(function(Zn){return Zn})})}}),(!s&&Zt.length>1||s&&l>=1&&Zt.length>l)&&(Zt.forEach(function(_e){Gt.push({file:_e,errors:[X9e]})}),Zt.splice(0)),ee({acceptedFiles:Zt,fileRejections:Gt,type:"setFiles"}),m&&m(Zt,Gt,Ze),Gt.length>0&&b&&b(Gt,Ze),Zt.length>0&&y&&y(Zt,Ze)},[ee,s,V,a,o,l,m,y,b,W]),at=C.exports.useCallback(function(Re){Re.preventDefault(),Re.persist(),wt(Re),Se.current=[],Ry(Re)&&Promise.resolve(i(Re)).then(function(Ze){$4(Re)&&!N||tt(Ze,Re)}).catch(function(Ze){return je(Ze)}),ee({type:"reset"})},[i,tt,je,N]),Rt=C.exports.useCallback(function(){if(me.current){ee({type:"openDialog"}),he();var Re={multiple:s,types:q};window.showOpenFilePicker(Re).then(function(Ze){return i(Ze)}).then(function(Ze){tt(Ze,null),ee({type:"closeDialog"})}).catch(function(Ze){oCe(Ze)?(de(Ze),ee({type:"closeDialog"})):aCe(Ze)?(me.current=!1,Ee.current?(Ee.current.value=null,Ee.current.click()):je(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):je(Ze)});return}Ee.current&&(ee({type:"openDialog"}),he(),Ee.current.value=null,Ee.current.click())},[ee,he,de,E,tt,je,q,s]),kt=C.exports.useCallback(function(Re){!ve.current||!ve.current.isEqualNode(Re.target)||(Re.key===" "||Re.key==="Enter"||Re.keyCode===32||Re.keyCode===13)&&(Re.preventDefault(),Rt())},[ve,Rt]),Le=C.exports.useCallback(function(){ee({type:"focus"})},[]),st=C.exports.useCallback(function(){ee({type:"blur"})},[]),Lt=C.exports.useCallback(function(){I||(tCe()?setTimeout(Rt,0):Rt())},[I,Rt]),it=function(Ze){return r?null:Ze},mt=function(Ze){return O?null:it(Ze)},Sn=function(Ze){return D?null:it(Ze)},wt=function(Ze){N&&Ze.stopPropagation()},Kt=C.exports.useMemo(function(){return function(){var Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ze=Re.refKey,Zt=Ze===void 0?"ref":Ze,Gt=Re.role,_e=Re.onKeyDown,Tt=Re.onFocus,De=Re.onBlur,nt=Re.onClick,rn=Re.onDragEnter,Mn=Re.onDragOver,Be=Re.onDragLeave,ct=Re.onDrop,Qe=H4(Re,uCe);return sr(sr(V8({onKeyDown:mt(el(_e,kt)),onFocus:mt(el(Tt,Le)),onBlur:mt(el(De,st)),onClick:it(el(nt,Lt)),onDragEnter:Sn(el(rn,ut)),onDragOver:Sn(el(Mn,qe)),onDragLeave:Sn(el(Be,ot)),onDrop:Sn(el(ct,at)),role:typeof Gt=="string"&&Gt!==""?Gt:"presentation"},Zt,ve),!r&&!O?{tabIndex:0}:{}),Qe)}},[ve,kt,Le,st,Lt,ut,qe,ot,at,O,D,r]),wn=C.exports.useCallback(function(Re){Re.stopPropagation()},[]),pn=C.exports.useMemo(function(){return function(){var Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ze=Re.refKey,Zt=Ze===void 0?"ref":Ze,Gt=Re.onChange,_e=Re.onClick,Tt=H4(Re,cCe),De=V8({accept:V,multiple:s,type:"file",style:{display:"none"},onChange:it(el(Gt,at)),onClick:it(el(_e,wn)),tabIndex:-1},Zt,Ee);return sr(sr({},De),Tt)}},[Ee,n,s,at,r]);return sr(sr({},U),{},{isFocused:ae&&!r,getRootProps:Kt,getInputProps:pn,rootRef:ve,inputRef:Ee,open:it(Rt)})}function xCe(e,t){switch(t.type){case"focus":return sr(sr({},e),{},{isFocused:!0});case"blur":return sr(sr({},e),{},{isFocused:!1});case"openDialog":return sr(sr({},U8),{},{isFileDialogActive:!0});case"closeDialog":return sr(sr({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return sr(sr({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return sr(sr({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return sr({},U8);default:return e}}function wI(){}const bCe=e=>{const{isDragAccept:t,isDragReject:n,overlaySecondaryText:r,setIsHandlingUpload:i}=e;return _t("esc",()=>{i(!1)}),ne("div",{className:"dropzone-container",children:[t&&w("div",{className:"dropzone-overlay is-drag-accept",children:ne(Rf,{size:"lg",children:["Upload Image",r]})}),n&&ne("div",{className:"dropzone-overlay is-drag-reject",children:[w(Rf,{size:"lg",children:"Invalid Upload"}),w(Rf,{size:"md",children:"Must be single JPEG or PNG image"})]})]})},SCe=e=>{const{children:t}=e,n=Xe(),r=Me(Cr),i=ld({}),[o,a]=C.exports.useState(!1),s=C.exports.useCallback(E=>{a(!0);const k=E.errors.reduce((L,I)=>L+` -`+I.message,"");i({title:"Upload failed",description:k,status:"error",isClosable:!0})},[i]),l=C.exports.useCallback(E=>{a(!0);const k={file:E};["img2img","inpainting"].includes(r)&&(k.destination=r),n(VL(k))},[n,r]),c=C.exports.useCallback((E,k)=>{k.forEach(L=>{s(L)}),E.forEach(L=>{l(L)})},[l,s]),{getRootProps:p,getInputProps:g,isDragAccept:m,isDragReject:y,isDragActive:b,open:S}=iW({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:c,onDragOver:()=>a(!0),maxFiles:1});C.exports.useEffect(()=>{const E=k=>{const L=k.clipboardData?.items;if(!L)return;const I=[];for(const N of L)N.kind==="file"&&["image/png","image/jpg"].includes(N.type)&&I.push(N);if(!I.length)return;if(k.stopImmediatePropagation(),I.length>1){i({description:"Multiple images pasted, may only upload one image at a time",status:"error",isClosable:!0});return}const O=I[0].getAsFile();if(!O){i({description:"Unable to load file",status:"error",isClosable:!0});return}const D={file:O};["img2img","inpainting"].includes(r)&&(D.destination=r),n(VL(D))};return document.addEventListener("paste",E),()=>{document.removeEventListener("paste",E)}},[n,i,r]);const T=["img2img","inpainting"].includes(r)?` to ${pf[r].tooltip}`:"";return w(Y7.Provider,{value:S,children:ne("div",{...p({style:{}}),children:[w("input",{...g()}),t,b&&o&&w(bCe,{isDragAccept:m,isDragReject:y,overlaySecondaryText:T,setIsHandlingUpload:a})]})})},wCe=()=>{const e=Xe();return w(Ut,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":"Show Gallery",styleClass:"floating-show-hide-button right",onMouseOver:()=>{e(f3(!0))},children:w(bB,{})})};function CCe(e){return ft({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M32 384h272v32H32zM400 384h80v32h-80zM384 447.5c0 17.949-14.327 32.5-32 32.5-17.673 0-32-14.551-32-32.5v-95c0-17.949 14.327-32.5 32-32.5 17.673 0 32 14.551 32 32.5v95z"}},{tag:"g",attr:{},child:[{tag:"path",attr:{d:"M32 240h80v32H32zM208 240h272v32H208zM192 303.5c0 17.949-14.327 32.5-32 32.5-17.673 0-32-14.551-32-32.5v-95c0-17.949 14.327-32.5 32-32.5 17.673 0 32 14.551 32 32.5v95z"}}]},{tag:"g",attr:{},child:[{tag:"path",attr:{d:"M32 96h272v32H32zM400 96h80v32h-80zM384 159.5c0 17.949-14.327 32.5-32 32.5-17.673 0-32-14.551-32-32.5v-95c0-17.949 14.327-32.5 32-32.5 17.673 0 32 14.551 32 32.5v95z"}}]}]})(e)}const _Ce=St(e=>e.options,e=>{const{shouldPinOptionsPanel:t,shouldShowOptionsPanel:n}=e;return{shouldShowProcessButtons:!t||!n}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),kCe=()=>{const e=Xe(),{shouldShowProcessButtons:t}=Me(_Ce);return ne("div",{className:"show-hide-button-options",children:[w(Ut,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":"Show Options Panel",onClick:()=>{e(x3(!0))},children:w(CCe,{})}),t&&ne(Fn,{children:[w(EB,{iconButton:!0}),w(TB,{}),w(PB,{})]})]})};E9e();const ECe=St([e=>e.gallery,e=>e.options,e=>e.system,Cr],(e,t,n,r)=>{const{shouldShowGallery:i,shouldHoldGalleryOpen:o,shouldPinGallery:a}=e,{shouldShowOptionsPanel:s,shouldHoldOptionsPanelOpen:l,shouldPinOptionsPanel:c}=t,p=ht.reduce(n.model_list,(y,b,S)=>(b.status==="active"&&(y=S),y),""),g=!(i||o&&!a),m=!(s||l&&!c)&&["txt2img","img2img","inpainting"].includes(r);return{modelStatusText:p,shouldShowGalleryButton:g,shouldShowOptionsPanelButton:m}},{memoizeOptions:{resultEqualityCheck:ht.isEqual}}),PCe=()=>{const e=Xe(),{shouldShowGalleryButton:t,shouldShowOptionsPanelButton:n}=Me(ECe);return C.exports.useEffect(()=>{e(Sye())},[e]),w("div",{className:"App",children:ne(SCe,{children:[w(f9e,{}),ne("div",{className:"app-content",children:[w(w9e,{}),w(A6e,{})]}),w("div",{className:"app-console",children:w(k9e,{})}),t&&w(wCe,{}),n&&w(kCe,{})]})})};const oW=lve(jH);ZS.createRoot(document.getElementById("root")).render(w(re.StrictMode,{children:w(zme,{store:jH,children:w(qH,{loading:w(c9e,{}),persistor:oW,children:ne(Cge,{theme:fI,children:[w(cZ,{initialColorMode:fI.config.initialColorMode}),w(PCe,{})]})})})})); diff --git a/frontend/dist/assets/index.c609c0c8.css b/frontend/dist/assets/index.c609c0c8.css new file mode 100644 index 0000000000..2cae48b302 --- /dev/null +++ b/frontend/dist/assets/index.c609c0c8.css @@ -0,0 +1 @@ +@font-face{font-family:Inter;src:url(./Inter.b9a8e5e2.ttf);font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:url(./Inter-Bold.790c108b.ttf);font-display:swap;font-weight:600;font-style:normal}@keyframes slideOut{0%{transform:translate(10rem)}to{transform:translate(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}[data-theme=dark]{--white: rgb(255, 255, 255);--accent-color-dim: rgb(57, 25, 153);--accent-color: rgb(80, 40, 200);--accent-color-bright: rgb(104, 60, 230);--accent-color-hover: var(--accent-color-bright);--root-bg-color: rgb(10, 10, 10);--background-color: rgb(26, 26, 32);--background-color-light: rgb(40, 44, 48);--background-color-secondary: rgb(16, 16, 22);--text-color: rgb(255, 255, 255);--text-color-secondary: rgb(160, 162, 188);--subtext-color: rgb(24, 24, 34);--subtext-color-bright: rgb(48, 48, 64);--border-color: rgb(30, 30, 46);--border-color-light: rgb(60, 60, 76);--svg-color: rgb(255, 255, 255);--invalid: rgb(255, 75, 75);--invalid-secondary: rgb(120, 5, 5);--destructive-color: rgb(185, 55, 55);--destructive-color-hover: rgb(255, 75, 75);--warning-color: rgb(200, 88, 40);--warning-color-hover: rgb(230, 117, 60);--border-color-invalid: rgb(255, 80, 50);--box-shadow-color-invalid: rgb(210, 30, 10);--tab-color: rgb(30, 32, 42);--tab-hover-color: rgb(46, 48, 58);--tab-panel-bg: rgb(36, 38, 48);--tab-list-bg: var(--accent-color);--tab-list-text: rgb(202, 204, 216);--tab-list-text-inactive: rgb(92, 94, 114);--btn-base-color: rgb(30, 32, 42);--btn-base-color-hover: rgb(46, 48, 68);--btn-load-more: rgb(30, 32, 42);--btn-load-more-hover: rgb(54, 56, 66);--btn-svg-color: rgb(255, 255, 255);--btn-delete-image: rgb(182, 46, 46);--btn-checkbox-border-hover: rgb(46, 48, 68);--progress-bar-color: var(--accent-color);--prompt-bg-color: rgb(10, 10, 10);--switch-bg-color: rgb(100, 102, 110);--switch-bg-active-color: var(--accent-color);--slider-color: var(--accent-color-bright);--slider-color: rgb(151, 113, 255);--resizeable-handle-border-color: var(--accent-color);--metadata-bg-color: rgba(0, 0, 0, .7);--metadata-json-bg-color: rgba(255, 255, 255, .1);--status-good-color: rgb(125, 255, 100);--status-good-glow: rgb(40, 215, 40);--status-working-color: rgb(255, 175, 55);--status-working-glow: rgb(255, 160, 55);--status-bad-color: rgb(255, 90, 90);--status-bad-glow: rgb(255, 40, 40);--settings-modal-bg: rgb(30, 32, 42);--input-checkbox-bg: rgb(60, 64, 68);--input-checkbox-checked-bg: var(--accent-color);--input-checkbox-checked-tick: rgb(0, 0, 0);--input-border-color: var(--accent-color-bright);--input-box-shadow-color: var(--accent-color);--error-level-info: rgb(200, 202, 224);--error-level-warning: rgb(255, 225, 105);--error-level-error: rgb(255, 81, 46);--console-bg-color: rgb(30, 30, 36);--console-icon-button-bg-color: rgb(50, 53, 64);--console-icon-button-bg-color-hover: rgb(70, 73, 84);--img2img-img-bg-color: rgb(30, 32, 42);--context-menu-bg-color: rgb(46, 48, 58);--context-menu-box-shadow: none;--context-menu-bg-color-hover: rgb(30, 32, 42);--floating-button-drop-shadow-color: var(--accent-color);--inpainting-alerts-bg: rgba(20, 20, 26, .75);--inpainting-alerts-icon-color: rgb(255, 255, 255);--inpainting-alerts-bg-active: var(--accent-color);--inpainting-alerts-icon-active: rgb(255, 255, 255);--inpainting-alerts-bg-alert: var(--invalid);--inpainting-alerts-icon-alert: rgb(255, 255, 255);--checkboard-dots-color: rgb(35, 35, 39)}[data-theme=light]{--white: rgb(255, 255, 255);--accent-color-dim: rgb(186, 146, 0);--accent-color: rgb(235, 185, 5);--accent-color-bright: rgb(255, 200, 0);--accent-color-hover: var(--accent-color-bright);--root-bg-color: rgb(255, 255, 255);--background-color: rgb(220, 222, 224);--background-color-light: rgb(250, 252, 254);--background-color-secondary: rgb(208, 210, 212);--text-color: rgb(0, 0, 0);--text-color-secondary: rgb(40, 40, 40);--subtext-color: rgb(24, 24, 34);--subtext-color-bright: rgb(142, 144, 146);--border-color: rgb(200, 200, 200);--border-color-light: rgb(147, 147, 147);--svg-color: rgb(50, 50, 50);--invalid: rgb(255, 75, 75);--invalid-secondary: rgb(120, 5, 5);--destructive-color: rgb(237, 51, 51);--destructive-color-hover: rgb(255, 55, 55);--warning-color: rgb(224, 142, 42);--warning-color-hover: rgb(255, 167, 60);--border-color-invalid: rgb(255, 80, 50);--box-shadow-color-invalid: none;--tab-color: rgb(202, 204, 206);--tab-hover-color: rgb(196, 198, 200);--tab-panel-bg: rgb(206, 208, 210);--tab-list-bg: rgb(235, 185, 5);--tab-list-text: rgb(0, 0, 0);--tab-list-text-inactive: rgb(106, 108, 110);--btn-base-color: rgb(184, 186, 188);--btn-base-color-hover: rgb(230, 232, 234);--btn-load-more: rgb(202, 204, 206);--btn-load-more-hover: rgb(178, 180, 182);--btn-svg-color: rgb(0, 0, 0);--btn-delete-image: rgb(213, 49, 49);--btn-checkbox-border-hover: rgb(176, 178, 182);--progress-bar-color: rgb(235, 185, 5);--prompt-bg-color: rgb(225, 227, 229);--switch-bg-color: rgb(178, 180, 182);--switch-bg-active-color: rgb(235, 185, 5);--slider-color: rgb(0, 0, 0);--resizeable-handle-border-color: rgb(160, 162, 164);--metadata-bg-color: rgba(230, 230, 230, .9);--metadata-json-bg-color: rgba(0, 0, 0, .1);--status-good-color: rgb(21, 126, 0);--status-good-glow: var(--background-color);--status-working-color: rgb(235, 141, 0);--status-working-glow: var(--background-color);--status-bad-color: rgb(202, 0, 0);--status-bad-glow: var(--background-color);--settings-modal-bg: rgb(202, 204, 206);--input-checkbox-bg: rgb(167, 167, 171);--input-checkbox-checked-bg: rgb(235, 185, 5);--input-checkbox-checked-tick: rgb(0, 0, 0);--input-border-color: rgb(0, 0, 0);--input-box-shadow-color: none;--error-level-info: rgb(42, 42, 42);--error-level-warning: rgb(173, 121, 0);--error-level-error: rgb(145, 14, 0);--console-bg-color: rgb(220, 224, 230);--console-icon-button-bg-color: var(--switch-bg-color);--console-icon-button-bg-color-hover: var(--resizeable-handle-border-color);--img2img-img-bg-color: rgb(180, 182, 184);--context-menu-bg-color: var(--background-color);--context-menu-box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, .35), 0px 10px 20px -15px rgba(22, 23, 24, .2);--context-menu-bg-color-hover: var(--background-color-secondary);--floating-button-drop-shadow-color: rgba(0, 0, 0, .7);--inpainting-alerts-bg: rgba(220, 222, 224, .75);--inpainting-alerts-icon-color: rgb(0, 0, 0);--inpainting-alerts-bg-active: rgb(255, 200, 0);--inpainting-alerts-icon-active: rgb(0, 0, 0);--inpainting-alerts-bg-alert: var(--invalid);--inpainting-alerts-icon-alert: rgb(0, 0, 0);--checkboard-dots-color: rgb(160, 160, 172)}[data-theme=green]{--white: rgb(255, 255, 255);--accent-color-dim: rgb(10, 60, 40);--accent-color: rgb(20, 110, 70);--accent-color-bright: rgb(30, 180, 100);--accent-color-hover: var(--accent-color-bright);--root-bg-color: rgb(10, 10, 14);--background-color: rgb(30, 32, 37);--background-color-light: rgb(40, 44, 48);--background-color-secondary: rgb(22, 24, 28);--text-color: rgb(255, 255, 255);--text-color-secondary: rgb(160, 164, 168);--subtext-color: rgb(24, 24, 28);--subtext-color-bright: rgb(68, 72, 76);--border-color: rgb(40, 44, 48);--border-color-light: rgb(60, 60, 64);--svg-color: rgb(220, 224, 228);--invalid: rgb(255, 75, 75);--invalid-secondary: rgb(120, 5, 5);--destructive-color: rgb(185, 55, 55);--destructive-color-hover: rgb(255, 75, 75);--warning-color: rgb(200, 88, 40);--warning-color-hover: rgb(230, 117, 60);--border-color-invalid: rgb(255, 80, 50);--box-shadow-color-invalid: rgb(210, 30, 10);--tab-color: rgb(40, 44, 48);--tab-hover-color: rgb(48, 52, 56);--tab-panel-bg: rgb(36, 40, 44);--tab-list-bg: var(--accent-color);--tab-list-text: rgb(202, 204, 206);--tab-list-text-inactive: rgb(92, 94, 96);--btn-base-color: rgb(40, 44, 48);--btn-base-color-hover: rgb(56, 60, 64);--btn-load-more: rgb(30, 32, 42);--btn-load-more-hover: rgb(54, 56, 66);--btn-svg-color: rgb(255, 255, 255);--btn-delete-image: rgb(182, 46, 46);--btn-checkbox-border-hover: rgb(46, 48, 68);--progress-bar-color: var(--accent-color);--prompt-bg-color: rgb(10, 10, 14);--switch-bg-color: rgb(100, 102, 110);--switch-bg-active-color: var(--accent-color);--slider-color: var(--accent-color-bright);--resizeable-handle-border-color: var(--accent-color);--metadata-bg-color: rgba(0, 0, 0, .7);--metadata-json-bg-color: rgba(255, 255, 255, .1);--status-good-color: rgb(125, 255, 100);--status-good-glow: rgb(40, 215, 40);--status-working-color: rgb(255, 175, 55);--status-working-glow: rgb(255, 160, 55);--status-bad-color: rgb(255, 90, 90);--status-bad-glow: rgb(255, 40, 40);--settings-modal-bg: rgb(30, 32, 42);--input-checkbox-bg: rgb(60, 64, 68);--input-checkbox-checked-bg: var(--accent-color);--input-checkbox-checked-tick: rgb(0, 0, 0);--input-border-color: var(--accent-color-bright);--input-box-shadow-color: var(--accent-color);--error-level-info: rgb(200, 202, 224);--error-level-warning: rgb(255, 225, 105);--error-level-error: rgb(255, 81, 46);--console-bg-color: rgb(30, 30, 36);--console-icon-button-bg-color: rgb(50, 53, 64);--console-icon-button-bg-color-hover: rgb(70, 73, 84);--img2img-img-bg-color: rgb(30, 32, 42);--context-menu-bg-color: rgb(46, 48, 58);--context-menu-box-shadow: none;--context-menu-bg-color-hover: rgb(30, 32, 42);--floating-button-drop-shadow-color: var(--accent-color);--inpainting-alerts-bg: rgba(20, 20, 26, .75);--inpainting-alerts-icon-color: rgb(255, 255, 255);--inpainting-alerts-bg-active: var(--accent-color);--inpainting-alerts-icon-active: rgb(255, 255, 255);--inpainting-alerts-bg-alert: var(--invalid);--inpainting-alerts-icon-alert: rgb(255, 255, 255);--checkboard-dots-color: rgb(35, 35, 39)}svg{fill:var(--svg-color)}.App{display:grid;width:100vw;height:100vh;background-color:var(--background-color)}.app-content{display:grid;row-gap:1rem;padding:1rem;grid-auto-rows:min-content auto;width:calc(100vw + -0px);height:calc(100vh - .3rem)}.site-header{display:grid;grid-template-columns:auto max-content}.site-header-left-side{display:flex;align-items:center;column-gap:.7rem;padding-left:.5rem}.site-header-left-side img{width:32px;height:32px}.site-header-left-side h1{font-size:1.4rem}.site-header-right-side{display:flex;align-items:center;column-gap:.5rem}.status{font-size:.8rem;font-weight:700}.status-good{color:var(--status-good-color);text-shadow:0 0 10px var(--status-good-glow)}.status-bad{color:var(--status-bad-color);text-shadow:0 0 10px var(--status-bad-glow)}.status-working{color:var(--status-working-color);text-shadow:0 0 10px var(--status-working-glow)}.settings-modal{max-height:36rem;font-family:Inter}.settings-modal .settings-modal-content{display:grid;row-gap:2rem;overflow-y:scroll}.settings-modal .settings-modal-header{font-weight:700}.settings-modal .settings-modal-items{display:grid;row-gap:.5rem}.settings-modal .settings-modal-items .settings-modal-item{display:grid;grid-auto-flow:column;background-color:var(--background-color);padding:.4rem 1rem;border-radius:.5rem;align-items:center;width:100%}.settings-modal .settings-modal-reset{display:grid;row-gap:1rem}.settings-modal .settings-modal-reset button{min-width:100%;min-height:100%;background-color:var(--destructive-color)!important}.settings-modal .settings-modal-reset button:hover{background-color:var(--destructive-color-hover)}.settings-modal .settings-modal-reset button:disabled{background-color:var(--btn-base-color)}.settings-modal .settings-modal-reset button:disabled:hover{background-color:var(--btn-base-color)}.settings-modal .settings-modal-reset button svg{width:20px;height:20px;color:var(--btn-svg-color)}.model-list-accordion{outline:none;padding:.25rem}.model-list-accordion button{padding:0;margin:0}.model-list-accordion button:hover{background-color:unset}.model-list-accordion div{border:none}.model-list-accordion .model-list-button{display:flex;flex-direction:row;row-gap:.5rem;justify-content:space-between;align-items:center;width:100%}.model-list-accordion .model-list-header-hint{color:var(--text-color-secondary);font-weight:400}.model-list-accordion .model-list-list{display:flex;flex-direction:column;row-gap:.5rem}.model-list-accordion .model-list-list .model-list-item{display:flex;column-gap:.5rem;width:100%;justify-content:space-between;align-items:center}.model-list-accordion .model-list-list .model-list-item .model-list-item-description{font-size:.9rem}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.active{color:var(--status-good-color)}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.cached{color:var(--status-working-color)}.model-list-accordion .model-list-list .model-list-item .model-list-item-status.not-loaded{color:var(--text-color-secondary)}.model-list-accordion .model-list-list .model-list-item .model-list-item-load-btn button{padding:.5rem;background-color:var(--btn-base-color);color:var(--text-color);border-radius:.2rem}.model-list-accordion .model-list-list .model-list-item .model-list-item-load-btn button:hover{background-color:var(--btn-base-color-hover)}.hotkeys-modal{width:36rem;max-width:36rem;display:grid;padding:1rem;row-gap:1rem;font-family:Inter}.hotkeys-modal h1{font-size:1.2rem;font-weight:700}.hotkeys-modal h2{font-weight:700}.hotkeys-modal-button{display:flex;align-items:center;justify-content:space-between}.hotkeys-modal-items{max-height:36rem;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.hotkeys-modal-items::-webkit-scrollbar{display:none}.hotkeys-modal-items .chakra-accordion{display:grid;row-gap:.5rem}.hotkeys-modal-items .chakra-accordion__item{border:none;border-radius:.3rem;background-color:var(--tab-hover-color)}.hotkeys-modal-items button{border-radius:.3rem}.hotkeys-modal-items button[aria-expanded=true]{background-color:var(--tab-hover-color);border-radius:.3rem}.hotkey-modal-category{display:grid;row-gap:.5rem}.hotkey-modal-item{display:grid;grid-template-columns:auto max-content;justify-content:space-between;align-items:center;background-color:var(--background-color);padding:.5rem 1rem;border-radius:.3rem}.hotkey-modal-item .hotkey-info{display:grid}.hotkey-modal-item .hotkey-info .hotkey-title{font-weight:700}.hotkey-modal-item .hotkey-info .hotkey-description{font-size:.9rem;color:var(--text-color-secondary)}.hotkey-modal-item .hotkey-key{font-size:.8rem;font-weight:700;background-color:var(--background-color-light);padding:.2rem .5rem;border-radius:.3rem}.console{width:100vw;display:flex;flex-direction:column;background:var(--console-bg-color);overflow:auto;direction:column;font-family:monospace;padding:0 1rem 1rem 3rem;border-top-width:.3rem;border-color:var(--resizeable-handle-border-color)}.console .console-info-color{color:var(--error-level-info)}.console .console-warning-color{color:var(--error-level-warning)}.console .console-error-color{color:var(--status-bad-color)}.console .console-entry{display:flex;column-gap:.5rem}.console .console-entry .console-timestamp{font-weight:semibold}.console .console-entry .console-message{word-break:break-all}.console-toggle-icon-button{background:var(--console-icon-button-bg-color);position:fixed;left:.5rem;bottom:.5rem;z-index:10000}.console-toggle-icon-button:hover{background:var(--console-icon-button-bg-color-hover)}.console-toggle-icon-button[data-error-seen=true],.console-toggle-icon-button[data-error-seen=true]:hover{background:var(--status-bad-color)}.console-autoscroll-icon-button{background:var(--console-icon-button-bg-color);position:fixed;left:.5rem;bottom:3rem;z-index:10000}.console-autoscroll-icon-button:hover{background:var(--console-icon-button-bg-color-hover)}.console-autoscroll-icon-button[data-autoscroll-enabled=true]{background:var(--accent-color)}.console-autoscroll-icon-button[data-autoscroll-enabled=true]:hover{background:var(--accent-color-hover)}.prompt-bar{display:grid;row-gap:1rem}.prompt-bar input,.prompt-bar textarea{background-color:var(--prompt-bg-color);font-size:1rem;border:2px solid var(--border-color)}.prompt-bar input:hover,.prompt-bar textarea:hover{border:2px solid var(--border-color-light)}.prompt-bar input:focus-visible,.prompt-bar textarea:focus-visible{border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.prompt-bar input[aria-invalid=true],.prompt-bar textarea[aria-invalid=true]{border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.prompt-bar input:disabled,.prompt-bar textarea:disabled{border:2px solid var(--border-color);box-shadow:none}.prompt-bar textarea{min-height:10rem}.process-buttons{display:flex;column-gap:.5rem}.invoke-btn{flex-grow:1;width:100%;min-width:100%;min-height:100%;background-color:var(--accent-color)!important}.invoke-btn:hover{background-color:var(--accent-color-hover)}.invoke-btn:disabled{background-color:var(--btn-base-color)}.invoke-btn:disabled:hover{background-color:var(--btn-base-color)}.invoke-btn svg{width:16px;height:16px;color:var(--btn-svg-color)}.cancel-btn{min-width:3rem;min-height:100%;background-color:var(--destructive-color)!important}.cancel-btn:hover{background-color:var(--destructive-color-hover)}.cancel-btn:disabled{background-color:var(--btn-base-color)}.cancel-btn:disabled:hover{background-color:var(--btn-base-color)}.cancel-btn svg{width:20px;height:20px;color:var(--btn-svg-color)}.loopback-btn[data-as-checkbox=true]{background-color:var(--btn-btn-base-color);border:3px solid var(--btn-btn-base-color)}.loopback-btn[data-as-checkbox=true] svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true]:hover{background-color:var(--btn-btn-base-color);border-color:var(--btn-checkbox-border-hover)}.loopback-btn[data-as-checkbox=true]:hover svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true][data-selected=true]{border-color:var(--accent-color);background-color:var(--btn-btn-base-color)}.loopback-btn[data-as-checkbox=true][data-selected=true] svg{fill:var(--text-color)}.loopback-btn[data-as-checkbox=true][data-selected=true]:hover{border-color:var(--accent-color);background-color:var(--btn-btn-base-color)}.loopback-btn[data-as-checkbox=true][data-selected=true]:hover svg{fill:var(--text-color)}.main-options,.main-options-list{display:grid;row-gap:1rem}.main-options-row{display:grid;grid-template-columns:repeat(3,auto);column-gap:.5rem;max-width:22.5rem}.main-option-block{border-radius:.5rem;display:grid!important;grid-template-columns:auto!important;row-gap:.5rem}.main-option-block .invokeai__number-input-form-label,.main-option-block .invokeai__select-label{font-weight:700;font-size:.9rem!important}.main-option-block .invokeai__select-label{margin:0}.advanced-options-checkbox{background-color:var(--background-color-secondary);padding:.5rem 1rem;border-radius:.4rem;font-weight:700}.advanced-settings{padding-top:.5rem;display:grid;row-gap:.5rem}.advanced-settings-item{display:grid;max-width:22.5rem;border:none;border-top:0px;border-radius:.4rem;background-color:var(--tab-panel-bg)}.advanced-settings-item[aria-expanded=true]{background-color:var(--tab-hover-color);border-radius:0 0 .4rem .4rem}.advanced-settings-panel{background-color:var(--tab-panel-bg);border-radius:0 0 .4rem .4rem;padding:1rem}.advanced-settings-panel button{background-color:var(--btn-base-color)}.advanced-settings-panel button:hover{background-color:var(--btn-base-color-hover)}.advanced-settings-panel button:disabled:hover{background-color:var(--btn-base-color)}.advanced-settings-header{border-radius:.4rem;font-weight:700}.advanced-settings-header[aria-expanded=true]{background-color:var(--tab-hover-color);border-radius:.4rem .4rem 0 0}.advanced-settings-header:hover{background-color:var(--tab-hover-color)}.upscale-options{display:grid;grid-template-columns:auto 1fr;column-gap:1rem}.inpainting-bounding-box-settings{display:flex;flex-direction:column;border-radius:.4rem;border:2px solid var(--tab-color)}.inpainting-bounding-box-header{background-color:var(--tab-color);display:flex;flex-direction:row;justify-content:space-between;padding:.5rem 1rem;border-radius:.3rem .3rem 0 0;align-items:center}.inpainting-bounding-box-header button{width:.5rem;height:1.2rem;background:none}.inpainting-bounding-box-header button:hover{background:none}.inpainting-bounding-box-settings-items{padding:1rem;display:flex;flex-direction:column;row-gap:1rem}.inpainting-bounding-box-settings-items .inpainting-bounding-box-reset-icon-btn{background-color:var(--btn-base-color)}.inpainting-bounding-box-settings-items .inpainting-bounding-box-reset-icon-btn:hover{background-color:var(--btn-base-color-hover)}.inpainting-bounding-box-dimensions-slider-numberinput{display:grid;grid-template-columns:repeat(3,auto);column-gap:1rem}.inpainting-bounding-box-darken{width:max-content}.progress-bar{background-color:var(--root-bg-color);height:.3rem;z-index:99}.progress-bar div{background-color:var(--progress-bar-color)}.progress-bar div[data-indeterminate]{background-color:unset;background-image:linear-gradient(to right,transparent 0%,var(--progress-bar-color) 50%,transparent 100%)}.current-image-area{display:flex;flex-direction:column;height:100%;row-gap:1rem;background-color:var(--background-color-secondary);border-radius:.5rem}.current-image-preview{position:relative;justify-content:center;align-items:center;display:flex;width:100%;height:100%}.current-image-preview img{border-radius:.5rem;object-fit:contain;max-width:100%;max-height:100%;height:auto;position:absolute}.current-image-metadata{grid-area:current-image-preview}.current-image-next-prev-buttons{grid-area:current-image-content;display:flex;justify-content:space-between;z-index:1;height:100%;width:100%;pointer-events:none}.next-prev-button-trigger-area{width:7rem;height:100%;width:15%;display:grid;align-items:center;pointer-events:auto}.next-prev-button-trigger-area.prev-button-trigger-area{justify-content:flex-start}.next-prev-button-trigger-area.next-button-trigger-area{justify-content:flex-end}.next-prev-button{font-size:4rem;fill:var(--white);filter:drop-shadow(0 0 1rem var(--text-color-secondary));opacity:70%}.current-image-display-placeholder{background-color:var(--background-color-secondary);display:grid;display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:.5rem}.current-image-display-placeholder svg{width:10rem;height:10rem;color:var(--svg-color)}.current-image-options{width:100%;display:flex;justify-content:center;align-items:center;column-gap:.5em}.current-image-options .current-image-send-to-popover,.current-image-options .current-image-postprocessing-popover{display:flex;flex-direction:column;row-gap:.5rem;max-width:25rem}.current-image-options .current-image-send-to-popover .invokeai__button{place-content:start}.current-image-options .chakra-popover__popper{z-index:11}.current-image-options .delete-image-btn{background-color:var(--btn-base-color)}.current-image-options .delete-image-btn svg{fill:var(--btn-delete-image)}.image-gallery-wrapper-enter{transform:translate(150%)}.image-gallery-wrapper-enter-active{transform:translate(0);transition:all .12s ease-out}.image-gallery-wrapper-exit{transform:translate(0)}.image-gallery-wrapper-exit-active{transform:translate(150%);transition:all .12s ease-out}.image-gallery-wrapper[data-pinned=false]{position:fixed;height:100vh;top:0;right:0}.image-gallery-wrapper[data-pinned=false] .image-gallery-popup{border-radius:0;box-shadow:0 0 1rem var(--text-color-a3)}.image-gallery-wrapper[data-pinned=false] .image-gallery-popup .image-gallery-container{max-height:calc(100vh + 4.7rem)}.image-gallery-wrapper .image-gallery-popup{background-color:var(--background-color-secondary);padding:1rem;display:flex;flex-direction:column;row-gap:1rem;border-radius:.5rem;border-left-width:.3rem;border-color:var(--tab-list-text-inactive)}.image-gallery-wrapper .image-gallery-popup[data-resize-alert=true]{border-color:var(--status-bad-color)}.image-gallery-wrapper .image-gallery-popup .image-gallery-header{display:flex;align-items:center;column-gap:.5rem;justify-content:space-between}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-header-right-icons{display:flex;flex-direction:row;column-gap:.5rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-icon-btn{background-color:var(--btn-load-more)}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-icon-btn:hover{background-color:var(--btn-load-more-hover)}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-settings-popover{display:flex;flex-direction:column;row-gap:.5rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-header .image-gallery-settings-popover div{display:flex;column-gap:.5rem;align-items:center;justify-content:space-between}.image-gallery-wrapper .image-gallery-popup .image-gallery-header h1{font-weight:700}.image-gallery-wrapper .image-gallery-popup .image-gallery-container{display:flex;flex-direction:column;max-height:calc(100vh - (70px + 7rem));overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.image-gallery-wrapper .image-gallery-popup .image-gallery-container::-webkit-scrollbar{display:none}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder{display:flex;flex-direction:column;row-gap:.5rem;background-color:var(--background-color);border-radius:.5rem;place-items:center;padding:2rem;text-align:center}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder p{color:var(--subtext-color-bright);font-family:Inter}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-container-placeholder svg{width:4rem;height:4rem;color:var(--svg-color)}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn{background-color:var(--btn-load-more);font-size:.85rem;padding:.5rem;margin-top:1rem}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn:disabled:hover{background-color:var(--btn-load-more)}.image-gallery-wrapper .image-gallery-popup .image-gallery-container .image-gallery-load-more-btn:hover{background-color:var(--btn-load-more-hover)}.image-gallery-category-btn-group{width:max-content;column-gap:0;justify-content:stretch}.image-gallery-category-btn-group button{background-color:var(--btn-base-color);flex-grow:1}.image-gallery-category-btn-group button:hover{background-color:var(--btn-base-color-hover)}.image-gallery-category-btn-group button[data-selected=true]{background-color:var(--accent-color)}.image-gallery-category-btn-group button[data-selected=true]:hover{background-color:var(--accent-color-hover)}.image-gallery{display:grid;grid-gap:.5rem}.image-gallery .hoverable-image{padding:.5rem;position:relative}.image-gallery .hoverable-image:before{content:"";display:block;padding-bottom:100%}.image-gallery .hoverable-image .hoverable-image-image{position:absolute;max-width:100%;top:50%;left:50%;transform:translate(-50%,-50%)}.hoverable-image{display:flex;justify-content:center;transition:transform .2s ease-out}.hoverable-image:hover{cursor:pointer;border-radius:.5rem;z-index:2}.hoverable-image .hoverable-image-image{width:100%;height:100%;max-width:100%;max-height:100%}.hoverable-image .hoverable-image-delete-button{position:absolute;top:.25rem;right:.25rem}.hoverable-image .hoverable-image-content{display:flex;position:absolute;top:0;left:0;width:100%;height:100%;align-items:center;justify-content:center}.hoverable-image .hoverable-image-content .hoverable-image-check{fill:var(--status-good-color)}.hoverable-image .hoverable-image-icons{position:absolute;bottom:-2rem;display:grid;width:min-content;grid-template-columns:repeat(2,max-content);border-radius:.4rem;background-color:var(--background-color-secondary);padding:.2rem;gap:.2rem;grid-auto-rows:max-content}.hoverable-image .hoverable-image-icons button{width:12px;height:12px;border-radius:.2rem;padding:10px 0;flex-shrink:2}.hoverable-image .hoverable-image-icons button svg{width:12px;height:12px}.hoverable-image-context-menu{z-index:15;padding:.4rem;border-radius:.25rem;background-color:var(--context-menu-bg-color);box-shadow:var(--context-menu-box-shadow)}.hoverable-image-context-menu [role=menuitem]{font-size:.8rem;line-height:1rem;border-radius:3px;display:flex;align-items:center;height:1.75rem;padding:0 .5rem;position:relative;user-select:none;cursor:pointer;outline:none}.hoverable-image-context-menu [role=menuitem][data-disabled]{color:gray;pointer-events:none;cursor:not-allowed}.hoverable-image-context-menu [role=menuitem][data-warning]{color:var(--status-bad-color)}.hoverable-image-context-menu [role=menuitem][data-highlighted]{background-color:var(--context-menu-bg-color-hover)}.image-metadata-viewer{position:absolute;top:0;width:100%;border-radius:.5rem;padding:1rem;background-color:var(--metadata-bg-color);overflow:scroll;max-height:calc(100vh - (70px + 5.4rem));height:100%;z-index:10}.image-json-viewer{border-radius:.5rem;margin:0 .5rem 1rem;padding:1rem;overflow-x:scroll;word-break:break-all;background-color:var(--metadata-json-bg-color)}.lightbox-container{width:100%;height:100%;color:var(--text-color);overflow:hidden;position:absolute;left:0;top:0;background-color:var(--background-color-secondary);z-index:30;animation:popIn .3s ease-in}.lightbox-container .image-gallery-wrapper{max-height:100%!important}.lightbox-container .image-gallery-wrapper .image-gallery-container{max-height:calc(100vh - 5rem)}.lightbox-container .current-image-options{z-index:2;position:absolute;top:1rem}.lightbox-container .image-metadata-viewer{left:0;max-height:100%}.lightbox-close-btn{z-index:3;position:absolute;left:1rem;top:1rem;background-color:var(--btn-base-color)}.lightbox-close-btn:hover{background-color:var(--btn-base-color-hover)}.lightbox-close-btn:disabled:hover{background-color:var(--btn-base-color)}.lightbox-display-container{display:flex;flex-direction:row}.lightbox-preview-wrapper{overflow:hidden;background-color:var(--background-color-secondary);display:grid;grid-template-columns:auto max-content;place-items:center;width:100vw;height:100vh}.lightbox-preview-wrapper .current-image-next-prev-buttons{position:absolute}.lightbox-preview-wrapper .lightbox-image{grid-area:lightbox-content;border-radius:.5rem}.lightbox-preview-wrapper .lightbox-image-options{position:absolute;z-index:2;left:1rem;top:4.5rem;user-select:none;border-radius:.5rem;display:flex;flex-direction:column;row-gap:.5rem}@keyframes popIn{0%{opacity:0;filter:blur(100)}to{opacity:1;filter:blur(0)}}.app-tabs{display:grid;grid-template-columns:min-content auto;column-gap:1rem;height:calc(100vh - (70px + 1rem))}.app-tabs-list{display:grid;row-gap:.3rem;grid-auto-rows:min-content;color:var(--tab-list-text-inactive)}.app-tabs-list button{font-size:.85rem;padding:.5rem}.app-tabs-list button:hover{background-color:var(--tab-hover-color);border-radius:.3rem}.app-tabs-list button svg{width:26px;height:26px}.app-tabs-list button[aria-selected=true]{background-color:var(--tab-list-bg);color:var(--tab-list-text);font-weight:700;border-radius:.3rem;border:none}.app-tabs-panels .app-tabs-panel{padding:0;height:100%}.workarea-wrapper{position:relative;width:100%;height:100%}.workarea-wrapper .workarea-main{display:flex;column-gap:1rem;height:100%}.workarea-wrapper .workarea-main .workarea-children-wrapper{position:relative;width:100%;height:100%}.workarea-wrapper .workarea-main .workarea-split-view{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr;background-color:var(--background-color-secondary);border-radius:.5rem}.workarea-wrapper .workarea-main .workarea-split-view .workarea-split-view-left{padding-right:.5rem}.workarea-wrapper .workarea-main .workarea-split-view .workarea-split-view-right{padding-left:.5rem}.workarea-wrapper .workarea-main .workarea-single-view{width:100%;height:100%;background-color:var(--background-color-secondary);border-radius:.5rem}.workarea-wrapper .workarea-main .workarea-split-view-left,.workarea-wrapper .workarea-main .workarea-split-view-right{display:flex;flex-direction:column;height:100%;width:100%;row-gap:1rem;background-color:var(--background-color-secondary);border-radius:.5rem;padding:1rem}.workarea-split-button{position:absolute;cursor:pointer;padding:.5rem;top:0;right:0}.workarea-split-button[data-selected=true]{top:0;right:0}.workarea-split-button[data-selected=true] svg{opacity:1}.workarea-split-button svg{opacity:.5}.options-panel-wrapper-enter{transform:translate(-150%)}.options-panel-wrapper-enter-active{transform:translate(0);transition:all .12s ease-out}.options-panel-wrapper-exit{transform:translate(0)}.options-panel-wrapper-exit-active{transform:translate(-150%);transition:all .12s ease-out}.options-panel-wrapper{background-color:var(--background-color);height:calc(100vh - (70px + 1rem));width:22.5rem;max-width:22.5rem;flex-shrink:0;position:relative;overflow-y:scroll;-ms-overflow-style:none;scrollbar-width:none}.options-panel-wrapper::-webkit-scrollbar{display:none}.options-panel-wrapper .options-panel{display:flex;flex-direction:column;row-gap:1rem;height:100%;-ms-overflow-style:none;scrollbar-width:none;background-color:var(--background-color)}.options-panel-wrapper .options-panel::-webkit-scrollbar{display:none}.options-panel-wrapper[data-pinned=false]{z-index:20;position:fixed;top:0;left:0;filter:var(--floating-panel-drop-shadow);width:24.5rem;max-width:24.5rem;height:100%}.options-panel-wrapper[data-pinned=false] .options-panel-margin{margin:1rem}.options-panel-wrapper .options-panel-pin-button{position:absolute;cursor:pointer;padding:.5rem;top:1rem;right:1rem;z-index:20}.options-panel-wrapper .options-panel-pin-button[data-selected=true]{top:0;right:0}.options-panel-wrapper .options-panel-pin-button svg{opacity:.5}.invoke-ai-logo-wrapper{display:flex;align-items:center;column-gap:.7rem;padding-left:.5rem;padding-top:.3rem}.invoke-ai-logo-wrapper img{width:32px;height:32px}.invoke-ai-logo-wrapper h1{font-size:1.4rem}.text-to-image-area{padding:1rem;height:100%}.image-to-image-area{display:flex;flex-direction:column;row-gap:1rem;width:100%;height:100%}.image-to-image-strength-main-option{display:flex;row-gap:.5rem!important}.image-to-image-strength-main-option .invokeai__slider-component-label{color:var(--text-color-secondary);font-size:.9rem!important}.init-image-preview-header{display:flex;align-items:center;justify-content:space-between;width:100%}.init-image-preview-header h2{font-weight:700;font-size:.9rem}.init-image-preview{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.init-image-preview img{border-radius:.5rem;object-fit:contain;position:absolute}.image-to-image-current-image-display{position:relative}.floating-show-hide-button{position:absolute;top:50%;transform:translateY(-50%);z-index:20;padding:0;background-color:red!important;min-width:2rem;min-height:12rem;background-color:var(--btn-btn-base-color)!important}.floating-show-hide-button.left{left:0;border-radius:0 .5rem .5rem 0}.floating-show-hide-button.right{right:0;border-radius:.5rem 0 0 .5rem}.floating-show-hide-button:hover{background-color:var(--btn-btn-base-color-hover)}.floating-show-hide-button:disabled{background-color:var(--btn-base-color)}.floating-show-hide-button:disabled:hover{background-color:var(--btn-base-color)}.floating-show-hide-button svg{width:20px;height:20px;color:var(--btn-svg-color)}.show-hide-button-options{position:absolute;transform:translateY(-50%);z-index:20;min-width:2rem;top:50%;left:calc(42px + 2rem);border-radius:0 .5rem .5rem 0;display:flex;flex-direction:column;row-gap:.5rem}.show-hide-button-options button{border-radius:0 .3rem .3rem 0}.show-hide-button-gallery{padding-left:.75rem;padding-right:.75rem;background-color:var(--background-color)!important}.inpainting-main-area{display:flex;flex-direction:column;align-items:center;row-gap:1rem;width:100%;height:100%}.inpainting-main-area .inpainting-settings{display:flex;align-items:center;column-gap:.5rem}.inpainting-main-area .inpainting-settings svg{transform:scale(.9)}.inpainting-main-area .inpainting-settings .inpainting-buttons-group{display:flex;align-items:center;column-gap:.5rem}.inpainting-main-area .inpainting-settings .inpainting-button-dropdown{display:flex;flex-direction:column;row-gap:.5rem}.inpainting-main-area .inpainting-settings .inpainting-color-picker{margin-left:1rem}.inpainting-main-area .inpainting-settings .inpainting-brush-options{display:flex;align-items:center;column-gap:1rem}.inpainting-main-area .inpainting-canvas-area{display:flex;flex-direction:column;align-items:center;justify-content:center;row-gap:1rem;width:100%;height:100%}.inpainting-main-area .inpainting-canvas-spiner{display:flex;align-items:center;width:100%;height:100%}.inpainting-main-area .inpainting-canvas-container{display:flex;align-items:center;justify-content:center;height:100%;width:100%;border-radius:.5rem}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-wrapper{position:relative}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-stage{outline:none;border-radius:.5rem;box-shadow:0 0 0 1px var(--border-color-light);overflow:hidden}.inpainting-main-area .inpainting-canvas-container .inpainting-canvas-stage canvas{outline:none;border-radius:.5rem}.inpainting-options-btn{min-height:2rem}.canvas-status-text{position:absolute;top:0;left:0;background-color:var(--background-color);opacity:.65;display:flex;flex-direction:column;font-size:.8rem;padding:.25rem;min-width:12rem;border-radius:.25rem;margin:.25rem;pointer-events:none}.invokeai__number-input-form-control{display:flex;align-items:center;column-gap:1rem}.invokeai__number-input-form-control .invokeai__number-input-form-label{color:var(--text-color-secondary);margin-right:0;font-size:1rem;margin-bottom:0;white-space:nowrap}.invokeai__number-input-form-control .invokeai__number-input-form-label[data-focus]+.invokeai__number-input-root{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.invokeai__number-input-form-control .invokeai__number-input-form-label[aria-invalid=true]+.invokeai__number-input-root{outline:none;border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.invokeai__number-input-form-control .invokeai__number-input-root{height:2rem;display:grid;grid-template-columns:auto max-content;column-gap:.5rem;align-items:center;background-color:var(--background-color-secondary);border:2px solid var(--border-color);border-radius:.3rem}.invokeai__number-input-form-control .invokeai__number-input-field{border:none;font-weight:700;width:100%;height:auto;font-size:.9rem;padding:0 .5rem}.invokeai__number-input-form-control .invokeai__number-input-field:focus{outline:none;box-shadow:none}.invokeai__number-input-form-control .invokeai__number-input-field:disabled{opacity:.2}.invokeai__number-input-form-control .invokeai__number-input-stepper{display:grid;padding-right:.5rem}.invokeai__number-input-form-control .invokeai__number-input-stepper .invokeai__number-input-stepper-button{border:none;padding:0 .5rem;margin:0 -.5rem}.invokeai__number-input-form-control .invokeai__number-input-stepper .invokeai__number-input-stepper-button svg{width:10px;height:10px}.input{display:grid;grid-template-columns:max-content auto;column-gap:1rem;align-items:center}.input .input-label{color:var(--text-color-secondary);margin-right:0}.input .input-entry{background-color:var(--background-color-secondary);border:2px solid var(--border-color);border-radius:.2rem;font-weight:700}.input .input-entry:focus{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.input .input-entry:disabled{opacity:.2}.input .input-entry[aria-invalid=true]{outline:none;border:2px solid var(--border-color-invalid);box-shadow:0 0 10px 0 var(--box-shadow-color-invalid)}.invokeai__icon-button{background:var(--btn-base-color);cursor:pointer}.invokeai__icon-button:hover{background-color:var(--btn-base-color-hover)}.invokeai__icon-button[data-selected=true]{background-color:var(--accent-color)}.invokeai__icon-button[data-selected=true]:hover{background-color:var(--accent-color-hover)}.invokeai__icon-button[disabled]{cursor:not-allowed}.invokeai__icon-button[data-variant=link],.invokeai__icon-button[data-variant=link]:hover{background:none}.invokeai__icon-button[data-as-checkbox=true]{background-color:var(--btn-base-color);border:3px solid var(--btn-base-color)}.invokeai__icon-button[data-as-checkbox=true] svg{fill:var(--text-color)}.invokeai__icon-button[data-as-checkbox=true]:hover{background-color:var(--btn-base-color);border-color:var(--btn-checkbox-border-hover)}.invokeai__icon-button[data-as-checkbox=true]:hover svg{fill:var(--text-color)}.invokeai__icon-button[data-as-checkbox=true][data-selected=true]{border-color:var(--accent-color)}.invokeai__icon-button[data-as-checkbox=true][data-selected=true] svg{fill:var(--accent-color-hover)}.invokeai__icon-button[data-as-checkbox=true][data-selected=true]:hover svg{fill:var(--accent-color-hover)}.invokeai__icon-button[data-alert=true]{animation-name:pulseColor;animation-duration:1s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}.invokeai__icon-button[data-alert=true]:hover{animation:none;background-color:var(--accent-color-hover)}@keyframes pulseColor{0%{background-color:var(--accent-color)}50%{background-color:var(--accent-color-dim)}to{background-color:var(--accent-color)}}.invokeai__button{background-color:var(--btn-base-color);place-content:center}.invokeai__button:hover{background-color:var(--btn-base-color-hover)}.invokeai__switch-form-control .invokeai__switch-form-label{display:flex;column-gap:1rem;justify-content:space-between;align-items:center;color:var(--text-color-secondary);font-size:1rem;margin-right:0;margin-bottom:.1rem;white-space:nowrap;width:auto}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root span{background-color:var(--switch-bg-color)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root span span{background-color:var(--white)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root[data-checked] span{background:var(--switch-bg-active-color)}.invokeai__switch-form-control .invokeai__switch-form-label .invokeai__switch-root[data-checked] span span{background-color:var(--white)}.invokeai__select{display:flex;column-gap:1rem;align-items:center}.invokeai__select .invokeai__select-label{color:var(--text-color-secondary);margin-right:0}.invokeai__select .invokeai__select-picker{border:2px solid var(--border-color);background-color:var(--background-color-secondary);font-weight:700;font-size:.9rem;height:2rem;border-radius:.2rem}.invokeai__select .invokeai__select-picker:focus{outline:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.invokeai__select .invokeai__select-option{background-color:var(--background-color-secondary);color:var(--text-color-secondary)}.invokeai__slider-component{display:flex;gap:1rem;align-items:center}.invokeai__slider-component .invokeai__slider-component-label{min-width:max-content;margin:0;font-weight:700;font-size:.9rem;color:var(--text-color-secondary)}.invokeai__slider-component .invokeai__slider_track{background-color:var(--tab-color)}.invokeai__slider-component .invokeai__slider_track-filled{background-color:var(--slider-color)}.invokeai__slider-component .invokeai__slider-thumb{width:4px}.invokeai__slider-component .invokeai__slider-mark{font-size:.75rem;font-weight:700;color:var(--slider-color);margin-top:.3rem}.invokeai__slider-component .invokeai__slider-number-input{border:none;font-size:.9rem;font-weight:700;height:2rem;background-color:var(--background-color-secondary);border:2px solid var(--border-color)}.invokeai__slider-component .invokeai__slider-number-input:focus{outline:none;box-shadow:none;border:2px solid var(--input-border-color);box-shadow:0 0 10px 0 var(--input-box-shadow-color)}.invokeai__slider-component .invokeai__slider-number-input:disabled{opacity:.2}.invokeai__slider-component .invokeai__slider-number-stepper{border:none}.invokeai__slider-component[data-markers=true] .invokeai__slider_container{margin-top:-1rem}.invokeai__checkbox .chakra-checkbox__label{margin-top:1px;color:var(--text-color-secondary);font-size:.9rem}.invokeai__checkbox .chakra-checkbox__control{width:1rem;height:1rem;border:none;border-radius:.2rem;background-color:var(--input-checkbox-bg)}.invokeai__checkbox .chakra-checkbox__control svg{width:.6rem;height:.6rem;stroke-width:3px}.invokeai__checkbox .chakra-checkbox__control[data-checked]{color:var(--text-color);background-color:var(--input-checkbox-checked-bg)}.invokeai__popover-content{min-width:unset;width:unset;padding:1rem;border-radius:.5rem;background-color:var(--background-color);border:2px solid var(--border-color)}.invokeai__popover-content .invokeai__popover-arrow{background-color:var(--background-color)!important}.invokeai__color-picker .react-colorful__hue-pointer,.invokeai__color-picker .react-colorful__saturation-pointer{width:1.5rem;height:1.5rem;border-color:var(--white)}.dropzone-container{position:absolute;top:0;left:0;width:100vw;height:100vh;z-index:999;backdrop-filter:blur(20px)}.dropzone-container .dropzone-overlay{opacity:.5;width:100%;height:100%;display:flex;flex-direction:column;row-gap:1rem;align-items:center;justify-content:center;background-color:var(--background-color)}.dropzone-container .dropzone-overlay.is-drag-accept{box-shadow:inset 0 0 20rem 1rem var(--accent-color)}.dropzone-container .dropzone-overlay.is-drag-reject{box-shadow:inset 0 0 20rem 1rem var(--status-bad-color)}.dropzone-container .dropzone-overlay.is-handling-upload{box-shadow:inset 0 0 20rem 1rem var(--status-working-color)}.image-uploader-button-outer{width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:.5rem;color:var(--tab-list-text-inactive);background-color:var(--background-color)}.image-uploader-button-outer:hover{background-color:var(--background-color-light)}.image-upload-button-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.image-upload-button{display:flex;flex-direction:column;row-gap:2rem;align-items:center;justify-content:center;text-align:center}.image-upload-button svg{width:4rem;height:4rem}.image-upload-button h2{font-size:1.2rem}.work-in-progress{display:grid;width:100%;height:calc(100vh - (70px + 1rem));grid-auto-rows:max-content;background-color:var(--background-color-secondary);border-radius:.4rem;place-content:center;place-items:center;row-gap:1rem}.work-in-progress h1{font-size:2rem;font-weight:700}.work-in-progress p{text-align:center;max-width:50rem;color:var(--subtext-color-bright)}.guide-popover-arrow{background-color:var(--tab-panel-bg);box-shadow:none}.guide-popover-content{background-color:var(--background-color-secondary);border:none}.guide-popover-guide-content{background:var(--tab-panel-bg);border:2px solid var(--tab-hover-color);border-radius:.4rem;padding:.75rem 1rem;display:grid;grid-template-rows:repeat(auto-fill,1fr);grid-row-gap:.5rem;justify-content:space-between}.modal{background-color:var(--background-color-secondary);color:var(--text-color)}.modal-close-btn{background-color:var(--btn-base-color)}.modal-close-btn:hover{background-color:var(--btn-base-color-hover)}.modal-close-btn:disabled:hover{background-color:var(--btn-base-color)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{-ms-overflow-style:none;scrollbar-width:none;background-color:var(--root-bg-color);overflow:hidden}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}#root{background-color:var(--root-bg-color);color:var(--text-color);font-family:Inter,Arial,Helvetica,sans-serif} diff --git a/frontend/dist/assets/index.faf4c870.js b/frontend/dist/assets/index.faf4c870.js new file mode 100644 index 0000000000..1046919262 --- /dev/null +++ b/frontend/dist/assets/index.faf4c870.js @@ -0,0 +1,623 @@ +function Xq(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerpolicy&&(o.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?o.credentials="include":i.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var bs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Q7(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var C={exports:{}},Xt={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var qv=Symbol.for("react.element"),Zq=Symbol.for("react.portal"),Qq=Symbol.for("react.fragment"),Jq=Symbol.for("react.strict_mode"),eK=Symbol.for("react.profiler"),tK=Symbol.for("react.provider"),nK=Symbol.for("react.context"),rK=Symbol.for("react.forward_ref"),iK=Symbol.for("react.suspense"),oK=Symbol.for("react.memo"),aK=Symbol.for("react.lazy"),AE=Symbol.iterator;function sK(e){return e===null||typeof e!="object"?null:(e=AE&&e[AE]||e["@@iterator"],typeof e=="function"?e:null)}var tR={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},nR=Object.assign,rR={};function u1(e,t,n){this.props=e,this.context=t,this.refs=rR,this.updater=n||tR}u1.prototype.isReactComponent={};u1.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};u1.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function iR(){}iR.prototype=u1.prototype;function J7(e,t,n){this.props=e,this.context=t,this.refs=rR,this.updater=n||tR}var e9=J7.prototype=new iR;e9.constructor=J7;nR(e9,u1.prototype);e9.isPureReactComponent=!0;var ME=Array.isArray,oR=Object.prototype.hasOwnProperty,t9={current:null},aR={key:!0,ref:!0,__self:!0,__source:!0};function sR(e,t,n){var r,i={},o=null,a=null;if(t!=null)for(r in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(o=""+t.key),t)oR.call(t,r)&&!aR.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,Re=G[me];if(0>>1;mei(Me,ce))_ei(Je,Me)?(G[me]=Je,G[_e]=ce,me=_e):(G[me]=Me,G[Se]=ce,me=Se);else if(_ei(Je,ce))G[me]=Je,G[_e]=ce,me=_e;else break e}}return Z}function i(G,Z){var ce=G.sortIndex-Z.sortIndex;return ce!==0?ce:G.id-Z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],u=[],h=1,g=null,m=3,v=!1,S=!1,w=!1,k=typeof setTimeout=="function"?setTimeout:null,P=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function T(G){for(var Z=n(u);Z!==null;){if(Z.callback===null)r(u);else if(Z.startTime<=G)r(u),Z.sortIndex=Z.expirationTime,t(l,Z);else break;Z=n(u)}}function M(G){if(w=!1,T(G),!S)if(n(l)!==null)S=!0,ee(R);else{var Z=n(u);Z!==null&&K(M,Z.startTime-G)}}function R(G,Z){S=!1,w&&(w=!1,P(B),B=-1),v=!0;var ce=m;try{for(T(Z),g=n(l);g!==null&&(!(g.expirationTime>Z)||G&&!j());){var me=g.callback;if(typeof me=="function"){g.callback=null,m=g.priorityLevel;var Re=me(g.expirationTime<=Z);Z=e.unstable_now(),typeof Re=="function"?g.callback=Re:g===n(l)&&r(l),T(Z)}else r(l);g=n(l)}if(g!==null)var xe=!0;else{var Se=n(u);Se!==null&&K(M,Se.startTime-Z),xe=!1}return xe}finally{g=null,m=ce,v=!1}}var O=!1,D=null,B=-1,$=5,W=-1;function j(){return!(e.unstable_now()-W<$)}function te(){if(D!==null){var G=e.unstable_now();W=G;var Z=!0;try{Z=D(!0,G)}finally{Z?V():(O=!1,D=null)}}else O=!1}var V;if(typeof E=="function")V=function(){E(te)};else if(typeof MessageChannel<"u"){var J=new MessageChannel,re=J.port2;J.port1.onmessage=te,V=function(){re.postMessage(null)}}else V=function(){k(te,0)};function ee(G){D=G,O||(O=!0,V())}function K(G,Z){B=k(function(){G(e.unstable_now())},Z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(G){G.callback=null},e.unstable_continueExecution=function(){S||v||(S=!0,ee(R))},e.unstable_forceFrameRate=function(G){0>G||125me?(G.sortIndex=ce,t(u,G),n(l)===null&&G===n(u)&&(w?(P(B),B=-1):w=!0,K(M,ce-me))):(G.sortIndex=Re,t(l,G),S||v||(S=!0,ee(R))),G},e.unstable_shouldYield=j,e.unstable_wrapCallback=function(G){var Z=m;return function(){var ce=m;m=Z;try{return G.apply(this,arguments)}finally{m=ce}}}})(lR);(function(e){e.exports=lR})(p0);/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var uR=C.exports,ha=p0.exports;function De(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),n6=Object.prototype.hasOwnProperty,fK=/^[: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]*$/,RE={},OE={};function hK(e){return n6.call(OE,e)?!0:n6.call(RE,e)?!1:fK.test(e)?OE[e]=!0:(RE[e]=!0,!1)}function pK(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function gK(e,t,n,r){if(t===null||typeof t>"u"||pK(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ao(e,t,n,r,i,o,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=a}var Mi={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Mi[e]=new ao(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Mi[t]=new ao(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Mi[e]=new ao(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Mi[e]=new ao(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Mi[e]=new ao(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Mi[e]=new ao(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Mi[e]=new ao(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Mi[e]=new ao(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Mi[e]=new ao(e,5,!1,e.toLowerCase(),null,!1,!1)});var r9=/[\-:]([a-z])/g;function i9(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(r9,i9);Mi[t]=new ao(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(r9,i9);Mi[t]=new ao(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(r9,i9);Mi[t]=new ao(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Mi[e]=new ao(e,1,!1,e.toLowerCase(),null,!1,!1)});Mi.xlinkHref=new ao("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Mi[e]=new ao(e,1,!1,e.toLowerCase(),null,!0,!0)});function o9(e,t,n,r){var i=Mi.hasOwnProperty(t)?Mi[t]:null;(i!==null?i.type!==0:r||!(2s||i[a]!==o[s]){var l=` +`+i[a].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=a&&0<=s);break}}}finally{nx=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?lm(e):""}function mK(e){switch(e.tag){case 5:return lm(e.type);case 16:return lm("Lazy");case 13:return lm("Suspense");case 19:return lm("SuspenseList");case 0:case 2:case 15:return e=rx(e.type,!1),e;case 11:return e=rx(e.type.render,!1),e;case 1:return e=rx(e.type,!0),e;default:return""}}function a6(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case qp:return"Fragment";case Yp:return"Portal";case r6:return"Profiler";case a9:return"StrictMode";case i6:return"Suspense";case o6:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case fR:return(e.displayName||"Context")+".Consumer";case dR:return(e._context.displayName||"Context")+".Provider";case s9:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case l9:return t=e.displayName||null,t!==null?t:a6(e.type)||"Memo";case Dc:t=e._payload,e=e._init;try{return a6(e(t))}catch{}}return null}function vK(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return a6(t);case 8:return t===a9?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function cd(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function pR(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function yK(e){var t=pR(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(a){r=""+a,o.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function hy(e){e._valueTracker||(e._valueTracker=yK(e))}function gR(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=pR(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function h4(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function s6(e,t){var n=t.checked;return hr({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function NE(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=cd(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function mR(e,t){t=t.checked,t!=null&&o9(e,"checked",t,!1)}function l6(e,t){mR(e,t);var n=cd(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?u6(e,t.type,n):t.hasOwnProperty("defaultValue")&&u6(e,t.type,cd(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function BE(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function u6(e,t,n){(t!=="number"||h4(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var um=Array.isArray;function g0(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=py.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function iv(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Pm={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},SK=["Webkit","ms","Moz","O"];Object.keys(Pm).forEach(function(e){SK.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Pm[t]=Pm[e]})});function bR(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Pm.hasOwnProperty(e)&&Pm[e]?(""+t).trim():t+"px"}function xR(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=bR(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var bK=hr({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function f6(e,t){if(t){if(bK[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(De(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(De(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(De(61))}if(t.style!=null&&typeof t.style!="object")throw Error(De(62))}}function h6(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var p6=null;function u9(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var g6=null,m0=null,v0=null;function $E(e){if(e=Zv(e)){if(typeof g6!="function")throw Error(De(280));var t=e.stateNode;t&&(t=O5(t),g6(e.stateNode,e.type,t))}}function wR(e){m0?v0?v0.push(e):v0=[e]:m0=e}function CR(){if(m0){var e=m0,t=v0;if(v0=m0=null,$E(e),t)for(e=0;e>>=0,e===0?32:31-(MK(e)/IK|0)|0}var gy=64,my=4194304;function cm(e){switch(e&-e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function v4(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,a=n&268435455;if(a!==0){var s=a&~i;s!==0?r=cm(s):(o&=a,o!==0&&(r=cm(o)))}else a=n&~i,a!==0?r=cm(a):o!==0&&(r=cm(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Kv(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Cs(t),e[t]=n}function NK(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Lm),KE=String.fromCharCode(32),XE=!1;function VR(e,t){switch(e){case"keyup":return cX.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function UR(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Kp=!1;function fX(e,t){switch(e){case"compositionend":return UR(t);case"keypress":return t.which!==32?null:(XE=!0,KE);case"textInput":return e=t.data,e===KE&&XE?null:e;default:return null}}function hX(e,t){if(Kp)return e==="compositionend"||!v9&&VR(e,t)?(e=HR(),P3=p9=Vc=null,Kp=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=eP(n)}}function qR(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qR(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function KR(){for(var e=window,t=h4();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=h4(e.document)}return t}function y9(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function wX(e){var t=KR(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&qR(n.ownerDocument.documentElement,n)){if(r!==null&&y9(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=tP(n,o);var a=tP(n,r);i&&a&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Xp=null,x6=null,Mm=null,w6=!1;function nP(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;w6||Xp==null||Xp!==h4(r)||(r=Xp,"selectionStart"in r&&y9(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Mm&&cv(Mm,r)||(Mm=r,r=b4(x6,"onSelect"),0Jp||(e.current=T6[Jp],T6[Jp]=null,Jp--)}function qn(e,t){Jp++,T6[Jp]=e.current,e.current=t}var dd={},Vi=Sd(dd),Mo=Sd(!1),ah=dd;function W0(e,t){var n=e.type.contextTypes;if(!n)return dd;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Io(e){return e=e.childContextTypes,e!=null}function w4(){Qn(Mo),Qn(Vi)}function uP(e,t,n){if(Vi.current!==dd)throw Error(De(168));qn(Vi,t),qn(Mo,n)}function iO(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(De(108,vK(e)||"Unknown",i));return hr({},n,r)}function C4(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||dd,ah=Vi.current,qn(Vi,e),qn(Mo,Mo.current),!0}function cP(e,t,n){var r=e.stateNode;if(!r)throw Error(De(169));n?(e=iO(e,t,ah),r.__reactInternalMemoizedMergedChildContext=e,Qn(Mo),Qn(Vi),qn(Vi,e)):Qn(Mo),qn(Mo,n)}var hu=null,D5=!1,vx=!1;function oO(e){hu===null?hu=[e]:hu.push(e)}function OX(e){D5=!0,oO(e)}function bd(){if(!vx&&hu!==null){vx=!0;var e=0,t=Ln;try{var n=hu;for(Ln=1;e>=a,i-=a,gu=1<<32-Cs(t)+i|n<B?($=D,D=null):$=D.sibling;var W=m(P,D,T[B],M);if(W===null){D===null&&(D=$);break}e&&D&&W.alternate===null&&t(P,D),E=o(W,E,B),O===null?R=W:O.sibling=W,O=W,D=$}if(B===T.length)return n(P,D),ir&&Pf(P,B),R;if(D===null){for(;BB?($=D,D=null):$=D.sibling;var j=m(P,D,W.value,M);if(j===null){D===null&&(D=$);break}e&&D&&j.alternate===null&&t(P,D),E=o(j,E,B),O===null?R=j:O.sibling=j,O=j,D=$}if(W.done)return n(P,D),ir&&Pf(P,B),R;if(D===null){for(;!W.done;B++,W=T.next())W=g(P,W.value,M),W!==null&&(E=o(W,E,B),O===null?R=W:O.sibling=W,O=W);return ir&&Pf(P,B),R}for(D=r(P,D);!W.done;B++,W=T.next())W=v(D,P,B,W.value,M),W!==null&&(e&&W.alternate!==null&&D.delete(W.key===null?B:W.key),E=o(W,E,B),O===null?R=W:O.sibling=W,O=W);return e&&D.forEach(function(te){return t(P,te)}),ir&&Pf(P,B),R}function k(P,E,T,M){if(typeof T=="object"&&T!==null&&T.type===qp&&T.key===null&&(T=T.props.children),typeof T=="object"&&T!==null){switch(T.$$typeof){case fy:e:{for(var R=T.key,O=E;O!==null;){if(O.key===R){if(R=T.type,R===qp){if(O.tag===7){n(P,O.sibling),E=i(O,T.props.children),E.return=P,P=E;break e}}else if(O.elementType===R||typeof R=="object"&&R!==null&&R.$$typeof===Dc&&vP(R)===O.type){n(P,O.sibling),E=i(O,T.props),E.ref=Hg(P,O,T),E.return=P,P=E;break e}n(P,O);break}else t(P,O);O=O.sibling}T.type===qp?(E=Xf(T.props.children,P.mode,M,T.key),E.return=P,P=E):(M=D3(T.type,T.key,T.props,null,P.mode,M),M.ref=Hg(P,E,T),M.return=P,P=M)}return a(P);case Yp:e:{for(O=T.key;E!==null;){if(E.key===O)if(E.tag===4&&E.stateNode.containerInfo===T.containerInfo&&E.stateNode.implementation===T.implementation){n(P,E.sibling),E=i(E,T.children||[]),E.return=P,P=E;break e}else{n(P,E);break}else t(P,E);E=E.sibling}E=kx(T,P.mode,M),E.return=P,P=E}return a(P);case Dc:return O=T._init,k(P,E,O(T._payload),M)}if(um(T))return S(P,E,T,M);if(Ng(T))return w(P,E,T,M);Cy(P,T)}return typeof T=="string"&&T!==""||typeof T=="number"?(T=""+T,E!==null&&E.tag===6?(n(P,E.sibling),E=i(E,T),E.return=P,P=E):(n(P,E),E=_x(T,P.mode,M),E.return=P,P=E),a(P)):n(P,E)}return k}var U0=hO(!0),pO=hO(!1),Qv={},_l=Sd(Qv),pv=Sd(Qv),gv=Sd(Qv);function $f(e){if(e===Qv)throw Error(De(174));return e}function P9(e,t){switch(qn(gv,t),qn(pv,e),qn(_l,Qv),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:d6(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=d6(t,e)}Qn(_l),qn(_l,t)}function G0(){Qn(_l),Qn(pv),Qn(gv)}function gO(e){$f(gv.current);var t=$f(_l.current),n=d6(t,e.type);t!==n&&(qn(pv,e),qn(_l,n))}function T9(e){pv.current===e&&(Qn(_l),Qn(pv))}var cr=Sd(0);function L4(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.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===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var yx=[];function L9(){for(var e=0;en?n:4,e(!0);var r=Sx.transition;Sx.transition={};try{e(!1),t()}finally{Ln=n,Sx.transition=r}}function MO(){return Ha().memoizedState}function zX(e,t,n){var r=nd(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},IO(e))RO(t,n);else if(n=uO(e,t,n,r),n!==null){var i=ro();_s(n,e,r,i),OO(n,t,r)}}function FX(e,t,n){var r=nd(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(IO(e))RO(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var a=t.lastRenderedState,s=o(a,n);if(i.hasEagerState=!0,i.eagerState=s,As(s,a)){var l=t.interleaved;l===null?(i.next=i,k9(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=uO(e,t,i,r),n!==null&&(i=ro(),_s(n,e,r,i),OO(n,t,r))}}function IO(e){var t=e.alternate;return e===fr||t!==null&&t===fr}function RO(e,t){Im=A4=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function OO(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,d9(e,n)}}var M4={readContext:$a,useCallback:Ni,useContext:Ni,useEffect:Ni,useImperativeHandle:Ni,useInsertionEffect:Ni,useLayoutEffect:Ni,useMemo:Ni,useReducer:Ni,useRef:Ni,useState:Ni,useDebugValue:Ni,useDeferredValue:Ni,useTransition:Ni,useMutableSource:Ni,useSyncExternalStore:Ni,useId:Ni,unstable_isNewReconciler:!1},$X={readContext:$a,useCallback:function(e,t){return cl().memoizedState=[e,t===void 0?null:t],e},useContext:$a,useEffect:SP,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,M3(4194308,4,EO.bind(null,t,e),n)},useLayoutEffect:function(e,t){return M3(4194308,4,e,t)},useInsertionEffect:function(e,t){return M3(4,2,e,t)},useMemo:function(e,t){var n=cl();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=cl();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=zX.bind(null,fr,e),[r.memoizedState,e]},useRef:function(e){var t=cl();return e={current:e},t.memoizedState=e},useState:yP,useDebugValue:O9,useDeferredValue:function(e){return cl().memoizedState=e},useTransition:function(){var e=yP(!1),t=e[0];return e=BX.bind(null,e[1]),cl().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=fr,i=cl();if(ir){if(n===void 0)throw Error(De(407));n=n()}else{if(n=t(),hi===null)throw Error(De(349));(lh&30)!==0||yO(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,SP(bO.bind(null,r,o,e),[e]),r.flags|=2048,yv(9,SO.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=cl(),t=hi.identifierPrefix;if(ir){var n=mu,r=gu;n=(r&~(1<<32-Cs(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=mv++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[ml]=t,e[hv]=r,VO(e,t,!1,!1),t.stateNode=e;e:{switch(a=h6(n,r),n){case"dialog":Xn("cancel",e),Xn("close",e),i=r;break;case"iframe":case"object":case"embed":Xn("load",e),i=r;break;case"video":case"audio":for(i=0;iY0&&(t.flags|=128,r=!0,Wg(o,!1),t.lanes=4194304)}else{if(!r)if(e=L4(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Wg(o,!0),o.tail===null&&o.tailMode==="hidden"&&!a.alternate&&!ir)return Bi(t),null}else 2*Or()-o.renderingStartTime>Y0&&n!==1073741824&&(t.flags|=128,r=!0,Wg(o,!1),t.lanes=4194304);o.isBackwards?(a.sibling=t.child,t.child=a):(n=o.last,n!==null?n.sibling=a:t.child=a,o.last=a)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Or(),t.sibling=null,n=cr.current,qn(cr,r?n&1|2:n&1),t):(Bi(t),null);case 22:case 23:return $9(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ra&1073741824)!==0&&(Bi(t),t.subtreeFlags&6&&(t.flags|=8192)):Bi(t),null;case 24:return null;case 25:return null}throw Error(De(156,t.tag))}function qX(e,t){switch(b9(t),t.tag){case 1:return Io(t.type)&&w4(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return G0(),Qn(Mo),Qn(Vi),L9(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return T9(t),null;case 13:if(Qn(cr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(De(340));V0()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Qn(cr),null;case 4:return G0(),null;case 10:return _9(t.type._context),null;case 22:case 23:return $9(),null;case 24:return null;default:return null}}var ky=!1,$i=!1,KX=typeof WeakSet=="function"?WeakSet:Set,nt=null;function r0(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){wr(e,t,r)}else n.current=null}function $6(e,t,n){try{n()}catch(r){wr(e,t,r)}}var TP=!1;function XX(e,t){if(C6=y4,e=KR(),y9(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var a=0,s=-1,l=-1,u=0,h=0,g=e,m=null;t:for(;;){for(var v;g!==n||i!==0&&g.nodeType!==3||(s=a+i),g!==o||r!==0&&g.nodeType!==3||(l=a+r),g.nodeType===3&&(a+=g.nodeValue.length),(v=g.firstChild)!==null;)m=g,g=v;for(;;){if(g===e)break t;if(m===n&&++u===i&&(s=a),m===o&&++h===r&&(l=a),(v=g.nextSibling)!==null)break;g=m,m=g.parentNode}g=v}n=s===-1||l===-1?null:{start:s,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(_6={focusedElem:e,selectionRange:n},y4=!1,nt=t;nt!==null;)if(t=nt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,nt=e;else for(;nt!==null;){t=nt;try{var S=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(S!==null){var w=S.memoizedProps,k=S.memoizedState,P=t.stateNode,E=P.getSnapshotBeforeUpdate(t.elementType===t.type?w:ms(t.type,w),k);P.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var T=t.stateNode.containerInfo;T.nodeType===1?T.textContent="":T.nodeType===9&&T.documentElement&&T.removeChild(T.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(De(163))}}catch(M){wr(t,t.return,M)}if(e=t.sibling,e!==null){e.return=t.return,nt=e;break}nt=t.return}return S=TP,TP=!1,S}function Rm(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&$6(t,n,o)}i=i.next}while(i!==r)}}function z5(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function H6(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function jO(e){var t=e.alternate;t!==null&&(e.alternate=null,jO(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ml],delete t[hv],delete t[P6],delete t[IX],delete t[RX])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function YO(e){return e.tag===5||e.tag===3||e.tag===4}function LP(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||YO(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function W6(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=x4));else if(r!==4&&(e=e.child,e!==null))for(W6(e,t,n),e=e.sibling;e!==null;)W6(e,t,n),e=e.sibling}function V6(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(V6(e,t,n),e=e.sibling;e!==null;)V6(e,t,n),e=e.sibling}var Pi=null,vs=!1;function Pc(e,t,n){for(n=n.child;n!==null;)qO(e,t,n),n=n.sibling}function qO(e,t,n){if(Cl&&typeof Cl.onCommitFiberUnmount=="function")try{Cl.onCommitFiberUnmount(A5,n)}catch{}switch(n.tag){case 5:$i||r0(n,t);case 6:var r=Pi,i=vs;Pi=null,Pc(e,t,n),Pi=r,vs=i,Pi!==null&&(vs?(e=Pi,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Pi.removeChild(n.stateNode));break;case 18:Pi!==null&&(vs?(e=Pi,n=n.stateNode,e.nodeType===8?mx(e.parentNode,n):e.nodeType===1&&mx(e,n),lv(e)):mx(Pi,n.stateNode));break;case 4:r=Pi,i=vs,Pi=n.stateNode.containerInfo,vs=!0,Pc(e,t,n),Pi=r,vs=i;break;case 0:case 11:case 14:case 15:if(!$i&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,a=o.destroy;o=o.tag,a!==void 0&&((o&2)!==0||(o&4)!==0)&&$6(n,t,a),i=i.next}while(i!==r)}Pc(e,t,n);break;case 1:if(!$i&&(r0(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){wr(n,t,s)}Pc(e,t,n);break;case 21:Pc(e,t,n);break;case 22:n.mode&1?($i=(r=$i)||n.memoizedState!==null,Pc(e,t,n),$i=r):Pc(e,t,n);break;default:Pc(e,t,n)}}function AP(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new KX),t.forEach(function(r){var i=oZ.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function ds(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=a),r&=~o}if(r=i,r=Or()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*QX(r/1960))-r,10e?16:e,Uc===null)var r=!1;else{if(e=Uc,Uc=null,O4=0,(sn&6)!==0)throw Error(De(331));var i=sn;for(sn|=4,nt=e.current;nt!==null;){var o=nt,a=o.child;if((nt.flags&16)!==0){var s=o.deletions;if(s!==null){for(var l=0;lOr()-z9?Kf(e,0):B9|=n),Ro(e,t)}function nD(e,t){t===0&&((e.mode&1)===0?t=1:(t=my,my<<=1,(my&130023424)===0&&(my=4194304)));var n=ro();e=Cu(e,t),e!==null&&(Kv(e,t,n),Ro(e,n))}function iZ(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),nD(e,n)}function oZ(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(De(314))}r!==null&&r.delete(t),nD(e,n)}var rD;rD=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Mo.current)Ao=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Ao=!1,jX(e,t,n);Ao=(e.flags&131072)!==0}else Ao=!1,ir&&(t.flags&1048576)!==0&&aO(t,k4,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;I3(e,t),e=t.pendingProps;var i=W0(t,Vi.current);S0(t,n),i=M9(null,t,r,e,i,n);var o=I9();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Io(r)?(o=!0,C4(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,E9(t),i.updater=N5,t.stateNode=i,i._reactInternals=t,R6(t,r,e,n),t=N6(null,t,r,!0,o,n)):(t.tag=0,ir&&o&&S9(t),eo(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(I3(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=sZ(r),e=ms(r,e),i){case 0:t=D6(null,t,r,e,n);break e;case 1:t=kP(null,t,r,e,n);break e;case 11:t=CP(null,t,r,e,n);break e;case 14:t=_P(null,t,r,ms(r.type,e),n);break e}throw Error(De(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ms(r,i),D6(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ms(r,i),kP(e,t,r,i,n);case 3:e:{if($O(t),e===null)throw Error(De(387));r=t.pendingProps,o=t.memoizedState,i=o.element,cO(e,t),T4(t,r,null,n);var a=t.memoizedState;if(r=a.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=j0(Error(De(423)),t),t=EP(e,t,r,n,i);break e}else if(r!==i){i=j0(Error(De(424)),t),t=EP(e,t,r,n,i);break e}else for(sa=Jc(t.stateNode.containerInfo.firstChild),ua=t,ir=!0,Ss=null,n=pO(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(V0(),r===i){t=_u(e,t,n);break e}eo(e,t,r,n)}t=t.child}return t;case 5:return gO(t),e===null&&A6(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,a=i.children,k6(r,i)?a=null:o!==null&&k6(r,o)&&(t.flags|=32),FO(e,t),eo(e,t,a,n),t.child;case 6:return e===null&&A6(t),null;case 13:return HO(e,t,n);case 4:return P9(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=U0(t,null,r,n):eo(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ms(r,i),CP(e,t,r,i,n);case 7:return eo(e,t,t.pendingProps,n),t.child;case 8:return eo(e,t,t.pendingProps.children,n),t.child;case 12:return eo(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,a=i.value,qn(E4,r._currentValue),r._currentValue=a,o!==null)if(As(o.value,a)){if(o.children===i.children&&!Mo.current){t=_u(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){a=o.child;for(var l=s.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=yu(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var h=u.pending;h===null?l.next=l:(l.next=h.next,h.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),M6(o.return,n,t),s.lanes|=n;break}l=l.next}}else if(o.tag===10)a=o.type===t.type?null:o.child;else if(o.tag===18){if(a=o.return,a===null)throw Error(De(341));a.lanes|=n,s=a.alternate,s!==null&&(s.lanes|=n),M6(a,n,t),a=o.sibling}else a=o.child;if(a!==null)a.return=o;else for(a=o;a!==null;){if(a===t){a=null;break}if(o=a.sibling,o!==null){o.return=a.return,a=o;break}a=a.return}o=a}eo(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,S0(t,n),i=$a(i),r=r(i),t.flags|=1,eo(e,t,r,n),t.child;case 14:return r=t.type,i=ms(r,t.pendingProps),i=ms(r.type,i),_P(e,t,r,i,n);case 15:return BO(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:ms(r,i),I3(e,t),t.tag=1,Io(r)?(e=!0,C4(t)):e=!1,S0(t,n),fO(t,r,i),R6(t,r,i,n),N6(null,t,r,!0,e,n);case 19:return WO(e,t,n);case 22:return zO(e,t,n)}throw Error(De(156,t.tag))};function iD(e,t){return AR(e,t)}function aZ(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Na(e,t,n,r){return new aZ(e,t,n,r)}function W9(e){return e=e.prototype,!(!e||!e.isReactComponent)}function sZ(e){if(typeof e=="function")return W9(e)?1:0;if(e!=null){if(e=e.$$typeof,e===s9)return 11;if(e===l9)return 14}return 2}function rd(e,t){var n=e.alternate;return n===null?(n=Na(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function D3(e,t,n,r,i,o){var a=2;if(r=e,typeof e=="function")W9(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case qp:return Xf(n.children,i,o,t);case a9:a=8,i|=8;break;case r6:return e=Na(12,n,t,i|2),e.elementType=r6,e.lanes=o,e;case i6:return e=Na(13,n,t,i),e.elementType=i6,e.lanes=o,e;case o6:return e=Na(19,n,t,i),e.elementType=o6,e.lanes=o,e;case hR:return $5(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case dR:a=10;break e;case fR:a=9;break e;case s9:a=11;break e;case l9:a=14;break e;case Dc:a=16,r=null;break e}throw Error(De(130,e==null?e:typeof e,""))}return t=Na(a,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Xf(e,t,n,r){return e=Na(7,e,r,t),e.lanes=n,e}function $5(e,t,n,r){return e=Na(22,e,r,t),e.elementType=hR,e.lanes=n,e.stateNode={isHidden:!1},e}function _x(e,t,n){return e=Na(6,e,null,t),e.lanes=n,e}function kx(e,t,n){return t=Na(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function lZ(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ox(0),this.expirationTimes=ox(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ox(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function V9(e,t,n,r,i,o,a,s,l){return e=new lZ(e,t,n,s,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Na(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},E9(o),e}function uZ(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}t(),e.exports=ma})(zl);const Ty=Q7(zl.exports);var zP=zl.exports;t6.createRoot=zP.createRoot,t6.hydrateRoot=zP.hydrateRoot;var ks=Boolean(globalThis?.document)?C.exports.useLayoutEffect:C.exports.useEffect,G5={exports:{}},j5={};/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var pZ=C.exports,gZ=Symbol.for("react.element"),mZ=Symbol.for("react.fragment"),vZ=Object.prototype.hasOwnProperty,yZ=pZ.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,SZ={key:!0,ref:!0,__self:!0,__source:!0};function lD(e,t,n){var r,i={},o=null,a=null;n!==void 0&&(o=""+n),t.key!==void 0&&(o=""+t.key),t.ref!==void 0&&(a=t.ref);for(r in t)vZ.call(t,r)&&!SZ.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps,t)i[r]===void 0&&(i[r]=t[r]);return{$$typeof:gZ,type:e,key:o,ref:a,props:i,_owner:yZ.current}}j5.Fragment=mZ;j5.jsx=lD;j5.jsxs=lD;(function(e){e.exports=j5})(G5);const An=G5.exports.Fragment,b=G5.exports.jsx,Q=G5.exports.jsxs;var Y9=C.exports.createContext({});Y9.displayName="ColorModeContext";function Jv(){const e=C.exports.useContext(Y9);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}var Ly={light:"chakra-ui-light",dark:"chakra-ui-dark"};function bZ(e={}){const{preventTransition:t=!0}=e,n={setDataset:r=>{const i=t?n.preventTransition():void 0;document.documentElement.dataset.theme=r,document.documentElement.style.colorScheme=r,i?.()},setClassName(r){document.body.classList.add(r?Ly.dark:Ly.light),document.body.classList.remove(r?Ly.light:Ly.dark)},query(){return window.matchMedia("(prefers-color-scheme: dark)")},getSystemTheme(r){return n.query().matches??r==="dark"?"dark":"light"},addListener(r){const i=n.query(),o=a=>{r(a.matches?"dark":"light")};return typeof i.addListener=="function"?i.addListener(o):i.addEventListener("change",o),()=>{typeof i.removeListener=="function"?i.removeListener(o):i.removeEventListener("change",o)}},preventTransition(){const r=document.createElement("style");return r.appendChild(document.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(r),()=>{window.getComputedStyle(document.body),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.head.removeChild(r)})})}}};return n}var xZ="chakra-ui-color-mode";function wZ(e){return{ssr:!1,type:"localStorage",get(t){if(!globalThis?.document)return t;let n;try{n=localStorage.getItem(e)||t}catch{}return n||t},set(t){try{localStorage.setItem(e,t)}catch{}}}}var CZ=wZ(xZ),FP=()=>{};function $P(e,t){return e.type==="cookie"&&e.ssr?e.get(t):t}function uD(e){const{value:t,children:n,options:{useSystemColorMode:r,initialColorMode:i,disableTransitionOnChange:o}={},colorModeManager:a=CZ}=e,s=i==="dark"?"dark":"light",[l,u]=C.exports.useState(()=>$P(a,s)),[h,g]=C.exports.useState(()=>$P(a)),{getSystemTheme:m,setClassName:v,setDataset:S,addListener:w}=C.exports.useMemo(()=>bZ({preventTransition:o}),[o]),k=i==="system"&&!l?h:l,P=C.exports.useCallback(M=>{const R=M==="system"?m():M;u(R),v(R==="dark"),S(R),a.set(R)},[a,m,v,S]);ks(()=>{i==="system"&&g(m())},[]),C.exports.useEffect(()=>{const M=a.get();if(M){P(M);return}if(i==="system"){P("system");return}P(s)},[a,s,i,P]);const E=C.exports.useCallback(()=>{P(k==="dark"?"light":"dark")},[k,P]);C.exports.useEffect(()=>{if(!!r)return w(P)},[r,w,P]);const T=C.exports.useMemo(()=>({colorMode:t??k,toggleColorMode:t?FP:E,setColorMode:t?FP:P,forced:t!==void 0}),[k,E,P,t]);return b(Y9.Provider,{value:T,children:n})}uD.displayName="ColorModeProvider";var q6={exports:{}};(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,a=9007199254740991,s="[object Arguments]",l="[object Array]",u="[object AsyncFunction]",h="[object Boolean]",g="[object Date]",m="[object Error]",v="[object Function]",S="[object GeneratorFunction]",w="[object Map]",k="[object Number]",P="[object Null]",E="[object Object]",T="[object Proxy]",M="[object RegExp]",R="[object Set]",O="[object String]",D="[object Undefined]",B="[object WeakMap]",$="[object ArrayBuffer]",W="[object DataView]",j="[object Float32Array]",te="[object Float64Array]",V="[object Int8Array]",J="[object Int16Array]",re="[object Int32Array]",ee="[object Uint8Array]",K="[object Uint8ClampedArray]",G="[object Uint16Array]",Z="[object Uint32Array]",ce=/[\\^$.*+?()[\]{}|]/g,me=/^\[object .+?Constructor\]$/,Re=/^(?:0|[1-9]\d*)$/,xe={};xe[j]=xe[te]=xe[V]=xe[J]=xe[re]=xe[ee]=xe[K]=xe[G]=xe[Z]=!0,xe[s]=xe[l]=xe[$]=xe[h]=xe[W]=xe[g]=xe[m]=xe[v]=xe[w]=xe[k]=xe[E]=xe[M]=xe[R]=xe[O]=xe[B]=!1;var Se=typeof bs=="object"&&bs&&bs.Object===Object&&bs,Me=typeof self=="object"&&self&&self.Object===Object&&self,_e=Se||Me||Function("return this")(),Je=t&&!t.nodeType&&t,Xe=Je&&!0&&e&&!e.nodeType&&e,ft=Xe&&Xe.exports===Je,_t=ft&&Se.process,gt=function(){try{var U=Xe&&Xe.require&&Xe.require("util").types;return U||_t&&_t.binding&&_t.binding("util")}catch{}}(),dt=gt&>.isTypedArray;function mt(U,ne,he){switch(he.length){case 0:return U.call(ne);case 1:return U.call(ne,he[0]);case 2:return U.call(ne,he[0],he[1]);case 3:return U.call(ne,he[0],he[1],he[2])}return U.apply(ne,he)}function Pe(U,ne){for(var he=-1,Ye=Array(U);++he-1}function I1(U,ne){var he=this.__data__,Ye=Za(he,U);return Ye<0?(++this.size,he.push([U,ne])):he[Ye][1]=ne,this}Bo.prototype.clear=Od,Bo.prototype.delete=M1,Bo.prototype.get=Wu,Bo.prototype.has=Dd,Bo.prototype.set=I1;function Ds(U){var ne=-1,he=U==null?0:U.length;for(this.clear();++ne1?he[Bt-1]:void 0,vt=Bt>2?he[2]:void 0;for(hn=U.length>3&&typeof hn=="function"?(Bt--,hn):void 0,vt&&zh(he[0],he[1],vt)&&(hn=Bt<3?void 0:hn,Bt=1),ne=Object(ne);++Ye-1&&U%1==0&&U0){if(++ne>=i)return arguments[0]}else ne=0;return U.apply(void 0,arguments)}}function Yu(U){if(U!=null){try{return ln.call(U)}catch{}try{return U+""}catch{}}return""}function xa(U,ne){return U===ne||U!==U&&ne!==ne}var $d=Ul(function(){return arguments}())?Ul:function(U){return Un(U)&&on.call(U,"callee")&&!He.call(U,"callee")},Yl=Array.isArray;function Ht(U){return U!=null&&$h(U.length)&&!Ku(U)}function Fh(U){return Un(U)&&Ht(U)}var qu=Qt||G1;function Ku(U){if(!Ho(U))return!1;var ne=Bs(U);return ne==v||ne==S||ne==u||ne==T}function $h(U){return typeof U=="number"&&U>-1&&U%1==0&&U<=a}function Ho(U){var ne=typeof U;return U!=null&&(ne=="object"||ne=="function")}function Un(U){return U!=null&&typeof U=="object"}function Hd(U){if(!Un(U)||Bs(U)!=E)return!1;var ne=un(U);if(ne===null)return!0;var he=on.call(ne,"constructor")&&ne.constructor;return typeof he=="function"&&he instanceof he&&ln.call(he)==Zt}var Hh=dt?et(dt):Uu;function Wd(U){return jr(U,Wh(U))}function Wh(U){return Ht(U)?W1(U,!0):zs(U)}var cn=Qa(function(U,ne,he,Ye){zo(U,ne,he,Ye)});function Wt(U){return function(){return U}}function Vh(U){return U}function G1(){return!1}e.exports=cn})(q6,q6.exports);const bl=q6.exports;function Es(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}function Hf(e,...t){return _Z(e)?e(...t):e}var _Z=e=>typeof e=="function",kZ=e=>/!(important)?$/.test(e),HP=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,K6=(e,t)=>n=>{const r=String(t),i=kZ(r),o=HP(r),a=e?`${e}.${o}`:o;let s=Es(n.__cssMap)&&a in n.__cssMap?n.__cssMap[a].varRef:t;return s=HP(s),i?`${s} !important`:s};function bv(e){const{scale:t,transform:n,compose:r}=e;return(o,a)=>{const s=K6(t,o)(a);let l=n?.(s,a)??s;return r&&(l=r(l,a)),l}}var Ay=(...e)=>t=>e.reduce((n,r)=>r(n),t);function fs(e,t){return n=>{const r={property:n,scale:e};return r.transform=bv({scale:e,transform:t}),r}}var EZ=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function PZ(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:EZ(t),transform:n?bv({scale:n,compose:r}):r}}var cD=["rotate(var(--chakra-rotate, 0))","scaleX(var(--chakra-scale-x, 1))","scaleY(var(--chakra-scale-y, 1))","skewX(var(--chakra-skew-x, 0))","skewY(var(--chakra-skew-y, 0))"];function TZ(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...cD].join(" ")}function LZ(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...cD].join(" ")}var AZ={"--chakra-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-sepia":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-drop-shadow":"var(--chakra-empty,/*!*/ /*!*/)",filter:["var(--chakra-blur)","var(--chakra-brightness)","var(--chakra-contrast)","var(--chakra-grayscale)","var(--chakra-hue-rotate)","var(--chakra-invert)","var(--chakra-saturate)","var(--chakra-sepia)","var(--chakra-drop-shadow)"].join(" ")},MZ={backdropFilter:["var(--chakra-backdrop-blur)","var(--chakra-backdrop-brightness)","var(--chakra-backdrop-contrast)","var(--chakra-backdrop-grayscale)","var(--chakra-backdrop-hue-rotate)","var(--chakra-backdrop-invert)","var(--chakra-backdrop-opacity)","var(--chakra-backdrop-saturate)","var(--chakra-backdrop-sepia)"].join(" "),"--chakra-backdrop-blur":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-brightness":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-contrast":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-grayscale":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-hue-rotate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-invert":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-opacity":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-saturate":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-backdrop-sepia":"var(--chakra-empty,/*!*/ /*!*/)"};function IZ(e){return{"--chakra-ring-offset-shadow":"var(--chakra-ring-inset) 0 0 0 var(--chakra-ring-offset-width) var(--chakra-ring-offset-color)","--chakra-ring-shadow":"var(--chakra-ring-inset) 0 0 0 calc(var(--chakra-ring-width) + var(--chakra-ring-offset-width)) var(--chakra-ring-color)","--chakra-ring-width":e,boxShadow:["var(--chakra-ring-offset-shadow)","var(--chakra-ring-shadow)","var(--chakra-shadow, 0 0 #0000)"].join(", ")}}var RZ={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},dD="& > :not(style) ~ :not(style)",OZ={[dD]:{marginInlineStart:"calc(var(--chakra-space-x) * calc(1 - var(--chakra-space-x-reverse)))",marginInlineEnd:"calc(var(--chakra-space-x) * var(--chakra-space-x-reverse))"}},DZ={[dD]:{marginTop:"calc(var(--chakra-space-y) * calc(1 - var(--chakra-space-y-reverse)))",marginBottom:"calc(var(--chakra-space-y) * var(--chakra-space-y-reverse))"}},X6={"to-t":"to top","to-tr":"to top right","to-r":"to right","to-br":"to bottom right","to-b":"to bottom","to-bl":"to bottom left","to-l":"to left","to-tl":"to top left"},NZ=new Set(Object.values(X6)),fD=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),BZ=e=>e.trim();function zZ(e,t){var n;if(e==null||fD.has(e))return e;const r=/(?^[a-z-A-Z]+)\((?(.*))\)/g,{type:i,values:o}=((n=r.exec(e))==null?void 0:n.groups)??{};if(!i||!o)return e;const a=i.includes("-gradient")?i:`${i}-gradient`,[s,...l]=o.split(",").map(BZ).filter(Boolean);if(l?.length===0)return e;const u=s in X6?X6[s]:s;l.unshift(u);const h=l.map(g=>{if(NZ.has(g))return g;const m=g.indexOf(" "),[v,S]=m!==-1?[g.substr(0,m),g.substr(m+1)]:[g],w=hD(S)?S:S&&S.split(" "),k=`colors.${v}`,P=k in t.__cssMap?t.__cssMap[k].varRef:v;return w?[P,...Array.isArray(w)?w:[w]].join(" "):P});return`${a}(${h.join(", ")})`}var hD=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),FZ=(e,t)=>zZ(e,t??{});function $Z(e){return/^var\(--.+\)$/.test(e)}var HZ=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},al=e=>t=>`${e}(${t})`,an={filter(e){return e!=="auto"?e:AZ},backdropFilter(e){return e!=="auto"?e:MZ},ring(e){return IZ(an.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?TZ():e==="auto-gpu"?LZ():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=HZ(e);return t||typeof e=="number"?`${e}px`:e},fraction(e){return typeof e!="number"||e>1?e:`${e*100}%`},float(e,t){const n={left:"right",right:"left"};return t.direction==="rtl"?n[e]:e},degree(e){if($Z(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:FZ,blur:al("blur"),opacity:al("opacity"),brightness:al("brightness"),contrast:al("contrast"),dropShadow:al("drop-shadow"),grayscale:al("grayscale"),hueRotate:al("hue-rotate"),invert:al("invert"),saturate:al("saturate"),sepia:al("sepia"),bgImage(e){return e==null||hD(e)||fD.has(e)?e:`url(${e})`},outline(e){const t=String(e)==="0"||String(e)==="none";return e!==null&&t?{outline:"2px solid transparent",outlineOffset:"2px"}:{outline:e}},flexDirection(e){const{space:t,divide:n}=RZ[e]??{},r={flexDirection:e};return t&&(r[t]=1),n&&(r[n]=1),r}},oe={borderWidths:fs("borderWidths"),borderStyles:fs("borderStyles"),colors:fs("colors"),borders:fs("borders"),radii:fs("radii",an.px),space:fs("space",Ay(an.vh,an.px)),spaceT:fs("space",Ay(an.vh,an.px)),degreeT(e){return{property:e,transform:an.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:bv({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:fs("sizes",Ay(an.vh,an.px)),sizesT:fs("sizes",Ay(an.vh,an.fraction)),shadows:fs("shadows"),logical:PZ,blur:fs("blur",an.blur)},N3={background:oe.colors("background"),backgroundColor:oe.colors("backgroundColor"),backgroundImage:oe.propT("backgroundImage",an.bgImage),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:an.bgClip},bgSize:oe.prop("backgroundSize"),bgPosition:oe.prop("backgroundPosition"),bg:oe.colors("background"),bgColor:oe.colors("backgroundColor"),bgPos:oe.prop("backgroundPosition"),bgRepeat:oe.prop("backgroundRepeat"),bgAttachment:oe.prop("backgroundAttachment"),bgGradient:oe.propT("backgroundImage",an.gradient),bgClip:{transform:an.bgClip}};Object.assign(N3,{bgImage:N3.backgroundImage,bgImg:N3.backgroundImage});var gn={border:oe.borders("border"),borderWidth:oe.borderWidths("borderWidth"),borderStyle:oe.borderStyles("borderStyle"),borderColor:oe.colors("borderColor"),borderRadius:oe.radii("borderRadius"),borderTop:oe.borders("borderTop"),borderBlockStart:oe.borders("borderBlockStart"),borderTopLeftRadius:oe.radii("borderTopLeftRadius"),borderStartStartRadius:oe.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:oe.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:oe.radii("borderTopRightRadius"),borderStartEndRadius:oe.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:oe.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:oe.borders("borderRight"),borderInlineEnd:oe.borders("borderInlineEnd"),borderBottom:oe.borders("borderBottom"),borderBlockEnd:oe.borders("borderBlockEnd"),borderBottomLeftRadius:oe.radii("borderBottomLeftRadius"),borderBottomRightRadius:oe.radii("borderBottomRightRadius"),borderLeft:oe.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:oe.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:oe.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:oe.borders(["borderLeft","borderRight"]),borderInline:oe.borders("borderInline"),borderY:oe.borders(["borderTop","borderBottom"]),borderBlock:oe.borders("borderBlock"),borderTopWidth:oe.borderWidths("borderTopWidth"),borderBlockStartWidth:oe.borderWidths("borderBlockStartWidth"),borderTopColor:oe.colors("borderTopColor"),borderBlockStartColor:oe.colors("borderBlockStartColor"),borderTopStyle:oe.borderStyles("borderTopStyle"),borderBlockStartStyle:oe.borderStyles("borderBlockStartStyle"),borderBottomWidth:oe.borderWidths("borderBottomWidth"),borderBlockEndWidth:oe.borderWidths("borderBlockEndWidth"),borderBottomColor:oe.colors("borderBottomColor"),borderBlockEndColor:oe.colors("borderBlockEndColor"),borderBottomStyle:oe.borderStyles("borderBottomStyle"),borderBlockEndStyle:oe.borderStyles("borderBlockEndStyle"),borderLeftWidth:oe.borderWidths("borderLeftWidth"),borderInlineStartWidth:oe.borderWidths("borderInlineStartWidth"),borderLeftColor:oe.colors("borderLeftColor"),borderInlineStartColor:oe.colors("borderInlineStartColor"),borderLeftStyle:oe.borderStyles("borderLeftStyle"),borderInlineStartStyle:oe.borderStyles("borderInlineStartStyle"),borderRightWidth:oe.borderWidths("borderRightWidth"),borderInlineEndWidth:oe.borderWidths("borderInlineEndWidth"),borderRightColor:oe.colors("borderRightColor"),borderInlineEndColor:oe.colors("borderInlineEndColor"),borderRightStyle:oe.borderStyles("borderRightStyle"),borderInlineEndStyle:oe.borderStyles("borderInlineEndStyle"),borderTopRadius:oe.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:oe.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:oe.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:oe.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(gn,{rounded:gn.borderRadius,roundedTop:gn.borderTopRadius,roundedTopLeft:gn.borderTopLeftRadius,roundedTopRight:gn.borderTopRightRadius,roundedTopStart:gn.borderStartStartRadius,roundedTopEnd:gn.borderStartEndRadius,roundedBottom:gn.borderBottomRadius,roundedBottomLeft:gn.borderBottomLeftRadius,roundedBottomRight:gn.borderBottomRightRadius,roundedBottomStart:gn.borderEndStartRadius,roundedBottomEnd:gn.borderEndEndRadius,roundedLeft:gn.borderLeftRadius,roundedRight:gn.borderRightRadius,roundedStart:gn.borderInlineStartRadius,roundedEnd:gn.borderInlineEndRadius,borderStart:gn.borderInlineStart,borderEnd:gn.borderInlineEnd,borderTopStartRadius:gn.borderStartStartRadius,borderTopEndRadius:gn.borderStartEndRadius,borderBottomStartRadius:gn.borderEndStartRadius,borderBottomEndRadius:gn.borderEndEndRadius,borderStartRadius:gn.borderInlineStartRadius,borderEndRadius:gn.borderInlineEndRadius,borderStartWidth:gn.borderInlineStartWidth,borderEndWidth:gn.borderInlineEndWidth,borderStartColor:gn.borderInlineStartColor,borderEndColor:gn.borderInlineEndColor,borderStartStyle:gn.borderInlineStartStyle,borderEndStyle:gn.borderInlineEndStyle});var WZ={color:oe.colors("color"),textColor:oe.colors("color"),fill:oe.colors("fill"),stroke:oe.colors("stroke")},Z6={boxShadow:oe.shadows("boxShadow"),mixBlendMode:!0,blendMode:oe.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:oe.prop("backgroundBlendMode"),opacity:!0};Object.assign(Z6,{shadow:Z6.boxShadow});var VZ={filter:{transform:an.filter},blur:oe.blur("--chakra-blur"),brightness:oe.propT("--chakra-brightness",an.brightness),contrast:oe.propT("--chakra-contrast",an.contrast),hueRotate:oe.degreeT("--chakra-hue-rotate"),invert:oe.propT("--chakra-invert",an.invert),saturate:oe.propT("--chakra-saturate",an.saturate),dropShadow:oe.propT("--chakra-drop-shadow",an.dropShadow),backdropFilter:{transform:an.backdropFilter},backdropBlur:oe.blur("--chakra-backdrop-blur"),backdropBrightness:oe.propT("--chakra-backdrop-brightness",an.brightness),backdropContrast:oe.propT("--chakra-backdrop-contrast",an.contrast),backdropHueRotate:oe.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:oe.propT("--chakra-backdrop-invert",an.invert),backdropSaturate:oe.propT("--chakra-backdrop-saturate",an.saturate)},B4={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:an.flexDirection},experimental_spaceX:{static:OZ,transform:bv({scale:"space",transform:e=>e!==null?{"--chakra-space-x":e}:null})},experimental_spaceY:{static:DZ,transform:bv({scale:"space",transform:e=>e!=null?{"--chakra-space-y":e}:null})},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:oe.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:oe.space("gap"),rowGap:oe.space("rowGap"),columnGap:oe.space("columnGap")};Object.assign(B4,{flexDir:B4.flexDirection});var pD={gridGap:oe.space("gridGap"),gridColumnGap:oe.space("gridColumnGap"),gridRowGap:oe.space("gridRowGap"),gridColumn:!0,gridRow:!0,gridAutoFlow:!0,gridAutoColumns:!0,gridColumnStart:!0,gridColumnEnd:!0,gridRowStart:!0,gridRowEnd:!0,gridAutoRows:!0,gridTemplate:!0,gridTemplateColumns:!0,gridTemplateRows:!0,gridTemplateAreas:!0,gridArea:!0},UZ={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:an.outline},outlineOffset:!0,outlineColor:oe.colors("outlineColor")},Ma={width:oe.sizesT("width"),inlineSize:oe.sizesT("inlineSize"),height:oe.sizes("height"),blockSize:oe.sizes("blockSize"),boxSize:oe.sizes(["width","height"]),minWidth:oe.sizes("minWidth"),minInlineSize:oe.sizes("minInlineSize"),minHeight:oe.sizes("minHeight"),minBlockSize:oe.sizes("minBlockSize"),maxWidth:oe.sizes("maxWidth"),maxInlineSize:oe.sizes("maxInlineSize"),maxHeight:oe.sizes("maxHeight"),maxBlockSize:oe.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:oe.propT("float",an.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(Ma,{w:Ma.width,h:Ma.height,minW:Ma.minWidth,maxW:Ma.maxWidth,minH:Ma.minHeight,maxH:Ma.maxHeight,overscroll:Ma.overscrollBehavior,overscrollX:Ma.overscrollBehaviorX,overscrollY:Ma.overscrollBehaviorY});var GZ={listStyleType:!0,listStylePosition:!0,listStylePos:oe.prop("listStylePosition"),listStyleImage:!0,listStyleImg:oe.prop("listStyleImage")};function jZ(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,a)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const s=t.get(r);if(s.has(i))return s.get(i);const l=e(r,i,o,a);return s.set(i,l),l}},qZ=YZ(jZ),KZ={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},XZ={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},Ex=(e,t,n)=>{const r={},i=qZ(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},ZZ={srOnly:{transform(e){return e===!0?KZ:e==="focusable"?XZ:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>Ex(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>Ex(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>Ex(t,e,n)}},Nm={position:!0,pos:oe.prop("position"),zIndex:oe.prop("zIndex","zIndices"),inset:oe.spaceT("inset"),insetX:oe.spaceT(["left","right"]),insetInline:oe.spaceT("insetInline"),insetY:oe.spaceT(["top","bottom"]),insetBlock:oe.spaceT("insetBlock"),top:oe.spaceT("top"),insetBlockStart:oe.spaceT("insetBlockStart"),bottom:oe.spaceT("bottom"),insetBlockEnd:oe.spaceT("insetBlockEnd"),left:oe.spaceT("left"),insetInlineStart:oe.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:oe.spaceT("right"),insetInlineEnd:oe.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(Nm,{insetStart:Nm.insetInlineStart,insetEnd:Nm.insetInlineEnd});var QZ={ring:{transform:an.ring},ringColor:oe.colors("--chakra-ring-color"),ringOffset:oe.prop("--chakra-ring-offset-width"),ringOffsetColor:oe.colors("--chakra-ring-offset-color"),ringInset:oe.prop("--chakra-ring-inset")},Zn={margin:oe.spaceT("margin"),marginTop:oe.spaceT("marginTop"),marginBlockStart:oe.spaceT("marginBlockStart"),marginRight:oe.spaceT("marginRight"),marginInlineEnd:oe.spaceT("marginInlineEnd"),marginBottom:oe.spaceT("marginBottom"),marginBlockEnd:oe.spaceT("marginBlockEnd"),marginLeft:oe.spaceT("marginLeft"),marginInlineStart:oe.spaceT("marginInlineStart"),marginX:oe.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:oe.spaceT("marginInline"),marginY:oe.spaceT(["marginTop","marginBottom"]),marginBlock:oe.spaceT("marginBlock"),padding:oe.space("padding"),paddingTop:oe.space("paddingTop"),paddingBlockStart:oe.space("paddingBlockStart"),paddingRight:oe.space("paddingRight"),paddingBottom:oe.space("paddingBottom"),paddingBlockEnd:oe.space("paddingBlockEnd"),paddingLeft:oe.space("paddingLeft"),paddingInlineStart:oe.space("paddingInlineStart"),paddingInlineEnd:oe.space("paddingInlineEnd"),paddingX:oe.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:oe.space("paddingInline"),paddingY:oe.space(["paddingTop","paddingBottom"]),paddingBlock:oe.space("paddingBlock")};Object.assign(Zn,{m:Zn.margin,mt:Zn.marginTop,mr:Zn.marginRight,me:Zn.marginInlineEnd,marginEnd:Zn.marginInlineEnd,mb:Zn.marginBottom,ml:Zn.marginLeft,ms:Zn.marginInlineStart,marginStart:Zn.marginInlineStart,mx:Zn.marginX,my:Zn.marginY,p:Zn.padding,pt:Zn.paddingTop,py:Zn.paddingY,px:Zn.paddingX,pb:Zn.paddingBottom,pl:Zn.paddingLeft,ps:Zn.paddingInlineStart,paddingStart:Zn.paddingInlineStart,pr:Zn.paddingRight,pe:Zn.paddingInlineEnd,paddingEnd:Zn.paddingInlineEnd});var JZ={textDecorationColor:oe.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:oe.shadows("textShadow")},eQ={clipPath:!0,transform:oe.propT("transform",an.transform),transformOrigin:!0,translateX:oe.spaceT("--chakra-translate-x"),translateY:oe.spaceT("--chakra-translate-y"),skewX:oe.degreeT("--chakra-skew-x"),skewY:oe.degreeT("--chakra-skew-y"),scaleX:oe.prop("--chakra-scale-x"),scaleY:oe.prop("--chakra-scale-y"),scale:oe.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:oe.degreeT("--chakra-rotate")},tQ={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:oe.prop("transitionDuration","transition.duration"),transitionProperty:oe.prop("transitionProperty","transition.property"),transitionTimingFunction:oe.prop("transitionTimingFunction","transition.easing")},nQ={fontFamily:oe.prop("fontFamily","fonts"),fontSize:oe.prop("fontSize","fontSizes",an.px),fontWeight:oe.prop("fontWeight","fontWeights"),lineHeight:oe.prop("lineHeight","lineHeights"),letterSpacing:oe.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},rQ={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:oe.spaceT("scrollMargin"),scrollMarginTop:oe.spaceT("scrollMarginTop"),scrollMarginBottom:oe.spaceT("scrollMarginBottom"),scrollMarginLeft:oe.spaceT("scrollMarginLeft"),scrollMarginRight:oe.spaceT("scrollMarginRight"),scrollMarginX:oe.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:oe.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:oe.spaceT("scrollPadding"),scrollPaddingTop:oe.spaceT("scrollPaddingTop"),scrollPaddingBottom:oe.spaceT("scrollPaddingBottom"),scrollPaddingLeft:oe.spaceT("scrollPaddingLeft"),scrollPaddingRight:oe.spaceT("scrollPaddingRight"),scrollPaddingX:oe.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:oe.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function gD(e){return Es(e)&&e.reference?e.reference:String(e)}var Y5=(e,...t)=>t.map(gD).join(` ${e} `).replace(/calc/g,""),WP=(...e)=>`calc(${Y5("+",...e)})`,VP=(...e)=>`calc(${Y5("-",...e)})`,Q6=(...e)=>`calc(${Y5("*",...e)})`,UP=(...e)=>`calc(${Y5("/",...e)})`,GP=e=>{const t=gD(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:Q6(t,-1)},Of=Object.assign(e=>({add:(...t)=>Of(WP(e,...t)),subtract:(...t)=>Of(VP(e,...t)),multiply:(...t)=>Of(Q6(e,...t)),divide:(...t)=>Of(UP(e,...t)),negate:()=>Of(GP(e)),toString:()=>e.toString()}),{add:WP,subtract:VP,multiply:Q6,divide:UP,negate:GP});function iQ(e,t="-"){return e.replace(/\s+/g,t)}function oQ(e){const t=iQ(e.toString());return sQ(aQ(t))}function aQ(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function sQ(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function lQ(e,t=""){return[t,e].filter(Boolean).join("-")}function uQ(e,t){return`var(${e}${t?`, ${t}`:""})`}function cQ(e,t=""){return oQ(`--${lQ(e,t)}`)}function Bn(e,t,n){const r=cQ(e,n);return{variable:r,reference:uQ(r,t)}}function dQ(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function fQ(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function J6(e){if(e==null)return e;const{unitless:t}=fQ(e);return t||typeof e=="number"?`${e}px`:e}var mD=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,q9=e=>Object.fromEntries(Object.entries(e).sort(mD));function jP(e){const t=q9(e);return Object.assign(Object.values(t),t)}function hQ(e){const t=Object.keys(q9(e));return new Set(t)}function YP(e){if(!e)return e;e=J6(e)??e;const t=e.endsWith("px")?-1:-.0625;return typeof e=="number"?`${e+t}`:e.replace(/(\d+\.?\d*)/u,n=>`${parseFloat(n)+t}`)}function fm(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${J6(e)})`),t&&n.push("and",`(max-width: ${J6(t)})`),n.join(" ")}function pQ(e){if(!e)return null;e.base=e.base??"0px";const t=jP(e),n=Object.entries(e).sort(mD).map(([o,a],s,l)=>{let[,u]=l[s+1]??[];return u=parseFloat(u)>0?YP(u):void 0,{_minW:YP(a),breakpoint:o,minW:a,maxW:u,maxWQuery:fm(null,u),minWQuery:fm(a),minMaxQuery:fm(a,u)}}),r=hQ(e),i=Array.from(r.values());return{keys:r,normalized:t,isResponsive(o){const a=Object.keys(o);return a.length>0&&a.every(s=>r.has(s))},asObject:q9(e),asArray:jP(e),details:n,media:[null,...t.map(o=>fm(o)).slice(1)],toArrayValue(o){if(!Es(o))throw new Error("toArrayValue: value must be an object");const a=i.map(s=>o[s]??null);for(;dQ(a)===null;)a.pop();return a},toObjectValue(o){if(!Array.isArray(o))throw new Error("toObjectValue: value must be an array");return o.reduce((a,s,l)=>{const u=i[l];return u!=null&&s!=null&&(a[u]=s),a},{})}}}var ki={hover:(e,t)=>`${e}:hover ${t}, ${e}[data-hover] ${t}`,focus:(e,t)=>`${e}:focus ${t}, ${e}[data-focus] ${t}`,focusVisible:(e,t)=>`${e}:focus-visible ${t}`,focusWithin:(e,t)=>`${e}:focus-within ${t}`,active:(e,t)=>`${e}:active ${t}, ${e}[data-active] ${t}`,disabled:(e,t)=>`${e}:disabled ${t}, ${e}[data-disabled] ${t}`,invalid:(e,t)=>`${e}:invalid ${t}, ${e}[data-invalid] ${t}`,checked:(e,t)=>`${e}:checked ${t}, ${e}[data-checked] ${t}`,indeterminate:(e,t)=>`${e}:indeterminate ${t}, ${e}[aria-checked=mixed] ${t}, ${e}[data-indeterminate] ${t}`,readOnly:(e,t)=>`${e}:read-only ${t}, ${e}[readonly] ${t}, ${e}[data-read-only] ${t}`,expanded:(e,t)=>`${e}:read-only ${t}, ${e}[aria-expanded=true] ${t}, ${e}[data-expanded] ${t}`,placeholderShown:(e,t)=>`${e}:placeholder-shown ${t}`},Tc=e=>vD(t=>e(t,"&"),"[role=group]","[data-group]",".group"),su=e=>vD(t=>e(t,"~ &"),"[data-peer]",".peer"),vD=(e,...t)=>t.map(e).join(", "),q5={_hover:"&:hover, &[data-hover]",_active:"&:active, &[data-active]",_focus:"&:focus, &[data-focus]",_highlighted:"&[data-highlighted]",_focusWithin:"&:focus-within",_focusVisible:"&:focus-visible, &[data-focus-visible]",_disabled:"&:disabled, &[disabled], &[aria-disabled=true], &[data-disabled]",_readOnly:"&[aria-readonly=true], &[readonly], &[data-readonly]",_before:"&::before",_after:"&::after",_empty:"&:empty",_expanded:"&[aria-expanded=true], &[data-expanded]",_checked:"&[aria-checked=true], &[data-checked]",_grabbed:"&[aria-grabbed=true], &[data-grabbed]",_pressed:"&[aria-pressed=true], &[data-pressed]",_invalid:"&[aria-invalid=true], &[data-invalid]",_valid:"&[data-valid], &[data-state=valid]",_loading:"&[data-loading], &[aria-busy=true]",_selected:"&[aria-selected=true], &[data-selected]",_hidden:"&[hidden], &[data-hidden]",_autofill:"&:-webkit-autofill",_even:"&:nth-of-type(even)",_odd:"&:nth-of-type(odd)",_first:"&:first-of-type",_last:"&:last-of-type",_notFirst:"&:not(:first-of-type)",_notLast:"&:not(:last-of-type)",_visited:"&:visited",_activeLink:"&[aria-current=page]",_activeStep:"&[aria-current=step]",_indeterminate:"&:indeterminate, &[aria-checked=mixed], &[data-indeterminate]",_groupHover:Tc(ki.hover),_peerHover:su(ki.hover),_groupFocus:Tc(ki.focus),_peerFocus:su(ki.focus),_groupFocusVisible:Tc(ki.focusVisible),_peerFocusVisible:su(ki.focusVisible),_groupActive:Tc(ki.active),_peerActive:su(ki.active),_groupDisabled:Tc(ki.disabled),_peerDisabled:su(ki.disabled),_groupInvalid:Tc(ki.invalid),_peerInvalid:su(ki.invalid),_groupChecked:Tc(ki.checked),_peerChecked:su(ki.checked),_groupFocusWithin:Tc(ki.focusWithin),_peerFocusWithin:su(ki.focusWithin),_peerPlaceholderShown:su(ki.placeholderShown),_placeholder:"&::placeholder",_placeholderShown:"&:placeholder-shown",_fullScreen:"&:fullscreen",_selection:"&::selection",_rtl:"[dir=rtl] &, &[dir=rtl]",_ltr:"[dir=ltr] &, &[dir=ltr]",_mediaDark:"@media (prefers-color-scheme: dark)",_mediaReduceMotion:"@media (prefers-reduced-motion: reduce)",_dark:".chakra-ui-dark &:not([data-theme]),[data-theme=dark] &:not([data-theme]),&[data-theme=dark]",_light:".chakra-ui-light &:not([data-theme]),[data-theme=light] &:not([data-theme]),&[data-theme=light]"},gQ=Object.keys(q5);function qP(e,t){return Bn(String(e).replace(/\./g,"-"),void 0,t)}function mQ(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:a,value:s}=o,{variable:l,reference:u}=qP(i,t?.cssVarPrefix);if(!a){if(i.startsWith("space")){const m=i.split("."),[v,...S]=m,w=`${v}.-${S.join(".")}`,k=Of.negate(s),P=Of.negate(u);r[w]={value:k,var:l,varRef:P}}n[l]=s,r[i]={value:s,var:l,varRef:u};continue}const h=m=>{const S=[String(i).split(".")[0],m].join(".");if(!e[S])return m;const{reference:k}=qP(S,t?.cssVarPrefix);return k},g=Es(s)?s:{default:s};n=bl(n,Object.entries(g).reduce((m,[v,S])=>{var w;const k=h(S);if(v==="default")return m[l]=k,m;const P=((w=q5)==null?void 0:w[v])??v;return m[P]={[l]:k},m},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function vQ(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function yQ(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var SQ=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur"];function bQ(e){return yQ(e,SQ)}function xQ(e){return e.semanticTokens}function wQ(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}function CQ({tokens:e,semanticTokens:t}){const n=Object.entries(eC(e)??{}).map(([i,o])=>[i,{isSemantic:!1,value:o}]),r=Object.entries(eC(t,1)??{}).map(([i,o])=>[i,{isSemantic:!0,value:o}]);return Object.fromEntries([...n,...r])}function eC(e,t=1/0){return!Es(e)&&!Array.isArray(e)||!t?e:Object.entries(e).reduce((n,[r,i])=>(Es(i)||Array.isArray(i)?Object.entries(eC(i,t-1)).forEach(([o,a])=>{n[`${r}.${o}`]=a}):n[r]=i,n),{})}function _Q(e){var t;const n=wQ(e),r=bQ(n),i=xQ(n),o=CQ({tokens:r,semanticTokens:i}),a=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:s,cssVars:l}=mQ(o,{cssVarPrefix:a});return Object.assign(n,{__cssVars:{...{"--chakra-ring-inset":"var(--chakra-empty,/*!*/ /*!*/)","--chakra-ring-offset-width":"0px","--chakra-ring-offset-color":"#fff","--chakra-ring-color":"rgba(66, 153, 225, 0.6)","--chakra-ring-offset-shadow":"0 0 #0000","--chakra-ring-shadow":"0 0 #0000","--chakra-space-x-reverse":"0","--chakra-space-y-reverse":"0"},...l},__cssMap:s,__breakpoints:pQ(n.breakpoints)}),n}var K9=bl({},N3,gn,WZ,B4,Ma,VZ,QZ,UZ,pD,ZZ,Nm,Z6,Zn,rQ,nQ,JZ,eQ,GZ,tQ),kQ=Object.assign({},Zn,Ma,B4,pD,Nm),EQ=Object.keys(kQ),PQ=[...Object.keys(K9),...gQ],TQ={...K9,...q5},LQ=e=>e in TQ,AQ=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const a in e){let s=Hf(e[a],t);if(s==null)continue;if(s=Es(s)&&n(s)?r(s):s,!Array.isArray(s)){o[a]=s;continue}const l=s.slice(0,i.length).length;for(let u=0;ue.startsWith("--")&&typeof t=="string"&&!IQ(t),OQ=(e,t)=>{if(t==null)return t;const n=a=>{var s,l;return(l=(s=e.__cssMap)==null?void 0:s[a])==null?void 0:l.varRef},r=a=>n(a)??a,[i,o]=MQ(t);return t=n(i)??r(o)??r(t),t};function DQ(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,a=!1)=>{var s;const l=Hf(o,r),u=AQ(l)(r);let h={};for(let g in u){const m=u[g];let v=Hf(m,r);g in n&&(g=n[g]),RQ(g,v)&&(v=OQ(r,v));let S=t[g];if(S===!0&&(S={property:g}),Es(v)){h[g]=h[g]??{},h[g]=bl({},h[g],i(v,!0));continue}let w=((s=S?.transform)==null?void 0:s.call(S,v,r,l))??v;w=S?.processResult?i(w,!0):w;const k=Hf(S?.property,r);if(!a&&S?.static){const P=Hf(S.static,r);h=bl({},h,P)}if(k&&Array.isArray(k)){for(const P of k)h[P]=w;continue}if(k){k==="&"&&Es(w)?h=bl({},h,w):h[k]=w;continue}if(Es(w)){h=bl({},h,w);continue}h[g]=w}return h};return i}var yD=e=>t=>DQ({theme:t,pseudos:q5,configs:K9})(e);function Jn(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function NQ(e,t){if(Array.isArray(e))return e;if(Es(e))return t(e);if(e!=null)return[e]}function BQ(e,t){for(let n=t+1;n{bl(u,{[T]:m?E[T]:{[P]:E[T]}})});continue}if(!v){m?bl(u,E):u[P]=E;continue}u[P]=E}}return u}}function FQ(e){return t=>{const{variant:n,size:r,theme:i}=t,o=zQ(i);return bl({},Hf(e.baseStyle??{},t),o(e,"sizes",r,t),o(e,"variants",n,t))}}function $Q(e,t,n){var r,i;return((i=(r=e.__cssMap)==null?void 0:r[`${t}.${n}`])==null?void 0:i.varRef)??n}function yn(e){return vQ(e,["styleConfig","size","variant","colorScheme"])}function HQ(e){if(e.sheet)return e.sheet;for(var t=0;t0?Ti(f1,--No):0,q0--,Hr===10&&(q0=1,X5--),Hr}function ca(){return Hr=No2||wv(Hr)>3?"":" "}function JQ(e,t){for(;--t&&ca()&&!(Hr<48||Hr>102||Hr>57&&Hr<65||Hr>70&&Hr<97););return e2(e,B3()+(t<6&&kl()==32&&ca()==32))}function nC(e){for(;ca();)switch(Hr){case e:return No;case 34:case 39:e!==34&&e!==39&&nC(Hr);break;case 40:e===41&&nC(e);break;case 92:ca();break}return No}function eJ(e,t){for(;ca()&&e+Hr!==47+10;)if(e+Hr===42+42&&kl()===47)break;return"/*"+e2(t,No-1)+"*"+K5(e===47?e:ca())}function tJ(e){for(;!wv(kl());)ca();return e2(e,No)}function nJ(e){return _D(F3("",null,null,null,[""],e=CD(e),0,[0],e))}function F3(e,t,n,r,i,o,a,s,l){for(var u=0,h=0,g=a,m=0,v=0,S=0,w=1,k=1,P=1,E=0,T="",M=i,R=o,O=r,D=T;k;)switch(S=E,E=ca()){case 40:if(S!=108&&Ti(D,g-1)==58){tC(D+=wn(z3(E),"&","&\f"),"&\f")!=-1&&(P=-1);break}case 34:case 39:case 91:D+=z3(E);break;case 9:case 10:case 13:case 32:D+=QQ(S);break;case 92:D+=JQ(B3()-1,7);continue;case 47:switch(kl()){case 42:case 47:My(rJ(eJ(ca(),B3()),t,n),l);break;default:D+="/"}break;case 123*w:s[u++]=pl(D)*P;case 125*w:case 59:case 0:switch(E){case 0:case 125:k=0;case 59+h:v>0&&pl(D)-g&&My(v>32?XP(D+";",r,n,g-1):XP(wn(D," ","")+";",r,n,g-2),l);break;case 59:D+=";";default:if(My(O=KP(D,t,n,u,h,i,s,T,M=[],R=[],g),o),E===123)if(h===0)F3(D,t,O,O,M,o,g,s,R);else switch(m===99&&Ti(D,3)===110?100:m){case 100:case 109:case 115:F3(e,O,O,r&&My(KP(e,O,O,0,0,i,s,T,i,M=[],g),R),i,R,g,s,r?M:R);break;default:F3(D,O,O,O,[""],R,0,s,R)}}u=h=v=0,w=P=1,T=D="",g=a;break;case 58:g=1+pl(D),v=S;default:if(w<1){if(E==123)--w;else if(E==125&&w++==0&&ZQ()==125)continue}switch(D+=K5(E),E*w){case 38:P=h>0?1:(D+="\f",-1);break;case 44:s[u++]=(pl(D)-1)*P,P=1;break;case 64:kl()===45&&(D+=z3(ca())),m=kl(),h=g=pl(T=D+=tJ(B3())),E++;break;case 45:S===45&&pl(D)==2&&(w=0)}}return o}function KP(e,t,n,r,i,o,a,s,l,u,h){for(var g=i-1,m=i===0?o:[""],v=Q9(m),S=0,w=0,k=0;S0?m[P]+" "+E:wn(E,/&\f/g,m[P])))&&(l[k++]=T);return Z5(e,t,n,i===0?X9:s,l,u,h)}function rJ(e,t,n){return Z5(e,t,n,SD,K5(XQ()),xv(e,2,-2),0)}function XP(e,t,n,r){return Z5(e,t,n,Z9,xv(e,0,r),xv(e,r+1,-1),r)}function x0(e,t){for(var n="",r=Q9(e),i=0;i6)switch(Ti(e,t+1)){case 109:if(Ti(e,t+4)!==45)break;case 102:return wn(e,/(.+:)(.+)-([^]+)/,"$1"+mn+"$2-$3$1"+z4+(Ti(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~tC(e,"stretch")?ED(wn(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Ti(e,t+1)!==115)break;case 6444:switch(Ti(e,pl(e)-3-(~tC(e,"!important")&&10))){case 107:return wn(e,":",":"+mn)+e;case 101:return wn(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+mn+(Ti(e,14)===45?"inline-":"")+"box$3$1"+mn+"$2$3$1"+zi+"$2box$3")+e}break;case 5936:switch(Ti(e,t+11)){case 114:return mn+e+zi+wn(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return mn+e+zi+wn(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return mn+e+zi+wn(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return mn+e+zi+e+e}return e}var fJ=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case Z9:t.return=ED(t.value,t.length);break;case bD:return x0([Ug(t,{value:wn(t.value,"@","@"+mn)})],i);case X9:if(t.length)return KQ(t.props,function(o){switch(qQ(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return x0([Ug(t,{props:[wn(o,/:(read-\w+)/,":"+z4+"$1")]})],i);case"::placeholder":return x0([Ug(t,{props:[wn(o,/:(plac\w+)/,":"+mn+"input-$1")]}),Ug(t,{props:[wn(o,/:(plac\w+)/,":"+z4+"$1")]}),Ug(t,{props:[wn(o,/:(plac\w+)/,zi+"input-$1")]})],i)}return""})}},hJ=[fJ],PD=function(t){var n=t.key;if(n==="css"){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,function(w){var k=w.getAttribute("data-emotion");k.indexOf(" ")!==-1&&(document.head.appendChild(w),w.setAttribute("data-s",""))})}var i=t.stylisPlugins||hJ,o={},a,s=[];a=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(w){for(var k=w.getAttribute("data-emotion").split(" "),P=1;P=4;++r,i-=4)n=e.charCodeAt(r)&255|(e.charCodeAt(++r)&255)<<8|(e.charCodeAt(++r)&255)<<16|(e.charCodeAt(++r)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,t=(n&65535)*1540483477+((n>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(r+2)&255)<<16;case 2:t^=(e.charCodeAt(r+1)&255)<<8;case 1:t^=e.charCodeAt(r)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var _J={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},kJ=/[A-Z]|^ms/g,EJ=/_EMO_([^_]+?)_([^]*?)_EMO_/g,OD=function(t){return t.charCodeAt(1)===45},JP=function(t){return t!=null&&typeof t!="boolean"},Px=kD(function(e){return OD(e)?e:e.replace(kJ,"-$&").toLowerCase()}),eT=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(EJ,function(r,i,o){return gl={name:i,styles:o,next:gl},i})}return _J[t]!==1&&!OD(t)&&typeof n=="number"&&n!==0?n+"px":n};function Cv(e,t,n){if(n==null)return"";if(n.__emotion_styles!==void 0)return n;switch(typeof n){case"boolean":return"";case"object":{if(n.anim===1)return gl={name:n.name,styles:n.styles,next:gl},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)gl={name:r.name,styles:r.styles,next:gl},r=r.next;var i=n.styles+";";return i}return PJ(e,t,n)}case"function":{if(e!==void 0){var o=gl,a=n(e);return gl=o,Cv(e,t,a)}break}}if(t==null)return n;var s=t[n];return s!==void 0?s:n}function PJ(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i{t.includes(r)||(n[r]=e[r])}),n}function UJ(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,a)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const s=t.get(r);if(s.has(i))return s.get(i);const l=e(r,i,o,a);return s.set(i,l),l}},HD=GJ(UJ);function WD(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var VD=e=>WD(e,t=>t!=null);function jJ(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var YJ=jJ();function UD(e,...t){return WJ(e)?e(...t):e}function qJ(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}Object.freeze(["base","sm","md","lg","xl","2xl"]);function KJ(e={}){const{strict:t=!0,errorMessage:n="useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",name:r}=e,i=C.exports.createContext(void 0);i.displayName=r;function o(){var a;const s=C.exports.useContext(i);if(!s&&t){const l=new Error(n);throw l.name="ContextError",(a=Error.captureStackTrace)==null||a.call(Error,l,o),l}return s}return[i.Provider,o,i]}var XJ=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,ZJ=kD(function(e){return XJ.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),QJ=ZJ,JJ=function(t){return t!=="theme"},iT=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?QJ:JJ},oT=function(t,n,r){var i;if(n){var o=n.shouldForwardProp;i=t.__emotion_forwardProp&&o?function(a){return t.__emotion_forwardProp(a)&&o(a)}:o}return typeof i!="function"&&r&&(i=t.__emotion_forwardProp),i},eee=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return ID(n,r,i),LJ(function(){return RD(n,r,i)}),null},tee=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,o,a;n!==void 0&&(o=n.label,a=n.target);var s=oT(t,n,r),l=s||iT(i),u=!l("as");return function(){var h=arguments,g=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(o!==void 0&&g.push("label:"+o+";"),h[0]==null||h[0].raw===void 0)g.push.apply(g,h);else{g.push(h[0][0]);for(var m=h.length,v=1;v[g,m.selector]))}function s(){return Object.fromEntries(Object.entries(t).map(([g,m])=>[g,m.className]))}function l(h){const v=`chakra-${(["container","root"].includes(h??"")?[e]:[e,h]).filter(Boolean).join("__")}`;return{className:v,selector:`.${v}`,toString:()=>h}}return{parts:i,toPart:l,extend:o,selectors:a,classnames:s,get keys(){return Object.keys(t)},__type:{}}}var ree=Cn("accordion").parts("root","container","button","panel").extend("icon"),iee=Cn("alert").parts("title","description","container").extend("icon","spinner"),oee=Cn("avatar").parts("label","badge","container").extend("excessLabel","group"),aee=Cn("breadcrumb").parts("link","item","container").extend("separator");Cn("button").parts();var see=Cn("checkbox").parts("control","icon","container").extend("label");Cn("progress").parts("track","filledTrack").extend("label");var lee=Cn("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),uee=Cn("editable").parts("preview","input","textarea"),cee=Cn("form").parts("container","requiredIndicator","helperText"),dee=Cn("formError").parts("text","icon"),fee=Cn("input").parts("addon","field","element"),hee=Cn("list").parts("container","item","icon"),pee=Cn("menu").parts("button","list","item").extend("groupTitle","command","divider"),gee=Cn("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),mee=Cn("numberinput").parts("root","field","stepperGroup","stepper");Cn("pininput").parts("field");var vee=Cn("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),yee=Cn("progress").parts("label","filledTrack","track"),See=Cn("radio").parts("container","control","label"),bee=Cn("select").parts("field","icon"),xee=Cn("slider").parts("container","track","thumb","filledTrack","mark"),wee=Cn("stat").parts("container","label","helpText","number","icon"),Cee=Cn("switch").parts("container","track","thumb"),_ee=Cn("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),kee=Cn("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),Eee=Cn("tag").parts("container","label","closeButton"),Pee=Cn("card").parts("container","header","body","footer");function Ai(e,t){Tee(e)&&(e="100%");var n=Lee(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function Iy(e){return Math.min(1,Math.max(0,e))}function Tee(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function Lee(e){return typeof e=="string"&&e.indexOf("%")!==-1}function GD(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Ry(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Wf(e){return e.length===1?"0"+e:String(e)}function Aee(e,t,n){return{r:Ai(e,255)*255,g:Ai(t,255)*255,b:Ai(n,255)*255}}function aT(e,t,n){e=Ai(e,255),t=Ai(t,255),n=Ai(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=0,s=(r+i)/2;if(r===i)a=0,o=0;else{var l=r-i;switch(a=s>.5?l/(2-r-i):l/(r+i),r){case e:o=(t-n)/l+(t1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function Mee(e,t,n){var r,i,o;if(e=Ai(e,360),t=Ai(t,100),n=Ai(n,100),t===0)i=n,o=n,r=n;else{var a=n<.5?n*(1+t):n+t-n*t,s=2*n-a;r=Tx(s,a,e+1/3),i=Tx(s,a,e),o=Tx(s,a,e-1/3)}return{r:r*255,g:i*255,b:o*255}}function sT(e,t,n){e=Ai(e,255),t=Ai(t,255),n=Ai(n,255);var r=Math.max(e,t,n),i=Math.min(e,t,n),o=0,a=r,s=r-i,l=r===0?0:s/r;if(r===i)o=0;else{switch(r){case e:o=(t-n)/s+(t>16,g:(e&65280)>>8,b:e&255}}var aC={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function Nee(e){var t={r:0,g:0,b:0},n=1,r=null,i=null,o=null,a=!1,s=!1;return typeof e=="string"&&(e=Fee(e)),typeof e=="object"&&(lu(e.r)&&lu(e.g)&&lu(e.b)?(t=Aee(e.r,e.g,e.b),a=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):lu(e.h)&&lu(e.s)&&lu(e.v)?(r=Ry(e.s),i=Ry(e.v),t=Iee(e.h,r,i),a=!0,s="hsv"):lu(e.h)&&lu(e.s)&&lu(e.l)&&(r=Ry(e.s),o=Ry(e.l),t=Mee(e.h,r,o),a=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(n=e.a)),n=GD(n),{ok:a,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var Bee="[-\\+]?\\d+%?",zee="[-\\+]?\\d*\\.\\d+%?",Gc="(?:".concat(zee,")|(?:").concat(Bee,")"),Lx="[\\s|\\(]+(".concat(Gc,")[,|\\s]+(").concat(Gc,")[,|\\s]+(").concat(Gc,")\\s*\\)?"),Ax="[\\s|\\(]+(".concat(Gc,")[,|\\s]+(").concat(Gc,")[,|\\s]+(").concat(Gc,")[,|\\s]+(").concat(Gc,")\\s*\\)?"),gs={CSS_UNIT:new RegExp(Gc),rgb:new RegExp("rgb"+Lx),rgba:new RegExp("rgba"+Ax),hsl:new RegExp("hsl"+Lx),hsla:new RegExp("hsla"+Ax),hsv:new RegExp("hsv"+Lx),hsva:new RegExp("hsva"+Ax),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Fee(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(aC[e])e=aC[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=gs.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=gs.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=gs.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=gs.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=gs.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=gs.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=gs.hex8.exec(e),n?{r:na(n[1]),g:na(n[2]),b:na(n[3]),a:uT(n[4]),format:t?"name":"hex8"}:(n=gs.hex6.exec(e),n?{r:na(n[1]),g:na(n[2]),b:na(n[3]),format:t?"name":"hex"}:(n=gs.hex4.exec(e),n?{r:na(n[1]+n[1]),g:na(n[2]+n[2]),b:na(n[3]+n[3]),a:uT(n[4]+n[4]),format:t?"name":"hex8"}:(n=gs.hex3.exec(e),n?{r:na(n[1]+n[1]),g:na(n[2]+n[2]),b:na(n[3]+n[3]),format:t?"name":"hex"}:!1)))))))))}function lu(e){return Boolean(gs.CSS_UNIT.exec(String(e)))}var t2=function(){function e(t,n){t===void 0&&(t=""),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t=="number"&&(t=Dee(t)),this.originalInput=t;var i=Nee(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,i,o=t.r/255,a=t.g/255,s=t.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=GD(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.toHsv=function(){var t=sT(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=sT(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=aT(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=aT(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),lT(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),Ree(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(n,", ").concat(r,")"):"rgba(".concat(t,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(n){return"".concat(Math.round(Ai(n,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(Ai(n,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+lT(this.r,this.g,this.b,!1),n=0,r=Object.entries(aC);n=0,o=!n&&i&&(t.startsWith("hex")||t==="name");return o?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(r=this.toRgbString()),t==="prgb"&&(r=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(r=this.toHexString()),t==="hex3"&&(r=this.toHexString(!0)),t==="hex4"&&(r=this.toHex8String(!0)),t==="hex8"&&(r=this.toHex8String()),t==="name"&&(r=this.toName()),t==="hsl"&&(r=this.toHslString()),t==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=Iy(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=Iy(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=Iy(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=Iy(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),i=new e(t).toRgb(),o=n/100,a={r:(i.r-r.r)*o+r.r,g:(i.g-r.g)*o+r.g,b:(i.b-r.b)*o+r.b,a:(i.a-r.a)*o+r.a};return new e(a)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,o=[this];for(r.h=(r.h-(i*t>>1)+720)%360;--t;)r.h=(r.h+i)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/t;t--;)a.push(new e({h:r,s:i,v:o})),o=(o+s)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb();return new e({r:r.r+(n.r-r.r)*n.a,g:r.g+(n.g-r.g)*n.a,b:r.b+(n.b-r.b)*n.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,i=[this],o=360/t,a=1;an.length;)e.count=null,e.seed&&(e.seed+=1),n.push(jD(e));return e.count=t,n}var r=$ee(e.hue,e.seed),i=Hee(r,e),o=Wee(r,i,e),a={h:r,s:i,v:o};return e.alpha!==void 0&&(a.a=e.alpha),new t2(a)}function $ee(e,t){var n=Uee(e),r=F4(n,t);return r<0&&(r=360+r),r}function Hee(e,t){if(t.hue==="monochrome")return 0;if(t.luminosity==="random")return F4([0,100],t.seed);var n=YD(e).saturationRange,r=n[0],i=n[1];switch(t.luminosity){case"bright":r=55;break;case"dark":r=i-10;break;case"light":i=55;break}return F4([r,i],t.seed)}function Wee(e,t,n){var r=Vee(e,t),i=100;switch(n.luminosity){case"dark":i=r+20;break;case"light":r=(i+r)/2;break;case"random":r=0,i=100;break}return F4([r,i],n.seed)}function Vee(e,t){for(var n=YD(e).lowerBounds,r=0;r=i&&t<=a){var l=(s-o)/(a-i),u=o-l*i;return l*t+u}}return 0}function Uee(e){var t=parseInt(e,10);if(!Number.isNaN(t)&&t<360&&t>0)return[t,t];if(typeof e=="string"){var n=KD.find(function(a){return a.name===e});if(n){var r=qD(n);if(r.hueRange)return r.hueRange}var i=new t2(e);if(i.isValid){var o=i.toHsv().h;return[o,o]}}return[0,360]}function YD(e){e>=334&&e<=360&&(e-=360);for(var t=0,n=KD;t=i.hueRange[0]&&e<=i.hueRange[1])return i}throw Error("Color not found")}function F4(e,t){if(t===void 0)return Math.floor(e[0]+Math.random()*(e[1]+1-e[0]));var n=e[1]||1,r=e[0]||0;t=(t*9301+49297)%233280;var i=t/233280;return Math.floor(r+i*(n-r))}function qD(e){var t=e.lowerBounds[0][0],n=e.lowerBounds[e.lowerBounds.length-1][0],r=e.lowerBounds[e.lowerBounds.length-1][1],i=e.lowerBounds[0][1];return{name:e.name,hueRange:e.hueRange,lowerBounds:e.lowerBounds,saturationRange:[t,n],brightnessRange:[r,i]}}var KD=[{name:"monochrome",hueRange:null,lowerBounds:[[0,0],[100,0]]},{name:"red",hueRange:[-26,18],lowerBounds:[[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]},{name:"orange",hueRange:[19,46],lowerBounds:[[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]},{name:"yellow",hueRange:[47,62],lowerBounds:[[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]},{name:"green",hueRange:[63,178],lowerBounds:[[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]},{name:"blue",hueRange:[179,257],lowerBounds:[[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]},{name:"purple",hueRange:[258,282],lowerBounds:[[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]},{name:"pink",hueRange:[283,334],lowerBounds:[[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]}];function Gee(e,t,n,r,i){for(t=t.split?t.split("."):t,r=0;rObject.keys(e).length===0,to=(e,t,n)=>{const r=Gee(e,`colors.${t}`,t),{isValid:i}=new t2(r);return i?r:n},Yee=e=>t=>{const n=to(t,e);return new t2(n).isDark()?"dark":"light"},qee=e=>t=>Yee(e)(t)==="dark",K0=(e,t)=>n=>{const r=to(n,e);return new t2(r).setAlpha(t).toRgbString()};function cT(e="1rem",t="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( + 45deg, + ${t} 25%, + transparent 25%, + transparent 50%, + ${t} 50%, + ${t} 75%, + transparent 75%, + transparent + )`,backgroundSize:`${e} ${e}`}}function Kee(e){const t=jD().toHexString();return!e||jee(e)?t:e.string&&e.colors?Zee(e.string,e.colors):e.string&&!e.colors?Xee(e.string):e.colors&&!e.string?Qee(e.colors):t}function Xee(e){let t=0;if(e.length===0)return t.toString();for(let r=0;r>r*8&255;n+=`00${i.toString(16)}`.substr(-2)}return n}function Zee(e,t){let n=0;if(e.length===0)return t[0];for(let r=0;rn.colorMode==="dark"?t:e}function i8(e){const{orientation:t,vertical:n,horizontal:r}=e;return t?t==="vertical"?n:r:{}}function Jee(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}function XD(e){return Jee(e)&&e.reference?e.reference:String(e)}var cS=(e,...t)=>t.map(XD).join(` ${e} `).replace(/calc/g,""),dT=(...e)=>`calc(${cS("+",...e)})`,fT=(...e)=>`calc(${cS("-",...e)})`,sC=(...e)=>`calc(${cS("*",...e)})`,hT=(...e)=>`calc(${cS("/",...e)})`,pT=e=>{const t=XD(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:sC(t,-1)},pu=Object.assign(e=>({add:(...t)=>pu(dT(e,...t)),subtract:(...t)=>pu(fT(e,...t)),multiply:(...t)=>pu(sC(e,...t)),divide:(...t)=>pu(hT(e,...t)),negate:()=>pu(pT(e)),toString:()=>e.toString()}),{add:dT,subtract:fT,multiply:sC,divide:hT,negate:pT});function ete(e){return!Number.isInteger(parseFloat(e.toString()))}function tte(e,t="-"){return e.replace(/\s+/g,t)}function ZD(e){const t=tte(e.toString());return t.includes("\\.")?e:ete(e)?t.replace(".","\\."):e}function nte(e,t=""){return[t,ZD(e)].filter(Boolean).join("-")}function rte(e,t){return`var(${ZD(e)}${t?`, ${t}`:""})`}function ite(e,t=""){return`--${nte(e,t)}`}function ni(e,t){const n=ite(e,t?.prefix);return{variable:n,reference:rte(n,ote(t?.fallback))}}function ote(e){return typeof e=="string"?e:e?.reference}var{definePartsStyle:ate,defineMultiStyleConfig:ste}=Jn(ree.keys),lte={borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}},ute={transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"},cte={pt:"2",px:"4",pb:"5"},dte={fontSize:"1.25em"},fte=ate({container:lte,button:ute,panel:cte,icon:dte}),hte=ste({baseStyle:fte}),{definePartsStyle:n2,defineMultiStyleConfig:pte}=Jn(iee.keys),da=Bn("alert-fg"),ku=Bn("alert-bg"),gte=n2({container:{bg:ku.reference,px:"4",py:"3"},title:{fontWeight:"bold",lineHeight:"6",marginEnd:"2"},description:{lineHeight:"6"},icon:{color:da.reference,flexShrink:0,marginEnd:"3",w:"5",h:"6"},spinner:{color:da.reference,flexShrink:0,marginEnd:"3",w:"5",h:"5"}});function o8(e){const{theme:t,colorScheme:n}=e,r=K0(`${n}.200`,.16)(t);return{light:`colors.${n}.100`,dark:r}}var mte=n2(e=>{const{colorScheme:t}=e,n=o8(e);return{container:{[da.variable]:`colors.${t}.500`,[ku.variable]:n.light,_dark:{[da.variable]:`colors.${t}.200`,[ku.variable]:n.dark}}}}),vte=n2(e=>{const{colorScheme:t}=e,n=o8(e);return{container:{[da.variable]:`colors.${t}.500`,[ku.variable]:n.light,_dark:{[da.variable]:`colors.${t}.200`,[ku.variable]:n.dark},paddingStart:"3",borderStartWidth:"4px",borderStartColor:da.reference}}}),yte=n2(e=>{const{colorScheme:t}=e,n=o8(e);return{container:{[da.variable]:`colors.${t}.500`,[ku.variable]:n.light,_dark:{[da.variable]:`colors.${t}.200`,[ku.variable]:n.dark},pt:"2",borderTopWidth:"4px",borderTopColor:da.reference}}}),Ste=n2(e=>{const{colorScheme:t}=e;return{container:{[da.variable]:"colors.white",[ku.variable]:`colors.${t}.500`,_dark:{[da.variable]:"colors.gray.900",[ku.variable]:`colors.${t}.200`},color:da.reference}}}),bte={subtle:mte,"left-accent":vte,"top-accent":yte,solid:Ste},xte=pte({baseStyle:gte,variants:bte,defaultProps:{variant:"subtle",colorScheme:"blue"}}),QD={px:"1px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},wte={max:"max-content",min:"min-content",full:"100%","3xs":"14rem","2xs":"16rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem","8xl":"90rem",prose:"60ch"},Cte={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},_te={...QD,...wte,container:Cte},JD=_te,kte=e=>typeof e=="function";function io(e,...t){return kte(e)?e(...t):e}var{definePartsStyle:eN,defineMultiStyleConfig:Ete}=Jn(oee.keys),w0=Bn("avatar-border-color"),Mx=Bn("avatar-bg"),Pte={borderRadius:"full",border:"0.2em solid",[w0.variable]:"white",_dark:{[w0.variable]:"colors.gray.800"},borderColor:w0.reference},Tte={[Mx.variable]:"colors.gray.200",_dark:{[Mx.variable]:"colors.whiteAlpha.400"},bgColor:Mx.reference},gT=Bn("avatar-background"),Lte=e=>{const{name:t,theme:n}=e,r=t?Kee({string:t}):"colors.gray.400",i=qee(r)(n);let o="white";return i||(o="gray.800"),{bg:gT.reference,"&:not([data-loaded])":{[gT.variable]:r},color:o,[w0.variable]:"colors.white",_dark:{[w0.variable]:"colors.gray.800"},borderColor:w0.reference,verticalAlign:"top"}},Ate=eN(e=>({badge:io(Pte,e),excessLabel:io(Tte,e),container:io(Lte,e)}));function Lc(e){const t=e!=="100%"?JD[e]:void 0;return eN({container:{width:e,height:e,fontSize:`calc(${t??e} / 2.5)`},excessLabel:{width:e,height:e},label:{fontSize:`calc(${t??e} / 2.5)`,lineHeight:e!=="100%"?t??e:void 0}})}var Mte={"2xs":Lc(4),xs:Lc(6),sm:Lc(8),md:Lc(12),lg:Lc(16),xl:Lc(24),"2xl":Lc(32),full:Lc("100%")},Ite=Ete({baseStyle:Ate,sizes:Mte,defaultProps:{size:"md"}}),Rte={px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold"},C0=Bn("badge-bg"),xl=Bn("badge-color"),Ote=e=>{const{colorScheme:t,theme:n}=e,r=K0(`${t}.500`,.6)(n);return{[C0.variable]:`colors.${t}.500`,[xl.variable]:"colors.white",_dark:{[C0.variable]:r,[xl.variable]:"colors.whiteAlpha.800"},bg:C0.reference,color:xl.reference}},Dte=e=>{const{colorScheme:t,theme:n}=e,r=K0(`${t}.200`,.16)(n);return{[C0.variable]:`colors.${t}.100`,[xl.variable]:`colors.${t}.800`,_dark:{[C0.variable]:r,[xl.variable]:`colors.${t}.200`},bg:C0.reference,color:xl.reference}},Nte=e=>{const{colorScheme:t,theme:n}=e,r=K0(`${t}.200`,.8)(n);return{[xl.variable]:`colors.${t}.500`,_dark:{[xl.variable]:r},color:xl.reference,boxShadow:`inset 0 0 0px 1px ${xl.reference}`}},Bte={solid:Ote,subtle:Dte,outline:Nte},zm={baseStyle:Rte,variants:Bte,defaultProps:{variant:"subtle",colorScheme:"gray"}},{defineMultiStyleConfig:zte,definePartsStyle:Fte}=Jn(aee.keys),$te={transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}},Hte=Fte({link:$te}),Wte=zte({baseStyle:Hte}),Vte={lineHeight:"1.2",borderRadius:"md",fontWeight:"semibold",transitionProperty:"common",transitionDuration:"normal",_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{_disabled:{bg:"initial"}}},tN=e=>{const{colorScheme:t,theme:n}=e;if(t==="gray")return{color:yt("inherit","whiteAlpha.900")(e),_hover:{bg:yt("gray.100","whiteAlpha.200")(e)},_active:{bg:yt("gray.200","whiteAlpha.300")(e)}};const r=K0(`${t}.200`,.12)(n),i=K0(`${t}.200`,.24)(n);return{color:yt(`${t}.600`,`${t}.200`)(e),bg:"transparent",_hover:{bg:yt(`${t}.50`,r)(e)},_active:{bg:yt(`${t}.100`,i)(e)}}},Ute=e=>{const{colorScheme:t}=e,n=yt("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:t==="gray"?n:"currentColor",".chakra-button__group[data-attached] > &:not(:last-of-type)":{marginEnd:"-1px"},...io(tN,e)}},Gte={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},jte=e=>{const{colorScheme:t}=e;if(t==="gray"){const s=yt("gray.100","whiteAlpha.200")(e);return{bg:s,_hover:{bg:yt("gray.200","whiteAlpha.300")(e),_disabled:{bg:s}},_active:{bg:yt("gray.300","whiteAlpha.400")(e)}}}const{bg:n=`${t}.500`,color:r="white",hoverBg:i=`${t}.600`,activeBg:o=`${t}.700`}=Gte[t]??{},a=yt(n,`${t}.200`)(e);return{bg:a,color:yt(r,"gray.800")(e),_hover:{bg:yt(i,`${t}.300`)(e),_disabled:{bg:a}},_active:{bg:yt(o,`${t}.400`)(e)}}},Yte=e=>{const{colorScheme:t}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:yt(`${t}.500`,`${t}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:yt(`${t}.700`,`${t}.500`)(e)}}},qte={bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"},Kte={ghost:tN,outline:Ute,solid:jte,link:Yte,unstyled:qte},Xte={lg:{h:"12",minW:"12",fontSize:"lg",px:"6"},md:{h:"10",minW:"10",fontSize:"md",px:"4"},sm:{h:"8",minW:"8",fontSize:"sm",px:"3"},xs:{h:"6",minW:"6",fontSize:"xs",px:"2"}},Zte={baseStyle:Vte,variants:Kte,sizes:Xte,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}},{definePartsStyle:Zf,defineMultiStyleConfig:Qte}=Jn(Pee.keys),$4=Bn("card-bg"),_0=Bn("card-padding"),Jte=Zf({container:{[$4.variable]:"chakra-body-bg",backgroundColor:$4.reference,color:"chakra-body-text"},body:{padding:_0.reference,flex:"1 1 0%"},header:{padding:_0.reference},footer:{padding:_0.reference}}),ene={sm:Zf({container:{borderRadius:"base",[_0.variable]:"space.3"}}),md:Zf({container:{borderRadius:"md",[_0.variable]:"space.5"}}),lg:Zf({container:{borderRadius:"xl",[_0.variable]:"space.7"}})},tne={elevated:Zf({container:{boxShadow:"base",_dark:{[$4.variable]:"colors.gray.700"}}}),outline:Zf({container:{borderWidth:"1px",borderColor:"chakra-border-color"}}),filled:Zf({container:{[$4.variable]:"colors.chakra-subtle-bg"}}),unstyled:{body:{padding:0},header:{padding:0},footer:{padding:0}}},nne=Qte({baseStyle:Jte,variants:tne,sizes:ene,defaultProps:{variant:"elevated",size:"md"}}),{definePartsStyle:$3,defineMultiStyleConfig:rne}=Jn(see.keys),Fm=Bn("checkbox-size"),ine=e=>{const{colorScheme:t}=e;return{w:Fm.reference,h:Fm.reference,transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:yt(`${t}.500`,`${t}.200`)(e),borderColor:yt(`${t}.500`,`${t}.200`)(e),color:yt("white","gray.900")(e),_hover:{bg:yt(`${t}.600`,`${t}.300`)(e),borderColor:yt(`${t}.600`,`${t}.300`)(e)},_disabled:{borderColor:yt("gray.200","transparent")(e),bg:yt("gray.200","whiteAlpha.300")(e),color:yt("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:yt(`${t}.500`,`${t}.200`)(e),borderColor:yt(`${t}.500`,`${t}.200`)(e),color:yt("white","gray.900")(e)},_disabled:{bg:yt("gray.100","whiteAlpha.100")(e),borderColor:yt("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:yt("red.500","red.300")(e)}}},one={_disabled:{cursor:"not-allowed"}},ane={userSelect:"none",_disabled:{opacity:.4}},sne={transitionProperty:"transform",transitionDuration:"normal"},lne=$3(e=>({icon:sne,container:one,control:io(ine,e),label:ane})),une={sm:$3({control:{[Fm.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:$3({control:{[Fm.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:$3({control:{[Fm.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},H4=rne({baseStyle:lne,sizes:une,defaultProps:{size:"md",colorScheme:"blue"}}),$m=ni("close-button-size"),Gg=ni("close-button-bg"),cne={w:[$m.reference],h:[$m.reference],borderRadius:"md",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{[Gg.variable]:"colors.blackAlpha.100",_dark:{[Gg.variable]:"colors.whiteAlpha.100"}},_active:{[Gg.variable]:"colors.blackAlpha.200",_dark:{[Gg.variable]:"colors.whiteAlpha.200"}},_focusVisible:{boxShadow:"outline"},bg:Gg.reference},dne={lg:{[$m.variable]:"sizes.10",fontSize:"md"},md:{[$m.variable]:"sizes.8",fontSize:"xs"},sm:{[$m.variable]:"sizes.6",fontSize:"2xs"}},fne={baseStyle:cne,sizes:dne,defaultProps:{size:"md"}},{variants:hne,defaultProps:pne}=zm,gne={fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm"},mne={baseStyle:gne,variants:hne,defaultProps:pne},vne={w:"100%",mx:"auto",maxW:"prose",px:"4"},yne={baseStyle:vne},Sne={opacity:.6,borderColor:"inherit"},bne={borderStyle:"solid"},xne={borderStyle:"dashed"},wne={solid:bne,dashed:xne},Cne={baseStyle:Sne,variants:wne,defaultProps:{variant:"solid"}},{definePartsStyle:lC,defineMultiStyleConfig:_ne}=Jn(lee.keys),Ix=Bn("drawer-bg"),Rx=Bn("drawer-box-shadow");function Ap(e){return lC(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var kne={bg:"blackAlpha.600",zIndex:"overlay"},Ene={display:"flex",zIndex:"modal",justifyContent:"center"},Pne=e=>{const{isFullHeight:t}=e;return{...t&&{height:"100vh"},zIndex:"modal",maxH:"100vh",color:"inherit",[Ix.variable]:"colors.white",[Rx.variable]:"shadows.lg",_dark:{[Ix.variable]:"colors.gray.700",[Rx.variable]:"shadows.dark-lg"},bg:Ix.reference,boxShadow:Rx.reference}},Tne={px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"},Lne={position:"absolute",top:"2",insetEnd:"3"},Ane={px:"6",py:"2",flex:"1",overflow:"auto"},Mne={px:"6",py:"4"},Ine=lC(e=>({overlay:kne,dialogContainer:Ene,dialog:io(Pne,e),header:Tne,closeButton:Lne,body:Ane,footer:Mne})),Rne={xs:Ap("xs"),sm:Ap("md"),md:Ap("lg"),lg:Ap("2xl"),xl:Ap("4xl"),full:Ap("full")},One=_ne({baseStyle:Ine,sizes:Rne,defaultProps:{size:"xs"}}),{definePartsStyle:Dne,defineMultiStyleConfig:Nne}=Jn(uee.keys),Bne={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"},zne={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}},Fne={borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}},$ne=Dne({preview:Bne,input:zne,textarea:Fne}),Hne=Nne({baseStyle:$ne}),{definePartsStyle:Wne,defineMultiStyleConfig:Vne}=Jn(cee.keys),k0=Bn("form-control-color"),Une={marginStart:"1",[k0.variable]:"colors.red.500",_dark:{[k0.variable]:"colors.red.300"},color:k0.reference},Gne={mt:"2",[k0.variable]:"colors.gray.600",_dark:{[k0.variable]:"colors.whiteAlpha.600"},color:k0.reference,lineHeight:"normal",fontSize:"sm"},jne=Wne({container:{width:"100%",position:"relative"},requiredIndicator:Une,helperText:Gne}),Yne=Vne({baseStyle:jne}),{definePartsStyle:qne,defineMultiStyleConfig:Kne}=Jn(dee.keys),E0=Bn("form-error-color"),Xne={[E0.variable]:"colors.red.500",_dark:{[E0.variable]:"colors.red.300"},color:E0.reference,mt:"2",fontSize:"sm",lineHeight:"normal"},Zne={marginEnd:"0.5em",[E0.variable]:"colors.red.500",_dark:{[E0.variable]:"colors.red.300"},color:E0.reference},Qne=qne({text:Xne,icon:Zne}),Jne=Kne({baseStyle:Qne}),ere={fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}},tre={baseStyle:ere},nre={fontFamily:"heading",fontWeight:"bold"},rre={"4xl":{fontSize:["6xl",null,"7xl"],lineHeight:1},"3xl":{fontSize:["5xl",null,"6xl"],lineHeight:1},"2xl":{fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]},xl:{fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]},lg:{fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]},md:{fontSize:"xl",lineHeight:1.2},sm:{fontSize:"md",lineHeight:1.2},xs:{fontSize:"sm",lineHeight:1.2}},ire={baseStyle:nre,sizes:rre,defaultProps:{size:"xl"}},{definePartsStyle:vu,defineMultiStyleConfig:ore}=Jn(fee.keys),are=vu({field:{width:"100%",minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),Ac={lg:{fontSize:"lg",px:"4",h:"12",borderRadius:"md"},md:{fontSize:"md",px:"4",h:"10",borderRadius:"md"},sm:{fontSize:"sm",px:"3",h:"8",borderRadius:"sm"},xs:{fontSize:"xs",px:"2",h:"6",borderRadius:"sm"}},sre={lg:vu({field:Ac.lg,addon:Ac.lg}),md:vu({field:Ac.md,addon:Ac.md}),sm:vu({field:Ac.sm,addon:Ac.sm}),xs:vu({field:Ac.xs,addon:Ac.xs})};function a8(e){const{focusBorderColor:t,errorBorderColor:n}=e;return{focusBorderColor:t||yt("blue.500","blue.300")(e),errorBorderColor:n||yt("red.500","red.300")(e)}}var lre=vu(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=a8(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:yt("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:to(t,r),boxShadow:`0 0 0 1px ${to(t,r)}`},_focusVisible:{zIndex:1,borderColor:to(t,n),boxShadow:`0 0 0 1px ${to(t,n)}`}},addon:{border:"1px solid",borderColor:yt("inherit","whiteAlpha.50")(e),bg:yt("gray.100","whiteAlpha.300")(e)}}}),ure=vu(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=a8(e);return{field:{border:"2px solid",borderColor:"transparent",bg:yt("gray.100","whiteAlpha.50")(e),_hover:{bg:yt("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:to(t,r)},_focusVisible:{bg:"transparent",borderColor:to(t,n)}},addon:{border:"2px solid",borderColor:"transparent",bg:yt("gray.100","whiteAlpha.50")(e)}}}),cre=vu(e=>{const{theme:t}=e,{focusBorderColor:n,errorBorderColor:r}=a8(e);return{field:{borderBottom:"1px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent",_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:to(t,r),boxShadow:`0px 1px 0px 0px ${to(t,r)}`},_focusVisible:{borderColor:to(t,n),boxShadow:`0px 1px 0px 0px ${to(t,n)}`}},addon:{borderBottom:"2px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent"}}}),dre=vu({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),fre={outline:lre,filled:ure,flushed:cre,unstyled:dre},vn=ore({baseStyle:are,sizes:sre,variants:fre,defaultProps:{size:"md",variant:"outline"}}),Ox=Bn("kbd-bg"),hre={[Ox.variable]:"colors.gray.100",_dark:{[Ox.variable]:"colors.whiteAlpha.100"},bg:Ox.reference,borderRadius:"md",borderWidth:"1px",borderBottomWidth:"3px",fontSize:"0.8em",fontWeight:"bold",lineHeight:"normal",px:"0.4em",whiteSpace:"nowrap"},pre={baseStyle:hre},gre={transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}},mre={baseStyle:gre},{defineMultiStyleConfig:vre,definePartsStyle:yre}=Jn(hee.keys),Sre={marginEnd:"2",display:"inline",verticalAlign:"text-bottom"},bre=yre({icon:Sre}),xre=vre({baseStyle:bre}),{defineMultiStyleConfig:wre,definePartsStyle:Cre}=Jn(pee.keys),hl=Bn("menu-bg"),Dx=Bn("menu-shadow"),_re={[hl.variable]:"#fff",[Dx.variable]:"shadows.sm",_dark:{[hl.variable]:"colors.gray.700",[Dx.variable]:"shadows.dark-lg"},color:"inherit",minW:"3xs",py:"2",zIndex:1,borderRadius:"md",borderWidth:"1px",bg:hl.reference,boxShadow:Dx.reference},kre={py:"1.5",px:"3",transitionProperty:"background",transitionDuration:"ultra-fast",transitionTimingFunction:"ease-in",_focus:{[hl.variable]:"colors.gray.100",_dark:{[hl.variable]:"colors.whiteAlpha.100"}},_active:{[hl.variable]:"colors.gray.200",_dark:{[hl.variable]:"colors.whiteAlpha.200"}},_expanded:{[hl.variable]:"colors.gray.100",_dark:{[hl.variable]:"colors.whiteAlpha.100"}},_disabled:{opacity:.4,cursor:"not-allowed"},bg:hl.reference},Ere={mx:4,my:2,fontWeight:"semibold",fontSize:"sm"},Pre={opacity:.6},Tre={border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6},Lre={transitionProperty:"common",transitionDuration:"normal"},Are=Cre({button:Lre,list:_re,item:kre,groupTitle:Ere,command:Pre,divider:Tre}),Mre=wre({baseStyle:Are}),{defineMultiStyleConfig:Ire,definePartsStyle:uC}=Jn(gee.keys),Rre={bg:"blackAlpha.600",zIndex:"modal"},Ore=e=>{const{isCentered:t,scrollBehavior:n}=e;return{display:"flex",zIndex:"modal",justifyContent:"center",alignItems:t?"center":"flex-start",overflow:n==="inside"?"hidden":"auto"}},Dre=e=>{const{scrollBehavior:t}=e;return{borderRadius:"md",bg:yt("white","gray.700")(e),color:"inherit",my:"16",zIndex:"modal",maxH:t==="inside"?"calc(100% - 7.5rem)":void 0,boxShadow:yt("lg","dark-lg")(e)}},Nre={px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"},Bre={position:"absolute",top:"2",insetEnd:"3"},zre=e=>{const{scrollBehavior:t}=e;return{px:"6",py:"2",flex:"1",overflow:t==="inside"?"auto":void 0}},Fre={px:"6",py:"4"},$re=uC(e=>({overlay:Rre,dialogContainer:io(Ore,e),dialog:io(Dre,e),header:Nre,closeButton:Bre,body:io(zre,e),footer:Fre}));function hs(e){return uC(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var Hre={xs:hs("xs"),sm:hs("sm"),md:hs("md"),lg:hs("lg"),xl:hs("xl"),"2xl":hs("2xl"),"3xl":hs("3xl"),"4xl":hs("4xl"),"5xl":hs("5xl"),"6xl":hs("6xl"),full:hs("full")},Wre=Ire({baseStyle:$re,sizes:Hre,defaultProps:{size:"md"}}),Vre={letterSpacings:{tighter:"-0.05em",tight:"-0.025em",normal:"0",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeights:{normal:"normal",none:1,shorter:1.25,short:1.375,base:1.5,tall:1.625,taller:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},fontWeights:{hairline:100,thin:200,light:300,normal:400,medium:500,semibold:600,bold:700,extrabold:800,black:900},fonts:{heading:'-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',body:'-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',mono:'SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace'},fontSizes:{"3xs":"0.45rem","2xs":"0.625rem",xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem","2xl":"1.5rem","3xl":"1.875rem","4xl":"2.25rem","5xl":"3rem","6xl":"3.75rem","7xl":"4.5rem","8xl":"6rem","9xl":"8rem"}},nN=Vre,{defineMultiStyleConfig:Ure,definePartsStyle:rN}=Jn(mee.keys),s8=ni("number-input-stepper-width"),iN=ni("number-input-input-padding"),Gre=pu(s8).add("0.5rem").toString(),Nx=ni("number-input-bg"),Bx=ni("number-input-color"),zx=ni("number-input-border-color"),jre={[s8.variable]:"sizes.6",[iN.variable]:Gre},Yre=e=>{var t;return((t=io(vn.baseStyle,e))==null?void 0:t.field)??{}},qre={width:s8.reference},Kre={borderStart:"1px solid",borderStartColor:zx.reference,color:Bx.reference,bg:Nx.reference,[Bx.variable]:"colors.chakra-body-text",[zx.variable]:"colors.chakra-border-color",_dark:{[Bx.variable]:"colors.whiteAlpha.800",[zx.variable]:"colors.whiteAlpha.300"},_active:{[Nx.variable]:"colors.gray.200",_dark:{[Nx.variable]:"colors.whiteAlpha.300"}},_disabled:{opacity:.4,cursor:"not-allowed"}},Xre=rN(e=>({root:jre,field:io(Yre,e)??{},stepperGroup:qre,stepper:Kre}));function Oy(e){var t,n;const r=(t=vn.sizes)==null?void 0:t[e],i={lg:"md",md:"md",sm:"sm",xs:"sm"},o=((n=r.field)==null?void 0:n.fontSize)??"md",a=nN.fontSizes[o];return rN({field:{...r.field,paddingInlineEnd:iN.reference,verticalAlign:"top"},stepper:{fontSize:pu(a).multiply(.75).toString(),_first:{borderTopEndRadius:i[e]},_last:{borderBottomEndRadius:i[e],mt:"-1px",borderTopWidth:1}}})}var Zre={xs:Oy("xs"),sm:Oy("sm"),md:Oy("md"),lg:Oy("lg")},Qre=Ure({baseStyle:Xre,sizes:Zre,variants:vn.variants,defaultProps:vn.defaultProps}),mT,Jre={...(mT=vn.baseStyle)==null?void 0:mT.field,textAlign:"center"},eie={lg:{fontSize:"lg",w:12,h:12,borderRadius:"md"},md:{fontSize:"md",w:10,h:10,borderRadius:"md"},sm:{fontSize:"sm",w:8,h:8,borderRadius:"sm"},xs:{fontSize:"xs",w:6,h:6,borderRadius:"sm"}},vT,tie={outline:e=>{var t,n;return((n=io((t=vn.variants)==null?void 0:t.outline,e))==null?void 0:n.field)??{}},flushed:e=>{var t,n;return((n=io((t=vn.variants)==null?void 0:t.flushed,e))==null?void 0:n.field)??{}},filled:e=>{var t,n;return((n=io((t=vn.variants)==null?void 0:t.filled,e))==null?void 0:n.field)??{}},unstyled:((vT=vn.variants)==null?void 0:vT.unstyled.field)??{}},nie={baseStyle:Jre,sizes:eie,variants:tie,defaultProps:vn.defaultProps},{defineMultiStyleConfig:rie,definePartsStyle:iie}=Jn(vee.keys),Dy=ni("popper-bg"),oie=ni("popper-arrow-bg"),yT=ni("popper-arrow-shadow-color"),aie={zIndex:10},sie={[Dy.variable]:"colors.white",bg:Dy.reference,[oie.variable]:Dy.reference,[yT.variable]:"colors.gray.200",_dark:{[Dy.variable]:"colors.gray.700",[yT.variable]:"colors.whiteAlpha.300"},width:"xs",border:"1px solid",borderColor:"inherit",borderRadius:"md",boxShadow:"sm",zIndex:"inherit",_focusVisible:{outline:0,boxShadow:"outline"}},lie={px:3,py:2,borderBottomWidth:"1px"},uie={px:3,py:2},cie={px:3,py:2,borderTopWidth:"1px"},die={position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2},fie=iie({popper:aie,content:sie,header:lie,body:uie,footer:cie,closeButton:die}),hie=rie({baseStyle:fie}),{defineMultiStyleConfig:pie,definePartsStyle:hm}=Jn(yee.keys),gie=e=>{const{colorScheme:t,theme:n,isIndeterminate:r,hasStripe:i}=e,o=yt(cT(),cT("1rem","rgba(0,0,0,0.1)"))(e),a=yt(`${t}.500`,`${t}.200`)(e),s=`linear-gradient( + to right, + transparent 0%, + ${to(n,a)} 50%, + transparent 100% + )`;return{...!r&&i&&o,...r?{bgImage:s}:{bgColor:a}}},mie={lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"},vie=e=>({bg:yt("gray.100","whiteAlpha.300")(e)}),yie=e=>({transitionProperty:"common",transitionDuration:"slow",...gie(e)}),Sie=hm(e=>({label:mie,filledTrack:yie(e),track:vie(e)})),bie={xs:hm({track:{h:"1"}}),sm:hm({track:{h:"2"}}),md:hm({track:{h:"3"}}),lg:hm({track:{h:"4"}})},xie=pie({sizes:bie,baseStyle:Sie,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:wie,definePartsStyle:H3}=Jn(See.keys),Cie=e=>{var t;const n=(t=io(H4.baseStyle,e))==null?void 0:t.control;return{...n,borderRadius:"full",_checked:{...n?._checked,_before:{content:'""',display:"inline-block",pos:"relative",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}}}},_ie=H3(e=>{var t,n,r,i;return{label:(n=(t=H4).baseStyle)==null?void 0:n.call(t,e).label,container:(i=(r=H4).baseStyle)==null?void 0:i.call(r,e).container,control:Cie(e)}}),kie={md:H3({control:{w:"4",h:"4"},label:{fontSize:"md"}}),lg:H3({control:{w:"5",h:"5"},label:{fontSize:"lg"}}),sm:H3({control:{width:"3",height:"3"},label:{fontSize:"sm"}})},Eie=wie({baseStyle:_ie,sizes:kie,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Pie,definePartsStyle:Tie}=Jn(bee.keys),Ny=Bn("select-bg"),ST,Lie={...(ST=vn.baseStyle)==null?void 0:ST.field,appearance:"none",paddingBottom:"1px",lineHeight:"normal",bg:Ny.reference,[Ny.variable]:"colors.white",_dark:{[Ny.variable]:"colors.gray.700"},"> option, > optgroup":{bg:Ny.reference}},Aie={width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}},Mie=Tie({field:Lie,icon:Aie}),By={paddingInlineEnd:"8"},bT,xT,wT,CT,_T,kT,ET,PT,Iie={lg:{...(bT=vn.sizes)==null?void 0:bT.lg,field:{...(xT=vn.sizes)==null?void 0:xT.lg.field,...By}},md:{...(wT=vn.sizes)==null?void 0:wT.md,field:{...(CT=vn.sizes)==null?void 0:CT.md.field,...By}},sm:{...(_T=vn.sizes)==null?void 0:_T.sm,field:{...(kT=vn.sizes)==null?void 0:kT.sm.field,...By}},xs:{...(ET=vn.sizes)==null?void 0:ET.xs,field:{...(PT=vn.sizes)==null?void 0:PT.xs.field,...By},icon:{insetEnd:"1"}}},Rie=Pie({baseStyle:Mie,sizes:Iie,variants:vn.variants,defaultProps:vn.defaultProps}),Fx=Bn("skeleton-start-color"),$x=Bn("skeleton-end-color"),Oie={[Fx.variable]:"colors.gray.100",[$x.variable]:"colors.gray.400",_dark:{[Fx.variable]:"colors.gray.800",[$x.variable]:"colors.gray.600"},background:Fx.reference,borderColor:$x.reference,opacity:.7,borderRadius:"sm"},Die={baseStyle:Oie},Hx=Bn("skip-link-bg"),Nie={borderRadius:"md",fontWeight:"semibold",_focusVisible:{boxShadow:"outline",padding:"4",position:"fixed",top:"6",insetStart:"6",[Hx.variable]:"colors.white",_dark:{[Hx.variable]:"colors.gray.700"},bg:Hx.reference}},Bie={baseStyle:Nie},{defineMultiStyleConfig:zie,definePartsStyle:dS}=Jn(xee.keys),Ev=Bn("slider-thumb-size"),Pv=Bn("slider-track-size"),$c=Bn("slider-bg"),Fie=e=>{const{orientation:t}=e;return{display:"inline-block",position:"relative",cursor:"pointer",_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"},...i8({orientation:t,vertical:{h:"100%"},horizontal:{w:"100%"}})}},$ie=e=>({...i8({orientation:e.orientation,horizontal:{h:Pv.reference},vertical:{w:Pv.reference}}),overflow:"hidden",borderRadius:"sm",[$c.variable]:"colors.gray.200",_dark:{[$c.variable]:"colors.whiteAlpha.200"},_disabled:{[$c.variable]:"colors.gray.300",_dark:{[$c.variable]:"colors.whiteAlpha.300"}},bg:$c.reference}),Hie=e=>{const{orientation:t}=e;return{...i8({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",_active:{transform:"translateX(-50%) scale(1.15)"}},horizontal:{top:"50%",transform:"translateY(-50%)",_active:{transform:"translateY(-50%) scale(1.15)"}}}),w:Ev.reference,h:Ev.reference,display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",outline:0,zIndex:1,borderRadius:"full",bg:"white",boxShadow:"base",border:"1px solid",borderColor:"transparent",transitionProperty:"transform",transitionDuration:"normal",_focusVisible:{boxShadow:"outline"},_disabled:{bg:"gray.300"}}},Wie=e=>{const{colorScheme:t}=e;return{width:"inherit",height:"inherit",[$c.variable]:`colors.${t}.500`,_dark:{[$c.variable]:`colors.${t}.200`},bg:$c.reference}},Vie=dS(e=>({container:Fie(e),track:$ie(e),thumb:Hie(e),filledTrack:Wie(e)})),Uie=dS({container:{[Ev.variable]:"sizes.4",[Pv.variable]:"sizes.1"}}),Gie=dS({container:{[Ev.variable]:"sizes.3.5",[Pv.variable]:"sizes.1"}}),jie=dS({container:{[Ev.variable]:"sizes.2.5",[Pv.variable]:"sizes.0.5"}}),Yie={lg:Uie,md:Gie,sm:jie},qie=zie({baseStyle:Vie,sizes:Yie,defaultProps:{size:"md",colorScheme:"blue"}}),Df=ni("spinner-size"),Kie={width:[Df.reference],height:[Df.reference]},Xie={xs:{[Df.variable]:"sizes.3"},sm:{[Df.variable]:"sizes.4"},md:{[Df.variable]:"sizes.6"},lg:{[Df.variable]:"sizes.8"},xl:{[Df.variable]:"sizes.12"}},Zie={baseStyle:Kie,sizes:Xie,defaultProps:{size:"md"}},{defineMultiStyleConfig:Qie,definePartsStyle:oN}=Jn(wee.keys),Jie={fontWeight:"medium"},eoe={opacity:.8,marginBottom:"2"},toe={verticalAlign:"baseline",fontWeight:"semibold"},noe={marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"},roe=oN({container:{},label:Jie,helpText:eoe,number:toe,icon:noe}),ioe={md:oN({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},ooe=Qie({baseStyle:roe,sizes:ioe,defaultProps:{size:"md"}}),{defineMultiStyleConfig:aoe,definePartsStyle:W3}=Jn(Cee.keys),Hm=ni("switch-track-width"),Qf=ni("switch-track-height"),Wx=ni("switch-track-diff"),soe=pu.subtract(Hm,Qf),cC=ni("switch-thumb-x"),jg=ni("switch-bg"),loe=e=>{const{colorScheme:t}=e;return{borderRadius:"full",p:"0.5",width:[Hm.reference],height:[Qf.reference],transitionProperty:"common",transitionDuration:"fast",[jg.variable]:"colors.gray.300",_dark:{[jg.variable]:"colors.whiteAlpha.400"},_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed"},_checked:{[jg.variable]:`colors.${t}.500`,_dark:{[jg.variable]:`colors.${t}.200`}},bg:jg.reference}},uoe={bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[Qf.reference],height:[Qf.reference],_checked:{transform:`translateX(${cC.reference})`}},coe=W3(e=>({container:{[Wx.variable]:soe,[cC.variable]:Wx.reference,_rtl:{[cC.variable]:pu(Wx).negate().toString()}},track:loe(e),thumb:uoe})),doe={sm:W3({container:{[Hm.variable]:"1.375rem",[Qf.variable]:"sizes.3"}}),md:W3({container:{[Hm.variable]:"1.875rem",[Qf.variable]:"sizes.4"}}),lg:W3({container:{[Hm.variable]:"2.875rem",[Qf.variable]:"sizes.6"}})},foe=aoe({baseStyle:coe,sizes:doe,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:hoe,definePartsStyle:P0}=Jn(_ee.keys),poe=P0({table:{fontVariantNumeric:"lining-nums tabular-nums",borderCollapse:"collapse",width:"full"},th:{fontFamily:"heading",fontWeight:"bold",textTransform:"uppercase",letterSpacing:"wider",textAlign:"start"},td:{textAlign:"start"},caption:{mt:4,fontFamily:"heading",textAlign:"center",fontWeight:"medium"}}),W4={"&[data-is-numeric=true]":{textAlign:"end"}},goe=P0(e=>{const{colorScheme:t}=e;return{th:{color:yt("gray.600","gray.400")(e),borderBottom:"1px",borderColor:yt(`${t}.100`,`${t}.700`)(e),...W4},td:{borderBottom:"1px",borderColor:yt(`${t}.100`,`${t}.700`)(e),...W4},caption:{color:yt("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),moe=P0(e=>{const{colorScheme:t}=e;return{th:{color:yt("gray.600","gray.400")(e),borderBottom:"1px",borderColor:yt(`${t}.100`,`${t}.700`)(e),...W4},td:{borderBottom:"1px",borderColor:yt(`${t}.100`,`${t}.700`)(e),...W4},caption:{color:yt("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:yt(`${t}.100`,`${t}.700`)(e)},td:{background:yt(`${t}.100`,`${t}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),voe={simple:goe,striped:moe,unstyled:{}},yoe={sm:P0({th:{px:"4",py:"1",lineHeight:"4",fontSize:"xs"},td:{px:"4",py:"2",fontSize:"sm",lineHeight:"4"},caption:{px:"4",py:"2",fontSize:"xs"}}),md:P0({th:{px:"6",py:"3",lineHeight:"4",fontSize:"xs"},td:{px:"6",py:"4",lineHeight:"5"},caption:{px:"6",py:"2",fontSize:"sm"}}),lg:P0({th:{px:"8",py:"4",lineHeight:"5",fontSize:"sm"},td:{px:"8",py:"5",lineHeight:"6"},caption:{px:"6",py:"2",fontSize:"md"}})},Soe=hoe({baseStyle:poe,variants:voe,sizes:yoe,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),To=Bn("tabs-color"),xs=Bn("tabs-bg"),zy=Bn("tabs-border-color"),{defineMultiStyleConfig:boe,definePartsStyle:El}=Jn(kee.keys),xoe=e=>{const{orientation:t}=e;return{display:t==="vertical"?"flex":"block"}},woe=e=>{const{isFitted:t}=e;return{flex:t?1:void 0,transitionProperty:"common",transitionDuration:"normal",_focusVisible:{zIndex:1,boxShadow:"outline"},_disabled:{cursor:"not-allowed",opacity:.4}}},Coe=e=>{const{align:t="start",orientation:n}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[t],flexDirection:n==="vertical"?"column":"row"}},_oe={p:4},koe=El(e=>({root:xoe(e),tab:woe(e),tablist:Coe(e),tabpanel:_oe})),Eoe={sm:El({tab:{py:1,px:4,fontSize:"sm"}}),md:El({tab:{fontSize:"md",py:2,px:4}}),lg:El({tab:{fontSize:"lg",py:3,px:4}})},Poe=El(e=>{const{colorScheme:t,orientation:n}=e,r=n==="vertical",i=n==="vertical"?"borderStart":"borderBottom",o=r?"marginStart":"marginBottom";return{tablist:{[i]:"2px solid",borderColor:"inherit"},tab:{[i]:"2px solid",borderColor:"transparent",[o]:"-2px",_selected:{[To.variable]:`colors.${t}.600`,_dark:{[To.variable]:`colors.${t}.300`},borderColor:"currentColor"},_active:{[xs.variable]:"colors.gray.200",_dark:{[xs.variable]:"colors.whiteAlpha.300"}},_disabled:{_active:{bg:"none"}},color:To.reference,bg:xs.reference}}}),Toe=El(e=>{const{colorScheme:t}=e;return{tab:{borderTopRadius:"md",border:"1px solid",borderColor:"transparent",mb:"-1px",[zy.reference]:"transparent",_selected:{[To.variable]:`colors.${t}.600`,[zy.variable]:"colors.white",_dark:{[To.variable]:`colors.${t}.300`,[zy.variable]:"colors.gray.800"},borderColor:"inherit",borderBottomColor:zy.reference},color:To.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),Loe=El(e=>{const{colorScheme:t}=e;return{tab:{border:"1px solid",borderColor:"inherit",[xs.variable]:"colors.gray.50",_dark:{[xs.variable]:"colors.whiteAlpha.50"},mb:"-1px",_notLast:{marginEnd:"-1px"},_selected:{[xs.variable]:"colors.white",[To.variable]:`colors.${t}.600`,_dark:{[xs.variable]:"colors.gray.800",[To.variable]:`colors.${t}.300`},borderColor:"inherit",borderTopColor:"currentColor",borderBottomColor:"transparent"},color:To.reference,bg:xs.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),Aoe=El(e=>{const{colorScheme:t,theme:n}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:to(n,`${t}.700`),bg:to(n,`${t}.100`)}}}}),Moe=El(e=>{const{colorScheme:t}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",[To.variable]:"colors.gray.600",_dark:{[To.variable]:"inherit"},_selected:{[To.variable]:"colors.white",[xs.variable]:`colors.${t}.600`,_dark:{[To.variable]:"colors.gray.800",[xs.variable]:`colors.${t}.300`}},color:To.reference,bg:xs.reference}}}),Ioe=El({}),Roe={line:Poe,enclosed:Toe,"enclosed-colored":Loe,"soft-rounded":Aoe,"solid-rounded":Moe,unstyled:Ioe},Ooe=boe({baseStyle:koe,sizes:Eoe,variants:Roe,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),{defineMultiStyleConfig:Doe,definePartsStyle:Jf}=Jn(Eee.keys),Noe={fontWeight:"medium",lineHeight:1.2,outline:0,borderRadius:"md",_focusVisible:{boxShadow:"outline"}},Boe={lineHeight:1.2,overflow:"visible"},zoe={fontSize:"lg",w:"5",h:"5",transitionProperty:"common",transitionDuration:"normal",borderRadius:"full",marginStart:"1.5",marginEnd:"-1",opacity:.5,_disabled:{opacity:.4},_focusVisible:{boxShadow:"outline",bg:"rgba(0, 0, 0, 0.14)"},_hover:{opacity:.8},_active:{opacity:1}},Foe=Jf({container:Noe,label:Boe,closeButton:zoe}),$oe={sm:Jf({container:{minH:"5",minW:"5",fontSize:"xs",px:"2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:Jf({container:{minH:"6",minW:"6",fontSize:"sm",px:"2"}}),lg:Jf({container:{minH:"8",minW:"8",fontSize:"md",px:"3"}})},Hoe={subtle:Jf(e=>{var t;return{container:(t=zm.variants)==null?void 0:t.subtle(e)}}),solid:Jf(e=>{var t;return{container:(t=zm.variants)==null?void 0:t.solid(e)}}),outline:Jf(e=>{var t;return{container:(t=zm.variants)==null?void 0:t.outline(e)}})},Woe=Doe({variants:Hoe,baseStyle:Foe,sizes:$oe,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),TT,Voe={...(TT=vn.baseStyle)==null?void 0:TT.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"},LT,Uoe={outline:e=>{var t;return((t=vn.variants)==null?void 0:t.outline(e).field)??{}},flushed:e=>{var t;return((t=vn.variants)==null?void 0:t.flushed(e).field)??{}},filled:e=>{var t;return((t=vn.variants)==null?void 0:t.filled(e).field)??{}},unstyled:((LT=vn.variants)==null?void 0:LT.unstyled.field)??{}},AT,MT,IT,RT,Goe={xs:((AT=vn.sizes)==null?void 0:AT.xs.field)??{},sm:((MT=vn.sizes)==null?void 0:MT.sm.field)??{},md:((IT=vn.sizes)==null?void 0:IT.md.field)??{},lg:((RT=vn.sizes)==null?void 0:RT.lg.field)??{}},joe={baseStyle:Voe,sizes:Goe,variants:Uoe,defaultProps:{size:"md",variant:"outline"}},Fy=ni("tooltip-bg"),Vx=ni("tooltip-fg"),Yoe=ni("popper-arrow-bg"),qoe={bg:Fy.reference,color:Vx.reference,[Fy.variable]:"colors.gray.700",[Vx.variable]:"colors.whiteAlpha.900",_dark:{[Fy.variable]:"colors.gray.300",[Vx.variable]:"colors.gray.900"},[Yoe.variable]:Fy.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"},Koe={baseStyle:qoe},Xoe={Accordion:hte,Alert:xte,Avatar:Ite,Badge:zm,Breadcrumb:Wte,Button:Zte,Checkbox:H4,CloseButton:fne,Code:mne,Container:yne,Divider:Cne,Drawer:One,Editable:Hne,Form:Yne,FormError:Jne,FormLabel:tre,Heading:ire,Input:vn,Kbd:pre,Link:mre,List:xre,Menu:Mre,Modal:Wre,NumberInput:Qre,PinInput:nie,Popover:hie,Progress:xie,Radio:Eie,Select:Rie,Skeleton:Die,SkipLink:Bie,Slider:qie,Spinner:Zie,Stat:ooe,Switch:foe,Table:Soe,Tabs:Ooe,Tag:Woe,Textarea:joe,Tooltip:Koe,Card:nne},Zoe={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},Qoe=Zoe,Joe={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},eae=Joe,tae={transparent:"transparent",current:"currentColor",black:"#000000",white:"#FFFFFF",whiteAlpha:{50:"rgba(255, 255, 255, 0.04)",100:"rgba(255, 255, 255, 0.06)",200:"rgba(255, 255, 255, 0.08)",300:"rgba(255, 255, 255, 0.16)",400:"rgba(255, 255, 255, 0.24)",500:"rgba(255, 255, 255, 0.36)",600:"rgba(255, 255, 255, 0.48)",700:"rgba(255, 255, 255, 0.64)",800:"rgba(255, 255, 255, 0.80)",900:"rgba(255, 255, 255, 0.92)"},blackAlpha:{50:"rgba(0, 0, 0, 0.04)",100:"rgba(0, 0, 0, 0.06)",200:"rgba(0, 0, 0, 0.08)",300:"rgba(0, 0, 0, 0.16)",400:"rgba(0, 0, 0, 0.24)",500:"rgba(0, 0, 0, 0.36)",600:"rgba(0, 0, 0, 0.48)",700:"rgba(0, 0, 0, 0.64)",800:"rgba(0, 0, 0, 0.80)",900:"rgba(0, 0, 0, 0.92)"},gray:{50:"#F7FAFC",100:"#EDF2F7",200:"#E2E8F0",300:"#CBD5E0",400:"#A0AEC0",500:"#718096",600:"#4A5568",700:"#2D3748",800:"#1A202C",900:"#171923"},red:{50:"#FFF5F5",100:"#FED7D7",200:"#FEB2B2",300:"#FC8181",400:"#F56565",500:"#E53E3E",600:"#C53030",700:"#9B2C2C",800:"#822727",900:"#63171B"},orange:{50:"#FFFAF0",100:"#FEEBC8",200:"#FBD38D",300:"#F6AD55",400:"#ED8936",500:"#DD6B20",600:"#C05621",700:"#9C4221",800:"#7B341E",900:"#652B19"},yellow:{50:"#FFFFF0",100:"#FEFCBF",200:"#FAF089",300:"#F6E05E",400:"#ECC94B",500:"#D69E2E",600:"#B7791F",700:"#975A16",800:"#744210",900:"#5F370E"},green:{50:"#F0FFF4",100:"#C6F6D5",200:"#9AE6B4",300:"#68D391",400:"#48BB78",500:"#38A169",600:"#2F855A",700:"#276749",800:"#22543D",900:"#1C4532"},teal:{50:"#E6FFFA",100:"#B2F5EA",200:"#81E6D9",300:"#4FD1C5",400:"#38B2AC",500:"#319795",600:"#2C7A7B",700:"#285E61",800:"#234E52",900:"#1D4044"},blue:{50:"#ebf8ff",100:"#bee3f8",200:"#90cdf4",300:"#63b3ed",400:"#4299e1",500:"#3182ce",600:"#2b6cb0",700:"#2c5282",800:"#2a4365",900:"#1A365D"},cyan:{50:"#EDFDFD",100:"#C4F1F9",200:"#9DECF9",300:"#76E4F7",400:"#0BC5EA",500:"#00B5D8",600:"#00A3C4",700:"#0987A0",800:"#086F83",900:"#065666"},purple:{50:"#FAF5FF",100:"#E9D8FD",200:"#D6BCFA",300:"#B794F4",400:"#9F7AEA",500:"#805AD5",600:"#6B46C1",700:"#553C9A",800:"#44337A",900:"#322659"},pink:{50:"#FFF5F7",100:"#FED7E2",200:"#FBB6CE",300:"#F687B3",400:"#ED64A6",500:"#D53F8C",600:"#B83280",700:"#97266D",800:"#702459",900:"#521B41"},linkedin:{50:"#E8F4F9",100:"#CFEDFB",200:"#9BDAF3",300:"#68C7EC",400:"#34B3E4",500:"#00A0DC",600:"#008CC9",700:"#0077B5",800:"#005E93",900:"#004471"},facebook:{50:"#E8F4F9",100:"#D9DEE9",200:"#B7C2DA",300:"#6482C0",400:"#4267B2",500:"#385898",600:"#314E89",700:"#29487D",800:"#223B67",900:"#1E355B"},messenger:{50:"#D0E6FF",100:"#B9DAFF",200:"#A2CDFF",300:"#7AB8FF",400:"#2E90FF",500:"#0078FF",600:"#0063D1",700:"#0052AC",800:"#003C7E",900:"#002C5C"},whatsapp:{50:"#dffeec",100:"#b9f5d0",200:"#90edb3",300:"#65e495",400:"#3cdd78",500:"#22c35e",600:"#179848",700:"#0c6c33",800:"#01421c",900:"#001803"},twitter:{50:"#E5F4FD",100:"#C8E9FB",200:"#A8DCFA",300:"#83CDF7",400:"#57BBF5",500:"#1DA1F2",600:"#1A94DA",700:"#1681BF",800:"#136B9E",900:"#0D4D71"},telegram:{50:"#E3F2F9",100:"#C5E4F3",200:"#A2D4EC",300:"#7AC1E4",400:"#47A9DA",500:"#0088CC",600:"#007AB8",700:"#006BA1",800:"#005885",900:"#003F5E"}},nae=tae,rae={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},iae=rae,oae={xs:"0 0 0 1px rgba(0, 0, 0, 0.05)",sm:"0 1px 2px 0 rgba(0, 0, 0, 0.05)",base:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)",md:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",lg:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",xl:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)","2xl":"0 25px 50px -12px rgba(0, 0, 0, 0.25)",outline:"0 0 0 3px rgba(66, 153, 225, 0.6)",inner:"inset 0 2px 4px 0 rgba(0,0,0,0.06)",none:"none","dark-lg":"rgba(0, 0, 0, 0.1) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px 5px 10px, rgba(0, 0, 0, 0.4) 0px 15px 40px"},aae=oae,sae={common:"background-color, border-color, color, fill, stroke, opacity, box-shadow, transform",colors:"background-color, border-color, color, fill, stroke",dimensions:"width, height",position:"left, right, top, bottom",background:"background-color, background-image, background-position"},lae={"ease-in":"cubic-bezier(0.4, 0, 1, 1)","ease-out":"cubic-bezier(0, 0, 0.2, 1)","ease-in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},uae={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},cae={property:sae,easing:lae,duration:uae},dae=cae,fae={hide:-1,auto:"auto",base:0,docked:10,dropdown:1e3,sticky:1100,banner:1200,overlay:1300,modal:1400,popover:1500,skipLink:1600,toast:1700,tooltip:1800},hae=fae,pae={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},gae=pae,mae={breakpoints:eae,zIndices:hae,radii:iae,blur:gae,colors:nae,...nN,sizes:JD,shadows:aae,space:QD,borders:Qoe,transition:dae},vae={colors:{"chakra-body-text":{_light:"gray.800",_dark:"whiteAlpha.900"},"chakra-body-bg":{_light:"white",_dark:"gray.800"},"chakra-border-color":{_light:"gray.200",_dark:"whiteAlpha.300"},"chakra-subtle-bg":{_light:"gray.100",_dark:"gray.700"},"chakra-placeholder-color":{_light:"gray.500",_dark:"whiteAlpha.400"}}},yae={global:{body:{fontFamily:"body",color:"chakra-body-text",bg:"chakra-body-bg",transitionProperty:"background-color",transitionDuration:"normal",lineHeight:"base"},"*::placeholder":{color:"chakra-placeholder-color"},"*, *::before, &::after":{borderColor:"chakra-border-color",wordWrap:"break-word"}}},Sae="ltr",bae={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},xae={semanticTokens:vae,direction:Sae,...mae,components:Xoe,styles:yae,config:bae},wae=typeof Element<"u",Cae=typeof Map=="function",_ae=typeof Set=="function",kae=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function V3(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!V3(e[r],t[r]))return!1;return!0}var o;if(Cae&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;for(o=e.entries();!(r=o.next()).done;)if(!V3(r.value[1],t.get(r.value[0])))return!1;return!0}if(_ae&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(o=e.entries();!(r=o.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(kae&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;if(wae&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!V3(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var Eae=function(t,n){try{return V3(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};function h1(){const e=C.exports.useContext(_v);if(!e)throw Error("useTheme: `theme` is undefined. Seems you forgot to wrap your app in `` or ``");return e}function aN(){const e=Jv(),t=h1();return{...e,theme:t}}function Pae(e,t,n){if(t==null)return t;const r=i=>{var o,a;return(a=(o=e.__breakpoints)==null?void 0:o.asArray)==null?void 0:a[i]};return r(t)??r(n)??n}function Tae(e,t,n){if(t==null)return t;const r=i=>{var o,a;return(a=(o=e.__cssMap)==null?void 0:o[i])==null?void 0:a.value};return r(t)??r(n)??n}function Lae(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const a=i.filter(Boolean),s=r.map((l,u)=>{if(e==="breakpoints")return Pae(o,l,a[u]??l);const h=`${e}.${l}`;return Tae(o,h,a[u]??l)});return Array.isArray(t)?s:s[0]}}function Aae(e){const{cssVarsRoot:t,theme:n,children:r}=e,i=C.exports.useMemo(()=>_Q(n),[n]);return Q(RJ,{theme:i,children:[b(Mae,{root:t}),r]})}function Mae({root:e=":host, :root"}){const t=[e,"[data-theme]"].join(",");return b(lS,{styles:n=>({[t]:n.__cssVars})})}KJ({name:"StylesContext",errorMessage:"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` "});function Iae(){const{colorMode:e}=Jv();return b(lS,{styles:t=>{const n=HD(t,"styles.global"),r=UD(n,{theme:t,colorMode:e});return r?yD(r)(t):void 0}})}var Rae=new Set([...PQ,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),Oae=new Set(["htmlWidth","htmlHeight","htmlSize"]);function Dae(e){return Oae.has(e)||!Rae.has(e)}var Nae=({baseStyle:e})=>t=>{const{theme:n,css:r,__css:i,sx:o,...a}=t,s=WD(a,(g,m)=>LQ(m)),l=UD(e,t),u=Object.assign({},i,l,VD(s),o),h=yD(u)(t.theme);return r?[h,r]:h};function Ux(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=Dae);const i=Nae({baseStyle:n}),o=oC(e,r)(i);return se.forwardRef(function(l,u){const{colorMode:h,forced:g}=Jv();return se.createElement(o,{ref:u,"data-theme":g?h:void 0,...l})})}function Ee(e){return C.exports.forwardRef(e)}function sN(e,t={}){const{styleConfig:n,...r}=t,{theme:i,colorMode:o}=aN(),a=e?HD(i,`components.${e}`):void 0,s=n||a,l=bl({theme:i,colorMode:o},s?.defaultProps??{},VD(VJ(r,["children"]))),u=C.exports.useRef({});if(s){const g=FQ(s)(l);Eae(u.current,g)||(u.current=g)}return u.current}function so(e,t={}){return sN(e,t)}function Ii(e,t={}){return sN(e,t)}function Bae(){const e=new Map;return new Proxy(Ux,{apply(t,n,r){return Ux(...r)},get(t,n){return e.has(n)||e.set(n,Ux(n)),e.get(n)}})}var be=Bae();function zae(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function _n(e={}){const{name:t,strict:n=!0,hookName:r="useContext",providerName:i="Provider",errorMessage:o}=e,a=C.exports.createContext(void 0);a.displayName=t;function s(){var l;const u=C.exports.useContext(a);if(!u&&n){const h=new Error(o??zae(r,i));throw h.name="ContextError",(l=Error.captureStackTrace)==null||l.call(Error,h,s),h}return u}return[a.Provider,s,a]}function Fae(e,t){if(e!=null){if(typeof e=="function"){e(t);return}try{e.current=t}catch{throw new Error(`Cannot assign value '${t}' to ref '${e}'`)}}}function Wn(...e){return t=>{e.forEach(n=>{Fae(n,t)})}}function $ae(...e){return C.exports.useMemo(()=>Wn(...e),e)}function OT(e){return e.sort((t,n)=>{const r=t.compareDocumentPosition(n);if(r&Node.DOCUMENT_POSITION_FOLLOWING||r&Node.DOCUMENT_POSITION_CONTAINED_BY)return-1;if(r&Node.DOCUMENT_POSITION_PRECEDING||r&Node.DOCUMENT_POSITION_CONTAINS)return 1;if(r&Node.DOCUMENT_POSITION_DISCONNECTED||r&Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC)throw Error("Cannot sort the given nodes.");return 0})}var Hae=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function DT(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function NT(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var dC=typeof window<"u"?C.exports.useLayoutEffect:C.exports.useEffect,V4=e=>e,Wae=class{descendants=new Map;register=e=>{if(e!=null)return Hae(e)?this.registerNode(e):t=>{this.registerNode(t,e)}};unregister=e=>{this.descendants.delete(e);const t=OT(Array.from(this.descendants.keys()));this.assignIndex(t)};destroy=()=>{this.descendants.clear()};assignIndex=e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})};count=()=>this.descendants.size;enabledCount=()=>this.enabledValues().length;values=()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index);enabledValues=()=>this.values().filter(e=>!e.disabled);item=e=>{if(this.count()!==0)return this.values()[e]};enabledItem=e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]};first=()=>this.item(0);firstEnabled=()=>this.enabledItem(0);last=()=>this.item(this.descendants.size-1);lastEnabled=()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)};indexOf=e=>{var t;return e?((t=this.descendants.get(e))==null?void 0:t.index)??-1:-1};enabledIndexOf=e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e));next=(e,t=!0)=>{const n=DT(e,this.count(),t);return this.item(n)};nextEnabled=(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),i=DT(r,this.enabledCount(),t);return this.enabledItem(i)};prev=(e,t=!0)=>{const n=NT(e,this.count()-1,t);return this.item(n)};prevEnabled=(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),i=NT(r,this.enabledCount()-1,t);return this.enabledItem(i)};registerNode=(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=OT(n);t?.disabled&&(t.disabled=!!t.disabled);const i={node:e,index:-1,...t};this.descendants.set(e,i),this.assignIndex(r)}};function Vae(){const e=C.exports.useRef(new Wae);return dC(()=>()=>e.current.destroy()),e.current}var[Uae,lN]=_n({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function Gae(e){const t=lN(),[n,r]=C.exports.useState(-1),i=C.exports.useRef(null);dC(()=>()=>{!i.current||t.unregister(i.current)},[]),dC(()=>{if(!i.current)return;const a=Number(i.current.dataset.index);n!=a&&!Number.isNaN(a)&&r(a)});const o=V4(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(i.current),register:Wn(o,i)}}function uN(){return[V4(Uae),()=>V4(lN()),()=>Vae(),i=>Gae(i)]}var Dr=(...e)=>e.filter(Boolean).join(" "),BT={path:Q("g",{stroke:"currentColor",strokeWidth:"1.5",children:[b("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),b("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),b("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},Sa=Ee((e,t)=>{const{as:n,viewBox:r,color:i="currentColor",focusable:o=!1,children:a,className:s,__css:l,...u}=e,h=Dr("chakra-icon",s),g={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:i,...l},m={ref:t,focusable:o,className:h,__css:g},v=r??BT.viewBox;if(n&&typeof n!="string")return se.createElement(be.svg,{as:n,...m,...u});const S=a??BT.path;return se.createElement(be.svg,{verticalAlign:"middle",viewBox:v,...m,...u},S)});Sa.displayName="Icon";function at(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:i={}}=e,o=C.exports.Children.toArray(e.path),a=Ee((s,l)=>b(Sa,{ref:l,viewBox:t,...i,...s,children:o.length?o:b("path",{fill:"currentColor",d:n})}));return a.displayName=r,a}function dr(e,t=[]){const n=C.exports.useRef(e);return C.exports.useEffect(()=>{n.current=e}),C.exports.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function fS(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:i=(m,v)=>m!==v}=e,o=dr(r),a=dr(i),[s,l]=C.exports.useState(n),u=t!==void 0,h=u?t:s,g=dr(m=>{const S=typeof m=="function"?m(h):m;!a(h,S)||(u||l(S),o(S))},[u,o,h,a]);return[h,g]}const l8=C.exports.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),hS=C.exports.createContext({});function jae(){return C.exports.useContext(hS).visualElement}const p1=C.exports.createContext(null),yh=typeof document<"u",U4=yh?C.exports.useLayoutEffect:C.exports.useEffect,cN=C.exports.createContext({strict:!1});function Yae(e,t,n,r){const i=jae(),o=C.exports.useContext(cN),a=C.exports.useContext(p1),s=C.exports.useContext(l8).reducedMotion,l=C.exports.useRef();r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceId:a?a.id:void 0,blockInitialAnimation:a?a.initial===!1:!1,reducedMotionConfig:s}));const u=l.current;return U4(()=>{u&&u.render()}),C.exports.useEffect(()=>{u&&u.animationState&&u.animationState.animateChanges()}),U4(()=>()=>u&&u.notify("Unmount"),[]),u}function o0(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function qae(e,t,n){return C.exports.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):o0(n)&&(n.current=r))},[t])}function Tv(e){return typeof e=="string"||Array.isArray(e)}function pS(e){return typeof e=="object"&&typeof e.start=="function"}const Kae=["initial","animate","exit","whileHover","whileDrag","whileTap","whileFocus","whileInView"];function gS(e){return pS(e.animate)||Kae.some(t=>Tv(e[t]))}function dN(e){return Boolean(gS(e)||e.variants)}function Xae(e,t){if(gS(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Tv(n)?n:void 0,animate:Tv(r)?r:void 0}}return e.inherit!==!1?t:{}}function Zae(e){const{initial:t,animate:n}=Xae(e,C.exports.useContext(hS));return C.exports.useMemo(()=>({initial:t,animate:n}),[zT(t),zT(n)])}function zT(e){return Array.isArray(e)?e.join(" "):e}const uu=e=>({isEnabled:t=>e.some(n=>!!t[n])}),Lv={measureLayout:uu(["layout","layoutId","drag"]),animation:uu(["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"]),exit:uu(["exit"]),drag:uu(["drag","dragControls"]),focus:uu(["whileFocus"]),hover:uu(["whileHover","onHoverStart","onHoverEnd"]),tap:uu(["whileTap","onTap","onTapStart","onTapCancel"]),pan:uu(["onPan","onPanStart","onPanSessionStart","onPanEnd"]),inView:uu(["whileInView","onViewportEnter","onViewportLeave"])};function Qae(e){for(const t in e)t==="projectionNodeConstructor"?Lv.projectionNodeConstructor=e[t]:Lv[t].Component=e[t]}function mS(e){const t=C.exports.useRef(null);return t.current===null&&(t.current=e()),t.current}const Wm={hasAnimatedSinceResize:!0,hasEverUpdated:!1};let Jae=1;function ese(){return mS(()=>{if(Wm.hasEverUpdated)return Jae++})}const u8=C.exports.createContext({});class tse extends se.Component{getSnapshotBeforeUpdate(){const{visualElement:t,props:n}=this.props;return t&&t.setProps(n),null}componentDidUpdate(){}render(){return this.props.children}}const fN=C.exports.createContext({}),nse=Symbol.for("motionComponentSymbol");function rse({preloadedFeatures:e,createVisualElement:t,projectionNodeConstructor:n,useRender:r,useVisualState:i,Component:o}){e&&Qae(e);function a(l,u){const h={...C.exports.useContext(l8),...l,layoutId:ise(l)},{isStatic:g}=h;let m=null;const v=Zae(l),S=g?void 0:ese(),w=i(l,g);if(!g&&yh){v.visualElement=Yae(o,w,h,t);const k=C.exports.useContext(cN).strict,P=C.exports.useContext(fN);v.visualElement&&(m=v.visualElement.loadFeatures(h,k,e,S,n||Lv.projectionNodeConstructor,P))}return Q(tse,{visualElement:v.visualElement,props:h,children:[m,b(hS.Provider,{value:v,children:r(o,l,S,qae(w,v.visualElement,u),w,g,v.visualElement)})]})}const s=C.exports.forwardRef(a);return s[nse]=o,s}function ise({layoutId:e}){const t=C.exports.useContext(u8).id;return t&&e!==void 0?t+"-"+e:e}function ose(e){function t(r,i={}){return rse(e(r,i))}if(typeof Proxy>"u")return t;const n=new Map;return new Proxy(t,{get:(r,i)=>(n.has(i)||n.set(i,t(i)),n.get(i))})}const ase=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","svg","switch","symbol","text","tspan","use","view"];function c8(e){return typeof e!="string"||e.includes("-")?!1:!!(ase.indexOf(e)>-1||/[A-Z]/.test(e))}const G4={};function sse(e){Object.assign(G4,e)}const j4=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],g1=new Set(j4);function hN(e,{layout:t,layoutId:n}){return g1.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!G4[e]||e==="opacity")}const Il=e=>!!e?.getVelocity,lse={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},use=(e,t)=>j4.indexOf(e)-j4.indexOf(t);function cse({transform:e,transformKeys:t},{enableHardwareAcceleration:n=!0,allowTransformNone:r=!0},i,o){let a="";t.sort(use);for(const s of t)a+=`${lse[s]||s}(${e[s]}) `;return n&&!e.z&&(a+="translateZ(0)"),a=a.trim(),o?a=o(e,i?"":a):r&&i&&(a="none"),a}function pN(e){return e.startsWith("--")}const dse=(e,t)=>t&&typeof e=="number"?t.transform(e):e,gN=(e,t)=>n=>Math.max(Math.min(n,t),e),Vm=e=>e%1?Number(e.toFixed(5)):e,Av=/(-)?([\d]*\.?[\d])+/g,fC=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,fse=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function r2(e){return typeof e=="string"}const Sh={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Um=Object.assign(Object.assign({},Sh),{transform:gN(0,1)}),$y=Object.assign(Object.assign({},Sh),{default:1}),i2=e=>({test:t=>r2(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),Ic=i2("deg"),Pl=i2("%"),Ct=i2("px"),hse=i2("vh"),pse=i2("vw"),FT=Object.assign(Object.assign({},Pl),{parse:e=>Pl.parse(e)/100,transform:e=>Pl.transform(e*100)}),d8=(e,t)=>n=>Boolean(r2(n)&&fse.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),mN=(e,t,n)=>r=>{if(!r2(r))return r;const[i,o,a,s]=r.match(Av);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(a),alpha:s!==void 0?parseFloat(s):1}},Vf={test:d8("hsl","hue"),parse:mN("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+Pl.transform(Vm(t))+", "+Pl.transform(Vm(n))+", "+Vm(Um.transform(r))+")"},gse=gN(0,255),Gx=Object.assign(Object.assign({},Sh),{transform:e=>Math.round(gse(e))}),jc={test:d8("rgb","red"),parse:mN("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Gx.transform(e)+", "+Gx.transform(t)+", "+Gx.transform(n)+", "+Vm(Um.transform(r))+")"};function mse(e){let t="",n="",r="",i="";return e.length>5?(t=e.substr(1,2),n=e.substr(3,2),r=e.substr(5,2),i=e.substr(7,2)):(t=e.substr(1,1),n=e.substr(2,1),r=e.substr(3,1),i=e.substr(4,1),t+=t,n+=n,r+=r,i+=i),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:i?parseInt(i,16)/255:1}}const hC={test:d8("#"),parse:mse,transform:jc.transform},Ji={test:e=>jc.test(e)||hC.test(e)||Vf.test(e),parse:e=>jc.test(e)?jc.parse(e):Vf.test(e)?Vf.parse(e):hC.parse(e),transform:e=>r2(e)?e:e.hasOwnProperty("red")?jc.transform(e):Vf.transform(e)},vN="${c}",yN="${n}";function vse(e){var t,n,r,i;return isNaN(e)&&r2(e)&&((n=(t=e.match(Av))===null||t===void 0?void 0:t.length)!==null&&n!==void 0?n:0)+((i=(r=e.match(fC))===null||r===void 0?void 0:r.length)!==null&&i!==void 0?i:0)>0}function SN(e){typeof e=="number"&&(e=`${e}`);const t=[];let n=0;const r=e.match(fC);r&&(n=r.length,e=e.replace(fC,vN),t.push(...r.map(Ji.parse)));const i=e.match(Av);return i&&(e=e.replace(Av,yN),t.push(...i.map(Sh.parse))),{values:t,numColors:n,tokenised:e}}function bN(e){return SN(e).values}function xN(e){const{values:t,numColors:n,tokenised:r}=SN(e),i=t.length;return o=>{let a=r;for(let s=0;stypeof e=="number"?0:e;function Sse(e){const t=bN(e);return xN(e)(t.map(yse))}const Eu={test:vse,parse:bN,createTransformer:xN,getAnimatableNone:Sse},bse=new Set(["brightness","contrast","saturate","opacity"]);function xse(e){let[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(Av)||[];if(!r)return e;const i=n.replace(r,"");let o=bse.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const wse=/([a-z-]*)\(.*?\)/g,pC=Object.assign(Object.assign({},Eu),{getAnimatableNone:e=>{const t=e.match(wse);return t?t.map(xse).join(" "):e}}),$T={...Sh,transform:Math.round},wN={borderWidth:Ct,borderTopWidth:Ct,borderRightWidth:Ct,borderBottomWidth:Ct,borderLeftWidth:Ct,borderRadius:Ct,radius:Ct,borderTopLeftRadius:Ct,borderTopRightRadius:Ct,borderBottomRightRadius:Ct,borderBottomLeftRadius:Ct,width:Ct,maxWidth:Ct,height:Ct,maxHeight:Ct,size:Ct,top:Ct,right:Ct,bottom:Ct,left:Ct,padding:Ct,paddingTop:Ct,paddingRight:Ct,paddingBottom:Ct,paddingLeft:Ct,margin:Ct,marginTop:Ct,marginRight:Ct,marginBottom:Ct,marginLeft:Ct,rotate:Ic,rotateX:Ic,rotateY:Ic,rotateZ:Ic,scale:$y,scaleX:$y,scaleY:$y,scaleZ:$y,skew:Ic,skewX:Ic,skewY:Ic,distance:Ct,translateX:Ct,translateY:Ct,translateZ:Ct,x:Ct,y:Ct,z:Ct,perspective:Ct,transformPerspective:Ct,opacity:Um,originX:FT,originY:FT,originZ:Ct,zIndex:$T,fillOpacity:Um,strokeOpacity:Um,numOctaves:$T};function f8(e,t,n,r){const{style:i,vars:o,transform:a,transformKeys:s,transformOrigin:l}=e;s.length=0;let u=!1,h=!1,g=!0;for(const m in t){const v=t[m];if(pN(m)){o[m]=v;continue}const S=wN[m],w=dse(v,S);if(g1.has(m)){if(u=!0,a[m]=w,s.push(m),!g)continue;v!==(S.default||0)&&(g=!1)}else m.startsWith("origin")?(h=!0,l[m]=w):i[m]=w}if(t.transform||(u||r?i.transform=cse(e,n,g,r):i.transform&&(i.transform="none")),h){const{originX:m="50%",originY:v="50%",originZ:S=0}=l;i.transformOrigin=`${m} ${v} ${S}`}}const h8=()=>({style:{},transform:{},transformKeys:[],transformOrigin:{},vars:{}});function CN(e,t,n){for(const r in t)!Il(t[r])&&!hN(r,n)&&(e[r]=t[r])}function Cse({transformTemplate:e},t,n){return C.exports.useMemo(()=>{const r=h8();return f8(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function _se(e,t,n){const r=e.style||{},i={};return CN(i,r,e),Object.assign(i,Cse(e,t,n)),e.transformValues?e.transformValues(i):i}function kse(e,t,n){const r={},i=_se(e,t,n);return e.drag&&e.dragListener!==!1&&(r.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),r.style=i,r}const Ese=["animate","exit","variants","whileHover","whileTap","whileFocus","whileDrag","whileInView"],Pse=["whileTap","onTap","onTapStart","onTapCancel"],Tse=["onPan","onPanStart","onPanSessionStart","onPanEnd"],Lse=["whileInView","onViewportEnter","onViewportLeave","viewport"],Ase=new Set(["initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","layout","layoutId","layoutDependency","onLayoutAnimationStart","onLayoutAnimationComplete","onLayoutMeasure","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","drag","dragControls","dragListener","dragConstraints","dragDirectionLock","dragSnapToOrigin","_dragX","_dragY","dragElastic","dragMomentum","dragPropagation","dragTransition","onHoverStart","onHoverEnd","layoutScroll",...Lse,...Pse,...Ese,...Tse]);function Y4(e){return Ase.has(e)}let _N=e=>!Y4(e);function Mse(e){!e||(_N=t=>t.startsWith("on")?!Y4(t):e(t))}try{Mse(require("@emotion/is-prop-valid").default)}catch{}function Ise(e,t,n){const r={};for(const i in e)(_N(i)||n===!0&&Y4(i)||!t&&!Y4(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function HT(e,t,n){return typeof e=="string"?e:Ct.transform(t+n*e)}function Rse(e,t,n){const r=HT(t,e.x,e.width),i=HT(n,e.y,e.height);return`${r} ${i}`}const Ose={offset:"stroke-dashoffset",array:"stroke-dasharray"},Dse={offset:"strokeDashoffset",array:"strokeDasharray"};function Nse(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?Ose:Dse;e[o.offset]=Ct.transform(-r);const a=Ct.transform(t),s=Ct.transform(n);e[o.array]=`${a} ${s}`}function p8(e,{attrX:t,attrY:n,originX:r,originY:i,pathLength:o,pathSpacing:a=1,pathOffset:s=0,...l},u,h){f8(e,l,u,h),e.attrs=e.style,e.style={};const{attrs:g,style:m,dimensions:v}=e;g.transform&&(v&&(m.transform=g.transform),delete g.transform),v&&(r!==void 0||i!==void 0||m.transform)&&(m.transformOrigin=Rse(v,r!==void 0?r:.5,i!==void 0?i:.5)),t!==void 0&&(g.x=t),n!==void 0&&(g.y=n),o!==void 0&&Nse(g,o,a,s,!1)}const kN=()=>({...h8(),attrs:{}});function Bse(e,t){const n=C.exports.useMemo(()=>{const r=kN();return p8(r,t,{enableHardwareAcceleration:!1},e.transformTemplate),{...r.attrs,style:{...r.style}}},[t]);if(e.style){const r={};CN(r,e.style,e),n.style={...r,...n.style}}return n}function zse(e=!1){return(n,r,i,o,{latestValues:a},s)=>{const u=(c8(n)?Bse:kse)(r,a,s),g={...Ise(r,typeof n=="string",e),...u,ref:o};return i&&(g["data-projection-id"]=i),C.exports.createElement(n,g)}}const EN=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function PN(e,{style:t,vars:n},r,i){Object.assign(e.style,t,i&&i.getProjectionStyles(r));for(const o in n)e.style.setProperty(o,n[o])}const TN=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength"]);function LN(e,t,n,r){PN(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(TN.has(i)?i:EN(i),t.attrs[i])}function g8(e){const{style:t}=e,n={};for(const r in t)(Il(t[r])||hN(r,e))&&(n[r]=t[r]);return n}function AN(e){const t=g8(e);for(const n in e)if(Il(e[n])){const r=n==="x"||n==="y"?"attr"+n.toUpperCase():n;t[r]=e[n]}return t}function m8(e,t,n,r={},i={}){return typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"&&(t=t(n!==void 0?n:e.custom,r,i)),t}const Mv=e=>Array.isArray(e),Fse=e=>Boolean(e&&typeof e=="object"&&e.mix&&e.toValue),MN=e=>Mv(e)?e[e.length-1]||0:e;function U3(e){const t=Il(e)?e.get():e;return Fse(t)?t.toValue():t}function $se({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const a={latestValues:Hse(r,i,o,e),renderState:t()};return n&&(a.mount=s=>n(r,s,a)),a}const IN=e=>(t,n)=>{const r=C.exports.useContext(hS),i=C.exports.useContext(p1),o=()=>$se(e,t,r,i);return n?o():mS(o)};function Hse(e,t,n,r){const i={},o=r(e);for(const m in o)i[m]=U3(o[m]);let{initial:a,animate:s}=e;const l=gS(e),u=dN(e);t&&u&&!l&&e.inherit!==!1&&(a===void 0&&(a=t.initial),s===void 0&&(s=t.animate));let h=n?n.initial===!1:!1;h=h||a===!1;const g=h?s:a;return g&&typeof g!="boolean"&&!pS(g)&&(Array.isArray(g)?g:[g]).forEach(v=>{const S=m8(e,v);if(!S)return;const{transitionEnd:w,transition:k,...P}=S;for(const E in P){let T=P[E];if(Array.isArray(T)){const M=h?T.length-1:0;T=T[M]}T!==null&&(i[E]=T)}for(const E in w)i[E]=w[E]}),i}const Wse={useVisualState:IN({scrapeMotionValuesFromProps:AN,createRenderState:kN,onMount:(e,t,{renderState:n,latestValues:r})=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}p8(n,r,{enableHardwareAcceleration:!1},e.transformTemplate),LN(t,n)}})},Vse={useVisualState:IN({scrapeMotionValuesFromProps:g8,createRenderState:h8})};function Use(e,{forwardMotionProps:t=!1},n,r,i){return{...c8(e)?Wse:Vse,preloadedFeatures:n,useRender:zse(t),createVisualElement:r,projectionNodeConstructor:i,Component:e}}var Yn;(function(e){e.Animate="animate",e.Hover="whileHover",e.Tap="whileTap",e.Drag="whileDrag",e.Focus="whileFocus",e.InView="whileInView",e.Exit="exit"})(Yn||(Yn={}));function vS(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}function gC(e,t,n,r){C.exports.useEffect(()=>{const i=e.current;if(n&&i)return vS(i,t,n,r)},[e,t,n,r])}function Gse({whileFocus:e,visualElement:t}){const{animationState:n}=t,r=()=>{n&&n.setActive(Yn.Focus,!0)},i=()=>{n&&n.setActive(Yn.Focus,!1)};gC(t,"focus",e?r:void 0),gC(t,"blur",e?i:void 0)}function RN(e){return typeof PointerEvent<"u"&&e instanceof PointerEvent?e.pointerType==="mouse":e instanceof MouseEvent}function ON(e){return!!e.touches}function jse(e){return t=>{const n=t instanceof MouseEvent;(!n||n&&t.button===0)&&e(t)}}const Yse={pageX:0,pageY:0};function qse(e,t="page"){const r=e.touches[0]||e.changedTouches[0]||Yse;return{x:r[t+"X"],y:r[t+"Y"]}}function Kse(e,t="page"){return{x:e[t+"X"],y:e[t+"Y"]}}function v8(e,t="page"){return{point:ON(e)?qse(e,t):Kse(e,t)}}const DN=(e,t=!1)=>{const n=r=>e(r,v8(r));return t?jse(n):n},Xse=()=>yh&&window.onpointerdown===null,Zse=()=>yh&&window.ontouchstart===null,Qse=()=>yh&&window.onmousedown===null,Jse={pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointercancel:"mousecancel",pointerover:"mouseover",pointerout:"mouseout",pointerenter:"mouseenter",pointerleave:"mouseleave"},ele={pointerdown:"touchstart",pointermove:"touchmove",pointerup:"touchend",pointercancel:"touchcancel"};function NN(e){return Xse()?e:Zse()?ele[e]:Qse()?Jse[e]:e}function T0(e,t,n,r){return vS(e,NN(t),DN(n,t==="pointerdown"),r)}function q4(e,t,n,r){return gC(e,NN(t),n&&DN(n,t==="pointerdown"),r)}function BN(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const WT=BN("dragHorizontal"),VT=BN("dragVertical");function zN(e){let t=!1;if(e==="y")t=VT();else if(e==="x")t=WT();else{const n=WT(),r=VT();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function FN(){const e=zN(!0);return e?(e(),!1):!0}function UT(e,t,n){return(r,i)=>{!RN(r)||FN()||(e.animationState&&e.animationState.setActive(Yn.Hover,t),n&&n(r,i))}}function tle({onHoverStart:e,onHoverEnd:t,whileHover:n,visualElement:r}){q4(r,"pointerenter",e||n?UT(r,!0,e):void 0,{passive:!e}),q4(r,"pointerleave",t||n?UT(r,!1,t):void 0,{passive:!t})}const $N=(e,t)=>t?e===t?!0:$N(e,t.parentElement):!1;function y8(e){return C.exports.useEffect(()=>()=>e(),[])}function HN(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,r=Object.getOwnPropertySymbols(e);iMath.min(Math.max(n,e),t),jx=.001,rle=.01,GT=10,ile=.05,ole=1;function ale({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;nle(e<=GT*1e3);let a=1-t;a=X4(ile,ole,a),e=X4(rle,GT,e/1e3),a<1?(i=u=>{const h=u*a,g=h*e,m=h-n,v=mC(u,a),S=Math.exp(-g);return jx-m/v*S},o=u=>{const g=u*a*e,m=g*n+n,v=Math.pow(a,2)*Math.pow(u,2)*e,S=Math.exp(-g),w=mC(Math.pow(u,2),a);return(-i(u)+jx>0?-1:1)*((m-v)*S)/w}):(i=u=>{const h=Math.exp(-u*e),g=(u-n)*e+1;return-jx+h*g},o=u=>{const h=Math.exp(-u*e),g=(n-u)*(e*e);return h*g});const s=5/e,l=lle(i,o,s);if(e=e*1e3,isNaN(l))return{stiffness:100,damping:10,duration:e};{const u=Math.pow(l,2)*r;return{stiffness:u,damping:a*2*Math.sqrt(r*u),duration:e}}}const sle=12;function lle(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function dle(e){let t=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},e);if(!jT(e,cle)&&jT(e,ule)){const n=ale(e);t=Object.assign(Object.assign(Object.assign({},t),n),{velocity:0,mass:1}),t.isResolvedFromDuration=!0}return t}function S8(e){var{from:t=0,to:n=1,restSpeed:r=2,restDelta:i}=e,o=HN(e,["from","to","restSpeed","restDelta"]);const a={done:!1,value:t};let{stiffness:s,damping:l,mass:u,velocity:h,duration:g,isResolvedFromDuration:m}=dle(o),v=YT,S=YT;function w(){const k=h?-(h/1e3):0,P=n-t,E=l/(2*Math.sqrt(s*u)),T=Math.sqrt(s/u)/1e3;if(i===void 0&&(i=Math.min(Math.abs(n-t)/100,.4)),E<1){const M=mC(T,E);v=R=>{const O=Math.exp(-E*T*R);return n-O*((k+E*T*P)/M*Math.sin(M*R)+P*Math.cos(M*R))},S=R=>{const O=Math.exp(-E*T*R);return E*T*O*(Math.sin(M*R)*(k+E*T*P)/M+P*Math.cos(M*R))-O*(Math.cos(M*R)*(k+E*T*P)-M*P*Math.sin(M*R))}}else if(E===1)v=M=>n-Math.exp(-T*M)*(P+(k+T*P)*M);else{const M=T*Math.sqrt(E*E-1);v=R=>{const O=Math.exp(-E*T*R),D=Math.min(M*R,300);return n-O*((k+E*T*P)*Math.sinh(D)+M*P*Math.cosh(D))/M}}}return w(),{next:k=>{const P=v(k);if(m)a.done=k>=g;else{const E=S(k)*1e3,T=Math.abs(E)<=r,M=Math.abs(n-P)<=i;a.done=T&&M}return a.value=a.done?n:P,a},flipTarget:()=>{h=-h,[t,n]=[n,t],w()}}}S8.needsInterpolation=(e,t)=>typeof e=="string"||typeof t=="string";const YT=e=>0,Iv=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},Cr=(e,t,n)=>-n*e+n*t+e;function Yx(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function qT({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,o=0,a=0;if(!t)i=o=a=n;else{const s=n<.5?n*(1+t):n+t-n*t,l=2*n-s;i=Yx(l,s,e+1/3),o=Yx(l,s,e),a=Yx(l,s,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(a*255),alpha:r}}const fle=(e,t,n)=>{const r=e*e,i=t*t;return Math.sqrt(Math.max(0,n*(i-r)+r))},hle=[hC,jc,Vf],KT=e=>hle.find(t=>t.test(e)),WN=(e,t)=>{let n=KT(e),r=KT(t),i=n.parse(e),o=r.parse(t);n===Vf&&(i=qT(i),n=jc),r===Vf&&(o=qT(o),r=jc);const a=Object.assign({},i);return s=>{for(const l in a)l!=="alpha"&&(a[l]=fle(i[l],o[l],s));return a.alpha=Cr(i.alpha,o.alpha,s),n.transform(a)}},vC=e=>typeof e=="number",ple=(e,t)=>n=>t(e(n)),yS=(...e)=>e.reduce(ple);function VN(e,t){return vC(e)?n=>Cr(e,t,n):Ji.test(e)?WN(e,t):GN(e,t)}const UN=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,a)=>VN(o,t[a]));return o=>{for(let a=0;a{const n=Object.assign(Object.assign({},e),t),r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=VN(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}};function XT(e){const t=Eu.parse(e),n=t.length;let r=0,i=0,o=0;for(let a=0;a{const n=Eu.createTransformer(t),r=XT(e),i=XT(t);return r.numHSL===i.numHSL&&r.numRGB===i.numRGB&&r.numNumbers>=i.numNumbers?yS(UN(r.parsed,i.parsed),n):a=>`${a>0?t:e}`},mle=(e,t)=>n=>Cr(e,t,n);function vle(e){if(typeof e=="number")return mle;if(typeof e=="string")return Ji.test(e)?WN:GN;if(Array.isArray(e))return UN;if(typeof e=="object")return gle}function yle(e,t,n){const r=[],i=n||vle(e[0]),o=e.length-1;for(let a=0;an(Iv(e,t,r))}function ble(e,t){const n=e.length,r=n-1;return i=>{let o=0,a=!1;if(i<=e[0]?a=!0:i>=e[r]&&(o=r-1,a=!0),!a){let l=1;for(;li||l===r);l++);o=l-1}const s=Iv(e[o],e[o+1],i);return t[o](s)}}function jN(e,t,{clamp:n=!0,ease:r,mixer:i}={}){const o=e.length;K4(o===t.length),K4(!r||!Array.isArray(r)||r.length===o-1),e[0]>e[o-1]&&(e=[].concat(e),t=[].concat(t),e.reverse(),t.reverse());const a=yle(t,r,i),s=o===2?Sle(e,a):ble(e,a);return n?l=>s(X4(e[0],e[o-1],l)):s}const SS=e=>t=>1-e(1-t),b8=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,xle=e=>t=>Math.pow(t,e),YN=e=>t=>t*t*((e+1)*t-e),wle=e=>{const t=YN(e);return n=>(n*=2)<1?.5*t(n):.5*(2-Math.pow(2,-10*(n-1)))},qN=1.525,Cle=4/11,_le=8/11,kle=9/10,x8=e=>e,w8=xle(2),Ele=SS(w8),KN=b8(w8),XN=e=>1-Math.sin(Math.acos(e)),C8=SS(XN),Ple=b8(C8),_8=YN(qN),Tle=SS(_8),Lle=b8(_8),Ale=wle(qN),Mle=4356/361,Ile=35442/1805,Rle=16061/1805,Z4=e=>{if(e===1||e===0)return e;const t=e*e;return ee<.5?.5*(1-Z4(1-e*2)):.5*Z4(e*2-1)+.5;function Nle(e,t){return e.map(()=>t||KN).splice(0,e.length-1)}function Ble(e){const t=e.length;return e.map((n,r)=>r!==0?r/(t-1):0)}function zle(e,t){return e.map(n=>n*t)}function G3({from:e=0,to:t=1,ease:n,offset:r,duration:i=300}){const o={done:!1,value:e},a=Array.isArray(t)?t:[e,t],s=zle(r&&r.length===a.length?r:Ble(a),i);function l(){return jN(s,a,{ease:Array.isArray(n)?n:Nle(a,n)})}let u=l();return{next:h=>(o.value=u(h),o.done=h>=i,o),flipTarget:()=>{a.reverse(),u=l()}}}function Fle({velocity:e=0,from:t=0,power:n=.8,timeConstant:r=350,restDelta:i=.5,modifyTarget:o}){const a={done:!1,value:t};let s=n*e;const l=t+s,u=o===void 0?l:o(l);return u!==l&&(s=u-t),{next:h=>{const g=-s*Math.exp(-h/r);return a.done=!(g>i||g<-i),a.value=a.done?u:u+g,a},flipTarget:()=>{}}}const ZT={keyframes:G3,spring:S8,decay:Fle};function $le(e){if(Array.isArray(e.to))return G3;if(ZT[e.type])return ZT[e.type];const t=new Set(Object.keys(e));return t.has("ease")||t.has("duration")&&!t.has("dampingRatio")?G3:t.has("dampingRatio")||t.has("stiffness")||t.has("mass")||t.has("damping")||t.has("restSpeed")||t.has("restDelta")?S8:G3}const ZN=1/60*1e3,Hle=typeof performance<"u"?()=>performance.now():()=>Date.now(),QN=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(Hle()),ZN);function Wle(e){let t=[],n=[],r=0,i=!1,o=!1;const a=new WeakSet,s={schedule:(l,u=!1,h=!1)=>{const g=h&&i,m=g?t:n;return u&&a.add(l),m.indexOf(l)===-1&&(m.push(l),g&&i&&(r=t.length)),l},cancel:l=>{const u=n.indexOf(l);u!==-1&&n.splice(u,1),a.delete(l)},process:l=>{if(i){o=!0;return}if(i=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let u=0;u(e[t]=Wle(()=>Rv=!0),e),{}),Ule=o2.reduce((e,t)=>{const n=bS[t];return e[t]=(r,i=!1,o=!1)=>(Rv||Yle(),n.schedule(r,i,o)),e},{}),Gle=o2.reduce((e,t)=>(e[t]=bS[t].cancel,e),{});o2.reduce((e,t)=>(e[t]=()=>bS[t].process(L0),e),{});const jle=e=>bS[e].process(L0),JN=e=>{Rv=!1,L0.delta=yC?ZN:Math.max(Math.min(e-L0.timestamp,Vle),1),L0.timestamp=e,SC=!0,o2.forEach(jle),SC=!1,Rv&&(yC=!1,QN(JN))},Yle=()=>{Rv=!0,yC=!0,SC||QN(JN)},qle=()=>L0;function eB(e,t,n=0){return e-t-n}function Kle(e,t,n=0,r=!0){return r?eB(t+-e,t,n):t-(e-t)+n}function Xle(e,t,n,r){return r?e>=t+n:e<=-n}const Zle=e=>{const t=({delta:n})=>e(n);return{start:()=>Ule.update(t,!0),stop:()=>Gle.update(t)}};function tB(e){var t,n,{from:r,autoplay:i=!0,driver:o=Zle,elapsed:a=0,repeat:s=0,repeatType:l="loop",repeatDelay:u=0,onPlay:h,onStop:g,onComplete:m,onRepeat:v,onUpdate:S}=e,w=HN(e,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let{to:k}=w,P,E=0,T=w.duration,M,R=!1,O=!0,D;const B=$le(w);!((n=(t=B).needsInterpolation)===null||n===void 0)&&n.call(t,r,k)&&(D=jN([0,100],[r,k],{clamp:!1}),r=0,k=100);const $=B(Object.assign(Object.assign({},w),{from:r,to:k}));function W(){E++,l==="reverse"?(O=E%2===0,a=Kle(a,T,u,O)):(a=eB(a,T,u),l==="mirror"&&$.flipTarget()),R=!1,v&&v()}function j(){P.stop(),m&&m()}function te(J){if(O||(J=-J),a+=J,!R){const re=$.next(Math.max(0,a));M=re.value,D&&(M=D(M)),R=O?re.done:a<=0}S?.(M),R&&(E===0&&(T??(T=a)),E{g?.(),P.stop()}}}function nB(e,t){return t?e*(1e3/t):0}function Qle({from:e=0,velocity:t=0,min:n,max:r,power:i=.8,timeConstant:o=750,bounceStiffness:a=500,bounceDamping:s=10,restDelta:l=1,modifyTarget:u,driver:h,onUpdate:g,onComplete:m,onStop:v}){let S;function w(T){return n!==void 0&&Tr}function k(T){return n===void 0?r:r===void 0||Math.abs(n-T){var R;g?.(M),(R=T.onUpdate)===null||R===void 0||R.call(T,M)},onComplete:m,onStop:v}))}function E(T){P(Object.assign({type:"spring",stiffness:a,damping:s,restDelta:l},T))}if(w(e))E({from:e,velocity:t,to:k(e)});else{let T=i*t+e;typeof u<"u"&&(T=u(T));const M=k(T),R=M===n?-1:1;let O,D;const B=$=>{O=D,D=$,t=nB($-O,qle().delta),(R===1&&$>M||R===-1&&$S?.stop()}}const bC=e=>e.hasOwnProperty("x")&&e.hasOwnProperty("y"),QT=e=>bC(e)&&e.hasOwnProperty("z"),Hy=(e,t)=>Math.abs(e-t);function k8(e,t){if(vC(e)&&vC(t))return Hy(e,t);if(bC(e)&&bC(t)){const n=Hy(e.x,t.x),r=Hy(e.y,t.y),i=QT(e)&&QT(t)?Hy(e.z,t.z):0;return Math.sqrt(Math.pow(n,2)+Math.pow(r,2)+Math.pow(i,2))}}const rB=(e,t)=>1-3*t+3*e,iB=(e,t)=>3*t-6*e,oB=e=>3*e,Q4=(e,t,n)=>((rB(t,n)*e+iB(t,n))*e+oB(t))*e,aB=(e,t,n)=>3*rB(t,n)*e*e+2*iB(t,n)*e+oB(t),Jle=1e-7,eue=10;function tue(e,t,n,r,i){let o,a,s=0;do a=t+(n-t)/2,o=Q4(a,r,i)-e,o>0?n=a:t=a;while(Math.abs(o)>Jle&&++s=rue?iue(a,g,e,n):m===0?g:tue(a,s,s+Wy,e,n)}return a=>a===0||a===1?a:Q4(o(a),t,r)}function aue({onTap:e,onTapStart:t,onTapCancel:n,whileTap:r,visualElement:i}){const o=e||t||n||r,a=C.exports.useRef(!1),s=C.exports.useRef(null),l={passive:!(t||e||n||v)};function u(){s.current&&s.current(),s.current=null}function h(){return u(),a.current=!1,i.animationState&&i.animationState.setActive(Yn.Tap,!1),!FN()}function g(S,w){!h()||($N(i.current,S.target)?e&&e(S,w):n&&n(S,w))}function m(S,w){!h()||n&&n(S,w)}function v(S,w){u(),!a.current&&(a.current=!0,s.current=yS(T0(window,"pointerup",g,l),T0(window,"pointercancel",m,l)),i.animationState&&i.animationState.setActive(Yn.Tap,!0),t&&t(S,w))}q4(i,"pointerdown",o?v:void 0,l),y8(u)}const sue="production",sB=typeof process>"u"||process.env===void 0?sue:"production",JT=new Set;function lB(e,t,n){e||JT.has(t)||(console.warn(t),n&&console.warn(n),JT.add(t))}const xC=new WeakMap,qx=new WeakMap,lue=e=>{const t=xC.get(e.target);t&&t(e)},uue=e=>{e.forEach(lue)};function cue({root:e,...t}){const n=e||document;qx.has(n)||qx.set(n,{});const r=qx.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(uue,{root:e,...t})),r[i]}function due(e,t,n){const r=cue(t);return xC.set(e,n),r.observe(e),()=>{xC.delete(e),r.unobserve(e)}}function fue({visualElement:e,whileInView:t,onViewportEnter:n,onViewportLeave:r,viewport:i={}}){const o=C.exports.useRef({hasEnteredView:!1,isInView:!1});let a=Boolean(t||n||r);i.once&&o.current.hasEnteredView&&(a=!1),(typeof IntersectionObserver>"u"?gue:pue)(a,o.current,e,i)}const hue={some:0,all:1};function pue(e,t,n,{root:r,margin:i,amount:o="some",once:a}){C.exports.useEffect(()=>{if(!e||!n.current)return;const s={root:r?.current,rootMargin:i,threshold:typeof o=="number"?o:hue[o]},l=u=>{const{isIntersecting:h}=u;if(t.isInView===h||(t.isInView=h,a&&!h&&t.hasEnteredView))return;h&&(t.hasEnteredView=!0),n.animationState&&n.animationState.setActive(Yn.InView,h);const g=n.getProps(),m=h?g.onViewportEnter:g.onViewportLeave;m&&m(u)};return due(n.current,s,l)},[e,r,i,o])}function gue(e,t,n,{fallback:r=!0}){C.exports.useEffect(()=>{!e||!r||(sB!=="production"&&lB(!1,"IntersectionObserver not available on this device. whileInView animations will trigger on mount."),requestAnimationFrame(()=>{t.hasEnteredView=!0;const{onViewportEnter:i}=n.getProps();i&&i(null),n.animationState&&n.animationState.setActive(Yn.InView,!0)}))},[e])}const Yc=e=>t=>(e(t),null),mue={inView:Yc(fue),tap:Yc(aue),focus:Yc(Gse),hover:Yc(tle)};function E8(){const e=C.exports.useContext(p1);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=C.exports.useId();return C.exports.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function vue(){return yue(C.exports.useContext(p1))}function yue(e){return e===null?!0:e.isPresent}function uB(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;re*1e3,Sue={linear:x8,easeIn:w8,easeInOut:KN,easeOut:Ele,circIn:XN,circInOut:Ple,circOut:C8,backIn:_8,backInOut:Lle,backOut:Tle,anticipate:Ale,bounceIn:Ole,bounceInOut:Dle,bounceOut:Z4},eL=e=>{if(Array.isArray(e)){K4(e.length===4);const[t,n,r,i]=e;return oue(t,n,r,i)}else if(typeof e=="string")return Sue[e];return e},bue=e=>Array.isArray(e)&&typeof e[0]!="number",tL=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&Eu.test(t)&&!t.startsWith("url(")),xf=()=>({type:"spring",stiffness:500,damping:25,restSpeed:10}),Vy=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),Kx=()=>({type:"keyframes",ease:"linear",duration:.3}),xue=e=>({type:"keyframes",duration:.8,values:e}),nL={x:xf,y:xf,z:xf,rotate:xf,rotateX:xf,rotateY:xf,rotateZ:xf,scaleX:Vy,scaleY:Vy,scale:Vy,opacity:Kx,backgroundColor:Kx,color:Kx,default:Vy},wue=(e,t)=>{let n;return Mv(t)?n=xue:n=nL[e]||nL.default,{to:t,...n(t)}},Cue={...wN,color:Ji,backgroundColor:Ji,outlineColor:Ji,fill:Ji,stroke:Ji,borderColor:Ji,borderTopColor:Ji,borderRightColor:Ji,borderBottomColor:Ji,borderLeftColor:Ji,filter:pC,WebkitFilter:pC},P8=e=>Cue[e];function T8(e,t){var n;let r=P8(e);return r!==pC&&(r=Eu),(n=r.getAnimatableNone)===null||n===void 0?void 0:n.call(r,t)}const _ue={current:!1},cB=1/60*1e3,kue=typeof performance<"u"?()=>performance.now():()=>Date.now(),dB=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(kue()),cB);function Eue(e){let t=[],n=[],r=0,i=!1,o=!1;const a=new WeakSet,s={schedule:(l,u=!1,h=!1)=>{const g=h&&i,m=g?t:n;return u&&a.add(l),m.indexOf(l)===-1&&(m.push(l),g&&i&&(r=t.length)),l},cancel:l=>{const u=n.indexOf(l);u!==-1&&n.splice(u,1),a.delete(l)},process:l=>{if(i){o=!0;return}if(i=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let u=0;u(e[t]=Eue(()=>Ov=!0),e),{}),Ps=a2.reduce((e,t)=>{const n=xS[t];return e[t]=(r,i=!1,o=!1)=>(Ov||Lue(),n.schedule(r,i,o)),e},{}),dh=a2.reduce((e,t)=>(e[t]=xS[t].cancel,e),{}),Xx=a2.reduce((e,t)=>(e[t]=()=>xS[t].process(A0),e),{}),Tue=e=>xS[e].process(A0),fB=e=>{Ov=!1,A0.delta=wC?cB:Math.max(Math.min(e-A0.timestamp,Pue),1),A0.timestamp=e,CC=!0,a2.forEach(Tue),CC=!1,Ov&&(wC=!1,dB(fB))},Lue=()=>{Ov=!0,wC=!0,CC||dB(fB)},_C=()=>A0;function hB(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(dh.read(r),e(o-t))};return Ps.read(r,!0),()=>dh.read(r)}function Aue({when:e,delay:t,delayChildren:n,staggerChildren:r,staggerDirection:i,repeat:o,repeatType:a,repeatDelay:s,from:l,...u}){return!!Object.keys(u).length}function Mue({ease:e,times:t,yoyo:n,flip:r,loop:i,...o}){const a={...o};return t&&(a.offset=t),o.duration&&(a.duration=J4(o.duration)),o.repeatDelay&&(a.repeatDelay=J4(o.repeatDelay)),e&&(a.ease=bue(e)?e.map(eL):eL(e)),o.type==="tween"&&(a.type="keyframes"),(n||i||r)&&(n?a.repeatType="reverse":i?a.repeatType="loop":r&&(a.repeatType="mirror"),a.repeat=i||n||r||o.repeat),o.type!=="spring"&&(a.type="keyframes"),a}function Iue(e,t){var n,r;return(r=(n=(L8(e,t)||{}).delay)!==null&&n!==void 0?n:e.delay)!==null&&r!==void 0?r:0}function Rue(e){return Array.isArray(e.to)&&e.to[0]===null&&(e.to=[...e.to],e.to[0]=e.from),e}function Oue(e,t,n){return Array.isArray(t.to)&&e.duration===void 0&&(e.duration=.8),Rue(t),Aue(e)||(e={...e,...wue(n,t.to)}),{...t,...Mue(e)}}function Due(e,t,n,r,i){const o=L8(r,e)||{};let a=o.from!==void 0?o.from:t.get();const s=tL(e,n);a==="none"&&s&&typeof n=="string"?a=T8(e,n):rL(a)&&typeof n=="string"?a=iL(n):!Array.isArray(n)&&rL(n)&&typeof a=="string"&&(n=iL(a));const l=tL(e,a);function u(){const g={from:a,to:n,velocity:t.getVelocity(),onComplete:i,onUpdate:m=>t.set(m)};return o.type==="inertia"||o.type==="decay"?Qle({...g,...o}):tB({...Oue(o,g,e),onUpdate:m=>{g.onUpdate(m),o.onUpdate&&o.onUpdate(m)},onComplete:()=>{g.onComplete(),o.onComplete&&o.onComplete()}})}function h(){const g=MN(n);return t.set(g),i(),o.onUpdate&&o.onUpdate(g),o.onComplete&&o.onComplete(),{stop:()=>{}}}return!l||!s||o.type===!1?h:u}function rL(e){return e===0||typeof e=="string"&&parseFloat(e)===0&&e.indexOf(" ")===-1}function iL(e){return typeof e=="number"?0:T8("",e)}function L8(e,t){return e[t]||e.default||e}function A8(e,t,n,r={}){return _ue.current&&(r={type:!1}),t.start(i=>{let o;const a=Due(e,t,n,r,i),s=Iue(r,e),l=()=>o=a();let u;return s?u=hB(l,J4(s)):l(),()=>{u&&u(),o&&o.stop()}})}const Nue=e=>/^\-?\d*\.?\d+$/.test(e),Bue=e=>/^0[^.\s]+$/.test(e);function M8(e,t){e.indexOf(t)===-1&&e.push(t)}function I8(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class Gm{constructor(){this.subscriptions=[]}add(t){return M8(this.subscriptions,t),()=>I8(this.subscriptions,t)}notify(t,n,r){const i=this.subscriptions.length;if(!!i)if(i===1)this.subscriptions[0](t,n,r);else for(let o=0;o!isNaN(parseFloat(e));class Fue{constructor(t){this.version="7.6.9",this.timeDelta=0,this.lastUpdated=0,this.updateSubscribers=new Gm,this.velocityUpdateSubscribers=new Gm,this.renderSubscribers=new Gm,this.canTrackVelocity=!1,this.updateAndNotify=(n,r=!0)=>{this.prev=this.current,this.current=n;const{delta:i,timestamp:o}=_C();this.lastUpdated!==o&&(this.timeDelta=i,this.lastUpdated=o,Ps.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.updateSubscribers.notify(this.current),this.velocityUpdateSubscribers.getSize()&&this.velocityUpdateSubscribers.notify(this.getVelocity()),r&&this.renderSubscribers.notify(this.current)},this.scheduleVelocityCheck=()=>Ps.postRender(this.velocityCheck),this.velocityCheck=({timestamp:n})=>{n!==this.lastUpdated&&(this.prev=this.current,this.velocityUpdateSubscribers.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=t,this.canTrackVelocity=zue(this.current)}onChange(t){return this.updateSubscribers.add(t)}clearListeners(){this.updateSubscribers.clear()}onRenderRequest(t){return t(this.get()),this.renderSubscribers.add(t)}attach(t){this.passiveEffect=t}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?nB(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.stopAnimation=t(n)}).then(()=>this.clearAnimation())}stop(){this.stopAnimation&&this.stopAnimation(),this.clearAnimation()}isAnimating(){return!!this.stopAnimation}clearAnimation(){this.stopAnimation=null}destroy(){this.updateSubscribers.clear(),this.renderSubscribers.clear(),this.stop()}}function X0(e){return new Fue(e)}const pB=e=>t=>t.test(e),$ue={test:e=>e==="auto",parse:e=>e},gB=[Sh,Ct,Pl,Ic,pse,hse,$ue],Yg=e=>gB.find(pB(e)),Hue=[...gB,Ji,Eu],Wue=e=>Hue.find(pB(e));function Vue(e){const t={};return e.values.forEach((n,r)=>t[r]=n.get()),t}function Uue(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function wS(e,t,n){const r=e.getProps();return m8(r,t,n!==void 0?n:r.custom,Vue(e),Uue(e))}function Gue(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,X0(n))}function jue(e,t){const n=wS(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const a in o){const s=MN(o[a]);Gue(e,a,s)}}function Yue(e,t,n){var r,i;const o=Object.keys(t).filter(s=>!e.hasValue(s)),a=o.length;if(!!a)for(let s=0;skC(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=kC(e,t,n);else{const i=typeof t=="function"?wS(e,t,n.custom):t;r=mB(e,i,n)}return r.then(()=>e.notify("AnimationComplete",t))}function kC(e,t,n={}){var r;const i=wS(e,t,n.custom);let{transition:o=e.getDefaultTransition()||{}}=i||{};n.transitionOverride&&(o=n.transitionOverride);const a=i?()=>mB(e,i,n):()=>Promise.resolve(),s=!((r=e.variantChildren)===null||r===void 0)&&r.size?(u=0)=>{const{delayChildren:h=0,staggerChildren:g,staggerDirection:m}=o;return Zue(e,t,h+u,g,m,n)}:()=>Promise.resolve(),{when:l}=o;if(l){const[u,h]=l==="beforeChildren"?[a,s]:[s,a];return u().then(h)}else return Promise.all([a(),s(n.delay)])}function mB(e,t,{delay:n=0,transitionOverride:r,type:i}={}){var o;let{transition:a=e.getDefaultTransition(),transitionEnd:s,...l}=e.makeTargetAnimatable(t);const u=e.getValue("willChange");r&&(a=r);const h=[],g=i&&((o=e.animationState)===null||o===void 0?void 0:o.getState()[i]);for(const m in l){const v=e.getValue(m),S=l[m];if(!v||S===void 0||g&&Jue(g,m))continue;let w={delay:n,...a};e.shouldReduceMotion&&g1.has(m)&&(w={...w,type:!1,delay:0});let k=A8(m,v,S,w);e5(u)&&(u.add(m),k=k.then(()=>u.remove(m))),h.push(k)}return Promise.all(h).then(()=>{s&&jue(e,s)})}function Zue(e,t,n=0,r=0,i=1,o){const a=[],s=(e.variantChildren.size-1)*r,l=i===1?(u=0)=>u*r:(u=0)=>s-u*r;return Array.from(e.variantChildren).sort(Que).forEach((u,h)=>{a.push(kC(u,t,{...o,delay:n+l(h)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(a)}function Que(e,t){return e.sortNodePosition(t)}function Jue({protectedKeys:e,needsAnimating:t},n){const r=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,r}const R8=[Yn.Animate,Yn.InView,Yn.Focus,Yn.Hover,Yn.Tap,Yn.Drag,Yn.Exit],ece=[...R8].reverse(),tce=R8.length;function nce(e){return t=>Promise.all(t.map(({animation:n,options:r})=>Xue(e,n,r)))}function rce(e){let t=nce(e);const n=oce();let r=!0;const i=(l,u)=>{const h=wS(e,u);if(h){const{transition:g,transitionEnd:m,...v}=h;l={...l,...v,...m}}return l};function o(l){t=l(e)}function a(l,u){var h;const g=e.getProps(),m=e.getVariantContext(!0)||{},v=[],S=new Set;let w={},k=1/0;for(let E=0;Ek&&O;const j=Array.isArray(R)?R:[R];let te=j.reduce(i,{});D===!1&&(te={});const{prevResolvedValues:V={}}=M,J={...V,...te},re=ee=>{W=!0,S.delete(ee),M.needsAnimating[ee]=!0};for(const ee in J){const K=te[ee],G=V[ee];w.hasOwnProperty(ee)||(K!==G?Mv(K)&&Mv(G)?!uB(K,G)||$?re(ee):M.protectedKeys[ee]=!0:K!==void 0?re(ee):S.add(ee):K!==void 0&&S.has(ee)?re(ee):M.protectedKeys[ee]=!0)}M.prevProp=R,M.prevResolvedValues=te,M.isActive&&(w={...w,...te}),r&&e.blockInitialAnimation&&(W=!1),W&&!B&&v.push(...j.map(ee=>({animation:ee,options:{type:T,...l}})))}if(S.size){const E={};S.forEach(T=>{const M=e.getBaseTarget(T);M!==void 0&&(E[T]=M)}),v.push({animation:E})}let P=Boolean(v.length);return r&&g.initial===!1&&!e.manuallyAnimateOnMount&&(P=!1),r=!1,P?t(v):Promise.resolve()}function s(l,u,h){var g;if(n[l].isActive===u)return Promise.resolve();(g=e.variantChildren)===null||g===void 0||g.forEach(v=>{var S;return(S=v.animationState)===null||S===void 0?void 0:S.setActive(l,u)}),n[l].isActive=u;const m=a(h,l);for(const v in n)n[v].protectedKeys={};return m}return{animateChanges:a,setActive:s,setAnimateFunction:o,getState:()=>n}}function ice(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!uB(t,e):!1}function wf(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function oce(){return{[Yn.Animate]:wf(!0),[Yn.InView]:wf(),[Yn.Hover]:wf(),[Yn.Tap]:wf(),[Yn.Drag]:wf(),[Yn.Focus]:wf(),[Yn.Exit]:wf()}}const ace={animation:Yc(({visualElement:e,animate:t})=>{e.animationState||(e.animationState=rce(e)),pS(t)&&C.exports.useEffect(()=>t.subscribe(e),[t])}),exit:Yc(e=>{const{custom:t,visualElement:n}=e,[r,i]=E8(),o=C.exports.useContext(p1);C.exports.useEffect(()=>{n.isPresent=r;const a=n.animationState&&n.animationState.setActive(Yn.Exit,!r,{custom:o&&o.custom||t});a&&!r&&a.then(i)},[r])})};class vB{constructor(t,n,{transformPagePoint:r}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const u=Qx(this.lastMoveEventInfo,this.history),h=this.startEvent!==null,g=k8(u.offset,{x:0,y:0})>=3;if(!h&&!g)return;const{point:m}=u,{timestamp:v}=_C();this.history.push({...m,timestamp:v});const{onStart:S,onMove:w}=this.handlers;h||(S&&S(this.lastMoveEvent,u),this.startEvent=this.lastMoveEvent),w&&w(this.lastMoveEvent,u)},this.handlePointerMove=(u,h)=>{if(this.lastMoveEvent=u,this.lastMoveEventInfo=Zx(h,this.transformPagePoint),RN(u)&&u.buttons===0){this.handlePointerUp(u,h);return}Ps.update(this.updatePoint,!0)},this.handlePointerUp=(u,h)=>{this.end();const{onEnd:g,onSessionEnd:m}=this.handlers,v=Qx(Zx(h,this.transformPagePoint),this.history);this.startEvent&&g&&g(u,v),m&&m(u,v)},ON(t)&&t.touches.length>1)return;this.handlers=n,this.transformPagePoint=r;const i=v8(t),o=Zx(i,this.transformPagePoint),{point:a}=o,{timestamp:s}=_C();this.history=[{...a,timestamp:s}];const{onSessionStart:l}=n;l&&l(t,Qx(o,this.history)),this.removeListeners=yS(T0(window,"pointermove",this.handlePointerMove),T0(window,"pointerup",this.handlePointerUp),T0(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),dh.update(this.updatePoint)}}function Zx(e,t){return t?{point:t(e.point)}:e}function oL(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Qx({point:e},t){return{point:e,delta:oL(e,yB(t)),offset:oL(e,sce(t)),velocity:lce(t,.1)}}function sce(e){return e[0]}function yB(e){return e[e.length-1]}function lce(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=yB(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>J4(t)));)n--;if(!r)return{x:0,y:0};const o=(i.timestamp-r.timestamp)/1e3;if(o===0)return{x:0,y:0};const a={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function pa(e){return e.max-e.min}function aL(e,t=0,n=.01){return k8(e,t)n&&(e=r?Cr(n,e,r.max):Math.min(e,n)),e}function cL(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function dce(e,{top:t,left:n,bottom:r,right:i}){return{x:cL(e.x,n,i),y:cL(e.y,t,r)}}function dL(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Iv(t.min,t.max-r,e.min):r>i&&(n=Iv(e.min,e.max-i,t.min)),X4(0,1,n)}function pce(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const EC=.35;function gce(e=EC){return e===!1?e=0:e===!0&&(e=EC),{x:fL(e,"left","right"),y:fL(e,"top","bottom")}}function fL(e,t,n){return{min:hL(e,t),max:hL(e,n)}}function hL(e,t){var n;return typeof e=="number"?e:(n=e[t])!==null&&n!==void 0?n:0}const pL=()=>({translate:0,scale:1,origin:0,originPoint:0}),qm=()=>({x:pL(),y:pL()}),gL=()=>({min:0,max:0}),Zr=()=>({x:gL(),y:gL()});function dl(e){return[e("x"),e("y")]}function SB({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function mce({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function vce(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),r=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:r.y,right:r.x}}function Jx(e){return e===void 0||e===1}function PC({scale:e,scaleX:t,scaleY:n}){return!Jx(e)||!Jx(t)||!Jx(n)}function Lf(e){return PC(e)||bB(e)||e.z||e.rotate||e.rotateX||e.rotateY}function bB(e){return mL(e.x)||mL(e.y)}function mL(e){return e&&e!=="0%"}function t5(e,t,n){const r=e-n,i=t*r;return n+i}function vL(e,t,n,r,i){return i!==void 0&&(e=t5(e,i,r)),t5(e,n,r)+t}function TC(e,t=0,n=1,r,i){e.min=vL(e.min,t,n,r,i),e.max=vL(e.max,t,n,r,i)}function xB(e,{x:t,y:n}){TC(e.x,t.translate,t.scale,t.originPoint),TC(e.y,n.translate,n.scale,n.originPoint)}function yce(e,t,n,r=!1){var i,o;const a=n.length;if(!a)return;t.x=t.y=1;let s,l;for(let u=0;u{this.stopAnimation(),n&&this.snapToCursor(v8(s,"page").point)},i=(s,l)=>{var u;const{drag:h,dragPropagation:g,onDragStart:m}=this.getProps();h&&!g&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=zN(h),!this.openGlobalLock)||(this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),dl(v=>{var S,w;let k=this.getAxisMotionValue(v).get()||0;if(Pl.test(k)){const P=(w=(S=this.visualElement.projection)===null||S===void 0?void 0:S.layout)===null||w===void 0?void 0:w.layoutBox[v];P&&(k=pa(P)*(parseFloat(k)/100))}this.originPoint[v]=k}),m?.(s,l),(u=this.visualElement.animationState)===null||u===void 0||u.setActive(Yn.Drag,!0))},o=(s,l)=>{const{dragPropagation:u,dragDirectionLock:h,onDirectionLock:g,onDrag:m}=this.getProps();if(!u&&!this.openGlobalLock)return;const{offset:v}=l;if(h&&this.currentDirection===null){this.currentDirection=_ce(v),this.currentDirection!==null&&g?.(this.currentDirection);return}this.updateAxis("x",l.point,v),this.updateAxis("y",l.point,v),this.visualElement.render(),m?.(s,l)},a=(s,l)=>this.stop(s,l);this.panSession=new vB(t,{onSessionStart:r,onStart:i,onMove:o,onSessionEnd:a},{transformPagePoint:this.visualElement.getTransformPagePoint()})}stop(t,n){const r=this.isDragging;if(this.cancel(),!r)return;const{velocity:i}=n;this.startAnimation(i);const{onDragEnd:o}=this.getProps();o?.(t,n)}cancel(){var t,n;this.isDragging=!1,this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!1),(t=this.panSession)===null||t===void 0||t.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),(n=this.visualElement.animationState)===null||n===void 0||n.setActive(Yn.Drag,!1)}updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!Uy(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let a=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(a=cce(a,this.constraints[t],this.elastic[t])),o.set(a)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),{layout:r}=this.visualElement.projection||{},i=this.constraints;t&&o0(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=dce(r.layoutBox,t):this.constraints=!1,this.elastic=gce(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&dl(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=pce(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!o0(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=xce(r,i.root,this.visualElement.getTransformPagePoint());let a=fce(i.layout.layoutBox,o);if(n){const s=n(mce(a));this.hasMutatedConstraints=!!s,s&&(a=SB(s))}return a}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:a,onDragTransitionEnd:s}=this.getProps(),l=this.constraints||{},u=dl(h=>{var g;if(!Uy(h,n,this.currentDirection))return;let m=(g=l?.[h])!==null&&g!==void 0?g:{};a&&(m={min:0,max:0});const v=i?200:1e6,S=i?40:1e7,w={type:"inertia",velocity:r?t[h]:0,bounceStiffness:v,bounceDamping:S,timeConstant:750,restDelta:1,restSpeed:10,...o,...m};return this.startAxisValueAnimation(h,w)});return Promise.all(u).then(s)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return A8(t,r,0,n)}stopAnimation(){dl(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){var n,r;const i="_drag"+t.toUpperCase(),o=this.visualElement.getProps()[i];return o||this.visualElement.getValue(t,(r=(n=this.visualElement.getProps().initial)===null||n===void 0?void 0:n[t])!==null&&r!==void 0?r:0)}snapToCursor(t){dl(n=>{const{drag:r}=this.getProps();if(!Uy(n,r,this.currentDirection))return;const{projection:i}=this.visualElement,o=this.getAxisMotionValue(n);if(i&&i.layout){const{min:a,max:s}=i.layout.layoutBox[n];o.set(t[n]-Cr(a,s,.5))}})}scalePositionWithinConstraints(){var t;if(!this.visualElement.current)return;const{drag:n,dragConstraints:r}=this.getProps(),{projection:i}=this.visualElement;if(!o0(r)||!i||!this.constraints)return;this.stopAnimation();const o={x:0,y:0};dl(s=>{const l=this.getAxisMotionValue(s);if(l){const u=l.get();o[s]=hce({min:u,max:u},this.constraints[s])}});const{transformTemplate:a}=this.visualElement.getProps();this.visualElement.current.style.transform=a?a({},""):"none",(t=i.root)===null||t===void 0||t.updateScroll(),i.updateLayout(),this.resolveConstraints(),dl(s=>{if(!Uy(s,n,null))return;const l=this.getAxisMotionValue(s),{min:u,max:h}=this.constraints[s];l.set(Cr(u,h,o[s]))})}addListeners(){var t;if(!this.visualElement.current)return;wce.set(this.visualElement,this);const n=this.visualElement.current,r=T0(n,"pointerdown",u=>{const{drag:h,dragListener:g=!0}=this.getProps();h&&g&&this.start(u)}),i=()=>{const{dragConstraints:u}=this.getProps();o0(u)&&(this.constraints=this.resolveRefConstraints())},{projection:o}=this.visualElement,a=o.addEventListener("measure",i);o&&!o.layout&&((t=o.root)===null||t===void 0||t.updateScroll(),o.updateLayout()),i();const s=vS(window,"resize",()=>this.scalePositionWithinConstraints()),l=o.addEventListener("didUpdate",({delta:u,hasLayoutChanged:h})=>{this.isDragging&&h&&(dl(g=>{const m=this.getAxisMotionValue(g);!m||(this.originPoint[g]+=u[g].translate,m.set(m.get()+u[g].translate))}),this.visualElement.render())});return()=>{s(),r(),a(),l?.()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:i=!1,dragConstraints:o=!1,dragElastic:a=EC,dragMomentum:s=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:a,dragMomentum:s}}}function Uy(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function _ce(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}function kce(e){const{dragControls:t,visualElement:n}=e,r=mS(()=>new Cce(n));C.exports.useEffect(()=>t&&t.subscribe(r),[r,t]),C.exports.useEffect(()=>r.addListeners(),[r])}function Ece({onPan:e,onPanStart:t,onPanEnd:n,onPanSessionStart:r,visualElement:i}){const o=e||t||n||r,a=C.exports.useRef(null),{transformPagePoint:s}=C.exports.useContext(l8),l={onSessionStart:r,onStart:t,onMove:e,onEnd:(h,g)=>{a.current=null,n&&n(h,g)}};C.exports.useEffect(()=>{a.current!==null&&a.current.updateHandlers(l)});function u(h){a.current=new vB(h,l,{transformPagePoint:s})}q4(i,"pointerdown",o&&u),y8(()=>a.current&&a.current.end())}const Pce={pan:Yc(Ece),drag:Yc(kce)};function LC(e){return typeof e=="string"&&e.startsWith("var(--")}const CB=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function Tce(e){const t=CB.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function AC(e,t,n=1){const[r,i]=Tce(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);return o?o.trim():LC(i)?AC(i,t,n+1):i}function Lce(e,{...t},n){const r=e.current;if(!(r instanceof Element))return{target:t,transitionEnd:n};n&&(n={...n}),e.values.forEach(i=>{const o=i.get();if(!LC(o))return;const a=AC(o,r);a&&i.set(a)});for(const i in t){const o=t[i];if(!LC(o))continue;const a=AC(o,r);!a||(t[i]=a,n&&n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const Ace=new Set(["width","height","top","left","right","bottom","x","y"]),_B=e=>Ace.has(e),Mce=e=>Object.keys(e).some(_B),kB=(e,t)=>{e.set(t,!1),e.set(t)},SL=e=>e===Sh||e===Ct;var bL;(function(e){e.width="width",e.height="height",e.left="left",e.right="right",e.top="top",e.bottom="bottom"})(bL||(bL={}));const xL=(e,t)=>parseFloat(e.split(", ")[t]),wL=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return xL(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?xL(o[1],e):0}},Ice=new Set(["x","y","z"]),Rce=j4.filter(e=>!Ice.has(e));function Oce(e){const t=[];return Rce.forEach(n=>{const r=e.getValue(n);r!==void 0&&(t.push([n,r.get()]),r.set(n.startsWith("scale")?1:0))}),t.length&&e.render(),t}const CL={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:wL(4,13),y:wL(5,14)},Dce=(e,t,n)=>{const r=t.measureViewportBox(),i=t.current,o=getComputedStyle(i),{display:a}=o,s={};a==="none"&&t.setStaticValue("display",e.display||"block"),n.forEach(u=>{s[u]=CL[u](r,o)}),t.render();const l=t.measureViewportBox();return n.forEach(u=>{const h=t.getValue(u);kB(h,s[u]),e[u]=CL[u](l,o)}),e},Nce=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(_B);let o=[],a=!1;const s=[];if(i.forEach(l=>{const u=e.getValue(l);if(!e.hasValue(l))return;let h=n[l],g=Yg(h);const m=t[l];let v;if(Mv(m)){const S=m.length,w=m[0]===null?1:0;h=m[w],g=Yg(h);for(let k=w;k=0?window.pageYOffset:null,u=Dce(t,e,s);return o.length&&o.forEach(([h,g])=>{e.getValue(h).set(g)}),e.render(),yh&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function Bce(e,t,n,r){return Mce(t)?Nce(e,t,n,r):{target:t,transitionEnd:r}}const zce=(e,t,n,r)=>{const i=Lce(e,t,r);return t=i.target,r=i.transitionEnd,Bce(e,t,n,r)},MC={current:null},EB={current:!1};function Fce(){if(EB.current=!0,!!yh)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>MC.current=e.matches;e.addListener(t),t()}else MC.current=!1}function $ce(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],a=n[i];if(Il(o))e.addValue(i,o),e5(r)&&r.add(i);else if(Il(a))e.addValue(i,X0(o)),e5(r)&&r.remove(i);else if(a!==o)if(e.hasValue(i)){const s=e.getValue(i);!s.hasAnimated&&s.set(o)}else{const s=e.getStaticValue(i);e.addValue(i,X0(s!==void 0?s:o))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const PB=Object.keys(Lv),Hce=PB.length,_L=["AnimationStart","AnimationComplete","Update","Unmount","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class Wce{constructor({parent:t,props:n,reducedMotionConfig:r,visualState:i},o={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.isPresent=!0,this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{!this.current||(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.scheduleRender=()=>Ps.render(this.render,!1,!0);const{latestValues:a,renderState:s}=i;this.latestValues=a,this.baseTarget={...a},this.initialValues=n.initial?{...a}:{},this.renderState=s,this.parent=t,this.props=n,this.depth=t?t.depth+1:0,this.reducedMotionConfig=r,this.options=o,this.isControllingVariants=gS(n),this.isVariantNode=dN(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=Boolean(t&&t.current);const{willChange:l,...u}=this.scrapeMotionValuesFromProps(n);for(const h in u){const g=u[h];a[h]!==void 0&&Il(g)&&(g.set(a[h],!1),e5(l)&&l.add(h))}}scrapeMotionValuesFromProps(t){return{}}mount(t){var n;this.current=t,this.projection&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=(n=this.parent)===null||n===void 0?void 0:n.addVariantChild(this)),this.values.forEach((r,i)=>this.bindToMotionValue(i,r)),EB.current||Fce(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:MC.current,this.parent&&this.parent.children.add(this),this.setProps(this.props)}unmount(){var t,n,r;(t=this.projection)===null||t===void 0||t.unmount(),dh.update(this.notifyUpdate),dh.render(this.render),this.valueSubscriptions.forEach(i=>i()),(n=this.removeFromVariantTree)===null||n===void 0||n.call(this),(r=this.parent)===null||r===void 0||r.children.delete(this);for(const i in this.events)this.events[i].clear();this.current=null}bindToMotionValue(t,n){const r=g1.has(t),i=n.onChange(a=>{this.latestValues[t]=a,this.props.onUpdate&&Ps.update(this.notifyUpdate,!1,!0),r&&this.projection&&(this.projection.isProjectionDirty=!0)}),o=n.onRenderRequest(this.scheduleRender);this.valueSubscriptions.set(t,()=>{i(),o()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}loadFeatures(t,n,r,i,o,a){const s=[];for(let l=0;lthis.scheduleRender(),animationType:typeof u=="string"?u:"both",initialPromotionConfig:a,layoutScroll:m})}return s}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Zr()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}makeTargetAnimatable(t,n=!0){return this.makeTargetAnimatableFromInstance(t,this.props,n)}setProps(t){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.props=t;for(let n=0;n<_L.length;n++){const r=_L[n];this.propEventSubscriptions[r]&&(this.propEventSubscriptions[r](),delete this.propEventSubscriptions[r]);const i=t["on"+r];i&&(this.propEventSubscriptions[r]=this.on(r,i))}this.prevMotionValues=$ce(this,this.scrapeMotionValuesFromProps(t),this.prevMotionValues)}getProps(){return this.props}getVariant(t){var n;return(n=this.props.variants)===null||n===void 0?void 0:n[t]}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){var t;return this.isVariantNode?this:(t=this.parent)===null||t===void 0?void 0:t.getClosestVariantNode()}getVariantContext(t=!1){var n,r;if(t)return(n=this.parent)===null||n===void 0?void 0:n.getVariantContext();if(!this.isControllingVariants){const o=((r=this.parent)===null||r===void 0?void 0:r.getVariantContext())||{};return this.props.initial!==void 0&&(o.initial=this.props.initial),o}const i={};for(let o=0;or.variantChildren.delete(t)}addValue(t,n){this.hasValue(t)&&this.removeValue(t),this.values.set(t,n),this.latestValues[t]=n.get(),this.bindToMotionValue(t,n)}removeValue(t){var n;this.values.delete(t),(n=this.valueSubscriptions.get(t))===null||n===void 0||n(),this.valueSubscriptions.delete(t),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let r=this.values.get(t);return r===void 0&&n!==void 0&&(r=X0(n),this.addValue(t,r)),r}readValue(t){return this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.readValueFromInstance(this.current,t,this.options)}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){var n;const{initial:r}=this.props,i=typeof r=="string"||typeof r=="object"?(n=m8(this.props,r))===null||n===void 0?void 0:n[t]:void 0;if(r&&i!==void 0)return i;const o=this.getBaseTargetFromProps(this.props,t);return o!==void 0&&!Il(o)?o:this.initialValues[t]!==void 0&&i===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Gm),this.events[t].add(n)}notify(t,...n){var r;(r=this.events[t])===null||r===void 0||r.notify(...n)}}const TB=["initial",...R8],Vce=TB.length;class LB extends Wce{sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){var r;return(r=t.style)===null||r===void 0?void 0:r[n]}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}makeTargetAnimatableFromInstance({transition:t,transitionEnd:n,...r},{transformValues:i},o){let a=Kue(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),a&&(a=i(a))),o){Yue(this,r,a);const s=zce(this,r,a,n);n=s.transitionEnd,r=s.target}return{transition:t,transitionEnd:n,...r}}}function Uce(e){return window.getComputedStyle(e)}class Gce extends LB{readValueFromInstance(t,n){if(g1.has(n)){const r=P8(n);return r&&r.default||0}else{const r=Uce(t),i=(pN(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return wB(t,n)}build(t,n,r,i){f8(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t){return g8(t)}renderInstance(t,n,r,i){PN(t,n,r,i)}}class jce extends LB{getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){var r;return g1.has(n)?((r=P8(n))===null||r===void 0?void 0:r.default)||0:(n=TN.has(n)?n:EN(n),t.getAttribute(n))}measureInstanceViewportBox(){return Zr()}scrapeMotionValuesFromProps(t){return AN(t)}build(t,n,r,i){p8(t,n,r,i.transformTemplate)}renderInstance(t,n,r,i){LN(t,n,r,i)}}const Yce=(e,t)=>c8(e)?new jce(t,{enableHardwareAcceleration:!1}):new Gce(t,{enableHardwareAcceleration:!0});function kL(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const qg={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(Ct.test(e))e=parseFloat(e);else return e;const n=kL(e,t.target.x),r=kL(e,t.target.y);return`${n}% ${r}%`}},EL="_$css",qce={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=e.includes("var("),o=[];i&&(e=e.replace(CB,v=>(o.push(v),EL)));const a=Eu.parse(e);if(a.length>5)return r;const s=Eu.createTransformer(e),l=typeof a[0]!="number"?1:0,u=n.x.scale*t.x,h=n.y.scale*t.y;a[0+l]/=u,a[1+l]/=h;const g=Cr(u,h,.5);typeof a[2+l]=="number"&&(a[2+l]/=g),typeof a[3+l]=="number"&&(a[3+l]/=g);let m=s(a);if(i){let v=0;m=m.replace(EL,()=>{const S=o[v];return v++,S})}return m}};class Kce extends se.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;sse(Zce),o&&(n.group&&n.group.add(o),r&&r.register&&i&&r.register(o),o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,onExitComplete:()=>this.safeToRemove()})),Wm.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:i,isPresent:o}=this.props,a=r.projection;return a&&(a.isPresent=o,i||t.layoutDependency!==n||n===void 0?a.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?a.promote():a.relegate()||Ps.postRender(()=>{var s;!((s=a.getStack())===null||s===void 0)&&s.members.length||this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),!t.currentAnimation&&t.isLead()&&this.safeToRemove())}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:i}=t;i&&(i.scheduleCheckAfterUnmount(),n?.group&&n.group.remove(i),r?.deregister&&r.deregister(i))}safeToRemove(){const{safeToRemove:t}=this.props;t?.()}render(){return null}}function Xce(e){const[t,n]=E8(),r=C.exports.useContext(u8);return b(Kce,{...e,layoutGroup:r,switchLayoutGroup:C.exports.useContext(fN),isPresent:t,safeToRemove:n})}const Zce={borderRadius:{...qg,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:qg,borderTopRightRadius:qg,borderBottomLeftRadius:qg,borderBottomRightRadius:qg,boxShadow:qce},Qce={measureLayout:Xce};function Jce(e,t,n={}){const r=Il(e)?e:X0(e);return A8("",r,t,n),{stop:()=>r.stop(),isAnimating:()=>r.isAnimating()}}const AB=["TopLeft","TopRight","BottomLeft","BottomRight"],ede=AB.length,PL=e=>typeof e=="string"?parseFloat(e):e,TL=e=>typeof e=="number"||Ct.test(e);function tde(e,t,n,r,i,o){var a,s,l,u;i?(e.opacity=Cr(0,(a=n.opacity)!==null&&a!==void 0?a:1,nde(r)),e.opacityExit=Cr((s=t.opacity)!==null&&s!==void 0?s:1,0,rde(r))):o&&(e.opacity=Cr((l=t.opacity)!==null&&l!==void 0?l:1,(u=n.opacity)!==null&&u!==void 0?u:1,r));for(let h=0;hrt?1:n(Iv(e,t,r))}function AL(e,t){e.min=t.min,e.max=t.max}function ps(e,t){AL(e.x,t.x),AL(e.y,t.y)}function ML(e,t,n,r,i){return e-=t,e=t5(e,1/n,r),i!==void 0&&(e=t5(e,1/i,r)),e}function ide(e,t=0,n=1,r=.5,i,o=e,a=e){if(Pl.test(t)&&(t=parseFloat(t),t=Cr(a.min,a.max,t/100)-a.min),typeof t!="number")return;let s=Cr(o.min,o.max,r);e===o&&(s-=t),e.min=ML(e.min,t,n,s,i),e.max=ML(e.max,t,n,s,i)}function IL(e,t,[n,r,i],o,a){ide(e,t[n],t[r],t[i],t.scale,o,a)}const ode=["x","scaleX","originX"],ade=["y","scaleY","originY"];function RL(e,t,n,r){IL(e.x,t,ode,n?.x,r?.x),IL(e.y,t,ade,n?.y,r?.y)}function OL(e){return e.translate===0&&e.scale===1}function IB(e){return OL(e.x)&&OL(e.y)}function RB(e,t){return e.x.min===t.x.min&&e.x.max===t.x.max&&e.y.min===t.y.min&&e.y.max===t.y.max}function DL(e){return pa(e.x)/pa(e.y)}function sde(e,t,n=.1){return k8(e,t)<=n}class lde{constructor(){this.members=[]}add(t){M8(this.members,t),t.scheduleRender()}remove(t){if(I8(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(i=>t===i);if(n===0)return!1;let r;for(let i=n;i>=0;i--){const o=this.members[i];if(o.isPresent!==!1){r=o;break}}return r?(this.promote(r),!0):!1}promote(t,n){var r;const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),!((r=t.root)===null||r===void 0)&&r.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:o}=t.options;o===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var n,r,i,o,a;(r=(n=t.options).onExitComplete)===null||r===void 0||r.call(n),(a=(i=t.resumingFrom)===null||i===void 0?void 0:(o=i.options).onExitComplete)===null||a===void 0||a.call(o)})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function NL(e,t,n){let r="";const i=e.x.translate/t.x,o=e.y.translate/t.y;if((i||o)&&(r=`translate3d(${i}px, ${o}px, 0) `),(t.x!==1||t.y!==1)&&(r+=`scale(${1/t.x}, ${1/t.y}) `),n){const{rotate:l,rotateX:u,rotateY:h}=n;l&&(r+=`rotate(${l}deg) `),u&&(r+=`rotateX(${u}deg) `),h&&(r+=`rotateY(${h}deg) `)}const a=e.x.scale*t.x,s=e.y.scale*t.y;return(a!==1||s!==1)&&(r+=`scale(${a}, ${s})`),r||"none"}const ude=(e,t)=>e.depth-t.depth;class cde{constructor(){this.children=[],this.isDirty=!1}add(t){M8(this.children,t),this.isDirty=!0}remove(t){I8(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(ude),this.isDirty=!1,this.children.forEach(t)}}const BL=["","X","Y","Z"],zL=1e3;let dde=0;function OB({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(a,s={},l=t?.()){this.id=dde++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.potentialNodes=new Map,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.nodes.forEach(mde),this.nodes.forEach(vde)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.elementId=a,this.latestValues=s,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0,a&&this.root.registerPotentialNode(a,this);for(let u=0;uthis.root.updateBlockedByResize=!1;e(a,()=>{this.root.updateBlockedByResize=!0,m&&m(),m=hB(v,250),Wm.hasAnimatedSinceResize&&(Wm.hasAnimatedSinceResize=!1,this.nodes.forEach($L))})}u&&this.root.registerSharedNode(u,this),this.options.animate!==!1&&g&&(u||h)&&this.addEventListener("didUpdate",({delta:m,hasLayoutChanged:v,hasRelativeTargetChanged:S,layout:w})=>{var k,P,E,T,M;if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const R=(P=(k=this.options.transition)!==null&&k!==void 0?k:g.getDefaultTransition())!==null&&P!==void 0?P:wde,{onLayoutAnimationStart:O,onLayoutAnimationComplete:D}=g.getProps(),B=!this.targetLayout||!RB(this.targetLayout,w)||S,$=!v&&S;if(((E=this.resumeFrom)===null||E===void 0?void 0:E.instance)||$||v&&(B||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(m,$);const W={...L8(R,"layout"),onPlay:O,onComplete:D};g.shouldReduceMotion&&(W.delay=0,W.type=!1),this.startAnimation(W)}else!v&&this.animationProgress===0&&$L(this),this.isLead()&&((M=(T=this.options).onExitComplete)===null||M===void 0||M.call(T));this.targetLayout=w})}unmount(){var a,s;this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this),(a=this.getStack())===null||a===void 0||a.remove(this),(s=this.parent)===null||s===void 0||s.children.delete(this),this.instance=void 0,dh.preRender(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){var a;return this.isAnimationBlocked||((a=this.parent)===null||a===void 0?void 0:a.isTreeAnimationBlocked())||!1}startUpdate(){var a;this.isUpdateBlocked()||(this.isUpdating=!0,(a=this.nodes)===null||a===void 0||a.forEach(yde),this.animationId++)}willUpdate(a=!0){var s,l,u;if(this.root.isUpdateBlocked()){(l=(s=this.options).onExitComplete)===null||l===void 0||l.call(s);return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let v=0;v{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){var a;if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{var T;const M=E/1e3;HL(v.x,a.x,M),HL(v.y,a.y,M),this.setTargetDelta(v),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&((T=this.relativeParent)===null||T===void 0?void 0:T.layout)&&(Ym(S,this.layout.layoutBox,this.relativeParent.layout.layoutBox),bde(this.relativeTarget,this.relativeTargetOrigin,S,M)),w&&(this.animationValues=m,tde(m,g,this.latestValues,M,P,k)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=M},this.mixTargetDelta(0)}startAnimation(a){var s,l;this.notifyListeners("animationStart"),(s=this.currentAnimation)===null||s===void 0||s.stop(),this.resumingFrom&&((l=this.resumingFrom.currentAnimation)===null||l===void 0||l.stop()),this.pendingAnimation&&(dh.update(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Ps.update(()=>{Wm.hasAnimatedSinceResize=!0,this.currentAnimation=Jce(0,zL,{...a,onUpdate:u=>{var h;this.mixTargetDelta(u),(h=a.onUpdate)===null||h===void 0||h.call(a,u)},onComplete:()=>{var u;(u=a.onComplete)===null||u===void 0||u.call(a),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){var a;this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0),(a=this.getStack())===null||a===void 0||a.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){var a;this.currentAnimation&&((a=this.mixTargetDelta)===null||a===void 0||a.call(this,zL),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const a=this.getLead();let{targetWithTransforms:s,target:l,layout:u,latestValues:h}=a;if(!(!s||!l||!u)){if(this!==a&&this.layout&&u&&DB(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||Zr();const g=pa(this.layout.layoutBox.x);l.x.min=a.target.x.min,l.x.max=l.x.min+g;const m=pa(this.layout.layoutBox.y);l.y.min=a.target.y.min,l.y.max=l.y.min+m}ps(s,l),a0(s,h),jm(this.projectionDeltaWithTransform,this.layoutCorrected,s,h)}}registerSharedNode(a,s){var l,u,h;this.sharedNodes.has(a)||this.sharedNodes.set(a,new lde),this.sharedNodes.get(a).add(s),s.promote({transition:(l=s.options.initialPromotionConfig)===null||l===void 0?void 0:l.transition,preserveFollowOpacity:(h=(u=s.options.initialPromotionConfig)===null||u===void 0?void 0:u.shouldPreserveFollowOpacity)===null||h===void 0?void 0:h.call(u,s)})}isLead(){const a=this.getStack();return a?a.lead===this:!0}getLead(){var a;const{layoutId:s}=this.options;return s?((a=this.getStack())===null||a===void 0?void 0:a.lead)||this:this}getPrevLead(){var a;const{layoutId:s}=this.options;return s?(a=this.getStack())===null||a===void 0?void 0:a.prevLead:void 0}getStack(){const{layoutId:a}=this.options;if(a)return this.root.sharedNodes.get(a)}promote({needsReset:a,transition:s,preserveFollowOpacity:l}={}){const u=this.getStack();u&&u.promote(this,l),a&&(this.projectionDelta=void 0,this.needsReset=!0),s&&this.setOptions({transition:s})}relegate(){const a=this.getStack();return a?a.relegate(this):!1}resetRotation(){const{visualElement:a}=this.options;if(!a)return;let s=!1;const{latestValues:l}=a;if((l.rotate||l.rotateX||l.rotateY||l.rotateZ)&&(s=!0),!s)return;const u={};for(let h=0;h{var s;return(s=a.currentAnimation)===null||s===void 0?void 0:s.stop()}),this.root.nodes.forEach(FL),this.root.sharedNodes.clear()}}}function fde(e){e.updateLayout()}function hde(e){var t,n,r;const i=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&i&&e.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:a}=e.layout,{animationType:s}=e.options,l=i.source!==e.layout.source;s==="size"?dl(v=>{const S=l?i.measuredBox[v]:i.layoutBox[v],w=pa(S);S.min=o[v].min,S.max=S.min+w}):DB(s,i.layoutBox,o)&&dl(v=>{const S=l?i.measuredBox[v]:i.layoutBox[v],w=pa(o[v]);S.max=S.min+w});const u=qm();jm(u,o,i.layoutBox);const h=qm();l?jm(h,e.applyTransform(a,!0),i.measuredBox):jm(h,o,i.layoutBox);const g=!IB(u);let m=!1;if(!e.resumeFrom){const v=e.getClosestProjectingParent();if(v&&!v.resumeFrom){const{snapshot:S,layout:w}=v;if(S&&w){const k=Zr();Ym(k,i.layoutBox,S.layoutBox);const P=Zr();Ym(P,o,w.layoutBox),RB(k,P)||(m=!0)}}}e.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:h,layoutDelta:u,hasLayoutChanged:g,hasRelativeTargetChanged:m})}else e.isLead()&&((r=(n=e.options).onExitComplete)===null||r===void 0||r.call(n));e.options.transition=void 0}function pde(e){e.clearSnapshot()}function FL(e){e.clearMeasurements()}function gde(e){const{visualElement:t}=e.options;t?.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function $L(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0}function mde(e){e.resolveTargetDelta()}function vde(e){e.calcProjection()}function yde(e){e.resetRotation()}function Sde(e){e.removeLeadSnapshot()}function HL(e,t,n){e.translate=Cr(t.translate,0,n),e.scale=Cr(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function WL(e,t,n,r){e.min=Cr(t.min,n.min,r),e.max=Cr(t.max,n.max,r)}function bde(e,t,n,r){WL(e.x,t.x,n.x,r),WL(e.y,t.y,n.y,r)}function xde(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const wde={duration:.45,ease:[.4,0,.1,1]};function Cde(e,t){let n=e.root;for(let o=e.path.length-1;o>=0;o--)if(Boolean(e.path[o].instance)){n=e.path[o];break}const i=(n&&n!==e.root?n.instance:document).querySelector(`[data-projection-id="${t}"]`);i&&e.mount(i,!0)}function VL(e){e.min=Math.round(e.min),e.max=Math.round(e.max)}function _de(e){VL(e.x),VL(e.y)}function DB(e,t,n){return e==="position"||e==="preserve-aspect"&&!sde(DL(t),DL(n),.2)}const kde=OB({attachResizeListener:(e,t)=>vS(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),ew={current:void 0},Ede=OB({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!ew.current){const e=new kde(0,{});e.mount(window),e.setOptions({layoutScroll:!0}),ew.current=e}return ew.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>Boolean(window.getComputedStyle(e).position==="fixed")}),Pde={...ace,...mue,...Pce,...Qce},Fl=ose((e,t)=>Use(e,t,Pde,Yce,Ede));function NB(){const e=C.exports.useRef(!1);return U4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function Tde(){const e=NB(),[t,n]=C.exports.useState(0),r=C.exports.useCallback(()=>{e.current&&n(t+1)},[t]);return[C.exports.useCallback(()=>Ps.postRender(r),[r]),t]}class Lde extends C.exports.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const r=this.props.sizeRef.current;r.height=n.offsetHeight||0,r.width=n.offsetWidth||0,r.top=n.offsetTop,r.left=n.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function Ade({children:e,isPresent:t}){const n=C.exports.useId(),r=C.exports.useRef(null),i=C.exports.useRef({width:0,height:0,top:0,left:0});return C.exports.useInsertionEffect(()=>{const{width:o,height:a,top:s,left:l}=i.current;if(t||!r.current||!o||!a)return;r.current.dataset.motionPopId=n;const u=document.createElement("style");return document.head.appendChild(u),u.sheet&&u.sheet.insertRule(` + [data-motion-pop-id="${n}"] { + position: absolute !important; + width: ${o}px !important; + height: ${a}px !important; + top: ${s}px !important; + left: ${l}px !important; + } + `),()=>{document.head.removeChild(u)}},[t]),b(Lde,{isPresent:t,childRef:r,sizeRef:i,children:C.exports.cloneElement(e,{ref:r})})}const tw=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:a})=>{const s=mS(Mde),l=C.exports.useId(),u=C.exports.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:h=>{s.set(h,!0);for(const g of s.values())if(!g)return;r&&r()},register:h=>(s.set(h,!1),()=>s.delete(h))}),o?void 0:[n]);return C.exports.useMemo(()=>{s.forEach((h,g)=>s.set(g,!1))},[n]),C.exports.useEffect(()=>{!n&&!s.size&&r&&r()},[n]),a==="popLayout"&&(e=b(Ade,{isPresent:n,children:e})),b(p1.Provider,{value:u,children:e})};function Mde(){return new Map}const Up=e=>e.key||"";function Ide(e,t){e.forEach(n=>{const r=Up(n);t.set(r,n)})}function Rde(e){const t=[];return C.exports.Children.forEach(e,n=>{C.exports.isValidElement(n)&&t.push(n)}),t}const wd=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:a="sync"})=>{i&&(a="wait",lB(!1,"Replace exitBeforeEnter with mode='wait'"));let[s]=Tde();const l=C.exports.useContext(u8).forceRender;l&&(s=l);const u=NB(),h=Rde(e);let g=h;const m=new Set,v=C.exports.useRef(g),S=C.exports.useRef(new Map).current,w=C.exports.useRef(!0);if(U4(()=>{w.current=!1,Ide(h,S),v.current=g}),y8(()=>{w.current=!0,S.clear(),m.clear()}),w.current)return b(An,{children:g.map(T=>b(tw,{isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:a,children:T},Up(T)))});g=[...g];const k=v.current.map(Up),P=h.map(Up),E=k.length;for(let T=0;T{if(P.indexOf(T)!==-1)return;const M=S.get(T);if(!M)return;const R=k.indexOf(T),O=()=>{S.delete(T),m.delete(T);const D=v.current.findIndex(B=>B.key===T);if(v.current.splice(D,1),!m.size){if(v.current=h,u.current===!1)return;s(),r&&r()}};g.splice(R,0,b(tw,{isPresent:!1,onExitComplete:O,custom:t,presenceAffectsLayout:o,mode:a,children:M},Up(M)))}),g=g.map(T=>{const M=T.key;return m.has(M)?T:b(tw,{isPresent:!0,presenceAffectsLayout:o,mode:a,children:T},Up(T))}),sB!=="production"&&a==="wait"&&g.length>1&&console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to "wait". This will lead to odd visual behaviour.`),b(An,{children:m.size?g:g.map(T=>C.exports.cloneElement(T))})};var vl=function(){return vl=Object.assign||function(t){for(var n,r=1,i=arguments.length;r0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]0)&&!(i=r.next()).done;)o.push(i.value)}catch(s){a={error:s}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return o}function IC(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,o;re.filter(Boolean).join(" ");function Ode(){return!1}var Dde=e=>{const{condition:t,message:n}=e;t&&Ode()&&console.warn(n)},Uf={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},Kg={scale:{enter:{scale:1},exit:{scale:.95}},fade:{enter:{opacity:1},exit:{opacity:0}},pushLeft:{enter:{x:"100%"},exit:{x:"-30%"}},pushRight:{enter:{x:"-100%"},exit:{x:"30%"}},pushUp:{enter:{y:"100%"},exit:{y:"-30%"}},pushDown:{enter:{y:"-100%"},exit:{y:"30%"}},slideLeft:{position:{left:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"-100%",y:0}},slideRight:{position:{right:0,top:0,bottom:0,width:"100%"},enter:{x:0,y:0},exit:{x:"100%",y:0}},slideUp:{position:{top:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"-100%"}},slideDown:{position:{bottom:0,left:0,right:0,maxWidth:"100vw"},enter:{x:0,y:0},exit:{x:0,y:"100%"}}};function RC(e){switch(e?.direction??"right"){case"right":return Kg.slideRight;case"left":return Kg.slideLeft;case"bottom":return Kg.slideDown;case"top":return Kg.slideUp;default:return Kg.slideRight}}var eh={enter:{duration:.2,ease:Uf.easeOut},exit:{duration:.1,ease:Uf.easeIn}},Ts={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t?.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t?.exit})},Nde=e=>e!=null&&parseInt(e.toString(),10)>0,GL={exit:{height:{duration:.2,ease:Uf.ease},opacity:{duration:.3,ease:Uf.ease}},enter:{height:{duration:.3,ease:Uf.ease},opacity:{duration:.4,ease:Uf.ease}}},Bde={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:i})=>({...e&&{opacity:Nde(t)?1:0},height:t,transitionEnd:r?.exit,transition:n?.exit??Ts.exit(GL.exit,i)}),enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:i})=>({...e&&{opacity:1},height:t,transitionEnd:r?.enter,transition:n?.enter??Ts.enter(GL.enter,i)})},zB=C.exports.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:i=!0,startingHeight:o=0,endingHeight:a="auto",style:s,className:l,transition:u,transitionEnd:h,...g}=e,[m,v]=C.exports.useState(!1);C.exports.useEffect(()=>{const E=setTimeout(()=>{v(!0)});return()=>clearTimeout(E)},[]),Dde({condition:Boolean(o>0&&r),message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const S=parseFloat(o.toString())>0,w={startingHeight:o,endingHeight:a,animateOpacity:i,transition:m?u:{enter:{duration:0}},transitionEnd:{enter:h?.enter,exit:r?h?.exit:{...h?.exit,display:S?"block":"none"}}},k=r?n:!0,P=n||r?"enter":"exit";return b(wd,{initial:!1,custom:w,children:k&&se.createElement(Fl.div,{ref:t,...g,className:s2("chakra-collapse",l),style:{overflow:"hidden",display:"block",...s},custom:w,variants:Bde,initial:r?"exit":!1,animate:P,exit:"exit"})})});zB.displayName="Collapse";var zde={enter:({transition:e,transitionEnd:t,delay:n}={})=>({opacity:1,transition:e?.enter??Ts.enter(eh.enter,n),transitionEnd:t?.enter}),exit:({transition:e,transitionEnd:t,delay:n}={})=>({opacity:0,transition:e?.exit??Ts.exit(eh.exit,n),transitionEnd:t?.exit})},FB={initial:"exit",animate:"enter",exit:"exit",variants:zde},Fde=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,className:o,transition:a,transitionEnd:s,delay:l,...u}=t,h=i||r?"enter":"exit",g=r?i&&r:!0,m={transition:a,transitionEnd:s,delay:l};return b(wd,{custom:m,children:g&&se.createElement(Fl.div,{ref:n,className:s2("chakra-fade",o),custom:m,...FB,animate:h,...u})})});Fde.displayName="Fade";var $de={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:i})=>({opacity:0,...e?{scale:t,transitionEnd:r?.exit}:{transitionEnd:{scale:t,...r?.exit}},transition:n?.exit??Ts.exit(eh.exit,i)}),enter:({transitionEnd:e,transition:t,delay:n})=>({opacity:1,scale:1,transition:t?.enter??Ts.enter(eh.enter,n),transitionEnd:e?.enter})},$B={initial:"exit",animate:"enter",exit:"exit",variants:$de},Hde=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,reverse:o=!0,initialScale:a=.95,className:s,transition:l,transitionEnd:u,delay:h,...g}=t,m=r?i&&r:!0,v=i||r?"enter":"exit",S={initialScale:a,reverse:o,transition:l,transitionEnd:u,delay:h};return b(wd,{custom:S,children:m&&se.createElement(Fl.div,{ref:n,className:s2("chakra-offset-slide",s),...$B,animate:v,custom:S,...g})})});Hde.displayName="ScaleFade";var jL={exit:{duration:.15,ease:Uf.easeInOut},enter:{type:"spring",damping:25,stiffness:180}},Wde={exit:({direction:e,transition:t,transitionEnd:n,delay:r})=>{const{exit:i}=RC({direction:e});return{...i,transition:t?.exit??Ts.exit(jL.exit,r),transitionEnd:n?.exit}},enter:({direction:e,transitionEnd:t,transition:n,delay:r})=>{const{enter:i}=RC({direction:e});return{...i,transition:n?.enter??Ts.enter(jL.enter,r),transitionEnd:t?.enter}}},HB=C.exports.forwardRef(function(t,n){const{direction:r="right",style:i,unmountOnExit:o,in:a,className:s,transition:l,transitionEnd:u,delay:h,motionProps:g,...m}=t,v=RC({direction:r}),S=Object.assign({position:"fixed"},v.position,i),w=o?a&&o:!0,k=a||o?"enter":"exit",P={transitionEnd:u,transition:l,direction:r,delay:h};return b(wd,{custom:P,children:w&&se.createElement(Fl.div,{...m,ref:n,initial:"exit",className:s2("chakra-slide",s),animate:k,exit:"exit",custom:P,variants:Wde,style:S,...g})})});HB.displayName="Slide";var Vde={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:i})=>({opacity:0,x:e,y:t,transition:n?.exit??Ts.exit(eh.exit,i),transitionEnd:r?.exit}),enter:({transition:e,transitionEnd:t,delay:n})=>({opacity:1,x:0,y:0,transition:e?.enter??Ts.enter(eh.enter,n),transitionEnd:t?.enter}),exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:i,delay:o})=>{const a={x:t,y:e};return{opacity:0,transition:n?.exit??Ts.exit(eh.exit,o),...i?{...a,transitionEnd:r?.exit}:{transitionEnd:{...a,...r?.exit}}}}},OC={initial:"initial",animate:"enter",exit:"exit",variants:Vde},Ude=C.exports.forwardRef(function(t,n){const{unmountOnExit:r,in:i,reverse:o=!0,className:a,offsetX:s=0,offsetY:l=8,transition:u,transitionEnd:h,delay:g,...m}=t,v=r?i&&r:!0,S=i||r?"enter":"exit",w={offsetX:s,offsetY:l,reverse:o,transition:u,transitionEnd:h,delay:g};return b(wd,{custom:w,children:v&&se.createElement(Fl.div,{ref:n,className:s2("chakra-offset-slide",a),custom:w,...OC,animate:S,...m})})});Ude.displayName="SlideFade";var l2=(...e)=>e.filter(Boolean).join(" ");function Gde(){return!1}var CS=e=>{const{condition:t,message:n}=e;t&&Gde()&&console.warn(n)};function nw(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[jde,_S]=_n({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[Yde,O8]=_n({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[qde,MTe,Kde,Xde]=uN(),Gf=Ee(function(t,n){const{getButtonProps:r}=O8(),i=r(t,n),a={display:"flex",alignItems:"center",width:"100%",outline:0,..._S().button};return se.createElement(be.button,{...i,className:l2("chakra-accordion__button",t.className),__css:a})});Gf.displayName="AccordionButton";function Zde(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:i,allowToggle:o,...a}=e;efe(e),tfe(e);const s=Kde(),[l,u]=C.exports.useState(-1);C.exports.useEffect(()=>()=>{u(-1)},[]);const[h,g]=fS({value:r,defaultValue(){return i?n??[]:n??-1},onChange:t});return{index:h,setIndex:g,htmlProps:a,getAccordionItemProps:v=>{let S=!1;return v!==null&&(S=Array.isArray(h)?h.includes(v):h===v),{isOpen:S,onChange:k=>{if(v!==null)if(i&&Array.isArray(h)){const P=k?h.concat(v):h.filter(E=>E!==v);g(P)}else k?g(v):o&&g(-1)}}},focusedIndex:l,setFocusedIndex:u,descendants:s}}var[Qde,D8]=_n({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function Jde(e){const{isDisabled:t,isFocusable:n,id:r,...i}=e,{getAccordionItemProps:o,setFocusedIndex:a}=D8(),s=C.exports.useRef(null),l=C.exports.useId(),u=r??l,h=`accordion-button-${u}`,g=`accordion-panel-${u}`;nfe(e);const{register:m,index:v,descendants:S}=Xde({disabled:t&&!n}),{isOpen:w,onChange:k}=o(v===-1?null:v);rfe({isOpen:w,isDisabled:t});const P=()=>{k?.(!0)},E=()=>{k?.(!1)},T=C.exports.useCallback(()=>{k?.(!w),a(v)},[v,a,w,k]),M=C.exports.useCallback(B=>{const W={ArrowDown:()=>{const j=S.nextEnabled(v);j?.node.focus()},ArrowUp:()=>{const j=S.prevEnabled(v);j?.node.focus()},Home:()=>{const j=S.firstEnabled();j?.node.focus()},End:()=>{const j=S.lastEnabled();j?.node.focus()}}[B.key];W&&(B.preventDefault(),W(B))},[S,v]),R=C.exports.useCallback(()=>{a(v)},[a,v]),O=C.exports.useCallback(function($={},W=null){return{...$,type:"button",ref:Wn(m,s,W),id:h,disabled:!!t,"aria-expanded":!!w,"aria-controls":g,onClick:nw($.onClick,T),onFocus:nw($.onFocus,R),onKeyDown:nw($.onKeyDown,M)}},[h,t,w,T,R,M,g,m]),D=C.exports.useCallback(function($={},W=null){return{...$,ref:W,role:"region",id:g,"aria-labelledby":h,hidden:!w}},[h,w,g]);return{isOpen:w,isDisabled:t,isFocusable:n,onOpen:P,onClose:E,getButtonProps:O,getPanelProps:D,htmlProps:i}}function efe(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;CS({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function tfe(e){CS({condition:!!(e.allowMultiple&&e.allowToggle),message:"If 'allowMultiple' is passed, 'allowToggle' will be ignored. Either remove 'allowToggle' or 'allowMultiple' depending on whether you want multiple accordions visible or not"})}function nfe(e){CS({condition:!!(e.isFocusable&&!e.isDisabled),message:`Using only 'isFocusable', this prop is reserved for situations where you pass 'isDisabled' but you still want the element to receive focus (A11y). Either remove it or pass 'isDisabled' as well. + `})}function rfe(e){CS({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function jf(e){const{isOpen:t,isDisabled:n}=O8(),{reduceMotion:r}=D8(),i=l2("chakra-accordion__icon",e.className),o=_S(),a={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...o.icon};return b(Sa,{viewBox:"0 0 24 24","aria-hidden":!0,className:i,__css:a,...e,children:b("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}jf.displayName="AccordionIcon";var Yf=Ee(function(t,n){const{children:r,className:i}=t,{htmlProps:o,...a}=Jde(t),l={..._S().container,overflowAnchor:"none"},u=C.exports.useMemo(()=>a,[a]);return se.createElement(Yde,{value:u},se.createElement(be.div,{ref:n,...o,className:l2("chakra-accordion__item",i),__css:l},typeof r=="function"?r({isExpanded:!!a.isOpen,isDisabled:!!a.isDisabled}):r))});Yf.displayName="AccordionItem";var qf=Ee(function(t,n){const{className:r,motionProps:i,...o}=t,{reduceMotion:a}=D8(),{getPanelProps:s,isOpen:l}=O8(),u=s(o,n),h=l2("chakra-accordion__panel",r),g=_S();a||delete u.hidden;const m=se.createElement(be.div,{...u,__css:g.panel,className:h});return a?m:b(zB,{in:l,...i,children:m})});qf.displayName="AccordionPanel";var kS=Ee(function({children:t,reduceMotion:n,...r},i){const o=Ii("Accordion",r),a=yn(r),{htmlProps:s,descendants:l,...u}=Zde(a),h=C.exports.useMemo(()=>({...u,reduceMotion:!!n}),[u,n]);return se.createElement(qde,{value:l},se.createElement(Qde,{value:h},se.createElement(jde,{value:o},se.createElement(be.div,{ref:i,...s,className:l2("chakra-accordion",r.className),__css:o.root},t))))});kS.displayName="Accordion";var ife=(...e)=>e.filter(Boolean).join(" "),ofe=xd({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),u2=Ee((e,t)=>{const n=so("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:a="transparent",className:s,...l}=yn(e),u=ife("chakra-spinner",s),h={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:a,borderLeftColor:a,animation:`${ofe} ${o} linear infinite`,...n};return se.createElement(be.div,{ref:t,__css:h,className:u,...l},r&&se.createElement(be.span,{srOnly:!0},r))});u2.displayName="Spinner";var ES=(...e)=>e.filter(Boolean).join(" ");function afe(e){return b(Sa,{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"})})}function sfe(e){return b(Sa,{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"})})}function YL(e){return b(Sa,{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})}var[lfe,ufe]=_n({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[cfe,N8]=_n({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),WB={info:{icon:sfe,colorScheme:"blue"},warning:{icon:YL,colorScheme:"orange"},success:{icon:afe,colorScheme:"green"},error:{icon:YL,colorScheme:"red"},loading:{icon:u2,colorScheme:"blue"}};function dfe(e){return WB[e].colorScheme}function ffe(e){return WB[e].icon}var VB=Ee(function(t,n){const{status:r="info",addRole:i=!0,...o}=yn(t),a=t.colorScheme??dfe(r),s=Ii("Alert",{...t,colorScheme:a}),l={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...s.container};return se.createElement(lfe,{value:{status:r}},se.createElement(cfe,{value:s},se.createElement(be.div,{role:i?"alert":void 0,ref:n,...o,className:ES("chakra-alert",t.className),__css:l})))});VB.displayName="Alert";var UB=Ee(function(t,n){const i={display:"inline",...N8().description};return se.createElement(be.div,{ref:n,...t,className:ES("chakra-alert__desc",t.className),__css:i})});UB.displayName="AlertDescription";function GB(e){const{status:t}=ufe(),n=ffe(t),r=N8(),i=t==="loading"?r.spinner:r.icon;return se.createElement(be.span,{display:"inherit",...e,className:ES("chakra-alert__icon",e.className),__css:i},e.children||b(n,{h:"100%",w:"100%"}))}GB.displayName="AlertIcon";var jB=Ee(function(t,n){const r=N8();return se.createElement(be.div,{ref:n,...t,className:ES("chakra-alert__title",t.className),__css:r.title})});jB.displayName="AlertTitle";function hfe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function pfe(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:a,sizes:s,ignoreFallback:l}=e,[u,h]=C.exports.useState("pending");C.exports.useEffect(()=>{h(n?"loading":"pending")},[n]);const g=C.exports.useRef(),m=C.exports.useCallback(()=>{if(!n)return;v();const S=new Image;S.src=n,a&&(S.crossOrigin=a),r&&(S.srcset=r),s&&(S.sizes=s),t&&(S.loading=t),S.onload=w=>{v(),h("loaded"),i?.(w)},S.onerror=w=>{v(),h("failed"),o?.(w)},g.current=S},[n,a,r,s,i,o,t]),v=()=>{g.current&&(g.current.onload=null,g.current.onerror=null,g.current=null)};return ks(()=>{if(!l)return u==="loading"&&m(),()=>{v()}},[u,m,l]),l?"loaded":u}var gfe=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError",n5=Ee(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...a}=t;return b("img",{width:r,height:i,ref:n,alt:o,...a})});n5.displayName="NativeImage";var PS=Ee(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:a,align:s,fit:l,loading:u,ignoreFallback:h,crossOrigin:g,fallbackStrategy:m="beforeLoadOrError",referrerPolicy:v,...S}=t,w=r!==void 0||i!==void 0,k=u!=null||h||!w,P=pfe({...t,ignoreFallback:k}),E=gfe(P,m),T={ref:n,objectFit:l,objectPosition:s,...k?S:hfe(S,["onError","onLoad"])};return E?i||se.createElement(be.img,{as:n5,className:"chakra-image__placeholder",src:r,...T}):se.createElement(be.img,{as:n5,src:o,srcSet:a,crossOrigin:g,loading:u,referrerPolicy:v,className:"chakra-image",...T})});PS.displayName="Image";Ee((e,t)=>se.createElement(be.img,{ref:t,as:n5,className:"chakra-image",...e}));function TS(e){return C.exports.Children.toArray(e).filter(t=>C.exports.isValidElement(t))}var LS=(...e)=>e.filter(Boolean).join(" "),qL=e=>e?"":void 0,[mfe,vfe]=_n({strict:!1,name:"ButtonGroupContext"});function DC(e){const{children:t,className:n,...r}=e,i=C.exports.isValidElement(t)?C.exports.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,o=LS("chakra-button__icon",n);return se.createElement(be.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:o},i)}DC.displayName="ButtonIcon";function NC(e){const{label:t,placement:n,spacing:r="0.5rem",children:i=b(u2,{color:"currentColor",width:"1em",height:"1em"}),className:o,__css:a,...s}=e,l=LS("chakra-button__spinner",o),u=n==="start"?"marginEnd":"marginStart",h=C.exports.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[u]:t?r:0,fontSize:"1em",lineHeight:"normal",...a}),[a,t,u,r]);return se.createElement(be.div,{className:l,...s,__css:h},i)}NC.displayName="ButtonSpinner";function yfe(e){const[t,n]=C.exports.useState(!e);return{ref:C.exports.useCallback(o=>{!o||n(o.tagName==="BUTTON")},[]),type:t?"button":void 0}}var Wa=Ee((e,t)=>{const n=vfe(),r=so("Button",{...n,...e}),{isDisabled:i=n?.isDisabled,isLoading:o,isActive:a,children:s,leftIcon:l,rightIcon:u,loadingText:h,iconSpacing:g="0.5rem",type:m,spinner:v,spinnerPlacement:S="start",className:w,as:k,...P}=yn(e),E=C.exports.useMemo(()=>{const O={...r?._focus,zIndex:1};return{display:"inline-flex",appearance:"none",alignItems:"center",justifyContent:"center",userSelect:"none",position:"relative",whiteSpace:"nowrap",verticalAlign:"middle",outline:"none",...r,...!!n&&{_focus:O}}},[r,n]),{ref:T,type:M}=yfe(k),R={rightIcon:u,leftIcon:l,iconSpacing:g,children:s};return se.createElement(be.button,{disabled:i||o,ref:$ae(t,T),as:k,type:m??M,"data-active":qL(a),"data-loading":qL(o),__css:E,className:LS("chakra-button",w),...P},o&&S==="start"&&b(NC,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:g,children:v}),o?h||se.createElement(be.span,{opacity:0},b(KL,{...R})):b(KL,{...R}),o&&S==="end"&&b(NC,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:g,children:v}))});Wa.displayName="Button";function KL(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:i}=e;return Q(An,{children:[t&&b(DC,{marginEnd:i,children:t}),r,n&&b(DC,{marginStart:i,children:n})]})}var Lo=Ee(function(t,n){const{size:r,colorScheme:i,variant:o,className:a,spacing:s="0.5rem",isAttached:l,isDisabled:u,...h}=t,g=LS("chakra-button__group",a),m=C.exports.useMemo(()=>({size:r,colorScheme:i,variant:o,isDisabled:u}),[r,i,o,u]);let v={display:"inline-flex"};return l?v={...v,"> *:first-of-type:not(:last-of-type)":{borderEndRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderStartRadius:0}}:v={...v,"& > *:not(style) ~ *:not(style)":{marginStart:s}},se.createElement(mfe,{value:m},se.createElement(be.div,{ref:n,role:"group",__css:v,className:g,"data-attached":l?"":void 0,...h}))});Lo.displayName="ButtonGroup";var Va=Ee((e,t)=>{const{icon:n,children:r,isRound:i,"aria-label":o,...a}=e,s=n||r,l=C.exports.isValidElement(s)?C.exports.cloneElement(s,{"aria-hidden":!0,focusable:!1}):null;return b(Wa,{padding:"0",borderRadius:i?"full":void 0,ref:t,"aria-label":o,...a,children:l})});Va.displayName="IconButton";var y1=(...e)=>e.filter(Boolean).join(" "),Gy=e=>e?"":void 0,rw=e=>e?!0:void 0;function XL(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[Sfe,YB]=_n({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[bfe,S1]=_n({strict:!1,name:"FormControlContext"});function xfe(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:i,isReadOnly:o,...a}=e,s=C.exports.useId(),l=t||`field-${s}`,u=`${l}-label`,h=`${l}-feedback`,g=`${l}-helptext`,[m,v]=C.exports.useState(!1),[S,w]=C.exports.useState(!1),[k,P]=C.exports.useState(!1),E=C.exports.useCallback((D={},B=null)=>({id:g,...D,ref:Wn(B,$=>{!$||w(!0)})}),[g]),T=C.exports.useCallback((D={},B=null)=>({...D,ref:B,"data-focus":Gy(k),"data-disabled":Gy(i),"data-invalid":Gy(r),"data-readonly":Gy(o),id:D.id??u,htmlFor:D.htmlFor??l}),[l,i,k,r,o,u]),M=C.exports.useCallback((D={},B=null)=>({id:h,...D,ref:Wn(B,$=>{!$||v(!0)}),"aria-live":"polite"}),[h]),R=C.exports.useCallback((D={},B=null)=>({...D,...a,ref:B,role:"group"}),[a]),O=C.exports.useCallback((D={},B=null)=>({...D,ref:B,role:"presentation","aria-hidden":!0,children:D.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!o,isDisabled:!!i,isFocused:!!k,onFocus:()=>P(!0),onBlur:()=>P(!1),hasFeedbackText:m,setHasFeedbackText:v,hasHelpText:S,setHasHelpText:w,id:l,labelId:u,feedbackId:h,helpTextId:g,htmlProps:a,getHelpTextProps:E,getErrorMessageProps:M,getRootProps:R,getLabelProps:T,getRequiredIndicatorProps:O}}var Cd=Ee(function(t,n){const r=Ii("Form",t),i=yn(t),{getRootProps:o,htmlProps:a,...s}=xfe(i),l=y1("chakra-form-control",t.className);return se.createElement(bfe,{value:s},se.createElement(Sfe,{value:r},se.createElement(be.div,{...o({},n),className:l,__css:r.container})))});Cd.displayName="FormControl";var wfe=Ee(function(t,n){const r=S1(),i=YB(),o=y1("chakra-form__helper-text",t.className);return se.createElement(be.div,{...r?.getHelpTextProps(t,n),__css:i.helperText,className:o})});wfe.displayName="FormHelperText";function B8(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:i,...o}=z8(e);return{...o,disabled:t,readOnly:r,required:i,"aria-invalid":rw(n),"aria-required":rw(i),"aria-readonly":rw(r)}}function z8(e){const t=S1(),{id:n,disabled:r,readOnly:i,required:o,isRequired:a,isInvalid:s,isReadOnly:l,isDisabled:u,onFocus:h,onBlur:g,...m}=e,v=e["aria-describedby"]?[e["aria-describedby"]]:[];return t?.hasFeedbackText&&t?.isInvalid&&v.push(t.feedbackId),t?.hasHelpText&&v.push(t.helpTextId),{...m,"aria-describedby":v.join(" ")||void 0,id:n??t?.id,isDisabled:r??u??t?.isDisabled,isReadOnly:i??l??t?.isReadOnly,isRequired:o??a??t?.isRequired,isInvalid:s??t?.isInvalid,onFocus:XL(t?.onFocus,h),onBlur:XL(t?.onBlur,g)}}var[Cfe,_fe]=_n({name:"FormErrorStylesContext",errorMessage:`useFormErrorStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),kfe=Ee((e,t)=>{const n=Ii("FormError",e),r=yn(e),i=S1();return i?.isInvalid?se.createElement(Cfe,{value:n},se.createElement(be.div,{...i?.getErrorMessageProps(r,t),className:y1("chakra-form__error-message",e.className),__css:{display:"flex",alignItems:"center",...n.text}})):null});kfe.displayName="FormErrorMessage";var Efe=Ee((e,t)=>{const n=_fe(),r=S1();if(!r?.isInvalid)return null;const i=y1("chakra-form__error-icon",e.className);return b(Sa,{ref:t,"aria-hidden":!0,...e,__css:n.icon,className:i,children:b("path",{fill:"currentColor",d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z"})})});Efe.displayName="FormErrorIcon";var bh=Ee(function(t,n){const r=so("FormLabel",t),i=yn(t),{className:o,children:a,requiredIndicator:s=b(qB,{}),optionalIndicator:l=null,...u}=i,h=S1(),g=h?.getLabelProps(u,n)??{ref:n,...u};return se.createElement(be.label,{...g,className:y1("chakra-form__label",i.className),__css:{display:"block",textAlign:"start",...r}},a,h?.isRequired?s:l)});bh.displayName="FormLabel";var qB=Ee(function(t,n){const r=S1(),i=YB();if(!r?.isRequired)return null;const o=y1("chakra-form__required-indicator",t.className);return se.createElement(be.span,{...r?.getRequiredIndicatorProps(t,n),__css:i.requiredIndicator,className:o})});qB.displayName="RequiredIndicator";function fd(e,t){const n=C.exports.useRef(!1),r=C.exports.useRef(!1);C.exports.useEffect(()=>{if(n.current&&r.current)return e();r.current=!0},t),C.exports.useEffect(()=>(n.current=!0,()=>{n.current=!1}),[])}var F8={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},Pfe=be("span",{baseStyle:F8});Pfe.displayName="VisuallyHidden";var Tfe=be("input",{baseStyle:F8});Tfe.displayName="VisuallyHiddenInput";var ZL=!1,AS=null,Z0=!1,BC=new Set,Lfe=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function Afe(e){return!(e.metaKey||!Lfe&&e.altKey||e.ctrlKey)}function $8(e,t){BC.forEach(n=>n(e,t))}function QL(e){Z0=!0,Afe(e)&&(AS="keyboard",$8("keyboard",e))}function Mp(e){AS="pointer",(e.type==="mousedown"||e.type==="pointerdown")&&(Z0=!0,$8("pointer",e))}function Mfe(e){e.target===window||e.target===document||(Z0||(AS="keyboard",$8("keyboard",e)),Z0=!1)}function Ife(){Z0=!1}function JL(){return AS!=="pointer"}function Rfe(){if(typeof window>"u"||ZL)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){Z0=!0,e.apply(this,n)},document.addEventListener("keydown",QL,!0),document.addEventListener("keyup",QL,!0),window.addEventListener("focus",Mfe,!0),window.addEventListener("blur",Ife,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",Mp,!0),document.addEventListener("pointermove",Mp,!0),document.addEventListener("pointerup",Mp,!0)):(document.addEventListener("mousedown",Mp,!0),document.addEventListener("mousemove",Mp,!0),document.addEventListener("mouseup",Mp,!0)),ZL=!0}function Ofe(e){Rfe(),e(JL());const t=()=>e(JL());return BC.add(t),()=>{BC.delete(t)}}var[ITe,Dfe]=_n({name:"CheckboxGroupContext",strict:!1}),Nfe=(...e)=>e.filter(Boolean).join(" "),Qi=e=>e?"":void 0;function Aa(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}function Bfe(...e){return function(n){e.forEach(r=>{r?.(n)})}}function zfe(e){return se.createElement(be.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e},b("polyline",{points:"1.5 6 4.5 9 10.5 1"}))}function Ffe(e){return se.createElement(be.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e},b("line",{x1:"21",x2:"3",y1:"12",y2:"12"}))}function $fe(e){const{isIndeterminate:t,isChecked:n,...r}=e,i=t?Ffe:zfe;return n||t?se.createElement(be.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"}},b(i,{...r})):null}function Hfe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function KB(e={}){const t=z8(e),{isDisabled:n,isReadOnly:r,isRequired:i,isInvalid:o,id:a,onBlur:s,onFocus:l,"aria-describedby":u}=t,{defaultChecked:h,isChecked:g,isFocusable:m,onChange:v,isIndeterminate:S,name:w,value:k,tabIndex:P=void 0,"aria-label":E,"aria-labelledby":T,"aria-invalid":M,...R}=e,O=Hfe(R,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),D=dr(v),B=dr(s),$=dr(l),[W,j]=C.exports.useState(!1),[te,V]=C.exports.useState(!1),[J,re]=C.exports.useState(!1),[ee,K]=C.exports.useState(!1);C.exports.useEffect(()=>Ofe(j),[]);const G=C.exports.useRef(null),[Z,ce]=C.exports.useState(!0),[me,Re]=C.exports.useState(!!h),xe=g!==void 0,Se=xe?g:me,Me=C.exports.useCallback(Pe=>{if(r||n){Pe.preventDefault();return}xe||Re(Se?Pe.target.checked:S?!0:Pe.target.checked),D?.(Pe)},[r,n,Se,xe,S,D]);ks(()=>{G.current&&(G.current.indeterminate=Boolean(S))},[S]),fd(()=>{n&&V(!1)},[n,V]),ks(()=>{const Pe=G.current;!Pe?.form||(Pe.form.onreset=()=>{Re(!!h)})},[]);const _e=n&&!m,Je=C.exports.useCallback(Pe=>{Pe.key===" "&&K(!0)},[K]),Xe=C.exports.useCallback(Pe=>{Pe.key===" "&&K(!1)},[K]);ks(()=>{if(!G.current)return;G.current.checked!==Se&&Re(G.current.checked)},[G.current]);const ft=C.exports.useCallback((Pe={},et=null)=>{const Lt=it=>{te&&it.preventDefault(),K(!0)};return{...Pe,ref:et,"data-active":Qi(ee),"data-hover":Qi(J),"data-checked":Qi(Se),"data-focus":Qi(te),"data-focus-visible":Qi(te&&W),"data-indeterminate":Qi(S),"data-disabled":Qi(n),"data-invalid":Qi(o),"data-readonly":Qi(r),"aria-hidden":!0,onMouseDown:Aa(Pe.onMouseDown,Lt),onMouseUp:Aa(Pe.onMouseUp,()=>K(!1)),onMouseEnter:Aa(Pe.onMouseEnter,()=>re(!0)),onMouseLeave:Aa(Pe.onMouseLeave,()=>re(!1))}},[ee,Se,n,te,W,J,S,o,r]),_t=C.exports.useCallback((Pe={},et=null)=>({...O,...Pe,ref:Wn(et,Lt=>{!Lt||ce(Lt.tagName==="LABEL")}),onClick:Aa(Pe.onClick,()=>{var Lt;Z||((Lt=G.current)==null||Lt.click(),requestAnimationFrame(()=>{var it;(it=G.current)==null||it.focus()}))}),"data-disabled":Qi(n),"data-checked":Qi(Se),"data-invalid":Qi(o)}),[O,n,Se,o,Z]),gt=C.exports.useCallback((Pe={},et=null)=>({...Pe,ref:Wn(G,et),type:"checkbox",name:w,value:k,id:a,tabIndex:P,onChange:Aa(Pe.onChange,Me),onBlur:Aa(Pe.onBlur,B,()=>V(!1)),onFocus:Aa(Pe.onFocus,$,()=>V(!0)),onKeyDown:Aa(Pe.onKeyDown,Je),onKeyUp:Aa(Pe.onKeyUp,Xe),required:i,checked:Se,disabled:_e,readOnly:r,"aria-label":E,"aria-labelledby":T,"aria-invalid":M?Boolean(M):o,"aria-describedby":u,"aria-disabled":n,style:F8}),[w,k,a,Me,B,$,Je,Xe,i,Se,_e,r,E,T,M,o,u,n,P]),dt=C.exports.useCallback((Pe={},et=null)=>({...Pe,ref:et,onMouseDown:Aa(Pe.onMouseDown,eA),onTouchStart:Aa(Pe.onTouchStart,eA),"data-disabled":Qi(n),"data-checked":Qi(Se),"data-invalid":Qi(o)}),[Se,n,o]);return{state:{isInvalid:o,isFocused:te,isChecked:Se,isActive:ee,isHovered:J,isIndeterminate:S,isDisabled:n,isReadOnly:r,isRequired:i},getRootProps:_t,getCheckboxProps:ft,getInputProps:gt,getLabelProps:dt,htmlProps:O}}function eA(e){e.preventDefault(),e.stopPropagation()}var Wfe={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},Vfe={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},Ufe=xd({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),Gfe=xd({from:{opacity:0},to:{opacity:1}}),jfe=xd({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),XB=Ee(function(t,n){const r=Dfe(),i={...r,...t},o=Ii("Checkbox",i),a=yn(t),{spacing:s="0.5rem",className:l,children:u,iconColor:h,iconSize:g,icon:m=b($fe,{}),isChecked:v,isDisabled:S=r?.isDisabled,onChange:w,inputProps:k,...P}=a;let E=v;r?.value&&a.value&&(E=r.value.includes(a.value));let T=w;r?.onChange&&a.value&&(T=Bfe(r.onChange,w));const{state:M,getInputProps:R,getCheckboxProps:O,getLabelProps:D,getRootProps:B}=KB({...P,isDisabled:S,isChecked:E,onChange:T}),$=C.exports.useMemo(()=>({animation:M.isIndeterminate?`${Gfe} 20ms linear, ${jfe} 200ms linear`:`${Ufe} 200ms linear`,fontSize:g,color:h,...o.icon}),[h,g,,M.isIndeterminate,o.icon]),W=C.exports.cloneElement(m,{__css:$,isIndeterminate:M.isIndeterminate,isChecked:M.isChecked});return se.createElement(be.label,{__css:{...Vfe,...o.container},className:Nfe("chakra-checkbox",l),...B()},b("input",{className:"chakra-checkbox__input",...R(k,n)}),se.createElement(be.span,{__css:{...Wfe,...o.control},className:"chakra-checkbox__control",...O()},W),u&&se.createElement(be.span,{className:"chakra-checkbox__label",...D(),__css:{marginStart:s,...o.label}},u))});XB.displayName="Checkbox";function Yfe(e){return b(Sa,{focusable:"false","aria-hidden":!0,...e,children:b("path",{fill:"currentColor",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"})})}var MS=Ee(function(t,n){const r=so("CloseButton",t),{children:i,isDisabled:o,__css:a,...s}=yn(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return se.createElement(be.button,{type:"button","aria-label":"Close",ref:n,disabled:o,__css:{...l,...r,...a},...s},i||b(Yfe,{width:"1em",height:"1em"}))});MS.displayName="CloseButton";function qfe(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function H8(e,t){let n=qfe(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function zC(e){if(!Number.isFinite(e))return 0;let t=1,n=0;for(;Math.round(e*t)/t!==e;)t*=10,n+=1;return n}function r5(e,t,n){return(e-t)*100/(n-t)}function ZB(e,t,n){return(n-t)*e+t}function FC(e,t,n){const r=Math.round((e-t)/n)*n+t,i=zC(n);return H8(r,i)}function M0(e,t,n){return e==null?e:(nr==null?"":iw(r,o,n)??""),m=typeof i<"u",v=m?i:h,S=QB(Rc(v),o),w=n??S,k=C.exports.useCallback(W=>{W!==v&&(m||g(W.toString()),u?.(W.toString(),Rc(W)))},[u,m,v]),P=C.exports.useCallback(W=>{let j=W;return l&&(j=M0(j,a,s)),H8(j,w)},[w,l,s,a]),E=C.exports.useCallback((W=o)=>{let j;v===""?j=Rc(W):j=Rc(v)+W,j=P(j),k(j)},[P,o,k,v]),T=C.exports.useCallback((W=o)=>{let j;v===""?j=Rc(-W):j=Rc(v)-W,j=P(j),k(j)},[P,o,k,v]),M=C.exports.useCallback(()=>{let W;r==null?W="":W=iw(r,o,n)??a,k(W)},[r,n,o,k,a]),R=C.exports.useCallback(W=>{const j=iw(W,o,w)??a;k(j)},[w,o,k,a]),O=Rc(v);return{isOutOfRange:O>s||Ob(lS,{styles:JB}),Zfe=()=>b(lS,{styles:` + html { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + font-family: system-ui, sans-serif; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + -moz-osx-font-smoothing: grayscale; + touch-action: manipulation; + } + + body { + position: relative; + min-height: 100%; + font-feature-settings: 'kern'; + } + + *, + *::before, + *::after { + border-width: 0; + border-style: solid; + box-sizing: border-box; + } + + main { + display: block; + } + + hr { + border-top-width: 1px; + box-sizing: content-box; + height: 0; + overflow: visible; + } + + pre, + code, + kbd, + samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; + font-size: 1em; + } + + a { + background-color: transparent; + color: inherit; + text-decoration: inherit; + } + + abbr[title] { + border-bottom: none; + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + } + + b, + strong { + font-weight: bold; + } + + small { + font-size: 80%; + } + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + sub { + bottom: -0.25em; + } + + sup { + top: -0.5em; + } + + img { + border-style: none; + } + + button, + input, + optgroup, + select, + textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0; + } + + button, + input { + overflow: visible; + } + + button, + select { + text-transform: none; + } + + button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; + } + + fieldset { + padding: 0.35em 0.75em 0.625em; + } + + legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal; + } + + progress { + vertical-align: baseline; + } + + textarea { + overflow: auto; + } + + [type="checkbox"], + [type="radio"] { + box-sizing: border-box; + padding: 0; + } + + [type="number"]::-webkit-inner-spin-button, + [type="number"]::-webkit-outer-spin-button { + -webkit-appearance: none !important; + } + + input[type="number"] { + -moz-appearance: textfield; + } + + [type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; + } + + [type="search"]::-webkit-search-decoration { + -webkit-appearance: none !important; + } + + ::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit; + } + + details { + display: block; + } + + summary { + display: list-item; + } + + template { + display: none; + } + + [hidden] { + display: none !important; + } + + body, + blockquote, + dl, + dd, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + figure, + p, + pre { + margin: 0; + } + + button { + background: transparent; + padding: 0; + } + + fieldset { + margin: 0; + padding: 0; + } + + ol, + ul { + margin: 0; + padding: 0; + } + + textarea { + resize: vertical; + } + + button, + [role="button"] { + cursor: pointer; + } + + button::-moz-focus-inner { + border: 0 !important; + } + + table { + border-collapse: collapse; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: inherit; + font-weight: inherit; + } + + button, + input, + optgroup, + select, + textarea { + padding: 0; + line-height: inherit; + color: inherit; + } + + img, + svg, + video, + canvas, + audio, + iframe, + embed, + object { + display: block; + } + + img, + video { + max-width: 100%; + height: auto; + } + + [data-js-focus-visible] :focus:not([data-focus-visible-added]):not([data-focus-visible-disabled]) { + outline: none; + box-shadow: none; + } + + select::-ms-expand { + display: none; + } + + ${JB} + `});function th(e,t,n,r){const i=dr(n);return C.exports.useEffect(()=>{const o=typeof e=="function"?e():e??document;if(!(!n||!o))return o.addEventListener(t,i,r),()=>{o.removeEventListener(t,i,r)}},[t,e,r,i,n]),()=>{const o=typeof e=="function"?e():e??document;o?.removeEventListener(t,i,r)}}function Qfe(e){return"current"in e}var ez=()=>typeof window<"u";function Jfe(){const e=navigator.userAgentData;return e?.platform??navigator.platform}var ehe=e=>ez()&&e.test(navigator.vendor),the=e=>ez()&&e.test(Jfe()),nhe=()=>the(/mac|iphone|ipad|ipod/i),rhe=()=>nhe()&&ehe(/apple/i);function ihe(e){const{ref:t,elements:n,enabled:r}=e,i=()=>{var o;return((o=t.current)==null?void 0:o.ownerDocument)??document};th(i,"pointerdown",o=>{if(!rhe()||!r)return;const a=o.target,l=(n??[t]).some(u=>{const h=Qfe(u)?u.current:u;return h?.contains(a)||h===a});i().activeElement!==a&&l&&(o.preventDefault(),a.focus())})}var ohe=YJ?C.exports.useLayoutEffect:C.exports.useEffect;function tA(e,t=[]){const n=C.exports.useRef(e);return ohe(()=>{n.current=e}),C.exports.useCallback((...r)=>{var i;return(i=n.current)==null?void 0:i.call(n,...r)},t)}function ahe(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function she(e,t){const n=C.exports.useId();return C.exports.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function Dv(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=tA(n),a=tA(t),[s,l]=C.exports.useState(e.defaultIsOpen||!1),[u,h]=ahe(r,s),g=she(i,"disclosure"),m=C.exports.useCallback(()=>{u||l(!1),a?.()},[u,a]),v=C.exports.useCallback(()=>{u||l(!0),o?.()},[u,o]),S=C.exports.useCallback(()=>{(h?m:v)()},[h,v,m]);return{isOpen:!!h,onOpen:v,onClose:m,onToggle:S,isControlled:u,getButtonProps:(w={})=>({...w,"aria-expanded":h,"aria-controls":g,onClick:qJ(w.onClick,S)}),getDisclosureProps:(w={})=>({...w,hidden:!h,id:g})}}function W8(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var V8=Ee(function(t,n){const{htmlSize:r,...i}=t,o=Ii("Input",i),a=yn(i),s=B8(a),l=Dr("chakra-input",t.className);return se.createElement(be.input,{size:r,...s,__css:o.field,ref:n,className:l})});V8.displayName="Input";V8.id="Input";var[lhe,tz]=_n({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),uhe=Ee(function(t,n){const r=Ii("Input",t),{children:i,className:o,...a}=yn(t),s=Dr("chakra-input__group",o),l={},u=TS(i),h=r.field;u.forEach(m=>{!r||(h&&m.type.id==="InputLeftElement"&&(l.paddingStart=h.height??h.h),h&&m.type.id==="InputRightElement"&&(l.paddingEnd=h.height??h.h),m.type.id==="InputRightAddon"&&(l.borderEndRadius=0),m.type.id==="InputLeftAddon"&&(l.borderStartRadius=0))});const g=u.map(m=>{var v,S;const w=W8({size:((v=m.props)==null?void 0:v.size)||t.size,variant:((S=m.props)==null?void 0:S.variant)||t.variant});return m.type.id!=="Input"?C.exports.cloneElement(m,w):C.exports.cloneElement(m,Object.assign(w,l,m.props))});return se.createElement(be.div,{className:s,ref:n,__css:{width:"100%",display:"flex",position:"relative"},...a},b(lhe,{value:r,children:g}))});uhe.displayName="InputGroup";var che={left:{marginEnd:"-1px",borderEndRadius:0,borderEndColor:"transparent"},right:{marginStart:"-1px",borderStartRadius:0,borderStartColor:"transparent"}},dhe=be("div",{baseStyle:{flex:"0 0 auto",width:"auto",display:"flex",alignItems:"center",whiteSpace:"nowrap"}}),U8=Ee(function(t,n){const{placement:r="left",...i}=t,o=che[r]??{},a=tz();return b(dhe,{ref:n,...i,__css:{...a.addon,...o}})});U8.displayName="InputAddon";var nz=Ee(function(t,n){return b(U8,{ref:n,placement:"left",...t,className:Dr("chakra-input__left-addon",t.className)})});nz.displayName="InputLeftAddon";nz.id="InputLeftAddon";var rz=Ee(function(t,n){return b(U8,{ref:n,placement:"right",...t,className:Dr("chakra-input__right-addon",t.className)})});rz.displayName="InputRightAddon";rz.id="InputRightAddon";var fhe=be("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),IS=Ee(function(t,n){const{placement:r="left",...i}=t,o=tz(),a=o.field,l={[r==="left"?"insetStart":"insetEnd"]:"0",width:a?.height??a?.h,height:a?.height??a?.h,fontSize:a?.fontSize,...o.element};return b(fhe,{ref:n,__css:l,...i})});IS.id="InputElement";IS.displayName="InputElement";var iz=Ee(function(t,n){const{className:r,...i}=t,o=Dr("chakra-input__left-element",r);return b(IS,{ref:n,placement:"left",className:o,...i})});iz.id="InputLeftElement";iz.displayName="InputLeftElement";var oz=Ee(function(t,n){const{className:r,...i}=t,o=Dr("chakra-input__right-element",r);return b(IS,{ref:n,placement:"right",className:o,...i})});oz.id="InputRightElement";oz.displayName="InputRightElement";function hhe(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}Object.freeze(["base","sm","md","lg","xl","2xl"]);function hd(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):hhe(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var phe=Ee(function(e,t){const{ratio:n=4/3,children:r,className:i,...o}=e,a=C.exports.Children.only(r),s=Dr("chakra-aspect-ratio",i);return se.createElement(be.div,{ref:t,position:"relative",className:s,_before:{height:0,content:'""',display:"block",paddingBottom:hd(n,l=>`${1/l*100}%`)},__css:{"& > *:not(style)":{overflow:"hidden",position:"absolute",top:"0",right:"0",bottom:"0",left:"0",display:"flex",justifyContent:"center",alignItems:"center",width:"100%",height:"100%"},"& > img, & > video":{objectFit:"cover"}},...o},a)});phe.displayName="AspectRatio";var ghe=Ee(function(t,n){const r=so("Badge",t),{className:i,...o}=yn(t);return se.createElement(be.span,{ref:n,className:Dr("chakra-badge",t.className),...o,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});ghe.displayName="Badge";var xh=be("div");xh.displayName="Box";var az=Ee(function(t,n){const{size:r,centerContent:i=!0,...o}=t;return b(xh,{ref:n,boxSize:r,__css:{...i?{display:"flex",alignItems:"center",justifyContent:"center"}:{},flexShrink:0,flexGrow:0},...o})});az.displayName="Square";var mhe=Ee(function(t,n){const{size:r,...i}=t;return b(az,{size:r,ref:n,borderRadius:"9999px",...i})});mhe.displayName="Circle";var sz=be("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center"}});sz.displayName="Center";var vhe={horizontal:{insetStart:"50%",transform:"translateX(-50%)"},vertical:{top:"50%",transform:"translateY(-50%)"},both:{insetStart:"50%",top:"50%",transform:"translate(-50%, -50%)"}};Ee(function(t,n){const{axis:r="both",...i}=t;return se.createElement(be.div,{ref:n,__css:vhe[r],...i,position:"absolute"})});var yhe=Ee(function(t,n){const r=so("Code",t),{className:i,...o}=yn(t);return se.createElement(be.code,{ref:n,className:Dr("chakra-code",t.className),...o,__css:{display:"inline-block",...r}})});yhe.displayName="Code";var She=Ee(function(t,n){const{className:r,centerContent:i,...o}=yn(t),a=so("Container",t);return se.createElement(be.div,{ref:n,className:Dr("chakra-container",r),...o,__css:{...a,...i&&{display:"flex",flexDirection:"column",alignItems:"center"}}})});She.displayName="Container";var bhe=Ee(function(t,n){const{borderLeftWidth:r,borderBottomWidth:i,borderTopWidth:o,borderRightWidth:a,borderWidth:s,borderStyle:l,borderColor:u,...h}=so("Divider",t),{className:g,orientation:m="horizontal",__css:v,...S}=yn(t),w={vertical:{borderLeftWidth:r||a||s||"1px",height:"100%"},horizontal:{borderBottomWidth:i||o||s||"1px",width:"100%"}};return se.createElement(be.hr,{ref:n,"aria-orientation":m,...S,__css:{...h,border:"0",borderColor:u,borderStyle:l,...w[m],...v},className:Dr("chakra-divider",g)})});bhe.displayName="Divider";var rn=Ee(function(t,n){const{direction:r,align:i,justify:o,wrap:a,basis:s,grow:l,shrink:u,...h}=t,g={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:a,flexBasis:s,flexGrow:l,flexShrink:u};return se.createElement(be.div,{ref:n,__css:g,...h})});rn.displayName="Flex";var lz=Ee(function(t,n){const{templateAreas:r,gap:i,rowGap:o,columnGap:a,column:s,row:l,autoFlow:u,autoRows:h,templateRows:g,autoColumns:m,templateColumns:v,...S}=t,w={display:"grid",gridTemplateAreas:r,gridGap:i,gridRowGap:o,gridColumnGap:a,gridAutoColumns:m,gridColumn:s,gridRow:l,gridAutoFlow:u,gridAutoRows:h,gridTemplateRows:g,gridTemplateColumns:v};return se.createElement(be.div,{ref:n,__css:w,...S})});lz.displayName="Grid";function nA(e){return hd(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var xhe=Ee(function(t,n){const{area:r,colSpan:i,colStart:o,colEnd:a,rowEnd:s,rowSpan:l,rowStart:u,...h}=t,g=W8({gridArea:r,gridColumn:nA(i),gridRow:nA(l),gridColumnStart:o,gridColumnEnd:a,gridRowStart:u,gridRowEnd:s});return se.createElement(be.div,{ref:n,__css:g,...h})});xhe.displayName="GridItem";var nh=Ee(function(t,n){const r=so("Heading",t),{className:i,...o}=yn(t);return se.createElement(be.h2,{ref:n,className:Dr("chakra-heading",t.className),...o,__css:r})});nh.displayName="Heading";Ee(function(t,n){const r=so("Mark",t),i=yn(t);return b(xh,{ref:n,...i,as:"mark",__css:{bg:"transparent",whiteSpace:"nowrap",...r}})});var whe=Ee(function(t,n){const r=so("Kbd",t),{className:i,...o}=yn(t);return se.createElement(be.kbd,{ref:n,className:Dr("chakra-kbd",i),...o,__css:{fontFamily:"mono",...r}})});whe.displayName="Kbd";var rh=Ee(function(t,n){const r=so("Link",t),{className:i,isExternal:o,...a}=yn(t);return se.createElement(be.a,{target:o?"_blank":void 0,rel:o?"noopener":void 0,ref:n,className:Dr("chakra-link",i),...a,__css:r})});rh.displayName="Link";Ee(function(t,n){const{isExternal:r,target:i,rel:o,className:a,...s}=t;return se.createElement(be.a,{...s,ref:n,className:Dr("chakra-linkbox__overlay",a),rel:r?"noopener noreferrer":o,target:r?"_blank":i,__css:{position:"static","&::before":{content:"''",cursor:"inherit",display:"block",position:"absolute",top:0,left:0,zIndex:0,width:"100%",height:"100%"}}})});Ee(function(t,n){const{className:r,...i}=t;return se.createElement(be.div,{ref:n,position:"relative",...i,className:Dr("chakra-linkbox",r),__css:{"a[href]:not(.chakra-linkbox__overlay), abbr[title]":{position:"relative",zIndex:1}}})});var[Che,uz]=_n({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),G8=Ee(function(t,n){const r=Ii("List",t),{children:i,styleType:o="none",stylePosition:a,spacing:s,...l}=yn(t),u=TS(i),g=s?{["& > *:not(style) ~ *:not(style)"]:{mt:s}}:{};return se.createElement(Che,{value:r},se.createElement(be.ul,{ref:n,listStyleType:o,listStylePosition:a,role:"list",__css:{...r.container,...g},...l},u))});G8.displayName="List";var _he=Ee((e,t)=>{const{as:n,...r}=e;return b(G8,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});_he.displayName="OrderedList";var khe=Ee(function(t,n){const{as:r,...i}=t;return b(G8,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...i})});khe.displayName="UnorderedList";var Ehe=Ee(function(t,n){const r=uz();return se.createElement(be.li,{ref:n,...t,__css:r.item})});Ehe.displayName="ListItem";var Phe=Ee(function(t,n){const r=uz();return b(Sa,{ref:n,role:"presentation",...t,__css:r.icon})});Phe.displayName="ListIcon";var The=Ee(function(t,n){const{columns:r,spacingX:i,spacingY:o,spacing:a,minChildWidth:s,...l}=t,u=h1(),h=s?Ahe(s,u):Mhe(r);return b(lz,{ref:n,gap:a,columnGap:i,rowGap:o,templateColumns:h,...l})});The.displayName="SimpleGrid";function Lhe(e){return typeof e=="number"?`${e}px`:e}function Ahe(e,t){return hd(e,n=>{const r=Lae("sizes",n,Lhe(n))(t);return n===null?null:`repeat(auto-fit, minmax(${r}, 1fr))`})}function Mhe(e){return hd(e,t=>t===null?null:`repeat(${t}, minmax(0, 1fr))`)}var cz=be("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});cz.displayName="Spacer";var $C="& > *:not(style) ~ *:not(style)";function Ihe(e){const{spacing:t,direction:n}=e,r={column:{marginTop:t,marginEnd:0,marginBottom:0,marginStart:0},row:{marginTop:0,marginEnd:0,marginBottom:0,marginStart:t},"column-reverse":{marginTop:0,marginEnd:0,marginBottom:t,marginStart:0},"row-reverse":{marginTop:0,marginEnd:t,marginBottom:0,marginStart:0}};return{flexDirection:n,[$C]:hd(n,i=>r[i])}}function Rhe(e){const{spacing:t,direction:n}=e,r={column:{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},"column-reverse":{my:t,mx:0,borderLeftWidth:0,borderBottomWidth:"1px"},row:{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0},"row-reverse":{mx:t,my:0,borderLeftWidth:"1px",borderBottomWidth:0}};return{"&":hd(n,i=>r[i])}}var dz=e=>se.createElement(be.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});dz.displayName="StackItem";var j8=Ee((e,t)=>{const{isInline:n,direction:r,align:i,justify:o,spacing:a="0.5rem",wrap:s,children:l,divider:u,className:h,shouldWrapChildren:g,...m}=e,v=n?"row":r??"column",S=C.exports.useMemo(()=>Ihe({direction:v,spacing:a}),[v,a]),w=C.exports.useMemo(()=>Rhe({spacing:a,direction:v}),[a,v]),k=!!u,P=!g&&!k,E=C.exports.useMemo(()=>{const M=TS(l);return P?M:M.map((R,O)=>{const D=typeof R.key<"u"?R.key:O,B=O+1===M.length,W=g?b(dz,{children:R},D):R;if(!k)return W;const j=C.exports.cloneElement(u,{__css:w}),te=B?null:j;return Q(C.exports.Fragment,{children:[W,te]},D)})},[u,w,k,P,g,l]),T=Dr("chakra-stack",h);return se.createElement(be.div,{ref:t,display:"flex",alignItems:i,justifyContent:o,flexDirection:S.flexDirection,flexWrap:s,className:T,__css:k?{}:{[$C]:S[$C]},...m},E)});j8.displayName="Stack";var fz=Ee((e,t)=>b(j8,{align:"center",...e,direction:"row",ref:t}));fz.displayName="HStack";var hz=Ee((e,t)=>b(j8,{align:"center",...e,direction:"column",ref:t}));hz.displayName="VStack";var Po=Ee(function(t,n){const r=so("Text",t),{className:i,align:o,decoration:a,casing:s,...l}=yn(t),u=W8({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return se.createElement(be.p,{ref:n,className:Dr("chakra-text",t.className),...u,...l,__css:r})});Po.displayName="Text";function rA(e){return typeof e=="number"?`${e}px`:e}var Ohe=Ee(function(t,n){const{spacing:r="0.5rem",spacingX:i,spacingY:o,children:a,justify:s,direction:l,align:u,className:h,shouldWrapChildren:g,...m}=t,v=C.exports.useMemo(()=>{const{spacingX:w=r,spacingY:k=r}={spacingX:i,spacingY:o};return{"--chakra-wrap-x-spacing":P=>hd(w,E=>rA(K6("space",E)(P))),"--chakra-wrap-y-spacing":P=>hd(k,E=>rA(K6("space",E)(P))),"--wrap-x-spacing":"calc(var(--chakra-wrap-x-spacing) / 2)","--wrap-y-spacing":"calc(var(--chakra-wrap-y-spacing) / 2)",display:"flex",flexWrap:"wrap",justifyContent:s,alignItems:u,flexDirection:l,listStyleType:"none",padding:"0",margin:"calc(var(--wrap-y-spacing) * -1) calc(var(--wrap-x-spacing) * -1)","& > *:not(style)":{margin:"var(--wrap-y-spacing) var(--wrap-x-spacing)"}}},[r,i,o,s,u,l]),S=C.exports.useMemo(()=>g?C.exports.Children.map(a,(w,k)=>b(pz,{children:w},k)):a,[a,g]);return se.createElement(be.div,{ref:n,className:Dr("chakra-wrap",h),overflow:"hidden",...m},se.createElement(be.ul,{className:"chakra-wrap__list",__css:v},S))});Ohe.displayName="Wrap";var pz=Ee(function(t,n){const{className:r,...i}=t;return se.createElement(be.li,{ref:n,__css:{display:"flex",alignItems:"flex-start"},className:Dr("chakra-wrap__listitem",r),...i})});pz.displayName="WrapItem";var Dhe={body:{classList:{add(){},remove(){}}},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector(){return null},querySelectorAll(){return[]},getElementById(){return null},createEvent(){return{initEvent(){}}},createElement(){return{children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName(){return[]}}}},gz=Dhe,Ip=()=>{},Nhe={document:gz,navigator:{userAgent:""},CustomEvent:function(){return this},addEventListener:Ip,removeEventListener:Ip,getComputedStyle(){return{getPropertyValue(){return""}}},matchMedia(){return{matches:!1,addListener:Ip,removeListener:Ip}},requestAnimationFrame(e){return typeof setTimeout>"u"?(e(),null):setTimeout(e,0)},cancelAnimationFrame(e){typeof setTimeout>"u"||clearTimeout(e)},setTimeout:()=>0,clearTimeout:Ip,setInterval:()=>0,clearInterval:Ip},Bhe=Nhe,zhe={window:Bhe,document:gz},mz=typeof window<"u"?{window,document}:zhe,vz=C.exports.createContext(mz);vz.displayName="EnvironmentContext";function yz(e){const{children:t,environment:n}=e,[r,i]=C.exports.useState(null),[o,a]=C.exports.useState(!1);C.exports.useEffect(()=>a(!0),[]);const s=C.exports.useMemo(()=>{if(n)return n;const l=r?.ownerDocument,u=r?.ownerDocument.defaultView;return l?{document:l,window:u}:mz},[r,n]);return Q(vz.Provider,{value:s,children:[t,!n&&o&&b("span",{id:"__chakra_env",hidden:!0,ref:l=>{C.exports.startTransition(()=>{l&&i(l)})}})]})}yz.displayName="EnvironmentProvider";var Fhe=e=>e?"":void 0;function $he(){const e=C.exports.useRef(new Map),t=e.current,n=C.exports.useCallback((i,o,a,s)=>{e.current.set(a,{type:o,el:i,options:s}),i.addEventListener(o,a,s)},[]),r=C.exports.useCallback((i,o,a,s)=>{i.removeEventListener(o,a,s),e.current.delete(a)},[]);return C.exports.useEffect(()=>()=>{t.forEach((i,o)=>{r(i.el,i.type,o,i.options)})},[r,t]),{add:n,remove:r}}function ow(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function Hhe(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:i=!0,clickOnSpace:o=!0,onMouseDown:a,onMouseUp:s,onClick:l,onKeyDown:u,onKeyUp:h,tabIndex:g,onMouseOver:m,onMouseLeave:v,...S}=e,[w,k]=C.exports.useState(!0),[P,E]=C.exports.useState(!1),T=$he(),M=K=>{!K||K.tagName!=="BUTTON"&&k(!1)},R=w?g:g||0,O=n&&!r,D=C.exports.useCallback(K=>{if(n){K.stopPropagation(),K.preventDefault();return}K.currentTarget.focus(),l?.(K)},[n,l]),B=C.exports.useCallback(K=>{P&&ow(K)&&(K.preventDefault(),K.stopPropagation(),E(!1),T.remove(document,"keyup",B,!1))},[P,T]),$=C.exports.useCallback(K=>{if(u?.(K),n||K.defaultPrevented||K.metaKey||!ow(K.nativeEvent)||w)return;const G=i&&K.key==="Enter";o&&K.key===" "&&(K.preventDefault(),E(!0)),G&&(K.preventDefault(),K.currentTarget.click()),T.add(document,"keyup",B,!1)},[n,w,u,i,o,T,B]),W=C.exports.useCallback(K=>{if(h?.(K),n||K.defaultPrevented||K.metaKey||!ow(K.nativeEvent)||w)return;o&&K.key===" "&&(K.preventDefault(),E(!1),K.currentTarget.click())},[o,w,n,h]),j=C.exports.useCallback(K=>{K.button===0&&(E(!1),T.remove(document,"mouseup",j,!1))},[T]),te=C.exports.useCallback(K=>{if(K.button!==0)return;if(n){K.stopPropagation(),K.preventDefault();return}w||E(!0),K.currentTarget.focus({preventScroll:!0}),T.add(document,"mouseup",j,!1),a?.(K)},[n,w,a,T,j]),V=C.exports.useCallback(K=>{K.button===0&&(w||E(!1),s?.(K))},[s,w]),J=C.exports.useCallback(K=>{if(n){K.preventDefault();return}m?.(K)},[n,m]),re=C.exports.useCallback(K=>{P&&(K.preventDefault(),E(!1)),v?.(K)},[P,v]),ee=Wn(t,M);return w?{...S,ref:ee,type:"button","aria-disabled":O?void 0:n,disabled:O,onClick:D,onMouseDown:a,onMouseUp:s,onKeyUp:h,onKeyDown:u,onMouseOver:m,onMouseLeave:v}:{...S,ref:ee,role:"button","data-active":Fhe(P),"aria-disabled":n?"true":void 0,tabIndex:O?void 0:R,onClick:D,onMouseDown:te,onMouseUp:V,onKeyUp:W,onKeyDown:$,onMouseOver:J,onMouseLeave:re}}function Sz(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function bz(e){if(!Sz(e))return!1;const t=e.ownerDocument.defaultView??window;return e instanceof t.HTMLElement}function Whe(e){var t;return((t=xz(e))==null?void 0:t.defaultView)??window}function xz(e){return Sz(e)?e.ownerDocument:document}function Vhe(e){return xz(e).activeElement}var wz=e=>e.hasAttribute("tabindex"),Uhe=e=>wz(e)&&e.tabIndex===-1;function Ghe(e){return Boolean(e.getAttribute("disabled"))===!0||Boolean(e.getAttribute("aria-disabled"))===!0}function Cz(e){return e.parentElement&&Cz(e.parentElement)?!0:e.hidden}function jhe(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function _z(e){if(!bz(e)||Cz(e)||Ghe(e))return!1;const{localName:t}=e;if(["input","select","textarea","button"].indexOf(t)>=0)return!0;const r={a:()=>e.hasAttribute("href"),audio:()=>e.hasAttribute("controls"),video:()=>e.hasAttribute("controls")};return t in r?r[t]():jhe(e)?!0:wz(e)}function Yhe(e){return e?bz(e)&&_z(e)&&!Uhe(e):!1}var qhe=["input:not(:disabled):not([disabled])","select:not(:disabled):not([disabled])","textarea:not(:disabled):not([disabled])","embed","iframe","object","a[href]","area[href]","button:not(:disabled):not([disabled])","[tabindex]","audio[controls]","video[controls]","*[tabindex]:not([aria-disabled])","*[contenteditable]"],Khe=qhe.join(),Xhe=e=>e.offsetWidth>0&&e.offsetHeight>0;function kz(e){const t=Array.from(e.querySelectorAll(Khe));return t.unshift(e),t.filter(n=>_z(n)&&Xhe(n))}function Zhe(e){const t=e.current;if(!t)return!1;const n=Vhe(t);return!n||t.contains(n)?!1:!!Yhe(n)}function Qhe(e,t){const{shouldFocus:n,visible:r,focusRef:i}=t,o=n&&!r;fd(()=>{if(!o||Zhe(e))return;const a=i?.current||e.current;a&&requestAnimationFrame(()=>{a.focus()})},[o,e,i])}var Jhe={preventScroll:!0,shouldFocus:!1};function epe(e,t=Jhe){const{focusRef:n,preventScroll:r,shouldFocus:i,visible:o}=t,a=tpe(e)?e.current:e,s=i&&o,l=C.exports.useRef(s),u=C.exports.useRef(o);ks(()=>{!u.current&&o&&(l.current=s),u.current=o},[o,s]);const h=C.exports.useCallback(()=>{if(!(!o||!a||!l.current)&&(l.current=!1,!a.contains(document.activeElement)))if(n?.current)requestAnimationFrame(()=>{var g;(g=n.current)==null||g.focus({preventScroll:r})});else{const g=kz(a);g.length>0&&requestAnimationFrame(()=>{g[0].focus({preventScroll:r})})}},[o,r,a,n]);fd(()=>{h()},[h]),th(a,"transitionend",h)}function tpe(e){return"current"in e}var Oo="top",Ua="bottom",Ga="right",Do="left",Y8="auto",c2=[Oo,Ua,Ga,Do],Q0="start",Nv="end",npe="clippingParents",Ez="viewport",Xg="popper",rpe="reference",iA=c2.reduce(function(e,t){return e.concat([t+"-"+Q0,t+"-"+Nv])},[]),Pz=[].concat(c2,[Y8]).reduce(function(e,t){return e.concat([t,t+"-"+Q0,t+"-"+Nv])},[]),ipe="beforeRead",ope="read",ape="afterRead",spe="beforeMain",lpe="main",upe="afterMain",cpe="beforeWrite",dpe="write",fpe="afterWrite",hpe=[ipe,ope,ape,spe,lpe,upe,cpe,dpe,fpe];function Rl(e){return e?(e.nodeName||"").toLowerCase():null}function Ya(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function fh(e){var t=Ya(e).Element;return e instanceof t||e instanceof Element}function Fa(e){var t=Ya(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function q8(e){if(typeof ShadowRoot>"u")return!1;var t=Ya(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function ppe(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},i=t.attributes[n]||{},o=t.elements[n];!Fa(o)||!Rl(o)||(Object.assign(o.style,r),Object.keys(i).forEach(function(a){var s=i[a];s===!1?o.removeAttribute(a):o.setAttribute(a,s===!0?"":s)}))})}function gpe(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var i=t.elements[r],o=t.attributes[r]||{},a=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),s=a.reduce(function(l,u){return l[u]="",l},{});!Fa(i)||!Rl(i)||(Object.assign(i.style,s),Object.keys(o).forEach(function(l){i.removeAttribute(l)}))})}}const mpe={name:"applyStyles",enabled:!0,phase:"write",fn:ppe,effect:gpe,requires:["computeStyles"]};function Tl(e){return e.split("-")[0]}var ih=Math.max,i5=Math.min,J0=Math.round;function HC(){var e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Tz(){return!/^((?!chrome|android).)*safari/i.test(HC())}function e1(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),i=1,o=1;t&&Fa(e)&&(i=e.offsetWidth>0&&J0(r.width)/e.offsetWidth||1,o=e.offsetHeight>0&&J0(r.height)/e.offsetHeight||1);var a=fh(e)?Ya(e):window,s=a.visualViewport,l=!Tz()&&n,u=(r.left+(l&&s?s.offsetLeft:0))/i,h=(r.top+(l&&s?s.offsetTop:0))/o,g=r.width/i,m=r.height/o;return{width:g,height:m,top:h,right:u+g,bottom:h+m,left:u,x:u,y:h}}function K8(e){var t=e1(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function Lz(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&q8(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Pu(e){return Ya(e).getComputedStyle(e)}function vpe(e){return["table","td","th"].indexOf(Rl(e))>=0}function _d(e){return((fh(e)?e.ownerDocument:e.document)||window.document).documentElement}function RS(e){return Rl(e)==="html"?e:e.assignedSlot||e.parentNode||(q8(e)?e.host:null)||_d(e)}function oA(e){return!Fa(e)||Pu(e).position==="fixed"?null:e.offsetParent}function ype(e){var t=/firefox/i.test(HC()),n=/Trident/i.test(HC());if(n&&Fa(e)){var r=Pu(e);if(r.position==="fixed")return null}var i=RS(e);for(q8(i)&&(i=i.host);Fa(i)&&["html","body"].indexOf(Rl(i))<0;){var o=Pu(i);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return i;i=i.parentNode}return null}function d2(e){for(var t=Ya(e),n=oA(e);n&&vpe(n)&&Pu(n).position==="static";)n=oA(n);return n&&(Rl(n)==="html"||Rl(n)==="body"&&Pu(n).position==="static")?t:n||ype(e)||t}function X8(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Km(e,t,n){return ih(e,i5(t,n))}function Spe(e,t,n){var r=Km(e,t,n);return r>n?n:r}function Az(){return{top:0,right:0,bottom:0,left:0}}function Mz(e){return Object.assign({},Az(),e)}function Iz(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var bpe=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Mz(typeof t!="number"?t:Iz(t,c2))};function xpe(e){var t,n=e.state,r=e.name,i=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Tl(n.placement),l=X8(s),u=[Do,Ga].indexOf(s)>=0,h=u?"height":"width";if(!(!o||!a)){var g=bpe(i.padding,n),m=K8(o),v=l==="y"?Oo:Do,S=l==="y"?Ua:Ga,w=n.rects.reference[h]+n.rects.reference[l]-a[l]-n.rects.popper[h],k=a[l]-n.rects.reference[l],P=d2(o),E=P?l==="y"?P.clientHeight||0:P.clientWidth||0:0,T=w/2-k/2,M=g[v],R=E-m[h]-g[S],O=E/2-m[h]/2+T,D=Km(M,O,R),B=l;n.modifiersData[r]=(t={},t[B]=D,t.centerOffset=D-O,t)}}function wpe(e){var t=e.state,n=e.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!Lz(t.elements.popper,i)||(t.elements.arrow=i))}const Cpe={name:"arrow",enabled:!0,phase:"main",fn:xpe,effect:wpe,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function t1(e){return e.split("-")[1]}var _pe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function kpe(e){var t=e.x,n=e.y,r=window,i=r.devicePixelRatio||1;return{x:J0(t*i)/i||0,y:J0(n*i)/i||0}}function aA(e){var t,n=e.popper,r=e.popperRect,i=e.placement,o=e.variation,a=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,h=e.roundOffsets,g=e.isFixed,m=a.x,v=m===void 0?0:m,S=a.y,w=S===void 0?0:S,k=typeof h=="function"?h({x:v,y:w}):{x:v,y:w};v=k.x,w=k.y;var P=a.hasOwnProperty("x"),E=a.hasOwnProperty("y"),T=Do,M=Oo,R=window;if(u){var O=d2(n),D="clientHeight",B="clientWidth";if(O===Ya(n)&&(O=_d(n),Pu(O).position!=="static"&&s==="absolute"&&(D="scrollHeight",B="scrollWidth")),O=O,i===Oo||(i===Do||i===Ga)&&o===Nv){M=Ua;var $=g&&O===R&&R.visualViewport?R.visualViewport.height:O[D];w-=$-r.height,w*=l?1:-1}if(i===Do||(i===Oo||i===Ua)&&o===Nv){T=Ga;var W=g&&O===R&&R.visualViewport?R.visualViewport.width:O[B];v-=W-r.width,v*=l?1:-1}}var j=Object.assign({position:s},u&&_pe),te=h===!0?kpe({x:v,y:w}):{x:v,y:w};if(v=te.x,w=te.y,l){var V;return Object.assign({},j,(V={},V[M]=E?"0":"",V[T]=P?"0":"",V.transform=(R.devicePixelRatio||1)<=1?"translate("+v+"px, "+w+"px)":"translate3d("+v+"px, "+w+"px, 0)",V))}return Object.assign({},j,(t={},t[M]=E?w+"px":"",t[T]=P?v+"px":"",t.transform="",t))}function Epe(e){var t=e.state,n=e.options,r=n.gpuAcceleration,i=r===void 0?!0:r,o=n.adaptive,a=o===void 0?!0:o,s=n.roundOffsets,l=s===void 0?!0:s,u={placement:Tl(t.placement),variation:t1(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,aA(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,aA(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Ppe={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Epe,data:{}};var jy={passive:!0};function Tpe(e){var t=e.state,n=e.instance,r=e.options,i=r.scroll,o=i===void 0?!0:i,a=r.resize,s=a===void 0?!0:a,l=Ya(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&u.forEach(function(h){h.addEventListener("scroll",n.update,jy)}),s&&l.addEventListener("resize",n.update,jy),function(){o&&u.forEach(function(h){h.removeEventListener("scroll",n.update,jy)}),s&&l.removeEventListener("resize",n.update,jy)}}const Lpe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Tpe,data:{}};var Ape={left:"right",right:"left",bottom:"top",top:"bottom"};function Y3(e){return e.replace(/left|right|bottom|top/g,function(t){return Ape[t]})}var Mpe={start:"end",end:"start"};function sA(e){return e.replace(/start|end/g,function(t){return Mpe[t]})}function Z8(e){var t=Ya(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Q8(e){return e1(_d(e)).left+Z8(e).scrollLeft}function Ipe(e,t){var n=Ya(e),r=_d(e),i=n.visualViewport,o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;var u=Tz();(u||!u&&t==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s+Q8(e),y:l}}function Rpe(e){var t,n=_d(e),r=Z8(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=ih(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=ih(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+Q8(e),l=-r.scrollTop;return Pu(i||n).direction==="rtl"&&(s+=ih(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function J8(e){var t=Pu(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Rz(e){return["html","body","#document"].indexOf(Rl(e))>=0?e.ownerDocument.body:Fa(e)&&J8(e)?e:Rz(RS(e))}function Xm(e,t){var n;t===void 0&&(t=[]);var r=Rz(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=Ya(r),a=i?[o].concat(o.visualViewport||[],J8(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(Xm(RS(a)))}function WC(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Ope(e,t){var n=e1(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function lA(e,t,n){return t===Ez?WC(Ipe(e,n)):fh(t)?Ope(t,n):WC(Rpe(_d(e)))}function Dpe(e){var t=Xm(RS(e)),n=["absolute","fixed"].indexOf(Pu(e).position)>=0,r=n&&Fa(e)?d2(e):e;return fh(r)?t.filter(function(i){return fh(i)&&Lz(i,r)&&Rl(i)!=="body"}):[]}function Npe(e,t,n,r){var i=t==="clippingParents"?Dpe(e):[].concat(t),o=[].concat(i,[n]),a=o[0],s=o.reduce(function(l,u){var h=lA(e,u,r);return l.top=ih(h.top,l.top),l.right=i5(h.right,l.right),l.bottom=i5(h.bottom,l.bottom),l.left=ih(h.left,l.left),l},lA(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function Oz(e){var t=e.reference,n=e.element,r=e.placement,i=r?Tl(r):null,o=r?t1(r):null,a=t.x+t.width/2-n.width/2,s=t.y+t.height/2-n.height/2,l;switch(i){case Oo:l={x:a,y:t.y-n.height};break;case Ua:l={x:a,y:t.y+t.height};break;case Ga:l={x:t.x+t.width,y:s};break;case Do:l={x:t.x-n.width,y:s};break;default:l={x:t.x,y:t.y}}var u=i?X8(i):null;if(u!=null){var h=u==="y"?"height":"width";switch(o){case Q0:l[u]=l[u]-(t[h]/2-n[h]/2);break;case Nv:l[u]=l[u]+(t[h]/2-n[h]/2);break}}return l}function Bv(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=r===void 0?e.placement:r,o=n.strategy,a=o===void 0?e.strategy:o,s=n.boundary,l=s===void 0?npe:s,u=n.rootBoundary,h=u===void 0?Ez:u,g=n.elementContext,m=g===void 0?Xg:g,v=n.altBoundary,S=v===void 0?!1:v,w=n.padding,k=w===void 0?0:w,P=Mz(typeof k!="number"?k:Iz(k,c2)),E=m===Xg?rpe:Xg,T=e.rects.popper,M=e.elements[S?E:m],R=Npe(fh(M)?M:M.contextElement||_d(e.elements.popper),l,h,a),O=e1(e.elements.reference),D=Oz({reference:O,element:T,strategy:"absolute",placement:i}),B=WC(Object.assign({},T,D)),$=m===Xg?B:O,W={top:R.top-$.top+P.top,bottom:$.bottom-R.bottom+P.bottom,left:R.left-$.left+P.left,right:$.right-R.right+P.right},j=e.modifiersData.offset;if(m===Xg&&j){var te=j[i];Object.keys(W).forEach(function(V){var J=[Ga,Ua].indexOf(V)>=0?1:-1,re=[Oo,Ua].indexOf(V)>=0?"y":"x";W[V]+=te[re]*J})}return W}function Bpe(e,t){t===void 0&&(t={});var n=t,r=n.placement,i=n.boundary,o=n.rootBoundary,a=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?Pz:l,h=t1(r),g=h?s?iA:iA.filter(function(S){return t1(S)===h}):c2,m=g.filter(function(S){return u.indexOf(S)>=0});m.length===0&&(m=g);var v=m.reduce(function(S,w){return S[w]=Bv(e,{placement:w,boundary:i,rootBoundary:o,padding:a})[Tl(w)],S},{});return Object.keys(v).sort(function(S,w){return v[S]-v[w]})}function zpe(e){if(Tl(e)===Y8)return[];var t=Y3(e);return[sA(e),t,sA(t)]}function Fpe(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!0:a,l=n.fallbackPlacements,u=n.padding,h=n.boundary,g=n.rootBoundary,m=n.altBoundary,v=n.flipVariations,S=v===void 0?!0:v,w=n.allowedAutoPlacements,k=t.options.placement,P=Tl(k),E=P===k,T=l||(E||!S?[Y3(k)]:zpe(k)),M=[k].concat(T).reduce(function(Se,Me){return Se.concat(Tl(Me)===Y8?Bpe(t,{placement:Me,boundary:h,rootBoundary:g,padding:u,flipVariations:S,allowedAutoPlacements:w}):Me)},[]),R=t.rects.reference,O=t.rects.popper,D=new Map,B=!0,$=M[0],W=0;W=0,re=J?"width":"height",ee=Bv(t,{placement:j,boundary:h,rootBoundary:g,altBoundary:m,padding:u}),K=J?V?Ga:Do:V?Ua:Oo;R[re]>O[re]&&(K=Y3(K));var G=Y3(K),Z=[];if(o&&Z.push(ee[te]<=0),s&&Z.push(ee[K]<=0,ee[G]<=0),Z.every(function(Se){return Se})){$=j,B=!1;break}D.set(j,Z)}if(B)for(var ce=S?3:1,me=function(Me){var _e=M.find(function(Je){var Xe=D.get(Je);if(Xe)return Xe.slice(0,Me).every(function(ft){return ft})});if(_e)return $=_e,"break"},Re=ce;Re>0;Re--){var xe=me(Re);if(xe==="break")break}t.placement!==$&&(t.modifiersData[r]._skip=!0,t.placement=$,t.reset=!0)}}const $pe={name:"flip",enabled:!0,phase:"main",fn:Fpe,requiresIfExists:["offset"],data:{_skip:!1}};function uA(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function cA(e){return[Oo,Ga,Ua,Do].some(function(t){return e[t]>=0})}function Hpe(e){var t=e.state,n=e.name,r=t.rects.reference,i=t.rects.popper,o=t.modifiersData.preventOverflow,a=Bv(t,{elementContext:"reference"}),s=Bv(t,{altBoundary:!0}),l=uA(a,r),u=uA(s,i,o),h=cA(l),g=cA(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:h,hasPopperEscaped:g},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":g})}const Wpe={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Hpe};function Vpe(e,t,n){var r=Tl(e),i=[Do,Oo].indexOf(r)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,a=o[0],s=o[1];return a=a||0,s=(s||0)*i,[Do,Ga].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function Upe(e){var t=e.state,n=e.options,r=e.name,i=n.offset,o=i===void 0?[0,0]:i,a=Pz.reduce(function(h,g){return h[g]=Vpe(g,t.rects,o),h},{}),s=a[t.placement],l=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=a}const Gpe={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Upe};function jpe(e){var t=e.state,n=e.name;t.modifiersData[n]=Oz({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const Ype={name:"popperOffsets",enabled:!0,phase:"read",fn:jpe,data:{}};function qpe(e){return e==="x"?"y":"x"}function Kpe(e){var t=e.state,n=e.options,r=e.name,i=n.mainAxis,o=i===void 0?!0:i,a=n.altAxis,s=a===void 0?!1:a,l=n.boundary,u=n.rootBoundary,h=n.altBoundary,g=n.padding,m=n.tether,v=m===void 0?!0:m,S=n.tetherOffset,w=S===void 0?0:S,k=Bv(t,{boundary:l,rootBoundary:u,padding:g,altBoundary:h}),P=Tl(t.placement),E=t1(t.placement),T=!E,M=X8(P),R=qpe(M),O=t.modifiersData.popperOffsets,D=t.rects.reference,B=t.rects.popper,$=typeof w=="function"?w(Object.assign({},t.rects,{placement:t.placement})):w,W=typeof $=="number"?{mainAxis:$,altAxis:$}:Object.assign({mainAxis:0,altAxis:0},$),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,te={x:0,y:0};if(!!O){if(o){var V,J=M==="y"?Oo:Do,re=M==="y"?Ua:Ga,ee=M==="y"?"height":"width",K=O[M],G=K+k[J],Z=K-k[re],ce=v?-B[ee]/2:0,me=E===Q0?D[ee]:B[ee],Re=E===Q0?-B[ee]:-D[ee],xe=t.elements.arrow,Se=v&&xe?K8(xe):{width:0,height:0},Me=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Az(),_e=Me[J],Je=Me[re],Xe=Km(0,D[ee],Se[ee]),ft=T?D[ee]/2-ce-Xe-_e-W.mainAxis:me-Xe-_e-W.mainAxis,_t=T?-D[ee]/2+ce+Xe+Je+W.mainAxis:Re+Xe+Je+W.mainAxis,gt=t.elements.arrow&&d2(t.elements.arrow),dt=gt?M==="y"?gt.clientTop||0:gt.clientLeft||0:0,mt=(V=j?.[M])!=null?V:0,Pe=K+ft-mt-dt,et=K+_t-mt,Lt=Km(v?i5(G,Pe):G,K,v?ih(Z,et):Z);O[M]=Lt,te[M]=Lt-K}if(s){var it,St=M==="x"?Oo:Do,Yt=M==="x"?Ua:Ga,wt=O[R],Gt=R==="y"?"height":"width",ln=wt+k[St],on=wt-k[Yt],Oe=[Oo,Do].indexOf(P)!==-1,Ze=(it=j?.[R])!=null?it:0,Zt=Oe?ln:wt-D[Gt]-B[Gt]-Ze+W.altAxis,qt=Oe?wt+D[Gt]+B[Gt]-Ze-W.altAxis:on,ke=v&&Oe?Spe(Zt,wt,qt):Km(v?Zt:ln,wt,v?qt:on);O[R]=ke,te[R]=ke-wt}t.modifiersData[r]=te}}const Xpe={name:"preventOverflow",enabled:!0,phase:"main",fn:Kpe,requiresIfExists:["offset"]};function Zpe(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Qpe(e){return e===Ya(e)||!Fa(e)?Z8(e):Zpe(e)}function Jpe(e){var t=e.getBoundingClientRect(),n=J0(t.width)/e.offsetWidth||1,r=J0(t.height)/e.offsetHeight||1;return n!==1||r!==1}function e0e(e,t,n){n===void 0&&(n=!1);var r=Fa(t),i=Fa(t)&&Jpe(t),o=_d(t),a=e1(e,i,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((Rl(t)!=="body"||J8(o))&&(s=Qpe(t)),Fa(t)?(l=e1(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=Q8(o))),{x:a.left+s.scrollLeft-l.x,y:a.top+s.scrollTop-l.y,width:a.width,height:a.height}}function t0e(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function i(o){n.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var l=t.get(s);l&&i(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||i(o)}),r}function n0e(e){var t=t0e(e);return hpe.reduce(function(n,r){return n.concat(t.filter(function(i){return i.phase===r}))},[])}function r0e(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function i0e(e){var t=e.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var dA={placement:"bottom",modifiers:[],strategy:"absolute"};function fA(){for(var e=arguments.length,t=new Array(e),n=0;n({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),Wr={arrowShadowColor:Rp("--popper-arrow-shadow-color"),arrowSize:Rp("--popper-arrow-size","8px"),arrowSizeHalf:Rp("--popper-arrow-size-half"),arrowBg:Rp("--popper-arrow-bg"),transformOrigin:Rp("--popper-transform-origin"),arrowOffset:Rp("--popper-arrow-offset")};function l0e(e){if(e.includes("top"))return"1px 1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("bottom"))return"-1px -1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("right"))return"-1px 1px 1px 0 var(--popper-arrow-shadow-color)";if(e.includes("left"))return"1px -1px 1px 0 var(--popper-arrow-shadow-color)"}var u0e={top:"bottom center","top-start":"bottom left","top-end":"bottom right",bottom:"top center","bottom-start":"top left","bottom-end":"top right",left:"right center","left-start":"right top","left-end":"right bottom",right:"left center","right-start":"left top","right-end":"left bottom"},c0e=e=>u0e[e],hA={scroll:!0,resize:!0};function d0e(e){let t;return typeof e=="object"?t={enabled:!0,options:{...hA,...e}}:t={enabled:e,options:hA},t}var f0e={name:"matchWidth",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:({state:e})=>{e.styles.popper.width=`${e.rects.reference.width}px`},effect:({state:e})=>()=>{const t=e.elements.reference;e.elements.popper.style.width=`${t.offsetWidth}px`}},h0e={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{pA(e)},effect:({state:e})=>()=>{pA(e)}},pA=e=>{e.elements.popper.style.setProperty(Wr.transformOrigin.var,c0e(e.placement))},p0e={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{g0e(e)}},g0e=e=>{var t;if(!e.placement)return;const n=m0e(e.placement);if(((t=e.elements)==null?void 0:t.arrow)&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:Wr.arrowSize.varRef,height:Wr.arrowSize.varRef,zIndex:-1});const r={[Wr.arrowSizeHalf.var]:`calc(${Wr.arrowSize.varRef} / 2)`,[Wr.arrowOffset.var]:`calc(${Wr.arrowSizeHalf.varRef} * -1)`};for(const i in r)e.elements.arrow.style.setProperty(i,r[i])}},m0e=e=>{if(e.startsWith("top"))return{property:"bottom",value:Wr.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:Wr.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:Wr.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:Wr.arrowOffset.varRef}},v0e={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{gA(e)},effect:({state:e})=>()=>{gA(e)}},gA=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");!t||Object.assign(t.style,{transform:"rotate(45deg)",background:Wr.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:l0e(e.placement)})},y0e={"start-start":{ltr:"left-start",rtl:"right-start"},"start-end":{ltr:"left-end",rtl:"right-end"},"end-start":{ltr:"right-start",rtl:"left-start"},"end-end":{ltr:"right-end",rtl:"left-end"},start:{ltr:"left",rtl:"right"},end:{ltr:"right",rtl:"left"}},S0e={"auto-start":"auto-end","auto-end":"auto-start","top-start":"top-end","top-end":"top-start","bottom-start":"bottom-end","bottom-end":"bottom-start"};function b0e(e,t="ltr"){var n;const r=((n=y0e[e])==null?void 0:n[t])||e;return t==="ltr"?r:S0e[e]??r}function Dz(e={}){const{enabled:t=!0,modifiers:n,placement:r="bottom",strategy:i="absolute",arrowPadding:o=8,eventListeners:a=!0,offset:s,gutter:l=8,flip:u=!0,boundary:h="clippingParents",preventOverflow:g=!0,matchWidth:m,direction:v="ltr"}=e,S=C.exports.useRef(null),w=C.exports.useRef(null),k=C.exports.useRef(null),P=b0e(r,v),E=C.exports.useRef(()=>{}),T=C.exports.useCallback(()=>{var W;!t||!S.current||!w.current||((W=E.current)==null||W.call(E),k.current=s0e(S.current,w.current,{placement:P,modifiers:[v0e,p0e,h0e,{...f0e,enabled:!!m},{name:"eventListeners",...d0e(a)},{name:"arrow",options:{padding:o}},{name:"offset",options:{offset:s??[0,l]}},{name:"flip",enabled:!!u,options:{padding:8}},{name:"preventOverflow",enabled:!!g,options:{boundary:h}},...n??[]],strategy:i}),k.current.forceUpdate(),E.current=k.current.destroy)},[P,t,n,m,a,o,s,l,u,g,h,i]);C.exports.useEffect(()=>()=>{var W;!S.current&&!w.current&&((W=k.current)==null||W.destroy(),k.current=null)},[]);const M=C.exports.useCallback(W=>{S.current=W,T()},[T]),R=C.exports.useCallback((W={},j=null)=>({...W,ref:Wn(M,j)}),[M]),O=C.exports.useCallback(W=>{w.current=W,T()},[T]),D=C.exports.useCallback((W={},j=null)=>({...W,ref:Wn(O,j),style:{...W.style,position:i,minWidth:m?void 0:"max-content",inset:"0 auto auto 0"}}),[i,O,m]),B=C.exports.useCallback((W={},j=null)=>{const{size:te,shadowColor:V,bg:J,style:re,...ee}=W;return{...ee,ref:j,"data-popper-arrow":"",style:x0e(W)}},[]),$=C.exports.useCallback((W={},j=null)=>({...W,ref:j,"data-popper-arrow-inner":""}),[]);return{update(){var W;(W=k.current)==null||W.update()},forceUpdate(){var W;(W=k.current)==null||W.forceUpdate()},transformOrigin:Wr.transformOrigin.varRef,referenceRef:M,popperRef:O,getPopperProps:D,getArrowProps:B,getArrowInnerProps:$,getReferenceProps:R}}function x0e(e){const{size:t,shadowColor:n,bg:r,style:i}=e,o={...i,position:"absolute"};return t&&(o["--popper-arrow-size"]=t),n&&(o["--popper-arrow-shadow-color"]=n),r&&(o["--popper-arrow-bg"]=r),o}function Nz(e={}){const{onClose:t,onOpen:n,isOpen:r,id:i}=e,o=dr(n),a=dr(t),[s,l]=C.exports.useState(e.defaultIsOpen||!1),u=r!==void 0?r:s,h=r!==void 0,g=C.exports.useId(),m=i??`disclosure-${g}`,v=C.exports.useCallback(()=>{h||l(!1),a?.()},[h,a]),S=C.exports.useCallback(()=>{h||l(!0),o?.()},[h,o]),w=C.exports.useCallback(()=>{u?v():S()},[u,S,v]);function k(E={}){return{...E,"aria-expanded":u,"aria-controls":m,onClick(T){var M;(M=E.onClick)==null||M.call(E,T),w()}}}function P(E={}){return{...E,hidden:!u,id:m}}return{isOpen:u,onOpen:S,onClose:v,onToggle:w,isControlled:h,getButtonProps:k,getDisclosureProps:P}}function w0e(e){const{isOpen:t,ref:n}=e,[r,i]=C.exports.useState(t),[o,a]=C.exports.useState(!1);return C.exports.useEffect(()=>{o||(i(t),a(!0))},[t,o,r]),th(()=>n.current,"animationend",()=>{i(t)}),{present:!(t?!1:!r),onComplete(){var l;const u=Whe(n.current),h=new u.CustomEvent("animationend",{bubbles:!0});(l=n.current)==null||l.dispatchEvent(h)}}}function Bz(e){const{wasSelected:t,enabled:n,isSelected:r,mode:i="unmount"}=e;return!!(!n||r||i==="keepMounted"&&t)}var[C0e,_0e]=_n({strict:!1,name:"PortalManagerContext"});function zz(e){const{children:t,zIndex:n}=e;return b(C0e,{value:{zIndex:n},children:t})}zz.displayName="PortalManager";var[Fz,k0e]=_n({strict:!1,name:"PortalContext"}),e_="chakra-portal",E0e=".chakra-portal",P0e=e=>b("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),T0e=e=>{const{appendToParentPortal:t,children:n}=e,[r,i]=C.exports.useState(null),o=C.exports.useRef(null),[,a]=C.exports.useState({});C.exports.useEffect(()=>a({}),[]);const s=k0e(),l=_0e();ks(()=>{if(!r)return;const h=r.ownerDocument,g=t?s??h.body:h.body;if(!g)return;o.current=h.createElement("div"),o.current.className=e_,g.appendChild(o.current),a({});const m=o.current;return()=>{g.contains(m)&&g.removeChild(m)}},[r]);const u=l?.zIndex?b(P0e,{zIndex:l?.zIndex,children:n}):n;return o.current?zl.exports.createPortal(b(Fz,{value:o.current,children:u}),o.current):b("span",{ref:h=>{h&&i(h)}})},L0e=e=>{const{children:t,containerRef:n,appendToParentPortal:r}=e,i=n.current,o=i??(typeof window<"u"?document.body:void 0),a=C.exports.useMemo(()=>{const l=i?.ownerDocument.createElement("div");return l&&(l.className=e_),l},[i]),[,s]=C.exports.useState({});return ks(()=>s({}),[]),ks(()=>{if(!(!a||!o))return o.appendChild(a),()=>{o.removeChild(a)}},[a,o]),o&&a?zl.exports.createPortal(b(Fz,{value:r?a:null,children:t}),a):null};function wh(e){const{containerRef:t,...n}=e;return t?b(L0e,{containerRef:t,...n}):b(T0e,{...n})}wh.defaultProps={appendToParentPortal:!0};wh.className=e_;wh.selector=E0e;wh.displayName="Portal";var A0e=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Op=new WeakMap,Yy=new WeakMap,qy={},aw=0,$z=function(e){return e&&(e.host||$z(e.parentNode))},M0e=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=$z(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return Boolean(n)})},I0e=function(e,t,n,r){var i=M0e(t,Array.isArray(e)?e:[e]);qy[n]||(qy[n]=new WeakMap);var o=qy[n],a=[],s=new Set,l=new Set(i),u=function(g){!g||s.has(g)||(s.add(g),u(g.parentNode))};i.forEach(u);var h=function(g){!g||l.has(g)||Array.prototype.forEach.call(g.children,function(m){if(s.has(m))h(m);else{var v=m.getAttribute(r),S=v!==null&&v!=="false",w=(Op.get(m)||0)+1,k=(o.get(m)||0)+1;Op.set(m,w),o.set(m,k),a.push(m),w===1&&S&&Yy.set(m,!0),k===1&&m.setAttribute(n,"true"),S||m.setAttribute(r,"true")}})};return h(t),s.clear(),aw++,function(){a.forEach(function(g){var m=Op.get(g)-1,v=o.get(g)-1;Op.set(g,m),o.set(g,v),m||(Yy.has(g)||g.removeAttribute(r),Yy.delete(g)),v||g.removeAttribute(n)}),aw--,aw||(Op=new WeakMap,Op=new WeakMap,Yy=new WeakMap,qy={})}},Hz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),i=t||A0e(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll("[aria-live]"))),I0e(r,i,n,"aria-hidden")):function(){return null}};function t_(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var Dn={exports:{}},R0e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",O0e=R0e,D0e=O0e;function Wz(){}function Vz(){}Vz.resetWarningCache=Wz;var N0e=function(){function e(r,i,o,a,s,l){if(l!==D0e){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}e.isRequired=e;function t(){return e}var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:Vz,resetWarningCache:Wz};return n.PropTypes=n,n};Dn.exports=N0e();var VC="data-focus-lock",Uz="data-focus-lock-disabled",B0e="data-no-focus-lock",z0e="data-autofocus-inside",F0e="data-no-autofocus";function $0e(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function H0e(e,t){var n=C.exports.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var i=n.value;i!==r&&(n.value=r,n.callback(r,i))}}}})[0];return n.callback=t,n.facade}function Gz(e,t){return H0e(t||null,function(n){return e.forEach(function(r){return $0e(r,n)})})}var sw={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"};function jz(e){return e}function Yz(e,t){t===void 0&&(t=jz);var n=[],r=!1,i={read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(o){var a=t(o,r);return n.push(a),function(){n=n.filter(function(s){return s!==a})}},assignSyncMedium:function(o){for(r=!0;n.length;){var a=n;n=[],a.forEach(o)}n={push:function(s){return o(s)},filter:function(){return n}}},assignMedium:function(o){r=!0;var a=[];if(n.length){var s=n;n=[],s.forEach(o),a=n}var l=function(){var h=a;a=[],h.forEach(o)},u=function(){return Promise.resolve().then(l)};u(),n={push:function(h){a.push(h),u()},filter:function(h){return a=a.filter(h),n}}}};return i}function n_(e,t){return t===void 0&&(t=jz),Yz(e,t)}function qz(e){e===void 0&&(e={});var t=Yz(null);return t.options=vl({async:!0,ssr:!1},e),t}var Kz=function(e){var t=e.sideCar,n=BB(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw new Error("Sidecar medium not found");return b(r,{...vl({},n)})};Kz.isSideCarExport=!0;function W0e(e,t){return e.useMedium(t),Kz}var Xz=n_({},function(e){var t=e.target,n=e.currentTarget;return{target:t,currentTarget:n}}),Zz=n_(),V0e=n_(),U0e=qz({async:!0}),G0e=[],r_=C.exports.forwardRef(function(t,n){var r,i=C.exports.useState(),o=i[0],a=i[1],s=C.exports.useRef(),l=C.exports.useRef(!1),u=C.exports.useRef(null),h=t.children,g=t.disabled,m=t.noFocusGuards,v=t.persistentFocus,S=t.crossFrame,w=t.autoFocus;t.allowTextSelection;var k=t.group,P=t.className,E=t.whiteList,T=t.hasPositiveIndices,M=t.shards,R=M===void 0?G0e:M,O=t.as,D=O===void 0?"div":O,B=t.lockProps,$=B===void 0?{}:B,W=t.sideCar,j=t.returnFocus,te=t.focusOptions,V=t.onActivation,J=t.onDeactivation,re=C.exports.useState({}),ee=re[0],K=C.exports.useCallback(function(){u.current=u.current||document&&document.activeElement,s.current&&V&&V(s.current),l.current=!0},[V]),G=C.exports.useCallback(function(){l.current=!1,J&&J(s.current)},[J]);C.exports.useEffect(function(){g||(u.current=null)},[]);var Z=C.exports.useCallback(function(Je){var Xe=u.current;if(Xe&&Xe.focus){var ft=typeof j=="function"?j(Xe):j;if(ft){var _t=typeof ft=="object"?ft:void 0;u.current=null,Je?Promise.resolve().then(function(){return Xe.focus(_t)}):Xe.focus(_t)}}},[j]),ce=C.exports.useCallback(function(Je){l.current&&Xz.useMedium(Je)},[]),me=Zz.useMedium,Re=C.exports.useCallback(function(Je){s.current!==Je&&(s.current=Je,a(Je))},[]),xe=Mn((r={},r[Uz]=g&&"disabled",r[VC]=k,r),$),Se=m!==!0,Me=Se&&m!=="tail",_e=Gz([n,Re]);return Q(An,{children:[Se&&[b("div",{"data-focus-guard":!0,tabIndex:g?-1:0,style:sw},"guard-first"),T?b("div",{"data-focus-guard":!0,tabIndex:g?-1:1,style:sw},"guard-nearest"):null],!g&&b(W,{id:ee,sideCar:U0e,observed:o,disabled:g,persistentFocus:v,crossFrame:S,autoFocus:w,whiteList:E,shards:R,onActivation:K,onDeactivation:G,returnFocus:Z,focusOptions:te}),b(D,{ref:_e,...xe,className:P,onBlur:me,onFocus:ce,children:h}),Me&&b("div",{"data-focus-guard":!0,tabIndex:g?-1:0,style:sw})]})});r_.propTypes={};r_.defaultProps={children:void 0,disabled:!1,returnFocus:!1,focusOptions:void 0,noFocusGuards:!1,autoFocus:!0,persistentFocus:!1,crossFrame:!0,hasPositiveIndices:void 0,allowTextSelection:void 0,group:void 0,className:void 0,whiteList:void 0,shards:void 0,as:"div",lockProps:{},onActivation:void 0,onDeactivation:void 0};const Qz=r_;function UC(e,t){return UC=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,i){return r.__proto__=i,r},UC(e,t)}function i_(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,UC(e,t)}function Jz(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j0e(e,t){function n(r){return r.displayName||r.name||"Component"}return function(i){var o=[],a;function s(){a=e(o.map(function(u){return u.props})),t(a)}var l=function(u){i_(h,u);function h(){return u.apply(this,arguments)||this}h.peek=function(){return a};var g=h.prototype;return g.componentDidMount=function(){o.push(this),s()},g.componentDidUpdate=function(){s()},g.componentWillUnmount=function(){var v=o.indexOf(this);o.splice(v,1),s()},g.render=function(){return b(i,{...this.props})},h}(C.exports.PureComponent);return Jz(l,"displayName","SideEffect("+n(i)+")"),l}}var $l=function(e){for(var t=Array(e.length),n=0;n=0}).sort(e1e)},t1e=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],a_=t1e.join(","),n1e="".concat(a_,", [data-focus-guard]"),lF=function(e,t){var n;return $l(((n=e.shadowRoot)===null||n===void 0?void 0:n.children)||e.children).reduce(function(r,i){return r.concat(i.matches(t?n1e:a_)?[i]:[],lF(i))},[])},s_=function(e,t){return e.reduce(function(n,r){return n.concat(lF(r,t),r.parentNode?$l(r.parentNode.querySelectorAll(a_)).filter(function(i){return i===r}):[])},[])},r1e=function(e){var t=e.querySelectorAll("[".concat(z0e,"]"));return $l(t).map(function(n){return s_([n])}).reduce(function(n,r){return n.concat(r)},[])},l_=function(e,t){return $l(e).filter(function(n){return nF(t,n)}).filter(function(n){return Z0e(n)})},mA=function(e,t){return t===void 0&&(t=new Map),$l(e).filter(function(n){return rF(t,n)})},jC=function(e,t,n){return sF(l_(s_(e,n),t),!0,n)},vA=function(e,t){return sF(l_(s_(e),t),!1)},i1e=function(e,t){return l_(r1e(e),t)},zv=function(e,t){return e.shadowRoot?zv(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:$l(e.children).some(function(n){return zv(n,t)})},o1e=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(i),(o&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(a,s){return!t.has(s)})},uF=function(e){return e.parentNode?uF(e.parentNode):e},u_=function(e){var t=GC(e);return t.filter(Boolean).reduce(function(n,r){var i=r.getAttribute(VC);return n.push.apply(n,i?o1e($l(uF(r).querySelectorAll("[".concat(VC,'="').concat(i,'"]:not([').concat(Uz,'="disabled"])')))):[r]),n},[])},cF=function(e){return e.activeElement?e.activeElement.shadowRoot?cF(e.activeElement.shadowRoot):e.activeElement:void 0},c_=function(){return document.activeElement?document.activeElement.shadowRoot?cF(document.activeElement.shadowRoot):document.activeElement:void 0},a1e=function(e){return e===document.activeElement},s1e=function(e){return Boolean($l(e.querySelectorAll("iframe")).some(function(t){return a1e(t)}))},dF=function(e){var t=document&&c_();return!t||t.dataset&&t.dataset.focusGuard?!1:u_(e).some(function(n){return zv(n,t)||s1e(n)})},l1e=function(){var e=document&&c_();return e?$l(document.querySelectorAll("[".concat(B0e,"]"))).some(function(t){return zv(t,e)}):!1},u1e=function(e,t){return t.filter(aF).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},d_=function(e,t){return aF(e)&&e.name?u1e(e,t):e},c1e=function(e){var t=new Set;return e.forEach(function(n){return t.add(d_(n,e))}),e.filter(function(n){return t.has(n)})},yA=function(e){return e[0]&&e.length>1?d_(e[0],e):e[0]},SA=function(e,t){return e.length>1?e.indexOf(d_(e[t],e)):t},fF="NEW_FOCUS",d1e=function(e,t,n,r){var i=e.length,o=e[0],a=e[i-1],s=o_(n);if(!(n&&e.indexOf(n)>=0)){var l=n!==void 0?t.indexOf(n):-1,u=r?t.indexOf(r):l,h=r?e.indexOf(r):-1,g=l-u,m=t.indexOf(o),v=t.indexOf(a),S=c1e(t),w=n!==void 0?S.indexOf(n):-1,k=w-(r?S.indexOf(r):l),P=SA(e,0),E=SA(e,i-1);if(l===-1||h===-1)return fF;if(!g&&h>=0)return h;if(l<=m&&s&&Math.abs(g)>1)return E;if(l>=v&&s&&Math.abs(g)>1)return P;if(g&&Math.abs(k)>1)return h;if(l<=m)return E;if(l>v)return P;if(g)return Math.abs(g)>1?h:(i+h+g)%i}},f1e=function(e){return function(t){var n,r=(n=iF(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},h1e=function(e,t,n){var r=e.map(function(o){var a=o.node;return a}),i=mA(r.filter(f1e(n)));return i&&i.length?yA(i):yA(mA(t))},YC=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&YC(e.parentNode.host||e.parentNode,t),t},lw=function(e,t){for(var n=YC(e),r=YC(t),i=0;i=0)return o}return!1},hF=function(e,t,n){var r=GC(e),i=GC(t),o=r[0],a=!1;return i.filter(Boolean).forEach(function(s){a=lw(a||s,s)||a,n.filter(Boolean).forEach(function(l){var u=lw(o,l);u&&(!a||zv(u,a)?a=u:a=lw(u,a))})}),a},p1e=function(e,t){return e.reduce(function(n,r){return n.concat(i1e(r,t))},[])},g1e=function(e,t){var n=new Map;return t.forEach(function(r){return n.set(r.node,r)}),e.map(function(r){return n.get(r)}).filter(J0e)},m1e=function(e,t){var n=document&&c_(),r=u_(e).filter(o5),i=hF(n||e,e,r),o=new Map,a=vA(r,o),s=jC(r,o).filter(function(m){var v=m.node;return o5(v)});if(!(!s[0]&&(s=a,!s[0]))){var l=vA([i],o).map(function(m){var v=m.node;return v}),u=g1e(l,s),h=u.map(function(m){var v=m.node;return v}),g=d1e(h,l,n,t);return g===fF?{node:h1e(a,h,p1e(r,o))}:g===void 0?g:u[g]}},v1e=function(e){var t=u_(e).filter(o5),n=hF(e,e,t),r=new Map,i=jC([n],r,!0),o=jC(t,r).filter(function(a){var s=a.node;return o5(s)}).map(function(a){var s=a.node;return s});return i.map(function(a){var s=a.node,l=a.index;return{node:s,index:l,lockItem:o.indexOf(s)>=0,guard:o_(s)}})},y1e=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},uw=0,cw=!1,S1e=function(e,t,n){n===void 0&&(n={});var r=m1e(e,t);if(!cw&&r){if(uw>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),cw=!0,setTimeout(function(){cw=!1},1);return}uw++,y1e(r.node,n.focusOptions),uw--}};const pF=S1e;function gF(e){var t=window,n=t.setImmediate;typeof n<"u"?n(e):setTimeout(e,1)}var b1e=function(){return document&&document.activeElement===document.body},x1e=function(){return b1e()||l1e()},I0=null,s0=null,R0=null,Fv=!1,w1e=function(){return!0},C1e=function(t){return(I0.whiteList||w1e)(t)},_1e=function(t,n){R0={observerNode:t,portaledElement:n}},k1e=function(t){return R0&&R0.portaledElement===t};function bA(e,t,n,r){var i=null,o=e;do{var a=r[o];if(a.guard)a.node.dataset.focusAutoGuard&&(i=a);else if(a.lockItem){if(o!==e)return;i=null}else break}while((o+=n)!==t);i&&(i.node.tabIndex=0)}var E1e=function(t){return t&&"current"in t?t.current:t},P1e=function(t){return t?Boolean(Fv):Fv==="meanwhile"},T1e=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},L1e=function(t,n){return n.some(function(r){return T1e(t,r,r)})},a5=function(){var t=!1;if(I0){var n=I0,r=n.observed,i=n.persistentFocus,o=n.autoFocus,a=n.shards,s=n.crossFrame,l=n.focusOptions,u=r||R0&&R0.portaledElement,h=document&&document.activeElement;if(u){var g=[u].concat(a.map(E1e).filter(Boolean));if((!h||C1e(h))&&(i||P1e(s)||!x1e()||!s0&&o)&&(u&&!(dF(g)||h&&L1e(h,g)||k1e(h))&&(document&&!s0&&h&&!o?(h.blur&&h.blur(),document.body.focus()):(t=pF(g,s0,{focusOptions:l}),R0={})),Fv=!1,s0=document&&document.activeElement),document){var m=document&&document.activeElement,v=v1e(g),S=v.map(function(w){var k=w.node;return k}).indexOf(m);S>-1&&(v.filter(function(w){var k=w.guard,P=w.node;return k&&P.dataset.focusAutoGuard}).forEach(function(w){var k=w.node;return k.removeAttribute("tabIndex")}),bA(S,v.length,1,v),bA(S,-1,-1,v))}}}return t},mF=function(t){a5()&&t&&(t.stopPropagation(),t.preventDefault())},f_=function(){return gF(a5)},A1e=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||_1e(r,n)},M1e=function(){return null},vF=function(){Fv="just",setTimeout(function(){Fv="meanwhile"},0)},I1e=function(){document.addEventListener("focusin",mF),document.addEventListener("focusout",f_),window.addEventListener("blur",vF)},R1e=function(){document.removeEventListener("focusin",mF),document.removeEventListener("focusout",f_),window.removeEventListener("blur",vF)};function O1e(e){return e.filter(function(t){var n=t.disabled;return!n})}function D1e(e){var t=e.slice(-1)[0];t&&!I0&&I1e();var n=I0,r=n&&t&&t.id===n.id;I0=t,n&&!r&&(n.onDeactivation(),e.filter(function(i){var o=i.id;return o===n.id}).length||n.returnFocus(!t)),t?(s0=null,(!r||n.observed!==t.observed)&&t.onActivation(),a5(),gF(a5)):(R1e(),s0=null)}Xz.assignSyncMedium(A1e);Zz.assignMedium(f_);V0e.assignMedium(function(e){return e({moveFocusInside:pF,focusInside:dF})});const N1e=j0e(O1e,D1e)(M1e);var yF=C.exports.forwardRef(function(t,n){return b(Qz,{sideCar:N1e,ref:n,...t})}),SF=Qz.propTypes||{};SF.sideCar;t_(SF,["sideCar"]);yF.propTypes={};const B1e=yF;var bF=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:i,children:o,isDisabled:a,autoFocus:s,persistentFocus:l,lockFocusAcrossFrames:u}=e,h=C.exports.useCallback(()=>{t?.current?t.current.focus():r?.current&&kz(r.current).length===0&&requestAnimationFrame(()=>{var S;(S=r.current)==null||S.focus()})},[t,r]),g=C.exports.useCallback(()=>{var v;(v=n?.current)==null||v.focus()},[n]);return b(B1e,{crossFrame:u,persistentFocus:l,autoFocus:s,disabled:a,onActivation:h,onDeactivation:g,returnFocus:i&&!n,children:o})};bF.displayName="FocusLock";var q3="right-scroll-bar-position",K3="width-before-scroll-bar",z1e="with-scroll-bars-hidden",F1e="--removed-body-scroll-bar-size",xF=qz(),dw=function(){},OS=C.exports.forwardRef(function(e,t){var n=C.exports.useRef(null),r=C.exports.useState({onScrollCapture:dw,onWheelCapture:dw,onTouchMoveCapture:dw}),i=r[0],o=r[1],a=e.forwardProps,s=e.children,l=e.className,u=e.removeScrollBar,h=e.enabled,g=e.shards,m=e.sideCar,v=e.noIsolation,S=e.inert,w=e.allowPinchZoom,k=e.as,P=k===void 0?"div":k,E=BB(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),T=m,M=Gz([n,t]),R=vl(vl({},E),i);return Q(An,{children:[h&&b(T,{sideCar:xF,removeScrollBar:u,shards:g,noIsolation:v,inert:S,setCallbacks:o,allowPinchZoom:!!w,lockRef:n}),a?C.exports.cloneElement(C.exports.Children.only(s),vl(vl({},R),{ref:M})):b(P,{...vl({},R,{className:l,ref:M}),children:s})]})});OS.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};OS.classNames={fullWidth:K3,zeroRight:q3};var $1e=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function H1e(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=$1e();return t&&e.setAttribute("nonce",t),e}function W1e(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function V1e(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var U1e=function(){var e=0,t=null;return{add:function(n){e==0&&(t=H1e())&&(W1e(t,n),V1e(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},G1e=function(){var e=U1e();return function(t,n){C.exports.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},wF=function(){var e=G1e(),t=function(n){var r=n.styles,i=n.dynamic;return e(r,i),null};return t},j1e={left:0,top:0,right:0,gap:0},fw=function(e){return parseInt(e||"",10)||0},Y1e=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],i=t[e==="padding"?"paddingRight":"marginRight"];return[fw(n),fw(r),fw(i)]},q1e=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return j1e;var t=Y1e(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},K1e=wF(),X1e=function(e,t,n,r){var i=e.left,o=e.top,a=e.right,s=e.gap;return n===void 0&&(n="margin"),` + .`.concat(z1e,` { + overflow: hidden `).concat(r,`; + padding-right: `).concat(s,"px ").concat(r,`; + } + body { + overflow: hidden `).concat(r,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` + padding-left: `.concat(i,`px; + padding-top: `).concat(o,`px; + padding-right: `).concat(a,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(s,"px ").concat(r,`; + `),n==="padding"&&"padding-right: ".concat(s,"px ").concat(r,";")].filter(Boolean).join(""),` + } + + .`).concat(q3,` { + right: `).concat(s,"px ").concat(r,`; + } + + .`).concat(K3,` { + margin-right: `).concat(s,"px ").concat(r,`; + } + + .`).concat(q3," .").concat(q3,` { + right: 0 `).concat(r,`; + } + + .`).concat(K3," .").concat(K3,` { + margin-right: 0 `).concat(r,`; + } + + body { + `).concat(F1e,": ").concat(s,`px; + } +`)},Z1e=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?"margin":r,o=C.exports.useMemo(function(){return q1e(i)},[i]);return b(K1e,{styles:X1e(o,!t,i,n?"":"!important")})},qC=!1;if(typeof window<"u")try{var Ky=Object.defineProperty({},"passive",{get:function(){return qC=!0,!0}});window.addEventListener("test",Ky,Ky),window.removeEventListener("test",Ky,Ky)}catch{qC=!1}var Dp=qC?{passive:!1}:!1,Q1e=function(e){return e.tagName==="TEXTAREA"},CF=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Q1e(e)&&n[t]==="visible")},J1e=function(e){return CF(e,"overflowY")},ege=function(e){return CF(e,"overflowX")},xA=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=_F(e,n);if(r){var i=kF(e,n),o=i[1],a=i[2];if(o>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},tge=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},nge=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},_F=function(e,t){return e==="v"?J1e(t):ege(t)},kF=function(e,t){return e==="v"?tge(t):nge(t)},rge=function(e,t){return e==="h"&&t==="rtl"?-1:1},ige=function(e,t,n,r,i){var o=rge(e,window.getComputedStyle(t).direction),a=o*r,s=n.target,l=t.contains(s),u=!1,h=a>0,g=0,m=0;do{var v=kF(e,s),S=v[0],w=v[1],k=v[2],P=w-k-o*S;(S||P)&&_F(e,s)&&(g+=P,m+=S),s=s.parentNode}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(h&&(i&&g===0||!i&&a>g)||!h&&(i&&m===0||!i&&-a>m))&&(u=!0),u},Xy=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},wA=function(e){return[e.deltaX,e.deltaY]},CA=function(e){return e&&"current"in e?e.current:e},oge=function(e,t){return e[0]===t[0]&&e[1]===t[1]},age=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},sge=0,Np=[];function lge(e){var t=C.exports.useRef([]),n=C.exports.useRef([0,0]),r=C.exports.useRef(),i=C.exports.useState(sge++)[0],o=C.exports.useState(function(){return wF()})[0],a=C.exports.useRef(e);C.exports.useEffect(function(){a.current=e},[e]),C.exports.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var w=IC([e.lockRef.current],(e.shards||[]).map(CA),!0).filter(Boolean);return w.forEach(function(k){return k.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),w.forEach(function(k){return k.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var s=C.exports.useCallback(function(w,k){if("touches"in w&&w.touches.length===2)return!a.current.allowPinchZoom;var P=Xy(w),E=n.current,T="deltaX"in w?w.deltaX:E[0]-P[0],M="deltaY"in w?w.deltaY:E[1]-P[1],R,O=w.target,D=Math.abs(T)>Math.abs(M)?"h":"v";if("touches"in w&&D==="h"&&O.type==="range")return!1;var B=xA(D,O);if(!B)return!0;if(B?R=D:(R=D==="v"?"h":"v",B=xA(D,O)),!B)return!1;if(!r.current&&"changedTouches"in w&&(T||M)&&(r.current=R),!R)return!0;var $=r.current||R;return ige($,k,w,$==="h"?T:M,!0)},[]),l=C.exports.useCallback(function(w){var k=w;if(!(!Np.length||Np[Np.length-1]!==o)){var P="deltaY"in k?wA(k):Xy(k),E=t.current.filter(function(R){return R.name===k.type&&R.target===k.target&&oge(R.delta,P)})[0];if(E&&E.should){k.cancelable&&k.preventDefault();return}if(!E){var T=(a.current.shards||[]).map(CA).filter(Boolean).filter(function(R){return R.contains(k.target)}),M=T.length>0?s(k,T[0]):!a.current.noIsolation;M&&k.cancelable&&k.preventDefault()}}},[]),u=C.exports.useCallback(function(w,k,P,E){var T={name:w,delta:k,target:P,should:E};t.current.push(T),setTimeout(function(){t.current=t.current.filter(function(M){return M!==T})},1)},[]),h=C.exports.useCallback(function(w){n.current=Xy(w),r.current=void 0},[]),g=C.exports.useCallback(function(w){u(w.type,wA(w),w.target,s(w,e.lockRef.current))},[]),m=C.exports.useCallback(function(w){u(w.type,Xy(w),w.target,s(w,e.lockRef.current))},[]);C.exports.useEffect(function(){return Np.push(o),e.setCallbacks({onScrollCapture:g,onWheelCapture:g,onTouchMoveCapture:m}),document.addEventListener("wheel",l,Dp),document.addEventListener("touchmove",l,Dp),document.addEventListener("touchstart",h,Dp),function(){Np=Np.filter(function(w){return w!==o}),document.removeEventListener("wheel",l,Dp),document.removeEventListener("touchmove",l,Dp),document.removeEventListener("touchstart",h,Dp)}},[]);var v=e.removeScrollBar,S=e.inert;return Q(An,{children:[S?b(o,{styles:age(i)}):null,v?b(Z1e,{gapMode:"margin"}):null]})}const uge=W0e(xF,lge);var EF=C.exports.forwardRef(function(e,t){return b(OS,{...vl({},e,{ref:t,sideCar:uge})})});EF.classNames=OS.classNames;const PF=EF;var Ch=(...e)=>e.filter(Boolean).join(" ");function pm(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var cge=class{modals;constructor(){this.modals=[]}add(e){this.modals.push(e)}remove(e){this.modals=this.modals.filter(t=>t!==e)}isTopModal(e){return this.modals[this.modals.length-1]===e}},KC=new cge;function dge(e,t){C.exports.useEffect(()=>(t&&KC.add(e),()=>{KC.remove(e)}),[t,e])}function fge(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:i=!0,closeOnEsc:o=!0,useInert:a=!0,onOverlayClick:s,onEsc:l}=e,u=C.exports.useRef(null),h=C.exports.useRef(null),[g,m,v]=pge(r,"chakra-modal","chakra-modal--header","chakra-modal--body");hge(u,t&&a),dge(u,t);const S=C.exports.useRef(null),w=C.exports.useCallback(B=>{S.current=B.target},[]),k=C.exports.useCallback(B=>{B.key==="Escape"&&(B.stopPropagation(),o&&n?.(),l?.())},[o,n,l]),[P,E]=C.exports.useState(!1),[T,M]=C.exports.useState(!1),R=C.exports.useCallback((B={},$=null)=>({role:"dialog",...B,ref:Wn($,u),id:g,tabIndex:-1,"aria-modal":!0,"aria-labelledby":P?m:void 0,"aria-describedby":T?v:void 0,onClick:pm(B.onClick,W=>W.stopPropagation())}),[v,T,g,m,P]),O=C.exports.useCallback(B=>{B.stopPropagation(),S.current===B.target&&(!KC.isTopModal(u)||(i&&n?.(),s?.()))},[n,i,s]),D=C.exports.useCallback((B={},$=null)=>({...B,ref:Wn($,h),onClick:pm(B.onClick,O),onKeyDown:pm(B.onKeyDown,k),onMouseDown:pm(B.onMouseDown,w)}),[k,w,O]);return{isOpen:t,onClose:n,headerId:m,bodyId:v,setBodyMounted:M,setHeaderMounted:E,dialogRef:u,overlayRef:h,getDialogProps:R,getDialogContainerProps:D}}function hge(e,t){const n=e.current;C.exports.useEffect(()=>{if(!(!e.current||!t))return Hz(e.current)},[t,e,n])}function pge(e,...t){const n=C.exports.useId(),r=e||n;return C.exports.useMemo(()=>t.map(i=>`${i}-${r}`),[r,t])}var[gge,_h]=_n({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[mge,pd]=_n({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),n1=e=>{const{portalProps:t,children:n,autoFocus:r,trapFocus:i,initialFocusRef:o,finalFocusRef:a,returnFocusOnClose:s,blockScrollOnMount:l,allowPinchZoom:u,preserveScrollBarGap:h,motionPreset:g,lockFocusAcrossFrames:m,onCloseComplete:v}=e,S=Ii("Modal",e),k={...fge(e),autoFocus:r,trapFocus:i,initialFocusRef:o,finalFocusRef:a,returnFocusOnClose:s,blockScrollOnMount:l,allowPinchZoom:u,preserveScrollBarGap:h,motionPreset:g,lockFocusAcrossFrames:m};return b(mge,{value:k,children:b(gge,{value:S,children:b(wd,{onExitComplete:v,children:k.isOpen&&b(wh,{...t,children:n})})})})};n1.defaultProps={lockFocusAcrossFrames:!0,returnFocusOnClose:!0,scrollBehavior:"outside",trapFocus:!0,autoFocus:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale"};n1.displayName="Modal";var $v=Ee((e,t)=>{const{className:n,...r}=e,{bodyId:i,setBodyMounted:o}=pd();C.exports.useEffect(()=>(o(!0),()=>o(!1)),[o]);const a=Ch("chakra-modal__body",n),s=_h();return se.createElement(be.div,{ref:t,className:a,id:i,...r,__css:s.body})});$v.displayName="ModalBody";var h_=Ee((e,t)=>{const{onClick:n,className:r,...i}=e,{onClose:o}=pd(),a=Ch("chakra-modal__close-btn",r),s=_h();return b(MS,{ref:t,__css:s.closeButton,className:a,onClick:pm(n,l=>{l.stopPropagation(),o()}),...i})});h_.displayName="ModalCloseButton";function TF(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:i,blockScrollOnMount:o,allowPinchZoom:a,finalFocusRef:s,returnFocusOnClose:l,preserveScrollBarGap:u,lockFocusAcrossFrames:h}=pd(),[g,m]=E8();return C.exports.useEffect(()=>{!g&&m&&setTimeout(m)},[g,m]),b(bF,{autoFocus:t,isDisabled:!n,initialFocusRef:i,finalFocusRef:s,restoreFocus:l,contentRef:r,lockFocusAcrossFrames:h,children:b(PF,{removeScrollBar:!u,allowPinchZoom:a,enabled:o,forwardProps:!0,children:e.children})})}var vge={slideInBottom:{...OC,custom:{offsetY:16,reverse:!0}},slideInRight:{...OC,custom:{offsetX:16,reverse:!0}},scale:{...$B,custom:{initialScale:.95,reverse:!0}},none:{}},yge=be(Fl.section),Sge=e=>vge[e||"none"],LF=C.exports.forwardRef((e,t)=>{const{preset:n,motionProps:r=Sge(n),...i}=e;return b(yge,{ref:t,...r,...i})});LF.displayName="ModalTransition";var Hv=Ee((e,t)=>{const{className:n,children:r,containerProps:i,motionProps:o,...a}=e,{getDialogProps:s,getDialogContainerProps:l}=pd(),u=s(a,t),h=l(i),g=Ch("chakra-modal__content",n),m=_h(),v={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...m.dialog},S={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...m.dialogContainer},{motionPreset:w}=pd();return se.createElement(TF,null,se.createElement(be.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:S},b(LF,{preset:w,motionProps:o,className:g,...u,__css:v,children:r})))});Hv.displayName="ModalContent";var DS=Ee((e,t)=>{const{className:n,...r}=e,i=Ch("chakra-modal__footer",n),a={display:"flex",alignItems:"center",justifyContent:"flex-end",..._h().footer};return se.createElement(be.footer,{ref:t,...r,__css:a,className:i})});DS.displayName="ModalFooter";var NS=Ee((e,t)=>{const{className:n,...r}=e,{headerId:i,setHeaderMounted:o}=pd();C.exports.useEffect(()=>(o(!0),()=>o(!1)),[o]);const a=Ch("chakra-modal__header",n),l={flex:0,..._h().header};return se.createElement(be.header,{ref:t,className:a,id:i,...r,__css:l})});NS.displayName="ModalHeader";var bge=be(Fl.div),r1=Ee((e,t)=>{const{className:n,transition:r,motionProps:i,...o}=e,a=Ch("chakra-modal__overlay",n),l={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",..._h().overlay},{motionPreset:u}=pd();return b(bge,{...i||(u==="none"?{}:FB),__css:l,ref:t,className:a,...o})});r1.displayName="ModalOverlay";function AF(e){const{leastDestructiveRef:t,...n}=e;return b(n1,{...n,initialFocusRef:t})}var MF=Ee((e,t)=>b(Hv,{ref:t,role:"alertdialog",...e})),[RTe,xge]=_n(),wge=be(HB),Cge=Ee((e,t)=>{const{className:n,children:r,motionProps:i,containerProps:o,...a}=e,{getDialogProps:s,getDialogContainerProps:l,isOpen:u}=pd(),h=s(a,t),g=l(o),m=Ch("chakra-modal__content",n),v=_h(),S={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},w={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{placement:k}=xge();return se.createElement(TF,null,se.createElement(be.div,{...g,className:"chakra-modal__content-container",__css:w},b(wge,{motionProps:i,direction:k,in:u,className:m,...h,__css:S,children:r})))});Cge.displayName="DrawerContent";function _ge(e,t){const n=dr(e);C.exports.useEffect(()=>{let r=null;const i=()=>n();return t!==null&&(r=window.setInterval(i,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var IF=(...e)=>e.filter(Boolean).join(" "),hw=e=>e?!0:void 0;function sl(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var kge=e=>b(Sa,{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z"})}),Ege=e=>b(Sa,{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z"})});function _A(e,t,n,r){C.exports.useEffect(()=>{if(!e.current||!r)return;const i=e.current.ownerDocument.defaultView??window,o=Array.isArray(t)?t:[t],a=new i.MutationObserver(s=>{for(const l of s)l.type==="attributes"&&l.attributeName&&o.includes(l.attributeName)&&n(l)});return a.observe(e.current,{attributes:!0,attributeFilter:o}),()=>a.disconnect()})}var Pge=50,kA=300;function Tge(e,t){const[n,r]=C.exports.useState(!1),[i,o]=C.exports.useState(null),[a,s]=C.exports.useState(!0),l=C.exports.useRef(null),u=()=>clearTimeout(l.current);_ge(()=>{i==="increment"&&e(),i==="decrement"&&t()},n?Pge:null);const h=C.exports.useCallback(()=>{a&&e(),l.current=setTimeout(()=>{s(!1),r(!0),o("increment")},kA)},[e,a]),g=C.exports.useCallback(()=>{a&&t(),l.current=setTimeout(()=>{s(!1),r(!0),o("decrement")},kA)},[t,a]),m=C.exports.useCallback(()=>{s(!0),r(!1),u()},[]);return C.exports.useEffect(()=>()=>u(),[]),{up:h,down:g,stop:m,isSpinning:n}}var Lge=/^[Ee0-9+\-.]$/;function Age(e){return Lge.test(e)}function Mge(e,t){if(e.key==null)return!0;const n=e.ctrlKey||e.altKey||e.metaKey;return!(e.key.length===1)||n?!0:t(e.key)}function Ige(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:i=Number.MIN_SAFE_INTEGER,max:o=Number.MAX_SAFE_INTEGER,step:a=1,isReadOnly:s,isDisabled:l,isRequired:u,isInvalid:h,pattern:g="[0-9]*(.[0-9]+)?",inputMode:m="decimal",allowMouseWheel:v,id:S,onChange:w,precision:k,name:P,"aria-describedby":E,"aria-label":T,"aria-labelledby":M,onFocus:R,onBlur:O,onInvalid:D,getAriaValueText:B,isValidCharacter:$,format:W,parse:j,...te}=e,V=dr(R),J=dr(O),re=dr(D),ee=dr($??Age),K=dr(B),G=Kfe(e),{update:Z,increment:ce,decrement:me}=G,[Re,xe]=C.exports.useState(!1),Se=!(s||l),Me=C.exports.useRef(null),_e=C.exports.useRef(null),Je=C.exports.useRef(null),Xe=C.exports.useRef(null),ft=C.exports.useCallback(ke=>ke.split("").filter(ee).join(""),[ee]),_t=C.exports.useCallback(ke=>j?.(ke)??ke,[j]),gt=C.exports.useCallback(ke=>(W?.(ke)??ke).toString(),[W]);fd(()=>{(G.valueAsNumber>o||G.valueAsNumber{if(!Me.current)return;if(Me.current.value!=G.value){const It=_t(Me.current.value);G.setValue(ft(It))}},[_t,ft]);const dt=C.exports.useCallback((ke=a)=>{Se&&ce(ke)},[ce,Se,a]),mt=C.exports.useCallback((ke=a)=>{Se&&me(ke)},[me,Se,a]),Pe=Tge(dt,mt);_A(Je,"disabled",Pe.stop,Pe.isSpinning),_A(Xe,"disabled",Pe.stop,Pe.isSpinning);const et=C.exports.useCallback(ke=>{if(ke.nativeEvent.isComposing)return;const Be=_t(ke.currentTarget.value);Z(ft(Be)),_e.current={start:ke.currentTarget.selectionStart,end:ke.currentTarget.selectionEnd}},[Z,ft,_t]),Lt=C.exports.useCallback(ke=>{var It;V?.(ke),_e.current&&(ke.target.selectionStart=_e.current.start??((It=ke.currentTarget.value)==null?void 0:It.length),ke.currentTarget.selectionEnd=_e.current.end??ke.currentTarget.selectionStart)},[V]),it=C.exports.useCallback(ke=>{if(ke.nativeEvent.isComposing)return;Mge(ke,ee)||ke.preventDefault();const It=St(ke)*a,Be=ke.key,un={ArrowUp:()=>dt(It),ArrowDown:()=>mt(It),Home:()=>Z(i),End:()=>Z(o)}[Be];un&&(ke.preventDefault(),un(ke))},[ee,a,dt,mt,Z,i,o]),St=ke=>{let It=1;return(ke.metaKey||ke.ctrlKey)&&(It=.1),ke.shiftKey&&(It=10),It},Yt=C.exports.useMemo(()=>{const ke=K?.(G.value);if(ke!=null)return ke;const It=G.value.toString();return It||void 0},[G.value,K]),wt=C.exports.useCallback(()=>{let ke=G.value;if(G.value==="")return;/^[eE]/.test(G.value.toString())?G.setValue(""):(G.valueAsNumbero&&(ke=o),G.cast(ke))},[G,o,i]),Gt=C.exports.useCallback(()=>{xe(!1),n&&wt()},[n,xe,wt]),ln=C.exports.useCallback(()=>{t&&requestAnimationFrame(()=>{var ke;(ke=Me.current)==null||ke.focus()})},[t]),on=C.exports.useCallback(ke=>{ke.preventDefault(),Pe.up(),ln()},[ln,Pe]),Oe=C.exports.useCallback(ke=>{ke.preventDefault(),Pe.down(),ln()},[ln,Pe]);th(()=>Me.current,"wheel",ke=>{var It;const ot=(((It=Me.current)==null?void 0:It.ownerDocument)??document).activeElement===Me.current;if(!v||!ot)return;ke.preventDefault();const un=St(ke)*a,zn=Math.sign(ke.deltaY);zn===-1?dt(un):zn===1&&mt(un)},{passive:!1});const Ze=C.exports.useCallback((ke={},It=null)=>{const Be=l||r&&G.isAtMax;return{...ke,ref:Wn(It,Je),role:"button",tabIndex:-1,onPointerDown:sl(ke.onPointerDown,ot=>{ot.button!==0||Be||on(ot)}),onPointerLeave:sl(ke.onPointerLeave,Pe.stop),onPointerUp:sl(ke.onPointerUp,Pe.stop),disabled:Be,"aria-disabled":hw(Be)}},[G.isAtMax,r,on,Pe.stop,l]),Zt=C.exports.useCallback((ke={},It=null)=>{const Be=l||r&&G.isAtMin;return{...ke,ref:Wn(It,Xe),role:"button",tabIndex:-1,onPointerDown:sl(ke.onPointerDown,ot=>{ot.button!==0||Be||Oe(ot)}),onPointerLeave:sl(ke.onPointerLeave,Pe.stop),onPointerUp:sl(ke.onPointerUp,Pe.stop),disabled:Be,"aria-disabled":hw(Be)}},[G.isAtMin,r,Oe,Pe.stop,l]),qt=C.exports.useCallback((ke={},It=null)=>({name:P,inputMode:m,type:"text",pattern:g,"aria-labelledby":M,"aria-label":T,"aria-describedby":E,id:S,disabled:l,...ke,readOnly:ke.readOnly??s,"aria-readonly":ke.readOnly??s,"aria-required":ke.required??u,required:ke.required??u,ref:Wn(Me,It),value:gt(G.value),role:"spinbutton","aria-valuemin":i,"aria-valuemax":o,"aria-valuenow":Number.isNaN(G.valueAsNumber)?void 0:G.valueAsNumber,"aria-invalid":hw(h??G.isOutOfRange),"aria-valuetext":Yt,autoComplete:"off",autoCorrect:"off",onChange:sl(ke.onChange,et),onKeyDown:sl(ke.onKeyDown,it),onFocus:sl(ke.onFocus,Lt,()=>xe(!0)),onBlur:sl(ke.onBlur,J,Gt)}),[P,m,g,M,T,gt,E,S,l,u,s,h,G.value,G.valueAsNumber,G.isOutOfRange,i,o,Yt,et,it,Lt,J,Gt]);return{value:gt(G.value),valueAsNumber:G.valueAsNumber,isFocused:Re,isDisabled:l,isReadOnly:s,getIncrementButtonProps:Ze,getDecrementButtonProps:Zt,getInputProps:qt,htmlProps:te}}var[Rge,BS]=_n({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[Oge,p_]=_n({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),g_=Ee(function(t,n){const r=Ii("NumberInput",t),i=yn(t),o=z8(i),{htmlProps:a,...s}=Ige(o),l=C.exports.useMemo(()=>s,[s]);return se.createElement(Oge,{value:l},se.createElement(Rge,{value:r},se.createElement(be.div,{...a,ref:n,className:IF("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})))});g_.displayName="NumberInput";var RF=Ee(function(t,n){const r=BS();return se.createElement(be.div,{"aria-hidden":!0,ref:n,...t,__css:{display:"flex",flexDirection:"column",position:"absolute",top:"0",insetEnd:"0px",margin:"1px",height:"calc(100% - 2px)",zIndex:1,...r.stepperGroup}})});RF.displayName="NumberInputStepper";var m_=Ee(function(t,n){const{getInputProps:r}=p_(),i=r(t,n),o=BS();return se.createElement(be.input,{...i,className:IF("chakra-numberinput__field",t.className),__css:{width:"100%",...o.field}})});m_.displayName="NumberInputField";var OF=be("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),v_=Ee(function(t,n){const r=BS(),{getDecrementButtonProps:i}=p_(),o=i(t,n);return b(OF,{...o,__css:r.stepper,children:t.children??b(kge,{})})});v_.displayName="NumberDecrementStepper";var y_=Ee(function(t,n){const{getIncrementButtonProps:r}=p_(),i=r(t,n),o=BS();return b(OF,{...i,__css:o.stepper,children:t.children??b(Ege,{})})});y_.displayName="NumberIncrementStepper";var f2=(...e)=>e.filter(Boolean).join(" ");function Dge(e,...t){return Nge(e)?e(...t):e}var Nge=e=>typeof e=="function";function ll(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}function Bge(...e){return function(n){e.forEach(r=>{r?.(n)})}}var[zge,kh]=_n({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[Fge,h2]=_n({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Bp={click:"click",hover:"hover"};function $ge(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:i,returnFocusOnClose:o=!0,autoFocus:a=!0,arrowSize:s,arrowShadowColor:l,trigger:u=Bp.click,openDelay:h=200,closeDelay:g=200,isLazy:m,lazyBehavior:v="unmount",computePositionOnMount:S,...w}=e,{isOpen:k,onClose:P,onOpen:E,onToggle:T}=Nz(e),M=C.exports.useRef(null),R=C.exports.useRef(null),O=C.exports.useRef(null),D=C.exports.useRef(!1),B=C.exports.useRef(!1);k&&(B.current=!0);const[$,W]=C.exports.useState(!1),[j,te]=C.exports.useState(!1),V=C.exports.useId(),J=i??V,[re,ee,K,G]=["popover-trigger","popover-content","popover-header","popover-body"].map(et=>`${et}-${J}`),{referenceRef:Z,getArrowProps:ce,getPopperProps:me,getArrowInnerProps:Re,forceUpdate:xe}=Dz({...w,enabled:k||!!S}),Se=w0e({isOpen:k,ref:O});ihe({enabled:k,ref:R}),Qhe(O,{focusRef:R,visible:k,shouldFocus:o&&u===Bp.click}),epe(O,{focusRef:r,visible:k,shouldFocus:a&&u===Bp.click});const Me=Bz({wasSelected:B.current,enabled:m,mode:v,isSelected:Se.present}),_e=C.exports.useCallback((et={},Lt=null)=>{const it={...et,style:{...et.style,transformOrigin:Wr.transformOrigin.varRef,[Wr.arrowSize.var]:s?`${s}px`:void 0,[Wr.arrowShadowColor.var]:l},ref:Wn(O,Lt),children:Me?et.children:null,id:ee,tabIndex:-1,role:"dialog",onKeyDown:ll(et.onKeyDown,St=>{n&&St.key==="Escape"&&P()}),onBlur:ll(et.onBlur,St=>{const Yt=EA(St),wt=pw(O.current,Yt),Gt=pw(R.current,Yt);k&&t&&(!wt&&!Gt)&&P()}),"aria-labelledby":$?K:void 0,"aria-describedby":j?G:void 0};return u===Bp.hover&&(it.role="tooltip",it.onMouseEnter=ll(et.onMouseEnter,()=>{D.current=!0}),it.onMouseLeave=ll(et.onMouseLeave,St=>{St.nativeEvent.relatedTarget!==null&&(D.current=!1,setTimeout(()=>P(),g))})),it},[Me,ee,$,K,j,G,u,n,P,k,t,g,l,s]),Je=C.exports.useCallback((et={},Lt=null)=>me({...et,style:{visibility:k?"visible":"hidden",...et.style}},Lt),[k,me]),Xe=C.exports.useCallback((et,Lt=null)=>({...et,ref:Wn(Lt,M,Z)}),[M,Z]),ft=C.exports.useRef(),_t=C.exports.useRef(),gt=C.exports.useCallback(et=>{M.current==null&&Z(et)},[Z]),dt=C.exports.useCallback((et={},Lt=null)=>{const it={...et,ref:Wn(R,Lt,gt),id:re,"aria-haspopup":"dialog","aria-expanded":k,"aria-controls":ee};return u===Bp.click&&(it.onClick=ll(et.onClick,T)),u===Bp.hover&&(it.onFocus=ll(et.onFocus,()=>{ft.current===void 0&&E()}),it.onBlur=ll(et.onBlur,St=>{const Yt=EA(St),wt=!pw(O.current,Yt);k&&t&&wt&&P()}),it.onKeyDown=ll(et.onKeyDown,St=>{St.key==="Escape"&&P()}),it.onMouseEnter=ll(et.onMouseEnter,()=>{D.current=!0,ft.current=window.setTimeout(()=>E(),h)}),it.onMouseLeave=ll(et.onMouseLeave,()=>{D.current=!1,ft.current&&(clearTimeout(ft.current),ft.current=void 0),_t.current=window.setTimeout(()=>{D.current===!1&&P()},g)})),it},[re,k,ee,u,gt,T,E,t,P,h,g]);C.exports.useEffect(()=>()=>{ft.current&&clearTimeout(ft.current),_t.current&&clearTimeout(_t.current)},[]);const mt=C.exports.useCallback((et={},Lt=null)=>({...et,id:K,ref:Wn(Lt,it=>{W(!!it)})}),[K]),Pe=C.exports.useCallback((et={},Lt=null)=>({...et,id:G,ref:Wn(Lt,it=>{te(!!it)})}),[G]);return{forceUpdate:xe,isOpen:k,onAnimationComplete:Se.onComplete,onClose:P,getAnchorProps:Xe,getArrowProps:ce,getArrowInnerProps:Re,getPopoverPositionerProps:Je,getPopoverProps:_e,getTriggerProps:dt,getHeaderProps:mt,getBodyProps:Pe}}function pw(e,t){return e===t||e?.contains(t)}function EA(e){const t=e.currentTarget.ownerDocument.activeElement;return e.relatedTarget??t}function S_(e){const t=Ii("Popover",e),{children:n,...r}=yn(e),i=h1(),o=$ge({...r,direction:i.direction});return b(zge,{value:o,children:b(Fge,{value:t,children:Dge(n,{isOpen:o.isOpen,onClose:o.onClose,forceUpdate:o.forceUpdate})})})}S_.displayName="Popover";function b_(e){const{bg:t,bgColor:n,backgroundColor:r}=e,{getArrowProps:i,getArrowInnerProps:o}=kh(),a=h2(),s=t??n??r;return se.createElement(be.div,{...i(),className:"chakra-popover__arrow-positioner"},se.createElement(be.div,{className:f2("chakra-popover__arrow",e.className),...o(e),__css:{...a.arrow,"--popper-arrow-bg":s?`colors.${s}, ${s}`:void 0}}))}b_.displayName="PopoverArrow";var Hge=Ee(function(t,n){const{getBodyProps:r}=kh(),i=h2();return se.createElement(be.div,{...r(t,n),className:f2("chakra-popover__body",t.className),__css:i.body})});Hge.displayName="PopoverBody";var Wge=Ee(function(t,n){const{onClose:r}=kh(),i=h2();return b(MS,{size:"sm",onClick:r,className:f2("chakra-popover__close-btn",t.className),__css:i.closeButton,ref:n,...t})});Wge.displayName="PopoverCloseButton";function Vge(e){if(!!e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var Uge={exit:{opacity:0,scale:.95,transition:{duration:.1,ease:[.4,0,1,1]}},enter:{scale:1,opacity:1,transition:{duration:.15,ease:[0,0,.2,1]}}},Gge=be(Fl.section),DF=Ee(function(t,n){const{variants:r=Uge,...i}=t,{isOpen:o}=kh();return se.createElement(Gge,{ref:n,variants:Vge(r),initial:!1,animate:o?"enter":"exit",...i})});DF.displayName="PopoverTransition";var x_=Ee(function(t,n){const{rootProps:r,motionProps:i,...o}=t,{getPopoverProps:a,getPopoverPositionerProps:s,onAnimationComplete:l}=kh(),u=h2(),h={position:"relative",display:"flex",flexDirection:"column",...u.content};return se.createElement(be.div,{...s(r),__css:u.popper,className:"chakra-popover__popper"},b(DF,{...i,...a(o,n),onAnimationComplete:Bge(l,o.onAnimationComplete),className:f2("chakra-popover__content",t.className),__css:h}))});x_.displayName="PopoverContent";var jge=Ee(function(t,n){const{getHeaderProps:r}=kh(),i=h2();return se.createElement(be.header,{...r(t,n),className:f2("chakra-popover__header",t.className),__css:i.header})});jge.displayName="PopoverHeader";function w_(e){const t=C.exports.Children.only(e.children),{getTriggerProps:n}=kh();return C.exports.cloneElement(t,n(t.props,t.ref))}w_.displayName="PopoverTrigger";function Yge(e,t,n){return(e-t)*100/(n-t)}var qge=xd({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),Kge=xd({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Xge=xd({"0%":{left:"-40%"},"100%":{left:"100%"}}),Zge=xd({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function NF(e){const{value:t=0,min:n,max:r,valueText:i,getValueText:o,isIndeterminate:a,role:s="progressbar"}=e,l=Yge(t,n,r);return{bind:{"data-indeterminate":a?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":a?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof o=="function"?o(t,l):i})(),role:s},percent:l,value:t}}var BF=e=>{const{size:t,isIndeterminate:n,...r}=e;return se.createElement(be.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${Kge} 2s linear infinite`:void 0},...r})};BF.displayName="Shape";var XC=e=>se.createElement(be.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});XC.displayName="Circle";var Qge=Ee((e,t)=>{const{size:n="48px",max:r=100,min:i=0,valueText:o,getValueText:a,value:s,capIsRound:l,children:u,thickness:h="10px",color:g="#0078d4",trackColor:m="#edebe9",isIndeterminate:v,...S}=e,w=NF({min:i,max:r,value:s,valueText:o,getValueText:a,isIndeterminate:v}),k=v?void 0:(w.percent??0)*2.64,P=k==null?void 0:`${k} ${264-k}`,E=v?{css:{animation:`${qge} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:P,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},T={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:n};return se.createElement(be.div,{ref:t,className:"chakra-progress",...w.bind,...S,__css:T},Q(BF,{size:n,isIndeterminate:v,children:[b(XC,{stroke:m,strokeWidth:h,className:"chakra-progress__track"}),b(XC,{stroke:g,strokeWidth:h,className:"chakra-progress__indicator",strokeLinecap:l?"round":void 0,opacity:w.value===0&&!v?0:void 0,...E})]}),u)});Qge.displayName="CircularProgress";var[Jge,eme]=_n({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),tme=Ee((e,t)=>{const{min:n,max:r,value:i,isIndeterminate:o,role:a,...s}=e,l=NF({value:i,min:n,max:r,isIndeterminate:o,role:a}),h={height:"100%",...eme().filledTrack};return se.createElement(be.div,{ref:t,style:{width:`${l.percent}%`,...s.style},...l.bind,...s,__css:h})}),zF=Ee((e,t)=>{var n;const{value:r,min:i=0,max:o=100,hasStripe:a,isAnimated:s,children:l,borderRadius:u,isIndeterminate:h,"aria-label":g,"aria-labelledby":m,title:v,role:S,...w}=yn(e),k=Ii("Progress",e),P=u??((n=k.track)==null?void 0:n.borderRadius),E={animation:`${Zge} 1s linear infinite`},R={...!h&&a&&s&&E,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${Xge} 1s ease infinite normal none running`}},O={overflow:"hidden",position:"relative",...k.track};return se.createElement(be.div,{ref:t,borderRadius:P,__css:O,...w},Q(Jge,{value:k,children:[b(tme,{"aria-label":g,"aria-labelledby":m,min:i,max:o,value:r,isIndeterminate:h,css:R,borderRadius:P,title:v,role:S}),l]}))});zF.displayName="Progress";var nme=be("div",{baseStyle:{fontSize:"0.24em",top:"50%",left:"50%",width:"100%",textAlign:"center",position:"absolute",transform:"translate(-50%, -50%)"}});nme.displayName="CircularProgressLabel";var rme=(...e)=>e.filter(Boolean).join(" "),ime=e=>e?"":void 0;function ome(e,t){const n={},r={};for(const[i,o]of Object.entries(e))t.includes(i)?n[i]=o:r[i]=o;return[n,r]}var FF=Ee(function(t,n){const{children:r,placeholder:i,className:o,...a}=t;return se.createElement(be.select,{...a,ref:n,className:rme("chakra-select",o)},i&&b("option",{value:"",children:i}),r)});FF.displayName="SelectField";var $F=Ee((e,t)=>{var n;const r=Ii("Select",e),{rootProps:i,placeholder:o,icon:a,color:s,height:l,h:u,minH:h,minHeight:g,iconColor:m,iconSize:v,...S}=yn(e),[w,k]=ome(S,EQ),P=B8(k),E={width:"100%",height:"fit-content",position:"relative",color:s},T={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return se.createElement(be.div,{className:"chakra-select__wrapper",__css:E,...w,...i},b(FF,{ref:t,height:u??l,minH:h??g,placeholder:o,...P,__css:T,children:e.children}),b(HF,{"data-disabled":ime(P.disabled),...(m||s)&&{color:m||s},__css:r.icon,...v&&{fontSize:v},children:a}))});$F.displayName="Select";var ame=e=>b("svg",{viewBox:"0 0 24 24",...e,children:b("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),sme=be("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),HF=e=>{const{children:t=b(ame,{}),...n}=e,r=C.exports.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return b(sme,{...n,className:"chakra-select__icon-wrapper",children:C.exports.isValidElement(t)?r:null})};HF.displayName="SelectIcon";function lme(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function ume(e){const t=dme(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function WF(e){return!!e.touches}function cme(e){return WF(e)&&e.touches.length>1}function dme(e){return e.view??window}function fme(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function hme(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function VF(e,t="page"){return WF(e)?fme(e,t):hme(e,t)}function pme(e){return t=>{const n=ume(t);(!n||n&&t.button===0)&&e(t)}}function gme(e,t=!1){function n(i){e(i,{point:VF(i)})}return t?pme(n):n}function X3(e,t,n,r){return lme(e,t,gme(n,t==="pointerdown"),r)}function UF(e){const t=C.exports.useRef(null);return t.current=e,t}var mme=class{history=[];startEvent=null;lastEvent=null;lastEventInfo=null;handlers={};removeListeners=()=>{};threshold=3;win;constructor(e,t,n){if(this.win=e.view??window,cme(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const r={point:VF(e)},{timestamp:i}=rT();this.history=[{...r.point,timestamp:i}];const{onSessionStart:o}=t;o?.(e,gw(r,this.history)),this.removeListeners=Sme(X3(this.win,"pointermove",this.onPointerMove),X3(this.win,"pointerup",this.onPointerUp),X3(this.win,"pointercancel",this.onPointerUp))}updatePoint=()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const e=gw(this.lastEventInfo,this.history),t=this.startEvent!==null,n=bme(e.offset,{x:0,y:0})>=this.threshold;if(!t&&!n)return;const{timestamp:r}=rT();this.history.push({...e.point,timestamp:r});const{onStart:i,onMove:o}=this.handlers;t||(i?.(this.lastEvent,e),this.startEvent=this.lastEvent),o?.(this.lastEvent,e)};onPointerMove=(e,t)=>{this.lastEvent=e,this.lastEventInfo=t,zJ.update(this.updatePoint,!0)};onPointerUp=(e,t)=>{const n=gw(t,this.history),{onEnd:r,onSessionEnd:i}=this.handlers;i?.(e,n),this.end(),!(!r||!this.startEvent)&&r?.(e,n)};updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),FJ.update(this.updatePoint)}};function PA(e,t){return{x:e.x-t.x,y:e.y-t.y}}function gw(e,t){return{point:e.point,delta:PA(e.point,t[t.length-1]),offset:PA(e.point,t[0]),velocity:yme(t,.1)}}var vme=e=>e*1e3;function yme(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=e[e.length-1];for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>vme(t)));)n--;if(!r)return{x:0,y:0};const o=(i.timestamp-r.timestamp)/1e3;if(o===0)return{x:0,y:0};const a={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function Sme(...e){return t=>e.reduce((n,r)=>r(n),t)}function mw(e,t){return Math.abs(e-t)}function TA(e){return"x"in e&&"y"in e}function bme(e,t){if(typeof e=="number"&&typeof t=="number")return mw(e,t);if(TA(e)&&TA(t)){const n=mw(e.x,t.x),r=mw(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function GF(e,t){const{onPan:n,onPanStart:r,onPanEnd:i,onPanSessionStart:o,onPanSessionEnd:a,threshold:s}=t,l=Boolean(n||r||i||o||a),u=C.exports.useRef(null),h=UF({onSessionStart:o,onSessionEnd:a,onStart:r,onMove:n,onEnd(g,m){u.current=null,i?.(g,m)}});C.exports.useEffect(()=>{var g;(g=u.current)==null||g.updateHandlers(h.current)}),C.exports.useEffect(()=>{const g=e.current;if(!g||!l)return;function m(v){u.current=new mme(v,h.current,s)}return X3(g,"pointerdown",m)},[e,l,h,s]),C.exports.useEffect(()=>()=>{var g;(g=u.current)==null||g.end(),u.current=null},[])}function xme(e,t){if(!e){t(void 0);return}t({width:e.offsetWidth,height:e.offsetHeight});const n=e.ownerDocument.defaultView??window,r=new n.ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const[o]=i;let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,u=Array.isArray(l)?l[0]:l;a=u.inlineSize,s=u.blockSize}else a=e.offsetWidth,s=e.offsetHeight;t({width:a,height:s})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var wme=Boolean(globalThis?.document)?C.exports.useLayoutEffect:C.exports.useEffect;function Cme(e,t){var n;if(!e||!e.parentElement)return;const r=((n=e.ownerDocument)==null?void 0:n.defaultView)??window,i=new r.MutationObserver(()=>{t()});return i.observe(e.parentElement,{childList:!0}),()=>{i.disconnect()}}function jF({getNodes:e,observeMutation:t=!0}){const[n,r]=C.exports.useState([]),[i,o]=C.exports.useState(0);return wme(()=>{const a=e(),s=a.map((l,u)=>xme(l,h=>{r(g=>[...g.slice(0,u),h,...g.slice(u+1)])}));if(t){const l=a[0];s.push(Cme(l,()=>{o(u=>u+1)}))}return()=>{s.forEach(l=>{l?.()})}},[i]),n}function _me(e){return typeof e=="object"&&e!==null&&"current"in e}function kme(e){const[t]=jF({observeMutation:!1,getNodes(){return[_me(e)?e.current:e]}});return t}var Eme=Object.getOwnPropertyNames,Pme=(e,t)=>function(){return e&&(t=(0,e[Eme(e)[0]])(e=0)),t},kd=Pme({"../../../react-shim.js"(){}});kd();kd();kd();var Oa=e=>e?"":void 0,O0=e=>e?!0:void 0,Ed=(...e)=>e.filter(Boolean).join(" ");kd();function D0(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}kd();kd();function Tme(e){return{root:`slider-root-${e}`,getThumb:t=>`slider-thumb-${e}-${t}`,getInput:t=>`slider-input-${e}-${t}`,track:`slider-track-${e}`,innerTrack:`slider-filled-track-${e}`,getMarker:t=>`slider-marker-${e}-${t}`,output:`slider-output-${e}`}}function gm(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var Z3={width:0,height:0},Zy=e=>e||Z3;function YF(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:i}=e,o=w=>{const k=r[w]??Z3;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...gm({orientation:t,vertical:{bottom:`calc(${n[w]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[w]}% - ${k.width/2}px)`}})}},a=t==="vertical"?r.reduce((w,k)=>Zy(w).height>Zy(k).height?w:k,Z3):r.reduce((w,k)=>Zy(w).width>Zy(k).width?w:k,Z3),s={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...gm({orientation:t,vertical:a?{paddingLeft:a.width/2,paddingRight:a.width/2}:{},horizontal:a?{paddingTop:a.height/2,paddingBottom:a.height/2}:{}})},l={position:"absolute",...gm({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},u=n.length===1,h=[0,i?100-n[0]:n[0]],g=u?h:n;let m=g[0];!u&&i&&(m=100-m);const v=Math.abs(g[g.length-1]-g[0]),S={...l,...gm({orientation:t,vertical:i?{height:`${v}%`,top:`${m}%`}:{height:`${v}%`,bottom:`${m}%`},horizontal:i?{width:`${v}%`,right:`${m}%`}:{width:`${v}%`,left:`${m}%`}})};return{trackStyle:l,innerTrackStyle:S,rootStyle:s,getThumbStyle:o}}function qF(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function Lme(e){const{min:t=0,max:n=100,onChange:r,value:i,defaultValue:o,isReversed:a,direction:s="ltr",orientation:l="horizontal",id:u,isDisabled:h,isReadOnly:g,onChangeStart:m,onChangeEnd:v,step:S=1,getAriaValueText:w,"aria-valuetext":k,"aria-label":P,"aria-labelledby":E,name:T,focusThumbOnChange:M=!0,minStepsBetweenThumbs:R=0,...O}=e,D=dr(m),B=dr(v),$=dr(w),W=qF({isReversed:a,direction:s,orientation:l}),[j,te]=fS({value:i,defaultValue:o??[25,75],onChange:r});if(!Array.isArray(j))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof j}\``);const[V,J]=C.exports.useState(!1),[re,ee]=C.exports.useState(!1),[K,G]=C.exports.useState(-1),Z=!(h||g),ce=C.exports.useRef(j),me=j.map(He=>M0(He,t,n)),Re=R*S,xe=Ame(me,t,n,Re),Se=C.exports.useRef({eventSource:null,value:[],valueBounds:[]});Se.current.value=me,Se.current.valueBounds=xe;const Me=me.map(He=>n-He+t),Je=(W?Me:me).map(He=>r5(He,t,n)),Xe=l==="vertical",ft=C.exports.useRef(null),_t=C.exports.useRef(null),gt=jF({getNodes(){const He=_t.current,ht=He?.querySelectorAll("[role=slider]");return ht?Array.from(ht):[]}}),dt=C.exports.useId(),Pe=Tme(u??dt),et=C.exports.useCallback(He=>{var ht;if(!ft.current)return;Se.current.eventSource="pointer";const tt=ft.current.getBoundingClientRect(),{clientX:Dt,clientY:Qt}=((ht=He.touches)==null?void 0:ht[0])??He,er=Xe?tt.bottom-Qt:Dt-tt.left,lo=Xe?tt.height:tt.width;let mi=er/lo;return W&&(mi=1-mi),ZB(mi,t,n)},[Xe,W,n,t]),Lt=(n-t)/10,it=S||(n-t)/100,St=C.exports.useMemo(()=>({setValueAtIndex(He,ht){if(!Z)return;const tt=Se.current.valueBounds[He];ht=parseFloat(FC(ht,tt.min,it)),ht=M0(ht,tt.min,tt.max);const Dt=[...Se.current.value];Dt[He]=ht,te(Dt)},setActiveIndex:G,stepUp(He,ht=it){const tt=Se.current.value[He],Dt=W?tt-ht:tt+ht;St.setValueAtIndex(He,Dt)},stepDown(He,ht=it){const tt=Se.current.value[He],Dt=W?tt+ht:tt-ht;St.setValueAtIndex(He,Dt)},reset(){te(ce.current)}}),[it,W,te,Z]),Yt=C.exports.useCallback(He=>{const ht=He.key,Dt={ArrowRight:()=>St.stepUp(K),ArrowUp:()=>St.stepUp(K),ArrowLeft:()=>St.stepDown(K),ArrowDown:()=>St.stepDown(K),PageUp:()=>St.stepUp(K,Lt),PageDown:()=>St.stepDown(K,Lt),Home:()=>{const{min:Qt}=xe[K];St.setValueAtIndex(K,Qt)},End:()=>{const{max:Qt}=xe[K];St.setValueAtIndex(K,Qt)}}[ht];Dt&&(He.preventDefault(),He.stopPropagation(),Dt(He),Se.current.eventSource="keyboard")},[St,K,Lt,xe]),{getThumbStyle:wt,rootStyle:Gt,trackStyle:ln,innerTrackStyle:on}=C.exports.useMemo(()=>YF({isReversed:W,orientation:l,thumbRects:gt,thumbPercents:Je}),[W,l,Je,gt]),Oe=C.exports.useCallback(He=>{var ht;const tt=He??K;if(tt!==-1&&M){const Dt=Pe.getThumb(tt),Qt=(ht=_t.current)==null?void 0:ht.ownerDocument.getElementById(Dt);Qt&&setTimeout(()=>Qt.focus())}},[M,K,Pe]);fd(()=>{Se.current.eventSource==="keyboard"&&B?.(Se.current.value)},[me,B]);const Ze=He=>{const ht=et(He)||0,tt=Se.current.value.map(mi=>Math.abs(mi-ht)),Dt=Math.min(...tt);let Qt=tt.indexOf(Dt);const er=tt.filter(mi=>mi===Dt);er.length>1&&ht>Se.current.value[Qt]&&(Qt=Qt+er.length-1),G(Qt),St.setValueAtIndex(Qt,ht),Oe(Qt)},Zt=He=>{if(K==-1)return;const ht=et(He)||0;G(K),St.setValueAtIndex(K,ht),Oe(K)};GF(_t,{onPanSessionStart(He){!Z||(J(!0),Ze(He),D?.(Se.current.value))},onPanSessionEnd(){!Z||(J(!1),B?.(Se.current.value))},onPan(He){!Z||Zt(He)}});const qt=C.exports.useCallback((He={},ht=null)=>({...He,...O,id:Pe.root,ref:Wn(ht,_t),tabIndex:-1,"aria-disabled":O0(h),"data-focused":Oa(re),style:{...He.style,...Gt}}),[O,h,re,Gt,Pe]),ke=C.exports.useCallback((He={},ht=null)=>({...He,ref:Wn(ht,ft),id:Pe.track,"data-disabled":Oa(h),style:{...He.style,...ln}}),[h,ln,Pe]),It=C.exports.useCallback((He={},ht=null)=>({...He,ref:ht,id:Pe.innerTrack,style:{...He.style,...on}}),[on,Pe]),Be=C.exports.useCallback((He,ht=null)=>{const{index:tt,...Dt}=He,Qt=me[tt];if(Qt==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${tt}\`. The \`value\` or \`defaultValue\` length is : ${me.length}`);const er=xe[tt];return{...Dt,ref:ht,role:"slider",tabIndex:Z?0:void 0,id:Pe.getThumb(tt),"data-active":Oa(V&&K===tt),"aria-valuetext":$?.(Qt)??k?.[tt],"aria-valuemin":er.min,"aria-valuemax":er.max,"aria-valuenow":Qt,"aria-orientation":l,"aria-disabled":O0(h),"aria-readonly":O0(g),"aria-label":P?.[tt],"aria-labelledby":P?.[tt]?void 0:E?.[tt],style:{...He.style,...wt(tt)},onKeyDown:D0(He.onKeyDown,Yt),onFocus:D0(He.onFocus,()=>{ee(!0),G(tt)}),onBlur:D0(He.onBlur,()=>{ee(!1),G(-1)})}},[Pe,me,xe,Z,V,K,$,k,l,h,g,P,E,wt,Yt,ee]),ot=C.exports.useCallback((He={},ht=null)=>({...He,ref:ht,id:Pe.output,htmlFor:me.map((tt,Dt)=>Pe.getThumb(Dt)).join(" "),"aria-live":"off"}),[Pe,me]),un=C.exports.useCallback((He,ht=null)=>{const{value:tt,...Dt}=He,Qt=!(ttn),er=tt>=me[0]&&tt<=me[me.length-1];let lo=r5(tt,t,n);lo=W?100-lo:lo;const mi={position:"absolute",pointerEvents:"none",...gm({orientation:l,vertical:{bottom:`${lo}%`},horizontal:{left:`${lo}%`}})};return{...Dt,ref:ht,id:Pe.getMarker(He.value),role:"presentation","aria-hidden":!0,"data-disabled":Oa(h),"data-invalid":Oa(!Qt),"data-highlighted":Oa(er),style:{...He.style,...mi}}},[h,W,n,t,l,me,Pe]),zn=C.exports.useCallback((He,ht=null)=>{const{index:tt,...Dt}=He;return{...Dt,ref:ht,id:Pe.getInput(tt),type:"hidden",value:me[tt],name:Array.isArray(T)?T[tt]:`${T}-${tt}`}},[T,me,Pe]);return{state:{value:me,isFocused:re,isDragging:V,getThumbPercent:He=>Je[He],getThumbMinValue:He=>xe[He].min,getThumbMaxValue:He=>xe[He].max},actions:St,getRootProps:qt,getTrackProps:ke,getInnerTrackProps:It,getThumbProps:Be,getMarkerProps:un,getInputProps:zn,getOutputProps:ot}}function Ame(e,t,n,r){return e.map((i,o)=>{const a=o===0?t:e[o-1]+r,s=o===e.length-1?n:e[o+1]-r;return{min:a,max:s}})}var[Mme,zS]=_n({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[Ime,C_]=_n({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),KF=Ee(function(t,n){const r=Ii("Slider",t),i=yn(t),{direction:o}=h1();i.direction=o;const{getRootProps:a,...s}=Lme(i),l=C.exports.useMemo(()=>({...s,name:t.name}),[s,t.name]);return se.createElement(Mme,{value:l},se.createElement(Ime,{value:r},se.createElement(be.div,{...a({},n),className:"chakra-slider",__css:r.container},t.children)))});KF.defaultProps={orientation:"horizontal"};KF.displayName="RangeSlider";var Rme=Ee(function(t,n){const{getThumbProps:r,getInputProps:i,name:o}=zS(),a=C_(),s=r(t,n);return se.createElement(be.div,{...s,className:Ed("chakra-slider__thumb",t.className),__css:a.thumb},s.children,o&&b("input",{...i({index:t.index})}))});Rme.displayName="RangeSliderThumb";var Ome=Ee(function(t,n){const{getTrackProps:r}=zS(),i=C_(),o=r(t,n);return se.createElement(be.div,{...o,className:Ed("chakra-slider__track",t.className),__css:i.track,"data-testid":"chakra-range-slider-track"})});Ome.displayName="RangeSliderTrack";var Dme=Ee(function(t,n){const{getInnerTrackProps:r}=zS(),i=C_(),o=r(t,n);return se.createElement(be.div,{...o,className:"chakra-slider__filled-track",__css:i.filledTrack})});Dme.displayName="RangeSliderFilledTrack";var Nme=Ee(function(t,n){const{getMarkerProps:r}=zS(),i=r(t,n);return se.createElement(be.div,{...i,className:Ed("chakra-slider__marker",t.className)})});Nme.displayName="RangeSliderMark";kd();kd();function Bme(e){const{min:t=0,max:n=100,onChange:r,value:i,defaultValue:o,isReversed:a,direction:s="ltr",orientation:l="horizontal",id:u,isDisabled:h,isReadOnly:g,onChangeStart:m,onChangeEnd:v,step:S=1,getAriaValueText:w,"aria-valuetext":k,"aria-label":P,"aria-labelledby":E,name:T,focusThumbOnChange:M=!0,...R}=e,O=dr(m),D=dr(v),B=dr(w),$=qF({isReversed:a,direction:s,orientation:l}),[W,j]=fS({value:i,defaultValue:o??Fme(t,n),onChange:r}),[te,V]=C.exports.useState(!1),[J,re]=C.exports.useState(!1),ee=!(h||g),K=(n-t)/10,G=S||(n-t)/100,Z=M0(W,t,n),ce=n-Z+t,Re=r5($?ce:Z,t,n),xe=l==="vertical",Se=UF({min:t,max:n,step:S,isDisabled:h,value:Z,isInteractive:ee,isReversed:$,isVertical:xe,eventSource:null,focusThumbOnChange:M,orientation:l}),Me=C.exports.useRef(null),_e=C.exports.useRef(null),Je=C.exports.useRef(null),Xe=C.exports.useId(),ft=u??Xe,[_t,gt]=[`slider-thumb-${ft}`,`slider-track-${ft}`],dt=C.exports.useCallback(Be=>{var ot;if(!Me.current)return;const un=Se.current;un.eventSource="pointer";const zn=Me.current.getBoundingClientRect(),{clientX:He,clientY:ht}=((ot=Be.touches)==null?void 0:ot[0])??Be,tt=xe?zn.bottom-ht:He-zn.left,Dt=xe?zn.height:zn.width;let Qt=tt/Dt;$&&(Qt=1-Qt);let er=ZB(Qt,un.min,un.max);return un.step&&(er=parseFloat(FC(er,un.min,un.step))),er=M0(er,un.min,un.max),er},[xe,$,Se]),mt=C.exports.useCallback(Be=>{const ot=Se.current;!ot.isInteractive||(Be=parseFloat(FC(Be,ot.min,G)),Be=M0(Be,ot.min,ot.max),j(Be))},[G,j,Se]),Pe=C.exports.useMemo(()=>({stepUp(Be=G){const ot=$?Z-Be:Z+Be;mt(ot)},stepDown(Be=G){const ot=$?Z+Be:Z-Be;mt(ot)},reset(){mt(o||0)},stepTo(Be){mt(Be)}}),[mt,$,Z,G,o]),et=C.exports.useCallback(Be=>{const ot=Se.current,zn={ArrowRight:()=>Pe.stepUp(),ArrowUp:()=>Pe.stepUp(),ArrowLeft:()=>Pe.stepDown(),ArrowDown:()=>Pe.stepDown(),PageUp:()=>Pe.stepUp(K),PageDown:()=>Pe.stepDown(K),Home:()=>mt(ot.min),End:()=>mt(ot.max)}[Be.key];zn&&(Be.preventDefault(),Be.stopPropagation(),zn(Be),ot.eventSource="keyboard")},[Pe,mt,K,Se]),Lt=B?.(Z)??k,it=kme(_e),{getThumbStyle:St,rootStyle:Yt,trackStyle:wt,innerTrackStyle:Gt}=C.exports.useMemo(()=>{const Be=Se.current,ot=it??{width:0,height:0};return YF({isReversed:$,orientation:Be.orientation,thumbRects:[ot],thumbPercents:[Re]})},[$,it,Re,Se]),ln=C.exports.useCallback(()=>{Se.current.focusThumbOnChange&&setTimeout(()=>{var ot;return(ot=_e.current)==null?void 0:ot.focus()})},[Se]);fd(()=>{const Be=Se.current;ln(),Be.eventSource==="keyboard"&&D?.(Be.value)},[Z,D]);function on(Be){const ot=dt(Be);ot!=null&&ot!==Se.current.value&&j(ot)}GF(Je,{onPanSessionStart(Be){const ot=Se.current;!ot.isInteractive||(V(!0),ln(),on(Be),O?.(ot.value))},onPanSessionEnd(){const Be=Se.current;!Be.isInteractive||(V(!1),D?.(Be.value))},onPan(Be){!Se.current.isInteractive||on(Be)}});const Oe=C.exports.useCallback((Be={},ot=null)=>({...Be,...R,ref:Wn(ot,Je),tabIndex:-1,"aria-disabled":O0(h),"data-focused":Oa(J),style:{...Be.style,...Yt}}),[R,h,J,Yt]),Ze=C.exports.useCallback((Be={},ot=null)=>({...Be,ref:Wn(ot,Me),id:gt,"data-disabled":Oa(h),style:{...Be.style,...wt}}),[h,gt,wt]),Zt=C.exports.useCallback((Be={},ot=null)=>({...Be,ref:ot,style:{...Be.style,...Gt}}),[Gt]),qt=C.exports.useCallback((Be={},ot=null)=>({...Be,ref:Wn(ot,_e),role:"slider",tabIndex:ee?0:void 0,id:_t,"data-active":Oa(te),"aria-valuetext":Lt,"aria-valuemin":t,"aria-valuemax":n,"aria-valuenow":Z,"aria-orientation":l,"aria-disabled":O0(h),"aria-readonly":O0(g),"aria-label":P,"aria-labelledby":P?void 0:E,style:{...Be.style,...St(0)},onKeyDown:D0(Be.onKeyDown,et),onFocus:D0(Be.onFocus,()=>re(!0)),onBlur:D0(Be.onBlur,()=>re(!1))}),[ee,_t,te,Lt,t,n,Z,l,h,g,P,E,St,et]),ke=C.exports.useCallback((Be,ot=null)=>{const un=!(Be.valuen),zn=Z>=Be.value,He=r5(Be.value,t,n),ht={position:"absolute",pointerEvents:"none",...zme({orientation:l,vertical:{bottom:$?`${100-He}%`:`${He}%`},horizontal:{left:$?`${100-He}%`:`${He}%`}})};return{...Be,ref:ot,role:"presentation","aria-hidden":!0,"data-disabled":Oa(h),"data-invalid":Oa(!un),"data-highlighted":Oa(zn),style:{...Be.style,...ht}}},[h,$,n,t,l,Z]),It=C.exports.useCallback((Be={},ot=null)=>({...Be,ref:ot,type:"hidden",value:Z,name:T}),[T,Z]);return{state:{value:Z,isFocused:J,isDragging:te},actions:Pe,getRootProps:Oe,getTrackProps:Ze,getInnerTrackProps:Zt,getThumbProps:qt,getMarkerProps:ke,getInputProps:It}}function zme(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function Fme(e,t){return t"}),[Hme,$S]=_n({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),__=Ee((e,t)=>{const n=Ii("Slider",e),r=yn(e),{direction:i}=h1();r.direction=i;const{getInputProps:o,getRootProps:a,...s}=Bme(r),l=a(),u=o({},t);return se.createElement($me,{value:s},se.createElement(Hme,{value:n},se.createElement(be.div,{...l,className:Ed("chakra-slider",e.className),__css:n.container},e.children,b("input",{...u}))))});__.defaultProps={orientation:"horizontal"};__.displayName="Slider";var XF=Ee((e,t)=>{const{getThumbProps:n}=FS(),r=$S(),i=n(e,t);return se.createElement(be.div,{...i,className:Ed("chakra-slider__thumb",e.className),__css:r.thumb})});XF.displayName="SliderThumb";var ZF=Ee((e,t)=>{const{getTrackProps:n}=FS(),r=$S(),i=n(e,t);return se.createElement(be.div,{...i,className:Ed("chakra-slider__track",e.className),__css:r.track})});ZF.displayName="SliderTrack";var QF=Ee((e,t)=>{const{getInnerTrackProps:n}=FS(),r=$S(),i=n(e,t);return se.createElement(be.div,{...i,className:Ed("chakra-slider__filled-track",e.className),__css:r.filledTrack})});QF.displayName="SliderFilledTrack";var ZC=Ee((e,t)=>{const{getMarkerProps:n}=FS(),r=$S(),i=n(e,t);return se.createElement(be.div,{...i,className:Ed("chakra-slider__marker",e.className),__css:r.mark})});ZC.displayName="SliderMark";var Wme=(...e)=>e.filter(Boolean).join(" "),LA=e=>e?"":void 0,k_=Ee(function(t,n){const r=Ii("Switch",t),{spacing:i="0.5rem",children:o,...a}=yn(t),{state:s,getInputProps:l,getCheckboxProps:u,getRootProps:h,getLabelProps:g}=KB(a),m=C.exports.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),v=C.exports.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),S=C.exports.useMemo(()=>({userSelect:"none",marginStart:i,...r.label}),[i,r.label]);return se.createElement(be.label,{...h(),className:Wme("chakra-switch",t.className),__css:m},b("input",{className:"chakra-switch__input",...l({},n)}),se.createElement(be.span,{...u(),className:"chakra-switch__track",__css:v},se.createElement(be.span,{__css:r.thumb,className:"chakra-switch__thumb","data-checked":LA(s.isChecked),"data-hover":LA(s.isHovered)})),o&&se.createElement(be.span,{className:"chakra-switch__label",...g(),__css:S},o))});k_.displayName="Switch";var b1=(...e)=>e.filter(Boolean).join(" ");function QC(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var[Vme,JF,Ume,Gme]=uN();function jme(e){const{defaultIndex:t,onChange:n,index:r,isManual:i,isLazy:o,lazyBehavior:a="unmount",orientation:s="horizontal",direction:l="ltr",...u}=e,[h,g]=C.exports.useState(t??0),[m,v]=fS({defaultValue:t??0,value:r,onChange:n});C.exports.useEffect(()=>{r!=null&&g(r)},[r]);const S=Ume(),w=C.exports.useId();return{id:`tabs-${e.id??w}`,selectedIndex:m,focusedIndex:h,setSelectedIndex:v,setFocusedIndex:g,isManual:i,isLazy:o,lazyBehavior:a,orientation:s,descendants:S,direction:l,htmlProps:u}}var[Yme,p2]=_n({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function qme(e){const{focusedIndex:t,orientation:n,direction:r}=p2(),i=JF(),o=C.exports.useCallback(a=>{const s=()=>{var E;const T=i.nextEnabled(t);T&&((E=T.node)==null||E.focus())},l=()=>{var E;const T=i.prevEnabled(t);T&&((E=T.node)==null||E.focus())},u=()=>{var E;const T=i.firstEnabled();T&&((E=T.node)==null||E.focus())},h=()=>{var E;const T=i.lastEnabled();T&&((E=T.node)==null||E.focus())},g=n==="horizontal",m=n==="vertical",v=a.key,S=r==="ltr"?"ArrowLeft":"ArrowRight",w=r==="ltr"?"ArrowRight":"ArrowLeft",P={[S]:()=>g&&l(),[w]:()=>g&&s(),ArrowDown:()=>m&&s(),ArrowUp:()=>m&&l(),Home:u,End:h}[v];P&&(a.preventDefault(),P(a))},[i,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:QC(e.onKeyDown,o)}}function Kme(e){const{isDisabled:t,isFocusable:n,...r}=e,{setSelectedIndex:i,isManual:o,id:a,setFocusedIndex:s,selectedIndex:l}=p2(),{index:u,register:h}=Gme({disabled:t&&!n}),g=u===l,m=()=>{i(u)},v=()=>{s(u),!o&&!(t&&n)&&i(u)},S=Hhe({...r,ref:Wn(h,e.ref),isDisabled:t,isFocusable:n,onClick:QC(e.onClick,m)}),w="button";return{...S,id:e$(a,u),role:"tab",tabIndex:g?0:-1,type:w,"aria-selected":g,"aria-controls":t$(a,u),onFocus:t?void 0:QC(e.onFocus,v)}}var[Xme,Zme]=_n({});function Qme(e){const t=p2(),{id:n,selectedIndex:r}=t,o=TS(e.children).map((a,s)=>C.exports.createElement(Xme,{key:s,value:{isSelected:s===r,id:t$(n,s),tabId:e$(n,s),selectedIndex:r}},a));return{...e,children:o}}function Jme(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:i}=p2(),{isSelected:o,id:a,tabId:s}=Zme(),l=C.exports.useRef(!1);o&&(l.current=!0);const u=Bz({wasSelected:l.current,isSelected:o,enabled:r,mode:i});return{tabIndex:0,...n,children:u?t:null,role:"tabpanel","aria-labelledby":s,hidden:!o,id:a}}function eve(){const e=p2(),t=JF(),{selectedIndex:n,orientation:r}=e,i=r==="horizontal",o=r==="vertical",[a,s]=C.exports.useState(()=>{if(i)return{left:0,width:0};if(o)return{top:0,height:0}}),[l,u]=C.exports.useState(!1);return ks(()=>{if(n==null)return;const h=t.item(n);if(h==null)return;i&&s({left:h.node.offsetLeft,width:h.node.offsetWidth}),o&&s({top:h.node.offsetTop,height:h.node.offsetHeight});const g=requestAnimationFrame(()=>{u(!0)});return()=>{g&&cancelAnimationFrame(g)}},[n,i,o,t]),{position:"absolute",transitionProperty:"left, right, top, bottom, height, width",transitionDuration:l?"200ms":"0ms",transitionTimingFunction:"cubic-bezier(0, 0, 0.2, 1)",...a}}function e$(e,t){return`${e}--tab-${t}`}function t$(e,t){return`${e}--tabpanel-${t}`}var[tve,g2]=_n({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),n$=Ee(function(t,n){const r=Ii("Tabs",t),{children:i,className:o,...a}=yn(t),{htmlProps:s,descendants:l,...u}=jme(a),h=C.exports.useMemo(()=>u,[u]),{isFitted:g,...m}=s;return se.createElement(Vme,{value:l},se.createElement(Yme,{value:h},se.createElement(tve,{value:r},se.createElement(be.div,{className:b1("chakra-tabs",o),ref:n,...m,__css:r.root},i))))});n$.displayName="Tabs";var nve=Ee(function(t,n){const r=eve(),i={...t.style,...r},o=g2();return se.createElement(be.div,{ref:n,...t,className:b1("chakra-tabs__tab-indicator",t.className),style:i,__css:o.indicator})});nve.displayName="TabIndicator";var rve=Ee(function(t,n){const r=qme({...t,ref:n}),o={display:"flex",...g2().tablist};return se.createElement(be.div,{...r,className:b1("chakra-tabs__tablist",t.className),__css:o})});rve.displayName="TabList";var r$=Ee(function(t,n){const r=Jme({...t,ref:n}),i=g2();return se.createElement(be.div,{outline:"0",...r,className:b1("chakra-tabs__tab-panel",t.className),__css:i.tabpanel})});r$.displayName="TabPanel";var i$=Ee(function(t,n){const r=Qme(t),i=g2();return se.createElement(be.div,{...r,width:"100%",ref:n,className:b1("chakra-tabs__tab-panels",t.className),__css:i.tabpanels})});i$.displayName="TabPanels";var o$=Ee(function(t,n){const r=g2(),i=Kme({...t,ref:n}),o={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return se.createElement(be.button,{...i,className:b1("chakra-tabs__tab",t.className),__css:o})});o$.displayName="Tab";var ive=(...e)=>e.filter(Boolean).join(" ");function ove(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var ave=["h","minH","height","minHeight"],a$=Ee((e,t)=>{const n=so("Textarea",e),{className:r,rows:i,...o}=yn(e),a=B8(o),s=i?ove(n,ave):n;return se.createElement(be.textarea,{ref:t,rows:i,...a,className:ive("chakra-textarea",r),__css:s})});a$.displayName="Textarea";function sve(e,t){const n=dr(e);C.exports.useEffect(()=>{if(t==null)return;let r=null;return r=window.setTimeout(()=>{n()},t),()=>{r&&window.clearTimeout(r)}},[t,n])}function JC(e,...t){return lve(e)?e(...t):e}var lve=e=>typeof e=="function";function uve(e,t){const n=e??"bottom",i={"top-start":{ltr:"top-left",rtl:"top-right"},"top-end":{ltr:"top-right",rtl:"top-left"},"bottom-start":{ltr:"bottom-left",rtl:"bottom-right"},"bottom-end":{ltr:"bottom-right",rtl:"bottom-left"}}[n];return i?.[t]??n}var cve=(e,t)=>e.find(n=>n.id===t);function AA(e,t){const n=s$(e,t),r=n?e[n].findIndex(i=>i.id===t):-1;return{position:n,index:r}}function s$(e,t){for(const[n,r]of Object.entries(e))if(cve(r,t))return n}function dve(e){const t=e.includes("right"),n=e.includes("left");let r="center";return t&&(r="flex-end"),n&&(r="flex-start"),{display:"flex",flexDirection:"column",alignItems:r}}function fve(e){const n=e==="top"||e==="bottom"?"0 auto":void 0,r=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,i=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,o=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",a=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:5500,pointerEvents:"none",display:"flex",flexDirection:"column",margin:n,top:r,bottom:i,right:o,left:a}}var hve={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},yl=pve(hve);function pve(e){let t=e;const n=new Set,r=i=>{t=i(t),n.forEach(o=>o())};return{getState:()=>t,subscribe:i=>(n.add(i),()=>{r(()=>e),n.delete(i)}),removeToast:(i,o)=>{r(a=>({...a,[o]:a[o].filter(s=>s.id!=i)}))},notify:(i,o)=>{const a=gve(i,o),{position:s,id:l}=a;return r(u=>{const g=s.includes("top")?[a,...u[s]??[]]:[...u[s]??[],a];return{...u,[s]:g}}),l},update:(i,o)=>{!i||r(a=>{const s={...a},{position:l,index:u}=AA(s,i);return l&&u!==-1&&(s[l][u]={...s[l][u],...o,message:l$(o)}),s})},closeAll:({positions:i}={})=>{r(o=>(i??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,u)=>(l[u]=o[u].map(h=>({...h,requestClose:!0})),l),{...o}))},close:i=>{r(o=>{const a=s$(o,i);return a?{...o,[a]:o[a].map(s=>s.id==i?{...s,requestClose:!0}:s)}:o})},isActive:i=>Boolean(AA(yl.getState(),i).position)}}var MA=0;function gve(e,t={}){MA+=1;const n=t.id??MA,r=t.position??"bottom";return{id:n,message:e,position:r,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>yl.removeToast(String(n),r),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var mve=e=>{const{status:t,variant:n="solid",id:r,title:i,isClosable:o,onClose:a,description:s,icon:l}=e,u=r?{root:`toast-${r}`,title:`toast-${r}-title`,description:`toast-${r}-description`}:void 0;return se.createElement(VB,{addRole:!1,status:t,variant:n,id:u?.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto"},b(GB,{children:l}),se.createElement(be.div,{flex:"1",maxWidth:"100%"},i&&b(jB,{id:u?.title,children:i}),s&&b(UB,{id:u?.description,display:"block",children:s})),o&&b(MS,{size:"sm",onClick:a,position:"absolute",insetEnd:1,top:1}))};function l$(e={}){const{render:t,toastComponent:n=mve}=e;return i=>typeof t=="function"?t({...i,...e}):b(n,{...i,...e})}function vve(e,t){const n=i=>({...t,...i,position:uve(i?.position??t?.position,e)}),r=i=>{const o=n(i),a=l$(o);return yl.notify(a,o)};return r.update=(i,o)=>{yl.update(i,n(o))},r.promise=(i,o)=>{const a=r({...o.loading,status:"loading",duration:null});i.then(s=>r.update(a,{status:"success",duration:5e3,...JC(o.success,s)})).catch(s=>r.update(a,{status:"error",duration:5e3,...JC(o.error,s)}))},r.closeAll=yl.closeAll,r.close=yl.close,r.isActive=yl.isActive,r}function m2(e){const{theme:t}=aN();return C.exports.useMemo(()=>vve(t.direction,e),[e,t.direction])}var yve={initial:e=>{const{position:t}=e,n=["top","bottom"].includes(t)?"y":"x";let r=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(r=1),{opacity:0,[n]:r*24}},animate:{opacity:1,y:0,x:0,scale:1,transition:{duration:.4,ease:[.4,0,.2,1]}},exit:{opacity:0,scale:.85,transition:{duration:.2,ease:[.4,0,1,1]}}},u$=C.exports.memo(e=>{const{id:t,message:n,onCloseComplete:r,onRequestRemove:i,requestClose:o=!1,position:a="bottom",duration:s=5e3,containerStyle:l,motionVariants:u=yve,toastSpacing:h="0.5rem"}=e,[g,m]=C.exports.useState(s),v=vue();fd(()=>{v||r?.()},[v]),fd(()=>{m(s)},[s]);const S=()=>m(null),w=()=>m(s),k=()=>{v&&i()};C.exports.useEffect(()=>{v&&o&&i()},[v,o,i]),sve(k,g);const P=C.exports.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:h,...l}),[l,h]),E=C.exports.useMemo(()=>dve(a),[a]);return se.createElement(Fl.li,{layout:!0,className:"chakra-toast",variants:u,initial:"initial",animate:"animate",exit:"exit",onHoverStart:S,onHoverEnd:w,custom:{position:a},style:E},se.createElement(be.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:P},JC(n,{id:t,onClose:k})))});u$.displayName="ToastComponent";var Sve=e=>{const t=C.exports.useSyncExternalStore(yl.subscribe,yl.getState,yl.getState),{children:n,motionVariants:r,component:i=u$,portalProps:o}=e,s=Object.keys(t).map(l=>{const u=t[l];return b("ul",{role:"region","aria-live":"polite",id:`chakra-toast-manager-${l}`,style:fve(l),children:b(wd,{initial:!1,children:u.map(h=>b(i,{motionVariants:r,...h},h.id))})},l)});return Q(An,{children:[n,b(wh,{...o,children:s})]})};function bve(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function xve(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var wve={exit:{scale:.85,opacity:0,transition:{opacity:{duration:.15,easings:"easeInOut"},scale:{duration:.2,easings:"easeInOut"}}},enter:{scale:1,opacity:1,transition:{opacity:{easings:"easeOut",duration:.2},scale:{duration:.2,ease:[.175,.885,.4,1.1]}}}};function Zg(...e){return function(n){e.some(r=>(r?.(n),n?.defaultPrevented))}}var s5=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},e7=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function Cve(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:i,closeOnScroll:o,closeOnPointerDown:a=i,closeOnEsc:s=!0,onOpen:l,onClose:u,placement:h,id:g,isOpen:m,defaultIsOpen:v,arrowSize:S=10,arrowShadowColor:w,arrowPadding:k,modifiers:P,isDisabled:E,gutter:T,offset:M,direction:R,...O}=e,{isOpen:D,onOpen:B,onClose:$}=Nz({isOpen:m,defaultIsOpen:v,onOpen:l,onClose:u}),{referenceRef:W,getPopperProps:j,getArrowInnerProps:te,getArrowProps:V}=Dz({enabled:D,placement:h,arrowPadding:k,modifiers:P,gutter:T,offset:M,direction:R}),J=C.exports.useId(),ee=`tooltip-${g??J}`,K=C.exports.useRef(null),G=C.exports.useRef(),Z=C.exports.useCallback(()=>{G.current&&(clearTimeout(G.current),G.current=void 0)},[]),ce=C.exports.useRef(),me=C.exports.useCallback(()=>{ce.current&&(clearTimeout(ce.current),ce.current=void 0)},[]),Re=C.exports.useCallback(()=>{me(),$()},[$,me]),xe=_ve(K,Re),Se=C.exports.useCallback(()=>{if(!E&&!G.current){xe();const dt=e7(K);G.current=dt.setTimeout(B,t)}},[xe,E,B,t]),Me=C.exports.useCallback(()=>{Z();const dt=e7(K);ce.current=dt.setTimeout(Re,n)},[n,Re,Z]),_e=C.exports.useCallback(()=>{D&&r&&Me()},[r,Me,D]),Je=C.exports.useCallback(()=>{D&&a&&Me()},[a,Me,D]),Xe=C.exports.useCallback(dt=>{D&&dt.key==="Escape"&&Me()},[D,Me]);th(()=>s5(K),"keydown",s?Xe:void 0),th(()=>s5(K),"scroll",()=>{D&&o&&Re()}),C.exports.useEffect(()=>{!E||(Z(),D&&$())},[E,D,$,Z]),C.exports.useEffect(()=>()=>{Z(),me()},[Z,me]),th(()=>K.current,"pointerleave",Me);const ft=C.exports.useCallback((dt={},mt=null)=>({...dt,ref:Wn(K,mt,W),onPointerEnter:Zg(dt.onPointerEnter,et=>{et.pointerType!=="touch"&&Se()}),onClick:Zg(dt.onClick,_e),onPointerDown:Zg(dt.onPointerDown,Je),onFocus:Zg(dt.onFocus,Se),onBlur:Zg(dt.onBlur,Me),"aria-describedby":D?ee:void 0}),[Se,Me,Je,D,ee,_e,W]),_t=C.exports.useCallback((dt={},mt=null)=>j({...dt,style:{...dt.style,[Wr.arrowSize.var]:S?`${S}px`:void 0,[Wr.arrowShadowColor.var]:w}},mt),[j,S,w]),gt=C.exports.useCallback((dt={},mt=null)=>{const Pe={...dt.style,position:"relative",transformOrigin:Wr.transformOrigin.varRef};return{ref:mt,...O,...dt,id:ee,role:"tooltip",style:Pe}},[O,ee]);return{isOpen:D,show:Se,hide:Me,getTriggerProps:ft,getTooltipProps:gt,getTooltipPositionerProps:_t,getArrowProps:V,getArrowInnerProps:te}}var vw="chakra-ui:close-tooltip";function _ve(e,t){return C.exports.useEffect(()=>{const n=s5(e);return n.addEventListener(vw,t),()=>n.removeEventListener(vw,t)},[t,e]),()=>{const n=s5(e),r=e7(e);n.dispatchEvent(new r.CustomEvent(vw))}}var kve=be(Fl.div),pi=Ee((e,t)=>{const n=so("Tooltip",e),r=yn(e),i=h1(),{children:o,label:a,shouldWrapChildren:s,"aria-label":l,hasArrow:u,bg:h,portalProps:g,background:m,backgroundColor:v,bgColor:S,motionProps:w,...k}=r,P=m??v??h??S;if(P){n.bg=P;const $=$Q(i,"colors",P);n[Wr.arrowBg.var]=$}const E=Cve({...k,direction:i.direction}),T=typeof o=="string"||s;let M;if(T)M=se.createElement(be.span,{display:"inline-block",tabIndex:0,...E.getTriggerProps()},o);else{const $=C.exports.Children.only(o);M=C.exports.cloneElement($,E.getTriggerProps($.props,$.ref))}const R=!!l,O=E.getTooltipProps({},t),D=R?bve(O,["role","id"]):O,B=xve(O,["role","id"]);return a?Q(An,{children:[M,b(wd,{children:E.isOpen&&se.createElement(wh,{...g},se.createElement(be.div,{...E.getTooltipPositionerProps(),__css:{zIndex:n.zIndex,pointerEvents:"none"}},Q(kve,{variants:wve,initial:"exit",animate:"enter",exit:"exit",...w,...D,__css:n,children:[a,R&&se.createElement(be.span,{srOnly:!0,...B},l),u&&se.createElement(be.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper"},se.createElement(be.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:n.bg}}))]})))})]}):b(An,{children:o})});pi.displayName="Tooltip";var Eve=e=>{const{children:t,colorModeManager:n,portalZIndex:r,resetCSS:i=!0,theme:o={},environment:a,cssVarsRoot:s}=e,l=b(yz,{environment:a,children:t});return b(Aae,{theme:o,cssVarsRoot:s,children:Q(uD,{colorModeManager:n,options:o.config,children:[i?b(Zfe,{}):b(Xfe,{}),b(Iae,{}),r?b(zz,{zIndex:r,children:l}):l]})})};function Pve({children:e,theme:t=xae,toastOptions:n,...r}){return Q(Eve,{theme:t,...r,children:[e,b(Sve,{...n})]})}function ws(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r3?t.i-4:t.i:Array.isArray(e)?1:E_(e)?2:P_(e)?3:0}function N0(e,t){return x1(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Tve(e,t){return x1(e)===2?e.get(t):e[t]}function c$(e,t,n){var r=x1(e);r===2?e.set(t,n):r===3?(e.delete(t),e.add(n)):e[t]=n}function d$(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function E_(e){return Ove&&e instanceof Map}function P_(e){return Dve&&e instanceof Set}function Af(e){return e.o||e.t}function T_(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=h$(e);delete t[rr];for(var n=B0(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=Lve),Object.freeze(e),t&&hh(e,function(n,r){return L_(r,!0)},!0)),e}function Lve(){ws(2)}function A_(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function Ll(e){var t=i7[e];return t||ws(18,e),t}function Ave(e,t){i7[e]||(i7[e]=t)}function t7(){return Wv}function yw(e,t){t&&(Ll("Patches"),e.u=[],e.s=[],e.v=t)}function l5(e){n7(e),e.p.forEach(Mve),e.p=null}function n7(e){e===Wv&&(Wv=e.l)}function IA(e){return Wv={p:[],l:Wv,h:e,m:!0,_:0}}function Mve(e){var t=e[rr];t.i===0||t.i===1?t.j():t.O=!0}function Sw(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.g||Ll("ES5").S(t,e,r),r?(n[rr].P&&(l5(t),ws(4)),Tu(e)&&(e=u5(t,e),t.l||c5(t,e)),t.u&&Ll("Patches").M(n[rr].t,e,t.u,t.s)):e=u5(t,n,[]),l5(t),t.u&&t.v(t.u,t.s),e!==f$?e:void 0}function u5(e,t,n){if(A_(t))return t;var r=t[rr];if(!r)return hh(t,function(o,a){return RA(e,r,t,o,a,n)},!0),t;if(r.A!==e)return t;if(!r.P)return c5(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=T_(r.k):r.o;hh(r.i===3?new Set(i):i,function(o,a){return RA(e,r,i,o,a,n)}),c5(e,i,!1),n&&e.u&&Ll("Patches").R(r,n,e.u,e.s)}return r.o}function RA(e,t,n,r,i,o){if(gd(i)){var a=u5(e,i,o&&t&&t.i!==3&&!N0(t.D,r)?o.concat(r):void 0);if(c$(n,r,a),!gd(a))return;e.m=!1}if(Tu(i)&&!A_(i)){if(!e.h.F&&e._<1)return;u5(e,i),t&&t.A.l||c5(e,i)}}function c5(e,t,n){n===void 0&&(n=!1),e.h.F&&e.m&&L_(t,n)}function bw(e,t){var n=e[rr];return(n?Af(n):e)[t]}function OA(e,t){if(t in e)for(var n=Object.getPrototypeOf(e);n;){var r=Object.getOwnPropertyDescriptor(n,t);if(r)return r;n=Object.getPrototypeOf(n)}}function Hc(e){e.P||(e.P=!0,e.l&&Hc(e.l))}function xw(e){e.o||(e.o=T_(e.t))}function r7(e,t,n){var r=E_(t)?Ll("MapSet").N(t,n):P_(t)?Ll("MapSet").T(t,n):e.g?function(i,o){var a=Array.isArray(i),s={i:a?1:0,A:o?o.A:t7(),P:!1,I:!1,D:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=s,u=Vv;a&&(l=[s],u=mm);var h=Proxy.revocable(l,u),g=h.revoke,m=h.proxy;return s.k=m,s.j=g,m}(t,n):Ll("ES5").J(t,n);return(n?n.A:t7()).p.push(r),r}function Ive(e){return gd(e)||ws(22,e),function t(n){if(!Tu(n))return n;var r,i=n[rr],o=x1(n);if(i){if(!i.P&&(i.i<4||!Ll("ES5").K(i)))return i.t;i.I=!0,r=DA(n,o),i.I=!1}else r=DA(n,o);return hh(r,function(a,s){i&&Tve(i.t,a)===s||c$(r,a,t(s))}),o===3?new Set(r):r}(e)}function DA(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return T_(e)}function Rve(){function e(o,a){var s=i[o];return s?s.enumerable=a:i[o]=s={configurable:!0,enumerable:a,get:function(){var l=this[rr];return Vv.get(l,o)},set:function(l){var u=this[rr];Vv.set(u,o,l)}},s}function t(o){for(var a=o.length-1;a>=0;a--){var s=o[a][rr];if(!s.P)switch(s.i){case 5:r(s)&&Hc(s);break;case 4:n(s)&&Hc(s)}}}function n(o){for(var a=o.t,s=o.k,l=B0(s),u=l.length-1;u>=0;u--){var h=l[u];if(h!==rr){var g=a[h];if(g===void 0&&!N0(a,h))return!0;var m=s[h],v=m&&m[rr];if(v?v.t!==g:!d$(m,g))return!0}}var S=!!a[rr];return l.length!==B0(a).length+(S?0:1)}function r(o){var a=o.k;if(a.length!==o.t.length)return!0;var s=Object.getOwnPropertyDescriptor(a,a.length-1);if(s&&!s.get)return!0;for(var l=0;l1?P-1:0),T=1;T1?h-1:0),m=1;m=0;i--){var o=r[i];if(o.path.length===0&&o.op==="replace"){n=o.value;break}}i>-1&&(r=r.slice(i+1));var a=Ll("Patches").$;return gd(n)?a(n,r):this.produce(n,function(s){return a(s,r)})},e}(),ga=new Bve,p$=ga.produce;ga.produceWithPatches.bind(ga);ga.setAutoFreeze.bind(ga);ga.setUseProxies.bind(ga);ga.applyPatches.bind(ga);ga.createDraft.bind(ga);ga.finishDraft.bind(ga);function FA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function $A(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(Fi(1));return n(I_)(e,t)}if(typeof e!="function")throw new Error(Fi(2));var i=e,o=t,a=[],s=a,l=!1;function u(){s===a&&(s=a.slice())}function h(){if(l)throw new Error(Fi(3));return o}function g(w){if(typeof w!="function")throw new Error(Fi(4));if(l)throw new Error(Fi(5));var k=!0;return u(),s.push(w),function(){if(!!k){if(l)throw new Error(Fi(6));k=!1,u();var E=s.indexOf(w);s.splice(E,1),a=null}}}function m(w){if(!zve(w))throw new Error(Fi(7));if(typeof w.type>"u")throw new Error(Fi(8));if(l)throw new Error(Fi(9));try{l=!0,o=i(o,w)}finally{l=!1}for(var k=a=s,P=0;P"u")throw new Error(Fi(12));if(typeof n(void 0,{type:d5.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Fi(13))})}function g$(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(Fi(14));g[v]=k,h=h||k!==w}return h=h||o.length!==Object.keys(l).length,h?g:l}}function f5(){for(var e=arguments.length,t=new Array(e),n=0;n-1){var u=n[l];return l>0&&(n.splice(l,1),n.unshift(u)),u.value}return h5}function i(s,l){r(s)===h5&&(n.unshift({key:s,value:l}),n.length>e&&n.pop())}function o(){return n}function a(){n=[]}return{get:r,put:i,getEntries:o,clear:a}}var Vve=function(t,n){return t===n};function Uve(e){return function(n,r){if(n===null||r===null||n.length!==r.length)return!1;for(var i=n.length,o=0;o1?t-1:0),r=1;r0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?E2e:k2e;b$.useSyncExternalStore=i1.useSyncExternalStore!==void 0?i1.useSyncExternalStore:P2e;(function(e){e.exports=b$})(S$);var x$={exports:{}},w$={};/** + * @license React + * use-sync-external-store-shim/with-selector.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var WS=C.exports,T2e=S$.exports;function L2e(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var A2e=typeof Object.is=="function"?Object.is:L2e,M2e=T2e.useSyncExternalStore,I2e=WS.useRef,R2e=WS.useEffect,O2e=WS.useMemo,D2e=WS.useDebugValue;w$.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=I2e(null);if(o.current===null){var a={hasValue:!1,value:null};o.current=a}else a=o.current;o=O2e(function(){function l(v){if(!u){if(u=!0,h=v,v=r(v),i!==void 0&&a.hasValue){var S=a.value;if(i(S,v))return g=S}return g=v}if(S=g,A2e(h,v))return S;var w=r(v);return i!==void 0&&i(S,w)?S:(h=v,g=w)}var u=!1,h,g,m=n===void 0?null:n;return[function(){return l(t())},m===null?void 0:function(){return l(m())}]},[t,n,r,i]);var s=M2e(e,o[0],o[1]);return R2e(function(){a.hasValue=!0,a.value=s},[s]),D2e(s),s};(function(e){e.exports=w$})(x$);function N2e(e){e()}let C$=N2e;const B2e=e=>C$=e,z2e=()=>C$,md=C.exports.createContext(null);function _$(){return C.exports.useContext(md)}const F2e=()=>{throw new Error("uSES not initialized!")};let k$=F2e;const $2e=e=>{k$=e},H2e=(e,t)=>e===t;function W2e(e=md){const t=e===md?_$:()=>C.exports.useContext(e);return function(r,i=H2e){const{store:o,subscription:a,getServerState:s}=t(),l=k$(a.addNestedSub,o.getState,s||o.getState,r,i);return C.exports.useDebugValue(l),l}}const V2e=W2e();var U2e={exports:{}},Rn={};/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var O_=Symbol.for("react.element"),D_=Symbol.for("react.portal"),VS=Symbol.for("react.fragment"),US=Symbol.for("react.strict_mode"),GS=Symbol.for("react.profiler"),jS=Symbol.for("react.provider"),YS=Symbol.for("react.context"),G2e=Symbol.for("react.server_context"),qS=Symbol.for("react.forward_ref"),KS=Symbol.for("react.suspense"),XS=Symbol.for("react.suspense_list"),ZS=Symbol.for("react.memo"),QS=Symbol.for("react.lazy"),j2e=Symbol.for("react.offscreen"),E$;E$=Symbol.for("react.module.reference");function qa(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case O_:switch(e=e.type,e){case VS:case GS:case US:case KS:case XS:return e;default:switch(e=e&&e.$$typeof,e){case G2e:case YS:case qS:case QS:case ZS:case jS:return e;default:return t}}case D_:return t}}}Rn.ContextConsumer=YS;Rn.ContextProvider=jS;Rn.Element=O_;Rn.ForwardRef=qS;Rn.Fragment=VS;Rn.Lazy=QS;Rn.Memo=ZS;Rn.Portal=D_;Rn.Profiler=GS;Rn.StrictMode=US;Rn.Suspense=KS;Rn.SuspenseList=XS;Rn.isAsyncMode=function(){return!1};Rn.isConcurrentMode=function(){return!1};Rn.isContextConsumer=function(e){return qa(e)===YS};Rn.isContextProvider=function(e){return qa(e)===jS};Rn.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===O_};Rn.isForwardRef=function(e){return qa(e)===qS};Rn.isFragment=function(e){return qa(e)===VS};Rn.isLazy=function(e){return qa(e)===QS};Rn.isMemo=function(e){return qa(e)===ZS};Rn.isPortal=function(e){return qa(e)===D_};Rn.isProfiler=function(e){return qa(e)===GS};Rn.isStrictMode=function(e){return qa(e)===US};Rn.isSuspense=function(e){return qa(e)===KS};Rn.isSuspenseList=function(e){return qa(e)===XS};Rn.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===VS||e===GS||e===US||e===KS||e===XS||e===j2e||typeof e=="object"&&e!==null&&(e.$$typeof===QS||e.$$typeof===ZS||e.$$typeof===jS||e.$$typeof===YS||e.$$typeof===qS||e.$$typeof===E$||e.getModuleId!==void 0)};Rn.typeOf=qa;(function(e){e.exports=Rn})(U2e);function Y2e(){const e=z2e();let t=null,n=null;return{clear(){t=null,n=null},notify(){e(()=>{let r=t;for(;r;)r.callback(),r=r.next})},get(){let r=[],i=t;for(;i;)r.push(i),i=i.next;return r},subscribe(r){let i=!0,o=n={callback:r,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){!i||t===null||(i=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}const YA={notify(){},get:()=>[]};function q2e(e,t){let n,r=YA;function i(g){return l(),r.subscribe(g)}function o(){r.notify()}function a(){h.onStateChange&&h.onStateChange()}function s(){return Boolean(n)}function l(){n||(n=t?t.addNestedSub(a):e.subscribe(a),r=Y2e())}function u(){n&&(n(),n=void 0,r.clear(),r=YA)}const h={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:a,isSubscribed:s,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return h}const K2e=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",X2e=K2e?C.exports.useLayoutEffect:C.exports.useEffect;function Z2e({store:e,context:t,children:n,serverState:r}){const i=C.exports.useMemo(()=>{const s=q2e(e);return{store:e,subscription:s,getServerState:r?()=>r:void 0}},[e,r]),o=C.exports.useMemo(()=>e.getState(),[e]);return X2e(()=>{const{subscription:s}=i;return s.onStateChange=s.notifyNestedSubs,s.trySubscribe(),o!==e.getState()&&s.notifyNestedSubs(),()=>{s.tryUnsubscribe(),s.onStateChange=void 0}},[i,o]),b((t||md).Provider,{value:i,children:n})}function P$(e=md){const t=e===md?_$:()=>C.exports.useContext(e);return function(){const{store:r}=t();return r}}const Q2e=P$();function J2e(e=md){const t=e===md?Q2e:P$(e);return function(){return t().dispatch}}const eye=J2e();$2e(x$.exports.useSyncExternalStoreWithSelector);B2e(zl.exports.unstable_batchedUpdates);var N_="persist:",T$="persist/FLUSH",B_="persist/REHYDRATE",L$="persist/PAUSE",A$="persist/PERSIST",M$="persist/PURGE",I$="persist/REGISTER",tye=-1;function Q3(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Q3=function(n){return typeof n}:Q3=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Q3(e)}function qA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function nye(e){for(var t=1;t{Object.keys(O).forEach(function(D){!T(D)||h[D]!==O[D]&&m.indexOf(D)===-1&&m.push(D)}),Object.keys(h).forEach(function(D){O[D]===void 0&&T(D)&&m.indexOf(D)===-1&&h[D]!==void 0&&m.push(D)}),v===null&&(v=setInterval(P,i)),h=O},o)}function P(){if(m.length===0){v&&clearInterval(v),v=null;return}var O=m.shift(),D=r.reduce(function(B,$){return $.in(B,O,h)},h[O]);if(D!==void 0)try{g[O]=l(D)}catch(B){console.error("redux-persist/createPersistoid: error serializing state",B)}else delete g[O];m.length===0&&E()}function E(){Object.keys(g).forEach(function(O){h[O]===void 0&&delete g[O]}),S=s.setItem(a,l(g)).catch(M)}function T(O){return!(n&&n.indexOf(O)===-1&&O!=="_persist"||t&&t.indexOf(O)!==-1)}function M(O){u&&u(O)}var R=function(){for(;m.length!==0;)P();return S||Promise.resolve()};return{update:k,flush:R}}function aye(e){return JSON.stringify(e)}function sye(e){var t=e.transforms||[],n="".concat(e.keyPrefix!==void 0?e.keyPrefix:N_).concat(e.key),r=e.storage;e.debug;var i;return e.deserialize===!1?i=function(a){return a}:typeof e.deserialize=="function"?i=e.deserialize:i=lye,r.getItem(n).then(function(o){if(o)try{var a={},s=i(o);return Object.keys(s).forEach(function(l){a[l]=t.reduceRight(function(u,h){return h.out(u,l,s)},i(s[l]))}),a}catch(l){throw l}else return})}function lye(e){return JSON.parse(e)}function uye(e){var t=e.storage,n="".concat(e.keyPrefix!==void 0?e.keyPrefix:N_).concat(e.key);return t.removeItem(n,cye)}function cye(e){}function KA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function cu(e){for(var t=1;t=0)&&(!Object.prototype.propertyIsEnumerable.call(e,r)||(n[r]=e[r]))}return n}function hye(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var pye=5e3;function gye(e,t){var n=e.version!==void 0?e.version:tye;e.debug;var r=e.stateReconciler===void 0?iye:e.stateReconciler,i=e.getStoredState||sye,o=e.timeout!==void 0?e.timeout:pye,a=null,s=!1,l=!0,u=function(g){return g._persist.rehydrated&&a&&!l&&a.update(g),g};return function(h,g){var m=h||{},v=m._persist,S=fye(m,["_persist"]),w=S;if(g.type===A$){var k=!1,P=function(B,$){k||(g.rehydrate(e.key,B,$),k=!0)};if(o&&setTimeout(function(){!k&&P(void 0,new Error('redux-persist: persist timed out for persist key "'.concat(e.key,'"')))},o),l=!1,a||(a=oye(e)),v)return cu({},t(w,g),{_persist:v});if(typeof g.rehydrate!="function"||typeof g.register!="function")throw new Error("redux-persist: either rehydrate or register is not a function on the PERSIST action. This can happen if the action is being replayed. This is an unexplored use case, please open an issue and we will figure out a resolution.");return g.register(e.key),i(e).then(function(D){var B=e.migrate||function($,W){return Promise.resolve($)};B(D,n).then(function($){P($)},function($){P(void 0,$)})},function(D){P(void 0,D)}),cu({},t(w,g),{_persist:{version:n,rehydrated:!1}})}else{if(g.type===M$)return s=!0,g.result(uye(e)),cu({},t(w,g),{_persist:v});if(g.type===T$)return g.result(a&&a.flush()),cu({},t(w,g),{_persist:v});if(g.type===L$)l=!0;else if(g.type===B_){if(s)return cu({},w,{_persist:cu({},v,{rehydrated:!0})});if(g.key===e.key){var E=t(w,g),T=g.payload,M=r!==!1&&T!==void 0?r(T,h,E,e):E,R=cu({},M,{_persist:cu({},v,{rehydrated:!0})});return u(R)}}}if(!v)return t(h,g);var O=t(w,g);return O===w?h:u(cu({},O,{_persist:v}))}}function XA(e){return yye(e)||vye(e)||mye()}function mye(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function vye(e){if(Symbol.iterator in Object(e)||Object.prototype.toString.call(e)==="[object Arguments]")return Array.from(e)}function yye(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t0&&arguments[0]!==void 0?arguments[0]:R$,n=arguments.length>1?arguments[1]:void 0;switch(n.type){case I$:return a7({},t,{registry:[].concat(XA(t.registry),[n.key])});case B_:var r=t.registry.indexOf(n.key),i=XA(t.registry);return i.splice(r,1),a7({},t,{registry:i,bootstrapped:i.length===0});default:return t}};function xye(e,t,n){var r=n||!1,i=I_(bye,R$,t&&t.enhancer?t.enhancer:void 0),o=function(u){i.dispatch({type:I$,key:u})},a=function(u,h,g){var m={type:B_,payload:h,err:g,key:u};e.dispatch(m),i.dispatch(m),r&&s.getState().bootstrapped&&(r(),r=!1)},s=a7({},i,{purge:function(){var u=[];return e.dispatch({type:M$,result:function(g){u.push(g)}}),Promise.all(u)},flush:function(){var u=[];return e.dispatch({type:T$,result:function(g){u.push(g)}}),Promise.all(u)},pause:function(){e.dispatch({type:L$})},persist:function(){e.dispatch({type:A$,register:o,rehydrate:a})}});return t&&t.manualPersist||s.persist(),s}var z_={},F_={};F_.__esModule=!0;F_.default=_ye;function J3(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?J3=function(n){return typeof n}:J3=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},J3(e)}function Ew(){}var wye={getItem:Ew,setItem:Ew,removeItem:Ew};function Cye(e){if((typeof self>"u"?"undefined":J3(self))!=="object"||!(e in self))return!1;try{var t=self[e],n="redux-persist ".concat(e," test");t.setItem(n,"test"),t.getItem(n),t.removeItem(n)}catch{return!1}return!0}function _ye(e){var t="".concat(e,"Storage");return Cye(t)?self[t]:wye}z_.__esModule=!0;z_.default=Pye;var kye=Eye(F_);function Eye(e){return e&&e.__esModule?e:{default:e}}function Pye(e){var t=(0,kye.default)(e);return{getItem:function(r){return new Promise(function(i,o){i(t.getItem(r))})},setItem:function(r,i){return new Promise(function(o,a){o(t.setItem(r,i))})},removeItem:function(r){return new Promise(function(i,o){i(t.removeItem(r))})}}}var O$=void 0,Tye=Lye(z_);function Lye(e){return e&&e.__esModule?e:{default:e}}var Aye=(0,Tye.default)("local");O$=Aye;var D$={},N$={},ph={};Object.defineProperty(ph,"__esModule",{value:!0});ph.PLACEHOLDER_UNDEFINED=ph.PACKAGE_NAME=void 0;ph.PACKAGE_NAME="redux-deep-persist";ph.PLACEHOLDER_UNDEFINED="@@placeholder/undefined";var $_={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigType=void 0,function(t){t[t.WHITELIST=0]="WHITELIST",t[t.BLACKLIST=1]="BLACKLIST"}(e.ConfigType||(e.ConfigType={}))})($_);(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.getRootKeysGroup=e.throwError=e.configValidator=e.transformsValidator=e.singleTransformValidator=e.findDuplicatesAndSubsets=e.unique=e.preserveUndefined=e.mergeDeep=e.dissocPath=e.assocPath=e.path=e.difference=e.cloneDeep=e._cloneDeep=e.getCircularPath=e.isEmpty=e.isDate=e.isString=e.isIntegerString=e.isPlainObject=e.isArray=e.isLength=e.isObjectLike=void 0;const t=ph,n=$_,r=function(V){return typeof V=="object"&&V!==null};e.isObjectLike=r;const i=function(V){return typeof V=="number"&&V>-1&&V%1==0&&V<=Number.MAX_SAFE_INTEGER};e.isLength=i,e.isArray=Array.isArray||function(V){return(0,e.isLength)(V&&V.length)&&Object.prototype.toString.call(V)==="[object Array]"};const o=function(V){return!!V&&typeof V=="object"&&!(0,e.isArray)(V)};e.isPlainObject=o;const a=function(V){return String(~~V)===V&&Number(V)>=0};e.isIntegerString=a;const s=function(V){return Object.prototype.toString.call(V)==="[object String]"};e.isString=s;const l=function(V){return Object.prototype.toString.call(V)==="[object Date]"};e.isDate=l;const u=function(V){return Object.keys(V).length===0};e.isEmpty=u;const h=Object.prototype.hasOwnProperty,g=function(V,J,re){re||(re=new Set([V])),J||(J="");for(const ee in V){const K=J?`${J}.${ee}`:ee,G=V[ee];if((0,e.isObjectLike)(G))return re.has(G)?`${J}.${ee}:`:(re.add(G),(0,e.getCircularPath)(G,K,re))}return null};e.getCircularPath=g;const m=function(V){if(!(0,e.isObjectLike)(V))return V;if((0,e.isDate)(V))return new Date(+V);const J=(0,e.isArray)(V)?[]:{};for(const re in V){const ee=V[re];J[re]=(0,e._cloneDeep)(ee)}return J};e._cloneDeep=m;const v=function(V){const J=(0,e.getCircularPath)(V);if(J)throw new Error(`${t.PACKAGE_NAME}: circular dependency detected under the path '${J}' of object you're trying to persist: ${V}`);return(0,e._cloneDeep)(V)};e.cloneDeep=v;const S=function(V,J){if(V===J)return{};if(!(0,e.isObjectLike)(V)||!(0,e.isObjectLike)(J))return J;const re=(0,e.cloneDeep)(V),ee=(0,e.cloneDeep)(J),K=Object.keys(re).reduce((Z,ce)=>(h.call(ee,ce)||(Z[ce]=void 0),Z),{});if((0,e.isDate)(re)||(0,e.isDate)(ee))return re.valueOf()===ee.valueOf()?{}:ee;const G=Object.keys(ee).reduce((Z,ce)=>{if(!h.call(re,ce))return Z[ce]=ee[ce],Z;const me=(0,e.difference)(re[ce],ee[ce]);return(0,e.isObjectLike)(me)&&(0,e.isEmpty)(me)&&!(0,e.isDate)(me)?(0,e.isArray)(re)&&!(0,e.isArray)(ee)||!(0,e.isArray)(re)&&(0,e.isArray)(ee)?ee:Z:(Z[ce]=me,Z)},K);return delete G._persist,G};e.difference=S;const w=function(V,J){return J.reduce((re,ee)=>{if(re){const K=parseInt(ee,10),G=(0,e.isIntegerString)(ee)&&K<0?re.length+K:ee;return(0,e.isString)(re)?re.charAt(G):re[G]}},V)};e.path=w;const k=function(V,J){return[...V].reverse().reduce((K,G,Z)=>{const ce=(0,e.isIntegerString)(G)?[]:{};return ce[G]=Z===0?J:K,ce},{})};e.assocPath=k;const P=function(V,J){const re=(0,e.cloneDeep)(V);return J.reduce((ee,K,G)=>(G===J.length-1&&ee&&(0,e.isObjectLike)(ee)&&delete ee[K],ee&&ee[K]),re),re};e.dissocPath=P;const E=function(V,J,...re){if(!re||!re.length)return J;const ee=re.shift(),{preservePlaceholder:K,preserveUndefined:G}=V;if((0,e.isObjectLike)(J)&&(0,e.isObjectLike)(ee))for(const Z in ee)if((0,e.isObjectLike)(ee[Z])&&(0,e.isObjectLike)(J[Z]))J[Z]||(J[Z]={}),E(V,J[Z],ee[Z]);else if((0,e.isArray)(J)){let ce=ee[Z];const me=K?t.PLACEHOLDER_UNDEFINED:void 0;G||(ce=typeof ce<"u"?ce:J[parseInt(Z,10)]),ce=ce!==t.PLACEHOLDER_UNDEFINED?ce:me,J[parseInt(Z,10)]=ce}else{const ce=ee[Z]!==t.PLACEHOLDER_UNDEFINED?ee[Z]:void 0;J[Z]=ce}return E(V,J,...re)},T=function(V,J,re){return E({preservePlaceholder:re?.preservePlaceholder,preserveUndefined:re?.preserveUndefined},(0,e.cloneDeep)(V),(0,e.cloneDeep)(J))};e.mergeDeep=T;const M=function(V,J=[],re,ee,K){if(!(0,e.isObjectLike)(V))return V;for(const G in V){const Z=V[G],ce=(0,e.isArray)(V),me=ee?ee+"."+G:G;Z===null&&(re===n.ConfigType.WHITELIST&&J.indexOf(me)===-1||re===n.ConfigType.BLACKLIST&&J.indexOf(me)!==-1)&&ce&&(V[parseInt(G,10)]=void 0),Z===void 0&&K&&re===n.ConfigType.BLACKLIST&&J.indexOf(me)===-1&&ce&&(V[parseInt(G,10)]=t.PLACEHOLDER_UNDEFINED),M(Z,J,re,me,K)}},R=function(V,J,re,ee){const K=(0,e.cloneDeep)(V);return M(K,J,re,"",ee),K};e.preserveUndefined=R;const O=function(V,J,re){return re.indexOf(V)===J};e.unique=O;const D=function(V){return V.reduce((J,re)=>{const ee=V.filter(Re=>Re===re),K=V.filter(Re=>(re+".").indexOf(Re+".")===0),{duplicates:G,subsets:Z}=J,ce=ee.length>1&&G.indexOf(re)===-1,me=K.length>1;return{duplicates:[...G,...ce?ee:[]],subsets:[...Z,...me?K:[]].filter(e.unique).sort()}},{duplicates:[],subsets:[]})};e.findDuplicatesAndSubsets=D;const B=function(V,J,re){const ee=re===n.ConfigType.WHITELIST?"whitelist":"blacklist",K=`${t.PACKAGE_NAME}: incorrect ${ee} configuration.`,G=`Check your create${re===n.ConfigType.WHITELIST?"White":"Black"}list arguments. + +`;if(!(0,e.isString)(J)||J.length<1)throw new Error(`${K} Name (key) of reducer is required. ${G}`);if(!V||!V.length)return;const{duplicates:Z,subsets:ce}=(0,e.findDuplicatesAndSubsets)(V);if(Z.length>1)throw new Error(`${K} Duplicated paths. + + ${JSON.stringify(Z)} + + ${G}`);if(ce.length>1)throw new Error(`${K} You are trying to persist an entire property and also some of its subset. + +${JSON.stringify(ce)} + + ${G}`)};e.singleTransformValidator=B;const $=function(V){if(!(0,e.isArray)(V))return;const J=V?.map(re=>re.deepPersistKey).filter(re=>re)||[];if(J.length){const re=J.filter((ee,K)=>J.indexOf(ee)!==K);if(re.length)throw new Error(`${t.PACKAGE_NAME}: found duplicated keys in transforms creators. You can createWhitelist or createBlacklist for a specific root reducer key only once. Duplicated keys among createWhitelist and createBlacklist transforms are not allowed. + + Duplicates: ${JSON.stringify(re)}`)}};e.transformsValidator=$;const W=function({whitelist:V,blacklist:J}){if(V&&V.length&&J&&J.length)throw new Error(`${t.PACKAGE_NAME}: you should not define a whitelist and blacklist in parallel. It is allowed to use only one of these lists per config.`);if(V){const{duplicates:re,subsets:ee}=(0,e.findDuplicatesAndSubsets)(V);(0,e.throwError)({duplicates:re,subsets:ee},"whitelist")}if(J){const{duplicates:re,subsets:ee}=(0,e.findDuplicatesAndSubsets)(J);(0,e.throwError)({duplicates:re,subsets:ee},"blacklist")}};e.configValidator=W;const j=function({duplicates:V,subsets:J},re){if(V.length)throw new Error(`${t.PACKAGE_NAME}: duplicates of paths found in your ${re}. + + ${JSON.stringify(V)}`);if(J.length)throw new Error(`${t.PACKAGE_NAME}: subsets of some parent keys found in your ${re}. You must decide if you want to persist an entire path or its specific subset. + + ${JSON.stringify(J)}`)};e.throwError=j;const te=function(V){return(0,e.isArray)(V)?V.filter(e.unique).reduce((J,re)=>{const ee=re.split("."),K=ee[0],G=ee.slice(1).join(".")||void 0,Z=J.filter(me=>Object.keys(me)[0]===K)[0],ce=Z?Object.values(Z)[0]:void 0;return Z||J.push({[K]:G?[G]:void 0}),Z&&!ce&&G&&(Z[K]=[G]),Z&&ce&&G&&ce.push(G),J},[]):[]};e.getRootKeysGroup=te})(N$);(function(e){var t=bs&&bs.__rest||function(g,m){var v={};for(var S in g)Object.prototype.hasOwnProperty.call(g,S)&&m.indexOf(S)<0&&(v[S]=g[S]);if(g!=null&&typeof Object.getOwnPropertySymbols=="function")for(var w=0,S=Object.getOwnPropertySymbols(g);w!k(E)&&g?g(P,E,T):P,out:(P,E,T)=>!k(E)&&m?m(P,E,T):P,deepPersistKey:S&&S[0]}},a=(g,m,v,{debug:S,whitelist:w,blacklist:k,transforms:P})=>{if(w||k)throw new Error("State reconciler autoMergeDeep uses custom transforms instead of old whitelist or blacklist config properties. Please use createWhitelist or createBlacklist transforms.");(0,n.transformsValidator)(P);const E=(0,n.cloneDeep)(v);let T=g;if(T&&(0,n.isObjectLike)(T)){const M=(0,n.difference)(m,v);(0,n.isEmpty)(M)||(T=(0,n.mergeDeep)(g,M,{preserveUndefined:!0}),S&&console.log(`${r.PACKAGE_NAME}/autoMergeDeep: sub state of your state was modified by reducer during rehydration. Values from reducer will be kept: ${JSON.stringify(M)}`)),Object.keys(T).forEach(R=>{if(R!=="_persist"){if((0,n.isObjectLike)(E[R])){E[R]=(0,n.mergeDeep)(E[R],T[R]);return}E[R]=T[R]}})}return S&&T&&(0,n.isObjectLike)(T)&&console.log(`${r.PACKAGE_NAME}/autoMergeDeep: rehydrated keys ${JSON.stringify(T)}`),E};e.autoMergeDeep=a;const s=(g,m)=>((0,n.singleTransformValidator)(m,g,i.ConfigType.WHITELIST),o(v=>{if(!m||!m.length)return v;let S=null,w;return m.forEach(k=>{const P=k.split(".");w=(0,n.path)(v,P),typeof w>"u"&&(0,n.isIntegerString)(P[P.length-1])&&(w=r.PLACEHOLDER_UNDEFINED);const E=(0,n.assocPath)(P,w),T=(0,n.isArray)(E)?[]:{};S=(0,n.mergeDeep)(S||T,E,{preservePlaceholder:!0})}),S||v},v=>(0,n.preserveUndefined)(v,m,i.ConfigType.WHITELIST),{whitelist:[g]}));e.createWhitelist=s;const l=(g,m)=>((0,n.singleTransformValidator)(m,g,i.ConfigType.BLACKLIST),o(v=>{if(!m||!m.length)return;const S=(0,n.preserveUndefined)(v,m,i.ConfigType.BLACKLIST,!0);return m.map(k=>k.split(".")).reduce((k,P)=>(0,n.dissocPath)(k,P),S)},v=>(0,n.preserveUndefined)(v,m,i.ConfigType.BLACKLIST),{whitelist:[g]}));e.createBlacklist=l;const u=function(g,m){return m.map(v=>{const S=Object.keys(v)[0],w=v[S];return g===i.ConfigType.WHITELIST?(0,e.createWhitelist)(S,w):(0,e.createBlacklist)(S,w)})};e.getTransforms=u;const h=g=>{var{key:m,whitelist:v,blacklist:S,storage:w,transforms:k,rootReducer:P}=g,E=t(g,["key","whitelist","blacklist","storage","transforms","rootReducer"]);(0,n.configValidator)({whitelist:v,blacklist:S});const T=(0,n.getRootKeysGroup)(v),M=(0,n.getRootKeysGroup)(S),R=Object.keys(P(void 0,{type:""})),O=T.map(te=>Object.keys(te)[0]),D=M.map(te=>Object.keys(te)[0]),B=R.filter(te=>O.indexOf(te)===-1&&D.indexOf(te)===-1),$=(0,e.getTransforms)(i.ConfigType.WHITELIST,T),W=(0,e.getTransforms)(i.ConfigType.BLACKLIST,M),j=(0,n.isArray)(v)?B.map(te=>(0,e.createBlacklist)(te)):[];return Object.assign(Object.assign({},E),{key:m,storage:w,transforms:[...$,...W,...j,...k||[]],stateReconciler:e.autoMergeDeep})};e.getPersistConfig=h})(D$);const e4=e=>e.length===1?e[0].prompt:e.map(t=>`${t.prompt}:${t.weight}`).join(" "),Mye=e=>{const r=e.split(",").map(i=>i.split(":")).map(i=>({seed:Number(i[0]),weight:Number(i[1])}));return H_(r)?r:!1},H_=e=>Boolean(typeof e=="string"?Mye(e):e.length&&!e.some(t=>{const{seed:n,weight:r}=t,i=!isNaN(parseInt(n.toString(),10)),o=!isNaN(parseInt(r.toString(),10))&&r>=0&&r<=1;return!(i&&o)})),g5=e=>e.reduce((t,n,r,i)=>{const{seed:o,weight:a}=n;return t+=`${o}:${a}`,r!==i.length-1&&(t+=","),t},""),Iye=e=>e.split(",").map(r=>r.split(":")).map(r=>[parseInt(r[0]),parseFloat(r[1])]);var Jr={exports:{}};/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */(function(e,t){(function(){var n,r="4.17.21",i=200,o="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",a="Expected a function",s="Invalid `variable` option passed into `_.template`",l="__lodash_hash_undefined__",u=500,h="__lodash_placeholder__",g=1,m=2,v=4,S=1,w=2,k=1,P=2,E=4,T=8,M=16,R=32,O=64,D=128,B=256,$=512,W=30,j="...",te=800,V=16,J=1,re=2,ee=3,K=1/0,G=9007199254740991,Z=17976931348623157e292,ce=0/0,me=4294967295,Re=me-1,xe=me>>>1,Se=[["ary",D],["bind",k],["bindKey",P],["curry",T],["curryRight",M],["flip",$],["partial",R],["partialRight",O],["rearg",B]],Me="[object Arguments]",_e="[object Array]",Je="[object AsyncFunction]",Xe="[object Boolean]",ft="[object Date]",_t="[object DOMException]",gt="[object Error]",dt="[object Function]",mt="[object GeneratorFunction]",Pe="[object Map]",et="[object Number]",Lt="[object Null]",it="[object Object]",St="[object Promise]",Yt="[object Proxy]",wt="[object RegExp]",Gt="[object Set]",ln="[object String]",on="[object Symbol]",Oe="[object Undefined]",Ze="[object WeakMap]",Zt="[object WeakSet]",qt="[object ArrayBuffer]",ke="[object DataView]",It="[object Float32Array]",Be="[object Float64Array]",ot="[object Int8Array]",un="[object Int16Array]",zn="[object Int32Array]",He="[object Uint8Array]",ht="[object Uint8ClampedArray]",tt="[object Uint16Array]",Dt="[object Uint32Array]",Qt=/\b__p \+= '';/g,er=/\b(__p \+=) '' \+/g,lo=/(__e\(.*?\)|\b__t\)) \+\n'';/g,mi=/&(?:amp|lt|gt|quot|#39);/g,Os=/[&<>"']/g,L1=RegExp(mi.source),ba=RegExp(Os.source),Rh=/<%-([\s\S]+?)%>/g,A1=/<%([\s\S]+?)%>/g,Hu=/<%=([\s\S]+?)%>/g,Oh=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dh=/^\w*$/,Bo=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Od=/[\\^$.*+?()[\]{}|]/g,M1=RegExp(Od.source),Wu=/^\s+/,Dd=/\s/,I1=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ds=/\{\n\/\* \[wrapped with (.+)\] \*/,Vu=/,? & /,R1=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,O1=/[()=,{}\[\]\/\s]/,D1=/\\(\\)?/g,N1=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Xa=/\w*$/,B1=/^[-+]0x[0-9a-f]+$/i,z1=/^0b[01]+$/i,F1=/^\[object .+?Constructor\]$/,$1=/^0o[0-7]+$/i,H1=/^(?:0|[1-9]\d*)$/,W1=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ns=/($^)/,V1=/['\n\r\u2028\u2029\\]/g,Za="\\ud800-\\udfff",Wl="\\u0300-\\u036f",Vl="\\ufe20-\\ufe2f",Bs="\\u20d0-\\u20ff",Ul=Wl+Vl+Bs,Nh="\\u2700-\\u27bf",Uu="a-z\\xdf-\\xf6\\xf8-\\xff",zs="\\xac\\xb1\\xd7\\xf7",zo="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Pn="\\u2000-\\u206f",Sn=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Fo="A-Z\\xc0-\\xd6\\xd8-\\xde",kr="\\ufe0e\\ufe0f",Gr=zs+zo+Pn+Sn,$o="['\u2019]",Fs="["+Za+"]",jr="["+Gr+"]",Qa="["+Ul+"]",Nd="\\d+",Gl="["+Nh+"]",Ja="["+Uu+"]",Bd="[^"+Za+Gr+Nd+Nh+Uu+Fo+"]",vi="\\ud83c[\\udffb-\\udfff]",Bh="(?:"+Qa+"|"+vi+")",zh="[^"+Za+"]",zd="(?:\\ud83c[\\udde6-\\uddff]){2}",$s="[\\ud800-\\udbff][\\udc00-\\udfff]",uo="["+Fo+"]",Hs="\\u200d",jl="(?:"+Ja+"|"+Bd+")",U1="(?:"+uo+"|"+Bd+")",Gu="(?:"+$o+"(?:d|ll|m|re|s|t|ve))?",ju="(?:"+$o+"(?:D|LL|M|RE|S|T|VE))?",Fd=Bh+"?",Yu="["+kr+"]?",xa="(?:"+Hs+"(?:"+[zh,zd,$s].join("|")+")"+Yu+Fd+")*",$d="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Yl="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Ht=Yu+Fd+xa,Fh="(?:"+[Gl,zd,$s].join("|")+")"+Ht,qu="(?:"+[zh+Qa+"?",Qa,zd,$s,Fs].join("|")+")",Ku=RegExp($o,"g"),$h=RegExp(Qa,"g"),Ho=RegExp(vi+"(?="+vi+")|"+qu+Ht,"g"),Un=RegExp([uo+"?"+Ja+"+"+Gu+"(?="+[jr,uo,"$"].join("|")+")",U1+"+"+ju+"(?="+[jr,uo+jl,"$"].join("|")+")",uo+"?"+jl+"+"+Gu,uo+"+"+ju,Yl,$d,Nd,Fh].join("|"),"g"),Hd=RegExp("["+Hs+Za+Ul+kr+"]"),Hh=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wd=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Wh=-1,cn={};cn[It]=cn[Be]=cn[ot]=cn[un]=cn[zn]=cn[He]=cn[ht]=cn[tt]=cn[Dt]=!0,cn[Me]=cn[_e]=cn[qt]=cn[Xe]=cn[ke]=cn[ft]=cn[gt]=cn[dt]=cn[Pe]=cn[et]=cn[it]=cn[wt]=cn[Gt]=cn[ln]=cn[Ze]=!1;var Wt={};Wt[Me]=Wt[_e]=Wt[qt]=Wt[ke]=Wt[Xe]=Wt[ft]=Wt[It]=Wt[Be]=Wt[ot]=Wt[un]=Wt[zn]=Wt[Pe]=Wt[et]=Wt[it]=Wt[wt]=Wt[Gt]=Wt[ln]=Wt[on]=Wt[He]=Wt[ht]=Wt[tt]=Wt[Dt]=!0,Wt[gt]=Wt[dt]=Wt[Ze]=!1;var Vh={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},G1={"&":"&","<":"<",">":">",'"':""","'":"'"},U={"&":"&","<":"<",">":">",""":'"',"'":"'"},ne={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},he=parseFloat,Ye=parseInt,Bt=typeof bs=="object"&&bs&&bs.Object===Object&&bs,hn=typeof self=="object"&&self&&self.Object===Object&&self,vt=Bt||hn||Function("return this")(),Tt=t&&!t.nodeType&&t,Vt=Tt&&!0&&e&&!e.nodeType&&e,Nr=Vt&&Vt.exports===Tt,mr=Nr&&Bt.process,pn=function(){try{var ie=Vt&&Vt.require&&Vt.require("util").types;return ie||mr&&mr.binding&&mr.binding("util")}catch{}}(),Yr=pn&&pn.isArrayBuffer,co=pn&&pn.isDate,Ui=pn&&pn.isMap,wa=pn&&pn.isRegExp,Ws=pn&&pn.isSet,j1=pn&&pn.isTypedArray;function yi(ie,ye,ge){switch(ge.length){case 0:return ie.call(ye);case 1:return ie.call(ye,ge[0]);case 2:return ie.call(ye,ge[0],ge[1]);case 3:return ie.call(ye,ge[0],ge[1],ge[2])}return ie.apply(ye,ge)}function Y1(ie,ye,ge,Ge){for(var Et=-1,Jt=ie==null?0:ie.length;++Et-1}function Uh(ie,ye,ge){for(var Ge=-1,Et=ie==null?0:ie.length;++Ge-1;);return ge}function es(ie,ye){for(var ge=ie.length;ge--&&Qu(ye,ie[ge],0)>-1;);return ge}function K1(ie,ye){for(var ge=ie.length,Ge=0;ge--;)ie[ge]===ye&&++Ge;return Ge}var T2=jd(Vh),ts=jd(G1);function Us(ie){return"\\"+ne[ie]}function jh(ie,ye){return ie==null?n:ie[ye]}function Kl(ie){return Hd.test(ie)}function Yh(ie){return Hh.test(ie)}function L2(ie){for(var ye,ge=[];!(ye=ie.next()).done;)ge.push(ye.value);return ge}function qh(ie){var ye=-1,ge=Array(ie.size);return ie.forEach(function(Ge,Et){ge[++ye]=[Et,Ge]}),ge}function Kh(ie,ye){return function(ge){return ie(ye(ge))}}function Uo(ie,ye){for(var ge=-1,Ge=ie.length,Et=0,Jt=[];++ge-1}function q2(c,p){var x=this.__data__,A=Pr(x,c);return A<0?(++this.size,x.push([c,p])):x[A][1]=p,this}Go.prototype.clear=j2,Go.prototype.delete=Y2,Go.prototype.get=cg,Go.prototype.has=dg,Go.prototype.set=q2;function jo(c){var p=-1,x=c==null?0:c.length;for(this.clear();++p=p?c:p)),c}function ai(c,p,x,A,N,F){var Y,X=p&g,ue=p&m,we=p&v;if(x&&(Y=N?x(c,A,N,F):x(c)),Y!==n)return Y;if(!lr(c))return c;var Ce=Ot(c);if(Ce){if(Y=kU(c),!X)return _i(c,Y)}else{var Ae=ui(c),Ue=Ae==dt||Ae==mt;if(Ec(c))return tl(c,X);if(Ae==it||Ae==Me||Ue&&!N){if(Y=ue||Ue?{}:$k(c),!X)return ue?Lg(c,mc(Y,c)):yo(c,Ke(Y,c))}else{if(!Wt[Ae])return N?c:{};Y=EU(c,Ae,X)}}F||(F=new yr);var ct=F.get(c);if(ct)return ct;F.set(c,Y),gE(c)?c.forEach(function(xt){Y.add(ai(xt,p,x,xt,c,F))}):hE(c)&&c.forEach(function(xt,jt){Y.set(jt,ai(xt,p,x,jt,c,F))});var bt=we?ue?pe:Zo:ue?bo:ci,$t=Ce?n:bt(c);return Gn($t||c,function(xt,jt){$t&&(jt=xt,xt=c[jt]),Ys(Y,jt,ai(xt,p,x,jt,c,F))}),Y}function rp(c){var p=ci(c);return function(x){return ip(x,c,p)}}function ip(c,p,x){var A=x.length;if(c==null)return!A;for(c=dn(c);A--;){var N=x[A],F=p[N],Y=c[N];if(Y===n&&!(N in c)||!F(Y))return!1}return!0}function gg(c,p,x){if(typeof c!="function")throw new Si(a);return Og(function(){c.apply(n,x)},p)}function vc(c,p,x,A){var N=-1,F=Ri,Y=!0,X=c.length,ue=[],we=p.length;if(!X)return ue;x&&(p=$n(p,Er(x))),A?(F=Uh,Y=!1):p.length>=i&&(F=ec,Y=!1,p=new Ea(p));e:for(;++NN?0:N+x),A=A===n||A>N?N:Nt(A),A<0&&(A+=N),A=x>A?0:vE(A);x0&&x(X)?p>1?Tr(X,p-1,x,A,N):Ca(N,X):A||(N[N.length]=X)}return N}var ap=nl(),go=nl(!0);function Xo(c,p){return c&&ap(c,p,ci)}function mo(c,p){return c&&go(c,p,ci)}function sp(c,p){return ho(p,function(x){return iu(c[x])})}function qs(c,p){p=el(p,c);for(var x=0,A=p.length;c!=null&&xp}function up(c,p){return c!=null&&tn.call(c,p)}function cp(c,p){return c!=null&&p in dn(c)}function dp(c,p,x){return c>=Kr(p,x)&&c=120&&Ce.length>=120)?new Ea(Y&&Ce):n}Ce=c[0];var Ae=-1,Ue=X[0];e:for(;++Ae-1;)X!==c&&ef.call(X,ue,1),ef.call(c,ue,1);return c}function cf(c,p){for(var x=c?p.length:0,A=x-1;x--;){var N=p[x];if(x==A||N!==F){var F=N;ru(N)?ef.call(c,N,1):xp(c,N)}}return c}function df(c,p){return c+Zl(ig()*(p-c+1))}function Qs(c,p,x,A){for(var N=-1,F=vr(rf((p-c)/(x||1)),0),Y=ge(F);F--;)Y[A?F:++N]=c,c+=x;return Y}function Cc(c,p){var x="";if(!c||p<1||p>G)return x;do p%2&&(x+=c),p=Zl(p/2),p&&(c+=c);while(p);return x}function kt(c,p){return zb(Vk(c,p,xo),c+"")}function mp(c){return gc(Tp(c))}function ff(c,p){var x=Tp(c);return ny(x,Jl(p,0,x.length))}function tu(c,p,x,A){if(!lr(c))return c;p=el(p,c);for(var N=-1,F=p.length,Y=F-1,X=c;X!=null&&++NN?0:N+p),x=x>N?N:x,x<0&&(x+=N),N=p>x?0:x-p>>>0,p>>>=0;for(var F=ge(N);++A>>1,Y=c[F];Y!==null&&!Qo(Y)&&(x?Y<=p:Y=i){var we=p?null:H(c);if(we)return Xd(we);Y=!1,N=ec,ue=new Ea}else ue=p?[]:X;e:for(;++A=A?c:Ar(c,p,x)}var kg=O2||function(c){return vt.clearTimeout(c)};function tl(c,p){if(p)return c.slice();var x=c.length,A=oc?oc(x):new c.constructor(x);return c.copy(A),A}function Eg(c){var p=new c.constructor(c.byteLength);return new bi(p).set(new bi(c)),p}function nu(c,p){var x=p?Eg(c.buffer):c.buffer;return new c.constructor(x,c.byteOffset,c.byteLength)}function Q2(c){var p=new c.constructor(c.source,Xa.exec(c));return p.lastIndex=c.lastIndex,p}function jn(c){return af?dn(af.call(c)):{}}function J2(c,p){var x=p?Eg(c.buffer):c.buffer;return new c.constructor(x,c.byteOffset,c.length)}function Pg(c,p){if(c!==p){var x=c!==n,A=c===null,N=c===c,F=Qo(c),Y=p!==n,X=p===null,ue=p===p,we=Qo(p);if(!X&&!we&&!F&&c>p||F&&Y&&ue&&!X&&!we||A&&Y&&ue||!x&&ue||!N)return 1;if(!A&&!F&&!we&&c=X)return ue;var we=x[A];return ue*(we=="desc"?-1:1)}}return c.index-p.index}function ey(c,p,x,A){for(var N=-1,F=c.length,Y=x.length,X=-1,ue=p.length,we=vr(F-Y,0),Ce=ge(ue+we),Ae=!A;++X1?x[N-1]:n,Y=N>2?x[2]:n;for(F=c.length>3&&typeof F=="function"?(N--,F):n,Y&&Xi(x[0],x[1],Y)&&(F=N<3?n:F,N=1),p=dn(p);++A-1?N[F?p[Y]:Y]:n}}function Mg(c){return nr(function(p){var x=p.length,A=x,N=ji.prototype.thru;for(c&&p.reverse();A--;){var F=p[A];if(typeof F!="function")throw new Si(a);if(N&&!Y&&ve(F)=="wrapper")var Y=new ji([],!0)}for(A=Y?A:x;++A1&&en.reverse(),Ce&&ueX))return!1;var we=F.get(c),Ce=F.get(p);if(we&&Ce)return we==p&&Ce==c;var Ae=-1,Ue=!0,ct=x&w?new Ea:n;for(F.set(c,p),F.set(p,c);++Ae1?"& ":"")+p[A],p=p.join(x>2?", ":" "),c.replace(I1,`{ +/* [wrapped with `+p+`] */ +`)}function TU(c){return Ot(c)||bf(c)||!!(ng&&c&&c[ng])}function ru(c,p){var x=typeof c;return p=p??G,!!p&&(x=="number"||x!="symbol"&&H1.test(c))&&c>-1&&c%1==0&&c0){if(++p>=te)return arguments[0]}else p=0;return c.apply(n,arguments)}}function ny(c,p){var x=-1,A=c.length,N=A-1;for(p=p===n?A:p;++x1?c[p-1]:n;return x=typeof x=="function"?(c.pop(),x):n,tE(c,x)});function nE(c){var p=z(c);return p.__chain__=!0,p}function FG(c,p){return p(c),c}function ry(c,p){return p(c)}var $G=nr(function(c){var p=c.length,x=p?c[0]:0,A=this.__wrapped__,N=function(F){return np(F,c)};return p>1||this.__actions__.length||!(A instanceof Ut)||!ru(x)?this.thru(N):(A=A.slice(x,+x+(p?1:0)),A.__actions__.push({func:ry,args:[N],thisArg:n}),new ji(A,this.__chain__).thru(function(F){return p&&!F.length&&F.push(n),F}))});function HG(){return nE(this)}function WG(){return new ji(this.value(),this.__chain__)}function VG(){this.__values__===n&&(this.__values__=mE(this.value()));var c=this.__index__>=this.__values__.length,p=c?n:this.__values__[this.__index__++];return{done:c,value:p}}function UG(){return this}function GG(c){for(var p,x=this;x instanceof sf;){var A=Kk(x);A.__index__=0,A.__values__=n,p?N.__wrapped__=A:p=A;var N=A;x=x.__wrapped__}return N.__wrapped__=c,p}function jG(){var c=this.__wrapped__;if(c instanceof Ut){var p=c;return this.__actions__.length&&(p=new Ut(this)),p=p.reverse(),p.__actions__.push({func:ry,args:[Fb],thisArg:n}),new ji(p,this.__chain__)}return this.thru(Fb)}function YG(){return Js(this.__wrapped__,this.__actions__)}var qG=Cp(function(c,p,x){tn.call(c,x)?++c[x]:Yo(c,x,1)});function KG(c,p,x){var A=Ot(c)?Fn:mg;return x&&Xi(c,p,x)&&(p=n),A(c,Te(p,3))}function XG(c,p){var x=Ot(c)?ho:Ko;return x(c,Te(p,3))}var ZG=Ag(Xk),QG=Ag(Zk);function JG(c,p){return Tr(iy(c,p),1)}function ej(c,p){return Tr(iy(c,p),K)}function tj(c,p,x){return x=x===n?1:Nt(x),Tr(iy(c,p),x)}function rE(c,p){var x=Ot(c)?Gn:is;return x(c,Te(p,3))}function iE(c,p){var x=Ot(c)?fo:op;return x(c,Te(p,3))}var nj=Cp(function(c,p,x){tn.call(c,x)?c[x].push(p):Yo(c,x,[p])});function rj(c,p,x,A){c=So(c)?c:Tp(c),x=x&&!A?Nt(x):0;var N=c.length;return x<0&&(x=vr(N+x,0)),uy(c)?x<=N&&c.indexOf(p,x)>-1:!!N&&Qu(c,p,x)>-1}var ij=kt(function(c,p,x){var A=-1,N=typeof p=="function",F=So(c)?ge(c.length):[];return is(c,function(Y){F[++A]=N?yi(p,Y,x):os(Y,p,x)}),F}),oj=Cp(function(c,p,x){Yo(c,x,p)});function iy(c,p){var x=Ot(c)?$n:br;return x(c,Te(p,3))}function aj(c,p,x,A){return c==null?[]:(Ot(p)||(p=p==null?[]:[p]),x=A?n:x,Ot(x)||(x=x==null?[]:[x]),wi(c,p,x))}var sj=Cp(function(c,p,x){c[x?0:1].push(p)},function(){return[[],[]]});function lj(c,p,x){var A=Ot(c)?Vd:Gh,N=arguments.length<3;return A(c,Te(p,4),x,N,is)}function uj(c,p,x){var A=Ot(c)?_2:Gh,N=arguments.length<3;return A(c,Te(p,4),x,N,op)}function cj(c,p){var x=Ot(c)?ho:Ko;return x(c,sy(Te(p,3)))}function dj(c){var p=Ot(c)?gc:mp;return p(c)}function fj(c,p,x){(x?Xi(c,p,x):p===n)?p=1:p=Nt(p);var A=Ot(c)?oi:ff;return A(c,p)}function hj(c){var p=Ot(c)?Ab:li;return p(c)}function pj(c){if(c==null)return 0;if(So(c))return uy(c)?_a(c):c.length;var p=ui(c);return p==Pe||p==Gt?c.size:Lr(c).length}function gj(c,p,x){var A=Ot(c)?Xu:vo;return x&&Xi(c,p,x)&&(p=n),A(c,Te(p,3))}var mj=kt(function(c,p){if(c==null)return[];var x=p.length;return x>1&&Xi(c,p[0],p[1])?p=[]:x>2&&Xi(p[0],p[1],p[2])&&(p=[p[0]]),wi(c,Tr(p,1),[])}),oy=D2||function(){return vt.Date.now()};function vj(c,p){if(typeof p!="function")throw new Si(a);return c=Nt(c),function(){if(--c<1)return p.apply(this,arguments)}}function oE(c,p,x){return p=x?n:p,p=c&&p==null?c.length:p,fe(c,D,n,n,n,n,p)}function aE(c,p){var x;if(typeof p!="function")throw new Si(a);return c=Nt(c),function(){return--c>0&&(x=p.apply(this,arguments)),c<=1&&(p=n),x}}var Hb=kt(function(c,p,x){var A=k;if(x.length){var N=Uo(x,Ve(Hb));A|=R}return fe(c,A,p,x,N)}),sE=kt(function(c,p,x){var A=k|P;if(x.length){var N=Uo(x,Ve(sE));A|=R}return fe(p,A,c,x,N)});function lE(c,p,x){p=x?n:p;var A=fe(c,T,n,n,n,n,n,p);return A.placeholder=lE.placeholder,A}function uE(c,p,x){p=x?n:p;var A=fe(c,M,n,n,n,n,n,p);return A.placeholder=uE.placeholder,A}function cE(c,p,x){var A,N,F,Y,X,ue,we=0,Ce=!1,Ae=!1,Ue=!0;if(typeof c!="function")throw new Si(a);p=La(p)||0,lr(x)&&(Ce=!!x.leading,Ae="maxWait"in x,F=Ae?vr(La(x.maxWait)||0,p):F,Ue="trailing"in x?!!x.trailing:Ue);function ct(Ir){var cs=A,au=N;return A=N=n,we=Ir,Y=c.apply(au,cs),Y}function bt(Ir){return we=Ir,X=Og(jt,p),Ce?ct(Ir):Y}function $t(Ir){var cs=Ir-ue,au=Ir-we,LE=p-cs;return Ae?Kr(LE,F-au):LE}function xt(Ir){var cs=Ir-ue,au=Ir-we;return ue===n||cs>=p||cs<0||Ae&&au>=F}function jt(){var Ir=oy();if(xt(Ir))return en(Ir);X=Og(jt,$t(Ir))}function en(Ir){return X=n,Ue&&A?ct(Ir):(A=N=n,Y)}function Jo(){X!==n&&kg(X),we=0,A=ue=N=X=n}function Zi(){return X===n?Y:en(oy())}function ea(){var Ir=oy(),cs=xt(Ir);if(A=arguments,N=this,ue=Ir,cs){if(X===n)return bt(ue);if(Ae)return kg(X),X=Og(jt,p),ct(ue)}return X===n&&(X=Og(jt,p)),Y}return ea.cancel=Jo,ea.flush=Zi,ea}var yj=kt(function(c,p){return gg(c,1,p)}),Sj=kt(function(c,p,x){return gg(c,La(p)||0,x)});function bj(c){return fe(c,$)}function ay(c,p){if(typeof c!="function"||p!=null&&typeof p!="function")throw new Si(a);var x=function(){var A=arguments,N=p?p.apply(this,A):A[0],F=x.cache;if(F.has(N))return F.get(N);var Y=c.apply(this,A);return x.cache=F.set(N,Y)||F,Y};return x.cache=new(ay.Cache||jo),x}ay.Cache=jo;function sy(c){if(typeof c!="function")throw new Si(a);return function(){var p=arguments;switch(p.length){case 0:return!c.call(this);case 1:return!c.call(this,p[0]);case 2:return!c.call(this,p[0],p[1]);case 3:return!c.call(this,p[0],p[1],p[2])}return!c.apply(this,p)}}function xj(c){return aE(2,c)}var wj=Rb(function(c,p){p=p.length==1&&Ot(p[0])?$n(p[0],Er(Te())):$n(Tr(p,1),Er(Te()));var x=p.length;return kt(function(A){for(var N=-1,F=Kr(A.length,x);++N=p}),bf=hp(function(){return arguments}())?hp:function(c){return xr(c)&&tn.call(c,"callee")&&!tg.call(c,"callee")},Ot=ge.isArray,Bj=Yr?Er(Yr):yg;function So(c){return c!=null&&ly(c.length)&&!iu(c)}function Mr(c){return xr(c)&&So(c)}function zj(c){return c===!0||c===!1||xr(c)&&si(c)==Xe}var Ec=N2||Jb,Fj=co?Er(co):Sg;function $j(c){return xr(c)&&c.nodeType===1&&!Dg(c)}function Hj(c){if(c==null)return!0;if(So(c)&&(Ot(c)||typeof c=="string"||typeof c.splice=="function"||Ec(c)||Pp(c)||bf(c)))return!c.length;var p=ui(c);if(p==Pe||p==Gt)return!c.size;if(Rg(c))return!Lr(c).length;for(var x in c)if(tn.call(c,x))return!1;return!0}function Wj(c,p){return Sc(c,p)}function Vj(c,p,x){x=typeof x=="function"?x:n;var A=x?x(c,p):n;return A===n?Sc(c,p,n,x):!!A}function Vb(c){if(!xr(c))return!1;var p=si(c);return p==gt||p==_t||typeof c.message=="string"&&typeof c.name=="string"&&!Dg(c)}function Uj(c){return typeof c=="number"&&Qh(c)}function iu(c){if(!lr(c))return!1;var p=si(c);return p==dt||p==mt||p==Je||p==Yt}function fE(c){return typeof c=="number"&&c==Nt(c)}function ly(c){return typeof c=="number"&&c>-1&&c%1==0&&c<=G}function lr(c){var p=typeof c;return c!=null&&(p=="object"||p=="function")}function xr(c){return c!=null&&typeof c=="object"}var hE=Ui?Er(Ui):Ib;function Gj(c,p){return c===p||bc(c,p,Pt(p))}function jj(c,p,x){return x=typeof x=="function"?x:n,bc(c,p,Pt(p),x)}function Yj(c){return pE(c)&&c!=+c}function qj(c){if(MU(c))throw new Et(o);return pp(c)}function Kj(c){return c===null}function Xj(c){return c==null}function pE(c){return typeof c=="number"||xr(c)&&si(c)==et}function Dg(c){if(!xr(c)||si(c)!=it)return!1;var p=ac(c);if(p===null)return!0;var x=tn.call(p,"constructor")&&p.constructor;return typeof x=="function"&&x instanceof x&&or.call(x)==ii}var Ub=wa?Er(wa):ar;function Zj(c){return fE(c)&&c>=-G&&c<=G}var gE=Ws?Er(Ws):zt;function uy(c){return typeof c=="string"||!Ot(c)&&xr(c)&&si(c)==ln}function Qo(c){return typeof c=="symbol"||xr(c)&&si(c)==on}var Pp=j1?Er(j1):Br;function Qj(c){return c===n}function Jj(c){return xr(c)&&ui(c)==Ze}function eY(c){return xr(c)&&si(c)==Zt}var tY=_(Ks),nY=_(function(c,p){return c<=p});function mE(c){if(!c)return[];if(So(c))return uy(c)?Oi(c):_i(c);if(sc&&c[sc])return L2(c[sc]());var p=ui(c),x=p==Pe?qh:p==Gt?Xd:Tp;return x(c)}function ou(c){if(!c)return c===0?c:0;if(c=La(c),c===K||c===-K){var p=c<0?-1:1;return p*Z}return c===c?c:0}function Nt(c){var p=ou(c),x=p%1;return p===p?x?p-x:p:0}function vE(c){return c?Jl(Nt(c),0,me):0}function La(c){if(typeof c=="number")return c;if(Qo(c))return ce;if(lr(c)){var p=typeof c.valueOf=="function"?c.valueOf():c;c=lr(p)?p+"":p}if(typeof c!="string")return c===0?c:+c;c=Gi(c);var x=z1.test(c);return x||$1.test(c)?Ye(c.slice(2),x?2:8):B1.test(c)?ce:+c}function yE(c){return Pa(c,bo(c))}function rY(c){return c?Jl(Nt(c),-G,G):c===0?c:0}function xn(c){return c==null?"":qi(c)}var iY=Ki(function(c,p){if(Rg(p)||So(p)){Pa(p,ci(p),c);return}for(var x in p)tn.call(p,x)&&Ys(c,x,p[x])}),SE=Ki(function(c,p){Pa(p,bo(p),c)}),cy=Ki(function(c,p,x,A){Pa(p,bo(p),c,A)}),oY=Ki(function(c,p,x,A){Pa(p,ci(p),c,A)}),aY=nr(np);function sY(c,p){var x=Ql(c);return p==null?x:Ke(x,p)}var lY=kt(function(c,p){c=dn(c);var x=-1,A=p.length,N=A>2?p[2]:n;for(N&&Xi(p[0],p[1],N)&&(A=1);++x1),F}),Pa(c,pe(c),x),A&&(x=ai(x,g|m|v,At));for(var N=p.length;N--;)xp(x,p[N]);return x});function EY(c,p){return xE(c,sy(Te(p)))}var PY=nr(function(c,p){return c==null?{}:wg(c,p)});function xE(c,p){if(c==null)return{};var x=$n(pe(c),function(A){return[A]});return p=Te(p),gp(c,x,function(A,N){return p(A,N[0])})}function TY(c,p,x){p=el(p,c);var A=-1,N=p.length;for(N||(N=1,c=n);++Ap){var A=c;c=p,p=A}if(x||c%1||p%1){var N=ig();return Kr(c+N*(p-c+he("1e-"+((N+"").length-1))),p)}return df(c,p)}var FY=rl(function(c,p,x){return p=p.toLowerCase(),c+(x?_E(p):p)});function _E(c){return Yb(xn(c).toLowerCase())}function kE(c){return c=xn(c),c&&c.replace(W1,T2).replace($h,"")}function $Y(c,p,x){c=xn(c),p=qi(p);var A=c.length;x=x===n?A:Jl(Nt(x),0,A);var N=x;return x-=p.length,x>=0&&c.slice(x,N)==p}function HY(c){return c=xn(c),c&&ba.test(c)?c.replace(Os,ts):c}function WY(c){return c=xn(c),c&&M1.test(c)?c.replace(Od,"\\$&"):c}var VY=rl(function(c,p,x){return c+(x?"-":"")+p.toLowerCase()}),UY=rl(function(c,p,x){return c+(x?" ":"")+p.toLowerCase()}),GY=kp("toLowerCase");function jY(c,p,x){c=xn(c),p=Nt(p);var A=p?_a(c):0;if(!p||A>=p)return c;var N=(p-A)/2;return d(Zl(N),x)+c+d(rf(N),x)}function YY(c,p,x){c=xn(c),p=Nt(p);var A=p?_a(c):0;return p&&A>>0,x?(c=xn(c),c&&(typeof p=="string"||p!=null&&!Ub(p))&&(p=qi(p),!p&&Kl(c))?ss(Oi(c),0,x):c.split(p,x)):[]}var eq=rl(function(c,p,x){return c+(x?" ":"")+Yb(p)});function tq(c,p,x){return c=xn(c),x=x==null?0:Jl(Nt(x),0,c.length),p=qi(p),c.slice(x,x+p.length)==p}function nq(c,p,x){var A=z.templateSettings;x&&Xi(c,p,x)&&(p=n),c=xn(c),p=cy({},p,A,Ne);var N=cy({},p.imports,A.imports,Ne),F=ci(N),Y=Kd(N,F),X,ue,we=0,Ce=p.interpolate||Ns,Ae="__p += '",Ue=Qd((p.escape||Ns).source+"|"+Ce.source+"|"+(Ce===Hu?N1:Ns).source+"|"+(p.evaluate||Ns).source+"|$","g"),ct="//# sourceURL="+(tn.call(p,"sourceURL")?(p.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Wh+"]")+` +`;c.replace(Ue,function(xt,jt,en,Jo,Zi,ea){return en||(en=Jo),Ae+=c.slice(we,ea).replace(V1,Us),jt&&(X=!0,Ae+=`' + +__e(`+jt+`) + +'`),Zi&&(ue=!0,Ae+=`'; +`+Zi+`; +__p += '`),en&&(Ae+=`' + +((__t = (`+en+`)) == null ? '' : __t) + +'`),we=ea+xt.length,xt}),Ae+=`'; +`;var bt=tn.call(p,"variable")&&p.variable;if(!bt)Ae=`with (obj) { +`+Ae+` +} +`;else if(O1.test(bt))throw new Et(s);Ae=(ue?Ae.replace(Qt,""):Ae).replace(er,"$1").replace(lo,"$1;"),Ae="function("+(bt||"obj")+`) { +`+(bt?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(X?", __e = _.escape":"")+(ue?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+Ae+`return __p +}`;var $t=PE(function(){return Jt(F,ct+"return "+Ae).apply(n,Y)});if($t.source=Ae,Vb($t))throw $t;return $t}function rq(c){return xn(c).toLowerCase()}function iq(c){return xn(c).toUpperCase()}function oq(c,p,x){if(c=xn(c),c&&(x||p===n))return Gi(c);if(!c||!(p=qi(p)))return c;var A=Oi(c),N=Oi(p),F=Vo(A,N),Y=es(A,N)+1;return ss(A,F,Y).join("")}function aq(c,p,x){if(c=xn(c),c&&(x||p===n))return c.slice(0,Z1(c)+1);if(!c||!(p=qi(p)))return c;var A=Oi(c),N=es(A,Oi(p))+1;return ss(A,0,N).join("")}function sq(c,p,x){if(c=xn(c),c&&(x||p===n))return c.replace(Wu,"");if(!c||!(p=qi(p)))return c;var A=Oi(c),N=Vo(A,Oi(p));return ss(A,N).join("")}function lq(c,p){var x=W,A=j;if(lr(p)){var N="separator"in p?p.separator:N;x="length"in p?Nt(p.length):x,A="omission"in p?qi(p.omission):A}c=xn(c);var F=c.length;if(Kl(c)){var Y=Oi(c);F=Y.length}if(x>=F)return c;var X=x-_a(A);if(X<1)return A;var ue=Y?ss(Y,0,X).join(""):c.slice(0,X);if(N===n)return ue+A;if(Y&&(X+=ue.length-X),Ub(N)){if(c.slice(X).search(N)){var we,Ce=ue;for(N.global||(N=Qd(N.source,xn(Xa.exec(N))+"g")),N.lastIndex=0;we=N.exec(Ce);)var Ae=we.index;ue=ue.slice(0,Ae===n?X:Ae)}}else if(c.indexOf(qi(N),X)!=X){var Ue=ue.lastIndexOf(N);Ue>-1&&(ue=ue.slice(0,Ue))}return ue+A}function uq(c){return c=xn(c),c&&L1.test(c)?c.replace(mi,I2):c}var cq=rl(function(c,p,x){return c+(x?" ":"")+p.toUpperCase()}),Yb=kp("toUpperCase");function EE(c,p,x){return c=xn(c),p=x?n:p,p===n?Yh(c)?Zd(c):q1(c):c.match(p)||[]}var PE=kt(function(c,p){try{return yi(c,n,p)}catch(x){return Vb(x)?x:new Et(x)}}),dq=nr(function(c,p){return Gn(p,function(x){x=il(x),Yo(c,x,Hb(c[x],c))}),c});function fq(c){var p=c==null?0:c.length,x=Te();return c=p?$n(c,function(A){if(typeof A[1]!="function")throw new Si(a);return[x(A[0]),A[1]]}):[],kt(function(A){for(var N=-1;++NG)return[];var x=me,A=Kr(c,me);p=Te(p),c-=me;for(var N=qd(A,p);++x0||p<0)?new Ut(x):(c<0?x=x.takeRight(-c):c&&(x=x.drop(c)),p!==n&&(p=Nt(p),x=p<0?x.dropRight(-p):x.take(p-c)),x)},Ut.prototype.takeRightWhile=function(c){return this.reverse().takeWhile(c).reverse()},Ut.prototype.toArray=function(){return this.take(me)},Xo(Ut.prototype,function(c,p){var x=/^(?:filter|find|map|reject)|While$/.test(p),A=/^(?:head|last)$/.test(p),N=z[A?"take"+(p=="last"?"Right":""):p],F=A||/^find/.test(p);!N||(z.prototype[p]=function(){var Y=this.__wrapped__,X=A?[1]:arguments,ue=Y instanceof Ut,we=X[0],Ce=ue||Ot(Y),Ae=function(jt){var en=N.apply(z,Ca([jt],X));return A&&Ue?en[0]:en};Ce&&x&&typeof we=="function"&&we.length!=1&&(ue=Ce=!1);var Ue=this.__chain__,ct=!!this.__actions__.length,bt=F&&!Ue,$t=ue&&!ct;if(!F&&Ce){Y=$t?Y:new Ut(this);var xt=c.apply(Y,X);return xt.__actions__.push({func:ry,args:[Ae],thisArg:n}),new ji(xt,Ue)}return bt&&$t?c.apply(this,X):(xt=this.thru(Ae),bt?A?xt.value()[0]:xt.value():xt)})}),Gn(["pop","push","shift","sort","splice","unshift"],function(c){var p=nc[c],x=/^(?:push|sort|unshift)$/.test(c)?"tap":"thru",A=/^(?:pop|shift)$/.test(c);z.prototype[c]=function(){var N=arguments;if(A&&!this.__chain__){var F=this.value();return p.apply(Ot(F)?F:[],N)}return this[x](function(Y){return p.apply(Ot(Y)?Y:[],N)})}}),Xo(Ut.prototype,function(c,p){var x=z[p];if(x){var A=x.name+"";tn.call(ns,A)||(ns[A]=[]),ns[A].push({name:p,func:x})}}),ns[vf(n,P).name]=[{name:"wrapper",func:n}],Ut.prototype.clone=Di,Ut.prototype.reverse=xi,Ut.prototype.value=H2,z.prototype.at=$G,z.prototype.chain=HG,z.prototype.commit=WG,z.prototype.next=VG,z.prototype.plant=GG,z.prototype.reverse=jG,z.prototype.toJSON=z.prototype.valueOf=z.prototype.value=YG,z.prototype.first=z.prototype.head,sc&&(z.prototype[sc]=UG),z},ka=po();Vt?((Vt.exports=ka)._=ka,Tt._=ka):vt._=ka}).call(bs)})(Jr,Jr.exports);const We=Jr.exports;var Rye=Object.create,B$=Object.defineProperty,Oye=Object.getOwnPropertyDescriptor,Dye=Object.getOwnPropertyNames,Nye=Object.getPrototypeOf,Bye=Object.prototype.hasOwnProperty,ze=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zye=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Dye(t))!Bye.call(e,i)&&i!==n&&B$(e,i,{get:()=>t[i],enumerable:!(r=Oye(t,i))||r.enumerable});return e},z$=(e,t,n)=>(n=e!=null?Rye(Nye(e)):{},zye(t||!e||!e.__esModule?B$(n,"default",{value:e,enumerable:!0}):n,e)),Fye=ze((e,t)=>{function n(){this.__data__=[],this.size=0}t.exports=n}),F$=ze((e,t)=>{function n(r,i){return r===i||r!==r&&i!==i}t.exports=n}),JS=ze((e,t)=>{var n=F$();function r(i,o){for(var a=i.length;a--;)if(n(i[a][0],o))return a;return-1}t.exports=r}),$ye=ze((e,t)=>{var n=JS(),r=Array.prototype,i=r.splice;function o(a){var s=this.__data__,l=n(s,a);if(l<0)return!1;var u=s.length-1;return l==u?s.pop():i.call(s,l,1),--this.size,!0}t.exports=o}),Hye=ze((e,t)=>{var n=JS();function r(i){var o=this.__data__,a=n(o,i);return a<0?void 0:o[a][1]}t.exports=r}),Wye=ze((e,t)=>{var n=JS();function r(i){return n(this.__data__,i)>-1}t.exports=r}),Vye=ze((e,t)=>{var n=JS();function r(i,o){var a=this.__data__,s=n(a,i);return s<0?(++this.size,a.push([i,o])):a[s][1]=o,this}t.exports=r}),eb=ze((e,t)=>{var n=Fye(),r=$ye(),i=Hye(),o=Wye(),a=Vye();function s(l){var u=-1,h=l==null?0:l.length;for(this.clear();++u{var n=eb();function r(){this.__data__=new n,this.size=0}t.exports=r}),Gye=ze((e,t)=>{function n(r){var i=this.__data__,o=i.delete(r);return this.size=i.size,o}t.exports=n}),jye=ze((e,t)=>{function n(r){return this.__data__.get(r)}t.exports=n}),Yye=ze((e,t)=>{function n(r){return this.__data__.has(r)}t.exports=n}),$$=ze((e,t)=>{var n=typeof global=="object"&&global&&global.Object===Object&&global;t.exports=n}),Du=ze((e,t)=>{var n=$$(),r=typeof self=="object"&&self&&self.Object===Object&&self,i=n||r||Function("return this")();t.exports=i}),W_=ze((e,t)=>{var n=Du(),r=n.Symbol;t.exports=r}),qye=ze((e,t)=>{var n=W_(),r=Object.prototype,i=r.hasOwnProperty,o=r.toString,a=n?n.toStringTag:void 0;function s(l){var u=i.call(l,a),h=l[a];try{l[a]=void 0;var g=!0}catch{}var m=o.call(l);return g&&(u?l[a]=h:delete l[a]),m}t.exports=s}),Kye=ze((e,t)=>{var n=Object.prototype,r=n.toString;function i(o){return r.call(o)}t.exports=i}),tb=ze((e,t)=>{var n=W_(),r=qye(),i=Kye(),o="[object Null]",a="[object Undefined]",s=n?n.toStringTag:void 0;function l(u){return u==null?u===void 0?a:o:s&&s in Object(u)?r(u):i(u)}t.exports=l}),H$=ze((e,t)=>{function n(r){var i=typeof r;return r!=null&&(i=="object"||i=="function")}t.exports=n}),W$=ze((e,t)=>{var n=tb(),r=H$(),i="[object AsyncFunction]",o="[object Function]",a="[object GeneratorFunction]",s="[object Proxy]";function l(u){if(!r(u))return!1;var h=n(u);return h==o||h==a||h==i||h==s}t.exports=l}),Xye=ze((e,t)=>{var n=Du(),r=n["__core-js_shared__"];t.exports=r}),Zye=ze((e,t)=>{var n=Xye(),r=function(){var o=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||"");return o?"Symbol(src)_1."+o:""}();function i(o){return!!r&&r in o}t.exports=i}),V$=ze((e,t)=>{var n=Function.prototype,r=n.toString;function i(o){if(o!=null){try{return r.call(o)}catch{}try{return o+""}catch{}}return""}t.exports=i}),Qye=ze((e,t)=>{var n=W$(),r=Zye(),i=H$(),o=V$(),a=/[\\^$.*+?()[\]{}|]/g,s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,h=l.toString,g=u.hasOwnProperty,m=RegExp("^"+h.call(g).replace(a,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function v(S){if(!i(S)||r(S))return!1;var w=n(S)?m:s;return w.test(o(S))}t.exports=v}),Jye=ze((e,t)=>{function n(r,i){return r?.[i]}t.exports=n}),w1=ze((e,t)=>{var n=Qye(),r=Jye();function i(o,a){var s=r(o,a);return n(s)?s:void 0}t.exports=i}),V_=ze((e,t)=>{var n=w1(),r=Du(),i=n(r,"Map");t.exports=i}),nb=ze((e,t)=>{var n=w1(),r=n(Object,"create");t.exports=r}),e3e=ze((e,t)=>{var n=nb();function r(){this.__data__=n?n(null):{},this.size=0}t.exports=r}),t3e=ze((e,t)=>{function n(r){var i=this.has(r)&&delete this.__data__[r];return this.size-=i?1:0,i}t.exports=n}),n3e=ze((e,t)=>{var n=nb(),r="__lodash_hash_undefined__",i=Object.prototype,o=i.hasOwnProperty;function a(s){var l=this.__data__;if(n){var u=l[s];return u===r?void 0:u}return o.call(l,s)?l[s]:void 0}t.exports=a}),r3e=ze((e,t)=>{var n=nb(),r=Object.prototype,i=r.hasOwnProperty;function o(a){var s=this.__data__;return n?s[a]!==void 0:i.call(s,a)}t.exports=o}),i3e=ze((e,t)=>{var n=nb(),r="__lodash_hash_undefined__";function i(o,a){var s=this.__data__;return this.size+=this.has(o)?0:1,s[o]=n&&a===void 0?r:a,this}t.exports=i}),o3e=ze((e,t)=>{var n=e3e(),r=t3e(),i=n3e(),o=r3e(),a=i3e();function s(l){var u=-1,h=l==null?0:l.length;for(this.clear();++u{var n=o3e(),r=eb(),i=V_();function o(){this.size=0,this.__data__={hash:new n,map:new(i||r),string:new n}}t.exports=o}),s3e=ze((e,t)=>{function n(r){var i=typeof r;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?r!=="__proto__":r===null}t.exports=n}),rb=ze((e,t)=>{var n=s3e();function r(i,o){var a=i.__data__;return n(o)?a[typeof o=="string"?"string":"hash"]:a.map}t.exports=r}),l3e=ze((e,t)=>{var n=rb();function r(i){var o=n(this,i).delete(i);return this.size-=o?1:0,o}t.exports=r}),u3e=ze((e,t)=>{var n=rb();function r(i){return n(this,i).get(i)}t.exports=r}),c3e=ze((e,t)=>{var n=rb();function r(i){return n(this,i).has(i)}t.exports=r}),d3e=ze((e,t)=>{var n=rb();function r(i,o){var a=n(this,i),s=a.size;return a.set(i,o),this.size+=a.size==s?0:1,this}t.exports=r}),U$=ze((e,t)=>{var n=a3e(),r=l3e(),i=u3e(),o=c3e(),a=d3e();function s(l){var u=-1,h=l==null?0:l.length;for(this.clear();++u{var n=eb(),r=V_(),i=U$(),o=200;function a(s,l){var u=this.__data__;if(u instanceof n){var h=u.__data__;if(!r||h.length{var n=eb(),r=Uye(),i=Gye(),o=jye(),a=Yye(),s=f3e();function l(u){var h=this.__data__=new n(u);this.size=h.size}l.prototype.clear=r,l.prototype.delete=i,l.prototype.get=o,l.prototype.has=a,l.prototype.set=s,t.exports=l}),p3e=ze((e,t)=>{var n="__lodash_hash_undefined__";function r(i){return this.__data__.set(i,n),this}t.exports=r}),g3e=ze((e,t)=>{function n(r){return this.__data__.has(r)}t.exports=n}),m3e=ze((e,t)=>{var n=U$(),r=p3e(),i=g3e();function o(a){var s=-1,l=a==null?0:a.length;for(this.__data__=new n;++s{function n(r,i){for(var o=-1,a=r==null?0:r.length;++o{function n(r,i){return r.has(i)}t.exports=n}),G$=ze((e,t)=>{var n=m3e(),r=v3e(),i=y3e(),o=1,a=2;function s(l,u,h,g,m,v){var S=h&o,w=l.length,k=u.length;if(w!=k&&!(S&&k>w))return!1;var P=v.get(l),E=v.get(u);if(P&&E)return P==u&&E==l;var T=-1,M=!0,R=h&a?new n:void 0;for(v.set(l,u),v.set(u,l);++T{var n=Du(),r=n.Uint8Array;t.exports=r}),b3e=ze((e,t)=>{function n(r){var i=-1,o=Array(r.size);return r.forEach(function(a,s){o[++i]=[s,a]}),o}t.exports=n}),x3e=ze((e,t)=>{function n(r){var i=-1,o=Array(r.size);return r.forEach(function(a){o[++i]=a}),o}t.exports=n}),w3e=ze((e,t)=>{var n=W_(),r=S3e(),i=F$(),o=G$(),a=b3e(),s=x3e(),l=1,u=2,h="[object Boolean]",g="[object Date]",m="[object Error]",v="[object Map]",S="[object Number]",w="[object RegExp]",k="[object Set]",P="[object String]",E="[object Symbol]",T="[object ArrayBuffer]",M="[object DataView]",R=n?n.prototype:void 0,O=R?R.valueOf:void 0;function D(B,$,W,j,te,V,J){switch(W){case M:if(B.byteLength!=$.byteLength||B.byteOffset!=$.byteOffset)return!1;B=B.buffer,$=$.buffer;case T:return!(B.byteLength!=$.byteLength||!V(new r(B),new r($)));case h:case g:case S:return i(+B,+$);case m:return B.name==$.name&&B.message==$.message;case w:case P:return B==$+"";case v:var re=a;case k:var ee=j&l;if(re||(re=s),B.size!=$.size&&!ee)return!1;var K=J.get(B);if(K)return K==$;j|=u,J.set(B,$);var G=o(re(B),re($),j,te,V,J);return J.delete(B),G;case E:if(O)return O.call(B)==O.call($)}return!1}t.exports=D}),C3e=ze((e,t)=>{function n(r,i){for(var o=-1,a=i.length,s=r.length;++o{var n=Array.isArray;t.exports=n}),_3e=ze((e,t)=>{var n=C3e(),r=U_();function i(o,a,s){var l=a(o);return r(o)?l:n(l,s(o))}t.exports=i}),k3e=ze((e,t)=>{function n(r,i){for(var o=-1,a=r==null?0:r.length,s=0,l=[];++o{function n(){return[]}t.exports=n}),P3e=ze((e,t)=>{var n=k3e(),r=E3e(),i=Object.prototype,o=i.propertyIsEnumerable,a=Object.getOwnPropertySymbols,s=a?function(l){return l==null?[]:(l=Object(l),n(a(l),function(u){return o.call(l,u)}))}:r;t.exports=s}),T3e=ze((e,t)=>{function n(r,i){for(var o=-1,a=Array(r);++o{function n(r){return r!=null&&typeof r=="object"}t.exports=n}),L3e=ze((e,t)=>{var n=tb(),r=ib(),i="[object Arguments]";function o(a){return r(a)&&n(a)==i}t.exports=o}),A3e=ze((e,t)=>{var n=L3e(),r=ib(),i=Object.prototype,o=i.hasOwnProperty,a=i.propertyIsEnumerable,s=n(function(){return arguments}())?n:function(l){return r(l)&&o.call(l,"callee")&&!a.call(l,"callee")};t.exports=s}),M3e=ze((e,t)=>{function n(){return!1}t.exports=n}),j$=ze((e,t)=>{var n=Du(),r=M3e(),i=typeof e=="object"&&e&&!e.nodeType&&e,o=i&&typeof t=="object"&&t&&!t.nodeType&&t,a=o&&o.exports===i,s=a?n.Buffer:void 0,l=s?s.isBuffer:void 0,u=l||r;t.exports=u}),I3e=ze((e,t)=>{var n=9007199254740991,r=/^(?:0|[1-9]\d*)$/;function i(o,a){var s=typeof o;return a=a??n,!!a&&(s=="number"||s!="symbol"&&r.test(o))&&o>-1&&o%1==0&&o{var n=9007199254740991;function r(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=n}t.exports=r}),R3e=ze((e,t)=>{var n=tb(),r=Y$(),i=ib(),o="[object Arguments]",a="[object Array]",s="[object Boolean]",l="[object Date]",u="[object Error]",h="[object Function]",g="[object Map]",m="[object Number]",v="[object Object]",S="[object RegExp]",w="[object Set]",k="[object String]",P="[object WeakMap]",E="[object ArrayBuffer]",T="[object DataView]",M="[object Float32Array]",R="[object Float64Array]",O="[object Int8Array]",D="[object Int16Array]",B="[object Int32Array]",$="[object Uint8Array]",W="[object Uint8ClampedArray]",j="[object Uint16Array]",te="[object Uint32Array]",V={};V[M]=V[R]=V[O]=V[D]=V[B]=V[$]=V[W]=V[j]=V[te]=!0,V[o]=V[a]=V[E]=V[s]=V[T]=V[l]=V[u]=V[h]=V[g]=V[m]=V[v]=V[S]=V[w]=V[k]=V[P]=!1;function J(re){return i(re)&&r(re.length)&&!!V[n(re)]}t.exports=J}),O3e=ze((e,t)=>{function n(r){return function(i){return r(i)}}t.exports=n}),D3e=ze((e,t)=>{var n=$$(),r=typeof e=="object"&&e&&!e.nodeType&&e,i=r&&typeof t=="object"&&t&&!t.nodeType&&t,o=i&&i.exports===r,a=o&&n.process,s=function(){try{var l=i&&i.require&&i.require("util").types;return l||a&&a.binding&&a.binding("util")}catch{}}();t.exports=s}),q$=ze((e,t)=>{var n=R3e(),r=O3e(),i=D3e(),o=i&&i.isTypedArray,a=o?r(o):n;t.exports=a}),N3e=ze((e,t)=>{var n=T3e(),r=A3e(),i=U_(),o=j$(),a=I3e(),s=q$(),l=Object.prototype,u=l.hasOwnProperty;function h(g,m){var v=i(g),S=!v&&r(g),w=!v&&!S&&o(g),k=!v&&!S&&!w&&s(g),P=v||S||w||k,E=P?n(g.length,String):[],T=E.length;for(var M in g)(m||u.call(g,M))&&!(P&&(M=="length"||w&&(M=="offset"||M=="parent")||k&&(M=="buffer"||M=="byteLength"||M=="byteOffset")||a(M,T)))&&E.push(M);return E}t.exports=h}),B3e=ze((e,t)=>{var n=Object.prototype;function r(i){var o=i&&i.constructor,a=typeof o=="function"&&o.prototype||n;return i===a}t.exports=r}),z3e=ze((e,t)=>{function n(r,i){return function(o){return r(i(o))}}t.exports=n}),F3e=ze((e,t)=>{var n=z3e(),r=n(Object.keys,Object);t.exports=r}),$3e=ze((e,t)=>{var n=B3e(),r=F3e(),i=Object.prototype,o=i.hasOwnProperty;function a(s){if(!n(s))return r(s);var l=[];for(var u in Object(s))o.call(s,u)&&u!="constructor"&&l.push(u);return l}t.exports=a}),H3e=ze((e,t)=>{var n=W$(),r=Y$();function i(o){return o!=null&&r(o.length)&&!n(o)}t.exports=i}),W3e=ze((e,t)=>{var n=N3e(),r=$3e(),i=H3e();function o(a){return i(a)?n(a):r(a)}t.exports=o}),V3e=ze((e,t)=>{var n=_3e(),r=P3e(),i=W3e();function o(a){return n(a,i,r)}t.exports=o}),U3e=ze((e,t)=>{var n=V3e(),r=1,i=Object.prototype,o=i.hasOwnProperty;function a(s,l,u,h,g,m){var v=u&r,S=n(s),w=S.length,k=n(l),P=k.length;if(w!=P&&!v)return!1;for(var E=w;E--;){var T=S[E];if(!(v?T in l:o.call(l,T)))return!1}var M=m.get(s),R=m.get(l);if(M&&R)return M==l&&R==s;var O=!0;m.set(s,l),m.set(l,s);for(var D=v;++E{var n=w1(),r=Du(),i=n(r,"DataView");t.exports=i}),j3e=ze((e,t)=>{var n=w1(),r=Du(),i=n(r,"Promise");t.exports=i}),Y3e=ze((e,t)=>{var n=w1(),r=Du(),i=n(r,"Set");t.exports=i}),q3e=ze((e,t)=>{var n=w1(),r=Du(),i=n(r,"WeakMap");t.exports=i}),K3e=ze((e,t)=>{var n=G3e(),r=V_(),i=j3e(),o=Y3e(),a=q3e(),s=tb(),l=V$(),u="[object Map]",h="[object Object]",g="[object Promise]",m="[object Set]",v="[object WeakMap]",S="[object DataView]",w=l(n),k=l(r),P=l(i),E=l(o),T=l(a),M=s;(n&&M(new n(new ArrayBuffer(1)))!=S||r&&M(new r)!=u||i&&M(i.resolve())!=g||o&&M(new o)!=m||a&&M(new a)!=v)&&(M=function(R){var O=s(R),D=O==h?R.constructor:void 0,B=D?l(D):"";if(B)switch(B){case w:return S;case k:return u;case P:return g;case E:return m;case T:return v}return O}),t.exports=M}),X3e=ze((e,t)=>{var n=h3e(),r=G$(),i=w3e(),o=U3e(),a=K3e(),s=U_(),l=j$(),u=q$(),h=1,g="[object Arguments]",m="[object Array]",v="[object Object]",S=Object.prototype,w=S.hasOwnProperty;function k(P,E,T,M,R,O){var D=s(P),B=s(E),$=D?m:a(P),W=B?m:a(E);$=$==g?v:$,W=W==g?v:W;var j=$==v,te=W==v,V=$==W;if(V&&l(P)){if(!l(E))return!1;D=!0,j=!1}if(V&&!j)return O||(O=new n),D||u(P)?r(P,E,T,M,R,O):i(P,E,$,T,M,R,O);if(!(T&h)){var J=j&&w.call(P,"__wrapped__"),re=te&&w.call(E,"__wrapped__");if(J||re){var ee=J?P.value():P,K=re?E.value():E;return O||(O=new n),R(ee,K,T,M,O)}}return V?(O||(O=new n),o(P,E,T,M,R,O)):!1}t.exports=k}),Z3e=ze((e,t)=>{var n=X3e(),r=ib();function i(o,a,s,l,u){return o===a?!0:o==null||a==null||!r(o)&&!r(a)?o!==o&&a!==a:n(o,a,s,l,i,u)}t.exports=i}),K$=ze((e,t)=>{var n=Z3e();function r(i,o){return n(i,o)}t.exports=r}),Q3e=["ctrl","shift","alt","meta","mod"],J3e={esc:"escape",return:"enter",left:"arrowleft",up:"arrowup",right:"arrowright",down:"arrowdown"};function Pw(e,t=","){return typeof e=="string"?e.split(t):e}function Zm(e,t="+"){let n=e.toLocaleLowerCase().split(t).map(o=>o.trim()).map(o=>J3e[o]||o),r={alt:n.includes("alt"),ctrl:n.includes("ctrl"),shift:n.includes("shift"),meta:n.includes("meta"),mod:n.includes("mod")},i=n.filter(o=>!Q3e.includes(o));return{...r,keys:i}}function e4e(e,t,n){(typeof n=="function"&&n(e,t)||n===!0)&&e.preventDefault()}function t4e(e,t,n){return typeof n=="function"?n(e,t):n===!0||n===void 0}function n4e(e){return X$(e,["input","textarea","select"])}function X$({target:e},t=!1){let n=e&&e.tagName;return t instanceof Array?Boolean(n&&t&&t.some(r=>r.toLowerCase()===n.toLowerCase())):Boolean(n&&t&&t===!0)}function r4e(e,t){return e.length===0&&t?(console.warn('A hotkey has the "scopes" option set, however no active scopes were found. If you want to use the global scopes feature, you need to wrap your app in a '),!0):t?e.some(n=>t.includes(n))||e.includes("*"):!0}var i4e=(e,t,n)=>{let{alt:r,ctrl:i,meta:o,mod:a,shift:s,keys:l}=t,{altKey:u,ctrlKey:h,metaKey:g,shiftKey:m,key:v,code:S}=e,w=S.toLowerCase().replace("key",""),k=v.toLowerCase();if(u!==r&&k!=="alt"||m!==s&&k!=="shift")return!1;if(a){if(!g&&!h)return!1}else if(g!==o&&w!=="meta"||h!==i&&w!=="ctrl")return!1;return l&&l.length===1&&(l.includes(k)||l.includes(w))?!0:l?l.every(P=>n.has(P)):!l},o4e=C.exports.createContext(void 0),a4e=()=>C.exports.useContext(o4e),s4e=C.exports.createContext({hotkeys:[],enabledScopes:[],toggleScope:()=>{},enableScope:()=>{},disableScope:()=>{}}),l4e=()=>C.exports.useContext(s4e),u4e=z$(K$());function c4e(e){let t=C.exports.useRef(void 0);return(0,u4e.default)(t.current,e)||(t.current=e),t.current}var QA=e=>{e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation()};function st(e,t,n,r){let i=C.exports.useRef(null),{current:o}=C.exports.useRef(new Set),a=n instanceof Array?r instanceof Array?void 0:r:n,s=n instanceof Array?n:r instanceof Array?r:[],l=C.exports.useCallback(t,[...s]),u=c4e(a),{enabledScopes:h}=l4e(),g=a4e();return C.exports.useLayoutEffect(()=>{if(u?.enabled===!1||!r4e(h,u?.scopes))return;let m=w=>{if(!(n4e(w)&&!X$(w,u?.enableOnFormTags))){if(i.current!==null&&document.activeElement!==i.current&&!i.current.contains(document.activeElement)){QA(w);return}w.target?.isContentEditable&&!u?.enableOnContentEditable||Pw(e,u?.splitKey).forEach(k=>{let P=Zm(k,u?.combinationKey);if(i4e(w,P,o)||P.keys?.includes("*")){if(e4e(w,P,u?.preventDefault),!t4e(w,P,u?.enabled)){QA(w);return}l(w,P)}})}},v=w=>{o.add(w.key.toLowerCase()),(u?.keydown===void 0&&u?.keyup!==!0||u?.keydown)&&m(w)},S=w=>{w.key.toLowerCase()!=="meta"?o.delete(w.key.toLowerCase()):o.clear(),u?.keyup&&m(w)};return(i.current||document).addEventListener("keyup",S),(i.current||document).addEventListener("keydown",v),g&&Pw(e,u?.splitKey).forEach(w=>g.addHotkey(Zm(w,u?.combinationKey))),()=>{(i.current||document).removeEventListener("keyup",S),(i.current||document).removeEventListener("keydown",v),g&&Pw(e,u?.splitKey).forEach(w=>g.removeHotkey(Zm(w,u?.combinationKey)))}},[e,l,u,h]),i}z$(K$());var s7=new Set;function d4e(e){(Array.isArray(e)?e:[e]).forEach(t=>s7.add(Zm(t)))}function f4e(e){(Array.isArray(e)?e:[e]).forEach(t=>{let n=Zm(t);for(let r of s7)r.keys?.every(i=>n.keys?.includes(i))&&s7.delete(r)})}window.addEventListener("DOMContentLoaded",()=>{document.addEventListener("keydown",e=>{d4e(e.key)}),document.addEventListener("keyup",e=>{f4e(e.key)})});function h4e(){return Q("div",{className:"work-in-progress nodes-work-in-progress",children:[b("h1",{children:"Nodes"}),b("p",{children:"A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature."})]})}const p4e=()=>Q("div",{className:"work-in-progress post-processing-work-in-progress",children:[b("h1",{children:"Post Processing"}),b("p",{children:"Invoke AI offers a wide variety of post processing features. Image Upscaling and Face Restoration are already available in the WebUI. You can access them from the Advanced Options menu of the Text To Image and Image To Image tabs. You can also process images directly, using the image action buttons above the current image display or in the viewer."}),b("p",{children:"A dedicated UI will be released soon to facilitate more advanced post processing workflows."}),b("p",{children:"The Invoke AI Command Line Interface offers various other features including Embiggen."})]}),g4e=at({displayName:"ImageToImageIcon",viewBox:"0 0 3543 3543",path:b("g",{transform:"matrix(1.10943,0,0,1.10943,-206.981,-213.533)",children:b("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M688.533,2405.95L542.987,2405.95C349.532,2405.95 192.47,2248.89 192.47,2055.44L192.47,542.987C192.47,349.532 349.532,192.47 542.987,192.47L2527.88,192.47C2721.33,192.47 2878.4,349.532 2878.4,542.987L2878.4,1172.79L3023.94,1172.79C3217.4,1172.79 3374.46,1329.85 3374.46,1523.3C3374.46,1523.3 3374.46,3035.75 3374.46,3035.75C3374.46,3229.21 3217.4,3386.27 3023.94,3386.27L1039.05,3386.27C845.595,3386.27 688.533,3229.21 688.533,3035.75L688.533,2405.95ZM3286.96,2634.37L3286.96,1523.3C3286.96,1378.14 3169.11,1260.29 3023.94,1260.29C3023.94,1260.29 1039.05,1260.29 1039.05,1260.29C893.887,1260.29 776.033,1378.14 776.033,1523.3L776.033,2489.79L1440.94,1736.22L2385.83,2775.59L2880.71,2200.41L3286.96,2634.37ZM2622.05,1405.51C2778.5,1405.51 2905.51,1532.53 2905.51,1688.98C2905.51,1845.42 2778.5,1972.44 2622.05,1972.44C2465.6,1972.44 2338.58,1845.42 2338.58,1688.98C2338.58,1532.53 2465.6,1405.51 2622.05,1405.51ZM2790.9,1172.79L1323.86,1172.79L944.882,755.906L279.97,1509.47L279.97,542.987C279.97,397.824 397.824,279.97 542.987,279.97C542.987,279.97 2527.88,279.97 2527.88,279.97C2673.04,279.97 2790.9,397.824 2790.9,542.987L2790.9,1172.79ZM2125.98,425.197C2282.43,425.197 2409.45,552.213 2409.45,708.661C2409.45,865.11 2282.43,992.126 2125.98,992.126C1969.54,992.126 1842.52,865.11 1842.52,708.661C1842.52,552.213 1969.54,425.197 2125.98,425.197Z"})})}),m4e=at({displayName:"NodesIcon",viewBox:"0 0 3543 3543",path:b("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3543.31,770.787C3543.31,515.578 3336.11,308.38 3080.9,308.38L462.407,308.38C207.197,308.38 0,515.578 0,770.787L0,2766.03C0,3021.24 207.197,3228.44 462.407,3228.44L3080.9,3228.44C3336.11,3228.44 3543.31,3021.24 3543.31,2766.03C3543.31,2766.03 3543.31,770.787 3543.31,770.787ZM3427.88,770.787L3427.88,2766.03C3427.88,2957.53 3272.4,3113.01 3080.9,3113.01C3080.9,3113.01 462.407,3113.01 462.407,3113.01C270.906,3113.01 115.431,2957.53 115.431,2766.03L115.431,770.787C115.431,579.286 270.906,423.812 462.407,423.812L3080.9,423.812C3272.4,423.812 3427.88,579.286 3427.88,770.787ZM1214.23,1130.69L1321.47,1130.69C1324.01,1130.69 1326.54,1130.53 1329.05,1130.2C1329.05,1130.2 1367.3,1125.33 1397.94,1149.8C1421.63,1168.72 1437.33,1204.3 1437.33,1265.48L1437.33,2078.74L1220.99,2078.74C1146.83,2078.74 1086.61,2138.95 1086.61,2213.12L1086.61,2762.46C1086.61,2836.63 1146.83,2896.84 1220.99,2896.84L1770.34,2896.84C1844.5,2896.84 1904.71,2836.63 1904.71,2762.46L1904.71,2213.12C1904.71,2138.95 1844.5,2078.74 1770.34,2078.74L1554,2078.74L1554,1604.84C1625.84,1658.19 1703.39,1658.1 1703.39,1658.1C1703.54,1658.1 1703.69,1658.11 1703.84,1658.11L2362.2,1658.11L2362.2,1874.44C2362.2,1948.61 2422.42,2008.82 2496.58,2008.82L3045.93,2008.82C3120.09,2008.82 3180.3,1948.61 3180.3,1874.44L3180.3,1325.1C3180.3,1250.93 3120.09,1190.72 3045.93,1190.72L2496.58,1190.72C2422.42,1190.72 2362.2,1250.93 2362.2,1325.1L2362.2,1558.97L2362.2,1541.44L1704.23,1541.44C1702.2,1541.37 1650.96,1539.37 1609.51,1499.26C1577.72,1468.49 1554,1416.47 1554,1331.69L1554,1265.48C1554,1153.86 1513.98,1093.17 1470.76,1058.64C1411.24,1011.1 1338.98,1012.58 1319.15,1014.03L1214.23,1014.03L1214.23,796.992C1214.23,722.828 1154.02,662.617 1079.85,662.617L530.507,662.617C456.343,662.617 396.131,722.828 396.131,796.992L396.131,1346.34C396.131,1420.5 456.343,1480.71 530.507,1480.71L1079.85,1480.71C1154.02,1480.71 1214.23,1420.5 1214.23,1346.34L1214.23,1130.69Z"})}),v4e=at({displayName:"PostprocessingIcon",viewBox:"0 0 3543 3543",path:b("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M709.477,1596.53L992.591,1275.66L2239.09,2646.81L2891.95,1888.03L3427.88,2460.51L3427.88,994.78C3427.88,954.66 3421.05,916.122 3408.5,880.254L3521.9,855.419C3535.8,899.386 3543.31,946.214 3543.31,994.78L3543.31,2990.02C3543.31,3245.23 3336.11,3452.43 3080.9,3452.43C3080.9,3452.43 462.407,3452.43 462.407,3452.43C207.197,3452.43 -0,3245.23 -0,2990.02L-0,994.78C-0,739.571 207.197,532.373 462.407,532.373L505.419,532.373L504.644,532.546L807.104,600.085C820.223,601.729 832.422,607.722 841.77,617.116C850.131,625.517 855.784,636.21 858.055,647.804L462.407,647.804C270.906,647.804 115.431,803.279 115.431,994.78L115.431,2075.73L-0,2101.5L115.431,2127.28L115.431,2269.78L220.47,2150.73L482.345,2209.21C503.267,2211.83 522.722,2221.39 537.63,2236.37C552.538,2251.35 562.049,2270.9 564.657,2291.93L671.84,2776.17L779.022,2291.93C781.631,2270.9 791.141,2251.35 806.05,2236.37C820.958,2221.39 840.413,2211.83 861.334,2209.21L1353.15,2101.5L861.334,1993.8C840.413,1991.18 820.958,1981.62 806.05,1966.64C791.141,1951.66 781.631,1932.11 779.022,1911.08L709.477,1596.53ZM671.84,1573.09L725.556,2006.07C726.863,2016.61 731.63,2026.4 739.101,2033.91C746.573,2041.42 756.323,2046.21 766.808,2047.53L1197.68,2101.5L766.808,2155.48C756.323,2156.8 746.573,2161.59 739.101,2169.09C731.63,2176.6 726.863,2186.4 725.556,2196.94L671.84,2629.92L618.124,2196.94C616.817,2186.4 612.05,2176.6 604.579,2169.09C597.107,2161.59 587.357,2156.8 576.872,2155.48L146.001,2101.5L576.872,2047.53C587.357,2046.21 597.107,2041.42 604.579,2033.91C612.05,2026.4 616.817,2016.61 618.124,2006.07L671.84,1573.09ZM609.035,1710.36L564.657,1911.08C562.049,1932.11 552.538,1951.66 537.63,1966.64C522.722,1981.62 503.267,1991.18 482.345,1993.8L328.665,2028.11L609.035,1710.36ZM2297.12,938.615L2451.12,973.003C2480.59,976.695 2507.99,990.158 2528.99,1011.26C2549.99,1032.37 2563.39,1059.9 2567.07,1089.52L2672.73,1566.9C2634.5,1580.11 2593.44,1587.29 2550.72,1587.29C2344.33,1587.29 2176.77,1419.73 2176.77,1213.34C2176.77,1104.78 2223.13,1006.96 2297.12,938.615ZM2718.05,76.925L2793.72,686.847C2795.56,701.69 2802.27,715.491 2812.8,726.068C2823.32,736.644 2837.06,743.391 2851.83,745.242L3458.78,821.28L2851.83,897.318C2837.06,899.168 2823.32,905.916 2812.8,916.492C2802.27,927.068 2795.56,940.87 2793.72,955.712L2718.05,1565.63L2642.38,955.712C2640.54,940.87 2633.83,927.068 2623.3,916.492C2612.78,905.916 2599.04,899.168 2584.27,897.318L1977.32,821.28L2584.27,745.242C2599.04,743.391 2612.78,736.644 2623.3,726.068C2633.83,715.491 2640.54,701.69 2642.38,686.847L2718.05,76.925ZM2883.68,1043.06C2909.88,1094.13 2924.67,1152.02 2924.67,1213.34C2924.67,1335.4 2866.06,1443.88 2775.49,1512.14L2869.03,1089.52C2871.07,1073.15 2876.07,1057.42 2883.68,1043.06ZM925.928,201.2L959.611,472.704C960.431,479.311 963.42,485.455 968.105,490.163C972.79,494.871 978.904,497.875 985.479,498.698L1255.66,532.546L985.479,566.395C978.904,567.218 972.79,570.222 968.105,574.93C963.42,579.638 960.431,585.781 959.611,592.388L925.928,863.893L892.245,592.388C891.425,585.781 888.436,579.638 883.751,574.93C879.066,570.222 872.952,567.218 866.378,566.395L596.195,532.546L866.378,498.698C872.952,497.875 879.066,494.871 883.751,490.163C888.436,485.455 891.425,479.311 892.245,472.704L925.928,201.2ZM2864.47,532.373L3080.9,532.373C3258.7,532.373 3413.2,632.945 3490.58,780.281L3319.31,742.773C3257.14,683.925 3173.2,647.804 3080.9,647.804L2927.07,647.804C2919.95,642.994 2913.25,637.473 2907.11,631.298C2886.11,610.194 2872.71,582.655 2869.03,553.04L2864.47,532.373ZM1352.36,532.373L2571.64,532.373L2567.07,553.04C2563.39,582.655 2549.99,610.194 2528.99,631.298C2522.85,637.473 2516.16,642.994 2509.03,647.804L993.801,647.804C996.072,636.21 1001.73,625.517 1010.09,617.116C1019.43,607.722 1031.63,601.729 1044.75,600.085L1353.15,532.546L1352.36,532.373Z"})}),y4e=at({displayName:"TextToImageIcon",viewBox:"0 0 3543 3543",path:b("g",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",transform:"matrix(1.11667,0,0,1.1066,-231.131,-213.062)",children:b("path",{d:"M2209.59,1137.35L2209.59,1098.17C2177.13,1108.99 2125.74,1121.91 2055.41,1136.94C2054.77,1137.08 2054.14,1137.21 2053.49,1137.35L1662.79,1137.35C1687.75,1101.98 1720.8,1074.35 1761.93,1054.44C1808.52,1031.9 1875.69,1012.22 1963.45,995.386C2081.86,973.146 2163.91,952.409 2209.59,933.174L2209.59,907.929C2209.59,859.241 2197.57,824.529 2173.53,803.792C2149.48,783.054 2104.1,772.686 2037.38,772.686C1992.3,772.686 1957.14,781.552 1931.89,799.284C1906.64,817.015 1886.21,848.121 1870.58,892.601L1640.67,851.127C1666.51,758.56 1710.99,690.037 1774.11,645.557C1837.22,601.077 1930.99,578.837 2055.41,578.837C2168.42,578.837 2252.57,592.211 2307.87,618.959C2363.17,645.707 2402.09,679.668 2424.63,720.842C2447.17,762.016 2458.44,837.602 2458.44,947.6L2456.7,1137.35L3021.34,1137.35C3214.79,1137.35 3371.86,1294.41 3371.86,1487.87C3371.86,1487.87 3371.86,3000.32 3371.86,3000.32C3371.86,3193.78 3214.79,3350.84 3021.34,3350.84C3021.34,3350.84 1036.45,3350.84 1036.45,3350.84C842.991,3350.84 685.93,3193.78 685.93,3000.32L685.93,1487.87C685.93,1400.21 718.174,1320.03 771.448,1258.54L772.123,1257.76L607.408,1257.76L498.311,1558L215.202,1558L730.028,236.22L1012.24,236.22L1373.06,1137.35L2209.59,1137.35ZM3284.36,2598.93L3284.36,1487.87C3284.36,1342.71 3166.5,1224.85 3021.34,1224.85C3021.34,1224.85 1036.45,1224.85 1036.45,1224.85C891.284,1224.85 773.43,1342.71 773.43,1487.87L773.43,2454.35L1438.34,1700.79L2383.22,2740.16L2878.11,2164.98L3284.36,2598.93ZM2619.44,1370.08C2775.89,1370.08 2902.91,1497.1 2902.91,1653.54C2902.91,1809.99 2775.89,1937.01 2619.44,1937.01C2462.99,1937.01 2335.98,1809.99 2335.98,1653.54C2335.98,1497.1 2462.99,1370.08 2619.44,1370.08ZM772.877,1256.89L772.849,1256.93L773.167,1256.57L772.877,1256.89ZM773.634,1256.04L773.563,1256.12L773.985,1255.64L773.634,1256.04ZM774.394,1255.18L774.276,1255.31L774.746,1254.78L774.394,1255.18ZM775.157,1254.32L774.988,1254.51L775.493,1253.95L775.157,1254.32ZM775.923,1253.47L775.698,1253.72L776.237,1253.12L775.923,1253.47ZM776.691,1252.62L776.403,1252.94L776.979,1252.3L776.691,1252.62ZM777.462,1251.77L777.098,1252.17L777.723,1251.49L777.462,1251.77ZM925.081,1155.44C868.026,1174.57 817.508,1207.99 777.775,1251.43C817.511,1207.99 868.031,1174.57 925.081,1155.44ZM925.646,1155.25L925.108,1155.43L926.103,1155.1L925.646,1155.25ZM935.286,1152.2C932.214,1153.12 929.159,1154.09 926.13,1155.09C929.165,1154.09 932.219,1153.12 935.286,1152.2ZM935.716,1152.07L935.384,1152.17L936.292,1151.89L935.716,1152.07ZM936.843,1151.73L936.451,1151.85L937.327,1151.59L936.843,1151.73ZM937.972,1151.4L937.514,1151.53L938.377,1151.28L937.972,1151.4ZM939.102,1151.07L938.57,1151.22L939.438,1150.97L939.102,1151.07ZM940.233,1150.74L939.613,1150.92L940.505,1150.67L940.233,1150.74ZM946.659,1148.98C944.639,1149.51 942.626,1150.07 940.626,1150.63C942.631,1150.06 944.642,1149.51 946.659,1148.98ZM947.056,1148.87L946.829,1148.93L947.659,1148.71L947.056,1148.87ZM948.198,1148.57L947.919,1148.65L948.705,1148.44L948.198,1148.57ZM949.342,1148.28L949.008,1148.37L949.771,1148.17L949.342,1148.28ZM950.488,1147.99L950.096,1148.09L950.848,1147.9L950.488,1147.99ZM951.635,1147.7L951.182,1147.81L951.932,1147.63L951.635,1147.7ZM952.783,1147.42L952.262,1147.55L953.022,1147.36L952.783,1147.42ZM953.933,1147.14L953.327,1147.28L954.115,1147.09L953.933,1147.14ZM958.213,1146.13C956.927,1146.42 955.644,1146.73 954.354,1147.04C955.637,1146.73 956.923,1146.43 958.213,1146.13ZM958.547,1146.06L958.409,1146.09L959.174,1145.91L958.547,1146.06ZM959.704,1145.79L959.517,1145.84L960.229,1145.68L959.704,1145.79ZM960.863,1145.54L960.626,1145.59L961.311,1145.44L960.863,1145.54ZM962.023,1145.28L961.736,1145.35L962.406,1145.2L962.023,1145.28ZM963.184,1145.03L962.846,1145.11L963.508,1144.97L963.184,1145.03ZM964.347,1144.79L963.956,1144.87L964.615,1144.73L964.347,1144.79ZM965.511,1144.55L965.066,1144.64L965.725,1144.5L965.511,1144.55ZM966.677,1144.31L966.172,1144.41L966.838,1144.28L966.677,1144.31ZM967.844,1144.08L967.269,1144.19L967.953,1144.05L967.844,1144.08ZM970.183,1143.62C969.793,1143.69 969.403,1143.77 969.013,1143.85L969.055,1143.84C969.413,1143.77 969.771,1143.7 970.129,1143.63L970.183,1143.62ZM971.354,1143.4L971.245,1143.42L971.882,1143.3L971.354,1143.4ZM972.526,1143.18L972.37,1143.21L972.987,1143.09L972.526,1143.18ZM973.7,1142.96L973.496,1143L974.103,1142.89L973.7,1142.96ZM974.876,1142.75L974.624,1142.8L975.225,1142.69L974.876,1142.75ZM976.052,1142.55L975.754,1142.6L976.349,1142.49L976.052,1142.55ZM977.23,1142.34L976.885,1142.4L977.476,1142.3L977.23,1142.34ZM978.41,1142.14L978.019,1142.21L978.605,1142.11L978.41,1142.14ZM979.59,1141.95L979.156,1142.02L979.736,1141.92L979.59,1141.95ZM980.772,1141.76L980.299,1141.83L980.868,1141.74L980.772,1141.76ZM981.955,1141.57L981.464,1141.65L982.002,1141.56L981.955,1141.57ZM983.14,1141.39L983.1,1141.39L983.605,1141.32L983.14,1141.39ZM984.326,1141.21L984.239,1141.22L984.778,1141.14L984.326,1141.21ZM985.513,1141.03L985.379,1141.05L985.928,1140.97L985.513,1141.03ZM986.702,1140.86L986.521,1140.89L987.073,1140.81L986.702,1140.86ZM987.891,1140.69L987.665,1140.73L988.218,1140.65L987.891,1140.69ZM989.082,1140.53L988.811,1140.57L989.363,1140.49L989.082,1140.53ZM990.275,1140.37L989.96,1140.41L990.508,1140.34L990.275,1140.37ZM991.468,1140.22L991.113,1140.26L991.654,1140.19L991.468,1140.22ZM992.663,1140.07L992.273,1140.12L992.8,1140.05L992.663,1140.07ZM993.859,1139.92L993.447,1139.97L993.948,1139.91L993.859,1139.92ZM995.056,1139.78L994.671,1139.82L995.097,1139.77L995.056,1139.78ZM996.255,1139.64L996.23,1139.64L996.578,1139.6L996.255,1139.64ZM997.454,1139.5L997.383,1139.51L997.852,1139.46L997.454,1139.5ZM998.655,1139.37L998.537,1139.38L999.041,1139.33L998.655,1139.37ZM999.857,1139.24L999.693,1139.26L1000.21,1139.21L999.857,1139.24ZM1001.06,1139.12L1000.85,1139.14L1001.38,1139.09L1001.06,1139.12ZM1002.26,1139L1002.01,1139.03L1002.54,1138.98L1002.26,1139ZM1003.47,1138.89L1003.18,1138.91L1003.7,1138.87L1003.47,1138.89ZM1004.68,1138.78L1004.34,1138.81L1004.86,1138.76L1004.68,1138.78ZM1005.89,1138.67L1005.52,1138.7L1006.02,1138.66L1005.89,1138.67ZM1007.1,1138.57L1006.71,1138.6L1007.18,1138.56L1007.1,1138.57ZM1008.31,1138.47L1007.96,1138.5L1008.35,1138.46L1008.31,1138.47ZM1009.52,1138.37L1009.5,1138.38L1009.72,1138.36L1009.52,1138.37ZM1010.73,1138.28L1010.67,1138.29L1011.1,1138.26L1010.73,1138.28ZM1011.94,1138.2L1011.84,1138.2L1012.32,1138.17L1011.94,1138.2ZM1013.16,1138.12L1013,1138.13L1013.51,1138.09L1013.16,1138.12ZM1014.37,1138.04L1014.17,1138.05L1014.69,1138.02L1014.37,1138.04ZM1015.59,1137.96L1015.35,1137.98L1015.86,1137.95L1015.59,1137.96ZM1016.81,1137.89L1016.52,1137.91L1017.04,1137.88L1016.81,1137.89ZM1018.03,1137.83L1017.7,1137.85L1018.21,1137.82L1018.03,1137.83ZM1019.25,1137.77L1018.89,1137.79L1019.39,1137.76L1019.25,1137.77ZM1020.47,1137.71L1020.1,1137.73L1020.56,1137.71L1020.47,1137.71ZM1021.69,1137.66L1021.36,1137.67L1021.74,1137.66L1021.69,1137.66ZM1022.92,1137.61L1022.91,1137.61L1023.02,1137.61L1022.92,1137.61ZM1024.14,1137.57L1024.09,1137.57L1024.49,1137.55L1024.14,1137.57ZM1025.37,1137.52L1025.27,1137.53L1025.74,1137.51L1025.37,1137.52ZM1026.6,1137.49L1026.45,1137.49L1026.94,1137.48L1026.6,1137.49ZM1027.82,1137.46L1027.63,1137.46L1028.14,1137.45L1027.82,1137.46ZM1029.05,1137.43L1028.81,1137.43L1029.33,1137.42L1029.05,1137.43ZM1030.28,1137.41L1030,1137.41L1030.52,1137.4L1030.28,1137.41ZM1031.51,1137.39L1031.19,1137.39L1031.7,1137.38L1031.51,1137.39ZM1032.75,1137.37L1032.39,1137.38L1032.89,1137.37L1032.75,1137.37ZM1033.98,1137.36L1033.61,1137.36L1034.07,1137.36L1033.98,1137.36ZM1035.21,1137.35L1034.87,1137.36L1035.26,1137.35L1035.21,1137.35ZM1050.1,1035.06L867.977,544.575L689.455,1035.06L1050.1,1035.06Z"})})});var Hi=(e=>(e[e.PROMPT=0]="PROMPT",e[e.GALLERY=1]="GALLERY",e[e.OTHER=2]="OTHER",e[e.SEED=3]="SEED",e[e.VARIATIONS=4]="VARIATIONS",e[e.UPSCALE=5]="UPSCALE",e[e.FACE_CORRECTION=6]="FACE_CORRECTION",e[e.IMAGE_TO_IMAGE=7]="IMAGE_TO_IMAGE",e[e.BOUNDING_BOX=8]="BOUNDING_BOX",e[e.SEAM_CORRECTION=9]="SEAM_CORRECTION",e[e.INFILL_AND_SCALING=10]="INFILL_AND_SCALING",e))(Hi||{});const S4e={[0]:{text:"This field will take all prompt text, including both content and stylistic terms. While weights can be included in the prompt, standard CLI Commands/parameters will not work.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[1]:{text:"As new invocations are generated, files from the output directory will be displayed here. Generations have additional options to configure new generations.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[2]:{text:"These options will enable alternative processing modes for Invoke. Seamless tiling will work to generate repeating patterns in the output. High Resolution Optimization performs a two-step generation cycle, and should be used at higher resolutions when you desire a more coherent image/composition. ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[3]:{text:"Seed values provide an initial set of noise which guide the denoising process, and can be randomized or populated with a seed from a previous invocation. The Threshold feature can be used to mitigate undesirable outcomes at higher CFG values (try between 0-10), and Perlin can be used to add Perlin noise into the denoising process - Both serve to add variation to your outputs. ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[4]:{text:"Try a variation with an amount of between 0 and 1 to change the output image for the set seed - Interesting variations on the seed are found between 0.1 and 0.3.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[5]:{text:"Using ESRGAN you can increase the output resolution without requiring a higher width/height in the initial generation.",href:"link/to/docs/feature1.html",guideImage:"asset/path.gif"},[6]:{text:"Using GFPGAN or Codeformer, Face Correction will attempt to identify faces in outputs, and correct any defects/abnormalities. Higher strength values will apply a stronger corrective pressure on outputs, resulting in more appealing faces. With Codeformer, a higher fidelity will attempt to preserve the original image, at the expense of face correction strength.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[7]:{text:"Image to Image allows the upload of an initial image, which InvokeAI will use to guide the generation process, along with a prompt. A lower value for this setting will more closely resemble the original image. Values between 0-1 are accepted, and a range of .25-.75 is recommended ",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[8]:{text:"The bounding box is analogous to the Width and Height settings for Text to Image or Image to Image. Only the area in the box will be processed.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[9]:{text:"Control the handling of visible seams which may occur when a generated image is pasted back onto the canvas.",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"},[10]:{text:"Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes).",href:"link/to/docs/feature3.html",guideImage:"asset/path.gif"}},JA=/^-?(0\.)?\.?$/,Ms=e=>{const{label:t,labelFontSize:n="1rem",styleClass:r,isDisabled:i=!1,showStepper:o=!0,width:a,textAlign:s,isInvalid:l,value:u,onChange:h,min:g,max:m,isInteger:v=!0,formControlProps:S,formLabelProps:w,numberInputFieldProps:k,numberInputStepperProps:P,tooltipProps:E,...T}=e,[M,R]=C.exports.useState(String(u));C.exports.useEffect(()=>{!M.match(JA)&&u!==Number(M)&&R(String(u))},[u,M]);const O=B=>{R(B),B.match(JA)||h(v?Math.floor(Number(B)):Number(B))},D=B=>{const $=We.clamp(v?Math.floor(Number(B.target.value)):Number(B.target.value),g,m);R(String($)),h($)};return b(pi,{...E,children:Q(Cd,{isDisabled:i,isInvalid:l,className:r?`invokeai__number-input-form-control ${r}`:"invokeai__number-input-form-control",...S,children:[t&&b(bh,{className:"invokeai__number-input-form-label",style:{display:t?"block":"none"},fontSize:n,...w,children:t}),Q(g_,{className:"invokeai__number-input-root",value:M,keepWithinRange:!0,clampValueOnBlur:!1,onChange:O,onBlur:D,width:a,...T,children:[b(m_,{className:"invokeai__number-input-field",textAlign:s,...k}),o&&Q("div",{className:"invokeai__number-input-stepper",children:[b(y_,{...P,className:"invokeai__number-input-stepper-button"}),b(v_,{...P,className:"invokeai__number-input-stepper-button"})]})]})]})})},Ol=e=>{const{label:t,isDisabled:n,validValues:r,tooltip:i,tooltipProps:o,size:a="sm",fontSize:s="md",styleClass:l,...u}=e;return Q(Cd,{isDisabled:n,className:`invokeai__select ${l}`,onClick:h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.nativeEvent.stopPropagation(),h.nativeEvent.cancelBubble=!0},children:[t&&b(bh,{className:"invokeai__select-label",fontSize:s,marginBottom:1,flexGrow:2,whiteSpace:"nowrap",children:t}),b(pi,{label:i,...o,children:b($F,{className:"invokeai__select-picker",fontSize:s,size:a,...u,children:r.map(h=>typeof h=="string"||typeof h=="number"?b("option",{value:h,className:"invokeai__select-option",children:h},h):b("option",{value:h.value,className:"invokeai__select-option",children:h.key},h.value))})})]})},b4e=["ddim","plms","k_lms","k_dpm_2","k_dpm_2_a","k_euler","k_euler_a","k_heun"],x4e=[64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408,1472,1536,1600,1664,1728,1792,1856,1920,1984,2048],w4e=[64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408,1472,1536,1600,1664,1728,1792,1856,1920,1984,2048],C4e=[{key:"2x",value:2},{key:"4x",value:4}],G_=0,j_=4294967295,_4e=["gfpgan","codeformer"],k4e=[{key:"None",value:"none"},{key:"Fast",value:"latents"},{key:"Accurate",value:"full-res"}],E4e=lt(e=>e.options,e=>({facetoolStrength:e.facetoolStrength,facetoolType:e.facetoolType,codeformerFidelity:e.codeformerFidelity}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),P4e=lt(e=>e.system,e=>({isGFPGANAvailable:e.isGFPGANAvailable}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),Y_=()=>{const e=qe(),{facetoolStrength:t,facetoolType:n,codeformerFidelity:r}=Le(E4e),{isGFPGANAvailable:i}=Le(P4e),o=l=>e(o4(l)),a=l=>e(IV(l)),s=l=>e(a4(l.target.value));return Q(rn,{direction:"column",gap:2,children:[b(Ol,{label:"Type",validValues:_4e.concat(),value:n,onChange:s}),b(Ms,{isDisabled:!i,label:"Strength",step:.05,min:0,max:1,onChange:o,value:t,width:"90px",isInteger:!1}),n==="codeformer"&&b(Ms,{isDisabled:!i,label:"Fidelity",step:.05,min:0,max:1,onChange:a,value:r,width:"90px",isInteger:!1})]})},Ls=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:i,formLabelProps:o,styleClass:a,...s}=e;return b(Cd,{isDisabled:n,width:r,className:`invokeai__switch-form-control ${a}`,...i,children:Q(bh,{className:"invokeai__switch-form-label",whiteSpace:"nowrap",...o,children:[t,b(k_,{className:"invokeai__switch-root",...s})]})})};function Z$(){const e=Le(i=>i.system.isGFPGANAvailable),t=Le(i=>i.options.shouldRunFacetool),n=qe();return b(Ls,{isDisabled:!e,isChecked:t,onChange:i=>n(Zke(i.target.checked))})}function T4e(){const e=qe(),t=Le(r=>r.options.shouldFitToWidthHeight);return b(Ls,{label:"Fit Initial Image To Output Size",isChecked:t,onChange:r=>e(HV(r.target.checked))})}var Q$={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},eM=se.createContext&&se.createContext(Q$),od=globalThis&&globalThis.__assign||function(){return od=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const{tooltip:n="",styleClass:r,tooltipProps:i,asCheckbox:o,isChecked:a,...s}=e;return b(pi,{label:n,hasArrow:!0,...i,...i?.placement?{placement:i.placement}:{placement:"top"},children:b(Va,{ref:t,className:r?`invokeai__icon-button ${r}`:"invokeai__icon-button","data-as-checkbox":o,"data-selected":a!==void 0?a:void 0,...s})})});function la(e){const[t,n]=C.exports.useState(!1),{label:r,value:i,min:o=1,max:a=100,step:s=1,onChange:l,tooltipSuffix:u="",withSliderMarks:h=!1,sliderMarkLeftOffset:g=0,sliderMarkRightOffset:m=-7,withInput:v=!1,isInteger:S=!1,inputWidth:w="5rem",inputReadOnly:k=!0,withReset:P=!1,hideTooltip:E=!1,handleReset:T,isResetDisabled:M,isSliderDisabled:R,isInputDisabled:O,styleClass:D,sliderFormControlProps:B,sliderFormLabelProps:$,sliderMarkProps:W,sliderTrackProps:j,sliderThumbProps:te,sliderNumberInputProps:V,sliderNumberInputFieldProps:J,sliderNumberInputStepperProps:re,sliderTooltipProps:ee,sliderIAIIconButtonProps:K,...G}=e,[Z,ce]=C.exports.useState(String(i)),me=C.exports.useMemo(()=>V?.max?V.max:a,[a,V?.max]);C.exports.useEffect(()=>{String(i)!==Z&&Z!==""&&ce(String(i))},[i,Z,ce]);const Re=Me=>{const _e=We.clamp(S?Math.floor(Number(Me.target.value)):Number(Me.target.value),o,me);ce(String(_e)),l(_e)},xe=Me=>{ce(Me),l(Number(Me))},Se=()=>{!T||T()};return Q(Cd,{className:D?`invokeai__slider-component ${D}`:"invokeai__slider-component","data-markers":h,...B,children:[b(bh,{className:"invokeai__slider-component-label",...$,children:r}),Q(fz,{w:"100%",gap:2,children:[Q(__,{"aria-label":r,value:i,min:o,max:a,step:s,onChange:xe,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:R,...G,children:[h&&Q(An,{children:[b(ZC,{value:o,className:"invokeai__slider-mark invokeai__slider-mark-start",ml:g,...W,children:o}),b(ZC,{value:a,className:"invokeai__slider-mark invokeai__slider-mark-end",ml:m,...W,children:a})]}),b(ZF,{className:"invokeai__slider_track",...j,children:b(QF,{className:"invokeai__slider_track-filled"})}),b(pi,{hasArrow:!0,className:"invokeai__slider-component-tooltip",placement:"top",isOpen:t,label:`${i}${u}`,hidden:E,...ee,children:b(XF,{className:"invokeai__slider-thumb",...te})})]}),v&&Q(g_,{min:o,max:me,step:s,value:Z,onChange:xe,onBlur:Re,className:"invokeai__slider-number-field",isDisabled:O,...V,children:[b(m_,{className:"invokeai__slider-number-input",width:w,readOnly:k,...J}),Q(RF,{...re,children:[b(y_,{className:"invokeai__slider-number-stepper"}),b(v_,{className:"invokeai__slider-number-stepper"})]})]}),P&&b(pt,{size:"sm","aria-label":"Reset",tooltip:"Reset",icon:b(q_,{}),onClick:Se,isDisabled:M,...K})]})]})}function eH(e){const{label:t="Strength",styleClass:n}=e,r=Le(s=>s.options.img2imgStrength),i=qe();return b(la,{label:t,step:.01,min:.01,max:.99,onChange:s=>i(B7(s)),value:r,isInteger:!1,styleClass:n,withInput:!0,withReset:!0,withSliderMarks:!0,inputWidth:"5.5rem",handleReset:()=>{i(B7(.75))}})}const N4e=()=>{const e=qe(),t=Le(r=>r.options.hiresFix);return b(rn,{gap:2,direction:"column",children:b(Ls,{label:"High Res Optimization",fontSize:"md",isChecked:t,onChange:r=>e(OV(r.target.checked))})})},B4e=()=>{const e=qe(),t=Le(r=>r.options.seamless);return b(rn,{gap:2,direction:"column",children:b(Ls,{label:"Seamless tiling",fontSize:"md",isChecked:t,onChange:r=>e(FV(r.target.checked))})})},tH=()=>Q(rn,{gap:2,direction:"column",children:[b(B4e,{}),b(N4e,{})]});function z4e(){const e=qe(),t=Le(r=>r.options.shouldRandomizeSeed);return b(Ls,{label:"Randomize Seed",isChecked:t,onChange:r=>e(Kke(r.target.checked))})}function F4e(){const e=Le(o=>o.options.seed),t=Le(o=>o.options.shouldRandomizeSeed),n=Le(o=>o.options.shouldGenerateVariations),r=qe(),i=o=>r(w2(o));return b(Ms,{label:"Seed",step:1,precision:0,flexGrow:1,min:G_,max:j_,isDisabled:t,isInvalid:e<0&&n,onChange:i,value:e,width:"10rem"})}const nH=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function $4e(){const e=qe(),t=Le(r=>r.options.shouldRandomizeSeed);return b(Wa,{size:"sm",isDisabled:t,onClick:()=>e(w2(nH(G_,j_))),children:b("p",{children:"Shuffle"})})}function H4e(){const e=qe(),t=Le(r=>r.options.threshold);return b(Ms,{label:"Noise Threshold",min:0,max:1e3,step:.1,onChange:r=>e(UV(r)),value:t,isInteger:!1})}function W4e(){const e=qe(),t=Le(r=>r.options.perlin);return b(Ms,{label:"Perlin Noise",min:0,max:1,step:.05,onChange:r=>e(BV(r)),value:t,isInteger:!1})}const K_=()=>Q(rn,{gap:2,direction:"column",children:[b(z4e,{}),Q(rn,{gap:2,children:[b(F4e,{}),b($4e,{})]}),b(rn,{gap:2,children:b(H4e,{})}),b(rn,{gap:2,children:b(W4e,{})})]}),V4e=lt(e=>e.options,e=>({upscalingLevel:e.upscalingLevel,upscalingStrength:e.upscalingStrength}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),U4e=lt(e=>e.system,e=>({isESRGANAvailable:e.isESRGANAvailable}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),X_=()=>{const e=qe(),{upscalingLevel:t,upscalingStrength:n}=Le(V4e),{isESRGANAvailable:r}=Le(U4e);return Q("div",{className:"upscale-options",children:[b(Ol,{isDisabled:!r,label:"Scale",value:t,onChange:a=>e(z7(Number(a.target.value))),validValues:C4e}),b(Ms,{isDisabled:!r,label:"Strength",step:.05,min:0,max:1,onChange:a=>e(F7(a)),value:n,isInteger:!1})]})};function rH(){const e=Le(i=>i.system.isESRGANAvailable),t=Le(i=>i.options.shouldRunESRGAN),n=qe();return b(Ls,{isDisabled:!e,isChecked:t,onChange:i=>n(Xke(i.target.checked))})}function Z_(){const e=Le(r=>r.options.shouldGenerateVariations),t=qe();return b(Ls,{isChecked:e,width:"auto",onChange:r=>t(Gke(r.target.checked))})}function G4e(e){const{label:t,styleClass:n,isDisabled:r=!1,fontSize:i="1rem",width:o,isInvalid:a,...s}=e;return Q(Cd,{className:`input ${n}`,isInvalid:a,isDisabled:r,flexGrow:1,children:[b(bh,{fontSize:i,marginBottom:1,whiteSpace:"nowrap",className:"input-label",children:t}),b(V8,{...s,className:"input-entry",size:"sm",width:o})]})}function j4e(){const e=Le(i=>i.options.seedWeights),t=Le(i=>i.options.shouldGenerateVariations),n=qe(),r=i=>n($V(i.target.value));return b(G4e,{label:"Seed Weights",value:e,isInvalid:t&&!(H_(e)||e===""),isDisabled:!t,onChange:r})}function Y4e(){const e=Le(i=>i.options.variationAmount),t=Le(i=>i.options.shouldGenerateVariations),n=qe();return b(Ms,{label:"Variation Amount",value:e,step:.01,min:0,max:1,isDisabled:!t,onChange:i=>n(Jke(i)),isInteger:!1})}const Q_=()=>Q(rn,{gap:2,direction:"column",children:[b(Y4e,{}),b(j4e,{})]});function q4e(){const e=qe(),t=Le(r=>r.options.cfgScale);return b(Ms,{label:"CFG Scale",step:.5,min:1.01,max:200,onChange:r=>e(MV(r)),value:t,width:ek,styleClass:"main-option-block",textAlign:"center",isInteger:!1})}const _r=lt(e=>e.options,e=>wb[e.activeTab],{memoizeOptions:{equalityCheck:We.isEqual}});lt(e=>e.options,e=>{const{shouldRandomizeSeed:t,shouldGenerateVariations:n}=e;return t||n},{memoizeOptions:{resultEqualityCheck:We.isEqual}});const J_=e=>e.options;function K4e(){const e=Le(i=>i.options.height),t=Le(_r),n=qe();return b(Ol,{isDisabled:t==="unifiedCanvas",label:"Height",value:e,flexGrow:1,onChange:i=>n(RV(Number(i.target.value))),validValues:w4e,styleClass:"main-option-block"})}const X4e=lt([e=>e.options],e=>{const{iterations:t}=e;return{iterations:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function Z4e(){const e=qe(),{iterations:t}=Le(X4e);return b(Ms,{label:"Images",step:1,min:1,max:9999,onChange:r=>e(Vke(r)),value:t,width:ek,labelFontSize:.5,styleClass:"main-option-block",textAlign:"center"})}function Q4e(){const e=Le(r=>r.options.sampler),t=qe();return b(Ol,{label:"Sampler",value:e,onChange:r=>t(zV(r.target.value)),validValues:b4e,styleClass:"main-option-block"})}function J4e(){const e=qe(),t=Le(r=>r.options.steps);return b(Ms,{label:"Steps",min:1,max:9999,step:1,onChange:r=>e(VV(r)),value:t,width:ek,styleClass:"main-option-block",textAlign:"center"})}function e5e(){const e=Le(i=>i.options.width),t=Le(_r),n=qe();return b(Ol,{isDisabled:t==="unifiedCanvas",label:"Width",value:e,flexGrow:1,onChange:i=>n(GV(Number(i.target.value))),validValues:x4e,styleClass:"main-option-block"})}const ek="auto";function tk(){return b("div",{className:"main-options",children:Q("div",{className:"main-options-list",children:[Q("div",{className:"main-options-row",children:[b(Z4e,{}),b(J4e,{}),b(q4e,{})]}),Q("div",{className:"main-options-row",children:[b(e5e,{}),b(K4e,{}),b(Q4e,{})]})]})})}const t5e={isConnected:!1,isProcessing:!1,log:[],shouldShowLogViewer:!1,shouldDisplayInProgressType:"latents",shouldDisplayGuides:!0,isGFPGANAvailable:!0,isESRGANAvailable:!0,socketId:"",shouldConfirmOnDelete:!0,openAccordions:[],currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatus:"Disconnected",currentStatusHasSteps:!1,model:"",model_id:"",model_hash:"",app_id:"",app_version:"",model_list:{},infill_methods:[],hasError:!1,wasErrorSeen:!0,isCancelable:!0,saveIntermediatesInterval:5,enableImageDebugging:!1,toastQueue:[]},iH=HS({name:"system",initialState:t5e,reducers:{setShouldDisplayInProgressType:(e,t)=>{e.shouldDisplayInProgressType=t.payload},setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.currentStatus=t.payload},setSystemStatus:(e,t)=>({...e,...t.payload}),errorOccurred:e=>{e.hasError=!0,e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.currentStatus="Error",e.wasErrorSeen=!1},errorSeen:e=>{e.hasError=!1,e.wasErrorSeen=!0,e.currentStatus=e.isConnected?"Connected":"Disconnected"},addLogEntry:(e,t)=>{const{timestamp:n,message:r,level:i}=t.payload,a={timestamp:n,message:r,level:i||"info"};e.log.push(a)},setShouldShowLogViewer:(e,t)=>{e.shouldShowLogViewer=t.payload},setIsConnected:(e,t)=>{e.isConnected=t.payload,e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.hasError=!1},setSocketId:(e,t)=>{e.socketId=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setOpenAccordions:(e,t)=>{e.openAccordions=t.payload},setSystemConfig:(e,t)=>({...e,...t.payload}),setShouldDisplayGuides:(e,t)=>{e.shouldDisplayGuides=t.payload},processingCanceled:e=>{e.isProcessing=!1,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.currentStatus="Processing canceled"},generationRequested:e=>{e.isProcessing=!0,e.isCancelable=!0,e.currentStep=0,e.totalSteps=0,e.currentIteration=0,e.totalIterations=0,e.currentStatusHasSteps=!1,e.currentStatus="Preparing"},setModelList:(e,t)=>{e.model_list=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},modelChangeRequested:e=>{e.currentStatus="Loading Model",e.isCancelable=!1,e.isProcessing=!0,e.currentStatusHasSteps=!1},setSaveIntermediatesInterval:(e,t)=>{e.saveIntermediatesInterval=t.payload},setEnableImageDebugging:(e,t)=>{e.enableImageDebugging=t.payload},addToast:(e,t)=>{e.toastQueue.push(t.payload)},clearToastQueue:e=>{e.toastQueue=[]},setProcessingIndeterminateTask:(e,t)=>{e.isProcessing=!0,e.currentStatus=t.payload,e.currentStatusHasSteps=!1}}}),{setShouldDisplayInProgressType:n5e,setIsProcessing:Su,addLogEntry:Co,setShouldShowLogViewer:Tw,setIsConnected:tM,setSocketId:OTe,setShouldConfirmOnDelete:oH,setOpenAccordions:r5e,setSystemStatus:i5e,setCurrentStatus:t4,setSystemConfig:o5e,setShouldDisplayGuides:a5e,processingCanceled:s5e,errorOccurred:nM,errorSeen:aH,setModelList:rM,setIsCancelable:l0,modelChangeRequested:l5e,setSaveIntermediatesInterval:u5e,setEnableImageDebugging:c5e,generationRequested:d5e,addToast:vm,clearToastQueue:f5e,setProcessingIndeterminateTask:h5e}=iH.actions,p5e=iH.reducer;function g5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z"}}]})(e)}function m5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M15 21h2v-2h-2v2zm4-12h2V7h-2v2zM3 5v14c0 1.1.9 2 2 2h4v-2H5V5h4V3H5c-1.1 0-2 .9-2 2zm16-2v2h2c0-1.1-.9-2-2-2zm-8 20h2V1h-2v22zm8-6h2v-2h-2v2zM15 5h2V3h-2v2zm4 8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2z"}}]})(e)}function sH(e){return ut({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 16V4c0-1.1-.9-2-2-2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2zm-11-4l2.03 2.71L16 11l4 5H8l3-4zM2 6v14c0 1.1.9 2 2 2h14v-2H4V6H2z"}}]})(e)}function v5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"}}]})(e)}function y5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}}]})(e)}const S5e=lt(e=>e.system,e=>e.shouldDisplayGuides),b5e=({children:e,feature:t})=>{const n=Le(S5e),{text:r}=S4e[t];return n?Q(S_,{trigger:"hover",children:[b(w_,{children:b(xh,{children:e})}),Q(x_,{className:"guide-popover-content",maxWidth:"400px",onClick:i=>i.preventDefault(),cursor:"initial",children:[b(b_,{className:"guide-popover-arrow"}),b("div",{className:"guide-popover-guide-content",children:r})]})]}):null},x5e=Ee(({feature:e,icon:t=g5e},n)=>b(b5e,{feature:e,children:b(xh,{ref:n,children:b(Sa,{marginBottom:"-.15rem",as:t})})}));function w5e(e){const{header:t,feature:n,content:r,additionalHeaderComponents:i}=e;return Q(Yf,{className:"advanced-settings-item",children:[b(Gf,{className:"advanced-settings-header",children:Q(rn,{width:"100%",gap:"0.5rem",align:"center",children:[b(xh,{flexGrow:1,textAlign:"left",children:t}),i,n&&b(x5e,{feature:n}),b(jf,{})]})}),b(qf,{className:"advanced-settings-panel",children:r})]})}const nk=e=>{const{accordionInfo:t}=e,n=Le(a=>a.system.openAccordions),r=qe();return b(kS,{defaultIndex:n,allowMultiple:!0,reduceMotion:!0,onChange:a=>r(r5e(a)),className:"advanced-settings",children:(()=>{const a=[];return t&&Object.keys(t).forEach(s=>{const{header:l,feature:u,content:h,additionalHeaderComponents:g}=t[s];a.push(b(w5e,{header:l,feature:u,content:h,additionalHeaderComponents:g},s))}),a})()})};function C5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"}}]})(e)}function _5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"}}]})(e)}function k5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 320 512"},child:[{tag:"path",attr:{d:"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"}}]})(e)}function lH(e){return ut({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"}}]})(e)}function uH(e){return ut({tag:"svg",attr:{viewBox:"0 0 256 512"},child:[{tag:"path",attr:{d:"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"}}]})(e)}function E5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"}}]})(e)}function P5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"}}]})(e)}function T5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"}}]})(e)}function L5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z"}}]})(e)}function A5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z"}}]})(e)}function rk(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"}}]})(e)}function cH(e){return ut({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z"}}]})(e)}function ob(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z"}}]})(e)}function M5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z"}}]})(e)}function dH(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function I5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z"}}]})(e)}function R5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z"}}]})(e)}function O5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z"}}]})(e)}function D5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z"}}]})(e)}function N5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"}}]})(e)}function B5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"}}]})(e)}function z5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z"}}]})(e)}function F5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 496 512"},child:[{tag:"path",attr:{d:"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z"}}]})(e)}function $5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z"}}]})(e)}function H5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 576 512"},child:[{tag:"path",attr:{d:"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z"}}]})(e)}function W5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z"}}]})(e)}function V5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 640 512"},child:[{tag:"path",attr:{d:"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z"}}]})(e)}function U5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function G5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z"}}]})(e)}function j5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z"}}]})(e)}function Y5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z"}}]})(e)}function fH(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"}}]})(e)}function q5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z"}}]})(e)}function K5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z"}}]})(e)}function X5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z"}}]})(e)}function hH(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"}}]})(e)}function Z5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z"}}]})(e)}function Q5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z"}}]})(e)}function iM(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"}}]})(e)}function pH(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z"}}]})(e)}function J5e(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"}}]})(e)}function v2(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"}}]})(e)}function eSe(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z"}}]})(e)}function ik(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"}}]})(e)}function tSe(e){return ut({tag:"svg",attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"}}]})(e)}function ok(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"}}]})(e)}const Pd=e=>e.system,nSe=e=>e.system.toastQueue,rSe=[{key:"Base",value:"base"},{key:"Mask",value:"mask"}],iSe=[{key:"Auto",value:"auto"},{key:"Manual",value:"manual"},{key:"None",value:"none"}],ak=e=>e.kind==="line"&&e.layer==="mask",oSe=e=>e.kind==="line"&&e.layer==="base",m5=e=>e.kind==="image"&&e.layer==="base",aSe=e=>e.kind==="fillRect"&&e.layer==="base",sSe=e=>e.kind==="eraseRect"&&e.layer==="base",lSe=e=>e.kind==="line",kn=e=>e.canvas,Ka=lt([kn,_r,Pd],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),gH=e=>e.canvas.layerState.objects.find(m5),mH=lt([e=>e.options,e=>e.system,gH,_r],(e,t,n,r)=>{const{prompt:i,shouldGenerateVariations:o,seedWeights:a,initialImage:s,seed:l}=e,{isProcessing:u,isConnected:h}=t;let g=!0;const m=[];return(!i||Boolean(i.match(/^[\s\r\n]+$/)))&&(g=!1,m.push("Missing prompt")),r==="img2img"&&!s&&(g=!1,m.push("No initial image selected")),u&&(g=!1,m.push("System Busy")),h||(g=!1,m.push("System Disconnected")),o&&(!(H_(a)||a==="")||l===-1)&&(g=!1,m.push("Seed-Weights badly formatted.")),{isReady:g,reasonsWhyNotReady:m}},{memoizeOptions:{equalityCheck:We.isEqual,resultEqualityCheck:We.isEqual}}),l7=ti("socketio/generateImage"),uSe=ti("socketio/runESRGAN"),cSe=ti("socketio/runFacetool"),dSe=ti("socketio/deleteImage"),u7=ti("socketio/requestImages"),oM=ti("socketio/requestNewImages"),fSe=ti("socketio/cancelProcessing"),hSe=ti("socketio/requestSystemConfig"),vH=ti("socketio/requestModelChange"),pSe=ti("socketio/saveStagingAreaImageToGallery"),gSe=ti("socketio/requestEmptyTempFolder"),oa=Ee((e,t)=>{const{children:n,tooltip:r="",tooltipProps:i,styleClass:o,...a}=e;return b(pi,{label:r,...i,children:b(Wa,{ref:t,className:["invokeai__button",o].join(" "),...a,children:n})})});function yH(e){const{iconButton:t=!1,...n}=e,r=qe(),{isReady:i}=Le(mH),o=Le(_r),a=()=>{r(l7(o))};return st(["ctrl+enter","meta+enter"],()=>{r(l7(o))},{enabled:()=>i,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[i,o]),b("div",{style:{flexGrow:4},children:t?b(pt,{"aria-label":"Invoke",type:"submit",icon:b(Y5e,{}),isDisabled:!i,onClick:a,className:"invoke-btn",tooltip:"Invoke",tooltipProps:{placement:"bottom"},...n}):b(oa,{"aria-label":"Invoke",type:"submit",isDisabled:!i,onClick:a,className:"invoke-btn",...n,children:"Invoke"})})}const mSe=lt(e=>e.system,e=>({isProcessing:e.isProcessing,isConnected:e.isConnected,isCancelable:e.isCancelable}),{memoizeOptions:{resultEqualityCheck:We.isEqual}});function SH(e){const{...t}=e,n=qe(),{isProcessing:r,isConnected:i,isCancelable:o}=Le(mSe),a=()=>n(fSe());return st("shift+x",()=>{(i||r)&&o&&a()},[i,r,o]),b(pt,{icon:b(y5e,{}),tooltip:"Cancel","aria-label":"Cancel",isDisabled:!i||!r||!o,onClick:a,styleClass:"cancel-btn",...t})}const vSe=lt(e=>e.options,e=>e.shouldLoopback),ySe=()=>{const e=qe(),t=Le(vSe);return b(pt,{"aria-label":"Toggle Loopback",tooltip:"Toggle Loopback",styleClass:"loopback-btn",asCheckbox:!0,isChecked:t,icon:b(K5e,{}),onClick:()=>{e(Yke(!t))}})},sk=()=>{const e=Le(_r);return Q("div",{className:"process-buttons",children:[b(yH,{}),e==="img2img"&&b(ySe,{}),b(SH,{})]})},SSe=lt([e=>e.options,_r],(e,t)=>({prompt:e.prompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:We.isEqual}}),lk=()=>{const e=qe(),{prompt:t,activeTabName:n}=Le(SSe),{isReady:r}=Le(mH),i=C.exports.useRef(null),o=s=>{e(Cb(s.target.value))};st("alt+a",()=>{i.current?.focus()},[]);const a=s=>{s.key==="Enter"&&s.shiftKey===!1&&r&&(s.preventDefault(),e(l7(n)))};return b("div",{className:"prompt-bar",children:b(Cd,{isInvalid:t.length===0||Boolean(t.match(/^[\s\r\n]+$/)),children:b(a$,{id:"prompt",name:"prompt",placeholder:"I'm dreaming of...",size:"lg",value:t,onChange:o,onKeyDown:a,resize:"vertical",height:30,ref:i})})})};function bH(e){return ut({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146z"}}]})(e)}function xH(e){return ut({tag:"svg",attr:{fill:"currentColor",viewBox:"0 0 16 16"},child:[{tag:"path",attr:{d:"M9.828.722a.5.5 0 0 1 .354.146l4.95 4.95a.5.5 0 0 1 0 .707c-.48.48-1.072.588-1.503.588-.177 0-.335-.018-.46-.039l-3.134 3.134a5.927 5.927 0 0 1 .16 1.013c.046.702-.032 1.687-.72 2.375a.5.5 0 0 1-.707 0l-2.829-2.828-3.182 3.182c-.195.195-1.219.902-1.414.707-.195-.195.512-1.22.707-1.414l3.182-3.182-2.828-2.829a.5.5 0 0 1 0-.707c.688-.688 1.673-.767 2.375-.72a5.922 5.922 0 0 1 1.013.16l3.134-3.133a2.772 2.772 0 0 1-.04-.461c0-.43.108-1.022.589-1.503a.5.5 0 0 1 .353-.146zm.122 2.112v-.002.002zm0-.002v.002a.5.5 0 0 1-.122.51L6.293 6.878a.5.5 0 0 1-.511.12H5.78l-.014-.004a4.507 4.507 0 0 0-.288-.076 4.922 4.922 0 0 0-.765-.116c-.422-.028-.836.008-1.175.15l5.51 5.509c.141-.34.177-.753.149-1.175a4.924 4.924 0 0 0-.192-1.054l-.004-.013v-.001a.5.5 0 0 1 .12-.512l3.536-3.535a.5.5 0 0 1 .532-.115l.096.022c.087.017.208.034.344.034.114 0 .23-.011.343-.04L9.927 2.028c-.029.113-.04.23-.04.343a1.779 1.779 0 0 0 .062.46z"}}]})(e)}function bSe(e,t){return e.classList?!!t&&e.classList.contains(t):(" "+(e.className.baseVal||e.className)+" ").indexOf(" "+t+" ")!==-1}function xSe(e,t){e.classList?e.classList.add(t):bSe(e,t)||(typeof e.className=="string"?e.className=e.className+" "+t:e.setAttribute("class",(e.className&&e.className.baseVal||"")+" "+t))}function aM(e,t){return e.replace(new RegExp("(^|\\s)"+t+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function wSe(e,t){e.classList?e.classList.remove(t):typeof e.className=="string"?e.className=aM(e.className,t):e.setAttribute("class",aM(e.className&&e.className.baseVal||"",t))}const sM={disabled:!1},wH=se.createContext(null);var CH=function(t){return t.scrollTop},ym="unmounted",Mf="exited",If="entering",Gp="entered",c7="exiting",Nu=function(e){i_(t,e);function t(r,i){var o;o=e.call(this,r,i)||this;var a=i,s=a&&!a.isMounting?r.enter:r.appear,l;return o.appearStatus=null,r.in?s?(l=Mf,o.appearStatus=If):l=Gp:r.unmountOnExit||r.mountOnEnter?l=ym:l=Mf,o.state={status:l},o.nextCallback=null,o}t.getDerivedStateFromProps=function(i,o){var a=i.in;return a&&o.status===ym?{status:Mf}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(i){var o=null;if(i!==this.props){var a=this.state.status;this.props.in?a!==If&&a!==Gp&&(o=If):(a===If||a===Gp)&&(o=c7)}this.updateStatus(!1,o)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var i=this.props.timeout,o,a,s;return o=a=s=i,i!=null&&typeof i!="number"&&(o=i.exit,a=i.enter,s=i.appear!==void 0?i.appear:a),{exit:o,enter:a,appear:s}},n.updateStatus=function(i,o){if(i===void 0&&(i=!1),o!==null)if(this.cancelNextCallback(),o===If){if(this.props.unmountOnExit||this.props.mountOnEnter){var a=this.props.nodeRef?this.props.nodeRef.current:Ty.findDOMNode(this);a&&CH(a)}this.performEnter(i)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Mf&&this.setState({status:ym})},n.performEnter=function(i){var o=this,a=this.props.enter,s=this.context?this.context.isMounting:i,l=this.props.nodeRef?[s]:[Ty.findDOMNode(this),s],u=l[0],h=l[1],g=this.getTimeouts(),m=s?g.appear:g.enter;if(!i&&!a||sM.disabled){this.safeSetState({status:Gp},function(){o.props.onEntered(u)});return}this.props.onEnter(u,h),this.safeSetState({status:If},function(){o.props.onEntering(u,h),o.onTransitionEnd(m,function(){o.safeSetState({status:Gp},function(){o.props.onEntered(u,h)})})})},n.performExit=function(){var i=this,o=this.props.exit,a=this.getTimeouts(),s=this.props.nodeRef?void 0:Ty.findDOMNode(this);if(!o||sM.disabled){this.safeSetState({status:Mf},function(){i.props.onExited(s)});return}this.props.onExit(s),this.safeSetState({status:c7},function(){i.props.onExiting(s),i.onTransitionEnd(a.exit,function(){i.safeSetState({status:Mf},function(){i.props.onExited(s)})})})},n.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(i,o){o=this.setNextCallback(o),this.setState(i,o)},n.setNextCallback=function(i){var o=this,a=!0;return this.nextCallback=function(s){a&&(a=!1,o.nextCallback=null,i(s))},this.nextCallback.cancel=function(){a=!1},this.nextCallback},n.onTransitionEnd=function(i,o){this.setNextCallback(o);var a=this.props.nodeRef?this.props.nodeRef.current:Ty.findDOMNode(this),s=i==null&&!this.props.addEndListener;if(!a||s){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var l=this.props.nodeRef?[this.nextCallback]:[a,this.nextCallback],u=l[0],h=l[1];this.props.addEndListener(u,h)}i!=null&&setTimeout(this.nextCallback,i)},n.render=function(){var i=this.state.status;if(i===ym)return null;var o=this.props,a=o.children;o.in,o.mountOnEnter,o.unmountOnExit,o.appear,o.enter,o.exit,o.timeout,o.addEndListener,o.onEnter,o.onEntering,o.onEntered,o.onExit,o.onExiting,o.onExited,o.nodeRef;var s=t_(o,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return b(wH.Provider,{value:null,children:typeof a=="function"?a(i,s):se.cloneElement(se.Children.only(a),s)})},t}(se.Component);Nu.contextType=wH;Nu.propTypes={};function zp(){}Nu.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:zp,onEntering:zp,onEntered:zp,onExit:zp,onExiting:zp,onExited:zp};Nu.UNMOUNTED=ym;Nu.EXITED=Mf;Nu.ENTERING=If;Nu.ENTERED=Gp;Nu.EXITING=c7;const CSe=Nu;var _Se=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return xSe(t,r)})},Lw=function(t,n){return t&&n&&n.split(" ").forEach(function(r){return wSe(t,r)})},uk=function(e){i_(t,e);function t(){for(var r,i=arguments.length,o=new Array(i),a=0;aMath.floor(e/t)*t,wl=(e,t)=>Math.round(e/t)*t,Fp=(e,t,n,r,i,o,a)=>{const s=e/2-(n+i/2)*a,l=t/2-(r+o/2)*a;return{x:s,y:l}},$p=(e,t,n,r,i=.95)=>{const o=e*i/n,a=t*i/r;return Math.min(1,Math.min(o,a))},kSe=.999,ESe=.1,PSe=20,Qg=.95,lM=30,d7=10,uM=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),Cf=e=>{const{width:t,height:n}=e,r={width:t,height:n},i=512*512,o=t/n;let a=t*n,s=448;for(;a1?(r.width=s,r.height=wl(s/o,64)):o<1&&(r.height=s,r.width=wl(s*o,64)),a=r.width*r.height;return r},TSe=e=>({width:wl(e.width,64),height:wl(e.height,64)}),Sm={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},LSe={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"auto",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,canvasContainerDimensions:{width:0,height:0},colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,doesCanvasNeedScaling:!1,futureLayerStates:[],inpaintReplace:.1,isCanvasInitialized:!1,isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:Sm,maskColor:{r:255,g:90,b:90,a:1},maxHistory:128,minimumStageScale:1,pastLayerStates:[],scaledBoundingBoxDimensions:{width:512,height:512},shouldAutoSave:!1,shouldCropToBoundingBoxOnSave:!1,shouldDarkenOutsideBoundingBox:!1,shouldLockBoundingBox:!1,shouldPreserveMaskedArea:!1,shouldRestrictStrokesToBox:!0,shouldShowBoundingBox:!0,shouldShowBrush:!0,shouldShowBrushPreview:!1,shouldShowCanvasDebugInfo:!1,shouldShowCheckboardTransparency:!1,shouldShowGrid:!0,shouldShowIntermediates:!0,shouldShowStagingImage:!0,shouldShowStagingOutline:!0,shouldSnapToGrid:!0,shouldUseInpaintReplace:!1,stageCoordinates:{x:0,y:0},stageDimensions:{width:0,height:0},stageScale:1,tool:"brush"},kH=HS({name:"canvas",initialState:LSe,reducers:{setTool:(e,t)=>{const n=t.payload;e.tool=t.payload,n!=="move"&&(e.isTransformingBoundingBox=!1,e.isMouseOverBoundingBox=!1,e.isMovingBoundingBox=!1,e.isMovingStage=!1)},setLayer:(e,t)=>{e.layer=t.payload},toggleTool:e=>{const t=e.tool;t!=="move"&&(e.tool=t==="brush"?"eraser":"brush")},setMaskColor:(e,t)=>{e.maskColor=t.payload},setBrushColor:(e,t)=>{e.brushColor=t.payload},setBrushSize:(e,t)=>{e.brushSize=t.payload},clearMask:e=>{e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!ak(t)),e.futureLayerStates=[],e.shouldPreserveMaskedArea=!1},toggleShouldInvertMask:e=>{e.shouldPreserveMaskedArea=!e.shouldPreserveMaskedArea},toggleShouldShowMask:e=>{e.isMaskEnabled=!e.isMaskEnabled},setShouldPreserveMaskedArea:(e,t)=>{e.shouldPreserveMaskedArea=t.payload},setIsMaskEnabled:(e,t)=>{e.isMaskEnabled=t.payload,e.layer=t.payload?"mask":"base"},setShouldShowCheckboardTransparency:(e,t)=>{e.shouldShowCheckboardTransparency=t.payload},setShouldShowBrushPreview:(e,t)=>{e.shouldShowBrushPreview=t.payload},setShouldShowBrush:(e,t)=>{e.shouldShowBrush=t.payload},setCursorPosition:(e,t)=>{e.cursorPosition=t.payload},setInitialCanvasImage:(e,t)=>{const n=t.payload,{stageDimensions:r}=e,i={width:qc(We.clamp(n.width,64,512),64),height:qc(We.clamp(n.height,64,512),64)},o={x:wl(n.width/2-i.width/2,64),y:wl(n.height/2-i.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const l=Cf(i);e.scaledBoundingBoxDimensions=l}e.boundingBoxDimensions=i,e.boundingBoxCoordinates=o,e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.layerState={...Sm,objects:[{kind:"image",layer:"base",x:0,y:0,width:n.width,height:n.height,image:n}]},e.futureLayerStates=[],e.isCanvasInitialized=!1;const a=$p(r.width,r.height,n.width,n.height,Qg),s=Fp(r.width,r.height,0,0,n.width,n.height,a);e.stageScale=a,e.stageCoordinates=s,e.doesCanvasNeedScaling=!0},setBoundingBoxDimensions:(e,t)=>{const n=TSe(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=Cf(n);e.scaledBoundingBoxDimensions=r}},setBoundingBoxCoordinates:(e,t)=>{e.boundingBoxCoordinates=uM(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=t.payload},setDoesCanvasNeedScaling:(e,t)=>{e.doesCanvasNeedScaling=t.payload},setStageScale:(e,t)=>{e.stageScale=t.payload},setShouldDarkenOutsideBoundingBox:(e,t)=>{e.shouldDarkenOutsideBoundingBox=t.payload},setIsDrawing:(e,t)=>{e.isDrawing=t.payload},clearCanvasHistory:e=>{e.pastLayerStates=[],e.futureLayerStates=[]},setShouldUseInpaintReplace:(e,t)=>{e.shouldUseInpaintReplace=t.payload},setInpaintReplace:(e,t)=>{e.inpaintReplace=t.payload},setShouldLockBoundingBox:(e,t)=>{e.shouldLockBoundingBox=t.payload},toggleShouldLockBoundingBox:e=>{e.shouldLockBoundingBox=!e.shouldLockBoundingBox},setShouldShowBoundingBox:(e,t)=>{e.shouldShowBoundingBox=t.payload},setIsTransformingBoundingBox:(e,t)=>{e.isTransformingBoundingBox=t.payload},setIsMovingBoundingBox:(e,t)=>{e.isMovingBoundingBox=t.payload},setIsMouseOverBoundingBox:(e,t)=>{e.isMouseOverBoundingBox=t.payload},setIsMoveBoundingBoxKeyHeld:(e,t)=>{e.isMoveBoundingBoxKeyHeld=t.payload},setIsMoveStageKeyHeld:(e,t)=>{e.isMoveStageKeyHeld=t.payload},addImageToStagingArea:(e,t)=>{const{boundingBox:n,image:r}=t.payload;!n||!r||(e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea.images.push({kind:"image",layer:"base",...n,image:r}),e.layerState.stagingArea.selectedImageIndex=e.layerState.stagingArea.images.length-1,e.futureLayerStates=[])},discardStagedImages:e=>{e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...Sm.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({kind:"fillRect",layer:"base",...t,...n,color:r}),e.futureLayerStates=[]},addEraseRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n}=e;e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({kind:"eraseRect",layer:"base",...t,...n}),e.futureLayerStates=[]},addLine:(e,t)=>{const{tool:n,layer:r,brushColor:i,brushSize:o,shouldRestrictStrokesToBox:a}=e;if(n==="move"||n==="colorPicker")return;const s=o/2,l=r==="base"&&n==="brush"?{color:i}:{};e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const u={kind:"line",layer:r,tool:n,strokeWidth:s,points:t.payload,...l};a&&(u.clip={...e.boundingBoxCoordinates,...e.boundingBoxDimensions}),e.layerState.objects.push(u),e.futureLayerStates=[]},addPointToCurrentLine:(e,t)=>{const n=e.layerState.objects.findLast(lSe);!n||n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();!t||(e.futureLayerStates.unshift(We.cloneDeep(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();!t||(e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState=t)},setShouldShowGrid:(e,t)=>{e.shouldShowGrid=t.payload},setIsMovingStage:(e,t)=>{e.isMovingStage=t.payload},setShouldSnapToGrid:(e,t)=>{e.shouldSnapToGrid=t.payload},setShouldAutoSave:(e,t)=>{e.shouldAutoSave=t.payload},setShouldShowIntermediates:(e,t)=>{e.shouldShowIntermediates=t.payload},resetCanvas:e=>{e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.layerState=Sm,e.futureLayerStates=[]},setCanvasContainerDimensions:(e,t)=>{e.canvasContainerDimensions=t.payload},resizeAndScaleCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r=e.layerState.objects.find(m5),i={width:Math.floor(t),height:Math.floor(n)};if(!r){const h=$p(i.width,i.height,512,512,Qg),g=Fp(i.width,i.height,0,0,512,512,h),m={width:512,height:512};if(e.stageScale=h,e.stageCoordinates=g,e.stageDimensions=i,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=m,e.boundingBoxScaleMethod==="auto"){const v=Cf(m);e.scaledBoundingBoxDimensions=v}return}const{width:o,height:a}=r,l=$p(t,n,o,a,.95),u=Fp(i.width,i.height,0,0,o,a,l);e.minimumStageScale=l,e.stageScale=l,e.stageCoordinates=uM(u),e.stageDimensions=i,e.isCanvasInitialized=!0},resizeCanvas:e=>{const{width:t,height:n}=e.canvasContainerDimensions,r={width:Math.floor(t),height:Math.floor(n)};if(e.stageDimensions=r,!e.layerState.objects.find(m5)){const i=$p(r.width,r.height,512,512,Qg),o=Fp(r.width,r.height,0,0,512,512,i),a={width:512,height:512};if(e.stageScale=i,e.stageCoordinates=o,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=a,e.boundingBoxScaleMethod==="auto"){const s=Cf(a);e.scaledBoundingBoxDimensions=s}}},resetCanvasView:(e,t)=>{const{contentRect:n}=t.payload,{stageDimensions:{width:r,height:i}}=e,{x:o,y:a,width:s,height:l}=n;if(s!==0&&l!==0){const u=$p(r,i,s,l,Qg),h=Fp(r,i,o,a,s,l,u);e.stageScale=u,e.stageCoordinates=h}else{const u=$p(r,i,512,512,Qg),h=Fp(r,i,0,0,512,512,u),g={width:512,height:512};if(e.stageScale=u,e.stageCoordinates=h,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=g,e.boundingBoxScaleMethod==="auto"){const m=Cf(g);e.scaledBoundingBoxDimensions=m}}},nextStagingAreaImage:e=>{const t=e.layerState.stagingArea.selectedImageIndex,n=e.layerState.stagingArea.images.length;e.layerState.stagingArea.selectedImageIndex=Math.min(t+1,n-1)},prevStagingAreaImage:e=>{const t=e.layerState.stagingArea.selectedImageIndex;e.layerState.stagingArea.selectedImageIndex=Math.max(t-1,0)},commitStagingAreaImage:e=>{const{images:t,selectedImageIndex:n}=e.layerState.stagingArea;e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.objects.push({...t[n]}),e.layerState.stagingArea={...Sm.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingImage=!0},fitBoundingBoxToStage:e=>{const{boundingBoxDimensions:t,boundingBoxCoordinates:n,stageDimensions:r,stageScale:i}=e,o=r.width/i,a=r.height/i;if(n.x<0||n.x+t.width>o||n.y<0||n.y+t.height>a){const s={width:qc(We.clamp(o,64,512),64),height:qc(We.clamp(a,64,512),64)},l={x:wl(o/2-s.width/2,64),y:wl(a/2-s.height/2,64)};if(e.boundingBoxDimensions=s,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=Cf(s);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=Cf(e.boundingBoxDimensions);e.scaledBoundingBoxDimensions=n}},setScaledBoundingBoxDimensions:(e,t)=>{e.scaledBoundingBoxDimensions=t.payload},setShouldShowStagingImage:(e,t)=>{e.shouldShowStagingImage=t.payload},setShouldShowStagingOutline:(e,t)=>{e.shouldShowStagingOutline=t.payload},setShouldShowCanvasDebugInfo:(e,t)=>{e.shouldShowCanvasDebugInfo=t.payload},setShouldRestrictStrokesToBox:(e,t)=>{e.shouldRestrictStrokesToBox=t.payload},setShouldCropToBoundingBoxOnSave:(e,t)=>{e.shouldCropToBoundingBoxOnSave=t.payload},setColorPickerColor:(e,t)=>{e.colorPickerColor=t.payload},commitColorPickerColor:e=>{e.brushColor={...e.colorPickerColor,a:e.brushColor.a},e.tool="brush"},setMergedCanvas:(e,t)=>{e.pastLayerStates.push(We.cloneDeep(e.layerState)),e.futureLayerStates=[],e.layerState.objects=[t.payload]},resetCanvasInteractionState:e=>{e.cursorPosition=null,e.isDrawing=!1,e.isMouseOverBoundingBox=!1,e.isMoveBoundingBoxKeyHeld=!1,e.isMoveStageKeyHeld=!1,e.isMovingBoundingBox=!1,e.isMovingStage=!1,e.isTransformingBoundingBox=!1},mouseLeftCanvas:e=>{e.cursorPosition=null,e.isDrawing=!1,e.isMouseOverBoundingBox=!1,e.isMovingBoundingBox=!1,e.isTransformingBoundingBox=!1}}}),{addEraseRect:ASe,addFillRect:MSe,addImageToStagingArea:ISe,addLine:RSe,addPointToCurrentLine:EH,clearCanvasHistory:PH,clearMask:OSe,commitColorPickerColor:DSe,commitStagingAreaImage:NSe,discardStagedImages:BSe,fitBoundingBoxToStage:DTe,mouseLeftCanvas:zSe,nextStagingAreaImage:FSe,prevStagingAreaImage:$Se,redo:HSe,resetCanvas:TH,resetCanvasInteractionState:WSe,resetCanvasView:VSe,resizeAndScaleCanvas:ck,resizeCanvas:USe,setBoundingBoxCoordinates:Aw,setBoundingBoxDimensions:bm,setBoundingBoxPreviewFill:NTe,setBoundingBoxScaleMethod:GSe,setBrushColor:Mw,setBrushSize:Iw,setCanvasContainerDimensions:jSe,setColorPickerColor:YSe,setCursorPosition:qSe,setDoesCanvasNeedScaling:Wi,setInitialCanvasImage:ab,setInpaintReplace:cM,setIsDrawing:LH,setIsMaskEnabled:AH,setIsMouseOverBoundingBox:Qy,setIsMoveBoundingBoxKeyHeld:BTe,setIsMoveStageKeyHeld:zTe,setIsMovingBoundingBox:Rw,setIsMovingStage:v5,setIsTransformingBoundingBox:Ow,setLayer:MH,setMaskColor:KSe,setMergedCanvas:XSe,setShouldAutoSave:ZSe,setShouldCropToBoundingBoxOnSave:QSe,setShouldDarkenOutsideBoundingBox:JSe,setShouldLockBoundingBox:FTe,setShouldPreserveMaskedArea:ebe,setShouldShowBoundingBox:tbe,setShouldShowBrush:$Te,setShouldShowBrushPreview:HTe,setShouldShowCanvasDebugInfo:nbe,setShouldShowCheckboardTransparency:WTe,setShouldShowGrid:rbe,setShouldShowIntermediates:ibe,setShouldShowStagingImage:obe,setShouldShowStagingOutline:dM,setShouldSnapToGrid:fM,setShouldUseInpaintReplace:abe,setStageCoordinates:IH,setStageScale:sbe,setTool:z0,toggleShouldLockBoundingBox:VTe,toggleTool:UTe,undo:lbe,setScaledBoundingBoxDimensions:Jy,setShouldRestrictStrokesToBox:ube}=kH.actions,cbe=kH.reducer,RH=""+new URL("logo.13003d72.png",import.meta.url).href,dbe=lt(e=>e.options,e=>{const{shouldShowOptionsPanel:t,shouldHoldOptionsPanelOpen:n,shouldPinOptionsPanel:r,optionsPanelScrollPosition:i}=e;return{shouldShowOptionsPanel:t,shouldHoldOptionsPanelOpen:n,shouldPinOptionsPanel:r,optionsPanelScrollPosition:i}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),dk=e=>{const t=qe(),{shouldShowOptionsPanel:n,shouldHoldOptionsPanelOpen:r,shouldPinOptionsPanel:i}=Le(dbe),o=C.exports.useRef(null),a=C.exports.useRef(null),s=C.exports.useRef(null),{children:l}=e;st("o",()=>{t(ud(!n)),i&&setTimeout(()=>t(Wi(!0)),400)},[n,i]),st("esc",()=>{t(ud(!1))},{enabled:()=>!i,preventDefault:!0},[i]),st("shift+o",()=>{m(),t(Wi(!0))},[i]);const u=C.exports.useCallback(()=>{i||(t(Uke(a.current?a.current.scrollTop:0)),t(ud(!1)),t(jke(!1)))},[t,i]),h=()=>{s.current=window.setTimeout(()=>u(),500)},g=()=>{s.current&&window.clearTimeout(s.current)},m=()=>{t(qke(!i)),t(Wi(!0))};return C.exports.useEffect(()=>{function v(S){o.current&&!o.current.contains(S.target)&&u()}return document.addEventListener("mousedown",v),()=>{document.removeEventListener("mousedown",v)}},[u]),b(_H,{nodeRef:o,in:n||r&&!i,unmountOnExit:!0,timeout:200,classNames:"options-panel-wrapper",children:b("div",{className:"options-panel-wrapper","data-pinned":i,tabIndex:1,ref:o,onMouseEnter:i?void 0:g,onMouseOver:i?void 0:g,style:{borderRight:i?"":"0.3rem solid var(--tab-list-text-inactive)"},children:b("div",{className:"options-panel-margin",children:Q("div",{className:"options-panel",ref:a,onMouseLeave:v=>{v.target!==a.current?g():!i&&h()},children:[b(pi,{label:"Pin Options Panel",children:b("div",{className:"options-panel-pin-button","data-selected":i,onClick:m,children:i?b(bH,{}):b(xH,{})})}),!i&&Q("div",{className:"invoke-ai-logo-wrapper",children:[b("img",{src:RH,alt:"invoke-ai-logo"}),Q("h1",{children:["invoke ",b("strong",{children:"ai"})]})]}),l]})})})})};function fbe(){const e={seed:{header:"Seed",feature:Hi.SEED,content:b(K_,{})},variations:{header:"Variations",feature:Hi.VARIATIONS,content:b(Q_,{}),additionalHeaderComponents:b(Z_,{})},face_restore:{header:"Face Restoration",feature:Hi.FACE_CORRECTION,content:b(Y_,{}),additionalHeaderComponents:b(Z$,{})},upscale:{header:"Upscaling",feature:Hi.UPSCALE,content:b(X_,{}),additionalHeaderComponents:b(rH,{})},other:{header:"Other Options",feature:Hi.OTHER,content:b(tH,{})}};return Q(dk,{children:[b(lk,{}),b(sk,{}),b(tk,{}),b(eH,{label:"Image To Image Strength",styleClass:"main-option-block image-to-image-strength-main-option"}),b(T4e,{}),b(nk,{accordionInfo:e})]})}const fk=C.exports.createContext(null),hbe=e=>{const{styleClass:t}=e,n=C.exports.useContext(fk),r=()=>{n&&n()};return b("div",{className:`image-uploader-button-outer ${t}`,onClick:r,children:Q("div",{className:"image-upload-button",children:[b(ik,{}),b(nh,{size:"lg",children:"Click or Drag and Drop"})]})})},pbe=lt(e=>e.system,e=>{const{shouldConfirmOnDelete:t,isConnected:n,isProcessing:r}=e;return{shouldConfirmOnDelete:t,isConnected:n,isProcessing:r}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),f7=C.exports.forwardRef(({image:e,children:t},n)=>{const{isOpen:r,onOpen:i,onClose:o}=Dv(),a=qe(),{shouldConfirmOnDelete:s,isConnected:l,isProcessing:u}=Le(pbe),h=C.exports.useRef(null),g=S=>{S.stopPropagation(),s?i():m()},m=()=>{l&&!u&&e&&a(dSe(e)),o()};st("delete",()=>{s?i():m()},[e,s]);const v=S=>a(oH(!S.target.checked));return Q(An,{children:[C.exports.cloneElement(t,{onClick:e?g:void 0,ref:n}),b(AF,{isOpen:r,leastDestructiveRef:h,onClose:o,children:b(r1,{children:Q(MF,{className:"modal",children:[b(NS,{fontSize:"lg",fontWeight:"bold",children:"Delete image"}),b($v,{children:Q(rn,{direction:"column",gap:5,children:[b(Po,{children:"Are you sure? Deleted images will be sent to the Bin. You can restore from there if you wish to."}),b(Cd,{children:Q(rn,{alignItems:"center",children:[b(bh,{mb:0,children:"Don't ask me again"}),b(k_,{checked:!s,onChange:v})]})})]})}),Q(DS,{children:[b(Wa,{ref:h,onClick:o,className:"modal-close-btn",children:"Cancel"}),b(Wa,{colorScheme:"red",onClick:m,ml:3,children:"Delete"})]})]})})})]})}),ad=e=>{const{triggerComponent:t,children:n,styleClass:r,hasArrow:i=!0,...o}=e;return Q(S_,{...o,children:[b(w_,{children:t}),Q(x_,{className:`invokeai__popover-content ${r}`,children:[i&&b(b_,{className:"invokeai__popover-arrow"}),n]})]})},gbe=lt([e=>e.system,e=>e.options,e=>e.gallery,_r],(e,t,n,r)=>{const{isProcessing:i,isConnected:o,isGFPGANAvailable:a,isESRGANAvailable:s}=e,{upscalingLevel:l,facetoolStrength:u,shouldShowImageDetails:h,isLightBoxOpen:g}=t,{intermediateImage:m,currentImage:v}=n;return{isProcessing:i,isConnected:o,isGFPGANAvailable:a,isESRGANAvailable:s,upscalingLevel:l,facetoolStrength:u,shouldDisableToolbarButtons:Boolean(m)||!v,currentImage:v,shouldShowImageDetails:h,activeTabName:r,isLightBoxOpen:g}},{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),OH=()=>{const e=qe(),{isProcessing:t,isConnected:n,isGFPGANAvailable:r,isESRGANAvailable:i,upscalingLevel:o,facetoolStrength:a,shouldDisableToolbarButtons:s,shouldShowImageDetails:l,currentImage:u,isLightBoxOpen:h,activeTabName:g}=Le(gbe),m=m2(),v=()=>{!u||(h&&e(bu(!1)),e(P1(u)),e(ko("img2img")))},S=()=>{navigator.clipboard.writeText(u?window.location.toString()+u.url:"").then(()=>{m({title:"Image Link Copied",status:"success",duration:2500,isClosable:!0})})};st("shift+i",()=>{u?(v(),m({title:"Sent To Image To Image",status:"success",duration:2500,isClosable:!0})):m({title:"No Image Loaded",description:"No image found to send to image to image module.",status:"error",duration:2500,isClosable:!0})},[u]);const w=()=>{!u||(u.metadata&&e($ke(u.metadata)),u.metadata?.image.type==="img2img"?e(ko("img2img")):u.metadata?.image.type==="txt2img"&&e(ko("txt2img")))};st("a",()=>{["txt2img","img2img"].includes(u?.metadata?.image?.type)?(w(),m({title:"Parameters Set",status:"success",duration:2500,isClosable:!0})):m({title:"Parameters Not Set",description:"No metadata found for this image.",status:"error",duration:2500,isClosable:!0})},[u]);const k=()=>{u?.metadata&&e(w2(u.metadata.image.seed))};st("s",()=>{u?.metadata?.image?.seed?(k(),m({title:"Seed Set",status:"success",duration:2500,isClosable:!0})):m({title:"Seed Not Set",description:"Could not find seed for this image.",status:"error",duration:2500,isClosable:!0})},[u]);const P=()=>u?.metadata?.image?.prompt&&e(Cb(u.metadata.image.prompt));st("p",()=>{u?.metadata?.image?.prompt?(P(),m({title:"Prompt Set",status:"success",duration:2500,isClosable:!0})):m({title:"Prompt Not Set",description:"Could not find prompt for this image.",status:"error",duration:2500,isClosable:!0})},[u]);const E=()=>{u&&e(uSe(u))};st("u",()=>{i&&!s&&n&&!t&&o?E():m({title:"Upscaling Failed",status:"error",duration:2500,isClosable:!0})},[u,i,s,n,t,o]);const T=()=>{u&&e(cSe(u))};st("r",()=>{r&&!s&&n&&!t&&a?T():m({title:"Face Restoration Failed",status:"error",duration:2500,isClosable:!0})},[u,r,s,n,t,a]);const M=()=>e(WV(!l)),R=()=>{!u||(h&&e(bu(!1)),e(ab(u)),e(Wi(!0)),g!=="unifiedCanvas"&&e(ko("unifiedCanvas")),m({title:"Sent to Unified Canvas",status:"success",duration:2500,isClosable:!0}))};st("i",()=>{u?M():m({title:"Failed to load metadata",status:"error",duration:2500,isClosable:!0})},[u,l]);const O=()=>{e(bu(!h))};return Q("div",{className:"current-image-options",children:[Q(Lo,{isAttached:!0,children:[b(ad,{trigger:"hover",triggerComponent:b(pt,{"aria-label":"Send to...",icon:b(Q5e,{})}),children:Q("div",{className:"current-image-send-to-popover",children:[b(oa,{size:"sm",onClick:v,leftIcon:b(iM,{}),children:"Send to Image to Image"}),b(oa,{size:"sm",onClick:R,leftIcon:b(iM,{}),children:"Send to Unified Canvas"}),b(oa,{size:"sm",onClick:S,leftIcon:b(ob,{}),children:"Copy Link to Image"}),b(oa,{leftIcon:b(dH,{}),size:"sm",children:b(rh,{download:!0,href:u?.url,children:"Download Image"})})]})}),b(pt,{icon:b(O5e,{}),tooltip:h?"Close Viewer (Z)":"Open In Viewer (Z)","aria-label":h?"Close Viewer (Z)":"Open In Viewer (Z)","data-selected":h,onClick:O})]}),Q(Lo,{isAttached:!0,children:[b(pt,{icon:b(q5e,{}),tooltip:"Use Prompt (P)","aria-label":"Use Prompt (P)",isDisabled:!u?.metadata?.image?.prompt,onClick:P}),b(pt,{icon:b(Z5e,{}),tooltip:"Use Seed (S)","aria-label":"Use Seed (S)",isDisabled:!u?.metadata?.image?.seed,onClick:k}),b(pt,{icon:b(L5e,{}),tooltip:"Use All (A)","aria-label":"Use All (A)",isDisabled:!["txt2img","img2img"].includes(u?.metadata?.image?.type),onClick:w})]}),Q(Lo,{isAttached:!0,children:[b(ad,{trigger:"hover",triggerComponent:b(pt,{icon:b(F5e,{}),"aria-label":"Restore Faces"}),children:Q("div",{className:"current-image-postprocessing-popover",children:[b(Y_,{}),b(oa,{isDisabled:!r||!u||!(n&&!t)||!a,onClick:T,children:"Restore Faces"})]})}),b(ad,{trigger:"hover",triggerComponent:b(pt,{icon:b(R5e,{}),"aria-label":"Upscale"}),children:Q("div",{className:"current-image-postprocessing-popover",children:[b(X_,{}),b(oa,{isDisabled:!i||!u||!(n&&!t)||!o,onClick:E,children:"Upscale Image"})]})})]}),b(Lo,{isAttached:!0,children:b(pt,{icon:b(cH,{}),tooltip:"Info (I)","aria-label":"Info (I)","data-selected":l,onClick:M})}),b(f7,{image:u,children:b(pt,{icon:b(v2,{}),tooltip:"Delete Image","aria-label":"Delete Image",isDisabled:!u||!n||t,style:{backgroundColor:"var(--btn-delete-image)"}})})]})},mbe={currentImageUuid:"",shouldPinGallery:!0,shouldShowGallery:!0,galleryScrollPosition:0,galleryImageMinimumWidth:64,galleryImageObjectFit:"cover",shouldHoldGalleryOpen:!1,shouldAutoSwitchToNewImages:!0,currentCategory:"result",categories:{user:{images:[],latest_mtime:void 0,earliest_mtime:void 0,areMoreImagesAvailable:!0},result:{images:[],latest_mtime:void 0,earliest_mtime:void 0,areMoreImagesAvailable:!0}},galleryWidth:300,shouldUseSingleGalleryColumn:!1},DH=HS({name:"gallery",initialState:mbe,reducers:{setCurrentImage:(e,t)=>{e.currentImage=t.payload,e.currentImageUuid=t.payload.uuid},removeImage:(e,t)=>{const{uuid:n,category:r}=t.payload,i=e.categories[r].images,o=i.filter(a=>a.uuid!==n);if(n===e.currentImageUuid){const a=i.findIndex(l=>l.uuid===n),s=Jr.exports.clamp(a,0,o.length-1);e.currentImage=o.length?o[s]:void 0,e.currentImageUuid=o.length?o[s].uuid:""}e.categories[r].images=o},addImage:(e,t)=>{const{image:n,category:r}=t.payload,{uuid:i,url:o,mtime:a}=n,s=e.categories[r];s.images.find(l=>l.url===o&&l.mtime===a)||(s.images.unshift(n),e.shouldAutoSwitchToNewImages&&(e.currentImageUuid=i,e.currentImage=n,e.currentCategory=r),e.intermediateImage=void 0,s.latest_mtime=a)},setIntermediateImage:(e,t)=>{e.intermediateImage=t.payload},clearIntermediateImage:e=>{e.intermediateImage=void 0},selectNextImage:e=>{const{currentImage:t}=e;if(!t)return;const n=e.categories[t.category].images;if(t){const r=n.findIndex(i=>i.uuid===t.uuid);if(r{const{currentImage:t}=e;if(!t)return;const n=e.categories[t.category].images;if(t){const r=n.findIndex(i=>i.uuid===t.uuid);if(r>0){const i=n[r-1];e.currentImage=i,e.currentImageUuid=i.uuid}}},addGalleryImages:(e,t)=>{const{images:n,areMoreImagesAvailable:r,category:i}=t.payload,o=e.categories[i].images;if(n.length>0){const a=n.filter(s=>!o.find(l=>l.url===s.url&&l.mtime===s.mtime));if(e.categories[i].images=o.concat(a).sort((s,l)=>l.mtime-s.mtime),!e.currentImage){const s=n[0];e.currentImage=s,e.currentImageUuid=s.uuid}e.categories[i].latest_mtime=n[0].mtime,e.categories[i].earliest_mtime=n[n.length-1].mtime}r!==void 0&&(e.categories[i].areMoreImagesAvailable=r)},setShouldPinGallery:(e,t)=>{e.shouldPinGallery=t.payload},setShouldShowGallery:(e,t)=>{e.shouldShowGallery=t.payload},setGalleryScrollPosition:(e,t)=>{e.galleryScrollPosition=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},setGalleryImageObjectFit:(e,t)=>{e.galleryImageObjectFit=t.payload},setShouldHoldGalleryOpen:(e,t)=>{e.shouldHoldGalleryOpen=t.payload},setShouldAutoSwitchToNewImages:(e,t)=>{e.shouldAutoSwitchToNewImages=t.payload},setCurrentCategory:(e,t)=>{e.currentCategory=t.payload},setGalleryWidth:(e,t)=>{e.galleryWidth=t.payload},setShouldUseSingleGalleryColumn:(e,t)=>{e.shouldUseSingleGalleryColumn=t.payload}}}),{addImage:u0,clearIntermediateImage:Dw,removeImage:NH,setCurrentImage:hM,addGalleryImages:vbe,setIntermediateImage:ybe,selectNextImage:hk,selectPrevImage:pk,setShouldPinGallery:Sbe,setShouldShowGallery:sd,setGalleryScrollPosition:bbe,setGalleryImageMinimumWidth:Jg,setGalleryImageObjectFit:xbe,setShouldHoldGalleryOpen:BH,setShouldAutoSwitchToNewImages:wbe,setCurrentCategory:e3,setGalleryWidth:Cbe,setShouldUseSingleGalleryColumn:_be}=DH.actions,kbe=DH.reducer;at({d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z",displayName:"CopyIcon"});at({d:"M23.384,21.619,16.855,15.09a9.284,9.284,0,1,0-1.768,1.768l6.529,6.529a1.266,1.266,0,0,0,1.768,0A1.251,1.251,0,0,0,23.384,21.619ZM2.75,9.5a6.75,6.75,0,1,1,6.75,6.75A6.758,6.758,0,0,1,2.75,9.5Z",displayName:"SearchIcon"});at({d:"M23.414,20.591l-4.645-4.645a10.256,10.256,0,1,0-2.828,2.829l4.645,4.644a2.025,2.025,0,0,0,2.828,0A2,2,0,0,0,23.414,20.591ZM10.25,3.005A7.25,7.25,0,1,1,3,10.255,7.258,7.258,0,0,1,10.25,3.005Z",displayName:"Search2Icon"});at({d:"M21.4,13.7C20.6,13.9,19.8,14,19,14c-5,0-9-4-9-9c0-0.8,0.1-1.6,0.3-2.4c0.1-0.3,0-0.7-0.3-1 c-0.3-0.3-0.6-0.4-1-0.3C4.3,2.7,1,7.1,1,12c0,6.1,4.9,11,11,11c4.9,0,9.3-3.3,10.6-8.1c0.1-0.3,0-0.7-0.3-1 C22.1,13.7,21.7,13.6,21.4,13.7z",displayName:"MoonIcon"});at({displayName:"SunIcon",path:Q("g",{strokeLinejoin:"round",strokeLinecap:"round",strokeWidth:"2",fill:"none",stroke:"currentColor",children:[b("circle",{cx:"12",cy:"12",r:"5"}),b("path",{d:"M12 1v2"}),b("path",{d:"M12 21v2"}),b("path",{d:"M4.22 4.22l1.42 1.42"}),b("path",{d:"M18.36 18.36l1.42 1.42"}),b("path",{d:"M1 12h2"}),b("path",{d:"M21 12h2"}),b("path",{d:"M4.22 19.78l1.42-1.42"}),b("path",{d:"M18.36 5.64l1.42-1.42"})]})});at({d:"M0,12a1.5,1.5,0,0,0,1.5,1.5h8.75a.25.25,0,0,1,.25.25V22.5a1.5,1.5,0,0,0,3,0V13.75a.25.25,0,0,1,.25-.25H22.5a1.5,1.5,0,0,0,0-3H13.75a.25.25,0,0,1-.25-.25V1.5a1.5,1.5,0,0,0-3,0v8.75a.25.25,0,0,1-.25.25H1.5A1.5,1.5,0,0,0,0,12Z",displayName:"AddIcon"});at({displayName:"SmallAddIcon",viewBox:"0 0 20 20",path:b("path",{fill:"currentColor",d:"M14 9h-3V6c0-.55-.45-1-1-1s-1 .45-1 1v3H6c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1z",fillRule:"evenodd"})});at({viewBox:"0 0 14 14",d:"M14,7.77 L14,6.17 L12.06,5.53 L11.61,4.44 L12.49,2.6 L11.36,1.47 L9.55,2.38 L8.46,1.93 L7.77,0.01 L6.17,0.01 L5.54,1.95 L4.43,2.4 L2.59,1.52 L1.46,2.65 L2.37,4.46 L1.92,5.55 L0,6.23 L0,7.82 L1.94,8.46 L2.39,9.55 L1.51,11.39 L2.64,12.52 L4.45,11.61 L5.54,12.06 L6.23,13.98 L7.82,13.98 L8.45,12.04 L9.56,11.59 L11.4,12.47 L12.53,11.34 L11.61,9.53 L12.08,8.44 L14,7.75 L14,7.77 Z M7,10 C5.34,10 4,8.66 4,7 C4,5.34 5.34,4 7,4 C8.66,4 10,5.34 10,7 C10,8.66 8.66,10 7,10 Z",displayName:"SettingsIcon"});at({displayName:"CheckCircleIcon",d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm6.927,8.2-6.845,9.289a1.011,1.011,0,0,1-1.43.188L5.764,13.769a1,1,0,1,1,1.25-1.562l4.076,3.261,6.227-8.451A1,1,0,1,1,18.927,8.2Z"});at({d:"M19.5,9.5h-.75V6.75a6.75,6.75,0,0,0-13.5,0V9.5H4.5a2,2,0,0,0-2,2V22a2,2,0,0,0,2,2h15a2,2,0,0,0,2-2V11.5A2,2,0,0,0,19.5,9.5Zm-9.5,6a2,2,0,1,1,3,1.723V19.5a1,1,0,0,1-2,0V17.223A1.994,1.994,0,0,1,10,15.5ZM7.75,6.75a4.25,4.25,0,0,1,8.5,0V9a.5.5,0,0,1-.5.5H8.25a.5.5,0,0,1-.5-.5Z",displayName:"LockIcon"});at({d:"M19.5,9.5h-.75V6.75A6.751,6.751,0,0,0,5.533,4.811a1.25,1.25,0,1,0,2.395.717A4.251,4.251,0,0,1,16.25,6.75V9a.5.5,0,0,1-.5.5H4.5a2,2,0,0,0-2,2V22a2,2,0,0,0,2,2h15a2,2,0,0,0,2-2V11.5A2,2,0,0,0,19.5,9.5Zm-9.5,6a2,2,0,1,1,3,1.723V19.5a1,1,0,0,1-2,0V17.223A1.994,1.994,0,0,1,10,15.5Z",displayName:"UnlockIcon"});at({displayName:"ViewIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M23.432,10.524C20.787,7.614,16.4,4.538,12,4.6,7.6,4.537,3.213,7.615.568,10.524a2.211,2.211,0,0,0,0,2.948C3.182,16.351,7.507,19.4,11.839,19.4h.308c4.347,0,8.671-3.049,11.288-5.929A2.21,2.21,0,0,0,23.432,10.524ZM7.4,12A4.6,4.6,0,1,1,12,16.6,4.6,4.6,0,0,1,7.4,12Z"}),b("circle",{cx:"12",cy:"12",r:"2"})]})});at({displayName:"ViewOffIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M23.2,10.549a20.954,20.954,0,0,0-4.3-3.6l4-3.995a1,1,0,1,0-1.414-1.414l-.018.018a.737.737,0,0,1-.173.291l-19.5,19.5c-.008.007-.018.009-.026.017a1,1,0,0,0,1.631,1.088l4.146-4.146a11.26,11.26,0,0,0,4.31.939h.3c4.256,0,8.489-2.984,11.051-5.8A2.171,2.171,0,0,0,23.2,10.549ZM16.313,13.27a4.581,4.581,0,0,1-3,3.028,4.3,4.3,0,0,1-3.1-.19.253.253,0,0,1-.068-.407l5.56-5.559a.252.252,0,0,1,.407.067A4.3,4.3,0,0,1,16.313,13.27Z"}),b("path",{d:"M7.615,13.4a.244.244,0,0,0,.061-.24A4.315,4.315,0,0,1,7.5,12,4.5,4.5,0,0,1,12,7.5a4.276,4.276,0,0,1,1.16.173.244.244,0,0,0,.24-.062l1.941-1.942a.254.254,0,0,0-.1-.421A10.413,10.413,0,0,0,12,4.75C7.7,4.692,3.4,7.7.813,10.549a2.15,2.15,0,0,0-.007,2.9,21.209,21.209,0,0,0,3.438,3.03.256.256,0,0,0,.326-.029Z"})]})});at({d:"M11.2857,6.05714 L10.08571,4.85714 L7.85714,7.14786 L7.85714,1 L6.14286,1 L6.14286,7.14786 L3.91429,4.85714 L2.71429,6.05714 L7,10.42857 L11.2857,6.05714 Z M1,11.2857 L1,13 L13,13 L13,11.2857 L1,11.2857 Z",displayName:"DownloadIcon",viewBox:"0 0 14 14"});at({displayName:"DeleteIcon",path:b("g",{fill:"currentColor",children:b("path",{d:"M19.452 7.5H4.547a.5.5 0 00-.5.545l1.287 14.136A2 2 0 007.326 24h9.347a2 2 0 001.992-1.819L19.95 8.045a.5.5 0 00-.129-.382.5.5 0 00-.369-.163zm-9.2 13a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zm5 0a.75.75 0 01-1.5 0v-9a.75.75 0 011.5 0zM22 4h-4.75a.25.25 0 01-.25-.25V2.5A2.5 2.5 0 0014.5 0h-5A2.5 2.5 0 007 2.5v1.25a.25.25 0 01-.25.25H2a1 1 0 000 2h20a1 1 0 000-2zM9 3.75V2.5a.5.5 0 01.5-.5h5a.5.5 0 01.5.5v1.25a.25.25 0 01-.25.25h-5.5A.25.25 0 019 3.75z"})})});at({displayName:"RepeatIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z"}),b("path",{d:"M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z"})]})});at({displayName:"RepeatClockIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M12.965,6a1,1,0,0,0-1,1v5.5a1,1,0,0,0,1,1h5a1,1,0,0,0,0-2h-3.75a.25.25,0,0,1-.25-.25V7A1,1,0,0,0,12.965,6Z"}),b("path",{d:"M12.567,1.258A10.822,10.822,0,0,0,2.818,8.4a.25.25,0,0,1-.271.163L.858,8.309a.514.514,0,0,0-.485.213.5.5,0,0,0-.021.53l2.679,4.7a.5.5,0,0,0,.786.107l3.77-3.746a.5.5,0,0,0-.279-.85L5.593,9.007a.25.25,0,0,1-.192-.35,8.259,8.259,0,1,1,7.866,11.59,1.25,1.25,0,0,0,.045,2.5h.047a10.751,10.751,0,1,0-.792-21.487Z"})]})});at({displayName:"EditIcon",path:Q("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[b("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),b("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})});at({d:"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z",displayName:"ChevronLeftIcon"});at({d:"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z",displayName:"ChevronRightIcon"});at({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});at({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"});at({d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z",displayName:"ArrowBackIcon"});at({d:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z",displayName:"ArrowForwardIcon"});at({d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z",displayName:"ArrowUpIcon"});at({viewBox:"0 0 16 16",d:"M11.891 9.992a1 1 0 1 1 1.416 1.415l-4.3 4.3a1 1 0 0 1-1.414 0l-4.3-4.3A1 1 0 0 1 4.71 9.992l3.59 3.591 3.591-3.591zm0-3.984L8.3 2.417 4.709 6.008a1 1 0 0 1-1.416-1.415l4.3-4.3a1 1 0 0 1 1.414 0l4.3 4.3a1 1 0 1 1-1.416 1.415z",displayName:"ArrowUpDownIcon"});at({d:"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z",displayName:"ArrowDownIcon"});var zH=at({displayName:"ExternalLinkIcon",path:Q("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[b("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),b("path",{d:"M15 3h6v6"}),b("path",{d:"M10 14L21 3"})]})});at({displayName:"LinkIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z"}),b("path",{d:"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z"})]})});at({displayName:"PlusSquareIcon",path:Q("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[b("rect",{height:"18",width:"18",rx:"2",ry:"2",x:"3",y:"3"}),b("path",{d:"M12 8v8"}),b("path",{d:"M8 12h8"})]})});at({displayName:"CalendarIcon",viewBox:"0 0 14 14",d:"M10.8889,5.5 L3.11111,5.5 L3.11111,7.05556 L10.8889,7.05556 L10.8889,5.5 Z M12.4444,1.05556 L11.6667,1.05556 L11.6667,0 L10.1111,0 L10.1111,1.05556 L3.88889,1.05556 L3.88889,0 L2.33333,0 L2.33333,1.05556 L1.55556,1.05556 C0.692222,1.05556 0.00777777,1.75556 0.00777777,2.61111 L0,12.5 C0,13.3556 0.692222,14 1.55556,14 L12.4444,14 C13.3,14 14,13.3556 14,12.5 L14,2.61111 C14,1.75556 13.3,1.05556 12.4444,1.05556 Z M12.4444,12.5 L1.55556,12.5 L1.55556,3.94444 L12.4444,3.94444 L12.4444,12.5 Z M8.55556,8.61111 L3.11111,8.61111 L3.11111,10.1667 L8.55556,10.1667 L8.55556,8.61111 Z"});at({d:"M0.913134,0.920639 C1.49851,0.331726 2.29348,0 3.12342,0 L10.8766,0 C11.7065,0 12.5015,0.331725 13.0869,0.920639 C13.6721,1.50939 14,2.30689 14,3.13746 L14,8.12943 C13.9962,8.51443 13.9059,8.97125 13.7629,9.32852 C13.6128,9.683 13.3552,10.0709 13.0869,10.3462 C12.813,10.6163 12.4265,10.8761 12.0734,11.0274 C11.7172,11.1716 11.2607,11.263 10.8766,11.2669 L10.1234,11.2669 L10.1234,12.5676 L10.1209,12.5676 C10.1204,12.793 10.0633,13.0791 9.97807,13.262 C9.8627,13.466 9.61158,13.7198 9.40818,13.8382 L9.40824,13.8383 C9.4077,13.8386 9.40716,13.8388 9.40661,13.8391 C9.40621,13.8393 9.4058,13.8396 9.40539,13.8398 L9.40535,13.8397 C9.22958,13.9254 8.94505,13.9951 8.75059,14 L8.74789,14 C8.35724,13.9963 7.98473,13.8383 7.71035,13.5617 L5.39553,11.2669 L3.12342,11.2669 C2.29348,11.2669 1.49851,10.9352 0.913134,10.3462 C0.644826,10.0709 0.387187,9.683 0.23711,9.32852 C0.0941235,8.97125 0.00379528,8.51443 0,8.12943 L0,3.13746 C0,2.30689 0.327915,1.50939 0.913134,0.920639 Z M3.12342,1.59494 C2.71959,1.59494 2.33133,1.75628 2.04431,2.04503 C1.75713,2.33395 1.59494,2.72681 1.59494,3.13746 L1.59494,8.12943 C1.59114,8.35901 1.62114,8.51076 1.71193,8.72129 C1.79563,8.9346 1.88065,9.06264 2.04431,9.22185 C2.33133,9.5106 2.71959,9.67195 3.12342,9.67195 L5.72383,9.67195 C5.93413,9.67195 6.13592,9.75502 6.28527,9.90308 L8.52848,12.1269 L8.52848,10.4694 C8.52848,10.029 8.88552,9.67195 9.32595,9.67195 L10.8766,9.67195 C11.1034,9.67583 11.2517,9.64614 11.4599,9.55518 C11.6712,9.47132 11.7976,9.38635 11.9557,9.22185 C12.1193,9.06264 12.2044,8.9346 12.2881,8.72129 C12.3789,8.51076 12.4089,8.35901 12.4051,8.12943 L12.4051,3.13746 C12.4051,2.72681 12.2429,2.33394 11.9557,2.04503 C11.6687,1.75628 11.2804,1.59494 10.8766,1.59494 L3.12342,1.59494 Z",displayName:"ChatIcon",viewBox:"0 0 14 14"});at({displayName:"TimeIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M12,0A12,12,0,1,0,24,12,12.014,12.014,0,0,0,12,0Zm0,22A10,10,0,1,1,22,12,10.011,10.011,0,0,1,12,22Z"}),b("path",{d:"M17.134,15.81,12.5,11.561V6.5a1,1,0,0,0-2,0V12a1,1,0,0,0,.324.738l4.959,4.545a1.01,1.01,0,0,0,1.413-.061A1,1,0,0,0,17.134,15.81Z"})]})});at({displayName:"ArrowRightIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M13.584,12a2.643,2.643,0,0,1-.775,1.875L3.268,23.416a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L.768,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,13.584,12Z"}),b("path",{d:"M23.75,12a2.643,2.643,0,0,1-.775,1.875l-9.541,9.541a1.768,1.768,0,0,1-2.5-2.5l8.739-8.739a.25.25,0,0,0,0-.354L10.934,3.084a1.768,1.768,0,0,1,2.5-2.5l9.541,9.541A2.643,2.643,0,0,1,23.75,12Z"})]})});at({displayName:"ArrowLeftIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M10.416,12a2.643,2.643,0,0,1,.775-1.875L20.732.584a1.768,1.768,0,0,1,2.5,2.5l-8.739,8.739a.25.25,0,0,0,0,.354l8.739,8.739a1.768,1.768,0,0,1-2.5,2.5l-9.541-9.541A2.643,2.643,0,0,1,10.416,12Z"}),b("path",{d:"M.25,12a2.643,2.643,0,0,1,.775-1.875L10.566.584a1.768,1.768,0,0,1,2.5,2.5L4.327,11.823a.25.25,0,0,0,0,.354l8.739,8.739a1.768,1.768,0,0,1-2.5,2.5L1.025,13.875A2.643,2.643,0,0,1,.25,12Z"})]})});at({displayName:"AtSignIcon",d:"M12,.5A11.634,11.634,0,0,0,.262,12,11.634,11.634,0,0,0,12,23.5a11.836,11.836,0,0,0,6.624-2,1.25,1.25,0,1,0-1.393-2.076A9.34,9.34,0,0,1,12,21a9.132,9.132,0,0,1-9.238-9A9.132,9.132,0,0,1,12,3a9.132,9.132,0,0,1,9.238,9v.891a1.943,1.943,0,0,1-3.884,0V12A5.355,5.355,0,1,0,12,17.261a5.376,5.376,0,0,0,3.861-1.634,4.438,4.438,0,0,0,7.877-2.736V12A11.634,11.634,0,0,0,12,.5Zm0,14.261A2.763,2.763,0,1,1,14.854,12,2.812,2.812,0,0,1,12,14.761Z"});at({displayName:"AttachmentIcon",d:"M21.843,3.455a6.961,6.961,0,0,0-9.846,0L1.619,13.832a5.128,5.128,0,0,0,7.252,7.252L17.3,12.653A3.293,3.293,0,1,0,12.646,8L7.457,13.184A1,1,0,1,0,8.871,14.6L14.06,9.409a1.294,1.294,0,0,1,1.829,1.83L7.457,19.67a3.128,3.128,0,0,1-4.424-4.424L13.411,4.869a4.962,4.962,0,1,1,7.018,7.018L12.646,19.67a1,1,0,1,0,1.414,1.414L21.843,13.3a6.96,6.96,0,0,0,0-9.846Z"});at({displayName:"UpDownIcon",viewBox:"-1 -1 9 11",d:"M 3.5 0L 3.98809 -0.569442L 3.5 -0.987808L 3.01191 -0.569442L 3.5 0ZM 3.5 9L 3.01191 9.56944L 3.5 9.98781L 3.98809 9.56944L 3.5 9ZM 0.488094 3.56944L 3.98809 0.569442L 3.01191 -0.569442L -0.488094 2.43056L 0.488094 3.56944ZM 3.01191 0.569442L 6.51191 3.56944L 7.48809 2.43056L 3.98809 -0.569442L 3.01191 0.569442ZM -0.488094 6.56944L 3.01191 9.56944L 3.98809 8.43056L 0.488094 5.43056L -0.488094 6.56944ZM 3.98809 9.56944L 7.48809 6.56944L 6.51191 5.43056L 3.01191 8.43056L 3.98809 9.56944Z"});at({d:"M23.555,8.729a1.505,1.505,0,0,0-1.406-.98H16.062a.5.5,0,0,1-.472-.334L13.405,1.222a1.5,1.5,0,0,0-2.81,0l-.005.016L8.41,7.415a.5.5,0,0,1-.471.334H1.85A1.5,1.5,0,0,0,.887,10.4l5.184,4.3a.5.5,0,0,1,.155.543L4.048,21.774a1.5,1.5,0,0,0,2.31,1.684l5.346-3.92a.5.5,0,0,1,.591,0l5.344,3.919a1.5,1.5,0,0,0,2.312-1.683l-2.178-6.535a.5.5,0,0,1,.155-.543l5.194-4.306A1.5,1.5,0,0,0,23.555,8.729Z",displayName:"StarIcon"});at({displayName:"EmailIcon",path:Q("g",{fill:"currentColor",children:[b("path",{d:"M11.114,14.556a1.252,1.252,0,0,0,1.768,0L22.568,4.87a.5.5,0,0,0-.281-.849A1.966,1.966,0,0,0,22,4H2a1.966,1.966,0,0,0-.289.021.5.5,0,0,0-.281.849Z"}),b("path",{d:"M23.888,5.832a.182.182,0,0,0-.2.039l-6.2,6.2a.251.251,0,0,0,0,.354l5.043,5.043a.75.75,0,1,1-1.06,1.061l-5.043-5.043a.25.25,0,0,0-.354,0l-2.129,2.129a2.75,2.75,0,0,1-3.888,0L7.926,13.488a.251.251,0,0,0-.354,0L2.529,18.531a.75.75,0,0,1-1.06-1.061l5.043-5.043a.251.251,0,0,0,0-.354l-6.2-6.2a.18.18,0,0,0-.2-.039A.182.182,0,0,0,0,6V18a2,2,0,0,0,2,2H22a2,2,0,0,0,2-2V6A.181.181,0,0,0,23.888,5.832Z"})]})});at({d:"M2.20731,0.0127209 C2.1105,-0.0066419 1.99432,-0.00664663 1.91687,0.032079 C0.871279,0.438698 0.212942,1.92964 0.0580392,2.95587 C-0.426031,6.28627 2.20731,9.17133 4.62766,11.0689 C6.77694,12.7534 10.9012,15.5223 13.3409,12.8503 C13.6507,12.5211 14.0186,12.037 13.9993,11.553 C13.9412,10.7397 13.186,10.1588 12.6051,9.71349 C12.1598,9.38432 11.2304,8.47427 10.6495,8.49363 C10.1267,8.51299 9.79754,9.05515 9.46837,9.38432 L8.88748,9.96521 C8.79067,10.062 7.55145,9.24878 7.41591,9.15197 C6.91248,8.8228 6.4284,8.45491 6.00242,8.04829 C5.57644,7.64167 5.18919,7.19632 4.86002,6.73161 C4.7632,6.59607 3.96933,5.41495 4.04678,5.31813 C4.04678,5.31813 4.72448,4.58234 4.91811,4.2919 C5.32473,3.67229 5.63453,3.18822 5.16982,2.45243 C4.99556,2.18135 4.78257,1.96836 4.55021,1.73601 C4.14359,1.34875 3.73698,0.942131 3.27227,0.612963 C3.02055,0.419335 2.59457,0.0708094 2.20731,0.0127209 Z",displayName:"PhoneIcon",viewBox:"0 0 14 14"});at({viewBox:"0 0 10 10",d:"M3,2 C2.44771525,2 2,1.55228475 2,1 C2,0.44771525 2.44771525,0 3,0 C3.55228475,0 4,0.44771525 4,1 C4,1.55228475 3.55228475,2 3,2 Z M3,6 C2.44771525,6 2,5.55228475 2,5 C2,4.44771525 2.44771525,4 3,4 C3.55228475,4 4,4.44771525 4,5 C4,5.55228475 3.55228475,6 3,6 Z M3,10 C2.44771525,10 2,9.55228475 2,9 C2,8.44771525 2.44771525,8 3,8 C3.55228475,8 4,8.44771525 4,9 C4,9.55228475 3.55228475,10 3,10 Z M7,2 C6.44771525,2 6,1.55228475 6,1 C6,0.44771525 6.44771525,0 7,0 C7.55228475,0 8,0.44771525 8,1 C8,1.55228475 7.55228475,2 7,2 Z M7,6 C6.44771525,6 6,5.55228475 6,5 C6,4.44771525 6.44771525,4 7,4 C7.55228475,4 8,4.44771525 8,5 C8,5.55228475 7.55228475,6 7,6 Z M7,10 C6.44771525,10 6,9.55228475 6,9 C6,8.44771525 6.44771525,8 7,8 C7.55228475,8 8,8.44771525 8,9 C8,9.55228475 7.55228475,10 7,10 Z",displayName:"DragHandleIcon"});at({displayName:"SpinnerIcon",path:Q(An,{children:[b("defs",{children:Q("linearGradient",{x1:"28.154%",y1:"63.74%",x2:"74.629%",y2:"17.783%",id:"a",children:[b("stop",{stopColor:"currentColor",offset:"0%"}),b("stop",{stopColor:"#fff",stopOpacity:"0",offset:"100%"})]})}),Q("g",{transform:"translate(2)",fill:"none",children:[b("circle",{stroke:"url(#a)",strokeWidth:"4",cx:"10",cy:"12",r:"10"}),b("path",{d:"M10 2C4.477 2 0 6.477 0 12",stroke:"currentColor",strokeWidth:"4"}),b("rect",{fill:"currentColor",x:"8",width:"4",height:"4",rx:"8"})]})]})});at({displayName:"CloseIcon",d:"M.439,21.44a1.5,1.5,0,0,0,2.122,2.121L11.823,14.3a.25.25,0,0,1,.354,0l9.262,9.263a1.5,1.5,0,1,0,2.122-2.121L14.3,12.177a.25.25,0,0,1,0-.354l9.263-9.262A1.5,1.5,0,0,0,21.439.44L12.177,9.7a.25.25,0,0,1-.354,0L2.561.44A1.5,1.5,0,0,0,.439,2.561L9.7,11.823a.25.25,0,0,1,0,.354Z"});at({displayName:"SmallCloseIcon",viewBox:"0 0 16 16",path:b("path",{d:"M9.41 8l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 0 0-1.71-.71L8 6.59l-2.29-2.3a1.003 1.003 0 0 0-1.42 1.42L6.59 8 4.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 0 0 1.71.71L8 9.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 0 0 .71-1.71L9.41 8z",fillRule:"evenodd",fill:"currentColor"})});at({d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8 0-1.85.63-3.55 1.69-4.9L16.9 18.31C15.55 19.37 13.85 20 12 20zm6.31-3.1L7.1 5.69C8.45 4.63 10.15 4 12 4c4.42 0 8 3.58 8 8 0 1.85-.63 3.55-1.69 4.9z",displayName:"NotAllowedIcon"});at({d:"M21,5H3C2.621,5,2.275,5.214,2.105,5.553C1.937,5.892,1.973,6.297,2.2,6.6l9,12 c0.188,0.252,0.485,0.4,0.8,0.4s0.611-0.148,0.8-0.4l9-12c0.228-0.303,0.264-0.708,0.095-1.047C21.725,5.214,21.379,5,21,5z",displayName:"TriangleDownIcon"});at({d:"M12.8,5.4c-0.377-0.504-1.223-0.504-1.6,0l-9,12c-0.228,0.303-0.264,0.708-0.095,1.047 C2.275,18.786,2.621,19,3,19h18c0.379,0,0.725-0.214,0.895-0.553c0.169-0.339,0.133-0.744-0.095-1.047L12.8,5.4z",displayName:"TriangleUpIcon"});at({displayName:"InfoOutlineIcon",path:Q("g",{fill:"currentColor",stroke:"currentColor",strokeLinecap:"square",strokeWidth:"2",children:[b("circle",{cx:"12",cy:"12",fill:"none",r:"11",stroke:"currentColor"}),b("line",{fill:"none",x1:"11.959",x2:"11.959",y1:"11",y2:"17"}),b("circle",{cx:"11.959",cy:"7",r:"1",stroke:"none"})]})});at({displayName:"BellIcon",d:"M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"});at({d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm.25,5a1.5,1.5,0,1,1-1.5,1.5A1.5,1.5,0,0,1,12.25,5ZM14.5,18.5h-4a1,1,0,0,1,0-2h.75a.25.25,0,0,0,.25-.25v-4.5a.25.25,0,0,0-.25-.25H10.5a1,1,0,0,1,0-2h1a2,2,0,0,1,2,2v4.75a.25.25,0,0,0,.25.25h.75a1,1,0,1,1,0,2Z"});at({d:"M12,0A12,12,0,1,0,24,12,12.013,12.013,0,0,0,12,0Zm0,19a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,12,19Zm1.6-6.08a1,1,0,0,0-.6.917,1,1,0,1,1-2,0,3,3,0,0,1,1.8-2.75A2,2,0,1,0,10,9.255a1,1,0,1,1-2,0,4,4,0,1,1,5.6,3.666Z",displayName:"QuestionIcon"});at({displayName:"QuestionOutlineIcon",path:Q("g",{stroke:"currentColor",strokeWidth:"1.5",children:[b("path",{strokeLinecap:"round",fill:"none",d:"M9,9a3,3,0,1,1,4,2.829,1.5,1.5,0,0,0-1,1.415V14.25"}),b("path",{fill:"none",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),b("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]})});at({d:"M11.983,0a12.206,12.206,0,0,0-8.51,3.653A11.8,11.8,0,0,0,0,12.207,11.779,11.779,0,0,0,11.8,24h.214A12.111,12.111,0,0,0,24,11.791h0A11.766,11.766,0,0,0,11.983,0ZM10.5,16.542a1.476,1.476,0,0,1,1.449-1.53h.027a1.527,1.527,0,0,1,1.523,1.47,1.475,1.475,0,0,1-1.449,1.53h-.027A1.529,1.529,0,0,1,10.5,16.542ZM11,12.5v-6a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Z",displayName:"WarningIcon"});at({displayName:"WarningTwoIcon",d:"M23.119,20,13.772,2.15h0a2,2,0,0,0-3.543,0L.881,20a2,2,0,0,0,1.772,2.928H21.347A2,2,0,0,0,23.119,20ZM11,8.423a1,1,0,0,1,2,0v6a1,1,0,1,1-2,0Zm1.05,11.51h-.028a1.528,1.528,0,0,1-1.522-1.47,1.476,1.476,0,0,1,1.448-1.53h.028A1.527,1.527,0,0,1,13.5,18.4,1.475,1.475,0,0,1,12.05,19.933Z"});at({viewBox:"0 0 14 14",path:b("g",{fill:"currentColor",children:b("polygon",{points:"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"})})});at({displayName:"MinusIcon",path:b("g",{fill:"currentColor",children:b("rect",{height:"4",width:"20",x:"2",y:"10"})})});at({displayName:"HamburgerIcon",viewBox:"0 0 24 24",d:"M 3 5 A 1.0001 1.0001 0 1 0 3 7 L 21 7 A 1.0001 1.0001 0 1 0 21 5 L 3 5 z M 3 11 A 1.0001 1.0001 0 1 0 3 13 L 21 13 A 1.0001 1.0001 0 1 0 21 11 L 3 11 z M 3 17 A 1.0001 1.0001 0 1 0 3 19 L 21 19 A 1.0001 1.0001 0 1 0 21 17 L 3 17 z"});function Ebe(e){return ut({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M245.09 327.74v-37.32c57.07 0 84.51 13.47 108.58 38.68 5.4 5.65 15 1.32 14.29-6.43-5.45-61.45-34.14-117.09-122.87-117.09v-37.32a8.32 8.32 0 00-14.05-6L146.58 242a8.2 8.2 0 000 11.94L231 333.71a8.32 8.32 0 0014.09-5.97z"}},{tag:"path",attr:{fill:"none",strokeMiterlimit:"10",strokeWidth:"32",d:"M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64z"}}]})(e)}const On=({label:e,value:t,onClick:n,isLink:r,labelPosition:i,withCopy:o=!1})=>Q(rn,{gap:2,children:[n&&b(pi,{label:`Recall ${e}`,children:b(Va,{"aria-label":"Use this parameter",icon:b(Ebe,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),o&&b(pi,{label:`Copy ${e}`,children:b(Va,{"aria-label":`Copy ${e}`,icon:b(ob,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),Q(rn,{direction:i?"column":"row",children:[Q(Po,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?Q(rh,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",b(zH,{mx:"2px"})]}):b(Po,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}),Pbe=(e,t)=>e.image.uuid===t.image.uuid,FH=C.exports.memo(({image:e,styleClass:t})=>{const n=qe();st("esc",()=>{n(WV(!1))});const r=e?.metadata?.image||{},i=e?.dreamPrompt,{cfg_scale:o,fit:a,height:s,hires_fix:l,init_image_path:u,mask_image_path:h,orig_path:g,perlin:m,postprocessing:v,prompt:S,sampler:w,scale:k,seamless:P,seed:E,steps:T,strength:M,threshold:R,type:O,variations:D,width:B}=r,$=JSON.stringify(e.metadata,null,2);return b("div",{className:`image-metadata-viewer ${t}`,children:Q(rn,{gap:1,direction:"column",width:"100%",children:[Q(rn,{gap:2,children:[b(Po,{fontWeight:"semibold",children:"File:"}),Q(rh,{href:e.url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.url.length>64?e.url.substring(0,64).concat("..."):e.url,b(zH,{mx:"2px"})]})]}),Object.keys(r).length>0?Q(An,{children:[O&&b(On,{label:"Generation type",value:O}),e.metadata?.model_weights&&b(On,{label:"Model",value:e.metadata.model_weights}),["esrgan","gfpgan"].includes(O)&&b(On,{label:"Original image",value:g}),O==="gfpgan"&&M!==void 0&&b(On,{label:"Fix faces strength",value:M,onClick:()=>n(o4(M))}),O==="esrgan"&&k!==void 0&&b(On,{label:"Upscaling scale",value:k,onClick:()=>n(z7(k))}),O==="esrgan"&&M!==void 0&&b(On,{label:"Upscaling strength",value:M,onClick:()=>n(F7(M))}),S&&b(On,{label:"Prompt",labelPosition:"top",value:e4(S),onClick:()=>n(Cb(S))}),E!==void 0&&b(On,{label:"Seed",value:E,onClick:()=>n(w2(E))}),R!==void 0&&b(On,{label:"Noise Threshold",value:R,onClick:()=>n(UV(R))}),m!==void 0&&b(On,{label:"Perlin Noise",value:m,onClick:()=>n(BV(m))}),w&&b(On,{label:"Sampler",value:w,onClick:()=>n(zV(w))}),T&&b(On,{label:"Steps",value:T,onClick:()=>n(VV(T))}),o!==void 0&&b(On,{label:"CFG scale",value:o,onClick:()=>n(MV(o))}),D&&D.length>0&&b(On,{label:"Seed-weight pairs",value:g5(D),onClick:()=>n($V(g5(D)))}),P&&b(On,{label:"Seamless",value:P,onClick:()=>n(FV(P))}),l&&b(On,{label:"High Resolution Optimization",value:l,onClick:()=>n(OV(l))}),B&&b(On,{label:"Width",value:B,onClick:()=>n(GV(B))}),s&&b(On,{label:"Height",value:s,onClick:()=>n(RV(s))}),u&&b(On,{label:"Initial image",value:u,isLink:!0,onClick:()=>n(P1(u))}),h&&b(On,{label:"Mask image",value:h,isLink:!0,onClick:()=>n(NV(h))}),O==="img2img"&&M&&b(On,{label:"Image to image strength",value:M,onClick:()=>n(B7(M))}),a&&b(On,{label:"Image to image fit",value:a,onClick:()=>n(HV(a))}),v&&v.length>0&&Q(An,{children:[b(nh,{size:"sm",children:"Postprocessing"}),v.map((W,j)=>{if(W.type==="esrgan"){const{scale:te,strength:V}=W;return Q(rn,{pl:"2rem",gap:1,direction:"column",children:[b(Po,{size:"md",children:`${j+1}: Upscale (ESRGAN)`}),b(On,{label:"Scale",value:te,onClick:()=>n(z7(te))}),b(On,{label:"Strength",value:V,onClick:()=>n(F7(V))})]},j)}else if(W.type==="gfpgan"){const{strength:te}=W;return Q(rn,{pl:"2rem",gap:1,direction:"column",children:[b(Po,{size:"md",children:`${j+1}: Face restoration (GFPGAN)`}),b(On,{label:"Strength",value:te,onClick:()=>{n(o4(te)),n(a4("gfpgan"))}})]},j)}else if(W.type==="codeformer"){const{strength:te,fidelity:V}=W;return Q(rn,{pl:"2rem",gap:1,direction:"column",children:[b(Po,{size:"md",children:`${j+1}: Face restoration (Codeformer)`}),b(On,{label:"Strength",value:te,onClick:()=>{n(o4(te)),n(a4("codeformer"))}}),V&&b(On,{label:"Fidelity",value:V,onClick:()=>{n(IV(V)),n(a4("codeformer"))}})]},j)}})]}),i&&b(On,{withCopy:!0,label:"Dream Prompt",value:i}),Q(rn,{gap:2,direction:"column",children:[Q(rn,{gap:2,children:[b(pi,{label:"Copy metadata JSON",children:b(Va,{"aria-label":"Copy metadata JSON",icon:b(ob,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText($)})}),b(Po,{fontWeight:"semibold",children:"Metadata JSON:"})]}),b("div",{className:"image-json-viewer",children:b("pre",{children:$})})]})]}):b(sz,{width:"100%",pt:10,children:b(Po,{fontSize:"lg",fontWeight:"semibold",children:"No metadata available"})})]})})},Pbe),$H=lt([e=>e.gallery,e=>e.options],(e,t)=>{const{currentCategory:n,currentImage:r,intermediateImage:i}=e,{shouldShowImageDetails:o}=t,a=e.categories[r?r.category:"result"].images,s=a.findIndex(u=>u.uuid===e?.currentImage?.uuid),l=a.length;return{imageToDisplay:i||r,isIntermediate:Boolean(i),viewerImageToDisplay:r,currentCategory:n,isOnFirstImage:s===0,isOnLastImage:!isNaN(s)&&s===l-1,shouldShowImageDetails:o,shouldShowPrevImageButton:s===0,shouldShowNextImageButton:!isNaN(s)&&s===l-1}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function Tbe(){const e=qe(),{isOnFirstImage:t,isOnLastImage:n,shouldShowImageDetails:r,imageToDisplay:i,isIntermediate:o}=Le($H),[a,s]=C.exports.useState(!1),l=()=>{s(!0)},u=()=>{s(!1)},h=()=>{e(pk())},g=()=>{e(hk())};return Q("div",{className:"current-image-preview",children:[i&&b(PS,{src:i.url,width:i.width,height:i.height,style:{imageRendering:o?"pixelated":"initial"}}),!r&&Q("div",{className:"current-image-next-prev-buttons",children:[b("div",{className:"next-prev-button-trigger-area prev-button-trigger-area",onMouseOver:l,onMouseOut:u,children:a&&!t&&b(Va,{"aria-label":"Previous image",icon:b(lH,{className:"next-prev-button"}),variant:"unstyled",onClick:h})}),b("div",{className:"next-prev-button-trigger-area next-button-trigger-area",onMouseOver:l,onMouseOut:u,children:a&&!n&&b(Va,{"aria-label":"Next image",icon:b(uH,{className:"next-prev-button"}),variant:"unstyled",onClick:g})})]}),r&&i&&b(FH,{image:i,styleClass:"current-image-metadata"})]})}const Lbe=lt([e=>e.gallery,e=>e.options,_r],(e,t,n)=>{const{currentImage:r,intermediateImage:i}=e,{shouldShowImageDetails:o}=t;return{activeTabName:n,shouldShowImageDetails:o,hasAnImageToDisplay:r||i}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),HH=()=>{const{hasAnImageToDisplay:e,activeTabName:t}=Le(Lbe);return b("div",{className:"current-image-area","data-tab-name":t,children:e?Q(An,{children:[b(OH,{}),b(Tbe,{})]}):b("div",{className:"current-image-display-placeholder",children:b(v5e,{})})})},Abe=()=>{const e=C.exports.useContext(fk);return b(pt,{"aria-label":"Upload Image",tooltip:"Upload Image",icon:b(ik,{}),onClick:e||void 0})};function Mbe(){const e=Le(i=>i.options.initialImage),t=qe(),n=m2(),r=()=>{n({title:"Problem loading parameters",description:"Unable to load init image.",status:"error",isClosable:!0}),t(AV())};return Q(An,{children:[Q("div",{className:"init-image-preview-header",children:[b("h2",{children:"Initial Image"}),b(Abe,{})]}),e&&b("div",{className:"init-image-preview",children:b(PS,{fit:"contain",maxWidth:"100%",maxHeight:"100%",src:typeof e=="string"?e:e.url,onError:r})})]})}const Ibe=()=>{const e=Le(r=>r.options.initialImage),{currentImage:t}=Le(r=>r.gallery);return Q("div",{className:"workarea-split-view",children:[b("div",{className:"workarea-split-view-left",children:e?b("div",{className:"image-to-image-area",children:b(Mbe,{})}):b(hbe,{})}),t&&b("div",{className:"workarea-split-view-right",children:b(HH,{})})]})};function Rbe(e){return ut({tag:"svg",attr:{viewBox:"0 0 16 16",fill:"currentColor"},child:[{tag:"path",attr:{d:"M14 1H3L2 2v11l1 1h11l1-1V2l-1-1zM8 13H3V2h5v11zm6 0H9V2h5v11z"}}]})(e)}var Obe=globalThis&&globalThis.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Fr=globalThis&&globalThis.__assign||function(){return Fr=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"u"?void 0:Number(r),maxHeight:typeof i>"u"?void 0:Number(i),minWidth:typeof o>"u"?void 0:Number(o),minHeight:typeof a>"u"?void 0:Number(a)}},Hbe=["as","style","className","grid","snap","bounds","boundsByDirection","size","defaultSize","minWidth","minHeight","maxWidth","maxHeight","lockAspectRatio","lockAspectRatioExtraWidth","lockAspectRatioExtraHeight","enable","handleStyles","handleClasses","handleWrapperStyle","handleWrapperClass","children","onResizeStart","onResize","onResizeStop","handleComponent","scale","resizeRatio","snapGap"],yM="__resizable_base__",WH=function(e){Bbe(t,e);function t(n){var r=e.call(this,n)||this;return r.ratio=1,r.resizable=null,r.parentLeft=0,r.parentTop=0,r.resizableLeft=0,r.resizableRight=0,r.resizableTop=0,r.resizableBottom=0,r.targetLeft=0,r.targetTop=0,r.appendBase=function(){if(!r.resizable||!r.window)return null;var i=r.parentNode;if(!i)return null;var o=r.window.document.createElement("div");return o.style.width="100%",o.style.height="100%",o.style.position="absolute",o.style.transform="scale(0, 0)",o.style.left="0",o.style.flex="0 0 100%",o.classList?o.classList.add(yM):o.className+=yM,i.appendChild(o),o},r.removeBase=function(i){var o=r.parentNode;!o||o.removeChild(i)},r.ref=function(i){i&&(r.resizable=i)},r.state={isResizing:!1,width:typeof(r.propsSize&&r.propsSize.width)>"u"?"auto":r.propsSize&&r.propsSize.width,height:typeof(r.propsSize&&r.propsSize.height)>"u"?"auto":r.propsSize&&r.propsSize.height,direction:"right",original:{x:0,y:0,width:0,height:0},backgroundStyle:{height:"100%",width:"100%",backgroundColor:"rgba(0,0,0,0)",cursor:"auto",opacity:0,position:"fixed",zIndex:9999,top:"0",left:"0",bottom:"0",right:"0"},flexBasis:void 0},r.onResizeStart=r.onResizeStart.bind(r),r.onMouseMove=r.onMouseMove.bind(r),r.onMouseUp=r.onMouseUp.bind(r),r}return Object.defineProperty(t.prototype,"parentNode",{get:function(){return this.resizable?this.resizable.parentNode:null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"window",{get:function(){return!this.resizable||!this.resizable.ownerDocument?null:this.resizable.ownerDocument.defaultView},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"propsSize",{get:function(){return this.props.size||this.props.defaultSize||zbe},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"size",{get:function(){var n=0,r=0;if(this.resizable&&this.window){var i=this.resizable.offsetWidth,o=this.resizable.offsetHeight,a=this.resizable.style.position;a!=="relative"&&(this.resizable.style.position="relative"),n=this.resizable.style.width!=="auto"?this.resizable.offsetWidth:i,r=this.resizable.style.height!=="auto"?this.resizable.offsetHeight:o,this.resizable.style.position=a}return{width:n,height:r}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sizeStyle",{get:function(){var n=this,r=this.props.size,i=function(s){if(typeof n.state[s]>"u"||n.state[s]==="auto")return"auto";if(n.propsSize&&n.propsSize[s]&&n.propsSize[s].toString().endsWith("%")){if(n.state[s].toString().endsWith("%"))return n.state[s].toString();var l=n.getParentSize(),u=Number(n.state[s].toString().replace("px","")),h=u/l[s]*100;return h+"%"}return Nw(n.state[s])},o=r&&typeof r.width<"u"&&!this.state.isResizing?Nw(r.width):i("width"),a=r&&typeof r.height<"u"&&!this.state.isResizing?Nw(r.height):i("height");return{width:o,height:a}},enumerable:!1,configurable:!0}),t.prototype.getParentSize=function(){if(!this.parentNode)return this.window?{width:this.window.innerWidth,height:this.window.innerHeight}:{width:0,height:0};var n=this.appendBase();if(!n)return{width:0,height:0};var r=!1,i=this.parentNode.style.flexWrap;i!=="wrap"&&(r=!0,this.parentNode.style.flexWrap="wrap"),n.style.position="relative",n.style.minWidth="100%",n.style.minHeight="100%";var o={width:n.offsetWidth,height:n.offsetHeight};return r&&(this.parentNode.style.flexWrap=i),this.removeBase(n),o},t.prototype.bindEvents=function(){this.window&&(this.window.addEventListener("mouseup",this.onMouseUp),this.window.addEventListener("mousemove",this.onMouseMove),this.window.addEventListener("mouseleave",this.onMouseUp),this.window.addEventListener("touchmove",this.onMouseMove,{capture:!0,passive:!1}),this.window.addEventListener("touchend",this.onMouseUp))},t.prototype.unbindEvents=function(){this.window&&(this.window.removeEventListener("mouseup",this.onMouseUp),this.window.removeEventListener("mousemove",this.onMouseMove),this.window.removeEventListener("mouseleave",this.onMouseUp),this.window.removeEventListener("touchmove",this.onMouseMove,!0),this.window.removeEventListener("touchend",this.onMouseUp))},t.prototype.componentDidMount=function(){if(!(!this.resizable||!this.window)){var n=this.window.getComputedStyle(this.resizable);this.setState({width:this.state.width||this.size.width,height:this.state.height||this.size.height,flexBasis:n.flexBasis!=="auto"?n.flexBasis:void 0})}},t.prototype.componentWillUnmount=function(){this.window&&this.unbindEvents()},t.prototype.createSizeForCssProperty=function(n,r){var i=this.propsSize&&this.propsSize[r];return this.state[r]==="auto"&&this.state.original[r]===n&&(typeof i>"u"||i==="auto")?"auto":n},t.prototype.calculateNewMaxFromBoundary=function(n,r){var i=this.props.boundsByDirection,o=this.state.direction,a=i&&Hp("left",o),s=i&&Hp("top",o),l,u;if(this.props.bounds==="parent"){var h=this.parentNode;h&&(l=a?this.resizableRight-this.parentLeft:h.offsetWidth+(this.parentLeft-this.resizableLeft),u=s?this.resizableBottom-this.parentTop:h.offsetHeight+(this.parentTop-this.resizableTop))}else this.props.bounds==="window"?this.window&&(l=a?this.resizableRight:this.window.innerWidth-this.resizableLeft,u=s?this.resizableBottom:this.window.innerHeight-this.resizableTop):this.props.bounds&&(l=a?this.resizableRight-this.targetLeft:this.props.bounds.offsetWidth+(this.targetLeft-this.resizableLeft),u=s?this.resizableBottom-this.targetTop:this.props.bounds.offsetHeight+(this.targetTop-this.resizableTop));return l&&Number.isFinite(l)&&(n=n&&n"u"?10:o.width,g=typeof i.width>"u"||i.width<0?n:i.width,m=typeof o.height>"u"?10:o.height,v=typeof i.height>"u"||i.height<0?r:i.height,S=l||0,w=u||0;if(s){var k=(m-S)*this.ratio+w,P=(v-S)*this.ratio+w,E=(h-w)/this.ratio+S,T=(g-w)/this.ratio+S,M=Math.max(h,k),R=Math.min(g,P),O=Math.max(m,E),D=Math.min(v,T);n=n3(n,M,R),r=n3(r,O,D)}else n=n3(n,h,g),r=n3(r,m,v);return{newWidth:n,newHeight:r}},t.prototype.setBoundingClientRect=function(){if(this.props.bounds==="parent"){var n=this.parentNode;if(n){var r=n.getBoundingClientRect();this.parentLeft=r.left,this.parentTop=r.top}}if(this.props.bounds&&typeof this.props.bounds!="string"){var i=this.props.bounds.getBoundingClientRect();this.targetLeft=i.left,this.targetTop=i.top}if(this.resizable){var o=this.resizable.getBoundingClientRect(),a=o.left,s=o.top,l=o.right,u=o.bottom;this.resizableLeft=a,this.resizableRight=l,this.resizableTop=s,this.resizableBottom=u}},t.prototype.onResizeStart=function(n,r){if(!(!this.resizable||!this.window)){var i=0,o=0;if(n.nativeEvent&&Fbe(n.nativeEvent)?(i=n.nativeEvent.clientX,o=n.nativeEvent.clientY):n.nativeEvent&&r3(n.nativeEvent)&&(i=n.nativeEvent.touches[0].clientX,o=n.nativeEvent.touches[0].clientY),this.props.onResizeStart&&this.resizable){var a=this.props.onResizeStart(n,r,this.resizable);if(a===!1)return}this.props.size&&(typeof this.props.size.height<"u"&&this.props.size.height!==this.state.height&&this.setState({height:this.props.size.height}),typeof this.props.size.width<"u"&&this.props.size.width!==this.state.width&&this.setState({width:this.props.size.width})),this.ratio=typeof this.props.lockAspectRatio=="number"?this.props.lockAspectRatio:this.size.width/this.size.height;var s,l=this.window.getComputedStyle(this.resizable);if(l.flexBasis!=="auto"){var u=this.parentNode;if(u){var h=this.window.getComputedStyle(u).flexDirection;this.flexDir=h.startsWith("row")?"row":"column",s=l.flexBasis}}this.setBoundingClientRect(),this.bindEvents();var g={original:{x:i,y:o,width:this.size.width,height:this.size.height},isResizing:!0,backgroundStyle:fl(fl({},this.state.backgroundStyle),{cursor:this.window.getComputedStyle(n.target).cursor||"auto"}),direction:r,flexBasis:s};this.setState(g)}},t.prototype.onMouseMove=function(n){var r=this;if(!(!this.state.isResizing||!this.resizable||!this.window)){if(this.window.TouchEvent&&r3(n))try{n.preventDefault(),n.stopPropagation()}catch{}var i=this.props,o=i.maxWidth,a=i.maxHeight,s=i.minWidth,l=i.minHeight,u=r3(n)?n.touches[0].clientX:n.clientX,h=r3(n)?n.touches[0].clientY:n.clientY,g=this.state,m=g.direction,v=g.original,S=g.width,w=g.height,k=this.getParentSize(),P=$be(k,this.window.innerWidth,this.window.innerHeight,o,a,s,l);o=P.maxWidth,a=P.maxHeight,s=P.minWidth,l=P.minHeight;var E=this.calculateNewSizeFromDirection(u,h),T=E.newHeight,M=E.newWidth,R=this.calculateNewMaxFromBoundary(o,a);this.props.snap&&this.props.snap.x&&(M=vM(M,this.props.snap.x,this.props.snapGap)),this.props.snap&&this.props.snap.y&&(T=vM(T,this.props.snap.y,this.props.snapGap));var O=this.calculateNewSizeFromAspectRatio(M,T,{width:R.maxWidth,height:R.maxHeight},{width:s,height:l});if(M=O.newWidth,T=O.newHeight,this.props.grid){var D=mM(M,this.props.grid[0]),B=mM(T,this.props.grid[1]),$=this.props.snapGap||0;M=$===0||Math.abs(D-M)<=$?D:M,T=$===0||Math.abs(B-T)<=$?B:T}var W={width:M-v.width,height:T-v.height};if(S&&typeof S=="string"){if(S.endsWith("%")){var j=M/k.width*100;M=j+"%"}else if(S.endsWith("vw")){var te=M/this.window.innerWidth*100;M=te+"vw"}else if(S.endsWith("vh")){var V=M/this.window.innerHeight*100;M=V+"vh"}}if(w&&typeof w=="string"){if(w.endsWith("%")){var j=T/k.height*100;T=j+"%"}else if(w.endsWith("vw")){var te=T/this.window.innerWidth*100;T=te+"vw"}else if(w.endsWith("vh")){var V=T/this.window.innerHeight*100;T=V+"vh"}}var J={width:this.createSizeForCssProperty(M,"width"),height:this.createSizeForCssProperty(T,"height")};this.flexDir==="row"?J.flexBasis=J.width:this.flexDir==="column"&&(J.flexBasis=J.height),zl.exports.flushSync(function(){r.setState(J)}),this.props.onResize&&this.props.onResize(n,m,this.resizable,W)}},t.prototype.onMouseUp=function(n){var r=this.state,i=r.isResizing,o=r.direction,a=r.original;if(!(!i||!this.resizable)){var s={width:this.size.width-a.width,height:this.size.height-a.height};this.props.onResizeStop&&this.props.onResizeStop(n,o,this.resizable,s),this.props.size&&this.setState(this.props.size),this.unbindEvents(),this.setState({isResizing:!1,backgroundStyle:fl(fl({},this.state.backgroundStyle),{cursor:"auto"})})}},t.prototype.updateSize=function(n){this.setState({width:n.width,height:n.height})},t.prototype.renderResizer=function(){var n=this,r=this.props,i=r.enable,o=r.handleStyles,a=r.handleClasses,s=r.handleWrapperStyle,l=r.handleWrapperClass,u=r.handleComponent;if(!i)return null;var h=Object.keys(i).map(function(g){return i[g]!==!1?b(Nbe,{direction:g,onResizeStart:n.onResizeStart,replaceStyles:o&&o[g],className:a&&a[g],children:u&&u[g]?u[g]:null},g):null});return b("div",{className:l,style:s,children:h})},t.prototype.render=function(){var n=this,r=Object.keys(this.props).reduce(function(a,s){return Hbe.indexOf(s)!==-1||(a[s]=n.props[s]),a},{}),i=fl(fl(fl({position:"relative",userSelect:this.state.isResizing?"none":"auto"},this.props.style),this.sizeStyle),{maxWidth:this.props.maxWidth,maxHeight:this.props.maxHeight,minWidth:this.props.minWidth,minHeight:this.props.minHeight,boxSizing:"border-box",flexShrink:0});this.state.flexBasis&&(i.flexBasis=this.state.flexBasis);var o=this.props.as||"div";return Q(o,{...fl({ref:this.ref,style:i,className:this.props.className},r),children:[this.state.isResizing&&b("div",{style:this.state.backgroundStyle}),this.props.children,this.renderResizer()]})},t.defaultProps={as:"div",onResizeStart:function(){},onResize:function(){},onResizeStop:function(){},enable:{top:!0,right:!0,bottom:!0,left:!0,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},style:{},grid:[1,1],lockAspectRatio:!1,lockAspectRatioExtraWidth:0,lockAspectRatioExtraHeight:0,scale:1,resizeRatio:1,snapGap:0},t}(C.exports.PureComponent);function Kn(e,t,{checkForDefaultPrevented:n=!0}={}){return function(i){if(e?.(i),n===!1||!i.defaultPrevented)return t?.(i)}}function y2(e,t=[]){let n=[];function r(o,a){const s=C.exports.createContext(a),l=n.length;n=[...n,a];function u(g){const{scope:m,children:v,...S}=g,w=m?.[e][l]||s,k=C.exports.useMemo(()=>S,Object.values(S));return C.exports.createElement(w.Provider,{value:k},v)}function h(g,m){const v=m?.[e][l]||s,S=C.exports.useContext(v);if(S)return S;if(a!==void 0)return a;throw new Error(`\`${g}\` must be used within \`${o}\``)}return u.displayName=o+"Provider",[u,h]}const i=()=>{const o=n.map(a=>C.exports.createContext(a));return function(s){const l=s?.[e]||o;return C.exports.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return i.scopeName=e,[r,Wbe(i,...t)]}function Wbe(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(i=>({useScope:i(),scopeName:i.scopeName}));return function(o){const a=r.reduce((s,{useScope:l,scopeName:u})=>{const g=l(o)[`__scope${u}`];return{...s,...g}},{});return C.exports.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}function Vbe(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function VH(...e){return t=>e.forEach(n=>Vbe(n,t))}function ja(...e){return C.exports.useCallback(VH(...e),e)}const Uv=C.exports.forwardRef((e,t)=>{const{children:n,...r}=e,i=C.exports.Children.toArray(n),o=i.find(Gbe);if(o){const a=o.props.children,s=i.map(l=>l===o?C.exports.Children.count(a)>1?C.exports.Children.only(null):C.exports.isValidElement(a)?a.props.children:null:l);return C.exports.createElement(h7,Mn({},r,{ref:t}),C.exports.isValidElement(a)?C.exports.cloneElement(a,void 0,s):null)}return C.exports.createElement(h7,Mn({},r,{ref:t}),n)});Uv.displayName="Slot";const h7=C.exports.forwardRef((e,t)=>{const{children:n,...r}=e;return C.exports.isValidElement(n)?C.exports.cloneElement(n,{...jbe(r,n.props),ref:VH(t,n.ref)}):C.exports.Children.count(n)>1?C.exports.Children.only(null):null});h7.displayName="SlotClone";const Ube=({children:e})=>C.exports.createElement(C.exports.Fragment,null,e);function Gbe(e){return C.exports.isValidElement(e)&&e.type===Ube}function jbe(e,t){const n={...t};for(const r in t){const i=e[r],o=t[r];/^on[A-Z]/.test(r)?i&&o?n[r]=(...s)=>{o(...s),i(...s)}:i&&(n[r]=i):r==="style"?n[r]={...i,...o}:r==="className"&&(n[r]=[i,o].filter(Boolean).join(" "))}return{...e,...n}}const Ybe=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Lu=Ybe.reduce((e,t)=>{const n=C.exports.forwardRef((r,i)=>{const{asChild:o,...a}=r,s=o?Uv:t;return C.exports.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),C.exports.createElement(s,Mn({},a,{ref:i}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function UH(e,t){e&&zl.exports.flushSync(()=>e.dispatchEvent(t))}function GH(e){const t=e+"CollectionProvider",[n,r]=y2(t),[i,o]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=v=>{const{scope:S,children:w}=v,k=se.useRef(null),P=se.useRef(new Map).current;return se.createElement(i,{scope:S,itemMap:P,collectionRef:k},w)},s=e+"CollectionSlot",l=se.forwardRef((v,S)=>{const{scope:w,children:k}=v,P=o(s,w),E=ja(S,P.collectionRef);return se.createElement(Uv,{ref:E},k)}),u=e+"CollectionItemSlot",h="data-radix-collection-item",g=se.forwardRef((v,S)=>{const{scope:w,children:k,...P}=v,E=se.useRef(null),T=ja(S,E),M=o(u,w);return se.useEffect(()=>(M.itemMap.set(E,{ref:E,...P}),()=>void M.itemMap.delete(E))),se.createElement(Uv,{[h]:"",ref:T},k)});function m(v){const S=o(e+"CollectionConsumer",v);return se.useCallback(()=>{const k=S.collectionRef.current;if(!k)return[];const P=Array.from(k.querySelectorAll(`[${h}]`));return Array.from(S.itemMap.values()).sort((M,R)=>P.indexOf(M.ref.current)-P.indexOf(R.ref.current))},[S.collectionRef,S.itemMap])}return[{Provider:a,Slot:l,ItemSlot:g},m,r]}const qbe=C.exports.createContext(void 0);function jH(e){const t=C.exports.useContext(qbe);return e||t||"ltr"}function Dl(e){const t=C.exports.useRef(e);return C.exports.useEffect(()=>{t.current=e}),C.exports.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function Kbe(e,t=globalThis?.document){const n=Dl(e);C.exports.useEffect(()=>{const r=i=>{i.key==="Escape"&&n(i)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const p7="dismissableLayer.update",Xbe="dismissableLayer.pointerDownOutside",Zbe="dismissableLayer.focusOutside";let SM;const Qbe=C.exports.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Jbe=C.exports.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:i,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:s,onDismiss:l,...u}=e,h=C.exports.useContext(Qbe),[g,m]=C.exports.useState(null),v=(n=g?.ownerDocument)!==null&&n!==void 0?n:globalThis?.document,[,S]=C.exports.useState({}),w=ja(t,B=>m(B)),k=Array.from(h.layers),[P]=[...h.layersWithOutsidePointerEventsDisabled].slice(-1),E=k.indexOf(P),T=g?k.indexOf(g):-1,M=h.layersWithOutsidePointerEventsDisabled.size>0,R=T>=E,O=exe(B=>{const $=B.target,W=[...h.branches].some(j=>j.contains($));!R||W||(o?.(B),s?.(B),B.defaultPrevented||l?.())},v),D=txe(B=>{const $=B.target;[...h.branches].some(j=>j.contains($))||(a?.(B),s?.(B),B.defaultPrevented||l?.())},v);return Kbe(B=>{T===h.layers.size-1&&(i?.(B),!B.defaultPrevented&&l&&(B.preventDefault(),l()))},v),C.exports.useEffect(()=>{if(!!g)return r&&(h.layersWithOutsidePointerEventsDisabled.size===0&&(SM=v.body.style.pointerEvents,v.body.style.pointerEvents="none"),h.layersWithOutsidePointerEventsDisabled.add(g)),h.layers.add(g),bM(),()=>{r&&h.layersWithOutsidePointerEventsDisabled.size===1&&(v.body.style.pointerEvents=SM)}},[g,v,r,h]),C.exports.useEffect(()=>()=>{!g||(h.layers.delete(g),h.layersWithOutsidePointerEventsDisabled.delete(g),bM())},[g,h]),C.exports.useEffect(()=>{const B=()=>S({});return document.addEventListener(p7,B),()=>document.removeEventListener(p7,B)},[]),C.exports.createElement(Lu.div,Mn({},u,{ref:w,style:{pointerEvents:M?R?"auto":"none":void 0,...e.style},onFocusCapture:Kn(e.onFocusCapture,D.onFocusCapture),onBlurCapture:Kn(e.onBlurCapture,D.onBlurCapture),onPointerDownCapture:Kn(e.onPointerDownCapture,O.onPointerDownCapture)}))});function exe(e,t=globalThis?.document){const n=Dl(e),r=C.exports.useRef(!1),i=C.exports.useRef(()=>{});return C.exports.useEffect(()=>{const o=s=>{if(s.target&&!r.current){let u=function(){YH(Xbe,n,l,{discrete:!0})};const l={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",i.current),i.current=u,t.addEventListener("click",i.current,{once:!0})):u()}r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",o)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",o),t.removeEventListener("click",i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function txe(e,t=globalThis?.document){const n=Dl(e),r=C.exports.useRef(!1);return C.exports.useEffect(()=>{const i=o=>{o.target&&!r.current&&YH(Zbe,n,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",i),()=>t.removeEventListener("focusin",i)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function bM(){const e=new CustomEvent(p7);document.dispatchEvent(e)}function YH(e,t,n,{discrete:r}){const i=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?UH(i,o):i.dispatchEvent(o)}let Bw=0;function nxe(){C.exports.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:xM()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:xM()),Bw++,()=>{Bw===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Bw--}},[])}function xM(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const zw="focusScope.autoFocusOnMount",Fw="focusScope.autoFocusOnUnmount",wM={bubbles:!1,cancelable:!0},rxe=C.exports.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:o,...a}=e,[s,l]=C.exports.useState(null),u=Dl(i),h=Dl(o),g=C.exports.useRef(null),m=ja(t,w=>l(w)),v=C.exports.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;C.exports.useEffect(()=>{if(r){let w=function(P){if(v.paused||!s)return;const E=P.target;s.contains(E)?g.current=E:Rf(g.current,{select:!0})},k=function(P){v.paused||!s||s.contains(P.relatedTarget)||Rf(g.current,{select:!0})};return document.addEventListener("focusin",w),document.addEventListener("focusout",k),()=>{document.removeEventListener("focusin",w),document.removeEventListener("focusout",k)}}},[r,s,v.paused]),C.exports.useEffect(()=>{if(s){_M.add(v);const w=document.activeElement;if(!s.contains(w)){const P=new CustomEvent(zw,wM);s.addEventListener(zw,u),s.dispatchEvent(P),P.defaultPrevented||(ixe(uxe(qH(s)),{select:!0}),document.activeElement===w&&Rf(s))}return()=>{s.removeEventListener(zw,u),setTimeout(()=>{const P=new CustomEvent(Fw,wM);s.addEventListener(Fw,h),s.dispatchEvent(P),P.defaultPrevented||Rf(w??document.body,{select:!0}),s.removeEventListener(Fw,h),_M.remove(v)},0)}}},[s,u,h,v]);const S=C.exports.useCallback(w=>{if(!n&&!r||v.paused)return;const k=w.key==="Tab"&&!w.altKey&&!w.ctrlKey&&!w.metaKey,P=document.activeElement;if(k&&P){const E=w.currentTarget,[T,M]=oxe(E);T&&M?!w.shiftKey&&P===M?(w.preventDefault(),n&&Rf(T,{select:!0})):w.shiftKey&&P===T&&(w.preventDefault(),n&&Rf(M,{select:!0})):P===E&&w.preventDefault()}},[n,r,v.paused]);return C.exports.createElement(Lu.div,Mn({tabIndex:-1},a,{ref:m,onKeyDown:S}))});function ixe(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Rf(r,{select:t}),document.activeElement!==n)return}function oxe(e){const t=qH(e),n=CM(t,e),r=CM(t.reverse(),e);return[n,r]}function qH(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const i=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||i?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function CM(e,t){for(const n of e)if(!axe(n,{upTo:t}))return n}function axe(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function sxe(e){return e instanceof HTMLInputElement&&"select"in e}function Rf(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&sxe(e)&&t&&e.select()}}const _M=lxe();function lxe(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=kM(e,t),e.unshift(t)},remove(t){var n;e=kM(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function kM(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function uxe(e){return e.filter(t=>t.tagName!=="A")}const o1=Boolean(globalThis?.document)?C.exports.useLayoutEffect:()=>{},cxe=e6["useId".toString()]||(()=>{});let dxe=0;function fxe(e){const[t,n]=C.exports.useState(cxe());return o1(()=>{e||n(r=>r??String(dxe++))},[e]),e||(t?`radix-${t}`:"")}function C1(e){return e.split("-")[0]}function sb(e){return e.split("-")[1]}function _1(e){return["top","bottom"].includes(C1(e))?"x":"y"}function gk(e){return e==="y"?"height":"width"}function EM(e,t,n){let{reference:r,floating:i}=e;const o=r.x+r.width/2-i.width/2,a=r.y+r.height/2-i.height/2,s=_1(t),l=gk(s),u=r[l]/2-i[l]/2,h=C1(t),g=s==="x";let m;switch(h){case"top":m={x:o,y:r.y-i.height};break;case"bottom":m={x:o,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:a};break;case"left":m={x:r.x-i.width,y:a};break;default:m={x:r.x,y:r.y}}switch(sb(t)){case"start":m[s]-=u*(n&&g?-1:1);break;case"end":m[s]+=u*(n&&g?-1:1);break}return m}const hxe=async(e,t,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,s=await(a.isRTL==null?void 0:a.isRTL(t));let l=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:h}=EM(l,r,s),g=r,m={},v=0;for(let S=0;S({name:"arrow",options:e,async fn(t){const{element:n,padding:r=0}=e??{},{x:i,y:o,placement:a,rects:s,platform:l}=t;if(n==null)return{};const u=KH(r),h={x:i,y:o},g=_1(a),m=sb(a),v=gk(g),S=await l.getDimensions(n),w=g==="y"?"top":"left",k=g==="y"?"bottom":"right",P=s.reference[v]+s.reference[g]-h[g]-s.floating[v],E=h[g]-s.reference[g],T=await(l.getOffsetParent==null?void 0:l.getOffsetParent(n));let M=T?g==="y"?T.clientHeight||0:T.clientWidth||0:0;M===0&&(M=s.floating[v]);const R=P/2-E/2,O=u[w],D=M-S[v]-u[k],B=M/2-S[v]/2+R,$=g7(O,B,D),te=(m==="start"?u[w]:u[k])>0&&B!==$&&s.reference[v]<=s.floating[v]?Bvxe[t])}function yxe(e,t,n){n===void 0&&(n=!1);const r=sb(e),i=_1(e),o=gk(i);let a=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=b5(a)),{main:a,cross:b5(a)}}const Sxe={start:"end",end:"start"};function TM(e){return e.replace(/start|end/g,t=>Sxe[t])}const bxe=["top","right","bottom","left"];function xxe(e){const t=b5(e);return[TM(e),t,TM(t)]}const wxe=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:i,rects:o,initialPlacement:a,platform:s,elements:l}=t,{mainAxis:u=!0,crossAxis:h=!0,fallbackPlacements:g,fallbackStrategy:m="bestFit",flipAlignment:v=!0,...S}=e,w=C1(r),P=g||(w===a||!v?[b5(a)]:xxe(a)),E=[a,...P],T=await S5(t,S),M=[];let R=((n=i.flip)==null?void 0:n.overflows)||[];if(u&&M.push(T[w]),h){const{main:$,cross:W}=yxe(r,o,await(s.isRTL==null?void 0:s.isRTL(l.floating)));M.push(T[$],T[W])}if(R=[...R,{placement:r,overflows:M}],!M.every($=>$<=0)){var O,D;const $=((O=(D=i.flip)==null?void 0:D.index)!=null?O:0)+1,W=E[$];if(W)return{data:{index:$,overflows:R},reset:{placement:W}};let j="bottom";switch(m){case"bestFit":{var B;const te=(B=R.map(V=>[V,V.overflows.filter(J=>J>0).reduce((J,re)=>J+re,0)]).sort((V,J)=>V[1]-J[1])[0])==null?void 0:B[0].placement;te&&(j=te);break}case"initialPlacement":j=a;break}if(r!==j)return{reset:{placement:j}}}return{}}}};function LM(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function AM(e){return bxe.some(t=>e[t]>=0)}const Cxe=function(e){let{strategy:t="referenceHidden",...n}=e===void 0?{}:e;return{name:"hide",async fn(r){const{rects:i}=r;switch(t){case"referenceHidden":{const o=await S5(r,{...n,elementContext:"reference"}),a=LM(o,i.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:AM(a)}}}case"escaped":{const o=await S5(r,{...n,altBoundary:!0}),a=LM(o,i.floating);return{data:{escapedOffsets:a,escaped:AM(a)}}}default:return{}}}}};async function _xe(e,t){const{placement:n,platform:r,elements:i}=e,o=await(r.isRTL==null?void 0:r.isRTL(i.floating)),a=C1(n),s=sb(n),l=_1(n)==="x",u=["left","top"].includes(a)?-1:1,h=o&&l?-1:1,g=typeof t=="function"?t(e):t;let{mainAxis:m,crossAxis:v,alignmentAxis:S}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...g};return s&&typeof S=="number"&&(v=s==="end"?S*-1:S),l?{x:v*h,y:m*u}:{x:m*u,y:v*h}}const kxe=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,i=await _xe(t,e);return{x:n+i.x,y:r+i.y,data:i}}}};function XH(e){return e==="x"?"y":"x"}const Exe=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:s={fn:k=>{let{x:P,y:E}=k;return{x:P,y:E}}},...l}=e,u={x:n,y:r},h=await S5(t,l),g=_1(C1(i)),m=XH(g);let v=u[g],S=u[m];if(o){const k=g==="y"?"top":"left",P=g==="y"?"bottom":"right",E=v+h[k],T=v-h[P];v=g7(E,v,T)}if(a){const k=m==="y"?"top":"left",P=m==="y"?"bottom":"right",E=S+h[k],T=S-h[P];S=g7(E,S,T)}const w=s.fn({...t,[g]:v,[m]:S});return{...w,data:{x:w.x-n,y:w.y-r}}}}},Pxe=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:i,rects:o,middlewareData:a}=t,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=e,h={x:n,y:r},g=_1(i),m=XH(g);let v=h[g],S=h[m];const w=typeof s=="function"?s({...o,placement:i}):s,k=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(l){const R=g==="y"?"height":"width",O=o.reference[g]-o.floating[R]+k.mainAxis,D=o.reference[g]+o.reference[R]-k.mainAxis;vD&&(v=D)}if(u){var P,E,T,M;const R=g==="y"?"width":"height",O=["top","left"].includes(C1(i)),D=o.reference[m]-o.floating[R]+(O&&(P=(E=a.offset)==null?void 0:E[m])!=null?P:0)+(O?0:k.crossAxis),B=o.reference[m]+o.reference[R]+(O?0:(T=(M=a.offset)==null?void 0:M[m])!=null?T:0)-(O?k.crossAxis:0);SB&&(S=B)}return{[g]:v,[m]:S}}}};function ZH(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Bu(e){if(e==null)return window;if(!ZH(e)){const t=e.ownerDocument;return t&&t.defaultView||window}return e}function S2(e){return Bu(e).getComputedStyle(e)}function Au(e){return ZH(e)?"":e?(e.nodeName||"").toLowerCase():""}function QH(){const e=navigator.userAgentData;return e!=null&&e.brands?e.brands.map(t=>t.brand+"/"+t.version).join(" "):navigator.userAgent}function Nl(e){return e instanceof Bu(e).HTMLElement}function vd(e){return e instanceof Bu(e).Element}function Txe(e){return e instanceof Bu(e).Node}function mk(e){if(typeof ShadowRoot>"u")return!1;const t=Bu(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function lb(e){const{overflow:t,overflowX:n,overflowY:r}=S2(e);return/auto|scroll|overlay|hidden/.test(t+r+n)}function Lxe(e){return["table","td","th"].includes(Au(e))}function JH(e){const t=/firefox/i.test(QH()),n=S2(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)}function eW(){return!/^((?!chrome|android).)*safari/i.test(QH())}const MM=Math.min,Qm=Math.max,x5=Math.round;function Mu(e,t,n){var r,i,o,a;t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect();let l=1,u=1;t&&Nl(e)&&(l=e.offsetWidth>0&&x5(s.width)/e.offsetWidth||1,u=e.offsetHeight>0&&x5(s.height)/e.offsetHeight||1);const h=vd(e)?Bu(e):window,g=!eW()&&n,m=(s.left+(g&&(r=(i=h.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/l,v=(s.top+(g&&(o=(a=h.visualViewport)==null?void 0:a.offsetTop)!=null?o:0))/u,S=s.width/l,w=s.height/u;return{width:S,height:w,top:v,right:m+S,bottom:v+w,left:m,x:m,y:v}}function Td(e){return((Txe(e)?e.ownerDocument:e.document)||window.document).documentElement}function ub(e){return vd(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function tW(e){return Mu(Td(e)).left+ub(e).scrollLeft}function Axe(e){const t=Mu(e);return x5(t.width)!==e.offsetWidth||x5(t.height)!==e.offsetHeight}function Mxe(e,t,n){const r=Nl(t),i=Td(t),o=Mu(e,r&&Axe(t),n==="fixed");let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if(r||!r&&n!=="fixed")if((Au(t)!=="body"||lb(i))&&(a=ub(t)),Nl(t)){const l=Mu(t,!0);s.x=l.x+t.clientLeft,s.y=l.y+t.clientTop}else i&&(s.x=tW(i));return{x:o.left+a.scrollLeft-s.x,y:o.top+a.scrollTop-s.y,width:o.width,height:o.height}}function nW(e){return Au(e)==="html"?e:e.assignedSlot||e.parentNode||(mk(e)?e.host:null)||Td(e)}function IM(e){return!Nl(e)||getComputedStyle(e).position==="fixed"?null:e.offsetParent}function Ixe(e){let t=nW(e);for(mk(t)&&(t=t.host);Nl(t)&&!["html","body"].includes(Au(t));){if(JH(t))return t;t=t.parentNode}return null}function m7(e){const t=Bu(e);let n=IM(e);for(;n&&Lxe(n)&&getComputedStyle(n).position==="static";)n=IM(n);return n&&(Au(n)==="html"||Au(n)==="body"&&getComputedStyle(n).position==="static"&&!JH(n))?t:n||Ixe(e)||t}function RM(e){if(Nl(e))return{width:e.offsetWidth,height:e.offsetHeight};const t=Mu(e);return{width:t.width,height:t.height}}function Rxe(e){let{rect:t,offsetParent:n,strategy:r}=e;const i=Nl(n),o=Td(n);if(n===o)return t;let a={scrollLeft:0,scrollTop:0};const s={x:0,y:0};if((i||!i&&r!=="fixed")&&((Au(n)!=="body"||lb(o))&&(a=ub(n)),Nl(n))){const l=Mu(n,!0);s.x=l.x+n.clientLeft,s.y=l.y+n.clientTop}return{...t,x:t.x-a.scrollLeft+s.x,y:t.y-a.scrollTop+s.y}}function Oxe(e,t){const n=Bu(e),r=Td(e),i=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,s=0,l=0;if(i){o=i.width,a=i.height;const u=eW();(u||!u&&t==="fixed")&&(s=i.offsetLeft,l=i.offsetTop)}return{width:o,height:a,x:s,y:l}}function Dxe(e){var t;const n=Td(e),r=ub(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=Qm(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),a=Qm(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0);let s=-r.scrollLeft+tW(e);const l=-r.scrollTop;return S2(i||n).direction==="rtl"&&(s+=Qm(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:a,x:s,y:l}}function rW(e){const t=nW(e);return["html","body","#document"].includes(Au(t))?e.ownerDocument.body:Nl(t)&&lb(t)?t:rW(t)}function w5(e,t){var n;t===void 0&&(t=[]);const r=rW(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=Bu(r),a=i?[o].concat(o.visualViewport||[],lb(r)?r:[]):r,s=t.concat(a);return i?s:s.concat(w5(a))}function Nxe(e,t){const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&mk(n)){let r=t;do{if(r&&e===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function Bxe(e,t){const n=Mu(e,!1,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft;return{top:r,left:i,x:i,y:r,right:i+e.clientWidth,bottom:r+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}function OM(e,t,n){return t==="viewport"?y5(Oxe(e,n)):vd(t)?Bxe(t,n):y5(Dxe(Td(e)))}function zxe(e){const t=w5(e),r=["absolute","fixed"].includes(S2(e).position)&&Nl(e)?m7(e):e;return vd(r)?t.filter(i=>vd(i)&&Nxe(i,r)&&Au(i)!=="body"):[]}function Fxe(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e;const a=[...n==="clippingAncestors"?zxe(t):[].concat(n),r],s=a[0],l=a.reduce((u,h)=>{const g=OM(t,h,i);return u.top=Qm(g.top,u.top),u.right=MM(g.right,u.right),u.bottom=MM(g.bottom,u.bottom),u.left=Qm(g.left,u.left),u},OM(t,s,i));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}const $xe={getClippingRect:Fxe,convertOffsetParentRelativeRectToViewportRelativeRect:Rxe,isElement:vd,getDimensions:RM,getOffsetParent:m7,getDocumentElement:Td,getElementRects:e=>{let{reference:t,floating:n,strategy:r}=e;return{reference:Mxe(t,m7(n),r),floating:{...RM(n),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>S2(e).direction==="rtl"};function Hxe(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a=!0,animationFrame:s=!1}=r,l=i&&!s,u=o&&!s,h=l||u?[...vd(e)?w5(e):[],...w5(t)]:[];h.forEach(w=>{l&&w.addEventListener("scroll",n,{passive:!0}),u&&w.addEventListener("resize",n)});let g=null;if(a){let w=!0;g=new ResizeObserver(()=>{w||n(),w=!1}),vd(e)&&!s&&g.observe(e),g.observe(t)}let m,v=s?Mu(e):null;s&&S();function S(){const w=Mu(e);v&&(w.x!==v.x||w.y!==v.y||w.width!==v.width||w.height!==v.height)&&n(),v=w,m=requestAnimationFrame(S)}return n(),()=>{var w;h.forEach(k=>{l&&k.removeEventListener("scroll",n),u&&k.removeEventListener("resize",n)}),(w=g)==null||w.disconnect(),g=null,s&&cancelAnimationFrame(m)}}const Wxe=(e,t,n)=>hxe(e,t,{platform:$xe,...n});var v7=typeof document<"u"?C.exports.useLayoutEffect:C.exports.useEffect;function y7(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!y7(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){const o=i[r];if(!(o==="_owner"&&e.$$typeof)&&!y7(e[o],t[o]))return!1}return!0}return e!==e&&t!==t}function Vxe(e){const t=C.exports.useRef(e);return v7(()=>{t.current=e}),t}function Uxe(e){let{middleware:t,placement:n="bottom",strategy:r="absolute",whileElementsMounted:i}=e===void 0?{}:e;const o=C.exports.useRef(null),a=C.exports.useRef(null),s=Vxe(i),l=C.exports.useRef(null),[u,h]=C.exports.useState({x:null,y:null,strategy:r,placement:n,middlewareData:{}}),[g,m]=C.exports.useState(t);y7(g?.map(T=>{let{options:M}=T;return M}),t?.map(T=>{let{options:M}=T;return M}))||m(t);const v=C.exports.useCallback(()=>{!o.current||!a.current||Wxe(o.current,a.current,{middleware:g,placement:n,strategy:r}).then(T=>{S.current&&zl.exports.flushSync(()=>{h(T)})})},[g,n,r]);v7(()=>{S.current&&v()},[v]);const S=C.exports.useRef(!1);v7(()=>(S.current=!0,()=>{S.current=!1}),[]);const w=C.exports.useCallback(()=>{if(typeof l.current=="function"&&(l.current(),l.current=null),o.current&&a.current)if(s.current){const T=s.current(o.current,a.current,v);l.current=T}else v()},[v,s]),k=C.exports.useCallback(T=>{o.current=T,w()},[w]),P=C.exports.useCallback(T=>{a.current=T,w()},[w]),E=C.exports.useMemo(()=>({reference:o,floating:a}),[]);return C.exports.useMemo(()=>({...u,update:v,refs:E,reference:k,floating:P}),[u,v,E,k,P])}const Gxe=e=>{const{element:t,padding:n}=e;function r(i){return Object.prototype.hasOwnProperty.call(i,"current")}return{name:"arrow",options:e,fn(i){return r(t)?t.current!=null?PM({element:t.current,padding:n}).fn(i):{}:t?PM({element:t,padding:n}).fn(i):{}}}};function jxe(e){const[t,n]=C.exports.useState(void 0);return o1(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(i=>{if(!Array.isArray(i)||!i.length)return;const o=i[0];let a,s;if("borderBoxSize"in o){const l=o.borderBoxSize,u=Array.isArray(l)?l[0]:l;a=u.inlineSize,s=u.blockSize}else a=e.offsetWidth,s=e.offsetHeight;n({width:a,height:s})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const iW="Popper",[vk,oW]=y2(iW),[Yxe,aW]=vk(iW),qxe=e=>{const{__scopePopper:t,children:n}=e,[r,i]=C.exports.useState(null);return C.exports.createElement(Yxe,{scope:t,anchor:r,onAnchorChange:i},n)},Kxe="PopperAnchor",Xxe=C.exports.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...i}=e,o=aW(Kxe,n),a=C.exports.useRef(null),s=ja(t,a);return C.exports.useEffect(()=>{o.onAnchorChange(r?.current||a.current)}),r?null:C.exports.createElement(Lu.div,Mn({},i,{ref:s}))}),C5="PopperContent",[Zxe,GTe]=vk(C5),[Qxe,Jxe]=vk(C5,{hasParent:!1,positionUpdateFns:new Set}),ewe=C.exports.forwardRef((e,t)=>{var n,r,i,o,a,s,l,u;const{__scopePopper:h,side:g="bottom",sideOffset:m=0,align:v="center",alignOffset:S=0,arrowPadding:w=0,collisionBoundary:k=[],collisionPadding:P=0,sticky:E="partial",hideWhenDetached:T=!1,avoidCollisions:M=!0,...R}=e,O=aW(C5,h),[D,B]=C.exports.useState(null),$=ja(t,wt=>B(wt)),[W,j]=C.exports.useState(null),te=jxe(W),V=(n=te?.width)!==null&&n!==void 0?n:0,J=(r=te?.height)!==null&&r!==void 0?r:0,re=g+(v!=="center"?"-"+v:""),ee=typeof P=="number"?P:{top:0,right:0,bottom:0,left:0,...P},K=Array.isArray(k)?k:[k],G=K.length>0,Z={padding:ee,boundary:K.filter(nwe),altBoundary:G},{reference:ce,floating:me,strategy:Re,x:xe,y:Se,placement:Me,middlewareData:_e,update:Je}=Uxe({strategy:"fixed",placement:re,whileElementsMounted:Hxe,middleware:[kxe({mainAxis:m+J,alignmentAxis:S}),M?Exe({mainAxis:!0,crossAxis:!1,limiter:E==="partial"?Pxe():void 0,...Z}):void 0,W?Gxe({element:W,padding:w}):void 0,M?wxe({...Z}):void 0,rwe({arrowWidth:V,arrowHeight:J}),T?Cxe({strategy:"referenceHidden"}):void 0].filter(twe)});o1(()=>{ce(O.anchor)},[ce,O.anchor]);const Xe=xe!==null&&Se!==null,[ft,_t]=sW(Me),gt=(i=_e.arrow)===null||i===void 0?void 0:i.x,dt=(o=_e.arrow)===null||o===void 0?void 0:o.y,mt=((a=_e.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Pe,et]=C.exports.useState();o1(()=>{D&&et(window.getComputedStyle(D).zIndex)},[D]);const{hasParent:Lt,positionUpdateFns:it}=Jxe(C5,h),St=!Lt;C.exports.useLayoutEffect(()=>{if(!St)return it.add(Je),()=>{it.delete(Je)}},[St,it,Je]),C.exports.useLayoutEffect(()=>{St&&Xe&&Array.from(it).reverse().forEach(wt=>requestAnimationFrame(wt))},[St,Xe,it]);const Yt={"data-side":ft,"data-align":_t,...R,ref:$,style:{...R.style,animation:Xe?void 0:"none",opacity:(s=_e.hide)!==null&&s!==void 0&&s.referenceHidden?0:void 0}};return C.exports.createElement("div",{ref:me,"data-radix-popper-content-wrapper":"",style:{position:Re,left:0,top:0,transform:Xe?`translate3d(${Math.round(xe)}px, ${Math.round(Se)}px, 0)`:"translate3d(0, -200%, 0)",minWidth:"max-content",zIndex:Pe,["--radix-popper-transform-origin"]:[(l=_e.transformOrigin)===null||l===void 0?void 0:l.x,(u=_e.transformOrigin)===null||u===void 0?void 0:u.y].join(" ")}},C.exports.createElement(Zxe,{scope:h,placedSide:ft,onArrowChange:j,arrowX:gt,arrowY:dt,shouldHideArrow:mt},St?C.exports.createElement(Qxe,{scope:h,hasParent:!0,positionUpdateFns:it},C.exports.createElement(Lu.div,Yt)):C.exports.createElement(Lu.div,Yt)))});function twe(e){return e!==void 0}function nwe(e){return e!==null}const rwe=e=>({name:"transformOrigin",options:e,fn(t){var n,r,i,o,a;const{placement:s,rects:l,middlewareData:u}=t,g=((n=u.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,m=g?0:e.arrowWidth,v=g?0:e.arrowHeight,[S,w]=sW(s),k={start:"0%",center:"50%",end:"100%"}[w],P=((r=(i=u.arrow)===null||i===void 0?void 0:i.x)!==null&&r!==void 0?r:0)+m/2,E=((o=(a=u.arrow)===null||a===void 0?void 0:a.y)!==null&&o!==void 0?o:0)+v/2;let T="",M="";return S==="bottom"?(T=g?k:`${P}px`,M=`${-v}px`):S==="top"?(T=g?k:`${P}px`,M=`${l.floating.height+v}px`):S==="right"?(T=`${-v}px`,M=g?k:`${E}px`):S==="left"&&(T=`${l.floating.width+v}px`,M=g?k:`${E}px`),{data:{x:T,y:M}}}});function sW(e){const[t,n="center"]=e.split("-");return[t,n]}const iwe=qxe,owe=Xxe,awe=ewe;function swe(e,t){return C.exports.useReducer((n,r)=>{const i=t[n][r];return i??n},e)}const lW=e=>{const{present:t,children:n}=e,r=lwe(t),i=typeof n=="function"?n({present:r.isPresent}):C.exports.Children.only(n),o=ja(r.ref,i.ref);return typeof n=="function"||r.isPresent?C.exports.cloneElement(i,{ref:o}):null};lW.displayName="Presence";function lwe(e){const[t,n]=C.exports.useState(),r=C.exports.useRef({}),i=C.exports.useRef(e),o=C.exports.useRef("none"),a=e?"mounted":"unmounted",[s,l]=swe(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return C.exports.useEffect(()=>{const u=o3(r.current);o.current=s==="mounted"?u:"none"},[s]),o1(()=>{const u=r.current,h=i.current;if(h!==e){const m=o.current,v=o3(u);e?l("MOUNT"):v==="none"||u?.display==="none"?l("UNMOUNT"):l(h&&m!==v?"ANIMATION_OUT":"UNMOUNT"),i.current=e}},[e,l]),o1(()=>{if(t){const u=g=>{const v=o3(r.current).includes(g.animationName);g.target===t&&v&&zl.exports.flushSync(()=>l("ANIMATION_END"))},h=g=>{g.target===t&&(o.current=o3(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",u),t.addEventListener("animationend",u),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",u),t.removeEventListener("animationend",u)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:C.exports.useCallback(u=>{u&&(r.current=getComputedStyle(u)),n(u)},[])}}function o3(e){return e?.animationName||"none"}function uwe({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,i]=cwe({defaultProp:t,onChange:n}),o=e!==void 0,a=o?e:r,s=Dl(n),l=C.exports.useCallback(u=>{if(o){const g=typeof u=="function"?u(e):u;g!==e&&s(g)}else i(u)},[o,e,i,s]);return[a,l]}function cwe({defaultProp:e,onChange:t}){const n=C.exports.useState(e),[r]=n,i=C.exports.useRef(r),o=Dl(t);return C.exports.useEffect(()=>{i.current!==r&&(o(r),i.current=r)},[r,i,o]),n}const $w="rovingFocusGroup.onEntryFocus",dwe={bubbles:!1,cancelable:!0},yk="RovingFocusGroup",[S7,uW,fwe]=GH(yk),[hwe,cW]=y2(yk,[fwe]),[pwe,gwe]=hwe(yk),mwe=C.exports.forwardRef((e,t)=>C.exports.createElement(S7.Provider,{scope:e.__scopeRovingFocusGroup},C.exports.createElement(S7.Slot,{scope:e.__scopeRovingFocusGroup},C.exports.createElement(vwe,Mn({},e,{ref:t}))))),vwe=C.exports.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:i=!1,dir:o,currentTabStopId:a,defaultCurrentTabStopId:s,onCurrentTabStopIdChange:l,onEntryFocus:u,...h}=e,g=C.exports.useRef(null),m=ja(t,g),v=jH(o),[S=null,w]=uwe({prop:a,defaultProp:s,onChange:l}),[k,P]=C.exports.useState(!1),E=Dl(u),T=uW(n),M=C.exports.useRef(!1),[R,O]=C.exports.useState(0);return C.exports.useEffect(()=>{const D=g.current;if(D)return D.addEventListener($w,E),()=>D.removeEventListener($w,E)},[E]),C.exports.createElement(pwe,{scope:n,orientation:r,dir:v,loop:i,currentTabStopId:S,onItemFocus:C.exports.useCallback(D=>w(D),[w]),onItemShiftTab:C.exports.useCallback(()=>P(!0),[]),onFocusableItemAdd:C.exports.useCallback(()=>O(D=>D+1),[]),onFocusableItemRemove:C.exports.useCallback(()=>O(D=>D-1),[])},C.exports.createElement(Lu.div,Mn({tabIndex:k||R===0?-1:0,"data-orientation":r},h,{ref:m,style:{outline:"none",...e.style},onMouseDown:Kn(e.onMouseDown,()=>{M.current=!0}),onFocus:Kn(e.onFocus,D=>{const B=!M.current;if(D.target===D.currentTarget&&B&&!k){const $=new CustomEvent($w,dwe);if(D.currentTarget.dispatchEvent($),!$.defaultPrevented){const W=T().filter(re=>re.focusable),j=W.find(re=>re.active),te=W.find(re=>re.id===S),J=[j,te,...W].filter(Boolean).map(re=>re.ref.current);dW(J)}}M.current=!1}),onBlur:Kn(e.onBlur,()=>P(!1))})))}),ywe="RovingFocusGroupItem",Swe=C.exports.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,...o}=e,a=fxe(),s=gwe(ywe,n),l=s.currentTabStopId===a,u=uW(n),{onFocusableItemAdd:h,onFocusableItemRemove:g}=s;return C.exports.useEffect(()=>{if(r)return h(),()=>g()},[r,h,g]),C.exports.createElement(S7.ItemSlot,{scope:n,id:a,focusable:r,active:i},C.exports.createElement(Lu.span,Mn({tabIndex:l?0:-1,"data-orientation":s.orientation},o,{ref:t,onMouseDown:Kn(e.onMouseDown,m=>{r?s.onItemFocus(a):m.preventDefault()}),onFocus:Kn(e.onFocus,()=>s.onItemFocus(a)),onKeyDown:Kn(e.onKeyDown,m=>{if(m.key==="Tab"&&m.shiftKey){s.onItemShiftTab();return}if(m.target!==m.currentTarget)return;const v=wwe(m,s.orientation,s.dir);if(v!==void 0){m.preventDefault();let w=u().filter(k=>k.focusable).map(k=>k.ref.current);if(v==="last")w.reverse();else if(v==="prev"||v==="next"){v==="prev"&&w.reverse();const k=w.indexOf(m.currentTarget);w=s.loop?Cwe(w,k+1):w.slice(k+1)}setTimeout(()=>dW(w))}})})))}),bwe={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function xwe(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function wwe(e,t,n){const r=xwe(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return bwe[r]}function dW(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Cwe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const _we=mwe,kwe=Swe,Ewe=["Enter"," "],Pwe=["ArrowDown","PageUp","Home"],fW=["ArrowUp","PageDown","End"],Twe=[...Pwe,...fW],cb="Menu",[b7,Lwe,Awe]=GH(cb),[Eh,hW]=y2(cb,[Awe,oW,cW]),Sk=oW(),pW=cW(),[Mwe,db]=Eh(cb),[Iwe,bk]=Eh(cb),Rwe=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:o,modal:a=!0}=e,s=Sk(t),[l,u]=C.exports.useState(null),h=C.exports.useRef(!1),g=Dl(o),m=jH(i);return C.exports.useEffect(()=>{const v=()=>{h.current=!0,document.addEventListener("pointerdown",S,{capture:!0,once:!0}),document.addEventListener("pointermove",S,{capture:!0,once:!0})},S=()=>h.current=!1;return document.addEventListener("keydown",v,{capture:!0}),()=>{document.removeEventListener("keydown",v,{capture:!0}),document.removeEventListener("pointerdown",S,{capture:!0}),document.removeEventListener("pointermove",S,{capture:!0})}},[]),C.exports.createElement(iwe,s,C.exports.createElement(Mwe,{scope:t,open:n,onOpenChange:g,content:l,onContentChange:u},C.exports.createElement(Iwe,{scope:t,onClose:C.exports.useCallback(()=>g(!1),[g]),isUsingKeyboardRef:h,dir:m,modal:a},r)))},Owe=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,i=Sk(n);return C.exports.createElement(owe,Mn({},i,r,{ref:t}))}),Dwe="MenuPortal",[jTe,Nwe]=Eh(Dwe,{forceMount:void 0}),ld="MenuContent",[Bwe,gW]=Eh(ld),zwe=C.exports.forwardRef((e,t)=>{const n=Nwe(ld,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,o=db(ld,e.__scopeMenu),a=bk(ld,e.__scopeMenu);return C.exports.createElement(b7.Provider,{scope:e.__scopeMenu},C.exports.createElement(lW,{present:r||o.open},C.exports.createElement(b7.Slot,{scope:e.__scopeMenu},a.modal?C.exports.createElement(Fwe,Mn({},i,{ref:t})):C.exports.createElement($we,Mn({},i,{ref:t})))))}),Fwe=C.exports.forwardRef((e,t)=>{const n=db(ld,e.__scopeMenu),r=C.exports.useRef(null),i=ja(t,r);return C.exports.useEffect(()=>{const o=r.current;if(o)return Hz(o)},[]),C.exports.createElement(mW,Mn({},e,{ref:i,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:Kn(e.onFocusOutside,o=>o.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)}))}),$we=C.exports.forwardRef((e,t)=>{const n=db(ld,e.__scopeMenu);return C.exports.createElement(mW,Mn({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)}))}),mW=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:i,onOpenAutoFocus:o,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:g,onDismiss:m,disableOutsideScroll:v,...S}=e,w=db(ld,n),k=bk(ld,n),P=Sk(n),E=pW(n),T=Lwe(n),[M,R]=C.exports.useState(null),O=C.exports.useRef(null),D=ja(t,O,w.onContentChange),B=C.exports.useRef(0),$=C.exports.useRef(""),W=C.exports.useRef(0),j=C.exports.useRef(null),te=C.exports.useRef("right"),V=C.exports.useRef(0),J=v?PF:C.exports.Fragment,re=v?{as:Uv,allowPinchZoom:!0}:void 0,ee=G=>{var Z,ce;const me=$.current+G,Re=T().filter(Xe=>!Xe.disabled),xe=document.activeElement,Se=(Z=Re.find(Xe=>Xe.ref.current===xe))===null||Z===void 0?void 0:Z.textValue,Me=Re.map(Xe=>Xe.textValue),_e=Kwe(Me,me,Se),Je=(ce=Re.find(Xe=>Xe.textValue===_e))===null||ce===void 0?void 0:ce.ref.current;(function Xe(ft){$.current=ft,window.clearTimeout(B.current),ft!==""&&(B.current=window.setTimeout(()=>Xe(""),1e3))})(me),Je&&setTimeout(()=>Je.focus())};C.exports.useEffect(()=>()=>window.clearTimeout(B.current),[]),nxe();const K=C.exports.useCallback(G=>{var Z,ce;return te.current===((Z=j.current)===null||Z===void 0?void 0:Z.side)&&Zwe(G,(ce=j.current)===null||ce===void 0?void 0:ce.area)},[]);return C.exports.createElement(Bwe,{scope:n,searchRef:$,onItemEnter:C.exports.useCallback(G=>{K(G)&&G.preventDefault()},[K]),onItemLeave:C.exports.useCallback(G=>{var Z;K(G)||((Z=O.current)===null||Z===void 0||Z.focus(),R(null))},[K]),onTriggerLeave:C.exports.useCallback(G=>{K(G)&&G.preventDefault()},[K]),pointerGraceTimerRef:W,onPointerGraceIntentChange:C.exports.useCallback(G=>{j.current=G},[])},C.exports.createElement(J,re,C.exports.createElement(rxe,{asChild:!0,trapped:i,onMountAutoFocus:Kn(o,G=>{var Z;G.preventDefault(),(Z=O.current)===null||Z===void 0||Z.focus()}),onUnmountAutoFocus:a},C.exports.createElement(Jbe,{asChild:!0,disableOutsidePointerEvents:s,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:g,onDismiss:m},C.exports.createElement(_we,Mn({asChild:!0},E,{dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:M,onCurrentTabStopIdChange:R,onEntryFocus:G=>{k.isUsingKeyboardRef.current||G.preventDefault()}}),C.exports.createElement(awe,Mn({role:"menu","aria-orientation":"vertical","data-state":jwe(w.open),"data-radix-menu-content":"",dir:k.dir},P,S,{ref:D,style:{outline:"none",...S.style},onKeyDown:Kn(S.onKeyDown,G=>{const ce=G.target.closest("[data-radix-menu-content]")===G.currentTarget,me=G.ctrlKey||G.altKey||G.metaKey,Re=G.key.length===1;ce&&(G.key==="Tab"&&G.preventDefault(),!me&&Re&&ee(G.key));const xe=O.current;if(G.target!==xe||!Twe.includes(G.key))return;G.preventDefault();const Me=T().filter(_e=>!_e.disabled).map(_e=>_e.ref.current);fW.includes(G.key)&&Me.reverse(),Ywe(Me)}),onBlur:Kn(e.onBlur,G=>{G.currentTarget.contains(G.target)||(window.clearTimeout(B.current),$.current="")}),onPointerMove:Kn(e.onPointerMove,w7(G=>{const Z=G.target,ce=V.current!==G.clientX;if(G.currentTarget.contains(Z)&&ce){const me=G.clientX>V.current?"right":"left";te.current=me,V.current=G.clientX}}))})))))))}),x7="MenuItem",DM="menu.itemSelect",Hwe=C.exports.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...i}=e,o=C.exports.useRef(null),a=bk(x7,e.__scopeMenu),s=gW(x7,e.__scopeMenu),l=ja(t,o),u=C.exports.useRef(!1),h=()=>{const g=o.current;if(!n&&g){const m=new CustomEvent(DM,{bubbles:!0,cancelable:!0});g.addEventListener(DM,v=>r?.(v),{once:!0}),UH(g,m),m.defaultPrevented?u.current=!1:a.onClose()}};return C.exports.createElement(Wwe,Mn({},i,{ref:l,disabled:n,onClick:Kn(e.onClick,h),onPointerDown:g=>{var m;(m=e.onPointerDown)===null||m===void 0||m.call(e,g),u.current=!0},onPointerUp:Kn(e.onPointerUp,g=>{var m;u.current||(m=g.currentTarget)===null||m===void 0||m.click()}),onKeyDown:Kn(e.onKeyDown,g=>{const m=s.searchRef.current!=="";n||m&&g.key===" "||Ewe.includes(g.key)&&(g.currentTarget.click(),g.preventDefault())})}))}),Wwe=C.exports.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:i,...o}=e,a=gW(x7,n),s=pW(n),l=C.exports.useRef(null),u=ja(t,l),[h,g]=C.exports.useState(!1),[m,v]=C.exports.useState("");return C.exports.useEffect(()=>{const S=l.current;if(S){var w;v(((w=S.textContent)!==null&&w!==void 0?w:"").trim())}},[o.children]),C.exports.createElement(b7.ItemSlot,{scope:n,disabled:r,textValue:i??m},C.exports.createElement(kwe,Mn({asChild:!0},s,{focusable:!r}),C.exports.createElement(Lu.div,Mn({role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0},o,{ref:u,onPointerMove:Kn(e.onPointerMove,w7(S=>{r?a.onItemLeave(S):(a.onItemEnter(S),S.defaultPrevented||S.currentTarget.focus())})),onPointerLeave:Kn(e.onPointerLeave,w7(S=>a.onItemLeave(S))),onFocus:Kn(e.onFocus,()=>g(!0)),onBlur:Kn(e.onBlur,()=>g(!1))}))))}),Vwe="MenuRadioGroup";Eh(Vwe,{value:void 0,onValueChange:()=>{}});const Uwe="MenuItemIndicator";Eh(Uwe,{checked:!1});const Gwe="MenuSub";Eh(Gwe);function jwe(e){return e?"open":"closed"}function Ywe(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function qwe(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function Kwe(e,t,n){const i=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,o=n?e.indexOf(n):-1;let a=qwe(e,Math.max(o,0));i.length===1&&(a=a.filter(u=>u!==n));const l=a.find(u=>u.toLowerCase().startsWith(i.toLowerCase()));return l!==n?l:void 0}function Xwe(e,t){const{x:n,y:r}=e;let i=!1;for(let o=0,a=t.length-1;or!=h>r&&n<(u-s)*(r-l)/(h-l)+s&&(i=!i)}return i}function Zwe(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return Xwe(n,t)}function w7(e){return t=>t.pointerType==="mouse"?e(t):void 0}const Qwe=Rwe,Jwe=Owe,e6e=zwe,t6e=Hwe,vW="ContextMenu",[n6e,YTe]=y2(vW,[hW]),fb=hW(),[r6e,yW]=n6e(vW),i6e=e=>{const{__scopeContextMenu:t,children:n,onOpenChange:r,dir:i,modal:o=!0}=e,[a,s]=C.exports.useState(!1),l=fb(t),u=Dl(r),h=C.exports.useCallback(g=>{s(g),u(g)},[u]);return C.exports.createElement(r6e,{scope:t,open:a,onOpenChange:h,modal:o},C.exports.createElement(Qwe,Mn({},l,{dir:i,open:a,onOpenChange:h,modal:o}),n))},o6e="ContextMenuTrigger",a6e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=yW(o6e,n),o=fb(n),a=C.exports.useRef({x:0,y:0}),s=C.exports.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),l=C.exports.useRef(0),u=C.exports.useCallback(()=>window.clearTimeout(l.current),[]),h=g=>{a.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return C.exports.useEffect(()=>u,[u]),C.exports.createElement(C.exports.Fragment,null,C.exports.createElement(Jwe,Mn({},o,{virtualRef:s})),C.exports.createElement(Lu.span,Mn({"data-state":i.open?"open":"closed"},r,{ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:Kn(e.onContextMenu,g=>{u(),h(g),g.preventDefault()}),onPointerDown:Kn(e.onPointerDown,a3(g=>{u(),l.current=window.setTimeout(()=>h(g),700)})),onPointerMove:Kn(e.onPointerMove,a3(u)),onPointerCancel:Kn(e.onPointerCancel,a3(u)),onPointerUp:Kn(e.onPointerUp,a3(u))})))}),s6e="ContextMenuContent",l6e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=yW(s6e,n),o=fb(n),a=C.exports.useRef(!1);return C.exports.createElement(e6e,Mn({},o,r,{ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:s=>{var l;(l=e.onCloseAutoFocus)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&a.current&&s.preventDefault(),a.current=!1},onInteractOutside:s=>{var l;(l=e.onInteractOutside)===null||l===void 0||l.call(e,s),!s.defaultPrevented&&!i.modal&&(a.current=!0)},style:{...e.style,["--radix-context-menu-content-transform-origin"]:"var(--radix-popper-transform-origin)"}}))}),u6e=C.exports.forwardRef((e,t)=>{const{__scopeContextMenu:n,...r}=e,i=fb(n);return C.exports.createElement(t6e,Mn({},i,r,{ref:t}))});function a3(e){return t=>t.pointerType!=="mouse"?e(t):void 0}const c6e=i6e,d6e=a6e,f6e=l6e,Mc=u6e,h6e=lt([e=>e.gallery,e=>e.options,Ka,_r],(e,t,n,r)=>{const{categories:i,currentCategory:o,currentImageUuid:a,shouldPinGallery:s,shouldShowGallery:l,galleryScrollPosition:u,galleryImageMinimumWidth:h,galleryImageObjectFit:g,shouldHoldGalleryOpen:m,shouldAutoSwitchToNewImages:v,galleryWidth:S,shouldUseSingleGalleryColumn:w}=e,{isLightBoxOpen:k}=t;return{currentImageUuid:a,shouldPinGallery:s,shouldShowGallery:l,galleryScrollPosition:u,galleryImageMinimumWidth:h,galleryImageObjectFit:g,galleryGridTemplateColumns:w?"auto":`repeat(auto-fill, minmax(${h}px, auto))`,activeTabName:r,shouldHoldGalleryOpen:m,shouldAutoSwitchToNewImages:v,images:i[o].images,areMoreImagesAvailable:i[o].areMoreImagesAvailable,currentCategory:o,galleryWidth:S,isLightBoxOpen:k,isStaging:n,shouldEnableResize:!(k||r==="unifiedCanvas"&&s),shouldUseSingleGalleryColumn:w}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),p6e=lt([e=>e.options,e=>e.gallery,e=>e.system,_r],(e,t,n,r)=>({mayDeleteImage:n.isConnected&&!n.isProcessing,galleryImageObjectFit:t.galleryImageObjectFit,galleryImageMinimumWidth:t.galleryImageMinimumWidth,shouldUseSingleGalleryColumn:t.shouldUseSingleGalleryColumn,activeTabName:r,isLightBoxOpen:e.isLightBoxOpen}),{memoizeOptions:{resultEqualityCheck:We.isEqual}}),g6e=e=>e.gallery,m6e=(e,t)=>e.image.uuid===t.image.uuid&&e.isSelected===t.isSelected,v6e=C.exports.memo(e=>{const t=qe(),{activeTabName:n,galleryImageObjectFit:r,galleryImageMinimumWidth:i,mayDeleteImage:o,isLightBoxOpen:a,shouldUseSingleGalleryColumn:s}=Le(p6e),{image:l,isSelected:u}=e,{url:h,thumbnail:g,uuid:m,metadata:v}=l,[S,w]=C.exports.useState(!1),k=m2(),P=()=>w(!0),E=()=>w(!1),T=()=>{l.metadata&&t(Cb(l.metadata.image.prompt)),k({title:"Prompt Set",status:"success",duration:2500,isClosable:!0})},M=()=>{l.metadata&&t(w2(l.metadata.image.seed)),k({title:"Seed Set",status:"success",duration:2500,isClosable:!0})},R=()=>{a&&t(bu(!1)),t(P1(l)),n!=="img2img"&&t(ko("img2img")),k({title:"Sent to Image To Image",status:"success",duration:2500,isClosable:!0})},O=()=>{a&&t(bu(!1)),t(ab(l)),t(ck()),n!=="unifiedCanvas"&&t(ko("unifiedCanvas")),k({title:"Sent to Unified Canvas",status:"success",duration:2500,isClosable:!0})},D=()=>{v&&t(Hke(v)),k({title:"Parameters Set",status:"success",duration:2500,isClosable:!0})},B=async()=>{if(v?.image?.init_image_path&&(await fetch(v.image.init_image_path)).ok){t(ko("img2img")),t(Fke(v)),k({title:"Initial Image Set",status:"success",duration:2500,isClosable:!0});return}k({title:"Initial Image Not Set",description:"Could not load initial image.",status:"error",duration:2500,isClosable:!0})},$=()=>t(hM(l)),W=te=>{te.dataTransfer.setData("invokeai/imageUuid",m),te.dataTransfer.effectAllowed="move"},j=()=>{t(bu(!0)),t(hM(l))};return Q(c6e,{onOpenChange:te=>{t(BH(te))},children:[b(d6e,{children:Q(xh,{position:"relative",className:"hoverable-image",onMouseOver:P,onMouseOut:E,userSelect:"none",draggable:!0,onDragStart:W,children:[b(PS,{className:"hoverable-image-image",objectFit:s?"contain":r,rounded:"md",src:g||h,loading:"lazy"}),b("div",{className:"hoverable-image-content",onClick:$,children:u&&b(Sa,{width:"50%",height:"50%",as:rk,className:"hoverable-image-check"})}),S&&i>=64&&b("div",{className:"hoverable-image-delete-button",children:b(pi,{label:"Delete image",hasArrow:!0,children:b(f7,{image:l,children:b(Va,{"aria-label":"Delete image",icon:b(J5e,{}),size:"xs",variant:"imageHoverIconButton",fontSize:14,isDisabled:!o})})})})]},m)}),Q(f6e,{className:"hoverable-image-context-menu",sticky:"always",onInteractOutside:te=>{te.detail.originalEvent.preventDefault()},children:[b(Mc,{onClickCapture:j,children:"Open In Viewer"}),b(Mc,{onClickCapture:T,disabled:l?.metadata?.image?.prompt===void 0,children:"Use Prompt"}),b(Mc,{onClickCapture:M,disabled:l?.metadata?.image?.seed===void 0,children:"Use Seed"}),b(Mc,{onClickCapture:D,disabled:!["txt2img","img2img"].includes(l?.metadata?.image?.type),children:"Use All Parameters"}),b(pi,{label:"Load initial image used for this generation",children:b(Mc,{onClickCapture:B,disabled:l?.metadata?.image?.type!=="img2img",children:"Use Initial Image"})}),b(Mc,{onClickCapture:R,children:"Send to Image To Image"}),b(Mc,{onClickCapture:O,children:"Send to Unified Canvas"}),b(f7,{image:l,children:b(Mc,{"data-warning":!0,children:"Delete Image"})})]})]})},m6e),ia=e=>{const{label:t,styleClass:n,...r}=e;return b(XB,{className:`invokeai__checkbox ${n}`,...r,children:t})},s3=320,NM=40,y6e={txt2img:{galleryMinWidth:200,galleryMaxWidth:500},img2img:{galleryMinWidth:200,galleryMaxWidth:500},unifiedCanvas:{galleryMinWidth:200,galleryMaxWidth:200},nodes:{galleryMinWidth:200,galleryMaxWidth:500},postprocess:{galleryMinWidth:200,galleryMaxWidth:500}},BM=400;function SW(){const e=qe(),{images:t,currentCategory:n,currentImageUuid:r,shouldPinGallery:i,shouldShowGallery:o,galleryScrollPosition:a,galleryImageMinimumWidth:s,galleryGridTemplateColumns:l,activeTabName:u,galleryImageObjectFit:h,shouldHoldGalleryOpen:g,shouldAutoSwitchToNewImages:m,areMoreImagesAvailable:v,galleryWidth:S,isLightBoxOpen:w,isStaging:k,shouldEnableResize:P,shouldUseSingleGalleryColumn:E}=Le(h6e),{galleryMinWidth:T,galleryMaxWidth:M}=w?{galleryMinWidth:BM,galleryMaxWidth:BM}:y6e[u],[R,O]=C.exports.useState(S>=s3),[D,B]=C.exports.useState(!1),[$,W]=C.exports.useState(0),j=C.exports.useRef(null),te=C.exports.useRef(null),V=C.exports.useRef(null);C.exports.useEffect(()=>{S>=s3&&O(!1)},[S]);const J=()=>{e(Sbe(!i)),e(Wi(!0))},re=()=>{o?K():ee()},ee=()=>{e(sd(!0)),i&&e(Wi(!0))},K=C.exports.useCallback(()=>{e(sd(!1)),e(BH(!1)),e(bbe(te.current?te.current.scrollTop:0)),setTimeout(()=>i&&e(Wi(!0)),400)},[e,i]),G=()=>{e(u7(n))},Z=xe=>{e(Jg(xe))},ce=()=>{g||(V.current=window.setTimeout(()=>K(),500))},me=()=>{V.current&&window.clearTimeout(V.current)};st("g",()=>{re()},[o,i]),st("left",()=>{e(pk())},{enabled:!k||u!=="unifiedCanvas"},[k]),st("right",()=>{e(hk())},{enabled:!k||u!=="unifiedCanvas"},[k]),st("shift+g",()=>{J()},[i]),st("esc",()=>{e(sd(!1))},{enabled:()=>!i,preventDefault:!0},[i]);const Re=32;return st("shift+up",()=>{if(s<256){const xe=We.clamp(s+Re,32,256);e(Jg(xe))}},[s]),st("shift+down",()=>{if(s>32){const xe=We.clamp(s-Re,32,256);e(Jg(xe))}},[s]),C.exports.useEffect(()=>{!te.current||(te.current.scrollTop=a)},[a,o]),C.exports.useEffect(()=>{function xe(Se){!i&&j.current&&!j.current.contains(Se.target)&&K()}return document.addEventListener("mousedown",xe),()=>{document.removeEventListener("mousedown",xe)}},[K,i]),b(_H,{nodeRef:j,in:o||g,unmountOnExit:!0,timeout:200,classNames:"image-gallery-wrapper",children:Q("div",{className:"image-gallery-wrapper",style:{zIndex:i?1:100},"data-pinned":i,ref:j,onMouseLeave:i?void 0:ce,onMouseEnter:i?void 0:me,onMouseOver:i?void 0:me,children:[Q(WH,{minWidth:T,maxWidth:i?M:window.innerWidth,className:"image-gallery-popup",handleStyles:{left:{width:"15px"}},enable:{left:P},size:{width:S,height:i?"100%":"100vh"},onResizeStart:(xe,Se,Me)=>{W(Me.clientHeight),Me.style.height=`${Me.clientHeight}px`,i&&(Me.style.position="fixed",Me.style.right="1rem",B(!0))},onResizeStop:(xe,Se,Me,_e)=>{const Je=i?We.clamp(Number(S)+_e.width,T,Number(M)):Number(S)+_e.width;e(Cbe(Je)),Me.removeAttribute("data-resize-alert"),i&&(Me.style.position="relative",Me.style.removeProperty("right"),Me.style.setProperty("height",i?"100%":"100vh"),B(!1),e(Wi(!0)))},onResize:(xe,Se,Me,_e)=>{const Je=We.clamp(Number(S)+_e.width,T,Number(i?M:.95*window.innerWidth));Je>=s3&&!R?O(!0):JeJe-NM&&e(Jg(Je-NM)),i&&(Je>=M?Me.setAttribute("data-resize-alert","true"):Me.removeAttribute("data-resize-alert")),Me.style.height=`${$}px`},children:[Q("div",{className:"image-gallery-header",children:[b(Lo,{size:"sm",isAttached:!0,variant:"solid",className:"image-gallery-category-btn-group",children:R?Q(An,{children:[b(oa,{size:"sm","data-selected":n==="result",onClick:()=>e(e3("result")),children:"Generations"}),b(oa,{size:"sm","data-selected":n==="user",onClick:()=>e(e3("user")),children:"Uploads"})]}):Q(An,{children:[b(pt,{"aria-label":"Show Generations",tooltip:"Show Generations","data-selected":n==="result",icon:b($5e,{}),onClick:()=>e(e3("result"))}),b(pt,{"aria-label":"Show Uploads",tooltip:"Show Uploads","data-selected":n==="user",icon:b(tSe,{}),onClick:()=>e(e3("user"))})]})}),Q("div",{className:"image-gallery-header-right-icons",children:[b(ad,{isLazy:!0,trigger:"hover",placement:"left",triggerComponent:b(pt,{size:"sm","aria-label":"Gallery Settings",icon:b(ok,{}),className:"image-gallery-icon-btn",cursor:"pointer"}),children:Q("div",{className:"image-gallery-settings-popover",children:[Q("div",{children:[b(la,{value:s,onChange:Z,min:32,max:256,hideTooltip:!0,label:"Image Size"}),b(pt,{size:"sm","aria-label":"Reset",tooltip:"Reset Size",onClick:()=>e(Jg(64)),icon:b(q_,{}),"data-selected":i,styleClass:"image-gallery-icon-btn"})]}),b("div",{children:b(ia,{label:"Maintain Aspect Ratio",isChecked:h==="contain",onChange:()=>e(xbe(h==="contain"?"cover":"contain"))})}),b("div",{children:b(ia,{label:"Auto-Switch to New Images",isChecked:m,onChange:xe=>e(wbe(xe.target.checked))})}),b("div",{children:b(ia,{label:"Single Column Layout",isChecked:E,onChange:xe=>e(_be(xe.target.checked))})})]})}),b(pt,{size:"sm",className:"image-gallery-icon-btn","aria-label":"Pin Gallery",tooltip:"Pin Gallery (Shift+G)",onClick:J,icon:i?b(bH,{}):b(xH,{})})]})]}),b("div",{className:"image-gallery-container",ref:te,children:t.length||v?Q(An,{children:[b("div",{className:"image-gallery",style:{gridTemplateColumns:l},children:t.map(xe=>{const{uuid:Se}=xe;return b(v6e,{image:xe,isSelected:r===Se},Se)})}),b(Wa,{onClick:G,isDisabled:!v,className:"image-gallery-load-more-btn",children:v?"Load More":"All Images Loaded"})]}):Q("div",{className:"image-gallery-container-placeholder",children:[b(sH,{}),b("p",{children:"No Images In Gallery"})]})})]}),D&&b("div",{style:{width:S+"px",height:"100%"}})]})})}const S6e=lt(g6e,e=>({resultImages:e.categories.result.images,userImages:e.categories.user.images})),b6e=()=>{const{resultImages:e,userImages:t}=Le(S6e);return n=>{const r=e.find(o=>o.uuid===n);if(r)return r;const i=t.find(o=>o.uuid===n);if(i)return i}},x6e=lt([e=>e.options,_r],(e,t)=>{const{showDualDisplay:n,shouldPinOptionsPanel:r,isLightBoxOpen:i}=e;return{showDualDisplay:n,shouldPinOptionsPanel:r,isLightBoxOpen:i,shouldShowDualDisplayButton:["inpainting"].includes(t),activeTabName:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),xk=e=>{const t=qe(),{optionsPanel:n,children:r,styleClass:i}=e,{activeTabName:o,showDualDisplay:a,isLightBoxOpen:s,shouldShowDualDisplayButton:l}=Le(x6e),u=b6e(),h=()=>{t(Qke(!a)),t(Wi(!0))},g=m=>{const v=m.dataTransfer.getData("invokeai/imageUuid"),S=u(v);!S||(o==="img2img"?t(P1(S)):o==="unifiedCanvas"&&t(ab(S)))};return b("div",{className:i?`workarea-wrapper ${i}`:"workarea-wrapper",children:Q("div",{className:"workarea-main",children:[n,Q("div",{className:"workarea-children-wrapper",onDrop:g,children:[r,l&&b(pi,{label:"Toggle Split View",children:b("div",{className:"workarea-split-button","data-selected":a,onClick:h,children:b(Rbe,{})})})]}),!s&&b(SW,{})]})})};function w6e(){return b(xk,{optionsPanel:b(fbe,{}),children:b(Ibe,{})})}function C6e(){const e={seed:{header:"Seed",feature:Hi.SEED,content:b(K_,{})},variations:{header:"Variations",feature:Hi.VARIATIONS,content:b(Q_,{}),additionalHeaderComponents:b(Z_,{})},face_restore:{header:"Face Restoration",feature:Hi.FACE_CORRECTION,content:b(Y_,{}),additionalHeaderComponents:b(Z$,{})},upscale:{header:"Upscaling",feature:Hi.UPSCALE,content:b(X_,{}),additionalHeaderComponents:b(rH,{})},other:{header:"Other Options",feature:Hi.OTHER,content:b(tH,{})}};return Q(dk,{children:[b(lk,{}),b(sk,{}),b(tk,{}),b(nk,{accordionInfo:e})]})}const _6e=()=>b("div",{className:"workarea-single-view",children:b("div",{className:"text-to-image-area",children:b(HH,{})})});function k6e(){return b(xk,{optionsPanel:b(C6e,{}),children:b(_6e,{})})}var C7=function(e,t){return C7=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i])},C7(e,t)};function E6e(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");C7(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Al=function(){return Al=Object.assign||function(t){for(var n,r=1,i=arguments.length;r=n?(r(o),e.animation=null):e.animation&&(r(u),requestAnimationFrame(e.animation))},requestAnimationFrame(e.animation)}}function Ld(e,t,n,r){var i=W6e(t);if(!(!e.mounted||!i)){var o=e.setTransformState,a=e.transformState,s=a.scale,l=a.positionX,u=a.positionY,h=t.scale-s,g=t.positionX-l,m=t.positionY-u;n===0?o(t.scale,t.positionX,t.positionY):wW(e,r,n,function(v){var S=s+h*v,w=l+g*v,k=u+m*v;o(S,w,k)})}}function W6e(e){var t=e.scale,n=e.positionX,r=e.positionY;return!(isNaN(t)||isNaN(n)||isNaN(r))}function V6e(e,t,n){var r=e.offsetWidth,i=e.offsetHeight,o=t.offsetWidth,a=t.offsetHeight,s=o*n,l=a*n,u=r-s,h=i-l;return{wrapperWidth:r,wrapperHeight:i,newContentWidth:s,newDiffWidth:u,newContentHeight:l,newDiffHeight:h}}var U6e=function(e,t,n,r,i,o,a){var s=e>t?n*(a?1:.5):0,l=r>i?o*(a?1:.5):0,u=e-t-s,h=s,g=r-i-l,m=l;return{minPositionX:u,maxPositionX:h,minPositionY:g,maxPositionY:m}},wk=function(e,t){var n=e.wrapperComponent,r=e.contentComponent,i=e.setup.centerZoomedOut;if(!n||!r)throw new Error("Components are not mounted");var o=V6e(n,r,t),a=o.wrapperWidth,s=o.wrapperHeight,l=o.newContentWidth,u=o.newDiffWidth,h=o.newContentHeight,g=o.newDiffHeight,m=U6e(a,l,u,s,h,g,Boolean(i));return m},a1=function(e,t){var n=wk(e,t);return e.bounds=n,n};function hb(e,t,n,r,i,o,a){var s=n.minPositionX,l=n.minPositionY,u=n.maxPositionX,h=n.maxPositionY,g=0,m=0;a&&(g=i,m=o);var v=_7(e,s-g,u+g,r),S=_7(t,l-m,h+m,r);return{x:v,y:S}}var _7=function(e,t,n,r){return r?en?Ba(n,2):Ba(e,2):Ba(e,2)};function pb(e,t,n,r,i,o){var a=e.transformState,s=a.scale,l=a.positionX,u=a.positionY,h=r-s;if(typeof t!="number"||typeof n!="number")return console.error("Mouse X and Y position were not provided!"),{x:l,y:u};var g=l-t*h,m=u-n*h,v=hb(g,m,i,o,0,0,null);return v}function b2(e,t,n,r,i){var o=i?r:0,a=t-o;return!isNaN(n)&&e>=n?n:!isNaN(t)&&e<=a?a:e}var FM=function(e,t){var n=e.setup.panning.excluded,r=e.isInitialized,i=e.wrapperComponent,o=t.target,a=i?.contains(o),s=r&&o&&a;if(!s)return!1;var l=gb(o,n);return!l},$M=function(e){var t=e.isInitialized,n=e.isPanning,r=e.setup,i=r.panning.disabled,o=t&&n&&!i;return!!o},G6e=function(e,t){var n=e.transformState,r=n.positionX,i=n.positionY;e.isPanning=!0;var o=t.clientX,a=t.clientY;e.startCoords={x:o-r,y:a-i}},j6e=function(e,t){var n=t.touches,r=e.transformState,i=r.positionX,o=r.positionY;e.isPanning=!0;var a=n.length===1;if(a){var s=n[0].clientX,l=n[0].clientY;e.startCoords={x:s-i,y:l-o}}};function Y6e(e){var t=e.transformState,n=t.positionX,r=t.positionY,i=t.scale,o=e.setup,a=o.disabled,s=o.limitToBounds,l=o.centerZoomedOut,u=e.wrapperComponent;if(!(a||!u||!e.bounds)){var h=e.bounds,g=h.maxPositionX,m=h.minPositionX,v=h.maxPositionY,S=h.minPositionY,w=n>g||nv||rg?u.offsetWidth:e.setup.minPositionX||0,E=r>v?u.offsetHeight:e.setup.minPositionY||0,T=pb(e,P,E,i,e.bounds,s||l),M=T.x,R=T.y;return{scale:i,positionX:w?M:n,positionY:k?R:r}}}function q6e(e,t,n,r,i){var o=e.setup.limitToBounds,a=e.wrapperComponent,s=e.bounds,l=e.transformState,u=l.scale,h=l.positionX,g=l.positionY,m=t!==h,v=n!==g,S=!m||!v;if(!(!a||S||!s)){var w=hb(t,n,s,o,r,i,a),k=w.x,P=w.y;e.setTransformState(u,k,P)}}var K6e=function(e,t,n){var r=e.startCoords,i=e.transformState,o=e.setup.panning,a=o.lockAxisX,s=o.lockAxisY,l=i.positionX,u=i.positionY;if(!r)return{x:l,y:u};var h=t-r.x,g=n-r.y,m=a?l:h,v=s?u:g;return{x:m,y:v}},_5=function(e,t){var n=e.setup,r=e.transformState,i=r.scale,o=n.minScale;return t>0&&i>=o?t:0},X6e=function(e){var t=e.mounted,n=e.setup,r=n.disabled,i=n.velocityAnimation,o=e.transformState.scale,a=i.disabled,s=!a||o>1||!r||t;return!!s},Z6e=function(e){var t=e.mounted,n=e.velocity,r=e.bounds,i=e.setup,o=i.disabled,a=i.velocityAnimation,s=e.transformState.scale,l=a.disabled,u=!l||s>1||!o||t;return!(!u||!n||!r)};function Q6e(e,t){var n=e.setup.velocityAnimation,r=n.equalToMove,i=n.animationTime,o=n.sensitivity;return r?i*t*o:i}function HM(e,t,n,r,i,o,a,s,l,u){if(i){if(t>a&&n>a){var h=a+(e-a)*u;return h>l?l:ho?o:h}}return r?t:_7(e,o,a,i)}function J6e(e,t){var n=1;return t?Math.min(n,e.offsetWidth/window.innerWidth):n}function eCe(e,t){var n=X6e(e);if(!!n){var r=e.lastMousePosition,i=e.velocityTime,o=e.setup,a=e.wrapperComponent,s=o.velocityAnimation.equalToMove,l=Date.now();if(r&&i&&a){var u=J6e(a,s),h=t.x-r.x,g=t.y-r.y,m=h/u,v=g/u,S=l-i,w=h*h+g*g,k=Math.sqrt(w)/S;e.velocity={velocityX:m,velocityY:v,total:k}}e.lastMousePosition=t,e.velocityTime=l}}function tCe(e){var t=e.velocity,n=e.bounds,r=e.setup,i=e.wrapperComponent,o=Z6e(e);if(!(!o||!t||!n||!i)){var a=t.velocityX,s=t.velocityY,l=t.total,u=n.maxPositionX,h=n.minPositionX,g=n.maxPositionY,m=n.minPositionY,v=r.limitToBounds,S=r.alignmentAnimation,w=r.zoomAnimation,k=r.panning,P=k.lockAxisY,E=k.lockAxisX,T=w.animationType,M=S.sizeX,R=S.sizeY,O=S.velocityAlignmentTime,D=O,B=Q6e(e,l),$=Math.max(B,D),W=_5(e,M),j=_5(e,R),te=W*i.offsetWidth/100,V=j*i.offsetHeight/100,J=u+te,re=h-te,ee=g+V,K=m-V,G=e.transformState,Z=new Date().getTime();wW(e,T,$,function(ce){var me=e.transformState,Re=me.scale,xe=me.positionX,Se=me.positionY,Me=new Date().getTime()-Z,_e=Me/D,Je=bW[S.animationType],Xe=1-Je(Math.min(1,_e)),ft=1-ce,_t=xe+a*ft,gt=Se+s*ft,dt=HM(_t,G.positionX,xe,E,v,h,u,re,J,Xe),mt=HM(gt,G.positionY,Se,P,v,m,g,K,ee,Xe);(xe!==_t||Se!==gt)&&e.setTransformState(Re,dt,mt)})}}function WM(e,t){var n=e.transformState.scale;Sl(e),a1(e,n),t.touches?j6e(e,t):G6e(e,t)}function VM(e,t,n){var r=e.startCoords,i=e.setup,o=i.alignmentAnimation,a=o.sizeX,s=o.sizeY;if(!!r){var l=K6e(e,t,n),u=l.x,h=l.y,g=_5(e,a),m=_5(e,s);eCe(e,{x:u,y:h}),q6e(e,u,h,g,m)}}function nCe(e){if(e.isPanning){var t=e.setup.panning.velocityDisabled,n=e.velocity,r=e.wrapperComponent,i=e.contentComponent;e.isPanning=!1,e.animate=!1,e.animation=null;var o=r?.getBoundingClientRect(),a=i?.getBoundingClientRect(),s=o?.width||0,l=o?.height||0,u=a?.width||0,h=a?.height||0,g=s.1&&g;m?tCe(e):CW(e)}}function CW(e){var t=e.transformState.scale,n=e.setup,r=n.minScale,i=n.alignmentAnimation,o=i.disabled,a=i.sizeX,s=i.sizeY,l=i.animationTime,u=i.animationType,h=o||t=a;if((r>=1||s)&&CW(e),!(m||!i||!e.mounted)){var v=t||i.offsetWidth/2,S=n||i.offsetHeight/2,w=Ck(e,a,v,S);w&&Ld(e,w,h,g)}}function Ck(e,t,n,r){var i=e.setup,o=i.minScale,a=i.maxScale,s=i.limitToBounds,l=b2(Ba(t,2),o,a,0,!1),u=a1(e,l),h=pb(e,n,r,l,u,s),g=h.x,m=h.y;return{scale:l,positionX:g,positionY:m}}var c0={previousScale:1,scale:1,positionX:0,positionY:0},rCe=Al(Al({},c0),{setComponents:function(){},contextInstance:null}),em={disabled:!1,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,centerZoomedOut:!1,centerOnInit:!1,wheel:{step:.2,disabled:!1,wheelDisabled:!1,touchPadDisabled:!1,activationKeys:[],excluded:[]},panning:{disabled:!1,velocityDisabled:!1,lockAxisX:!1,lockAxisY:!1,activationKeys:[],excluded:[]},pinch:{step:5,disabled:!1,excluded:[]},doubleClick:{disabled:!1,step:.7,mode:"zoomIn",animationType:"easeOut",animationTime:200,excluded:[]},zoomAnimation:{disabled:!1,size:.4,animationTime:200,animationType:"easeOut"},alignmentAnimation:{disabled:!1,sizeX:100,sizeY:100,animationTime:200,velocityAlignmentTime:400,animationType:"easeOut"},velocityAnimation:{disabled:!1,sensitivity:1,animationTime:400,animationType:"easeOut",equalToMove:!0}},kW=function(e){var t,n,r,i;return{previousScale:(t=e.initialScale)!==null&&t!==void 0?t:c0.scale,scale:(n=e.initialScale)!==null&&n!==void 0?n:c0.scale,positionX:(r=e.initialPositionX)!==null&&r!==void 0?r:c0.positionX,positionY:(i=e.initialPositionY)!==null&&i!==void 0?i:c0.positionY}},UM=function(e){var t=Al({},em);return Object.keys(e).forEach(function(n){var r=typeof e[n]<"u",i=typeof em[n]<"u";if(i&&r){var o=Object.prototype.toString.call(em[n]),a=o==="[object Object]",s=o==="[object Array]";a?t[n]=Al(Al({},em[n]),e[n]):s?t[n]=zM(zM([],em[n]),e[n]):t[n]=e[n]}}),t},EW=function(e,t,n){var r=e.transformState.scale,i=e.wrapperComponent,o=e.setup,a=o.maxScale,s=o.minScale,l=o.zoomAnimation,u=l.size;if(!i)throw new Error("Wrapper is not mounted");var h=r*Math.exp(t*n),g=b2(Ba(h,3),s,a,u,!1);return g};function PW(e,t,n,r,i){var o=e.wrapperComponent,a=e.transformState,s=a.scale,l=a.positionX,u=a.positionY;if(!o)return console.error("No WrapperComponent found");var h=o.offsetWidth,g=o.offsetHeight,m=(h/2-l)/s,v=(g/2-u)/s,S=EW(e,t,n),w=Ck(e,S,m,v);if(!w)return console.error("Error during zoom event. New transformation state was not calculated.");Ld(e,w,r,i)}function TW(e,t,n){var r=e.setup,i=e.wrapperComponent,o=r.limitToBounds,a=kW(e.props),s=e.transformState,l=s.scale,u=s.positionX,h=s.positionY;if(!!i){var g=wk(e,a.scale),m=hb(a.positionX,a.positionY,g,o,0,0,i),v={scale:a.scale,positionX:m.x,positionY:m.y};l===a.scale&&u===a.positionX&&h===a.positionY||Ld(e,v,t,n)}}function iCe(e,t,n){var r=e.wrapperComponent,i=e.setup,o=i.limitToBounds,a=i.minScale,s=i.maxScale;if(!r)return c0;var l=r.getBoundingClientRect(),u=oCe(t),h=u.x,g=u.y,m=t.offsetWidth,v=t.offsetHeight,S=r.offsetWidth/m,w=r.offsetHeight/v,k=b2(n||Math.min(S,w),a,s,0,!1),P=(l.width-m*k)/2,E=(l.height-v*k)/2,T=(l.left-h)*k+P,M=(l.top-g)*k+E,R=wk(e,k),O=hb(T,M,R,o,0,0,r),D=O.x,B=O.y;return{positionX:D,positionY:B,scale:k}}function oCe(e){for(var t=e,n=0,r=0;t;)n+=t.offsetLeft,r+=t.offsetTop,t=t.offsetParent;return{x:n,y:r}}function aCe(e){if(e){if(e?.offsetWidth===void 0||e?.offsetHeight===void 0)return console.error("Zoom node is not valid - it must contain offsetWidth and offsetHeight"),!1}else return console.error("Zoom node not found"),!1;return!0}var sCe=function(e){return function(t,n,r){t===void 0&&(t=.5),n===void 0&&(n=300),r===void 0&&(r="easeOut"),PW(e,1,t,n,r)}},lCe=function(e){return function(t,n,r){t===void 0&&(t=.5),n===void 0&&(n=300),r===void 0&&(r="easeOut"),PW(e,-1,t,n,r)}},uCe=function(e){return function(t,n,r,i,o){i===void 0&&(i=300),o===void 0&&(o="easeOut");var a=e.transformState,s=a.positionX,l=a.positionY,u=a.scale,h=e.wrapperComponent,g=e.contentComponent,m=e.setup.disabled;if(!(m||!h||!g)){var v={positionX:isNaN(t)?s:t,positionY:isNaN(n)?l:n,scale:isNaN(r)?u:r};Ld(e,v,i,o)}}},cCe=function(e){return function(t,n){t===void 0&&(t=200),n===void 0&&(n="easeOut"),TW(e,t,n)}},dCe=function(e){return function(t,n,r){n===void 0&&(n=200),r===void 0&&(r="easeOut");var i=e.transformState,o=e.wrapperComponent,a=e.contentComponent;if(o&&a){var s=LW(t||i.scale,o,a);Ld(e,s,n,r)}}},fCe=function(e){return function(t,n,r,i){r===void 0&&(r=600),i===void 0&&(i="easeOut"),Sl(e);var o=e.wrapperComponent,a=typeof t=="string"?document.getElementById(t):t;if(o&&aCe(a)&&a&&o.contains(a)){var s=iCe(e,a,n);Ld(e,s,r,i)}}},$r=function(e){return{instance:e,state:e.transformState,zoomIn:sCe(e),zoomOut:lCe(e),setTransform:uCe(e),resetTransform:cCe(e),centerView:dCe(e),zoomToElement:fCe(e)}},Hw=!1;function Ww(){try{var e={get passive(){return Hw=!0,!1}};return e}catch{return Hw=!1,Hw}}var gb=function(e,t){var n=e.tagName.toUpperCase(),r=t.find(function(o){return o.toUpperCase()===n});if(r)return!0;var i=t.find(function(o){return e.classList.contains(o)});return!!i},GM=function(e){e&&clearTimeout(e)},hCe=function(e,t,n){return"translate3d("+e+"px, "+t+"px, 0) scale("+n+")"},LW=function(e,t,n){var r=n.offsetWidth*e,i=n.offsetHeight*e,o=(t.offsetWidth-r)/2,a=(t.offsetHeight-i)/2;return{scale:e,positionX:o,positionY:a}},pCe=function(e,t){var n=e.setup.wheel,r=n.disabled,i=n.wheelDisabled,o=n.touchPadDisabled,a=n.excluded,s=e.isInitialized,l=e.isPanning,u=t.target,h=s&&!l&&!r&&u;if(!h||i&&!t.ctrlKey||o&&t.ctrlKey)return!1;var g=gb(u,a);return!g};function gCe(e,t){var n=e?e.deltaY<0?1:-1:0,r=P6e(t,n);return r}function AW(e,t,n){var r=t.getBoundingClientRect(),i=0,o=0;if("clientX"in e)i=(e.clientX-r.left)/n,o=(e.clientY-r.top)/n;else{var a=e.touches[0];i=(a.clientX-r.left)/n,o=(a.clientY-r.top)/n}return(isNaN(i)||isNaN(o))&&console.error("No mouse or touch offset found"),{x:i,y:o}}var mCe=function(e,t,n,r,i){var o=e.transformState.scale,a=e.wrapperComponent,s=e.setup,l=s.maxScale,u=s.minScale,h=s.zoomAnimation,g=h.size,m=h.disabled;if(!a)throw new Error("Wrapper is not mounted");var v=o+t*(o-o*n)*n;if(i)return v;var S=r?!1:!m,w=b2(Ba(v,3),u,l,g,S);return w},vCe=function(e,t){var n=e.previousWheelEvent,r=e.transformState.scale,i=e.setup,o=i.maxScale,a=i.minScale;return n?ra||Math.sign(n.deltaY)!==Math.sign(t.deltaY)||n.deltaY>0&&n.deltaYt.deltaY||Math.sign(n.deltaY)!==Math.sign(t.deltaY):!1},yCe=function(e,t){var n=e.setup.pinch,r=n.disabled,i=n.excluded,o=e.isInitialized,a=t.target,s=o&&!r&&a;if(!s)return!1;var l=gb(a,i);return!l},SCe=function(e){var t=e.setup.pinch.disabled,n=e.isInitialized,r=e.pinchStartDistance,i=n&&!t&&r;return!!i},bCe=function(e,t,n){var r=n.getBoundingClientRect(),i=e.touches,o=Ba(i[0].clientX-r.left,5),a=Ba(i[0].clientY-r.top,5),s=Ba(i[1].clientX-r.left,5),l=Ba(i[1].clientY-r.top,5);return{x:(o+s)/2/t,y:(a+l)/2/t}},MW=function(e){return Math.sqrt(Math.pow(e.touches[0].pageX-e.touches[1].pageX,2)+Math.pow(e.touches[0].pageY-e.touches[1].pageY,2))},xCe=function(e,t){var n=e.pinchStartScale,r=e.pinchStartDistance,i=e.setup,o=i.maxScale,a=i.minScale,s=i.zoomAnimation,l=s.size,u=s.disabled;if(!n||r===null||!t)throw new Error("Pinch touches distance was not provided");if(t<0)return e.transformState.scale;var h=t/r,g=h*n;return b2(Ba(g,2),a,o,l,!u)},wCe=160,CCe=100,_Ce=function(e,t){var n=e.props,r=n.onWheelStart,i=n.onZoomStart;e.wheelStopEventTimer||(Sl(e),di($r(e),t,r),di($r(e),t,i))},kCe=function(e,t){var n=e.props,r=n.onWheel,i=n.onZoom,o=e.contentComponent,a=e.setup,s=e.transformState,l=s.scale,u=a.limitToBounds,h=a.centerZoomedOut,g=a.zoomAnimation,m=a.wheel,v=g.size,S=g.disabled,w=m.step;if(!o)throw new Error("Component not mounted");t.preventDefault(),t.stopPropagation();var k=gCe(t,null),P=mCe(e,k,w,!t.ctrlKey);if(l!==P){var E=a1(e,P),T=AW(t,o,l),M=S||v===0||h,R=u&&M,O=pb(e,T.x,T.y,P,E,R),D=O.x,B=O.y;e.previousWheelEvent=t,e.setTransformState(P,D,B),di($r(e),t,r),di($r(e),t,i)}},ECe=function(e,t){var n=e.props,r=n.onWheelStop,i=n.onZoomStop;GM(e.wheelAnimationTimer),e.wheelAnimationTimer=setTimeout(function(){!e.mounted||(_W(e,t.x,t.y),e.wheelAnimationTimer=null)},CCe);var o=vCe(e,t);o&&(GM(e.wheelStopEventTimer),e.wheelStopEventTimer=setTimeout(function(){!e.mounted||(e.wheelStopEventTimer=null,di($r(e),t,r),di($r(e),t,i))},wCe))},PCe=function(e,t){var n=MW(t);e.pinchStartDistance=n,e.lastDistance=n,e.pinchStartScale=e.transformState.scale,e.isPanning=!1,Sl(e)},TCe=function(e,t){var n=e.contentComponent,r=e.pinchStartDistance,i=e.transformState.scale,o=e.setup,a=o.limitToBounds,s=o.centerZoomedOut,l=o.zoomAnimation,u=l.disabled,h=l.size;if(!(r===null||!n)){var g=bCe(t,i,n);if(!(!isFinite(g.x)||!isFinite(g.y))){var m=MW(t),v=xCe(e,m);if(v!==i){var S=a1(e,v),w=u||h===0||s,k=a&&w,P=pb(e,g.x,g.y,v,S,k),E=P.x,T=P.y;e.pinchMidpoint=g,e.lastDistance=m,e.setTransformState(v,E,T)}}}},LCe=function(e){var t=e.pinchMidpoint;e.velocity=null,e.lastDistance=null,e.pinchMidpoint=null,e.pinchStartScale=null,e.pinchStartDistance=null,_W(e,t?.x,t?.y)};function ACe(e,t){var n=e.setup.doubleClick,r=n.disabled,i=n.mode,o=n.step,a=n.animationTime,s=n.animationType;if(!r){if(i==="reset")return TW(e,a,s);var l=e.transformState.scale,u=e.contentComponent;if(!u)return console.error("No ContentComponent found");var h=i==="zoomOut"?-1:1,g=EW(e,h,o),m=AW(t,u,l),v=Ck(e,g,m.x,m.y);if(!v)return console.error("Error during zoom event. New transformation state was not calculated.");Ld(e,v,a,s)}}var MCe=function(e,t){var n=e.isInitialized,r=e.setup,i=e.wrapperComponent,o=r.doubleClick,a=o.disabled,s=o.excluded,l=t.target,u=i?.contains(l),h=n&&l&&u&&!a;if(!h)return!1;var g=gb(l,s);return!(g||!h)},IW=se.createContext(rCe),ICe=function(e){E6e(t,e);function t(){var n=e!==null&&e.apply(this,arguments)||this;return n.mounted=!0,n.transformState=kW(n.props),n.setup=UM(n.props),n.wrapperComponent=null,n.contentComponent=null,n.isInitialized=!1,n.bounds=null,n.previousWheelEvent=null,n.wheelStopEventTimer=null,n.wheelAnimationTimer=null,n.isPanning=!1,n.startCoords=null,n.lastTouch=null,n.distance=null,n.lastDistance=null,n.pinchStartDistance=null,n.pinchStartScale=null,n.pinchMidpoint=null,n.velocity=null,n.velocityTime=null,n.lastMousePosition=null,n.animate=!1,n.animation=null,n.maxBounds=null,n.pressedKeys={},n.handleInitializeWrapperEvents=function(r){var i=Ww();r.addEventListener("wheel",n.onWheelZoom,i),r.addEventListener("dblclick",n.onDoubleClick,i),r.addEventListener("touchstart",n.onTouchPanningStart,i),r.addEventListener("touchmove",n.onTouchPanning,i),r.addEventListener("touchend",n.onTouchPanningStop,i)},n.handleInitialize=function(){var r=n.setup.centerOnInit;n.applyTransformation(),n.forceUpdate(),r&&(setTimeout(function(){n.mounted&&n.setCenter()},50),setTimeout(function(){n.mounted&&n.setCenter()},100),setTimeout(function(){n.mounted&&n.setCenter()},200))},n.onWheelZoom=function(r){var i=n.setup.disabled;if(!i){var o=pCe(n,r);if(!!o){var a=n.isPressingKeys(n.setup.wheel.activationKeys);!a||(_Ce(n,r),kCe(n,r),ECe(n,r))}}},n.onPanningStart=function(r){var i=n.setup.disabled,o=n.props.onPanningStart;if(!i){var a=FM(n,r);if(!!a){var s=n.isPressingKeys(n.setup.panning.activationKeys);!s||(r.preventDefault(),r.stopPropagation(),Sl(n),WM(n,r),di($r(n),r,o))}}},n.onPanning=function(r){var i=n.setup.disabled,o=n.props.onPanning;if(!i){var a=$M(n);if(!!a){var s=n.isPressingKeys(n.setup.panning.activationKeys);!s||(r.preventDefault(),r.stopPropagation(),VM(n,r.clientX,r.clientY),di($r(n),r,o))}}},n.onPanningStop=function(r){var i=n.props.onPanningStop;n.isPanning&&(nCe(n),di($r(n),r,i))},n.onPinchStart=function(r){var i=n.setup.disabled,o=n.props,a=o.onPinchingStart,s=o.onZoomStart;if(!i){var l=yCe(n,r);!l||(PCe(n,r),Sl(n),di($r(n),r,a),di($r(n),r,s))}},n.onPinch=function(r){var i=n.setup.disabled,o=n.props,a=o.onPinching,s=o.onZoom;if(!i){var l=SCe(n);!l||(r.preventDefault(),r.stopPropagation(),TCe(n,r),di($r(n),r,a),di($r(n),r,s))}},n.onPinchStop=function(r){var i=n.props,o=i.onPinchingStop,a=i.onZoomStop;n.pinchStartScale&&(LCe(n),di($r(n),r,o),di($r(n),r,a))},n.onTouchPanningStart=function(r){var i=n.setup.disabled,o=n.props.onPanningStart;if(!i){var a=FM(n,r);if(!!a){var s=n.lastTouch&&+new Date-n.lastTouch<200;if(s&&r.touches.length===1)n.onDoubleClick(r);else{n.lastTouch=+new Date,Sl(n);var l=r.touches,u=l.length===1,h=l.length===2;u&&(Sl(n),WM(n,r),di($r(n),r,o)),h&&n.onPinchStart(r)}}}},n.onTouchPanning=function(r){var i=n.setup.disabled,o=n.props.onPanning;if(n.isPanning&&r.touches.length===1){if(i)return;var a=$M(n);if(!a)return;r.preventDefault(),r.stopPropagation();var s=r.touches[0];VM(n,s.clientX,s.clientY),di($r(n),r,o)}else r.touches.length>1&&n.onPinch(r)},n.onTouchPanningStop=function(r){n.onPanningStop(r),n.onPinchStop(r)},n.onDoubleClick=function(r){var i=n.setup.disabled;if(!i){var o=MCe(n,r);!o||ACe(n,r)}},n.clearPanning=function(r){n.isPanning&&n.onPanningStop(r)},n.setKeyPressed=function(r){n.pressedKeys[r.key]=!0},n.setKeyUnPressed=function(r){n.pressedKeys[r.key]=!1},n.isPressingKeys=function(r){return r.length?Boolean(r.find(function(i){return n.pressedKeys[i]})):!0},n.setComponents=function(r,i){n.wrapperComponent=r,n.contentComponent=i,a1(n,n.transformState.scale),n.handleInitializeWrapperEvents(r),n.handleInitialize(),n.handleRef(),n.isInitialized=!0,di($r(n),void 0,n.props.onInit)},n.setTransformState=function(r,i,o){!isNaN(r)&&!isNaN(i)&&!isNaN(o)?(r!==n.transformState.scale&&(n.transformState.previousScale=n.transformState.scale,n.transformState.scale=r),n.transformState.positionX=i,n.transformState.positionY=o,n.applyTransformation()):console.error("Detected NaN set state values")},n.setCenter=function(){if(n.wrapperComponent&&n.contentComponent){var r=LW(n.transformState.scale,n.wrapperComponent,n.contentComponent);n.setTransformState(r.scale,r.positionX,r.positionY)}},n.applyTransformation=function(){if(!(!n.mounted||!n.contentComponent)){var r=n.transformState,i=r.scale,o=r.positionX,a=r.positionY,s=hCe(o,a,i);n.contentComponent.style.transform=s,n.handleRef()}},n.handleRef=function(){n.props.setRef($r(n))},n}return t.prototype.componentDidMount=function(){var n=Ww();window.addEventListener("mousedown",this.onPanningStart,n),window.addEventListener("mousemove",this.onPanning,n),window.addEventListener("mouseup",this.onPanningStop,n),document.addEventListener("mouseleave",this.clearPanning,n),window.addEventListener("keyup",this.setKeyUnPressed,n),window.addEventListener("keydown",this.setKeyPressed,n),this.handleRef()},t.prototype.componentWillUnmount=function(){var n=Ww();window.removeEventListener("mousedown",this.onPanningStart,n),window.removeEventListener("mousemove",this.onPanning,n),window.removeEventListener("mouseup",this.onPanningStop,n),window.removeEventListener("keyup",this.setKeyUnPressed,n),window.removeEventListener("keydown",this.setKeyPressed,n),Sl(this)},t.prototype.componentDidUpdate=function(n){n!==this.props&&(a1(this,this.transformState.scale),this.setup=UM(this.props))},t.prototype.render=function(){var n=$r(this),r=this.props.children,i=typeof r=="function"?r(n):r;return b(IW.Provider,{value:Al(Al({},this.transformState),{setComponents:this.setComponents,contextInstance:this}),children:i})},t}(C.exports.Component),RCe=se.forwardRef(function(e,t){var n=C.exports.useState(null),r=n[0],i=n[1];return C.exports.useImperativeHandle(t,function(){return r},[r]),b(ICe,{...Al({},e,{setRef:i})})});function OCe(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css",n==="top"&&r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}var DCe=`.transform-component-module_wrapper__1_Fgj { + position: relative; + width: -moz-fit-content; + width: fit-content; + height: -moz-fit-content; + height: fit-content; + overflow: hidden; + -webkit-touch-callout: none; /* iOS Safari */ + -webkit-user-select: none; /* Safari */ + -khtml-user-select: none; /* Konqueror HTML */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* Internet Explorer/Edge */ + user-select: none; + margin: 0; + padding: 0; +} +.transform-component-module_content__2jYgh { + display: flex; + flex-wrap: wrap; + width: -moz-fit-content; + width: fit-content; + height: -moz-fit-content; + height: fit-content; + margin: 0; + padding: 0; + transform-origin: 0% 0%; +} +.transform-component-module_content__2jYgh img { + pointer-events: none; +} +`,jM={wrapper:"transform-component-module_wrapper__1_Fgj",content:"transform-component-module_content__2jYgh"};OCe(DCe);var NCe=function(e){var t=e.children,n=e.wrapperClass,r=n===void 0?"":n,i=e.contentClass,o=i===void 0?"":i,a=e.wrapperStyle,s=e.contentStyle,l=C.exports.useContext(IW).setComponents,u=C.exports.useRef(null),h=C.exports.useRef(null);return C.exports.useEffect(function(){var g=u.current,m=h.current;g!==null&&m!==null&&l&&l(g,m)},[]),b("div",{ref:u,className:"react-transform-wrapper "+jM.wrapper+" "+r,style:a,children:b("div",{ref:h,className:"react-transform-component "+jM.content+" "+o,style:s,children:t})})};function BCe({image:e,alt:t,ref:n,styleClass:r}){const[i,o]=C.exports.useState(0),[a,s]=C.exports.useState(!1),l=()=>{o(i===-3?0:i-1)},u=()=>{o(i===3?0:i+1)},h=()=>{s(!a)};return b(RCe,{centerOnInit:!0,minScale:.1,initialPositionX:50,initialPositionY:50,children:({zoomIn:g,zoomOut:m,resetTransform:v,centerView:S})=>Q(An,{children:[Q("div",{className:"lightbox-image-options",children:[b(pt,{icon:b(O4e,{}),"aria-label":"Zoom In",tooltip:"Zoom In",onClick:()=>g(),fontSize:20}),b(pt,{icon:b(D4e,{}),"aria-label":"Zoom Out",tooltip:"Zoom Out",onClick:()=>m(),fontSize:20}),b(pt,{icon:b(I4e,{}),"aria-label":"Rotate Left",tooltip:"Rotate Left",onClick:l,fontSize:20}),b(pt,{icon:b(R4e,{}),"aria-label":"Rotate Right",tooltip:"Rotate Right",onClick:u,fontSize:20}),b(pt,{icon:b(m5e,{}),"aria-label":"Flip Image",tooltip:"Flip Image",onClick:h,fontSize:20}),b(pt,{icon:b(q_,{}),"aria-label":"Reset",tooltip:"Reset",onClick:()=>{v(),o(0),s(!1)},fontSize:20})]}),b(NCe,{wrapperStyle:{width:"100%",height:"100%"},children:b("img",{style:{transform:`rotate(${i*90}deg) scaleX(${a?-1:1})`,width:"100%"},src:e,alt:t,ref:n,className:r||"",onLoad:()=>S(1,0,"easeOut")})})]})})}function zCe(){const e=qe(),t=Le(m=>m.options.isLightBoxOpen),{viewerImageToDisplay:n,shouldShowImageDetails:r,isOnFirstImage:i,isOnLastImage:o}=Le($H),[a,s]=C.exports.useState(!1),l=()=>{s(!0)},u=()=>{s(!1)},h=()=>{e(pk())},g=()=>{e(hk())};return st("Esc",()=>{t&&e(bu(!1))},[t]),Q("div",{className:"lightbox-container",children:[b(pt,{icon:b(M4e,{}),"aria-label":"Exit Viewer",className:"lightbox-close-btn",onClick:()=>{e(bu(!1))},fontSize:20}),Q("div",{className:"lightbox-display-container",children:[Q("div",{className:"lightbox-preview-wrapper",children:[b(OH,{}),!r&&Q("div",{className:"current-image-next-prev-buttons",children:[b("div",{className:"next-prev-button-trigger-area prev-button-trigger-area",onMouseOver:l,onMouseOut:u,children:a&&!i&&b(Va,{"aria-label":"Previous image",icon:b(lH,{className:"next-prev-button"}),variant:"unstyled",onClick:h})}),b("div",{className:"next-prev-button-trigger-area next-button-trigger-area",onMouseOver:l,onMouseOut:u,children:a&&!o&&b(Va,{"aria-label":"Next image",icon:b(uH,{className:"next-prev-button"}),variant:"unstyled",onClick:g})})]}),n&&Q(An,{children:[b(BCe,{image:n.url,styleClass:"lightbox-image"}),r&&b(FH,{image:n})]})]}),b(SW,{})]})]})}const FCe=lt([J_],e=>{const{seamSize:t,seamBlur:n,seamStrength:r,seamSteps:i}=e;return{seamSize:t,seamBlur:n,seamStrength:r,seamSteps:i}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),$Ce=()=>{const e=qe(),{seamSize:t,seamBlur:n,seamStrength:r,seamSteps:i}=Le(FCe);return Q(rn,{direction:"column",gap:"1rem",children:[b(la,{sliderMarkRightOffset:-6,label:"Seam Size",min:1,max:256,sliderNumberInputProps:{max:512},value:t,onChange:o=>{e(LI(o))},handleReset:()=>e(LI(96)),withInput:!0,withSliderMarks:!0,withReset:!0}),b(la,{sliderMarkRightOffset:-4,label:"Seam Blur",min:0,max:64,sliderNumberInputProps:{max:512},value:n,onChange:o=>{e(TI(o))},handleReset:()=>{e(TI(16))},withInput:!0,withSliderMarks:!0,withReset:!0}),b(la,{sliderMarkRightOffset:-2,label:"Seam Strength",min:.01,max:.99,step:.01,value:r,onChange:o=>{e(MI(o))},handleReset:()=>{e(MI(.7))},withInput:!0,withSliderMarks:!0,withReset:!0}),b(la,{sliderMarkRightOffset:-4,label:"Seam Steps",min:1,max:32,sliderNumberInputProps:{max:100},value:i,onChange:o=>{e(AI(o))},handleReset:()=>{e(AI(10))},withInput:!0,withSliderMarks:!0,withReset:!0})]})},HCe=lt(kn,e=>{const{boundingBoxDimensions:t,boundingBoxScaleMethod:n}=e;return{boundingBoxDimensions:t,boundingBoxScale:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),WCe=()=>{const e=qe(),{boundingBoxDimensions:t}=Le(HCe),n=a=>{e(bm({...t,width:Math.floor(a)}))},r=a=>{e(bm({...t,height:Math.floor(a)}))},i=()=>{e(bm({...t,width:Math.floor(512)}))},o=()=>{e(bm({...t,height:Math.floor(512)}))};return Q(rn,{direction:"column",gap:"1rem",children:[b(la,{label:"Width",min:64,max:1024,step:64,value:t.width,onChange:n,handleReset:i,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0}),b(la,{label:"Height",min:64,max:1024,step:64,value:t.height,onChange:r,handleReset:o,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0})]})},VCe=lt(kn,e=>{const{inpaintReplace:t,shouldUseInpaintReplace:n}=e;return{inpaintReplace:t,shouldUseInpaintReplace:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function UCe(){const{inpaintReplace:e,shouldUseInpaintReplace:t}=Le(VCe),n=qe();return Q(rn,{alignItems:"center",columnGap:"1rem",children:[b(la,{label:"Inpaint Replace",value:e,onChange:r=>{n(cM(r))},min:0,max:1,step:.05,isInteger:!1,isSliderDisabled:!t,withSliderMarks:!0,sliderMarkRightOffset:-2,withReset:!0,handleReset:()=>n(cM(1)),isResetDisabled:!t}),b(Ls,{isChecked:t,onChange:r=>n(abe(r.target.checked))})]})}const GCe=lt([J_,Pd,kn],(e,t,n)=>{const{tileSize:r,infillMethod:i}=e,{infill_methods:o}=t,{boundingBoxScaleMethod:a,scaledBoundingBoxDimensions:s}=n;return{boundingBoxScale:a,scaledBoundingBoxDimensions:s,tileSize:r,infillMethod:i,availableInfillMethods:o,isManual:a==="manual"}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),jCe=()=>{const e=qe(),{tileSize:t,infillMethod:n,availableInfillMethods:r,boundingBoxScale:i,isManual:o,scaledBoundingBoxDimensions:a}=Le(GCe),s=m=>{e(Jy({...a,width:Math.floor(m)}))},l=m=>{e(Jy({...a,height:Math.floor(m)}))},u=()=>{e(Jy({...a,width:Math.floor(512)}))},h=()=>{e(Jy({...a,height:Math.floor(512)}))};return Q(rn,{direction:"column",gap:"1rem",children:[b(Ol,{label:"Scale Before Processing",validValues:iSe,value:i,onChange:m=>{e(GSe(m.target.value))}}),b(la,{isInputDisabled:!o,isResetDisabled:!o,isSliderDisabled:!o,label:"Scaled W",min:64,max:1024,step:64,value:a.width,onChange:s,handleReset:u,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0}),b(la,{isInputDisabled:!o,isResetDisabled:!o,isSliderDisabled:!o,label:"Scaled H",min:64,max:1024,step:64,value:a.height,onChange:l,handleReset:h,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0}),b(UCe,{}),b(Ol,{label:"Infill Method",value:n,validValues:r,onChange:m=>e(DV(m.target.value))}),b(la,{isInputDisabled:n!=="tile",isResetDisabled:n!=="tile",isSliderDisabled:n!=="tile",sliderMarkRightOffset:-4,label:"Tile Size",min:16,max:64,sliderNumberInputProps:{max:256},value:t,onChange:m=>{e(II(m))},handleReset:()=>{e(II(32))},withInput:!0,withSliderMarks:!0,withReset:!0})]})};function YCe(){const e={boundingBox:{header:"Bounding Box",feature:Hi.BOUNDING_BOX,content:b(WCe,{})},seamCorrection:{header:"Seam Correction",feature:Hi.SEAM_CORRECTION,content:b($Ce,{})},infillAndScaling:{header:"Infill and Scaling",feature:Hi.INFILL_AND_SCALING,content:b(jCe,{})},seed:{header:"Seed",feature:Hi.SEED,content:b(K_,{})},variations:{header:"Variations",feature:Hi.VARIATIONS,content:b(Q_,{}),additionalHeaderComponents:b(Z_,{})}};return Q(dk,{children:[b(lk,{}),b(sk,{}),b(tk,{}),b(eH,{label:"Image To Image Strength",styleClass:"main-option-block image-to-image-strength-main-option"}),b(nk,{accordionInfo:e})]})}const qCe=lt(kn,gH,_r,(e,t,n)=>{const{doesCanvasNeedScaling:r,isCanvasInitialized:i}=e;return{doesCanvasNeedScaling:r,activeTabName:n,initialCanvasImage:t,isCanvasInitialized:i}}),KCe=()=>{const e=qe(),{doesCanvasNeedScaling:t,activeTabName:n,initialCanvasImage:r,isCanvasInitialized:i}=Le(qCe),o=C.exports.useRef(null);return C.exports.useLayoutEffect(()=>{window.setTimeout(()=>{if(!o.current)return;const{clientWidth:a,clientHeight:s}=o.current;e(jSe({width:a,height:s})),e(i?USe():ck()),e(Wi(!1))},0)},[e,r,t,n,i]),b("div",{ref:o,className:"inpainting-canvas-area",children:b(u2,{thickness:"2px",speed:"1s",size:"xl"})})};var XCe=Math.PI/180;function ZCe(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}const F0=typeof global<"u"?global:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},rt={_global:F0,version:"8.3.14",isBrowser:ZCe(),isUnminified:/param/.test(function(e){}.toString()),dblClickWindow:400,getAngle(e){return rt.angleDeg?e*XCe:e},enableTrace:!1,pointerEventsEnabled:!0,autoDrawEnabled:!0,hitOnDragEnabled:!1,capturePointerEventsEnabled:!1,_mouseListenClick:!1,_touchListenClick:!1,_pointerListenClick:!1,_mouseInDblClickWindow:!1,_touchInDblClickWindow:!1,_pointerInDblClickWindow:!1,_mouseDblClickPointerId:null,_touchDblClickPointerId:null,_pointerDblClickPointerId:null,pixelRatio:typeof window<"u"&&window.devicePixelRatio||1,dragDistance:3,angleDeg:!0,showWarnings:!0,dragButtons:[0,1],isDragging(){return rt.DD.isDragging},isDragReady(){return!!rt.DD.node},releaseCanvasOnDestroy:!0,document:F0.document,_injectGlobal(e){F0.Konva=e}},gr=e=>{rt[e.prototype.getClassName()]=e};rt._injectGlobal(rt);class aa{constructor(t=[1,0,0,1,0,0]){this.dirty=!1,this.m=t&&t.slice()||[1,0,0,1,0,0]}reset(){this.m[0]=1,this.m[1]=0,this.m[2]=0,this.m[3]=1,this.m[4]=0,this.m[5]=0}copy(){return new aa(this.m)}copyInto(t){t.m[0]=this.m[0],t.m[1]=this.m[1],t.m[2]=this.m[2],t.m[3]=this.m[3],t.m[4]=this.m[4],t.m[5]=this.m[5]}point(t){var n=this.m;return{x:n[0]*t.x+n[2]*t.y+n[4],y:n[1]*t.x+n[3]*t.y+n[5]}}translate(t,n){return this.m[4]+=this.m[0]*t+this.m[2]*n,this.m[5]+=this.m[1]*t+this.m[3]*n,this}scale(t,n){return this.m[0]*=t,this.m[1]*=t,this.m[2]*=n,this.m[3]*=n,this}rotate(t){var n=Math.cos(t),r=Math.sin(t),i=this.m[0]*n+this.m[2]*r,o=this.m[1]*n+this.m[3]*r,a=this.m[0]*-r+this.m[2]*n,s=this.m[1]*-r+this.m[3]*n;return this.m[0]=i,this.m[1]=o,this.m[2]=a,this.m[3]=s,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(t,n){var r=this.m[0]+this.m[2]*n,i=this.m[1]+this.m[3]*n,o=this.m[2]+this.m[0]*t,a=this.m[3]+this.m[1]*t;return this.m[0]=r,this.m[1]=i,this.m[2]=o,this.m[3]=a,this}multiply(t){var n=this.m[0]*t.m[0]+this.m[2]*t.m[1],r=this.m[1]*t.m[0]+this.m[3]*t.m[1],i=this.m[0]*t.m[2]+this.m[2]*t.m[3],o=this.m[1]*t.m[2]+this.m[3]*t.m[3],a=this.m[0]*t.m[4]+this.m[2]*t.m[5]+this.m[4],s=this.m[1]*t.m[4]+this.m[3]*t.m[5]+this.m[5];return this.m[0]=n,this.m[1]=r,this.m[2]=i,this.m[3]=o,this.m[4]=a,this.m[5]=s,this}invert(){var t=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),n=this.m[3]*t,r=-this.m[1]*t,i=-this.m[2]*t,o=this.m[0]*t,a=t*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),s=t*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=n,this.m[1]=r,this.m[2]=i,this.m[3]=o,this.m[4]=a,this.m[5]=s,this}getMatrix(){return this.m}decompose(){var t=this.m[0],n=this.m[1],r=this.m[2],i=this.m[3],o=this.m[4],a=this.m[5],s=t*i-n*r;let l={x:o,y:a,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(t!=0||n!=0){var u=Math.sqrt(t*t+n*n);l.rotation=n>0?Math.acos(t/u):-Math.acos(t/u),l.scaleX=u,l.scaleY=s/u,l.skewX=(t*r+n*i)/s,l.skewY=0}else if(r!=0||i!=0){var h=Math.sqrt(r*r+i*i);l.rotation=Math.PI/2-(i>0?Math.acos(-r/h):-Math.acos(r/h)),l.scaleX=s/h,l.scaleY=h,l.skewX=0,l.skewY=(t*r+n*i)/s}return l.rotation=de._getRotation(l.rotation),l}}var QCe="[object Array]",JCe="[object Number]",e7e="[object String]",t7e="[object Boolean]",n7e=Math.PI/180,r7e=180/Math.PI,Vw="#",i7e="",o7e="0",a7e="Konva warning: ",YM="Konva error: ",s7e="rgb(",Uw={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,132,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,255,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,203],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[119,128,144],slategrey:[119,128,144],snow:[255,255,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],transparent:[255,255,255,0],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,5]},l7e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,l3=[];const u7e=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(e){setTimeout(e,60)},de={_isElement(e){return!!(e&&e.nodeType==1)},_isFunction(e){return!!(e&&e.constructor&&e.call&&e.apply)},_isPlainObject(e){return!!e&&e.constructor===Object},_isArray(e){return Object.prototype.toString.call(e)===QCe},_isNumber(e){return Object.prototype.toString.call(e)===JCe&&!isNaN(e)&&isFinite(e)},_isString(e){return Object.prototype.toString.call(e)===e7e},_isBoolean(e){return Object.prototype.toString.call(e)===t7e},isObject(e){return e instanceof Object},isValidSelector(e){if(typeof e!="string")return!1;var t=e[0];return t==="#"||t==="."||t===t.toUpperCase()},_sign(e){return e===0||e>0?1:-1},requestAnimFrame(e){l3.push(e),l3.length===1&&u7e(function(){const t=l3;l3=[],t.forEach(function(n){n()})})},createCanvasElement(){var e=document.createElement("canvas");try{e.style=e.style||{}}catch{}return e},createImageElement(){return document.createElement("img")},_isInDocument(e){for(;e=e.parentNode;)if(e==document)return!0;return!1},_urlToImage(e,t){var n=de.createImageElement();n.onload=function(){t(n)},n.src=e},_rgbToHex(e,t,n){return((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)},_hexToRgb(e){e=e.replace(Vw,i7e);var t=parseInt(e,16);return{r:t>>16&255,g:t>>8&255,b:t&255}},getRandomColor(){for(var e=(Math.random()*16777215<<0).toString(16);e.length<6;)e=o7e+e;return Vw+e},getRGB(e){var t;return e in Uw?(t=Uw[e],{r:t[0],g:t[1],b:t[2]}):e[0]===Vw?this._hexToRgb(e.substring(1)):e.substr(0,4)===s7e?(t=l7e.exec(e.replace(/ /g,"")),{r:parseInt(t[1],10),g:parseInt(t[2],10),b:parseInt(t[3],10)}):{r:0,g:0,b:0}},colorToRGBA(e){return e=e||"black",de._namedColorToRBA(e)||de._hex3ColorToRGBA(e)||de._hex6ColorToRGBA(e)||de._rgbColorToRGBA(e)||de._rgbaColorToRGBA(e)||de._hslColorToRGBA(e)},_namedColorToRBA(e){var t=Uw[e.toLowerCase()];return t?{r:t[0],g:t[1],b:t[2],a:1}:null},_rgbColorToRGBA(e){if(e.indexOf("rgb(")===0){e=e.match(/rgb\(([^)]+)\)/)[1];var t=e.split(/ *, */).map(Number);return{r:t[0],g:t[1],b:t[2],a:1}}},_rgbaColorToRGBA(e){if(e.indexOf("rgba(")===0){e=e.match(/rgba\(([^)]+)\)/)[1];var t=e.split(/ *, */).map((n,r)=>n.slice(-1)==="%"?r===3?parseInt(n)/100:parseInt(n)/100*255:Number(n));return{r:t[0],g:t[1],b:t[2],a:t[3]}}},_hex6ColorToRGBA(e){if(e[0]==="#"&&e.length===7)return{r:parseInt(e.slice(1,3),16),g:parseInt(e.slice(3,5),16),b:parseInt(e.slice(5,7),16),a:1}},_hex3ColorToRGBA(e){if(e[0]==="#"&&e.length===4)return{r:parseInt(e[1]+e[1],16),g:parseInt(e[2]+e[2],16),b:parseInt(e[3]+e[3],16),a:1}},_hslColorToRGBA(e){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(e)){const[t,...n]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(e),r=Number(n[0])/360,i=Number(n[1])/100,o=Number(n[2])/100;let a,s,l;if(i===0)return l=o*255,{r:Math.round(l),g:Math.round(l),b:Math.round(l),a:1};o<.5?a=o*(1+i):a=o+i-o*i;const u=2*o-a,h=[0,0,0];for(let g=0;g<3;g++)s=r+1/3*-(g-1),s<0&&s++,s>1&&s--,6*s<1?l=u+(a-u)*6*s:2*s<1?l=a:3*s<2?l=u+(a-u)*(2/3-s)*6:l=u,h[g]=l*255;return{r:Math.round(h[0]),g:Math.round(h[1]),b:Math.round(h[2]),a:1}}},haveIntersection(e,t){return!(t.x>e.x+e.width||t.x+t.widthe.y+e.height||t.y+t.height1?(a=n,s=r,l=(n-i)*(n-i)+(r-o)*(r-o)):(a=e+h*(n-e),s=t+h*(r-t),l=(a-i)*(a-i)+(s-o)*(s-o))}return[a,s,l]},_getProjectionToLine(e,t,n){var r=de.cloneObject(e),i=Number.MAX_VALUE;return t.forEach(function(o,a){if(!(!n&&a===t.length-1)){var s=t[(a+1)%t.length],l=de._getProjectionToSegment(o.x,o.y,s.x,s.y,e.x,e.y),u=l[0],h=l[1],g=l[2];gt.length){var a=t;t=e,e=a}for(r=0;r{t.width=0,t.height=0})}};function Ad(e){return de._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||de._isBoolean(e)?e:Object.prototype.toString.call(e)}function RW(e){return e>255?255:e<0?0:Math.round(e)}function Fe(){if(rt.isUnminified)return function(e,t){return de._isNumber(e)||de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}function OW(e){if(rt.isUnminified)return function(t,n){let r=de._isNumber(t),i=de._isArray(t)&&t.length==e;return!r&&!i&&de.warn(Ad(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}function _k(){if(rt.isUnminified)return function(e,t){var n=de._isNumber(e),r=e==="auto";return n||r||de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}function k1(){if(rt.isUnminified)return function(e,t){return de._isString(e)||de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}function DW(){if(rt.isUnminified)return function(e,t){const n=de._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}function c7e(){if(rt.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(de._isArray(e)?e.forEach(function(r){de._isNumber(r)||de.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}function Is(){if(rt.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||de.warn(Ad(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}function d7e(e){if(rt.isUnminified)return function(t,n){return t==null||de.isObject(t)||de.warn(Ad(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}var tm="get",nm="set";const q={addGetterSetter(e,t,n,r,i){q.addGetter(e,t,n),q.addSetter(e,t,r,i),q.addOverloadedGetterSetter(e,t)},addGetter(e,t,n){var r=tm+de._capitalize(t);e.prototype[r]=e.prototype[r]||function(){var i=this.attrs[t];return i===void 0?n:i}},addSetter(e,t,n,r){var i=nm+de._capitalize(t);e.prototype[i]||q.overWriteSetter(e,t,n,r)},overWriteSetter(e,t,n,r){var i=nm+de._capitalize(t);e.prototype[i]=function(o){return n&&o!==void 0&&o!==null&&(o=n.call(this,o,t)),this._setAttr(t,o),r&&r.call(this),this}},addComponentsGetterSetter(e,t,n,r,i){var o=n.length,a=de._capitalize,s=tm+a(t),l=nm+a(t),u,h;e.prototype[s]=function(){var m={};for(u=0;u{this._setAttr(t+a(w),void 0)}),this._fireChangeEvent(t,v,m),i&&i.call(this),this},q.addOverloadedGetterSetter(e,t)},addOverloadedGetterSetter(e,t){var n=de._capitalize(t),r=nm+n,i=tm+n;e.prototype[t]=function(){return arguments.length?(this[r](arguments[0]),this):this[i]()}},addDeprecatedGetterSetter(e,t,n,r){de.error("Adding deprecated "+t);var i=tm+de._capitalize(t),o=t+" property is deprecated and will be removed soon. Look at Konva change log for more information.";e.prototype[i]=function(){de.error(o);var a=this.attrs[t];return a===void 0?n:a},q.addSetter(e,t,r,function(){de.error(o)}),q.addOverloadedGetterSetter(e,t)},backCompat(e,t){de.each(t,function(n,r){var i=e.prototype[r],o=tm+de._capitalize(n),a=nm+de._capitalize(n);function s(){i.apply(this,arguments),de.error('"'+n+'" method is deprecated and will be removed soon. Use ""'+r+'" instead.')}e.prototype[n]=s,e.prototype[o]=s,e.prototype[a]=s})},afterSetFilter(){this._filterUpToDate=!1}};function f7e(e){var t=[],n=e.length,r=de,i,o;for(i=0;itypeof h=="number"?Math.floor(h):h)),o+=h7e+u.join(qM)+p7e)):(o+=s.property,t||(o+=S7e+s.val)),o+=v7e;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=x7e&&n.shift()}reset(){var t=this.getCanvas().getPixelRatio();this.setTransform(1*t,0,0,1*t,0,0)}getCanvas(){return this.canvas}clear(t){var n=this.getCanvas();t?this.clearRect(t.x||0,t.y||0,t.width||0,t.height||0):this.clearRect(0,0,n.getWidth()/n.pixelRatio,n.getHeight()/n.pixelRatio)}_applyLineCap(t){var n=t.getLineCap();n&&this.setAttr("lineCap",n)}_applyOpacity(t){var n=t.getAbsoluteOpacity();n!==1&&this.setAttr("globalAlpha",n)}_applyLineJoin(t){var n=t.attrs.lineJoin;n&&this.setAttr("lineJoin",n)}setAttr(t,n){this._context[t]=n}arc(t,n,r,i,o,a){this._context.arc(t,n,r,i,o,a)}arcTo(t,n,r,i,o){this._context.arcTo(t,n,r,i,o)}beginPath(){this._context.beginPath()}bezierCurveTo(t,n,r,i,o,a){this._context.bezierCurveTo(t,n,r,i,o,a)}clearRect(t,n,r,i){this._context.clearRect(t,n,r,i)}clip(){this._context.clip()}closePath(){this._context.closePath()}createImageData(t,n){var r=arguments;if(r.length===2)return this._context.createImageData(t,n);if(r.length===1)return this._context.createImageData(t)}createLinearGradient(t,n,r,i){return this._context.createLinearGradient(t,n,r,i)}createPattern(t,n){return this._context.createPattern(t,n)}createRadialGradient(t,n,r,i,o,a){return this._context.createRadialGradient(t,n,r,i,o,a)}drawImage(t,n,r,i,o,a,s,l,u){var h=arguments,g=this._context;h.length===3?g.drawImage(t,n,r):h.length===5?g.drawImage(t,n,r,i,o):h.length===9&&g.drawImage(t,n,r,i,o,a,s,l,u)}ellipse(t,n,r,i,o,a,s,l){this._context.ellipse(t,n,r,i,o,a,s,l)}isPointInPath(t,n){return this._context.isPointInPath(t,n)}fill(t){t?this._context.fill(t):this._context.fill()}fillRect(t,n,r,i){this._context.fillRect(t,n,r,i)}strokeRect(t,n,r,i){this._context.strokeRect(t,n,r,i)}fillText(t,n,r,i){i?this._context.fillText(t,n,r,i):this._context.fillText(t,n,r)}measureText(t){return this._context.measureText(t)}getImageData(t,n,r,i){return this._context.getImageData(t,n,r,i)}lineTo(t,n){this._context.lineTo(t,n)}moveTo(t,n){this._context.moveTo(t,n)}rect(t,n,r,i){this._context.rect(t,n,r,i)}putImageData(t,n,r){this._context.putImageData(t,n,r)}quadraticCurveTo(t,n,r,i){this._context.quadraticCurveTo(t,n,r,i)}restore(){this._context.restore()}rotate(t){this._context.rotate(t)}save(){this._context.save()}scale(t,n){this._context.scale(t,n)}setLineDash(t){this._context.setLineDash?this._context.setLineDash(t):"mozDash"in this._context?this._context.mozDash=t:"webkitLineDash"in this._context&&(this._context.webkitLineDash=t)}getLineDash(){return this._context.getLineDash()}setTransform(t,n,r,i,o,a){this._context.setTransform(t,n,r,i,o,a)}stroke(t){t?this._context.stroke(t):this._context.stroke()}strokeText(t,n,r,i){this._context.strokeText(t,n,r,i)}transform(t,n,r,i,o,a){this._context.transform(t,n,r,i,o,a)}translate(t,n){this._context.translate(t,n)}_enableTrace(){var t=this,n=KM.length,r=this.setAttr,i,o,a=function(s){var l=t[s],u;t[s]=function(){return o=f7e(Array.prototype.slice.call(arguments,0)),u=l.apply(t,arguments),t._trace({method:s,args:o}),u}};for(i=0;i{t.dragStatus==="dragging"&&(e=!0)}),e},justDragged:!1,get node(){var e;return fn._dragElements.forEach(t=>{e=t.node}),e},_dragElements:new Map,_drag(e){const t=[];fn._dragElements.forEach((n,r)=>{const{node:i}=n,o=i.getStage();o.setPointersPositions(e),n.pointerId===void 0&&(n.pointerId=de._getFirstPointerId(e));const a=o._changedPointerPositions.find(u=>u.id===n.pointerId);if(!!a){if(n.dragStatus!=="dragging"){var s=i.dragDistance(),l=Math.max(Math.abs(a.x-n.startPointerPos.x),Math.abs(a.y-n.startPointerPos.y));if(l{n.fire("dragmove",{type:"dragmove",target:n,evt:e},!0)})},_endDragBefore(e){const t=[];fn._dragElements.forEach(n=>{const{node:r}=n,i=r.getStage();if(e&&i.setPointersPositions(e),!i._changedPointerPositions.find(s=>s.id===n.pointerId))return;(n.dragStatus==="dragging"||n.dragStatus==="stopped")&&(fn.justDragged=!0,rt._mouseListenClick=!1,rt._touchListenClick=!1,rt._pointerListenClick=!1,n.dragStatus="stopped");const a=n.node.getLayer()||n.node instanceof rt.Stage&&n.node;a&&t.indexOf(a)===-1&&t.push(a)}),t.forEach(n=>{n.draw()})},_endDragAfter(e){fn._dragElements.forEach((t,n)=>{t.dragStatus==="stopped"&&t.node.fire("dragend",{type:"dragend",target:t.node,evt:e},!0),t.dragStatus!=="dragging"&&fn._dragElements.delete(n)})}};rt.isBrowser&&(window.addEventListener("mouseup",fn._endDragBefore,!0),window.addEventListener("touchend",fn._endDragBefore,!0),window.addEventListener("mousemove",fn._drag),window.addEventListener("touchmove",fn._drag),window.addEventListener("mouseup",fn._endDragAfter,!1),window.addEventListener("touchend",fn._endDragAfter,!1));var n4="absoluteOpacity",c3="allEventListeners",du="absoluteTransform",XM="absoluteScale",_f="canvas",k7e="Change",E7e="children",P7e="konva",k7="listening",ZM="mouseenter",QM="mouseleave",JM="set",eI="Shape",r4=" ",tI="stage",Oc="transform",T7e="Stage",E7="visible",L7e=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(r4);let A7e=1;class $e{constructor(t){this._id=A7e++,this.eventListeners={},this.attrs={},this.index=0,this._allEventListeners=null,this.parent=null,this._cache=new Map,this._attachedDepsListeners=new Map,this._lastPos=null,this._batchingTransformChange=!1,this._needClearTransformCache=!1,this._filterUpToDate=!1,this._isUnderCache=!1,this._dragEventId=null,this._shouldFireChangeEvents=!1,this.setAttrs(t),this._shouldFireChangeEvents=!0}hasChildren(){return!1}_clearCache(t){(t===Oc||t===du)&&this._cache.get(t)?this._cache.get(t).dirty=!0:t?this._cache.delete(t):this._cache.clear()}_getCache(t,n){var r=this._cache.get(t),i=t===Oc||t===du,o=r===void 0||i&&r.dirty===!0;return o&&(r=n.call(this),this._cache.set(t,r)),r}_calculate(t,n,r){if(!this._attachedDepsListeners.get(t)){const i=n.map(o=>o+"Change.konva").join(r4);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(_f)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===du&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(_f)){const{scene:t,filter:n,hit:r}=this._cache.get(_f);de.releaseCanvas(t,n,r),this._cache.delete(_f)}return this._clearSelfAndDescendantCache(),this._requestDraw(),this}cache(t){var n=t||{},r={};(n.x===void 0||n.y===void 0||n.width===void 0||n.height===void 0)&&(r=this.getClientRect({skipTransform:!0,relativeTo:this.getParent()}));var i=Math.ceil(n.width||r.width),o=Math.ceil(n.height||r.height),a=n.pixelRatio,s=n.x===void 0?Math.floor(r.x):n.x,l=n.y===void 0?Math.floor(r.y):n.y,u=n.offset||0,h=n.drawBorder||!1,g=n.hitCanvasPixelRatio||1;if(!i||!o){de.error("Can not cache the node. Width or height of the node equals 0. Caching is skipped.");return}i+=u*2+1,o+=u*2+1,s-=u,l-=u;var m=new $0({pixelRatio:a,width:i,height:o}),v=new $0({pixelRatio:a,width:0,height:0}),S=new kk({pixelRatio:g,width:i,height:o}),w=m.getContext(),k=S.getContext();return S.isCache=!0,m.isCache=!0,this._cache.delete(_f),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(m.getContext()._context.imageSmoothingEnabled=!1,v.getContext()._context.imageSmoothingEnabled=!1),w.save(),k.save(),w.translate(-s,-l),k.translate(-s,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(n4),this._clearSelfAndDescendantCache(XM),this.drawScene(m,this),this.drawHit(S,this),this._isUnderCache=!1,w.restore(),k.restore(),h&&(w.save(),w.beginPath(),w.rect(0,0,i,o),w.closePath(),w.setAttr("strokeStyle","red"),w.setAttr("lineWidth",5),w.stroke(),w.restore()),this._cache.set(_f,{scene:m,filter:v,hit:S,x:s,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(_f)}getClientRect(t){throw new Error('abstract "getClientRect" method call')}_transformedRect(t,n){var r=[{x:t.x,y:t.y},{x:t.x+t.width,y:t.y},{x:t.x+t.width,y:t.y+t.height},{x:t.x,y:t.y+t.height}],i,o,a,s,l=this.getAbsoluteTransform(n);return r.forEach(function(u){var h=l.point(u);i===void 0&&(i=a=h.x,o=s=h.y),i=Math.min(i,h.x),o=Math.min(o,h.y),a=Math.max(a,h.x),s=Math.max(s,h.y)}),{x:i,y:o,width:a-i,height:s-o}}_drawCachedSceneCanvas(t){t.save(),t._applyOpacity(this),t._applyGlobalCompositeOperation(this);const n=this._getCanvasCache();t.translate(n.x,n.y);var r=this._getCachedSceneCanvas(),i=r.pixelRatio;t.drawImage(r._canvas,0,0,r.width/i,r.height/i),t.restore()}_drawCachedHitCanvas(t){var n=this._getCanvasCache(),r=n.hit;t.save(),t.translate(n.x,n.y),t.drawImage(r._canvas,0,0,r.width/r.pixelRatio,r.height/r.pixelRatio),t.restore()}_getCachedSceneCanvas(){var t=this.filters(),n=this._getCanvasCache(),r=n.scene,i=n.filter,o=i.getContext(),a,s,l,u;if(t){if(!this._filterUpToDate){var h=r.pixelRatio;i.setSize(r.width/r.pixelRatio,r.height/r.pixelRatio);try{for(a=t.length,o.clear(),o.drawImage(r._canvas,0,0,r.getWidth()/h,r.getHeight()/h),s=o.getImageData(0,0,i.getWidth(),i.getHeight()),l=0;l{var n,r;if(!t)return this;for(n in t)n!==E7e&&(r=JM+de._capitalize(n),de._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(k7,this._isListening)}_isListening(t){if(!this.listening())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isListening(t):!0}isVisible(){return this._getCache(E7,this._isVisible)}_isVisible(t){if(!this.visible())return!1;const r=this.getParent();return r&&r!==t&&this!==t?r._isVisible(t):!0}shouldDrawHit(t,n=!1){if(t)return this._isVisible(t)&&this._isListening(t);var r=this.getLayer(),i=!1;fn._dragElements.forEach(a=>{a.dragStatus==="dragging"&&(a.node.nodeType==="Stage"||a.node.getLayer()===r)&&(i=!0)});var o=!n&&!rt.hitOnDragEnabled&&i;return this.isListening()&&this.isVisible()&&!o}show(){return this.visible(!0),this}hide(){return this.visible(!1),this}getZIndex(){return this.index||0}getAbsoluteZIndex(){var t=this.getDepth(),n=this,r=0,i,o,a,s;function l(u){for(i=[],o=u.length,a=0;a0&&i[0].getDepth()<=t&&l(i)}return n.nodeType!==T7e&&l(n.getStage().getChildren()),r}getDepth(){for(var t=0,n=this.parent;n;)t++,n=n.parent;return t}_batchTransformChanges(t){this._batchingTransformChange=!0,t(),this._batchingTransformChange=!1,this._needClearTransformCache&&(this._clearCache(Oc),this._clearSelfAndDescendantCache(du)),this._needClearTransformCache=!1}setPosition(t){return this._batchTransformChanges(()=>{this.x(t.x),this.y(t.y)}),this}getPosition(){return{x:this.x(),y:this.y()}}getRelativePointerPosition(){if(!this.getStage())return null;var t=this.getStage().getPointerPosition();if(!t)return null;var n=this.getAbsoluteTransform().copy();return n.invert(),n.point(t)}getAbsolutePosition(t){let n=!1,r=this.parent;for(;r;){if(r.isCached()){n=!0;break}r=r.parent}n&&!t&&(t=!0);var i=this.getAbsoluteTransform(t).getMatrix(),o=new aa,a=this.offset();return o.m=i.slice(),o.translate(a.x,a.y),o.getTranslation()}setAbsolutePosition(t){var n=this._clearTransform();this.attrs.x=n.x,this.attrs.y=n.y,delete n.x,delete n.y,this._clearCache(Oc);var r=this._getAbsoluteTransform().copy();return r.invert(),r.translate(t.x,t.y),t={x:this.attrs.x+r.getTranslation().x,y:this.attrs.y+r.getTranslation().y},this._setTransform(n),this.setPosition({x:t.x,y:t.y}),this._clearCache(Oc),this._clearSelfAndDescendantCache(du),this}_setTransform(t){var n;for(n in t)this.attrs[n]=t[n]}_clearTransform(){var t={x:this.x(),y:this.y(),rotation:this.rotation(),scaleX:this.scaleX(),scaleY:this.scaleY(),offsetX:this.offsetX(),offsetY:this.offsetY(),skewX:this.skewX(),skewY:this.skewY()};return this.attrs.x=0,this.attrs.y=0,this.attrs.rotation=0,this.attrs.scaleX=1,this.attrs.scaleY=1,this.attrs.offsetX=0,this.attrs.offsetY=0,this.attrs.skewX=0,this.attrs.skewY=0,t}move(t){var n=t.x,r=t.y,i=this.x(),o=this.y();return n!==void 0&&(i+=n),r!==void 0&&(o+=r),this.setPosition({x:i,y:o}),this}_eachAncestorReverse(t,n){var r=[],i=this.getParent(),o,a;if(!(n&&n._id===this._id)){for(r.unshift(this);i&&(!n||i._id!==n._id);)r.unshift(i),i=i.parent;for(o=r.length,a=0;a0?(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return de.warn("Node has no parent. moveToBottom function is ignored."),!1;var t=this.index;return t>0?(this.parent.children.splice(t,1),this.parent.children.unshift(this),this.parent._setChildrenIndices(),!0):!1}setZIndex(t){if(!this.parent)return de.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&de.warn("Unexpected value "+t+" for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to "+(this.parent.children.length-1)+".");var n=this.index;return this.parent.children.splice(n,1),this.parent.children.splice(t,0,this),this.parent._setChildrenIndices(),this}getAbsoluteOpacity(){return this._getCache(n4,this._getAbsoluteOpacity)}_getAbsoluteOpacity(){var t=this.opacity(),n=this.getParent();return n&&!n._isUnderCache&&(t*=n.getAbsoluteOpacity()),t}moveTo(t){return this.getParent()!==t&&(this._remove(),t.add(this)),this}toObject(){var t={},n=this.getAttrs(),r,i,o,a,s;t.attrs={};for(r in n)i=n[r],s=de.isObject(i)&&!de._isPlainObject(i)&&!de._isArray(i),!s&&(o=typeof this[r]=="function"&&this[r],delete n[r],a=o?o.call(this):null,n[r]=i,a!==i&&(t.attrs[r]=i));return t.className=this.getClassName(),de._prepareToStringify(t)}toJSON(){return JSON.stringify(this.toObject())}getParent(){return this.parent}findAncestors(t,n,r){var i=[];n&&this._isMatch(t)&&i.push(this);for(var o=this.parent;o;){if(o===r)return i;o._isMatch(t)&&i.push(o),o=o.parent}return i}isAncestorOf(t){return!1}findAncestor(t,n,r){return this.findAncestors(t,n,r)[0]}_isMatch(t){if(!t)return!1;if(typeof t=="function")return t(this);var n=t.replace(/ /g,"").split(","),r=n.length,i,o;for(i=0;i{try{const i=t?.callback;i&&delete t.callback,de._urlToImage(this.toDataURL(t),function(o){n(o),i?.(o)})}catch(i){r(i)}})}toBlob(t){return new Promise((n,r)=>{try{const i=t?.callback;i&&delete t.callback,this.toCanvas(t).toBlob(o=>{n(o),i?.(o)})}catch(i){r(i)}})}setSize(t){return this.width(t.width),this.height(t.height),this}getSize(){return{width:this.width(),height:this.height()}}getClassName(){return this.className||this.nodeType}getType(){return this.nodeType}getDragDistance(){return this.attrs.dragDistance!==void 0?this.attrs.dragDistance:this.parent?this.parent.getDragDistance():rt.dragDistance}_off(t,n,r){var i=this.eventListeners[t],o,a,s;for(o=0;o=0;if(!!r&&!this.isDragging()){var i=!1;fn._dragElements.forEach(o=>{this.isAncestorOf(o.node)&&(i=!0)}),i||this._createDragElement(t)}})}_dragChange(){if(this.attrs.draggable)this._listenDrag();else{this._dragCleanup();var t=this.getStage();if(!t)return;const n=fn._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&fn._dragElements.delete(this._id)}}_dragCleanup(){this.off("mousedown.konva"),this.off("touchstart.konva")}isClientRectOnScreen(t={x:0,y:0}){const n=this.getStage();if(!n)return!1;const r={x:-t.x,y:-t.y,width:n.width()+2*t.x,height:n.height()+2*t.y};return de.haveIntersection(r,this.getClientRect())}static create(t,n){return de._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=$e.prototype.getClassName.call(t),i=t.children,o,a,s;n&&(t.attrs.container=n),rt[r]||(de.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=rt[r];if(o=new l(t.attrs),i)for(a=i.length,s=0;s0}removeChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.remove()}),this.children=[],this._requestDraw(),this}destroyChildren(){return this.getChildren().forEach(t=>{t.parent=null,t.index=0,t.destroy()}),this.children=[],this._requestDraw(),this}add(...t){if(arguments.length>1){for(var n=0;n0?n[0]:void 0}_generalFind(t,n){var r=[];return this._descendants(i=>{const o=i._isMatch(t);return o&&r.push(i),!!(o&&n)}),r}_descendants(t){let n=!1;const r=this.getChildren();for(const i of r){if(n=t(i),n)return!0;if(!!i.hasChildren()&&(n=i._descendants(t),n))return!0}return!1}toObject(){var t=$e.prototype.toObject.call(this);return t.children=[],this.getChildren().forEach(n=>{t.children.push(n.toObject())}),t}isAncestorOf(t){for(var n=t.getParent();n;){if(n._id===this._id)return!0;n=n.getParent()}return!1}clone(t){var n=$e.prototype.clone.call(this,t);return this.getChildren().forEach(function(r){n.add(r.clone())}),n}getAllIntersections(t){var n=[];return this.find("Shape").forEach(function(r){r.isVisible()&&r.intersects(t)&&n.push(r)}),n}_clearSelfAndDescendantCache(t){var n;super._clearSelfAndDescendantCache(t),!this.isCached()&&((n=this.children)===null||n===void 0||n.forEach(function(r){r._clearSelfAndDescendantCache(t)}))}_setChildrenIndices(){var t;(t=this.children)===null||t===void 0||t.forEach(function(n,r){n.index=r}),this._requestDraw()}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas(),o=i&&i.getContext(),a=this._getCanvasCache(),s=a&&a.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(s){o.save();var u=this.getAbsoluteTransform(n).getMatrix();o.transform(u[0],u[1],u[2],u[3],u[4],u[5]),this._drawCachedSceneCanvas(o),o.restore()}else this._drawChildren("drawScene",i,n);return this}drawHit(t,n){if(!this.shouldDrawHit(n))return this;var r=this.getLayer(),i=t||r&&r.hitCanvas,o=i&&i.getContext(),a=this._getCanvasCache(),s=a&&a.hit;if(s){o.save();var l=this.getAbsoluteTransform(n).getMatrix();o.transform(l[0],l[1],l[2],l[3],l[4],l[5]),this._drawCachedHitCanvas(o),o.restore()}else this._drawChildren("drawHit",i,n);return this}_drawChildren(t,n,r){var i,o=n&&n.getContext(),a=this.clipWidth(),s=this.clipHeight(),l=this.clipFunc(),u=a&&s||l;const h=r===this;if(u){o.save();var g=this.getAbsoluteTransform(r),m=g.getMatrix();if(o.transform(m[0],m[1],m[2],m[3],m[4],m[5]),o.beginPath(),l)l.call(this,o,this);else{var v=this.clipX(),S=this.clipY();o.rect(v,S,a,s)}o.clip(),m=g.copy().invert().getMatrix(),o.transform(m[0],m[1],m[2],m[3],m[4],m[5])}var w=!h&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";w&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(k){k[t](n,r)}),w&&o.restore(),u&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,a,s,l,u={x:1/0,y:1/0,width:0,height:0},h=this;(n=this.children)===null||n===void 0||n.forEach(function(w){if(!!w.visible()){var k=w.getClientRect({relativeTo:h,skipShadow:t.skipShadow,skipStroke:t.skipStroke});k.width===0&&k.height===0||(o===void 0?(o=k.x,a=k.y,s=k.x+k.width,l=k.y+k.height):(o=Math.min(o,k.x),a=Math.min(a,k.y),s=Math.max(s,k.x+k.width),l=Math.max(l,k.y+k.height)))}});for(var g=this.find("Shape"),m=!1,v=0;ve.indexOf("pointer")>=0?"pointer":e.indexOf("touch")>=0?"touch":"mouse",Wp=e=>{const t=_m(e);if(t==="pointer")return rt.pointerEventsEnabled&&jw.pointer;if(t==="touch")return jw.touch;if(t==="mouse")return jw.mouse};function rI(e={}){return(e.clipFunc||e.clipWidth||e.clipHeight)&&de.warn("Stage does not support clipping. Please use clip for Layers or Groups."),e}const B7e="Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);",i4=[];class yb extends fa{constructor(t){super(rI(t)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),i4.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{rI(this.attrs)}),this._checkVisibility()}_validateAdd(t){const n=t.getType()==="Layer",r=t.getType()==="FastLayer";n||r||de.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const t=this.visible()?"":"none";this.content.style.display=t}setContainer(t){if(typeof t===I7e){if(t.charAt(0)==="."){var n=t.slice(1);t=document.getElementsByClassName(n)[0]}else{var r;t.charAt(0)!=="#"?r=t:r=t.slice(1),t=document.getElementById(r)}if(!t)throw"Can not find container in document with id "+r}return this._setAttr("container",t),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),t.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var t=this.children,n=t.length,r;for(r=0;r-1&&i4.splice(n,1),de.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const t=this._pointerPositions[0]||this._changedPointerPositions[0];return t?{x:t.x,y:t.y}:(de.warn(B7e),null)}_getPointerById(t){return this._pointerPositions.find(n=>n.id===t)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(t){t=t||{},t.x=t.x||0,t.y=t.y||0,t.width=t.width||this.width(),t.height=t.height||this.height();var n=new $0({width:t.width,height:t.height,pixelRatio:t.pixelRatio||1}),r=n.getContext()._context,i=this.children;return(t.x||t.y)&&r.translate(-1*t.x,-1*t.y),i.forEach(function(o){if(!!o.isVisible()){var a=o._toKonvaCanvas(t);r.drawImage(a._canvas,t.x,t.y,a.getWidth()/a.getPixelRatio(),a.getHeight()/a.getPixelRatio())}}),n}getIntersection(t){if(!t)return null;var n=this.children,r=n.length,i=r-1,o;for(o=i;o>=0;o--){const a=n[o].getIntersection(t);if(a)return a}return null}_resizeDOM(){var t=this.width(),n=this.height();this.content&&(this.content.style.width=t+nI,this.content.style.height=n+nI),this.bufferCanvas.setSize(t,n),this.bufferHitCanvas.setSize(t,n),this.children.forEach(r=>{r.setSize({width:t,height:n}),r.draw()})}add(t,...n){if(arguments.length>1){for(var r=0;rD7e&&de.warn("The stage has "+i+" layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group."),t.setSize({width:this.width(),height:this.height()}),t.draw(),rt.isBrowser&&this.content.appendChild(t.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(t){return BW(t,this)}setPointerCapture(t){zW(t,this)}releaseCapture(t){Jm(t)}getLayers(){return this.children}_bindContentEvents(){!rt.isBrowser||N7e.forEach(([t,n])=>{this.content.addEventListener(t,r=>{this[n](r)},{passive:!1})})}_pointerenter(t){this.setPointersPositions(t);const n=Wp(t.type);this._fire(n.pointerenter,{evt:t,target:this,currentTarget:this})}_pointerover(t){this.setPointersPositions(t);const n=Wp(t.type);this._fire(n.pointerover,{evt:t,target:this,currentTarget:this})}_getTargetShape(t){let n=this[t+"targetShape"];return n&&!n.getStage()&&(n=null),n}_pointerleave(t){const n=Wp(t.type),r=_m(t.type);if(!!n){this.setPointersPositions(t);var i=this._getTargetShape(r),o=!fn.isDragging||rt.hitOnDragEnabled;i&&o?(i._fireAndBubble(n.pointerout,{evt:t}),i._fireAndBubble(n.pointerleave,{evt:t}),this._fire(n.pointerleave,{evt:t,target:this,currentTarget:this}),this[r+"targetShape"]=null):o&&(this._fire(n.pointerleave,{evt:t,target:this,currentTarget:this}),this._fire(n.pointerout,{evt:t,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(t){const n=Wp(t.type),r=_m(t.type);if(!!n){this.setPointersPositions(t);var i=!1;this._changedPointerPositions.forEach(o=>{var a=this.getIntersection(o);if(fn.justDragged=!1,rt["_"+r+"ListenClick"]=!0,!(a&&a.isListening()))return;rt.capturePointerEventsEnabled&&a.setPointerCapture(o.id),this[r+"ClickStartShape"]=a,a._fireAndBubble(n.pointerdown,{evt:t,pointerId:o.id}),i=!0;const l=t.type.indexOf("touch")>=0;a.preventDefault()&&t.cancelable&&l&&t.preventDefault()}),i||this._fire(n.pointerdown,{evt:t,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(t){const n=Wp(t.type),r=_m(t.type);if(!n)return;fn.isDragging&&fn.node.preventDefault()&&t.cancelable&&t.preventDefault(),this.setPointersPositions(t);var i=!fn.isDragging||rt.hitOnDragEnabled;if(!i)return;var o={};let a=!1;var s=this._getTargetShape(r);this._changedPointerPositions.forEach(l=>{const u=Gw(l.id)||this.getIntersection(l),h=l.id,g={evt:t,pointerId:h};var m=s!==u;if(m&&s&&(s._fireAndBubble(n.pointerout,Object.assign({},g),u),s._fireAndBubble(n.pointerleave,Object.assign({},g),u)),u){if(o[u._id])return;o[u._id]=!0}u&&u.isListening()?(a=!0,m&&(u._fireAndBubble(n.pointerover,Object.assign({},g),s),u._fireAndBubble(n.pointerenter,Object.assign({},g),s),this[r+"targetShape"]=u),u._fireAndBubble(n.pointermove,Object.assign({},g))):s&&(this._fire(n.pointerover,{evt:t,target:this,currentTarget:this,pointerId:h}),this[r+"targetShape"]=null)}),a||this._fire(n.pointermove,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(t){const n=Wp(t.type),r=_m(t.type);if(!n)return;this.setPointersPositions(t);const i=this[r+"ClickStartShape"],o=this[r+"ClickEndShape"];var a={};let s=!1;this._changedPointerPositions.forEach(l=>{const u=Gw(l.id)||this.getIntersection(l);if(u){if(u.releaseCapture(l.id),a[u._id])return;a[u._id]=!0}const h=l.id,g={evt:t,pointerId:h};let m=!1;rt["_"+r+"InDblClickWindow"]?(m=!0,clearTimeout(this[r+"DblTimeout"])):fn.justDragged||(rt["_"+r+"InDblClickWindow"]=!0,clearTimeout(this[r+"DblTimeout"])),this[r+"DblTimeout"]=setTimeout(function(){rt["_"+r+"InDblClickWindow"]=!1},rt.dblClickWindow),u&&u.isListening()?(s=!0,this[r+"ClickEndShape"]=u,u._fireAndBubble(n.pointerup,Object.assign({},g)),rt["_"+r+"ListenClick"]&&i&&i===u&&(u._fireAndBubble(n.pointerclick,Object.assign({},g)),m&&o&&o===u&&u._fireAndBubble(n.pointerdblclick,Object.assign({},g)))):(this[r+"ClickEndShape"]=null,rt["_"+r+"ListenClick"]&&this._fire(n.pointerclick,{evt:t,target:this,currentTarget:this,pointerId:h}),m&&this._fire(n.pointerdblclick,{evt:t,target:this,currentTarget:this,pointerId:h}))}),s||this._fire(n.pointerup,{evt:t,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),rt["_"+r+"ListenClick"]=!1,t.cancelable&&r!=="touch"&&t.preventDefault()}_contextmenu(t){this.setPointersPositions(t);var n=this.getIntersection(this.getPointerPosition());n&&n.isListening()?n._fireAndBubble(P7,{evt:t}):this._fire(P7,{evt:t,target:this,currentTarget:this})}_wheel(t){this.setPointersPositions(t);var n=this.getIntersection(this.getPointerPosition());n&&n.isListening()?n._fireAndBubble(T7,{evt:t}):this._fire(T7,{evt:t,target:this,currentTarget:this})}_pointercancel(t){this.setPointersPositions(t);const n=Gw(t.pointerId)||this.getIntersection(this.getPointerPosition());n&&n._fireAndBubble(d0,Ek(t)),Jm(t.pointerId)}_lostpointercapture(t){Jm(t.pointerId)}setPointersPositions(t){var n=this._getContentPosition(),r=null,i=null;t=t||window.event,t.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(t.touches,o=>{this._pointerPositions.push({id:o.identifier,x:(o.clientX-n.left)/n.scaleX,y:(o.clientY-n.top)/n.scaleY})}),Array.prototype.forEach.call(t.changedTouches||t.touches,o=>{this._changedPointerPositions.push({id:o.identifier,x:(o.clientX-n.left)/n.scaleX,y:(o.clientY-n.top)/n.scaleY})})):(r=(t.clientX-n.left)/n.scaleX,i=(t.clientY-n.top)/n.scaleY,this.pointerPos={x:r,y:i},this._pointerPositions=[{x:r,y:i,id:de._getFirstPointerId(t)}],this._changedPointerPositions=[{x:r,y:i,id:de._getFirstPointerId(t)}])}_setPointerPosition(t){de.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(t)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var t=this.content.getBoundingClientRect();return{top:t.top,left:t.left,scaleX:t.width/this.content.clientWidth||1,scaleY:t.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new $0({width:this.width(),height:this.height()}),this.bufferHitCanvas=new kk({pixelRatio:1,width:this.width(),height:this.height()}),!!rt.isBrowser){var t=this.container();if(!t)throw"Stage has no container. A container is required.";t.innerHTML="",this.content=document.createElement("div"),this.content.style.position="relative",this.content.style.userSelect="none",this.content.className="konvajs-content",this.content.setAttribute("role","presentation"),t.appendChild(this.content),this._resizeDOM()}}cache(){return de.warn("Cache function is not allowed for stage. You may use cache only for layers, groups and shapes."),this}clearCache(){return this}batchDraw(){return this.getChildren().forEach(function(t){t.batchDraw()}),this}}yb.prototype.nodeType=M7e;gr(yb);q.addGetterSetter(yb,"container");var KW="hasShadow",XW="shadowRGBA",ZW="patternImage",QW="linearGradient",JW="radialGradient";let g3;function Yw(){return g3||(g3=de.createCanvasElement().getContext("2d"),g3)}const ev={};function z7e(e){e.fill()}function F7e(e){e.stroke()}function $7e(e){e.fill()}function H7e(e){e.stroke()}function W7e(){this._clearCache(KW)}function V7e(){this._clearCache(XW)}function U7e(){this._clearCache(ZW)}function G7e(){this._clearCache(QW)}function j7e(){this._clearCache(JW)}class Ie extends $e{constructor(t){super(t);let n;for(;n=de.getRandomColor(),!(n&&!(n in ev)););this.colorKey=n,ev[n]=this}getContext(){return de.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return de.warn("shape.getCanvas() method is deprecated. Please do not use it."),this.getLayer().getCanvas()}getSceneFunc(){return this.attrs.sceneFunc||this._sceneFunc}getHitFunc(){return this.attrs.hitFunc||this._hitFunc}hasShadow(){return this._getCache(KW,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(ZW,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var t=Yw();const n=t.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(n&&n.setTransform){const r=new aa;r.translate(this.fillPatternX(),this.fillPatternY()),r.rotate(rt.getAngle(this.fillPatternRotation())),r.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),r.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const i=r.getMatrix(),o=typeof DOMMatrix>"u"?{a:i[0],b:i[1],c:i[2],d:i[3],e:i[4],f:i[5]}:new DOMMatrix(i);n.setTransform(o)}return n}}_getLinearGradient(){return this._getCache(QW,this.__getLinearGradient)}__getLinearGradient(){var t=this.fillLinearGradientColorStops();if(t){for(var n=Yw(),r=this.fillLinearGradientStartPoint(),i=this.fillLinearGradientEndPoint(),o=n.createLinearGradient(r.x,r.y,i.x,i.y),a=0;athis.fillEnabled()&&!!(this.fill()||this.fillPatternImage()||this.fillLinearGradientColorStops()||this.fillRadialGradientColorStops()))}hasStroke(){return this._calculate("hasStroke",["strokeEnabled","strokeWidth","stroke","strokeLinearGradientColorStops"],()=>this.strokeEnabled()&&this.strokeWidth()&&!!(this.stroke()||this.strokeLinearGradientColorStops()))}hasHitStroke(){const t=this.hitStrokeWidth();return t==="auto"?this.hasStroke():this.strokeEnabled()&&!!t}intersects(t){var n=this.getStage(),r=n.bufferHitCanvas,i;return r.getContext().clear(),this.drawHit(r,null,!0),i=r.context.getImageData(Math.round(t.x),Math.round(t.y),1,1).data,i[3]>0}destroy(){return $e.prototype.destroy.call(this),delete ev[this.colorKey],delete this.colorKey,this}_useBufferCanvas(t){var n;if(!this.getStage()||!((n=this.attrs.perfectDrawEnabled)!==null&&n!==void 0?n:!0))return!1;const i=t||this.hasFill(),o=this.hasStroke(),a=this.getAbsoluteOpacity()!==1;if(i&&o&&a)return!0;const s=this.hasShadow(),l=this.shadowForStrokeEnabled();return!!(i&&o&&s&&l)}setStrokeHitEnabled(t){de.warn("strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead."),t?this.hitStrokeWidth("auto"):this.hitStrokeWidth(0)}getStrokeHitEnabled(){return this.hitStrokeWidth()!==0}getSelfRect(){var t=this.size();return{x:this._centroid?-t.width/2:0,y:this._centroid?-t.height/2:0,width:t.width,height:t.height}}getClientRect(t={}){const n=t.skipTransform,r=t.relativeTo,i=this.getSelfRect(),a=!t.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,s=i.width+a,l=i.height+a,u=!t.skipShadow&&this.hasShadow(),h=u?this.shadowOffsetX():0,g=u?this.shadowOffsetY():0,m=s+Math.abs(h),v=l+Math.abs(g),S=u&&this.shadowBlur()||0,w=m+S*2,k=v+S*2,P={width:w,height:k,x:-(a/2+S)+Math.min(h,0)+i.x,y:-(a/2+S)+Math.min(g,0)+i.y};return n?P:this._transformedRect(P,r)}drawScene(t,n){var r=this.getLayer(),i=t||r.getCanvas(),o=i.getContext(),a=this._getCanvasCache(),s=this.getSceneFunc(),l=this.hasShadow(),u,h,g,m=i.isCache,v=n===this;if(!this.isVisible()&&!v)return this;if(a){o.save();var S=this.getAbsoluteTransform(n).getMatrix();return o.transform(S[0],S[1],S[2],S[3],S[4],S[5]),this._drawCachedSceneCanvas(o),o.restore(),this}if(!s)return this;if(o.save(),this._useBufferCanvas()&&!m){u=this.getStage(),h=u.bufferCanvas,g=h.getContext(),g.clear(),g.save(),g._applyLineJoin(this);var w=this.getAbsoluteTransform(n).getMatrix();g.transform(w[0],w[1],w[2],w[3],w[4],w[5]),s.call(this,g,this),g.restore();var k=h.pixelRatio;l&&o._applyShadow(this),o._applyOpacity(this),o._applyGlobalCompositeOperation(this),o.drawImage(h._canvas,0,0,h.width/k,h.height/k)}else{if(o._applyLineJoin(this),!v){var w=this.getAbsoluteTransform(n).getMatrix();o.transform(w[0],w[1],w[2],w[3],w[4],w[5]),o._applyOpacity(this),o._applyGlobalCompositeOperation(this)}l&&o._applyShadow(this),s.call(this,o,this)}return o.restore(),this}drawHit(t,n,r=!1){if(!this.shouldDrawHit(n,r))return this;var i=this.getLayer(),o=t||i.hitCanvas,a=o&&o.getContext(),s=this.hitFunc()||this.sceneFunc(),l=this._getCanvasCache(),u=l&&l.hit;if(this.colorKey||de.warn("Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()"),u){a.save();var h=this.getAbsoluteTransform(n).getMatrix();return a.transform(h[0],h[1],h[2],h[3],h[4],h[5]),this._drawCachedHitCanvas(a),a.restore(),this}if(!s)return this;if(a.save(),a._applyLineJoin(this),!(this===n)){var m=this.getAbsoluteTransform(n).getMatrix();a.transform(m[0],m[1],m[2],m[3],m[4],m[5])}return s.call(this,a,this),a.restore(),this}drawHitFromCache(t=0){var n=this._getCanvasCache(),r=this._getCachedSceneCanvas(),i=n.hit,o=i.getContext(),a=i.getWidth(),s=i.getHeight(),l,u,h,g,m,v;o.clear(),o.drawImage(r._canvas,0,0,a,s);try{for(l=o.getImageData(0,0,a,s),u=l.data,h=u.length,g=de._hexToRgb(this.colorKey),m=0;mt?(u[m]=g.r,u[m+1]=g.g,u[m+2]=g.b,u[m+3]=255):u[m+3]=0;o.putImageData(l,0,0)}catch(S){de.error("Unable to draw hit graph from cached scene canvas. "+S.message)}return this}hasPointerCapture(t){return BW(t,this)}setPointerCapture(t){zW(t,this)}releaseCapture(t){Jm(t)}}Ie.prototype._fillFunc=z7e;Ie.prototype._strokeFunc=F7e;Ie.prototype._fillFuncHit=$7e;Ie.prototype._strokeFuncHit=H7e;Ie.prototype._centroid=!1;Ie.prototype.nodeType="Shape";gr(Ie);Ie.prototype.eventListeners={};Ie.prototype.on.call(Ie.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",W7e);Ie.prototype.on.call(Ie.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",V7e);Ie.prototype.on.call(Ie.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",U7e);Ie.prototype.on.call(Ie.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",G7e);Ie.prototype.on.call(Ie.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",j7e);q.addGetterSetter(Ie,"stroke",void 0,DW());q.addGetterSetter(Ie,"strokeWidth",2,Fe());q.addGetterSetter(Ie,"fillAfterStrokeEnabled",!1);q.addGetterSetter(Ie,"hitStrokeWidth","auto",_k());q.addGetterSetter(Ie,"strokeHitEnabled",!0,Is());q.addGetterSetter(Ie,"perfectDrawEnabled",!0,Is());q.addGetterSetter(Ie,"shadowForStrokeEnabled",!0,Is());q.addGetterSetter(Ie,"lineJoin");q.addGetterSetter(Ie,"lineCap");q.addGetterSetter(Ie,"sceneFunc");q.addGetterSetter(Ie,"hitFunc");q.addGetterSetter(Ie,"dash");q.addGetterSetter(Ie,"dashOffset",0,Fe());q.addGetterSetter(Ie,"shadowColor",void 0,k1());q.addGetterSetter(Ie,"shadowBlur",0,Fe());q.addGetterSetter(Ie,"shadowOpacity",1,Fe());q.addComponentsGetterSetter(Ie,"shadowOffset",["x","y"]);q.addGetterSetter(Ie,"shadowOffsetX",0,Fe());q.addGetterSetter(Ie,"shadowOffsetY",0,Fe());q.addGetterSetter(Ie,"fillPatternImage");q.addGetterSetter(Ie,"fill",void 0,DW());q.addGetterSetter(Ie,"fillPatternX",0,Fe());q.addGetterSetter(Ie,"fillPatternY",0,Fe());q.addGetterSetter(Ie,"fillLinearGradientColorStops");q.addGetterSetter(Ie,"strokeLinearGradientColorStops");q.addGetterSetter(Ie,"fillRadialGradientStartRadius",0);q.addGetterSetter(Ie,"fillRadialGradientEndRadius",0);q.addGetterSetter(Ie,"fillRadialGradientColorStops");q.addGetterSetter(Ie,"fillPatternRepeat","repeat");q.addGetterSetter(Ie,"fillEnabled",!0);q.addGetterSetter(Ie,"strokeEnabled",!0);q.addGetterSetter(Ie,"shadowEnabled",!0);q.addGetterSetter(Ie,"dashEnabled",!0);q.addGetterSetter(Ie,"strokeScaleEnabled",!0);q.addGetterSetter(Ie,"fillPriority","color");q.addComponentsGetterSetter(Ie,"fillPatternOffset",["x","y"]);q.addGetterSetter(Ie,"fillPatternOffsetX",0,Fe());q.addGetterSetter(Ie,"fillPatternOffsetY",0,Fe());q.addComponentsGetterSetter(Ie,"fillPatternScale",["x","y"]);q.addGetterSetter(Ie,"fillPatternScaleX",1,Fe());q.addGetterSetter(Ie,"fillPatternScaleY",1,Fe());q.addComponentsGetterSetter(Ie,"fillLinearGradientStartPoint",["x","y"]);q.addComponentsGetterSetter(Ie,"strokeLinearGradientStartPoint",["x","y"]);q.addGetterSetter(Ie,"fillLinearGradientStartPointX",0);q.addGetterSetter(Ie,"strokeLinearGradientStartPointX",0);q.addGetterSetter(Ie,"fillLinearGradientStartPointY",0);q.addGetterSetter(Ie,"strokeLinearGradientStartPointY",0);q.addComponentsGetterSetter(Ie,"fillLinearGradientEndPoint",["x","y"]);q.addComponentsGetterSetter(Ie,"strokeLinearGradientEndPoint",["x","y"]);q.addGetterSetter(Ie,"fillLinearGradientEndPointX",0);q.addGetterSetter(Ie,"strokeLinearGradientEndPointX",0);q.addGetterSetter(Ie,"fillLinearGradientEndPointY",0);q.addGetterSetter(Ie,"strokeLinearGradientEndPointY",0);q.addComponentsGetterSetter(Ie,"fillRadialGradientStartPoint",["x","y"]);q.addGetterSetter(Ie,"fillRadialGradientStartPointX",0);q.addGetterSetter(Ie,"fillRadialGradientStartPointY",0);q.addComponentsGetterSetter(Ie,"fillRadialGradientEndPoint",["x","y"]);q.addGetterSetter(Ie,"fillRadialGradientEndPointX",0);q.addGetterSetter(Ie,"fillRadialGradientEndPointY",0);q.addGetterSetter(Ie,"fillPatternRotation",0);q.backCompat(Ie,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"});var Y7e="#",q7e="beforeDraw",K7e="draw",eV=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],X7e=eV.length;class Ph extends fa{constructor(t){super(t),this.canvas=new $0,this.hitCanvas=new kk({pixelRatio:1}),this._waitingForDraw=!1,this.on("visibleChange.konva",this._checkVisibility),this._checkVisibility(),this.on("imageSmoothingEnabledChange.konva",this._setSmoothEnabled),this._setSmoothEnabled()}createPNGStream(){return this.canvas._canvas.createPNGStream()}getCanvas(){return this.canvas}getNativeCanvasElement(){return this.canvas._canvas}getHitCanvas(){return this.hitCanvas}getContext(){return this.getCanvas().getContext()}clear(t){return this.getContext().clear(t),this.getHitCanvas().getContext().clear(t),this}setZIndex(t){super.setZIndex(t);var n=this.getStage();return n&&n.content&&(n.content.removeChild(this.getNativeCanvasElement()),t{this.draw(),this._waitingForDraw=!1})),this}getIntersection(t){if(!this.isListening()||!this.isVisible())return null;for(var n=1,r=!1;;){for(let i=0;i0)return{antialiased:!0};return{}}drawScene(t,n){var r=this.getLayer(),i=t||r&&r.getCanvas();return this._fire(q7e,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),fa.prototype.drawScene.call(this,i,n),this._fire(K7e,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),fa.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){de.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return de.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening()}toggleHitCanvas(){if(!(!this.parent||!this.parent.content)){var t=this.parent,n=!!this.hitCanvas._canvas.parentNode;n?t.content.removeChild(this.hitCanvas._canvas):t.content.appendChild(this.hitCanvas._canvas)}}destroy(){return de.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}Ph.prototype.nodeType="Layer";gr(Ph);q.addGetterSetter(Ph,"imageSmoothingEnabled",!0);q.addGetterSetter(Ph,"clearBeforeDraw",!0);q.addGetterSetter(Ph,"hitGraphEnabled",!0,Is());class Pk extends Ph{constructor(t){super(t),this.listening(!1),de.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}Pk.prototype.nodeType="FastLayer";gr(Pk);class s1 extends fa{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&de.throw("You may only add groups and shapes to groups.")}}s1.prototype.nodeType="Group";gr(s1);var qw=function(){return F0.performance&&F0.performance.now?function(){return F0.performance.now()}:function(){return new Date().getTime()}}();class Da{constructor(t,n){this.id=Da.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:qw(),frameRate:0},this.func=t,this.setLayers(n)}setLayers(t){var n=[];return t?t.length>0?n=t:n=[t]:n=[],this.layers=n,this}getLayers(){return this.layers}addLayer(t){var n=this.layers,r=n.length,i;for(i=0;ithis.duration?this.yoyo?(this._time=this.duration,this.reverse()):this.finish():t<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=t,this.update())}getTime(){return this._time}setPosition(t){this.prevPos=this._pos,this.propFunc(t),this._pos=t}getPosition(t){return t===void 0&&(t=this._time),this.func(t,this.begin,this._change,this.duration)}play(){this.state=iI,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=oI,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(t){this.pause(),this._time=t,this.update(),this.fire("onSeek")}reset(){this.pause(),this._time=0,this.update(),this.fire("onReset")}finish(){this.pause(),this._time=this.duration,this.update(),this.fire("onFinish")}update(){this.setPosition(this.getPosition(this._time)),this.fire("onUpdate")}onEnterFrame(){var t=this.getTimer()-this._startTime;this.state===iI?this.setTime(t):this.state===oI&&this.setTime(this.duration-t)}pause(){this.state=Q7e,this.fire("onPause")}getTimer(){return new Date().getTime()}}class Rr{constructor(t){var n=this,r=t.node,i=r._id,o,a=t.easing||tv.Linear,s=!!t.yoyo,l;typeof t.duration>"u"?o=.3:t.duration===0?o=.001:o=t.duration,this.node=r,this._id=J7e++;var u=r.getLayer()||(r instanceof rt.Stage?r.getLayers():null);u||de.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new Da(function(){n.tween.onEnterFrame()},u),this.tween=new e9e(l,function(h){n._tweenFunc(h)},a,0,1,o*1e3,s),this._addListeners(),Rr.attrs[i]||(Rr.attrs[i]={}),Rr.attrs[i][this._id]||(Rr.attrs[i][this._id]={}),Rr.tweens[i]||(Rr.tweens[i]={});for(l in t)Z7e[l]===void 0&&this._addAttr(l,t[l]);this.reset(),this.onFinish=t.onFinish,this.onReset=t.onReset,this.onUpdate=t.onUpdate}_addAttr(t,n){var r=this.node,i=r._id,o,a,s,l,u,h,g,m;if(s=Rr.tweens[i][t],s&&delete Rr.attrs[i][s][t],o=r.getAttr(t),de._isArray(n))if(a=[],u=Math.max(n.length,o.length),t==="points"&&n.length!==o.length&&(n.length>o.length?(g=o,o=de._prepareArrayForTween(o,n,r.closed())):(h=n,n=de._prepareArrayForTween(n,o,r.closed()))),t.indexOf("fill")===0)for(l=0;l{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var t=this.node,n=Rr.attrs[t._id][this._id];n.points&&n.points.trueEnd&&t.setAttr("points",n.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var t=this.node,n=Rr.attrs[t._id][this._id];n.points&&n.points.trueStart&&t.points(n.points.trueStart),this.onReset&&this.onReset()},this.tween.onUpdate=()=>{this.onUpdate&&this.onUpdate.call(this)}}play(){return this.tween.play(),this}reverse(){return this.tween.reverse(),this}reset(){return this.tween.reset(),this}seek(t){return this.tween.seek(t*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var t=this.node._id,n=this._id,r=Rr.tweens[t],i;this.pause();for(i in r)delete Rr.tweens[t][i];delete Rr.attrs[t][n]}}Rr.attrs={};Rr.tweens={};$e.prototype.to=function(e){var t=e.onFinish;e.node=this,e.onFinish=function(){this.destroy(),t&&t()};var n=new Rr(e);n.play()};const tv={BackEaseIn(e,t,n,r){var i=1.70158;return n*(e/=r)*e*((i+1)*e-i)+t},BackEaseOut(e,t,n,r){var i=1.70158;return n*((e=e/r-1)*e*((i+1)*e+i)+1)+t},BackEaseInOut(e,t,n,r){var i=1.70158;return(e/=r/2)<1?n/2*(e*e*(((i*=1.525)+1)*e-i))+t:n/2*((e-=2)*e*(((i*=1.525)+1)*e+i)+2)+t},ElasticEaseIn(e,t,n,r,i,o){var a=0;return e===0?t:(e/=r)===1?t+n:(o||(o=r*.3),!i||i0?t:n),h=a*n,g=s*(s>0?t:n),m=l*(l>0?n:t);return{x:u,y:r?-1*m:g,width:h-u,height:m-g}}}zu.prototype._centroid=!0;zu.prototype.className="Arc";zu.prototype._attrsAffectingSize=["innerRadius","outerRadius"];gr(zu);q.addGetterSetter(zu,"innerRadius",0,Fe());q.addGetterSetter(zu,"outerRadius",0,Fe());q.addGetterSetter(zu,"angle",0,Fe());q.addGetterSetter(zu,"clockwise",!1,Is());function L7(e,t,n,r,i,o,a){var s=Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2)),l=Math.sqrt(Math.pow(i-n,2)+Math.pow(o-r,2)),u=a*s/(s+l),h=a*l/(s+l),g=n-u*(i-e),m=r-u*(o-t),v=n+h*(i-e),S=r+h*(o-t);return[g,m,v,S]}function sI(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(s=this.getTensionPoints(),l=s.length,u=o?0:4,o||t.quadraticCurveTo(s[0],s[1],s[2],s[3]);uh?u:h,k=u>h?1:u/h,P=u>h?h/u:1;t.translate(s,l),t.rotate(v),t.scale(k,P),t.arc(0,0,w,g,g+m,1-S),t.scale(1/k,1/P),t.rotate(-v),t.translate(-s,-l);break;case"z":r=!0,t.closePath();break}}!r&&!this.hasFill()?t.strokeShape(this):t.fillStrokeShape(this)}getSelfRect(){var t=[];this.dataArray.forEach(function(u){if(u.command==="A"){var h=u.points[4],g=u.points[5],m=u.points[4]+g,v=Math.PI/180;if(Math.abs(h-m)m;S-=v){const w=Nn.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],S,0);t.push(w.x,w.y)}else for(let S=h+v;Sthis.dataArray[r].pathLength;)t-=this.dataArray[r].pathLength,++r;if(r===i)return n=this.dataArray[r-1].points.slice(-2),{x:n[0],y:n[1]};if(t<.01)return n=this.dataArray[r].points.slice(0,2),{x:n[0],y:n[1]};var o=this.dataArray[r],a=o.points;switch(o.command){case"L":return Nn.getPointOnLine(t,o.start.x,o.start.y,a[0],a[1]);case"C":return Nn.getPointOnCubicBezier(t/o.pathLength,o.start.x,o.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return Nn.getPointOnQuadraticBezier(t/o.pathLength,o.start.x,o.start.y,a[0],a[1],a[2],a[3]);case"A":var s=a[0],l=a[1],u=a[2],h=a[3],g=a[4],m=a[5],v=a[6];return g+=m*t/o.pathLength,Nn.getPointOnEllipticalArc(s,l,u,h,g,v)}return null}static getLineLength(t,n,r,i){return Math.sqrt((r-t)*(r-t)+(i-n)*(i-n))}static getPointOnLine(t,n,r,i,o,a,s){a===void 0&&(a=n),s===void 0&&(s=r);var l=(o-r)/(i-n+1e-8),u=Math.sqrt(t*t/(1+l*l));i0&&!isNaN(S[0]);){var E=null,T=[],M=l,R=u,O,D,B,$,W,j,te,V,J,re;switch(v){case"l":l+=S.shift(),u+=S.shift(),E="L",T.push(l,u);break;case"L":l=S.shift(),u=S.shift(),T.push(l,u);break;case"m":var ee=S.shift(),K=S.shift();if(l+=ee,u+=K,E="M",a.length>2&&a[a.length-1].command==="z"){for(var G=a.length-2;G>=0;G--)if(a[G].command==="M"){l=a[G].points[0]+ee,u=a[G].points[1]+K;break}}T.push(l,u),v="l";break;case"M":l=S.shift(),u=S.shift(),E="M",T.push(l,u),v="L";break;case"h":l+=S.shift(),E="L",T.push(l,u);break;case"H":l=S.shift(),E="L",T.push(l,u);break;case"v":u+=S.shift(),E="L",T.push(l,u);break;case"V":u=S.shift(),E="L",T.push(l,u);break;case"C":T.push(S.shift(),S.shift(),S.shift(),S.shift()),l=S.shift(),u=S.shift(),T.push(l,u);break;case"c":T.push(l+S.shift(),u+S.shift(),l+S.shift(),u+S.shift()),l+=S.shift(),u+=S.shift(),E="C",T.push(l,u);break;case"S":D=l,B=u,O=a[a.length-1],O.command==="C"&&(D=l+(l-O.points[2]),B=u+(u-O.points[3])),T.push(D,B,S.shift(),S.shift()),l=S.shift(),u=S.shift(),E="C",T.push(l,u);break;case"s":D=l,B=u,O=a[a.length-1],O.command==="C"&&(D=l+(l-O.points[2]),B=u+(u-O.points[3])),T.push(D,B,l+S.shift(),u+S.shift()),l+=S.shift(),u+=S.shift(),E="C",T.push(l,u);break;case"Q":T.push(S.shift(),S.shift()),l=S.shift(),u=S.shift(),T.push(l,u);break;case"q":T.push(l+S.shift(),u+S.shift()),l+=S.shift(),u+=S.shift(),E="Q",T.push(l,u);break;case"T":D=l,B=u,O=a[a.length-1],O.command==="Q"&&(D=l+(l-O.points[0]),B=u+(u-O.points[1])),l=S.shift(),u=S.shift(),E="Q",T.push(D,B,l,u);break;case"t":D=l,B=u,O=a[a.length-1],O.command==="Q"&&(D=l+(l-O.points[0]),B=u+(u-O.points[1])),l+=S.shift(),u+=S.shift(),E="Q",T.push(D,B,l,u);break;case"A":$=S.shift(),W=S.shift(),j=S.shift(),te=S.shift(),V=S.shift(),J=l,re=u,l=S.shift(),u=S.shift(),E="A",T=this.convertEndpointToCenterParameterization(J,re,l,u,te,V,$,W,j);break;case"a":$=S.shift(),W=S.shift(),j=S.shift(),te=S.shift(),V=S.shift(),J=l,re=u,l+=S.shift(),u+=S.shift(),E="A",T=this.convertEndpointToCenterParameterization(J,re,l,u,te,V,$,W,j);break}a.push({command:E||v,points:T,start:{x:M,y:R},pathLength:this.calcLength(M,R,E||v,T)})}(v==="z"||v==="Z")&&a.push({command:"z",points:[],start:void 0,pathLength:0})}return a}static calcLength(t,n,r,i){var o,a,s,l,u=Nn;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":for(o=0,a=u.getPointOnCubicBezier(0,t,n,i[0],i[1],i[2],i[3],i[4],i[5]),l=.01;l<=1;l+=.01)s=u.getPointOnCubicBezier(l,t,n,i[0],i[1],i[2],i[3],i[4],i[5]),o+=u.getLineLength(a.x,a.y,s.x,s.y),a=s;return o;case"Q":for(o=0,a=u.getPointOnQuadraticBezier(0,t,n,i[0],i[1],i[2],i[3]),l=.01;l<=1;l+=.01)s=u.getPointOnQuadraticBezier(l,t,n,i[0],i[1],i[2],i[3]),o+=u.getLineLength(a.x,a.y,s.x,s.y),a=s;return o;case"A":o=0;var h=i[4],g=i[5],m=i[4]+g,v=Math.PI/180;if(Math.abs(h-m)m;l-=v)s=u.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=u.getLineLength(a.x,a.y,s.x,s.y),a=s;else for(l=h+v;l1&&(s*=Math.sqrt(v),l*=Math.sqrt(v));var S=Math.sqrt((s*s*(l*l)-s*s*(m*m)-l*l*(g*g))/(s*s*(m*m)+l*l*(g*g)));o===a&&(S*=-1),isNaN(S)&&(S=0);var w=S*s*m/l,k=S*-l*g/s,P=(t+r)/2+Math.cos(h)*w-Math.sin(h)*k,E=(n+i)/2+Math.sin(h)*w+Math.cos(h)*k,T=function(W){return Math.sqrt(W[0]*W[0]+W[1]*W[1])},M=function(W,j){return(W[0]*j[0]+W[1]*j[1])/(T(W)*T(j))},R=function(W,j){return(W[0]*j[1]=1&&($=0),a===0&&$>0&&($=$-2*Math.PI),a===1&&$<0&&($=$+2*Math.PI),[P,E,s,l,O,$,h,a]}}Nn.prototype.className="Path";Nn.prototype._attrsAffectingSize=["data"];gr(Nn);q.addGetterSetter(Nn,"data");class Th extends Fu{_sceneFunc(t){super._sceneFunc(t);var n=Math.PI*2,r=this.points(),i=r,o=this.tension()!==0&&r.length>4;o&&(i=this.getTensionPoints());var a=this.pointerLength(),s=r.length,l,u;if(o){const m=[i[i.length-4],i[i.length-3],i[i.length-2],i[i.length-1],r[s-2],r[s-1]],v=Nn.calcLength(i[i.length-4],i[i.length-3],"C",m),S=Nn.getPointOnQuadraticBezier(Math.min(1,1-a/v),m[0],m[1],m[2],m[3],m[4],m[5]);l=r[s-2]-S.x,u=r[s-1]-S.y}else l=r[s-2]-r[s-4],u=r[s-1]-r[s-3];var h=(Math.atan2(u,l)+n)%n,g=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(r[s-2],r[s-1]),t.rotate(h),t.moveTo(0,0),t.lineTo(-a,g/2),t.lineTo(-a,-g/2),t.closePath(),t.restore(),this.__fillStroke(t)),this.pointerAtBeginning()&&(t.save(),t.beginPath(),t.translate(r[0],r[1]),o?(l=(i[0]+i[2])/2-r[0],u=(i[1]+i[3])/2-r[1]):(l=r[2]-r[0],u=r[3]-r[1]),t.rotate((Math.atan2(-u,-l)+n)%n),t.moveTo(0,0),t.lineTo(-a,g/2),t.lineTo(-a,-g/2),t.closePath(),t.restore(),this.__fillStroke(t))}__fillStroke(t){var n=this.dashEnabled();n&&(this.attrs.dashEnabled=!1,t.setLineDash([])),t.fillStrokeShape(this),n&&(this.attrs.dashEnabled=!0)}getSelfRect(){const t=super.getSelfRect(),n=this.pointerWidth()/2;return{x:t.x-n,y:t.y-n,width:t.width+n*2,height:t.height+n*2}}}Th.prototype.className="Arrow";gr(Th);q.addGetterSetter(Th,"pointerLength",10,Fe());q.addGetterSetter(Th,"pointerWidth",10,Fe());q.addGetterSetter(Th,"pointerAtBeginning",!1);q.addGetterSetter(Th,"pointerAtEnding",!0);class E1 extends Ie{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.attrs.radius||0,0,Math.PI*2,!1),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius()!==t/2&&this.radius(t/2)}setHeight(t){this.radius()!==t/2&&this.radius(t/2)}}E1.prototype._centroid=!0;E1.prototype.className="Circle";E1.prototype._attrsAffectingSize=["radius"];gr(E1);q.addGetterSetter(E1,"radius",0,Fe());class Md extends Ie{_sceneFunc(t){var n=this.radiusX(),r=this.radiusY();t.beginPath(),t.save(),n!==r&&t.scale(1,r/n),t.arc(0,0,n,0,Math.PI*2,!1),t.restore(),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radiusX()*2}getHeight(){return this.radiusY()*2}setWidth(t){this.radiusX(t/2)}setHeight(t){this.radiusY(t/2)}}Md.prototype.className="Ellipse";Md.prototype._centroid=!0;Md.prototype._attrsAffectingSize=["radiusX","radiusY"];gr(Md);q.addComponentsGetterSetter(Md,"radius",["x","y"]);q.addGetterSetter(Md,"radiusX",0,Fe());q.addGetterSetter(Md,"radiusY",0,Fe());class Rs extends Ie{constructor(t){super(t),this.on("imageChange.konva",()=>{this._setImageLoad()}),this._setImageLoad()}_setImageLoad(){const t=this.image();t&&t.complete||t&&t.readyState===4||t&&t.addEventListener&&t.addEventListener("load",()=>{this._requestDraw()})}_useBufferCanvas(){return super._useBufferCanvas(!0)}_sceneFunc(t){const n=this.getWidth(),r=this.getHeight(),i=this.attrs.image;let o;if(i){const a=this.attrs.cropWidth,s=this.attrs.cropHeight;a&&s?o=[i,this.cropX(),this.cropY(),a,s,0,0,n,r]:o=[i,0,0,n,r]}(this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)),i&&t.drawImage.apply(t,o)}_hitFunc(t){var n=this.width(),r=this.height();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}getWidth(){var t,n;return(t=this.attrs.width)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.width}getHeight(){var t,n;return(t=this.attrs.height)!==null&&t!==void 0?t:(n=this.image())===null||n===void 0?void 0:n.height}static fromURL(t,n,r=null){var i=de.createImageElement();i.onload=function(){var o=new Rs({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}}Rs.prototype.className="Image";gr(Rs);q.addGetterSetter(Rs,"image");q.addComponentsGetterSetter(Rs,"crop",["x","y","width","height"]);q.addGetterSetter(Rs,"cropX",0,Fe());q.addGetterSetter(Rs,"cropY",0,Fe());q.addGetterSetter(Rs,"cropWidth",0,Fe());q.addGetterSetter(Rs,"cropHeight",0,Fe());var tV=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],t9e="Change.konva",n9e="none",A7="up",M7="right",I7="down",R7="left",r9e=tV.length;class Tk extends s1{constructor(t){super(t),this.on("add.konva",function(n){this._addListeners(n.child),this._sync()})}getText(){return this.find("Text")[0]}getTag(){return this.find("Tag")[0]}_addListeners(t){var n=this,r,i=function(){n._sync()};for(r=0;r{n=Math.min(n,a.x),r=Math.max(r,a.x),i=Math.min(i,a.y),o=Math.max(o,a.y)}),{x:n,y:i,width:r-n,height:o-i}}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}Ah.prototype.className="RegularPolygon";Ah.prototype._centroid=!0;Ah.prototype._attrsAffectingSize=["radius"];gr(Ah);q.addGetterSetter(Ah,"radius",0,Fe());q.addGetterSetter(Ah,"sides",0,Fe());var lI=Math.PI*2;class Mh extends Ie{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,lI,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),lI,0,!0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.outerRadius()*2}getHeight(){return this.outerRadius()*2}setWidth(t){this.outerRadius(t/2)}setHeight(t){this.outerRadius(t/2)}}Mh.prototype.className="Ring";Mh.prototype._centroid=!0;Mh.prototype._attrsAffectingSize=["innerRadius","outerRadius"];gr(Mh);q.addGetterSetter(Mh,"innerRadius",0,Fe());q.addGetterSetter(Mh,"outerRadius",0,Fe());class Hl extends Ie{constructor(t){super(t),this._updated=!0,this.anim=new Da(()=>{var n=this._updated;return this._updated=!1,n}),this.on("animationChange.konva",function(){this.frameIndex(0)}),this.on("frameIndexChange.konva",function(){this._updated=!0}),this.on("frameRateChange.konva",function(){!this.anim.isRunning()||(clearInterval(this.interval),this._setInterval())})}_sceneFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],a=this.frameOffsets(),s=o[i+0],l=o[i+1],u=o[i+2],h=o[i+3],g=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,u,h),t.closePath(),t.fillStrokeShape(this)),g)if(a){var m=a[n],v=r*2;t.drawImage(g,s,l,u,h,m[v+0],m[v+1],u,h)}else t.drawImage(g,s,l,u,h,0,0,u,h)}_hitFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],a=this.frameOffsets(),s=o[i+2],l=o[i+3];if(t.beginPath(),a){var u=a[n],h=r*2;t.rect(u[h+0],u[h+1],s,l)}else t.rect(0,0,s,l);t.closePath(),t.fillShape(this)}_useBufferCanvas(){return super._useBufferCanvas(!0)}_setInterval(){var t=this;this.interval=setInterval(function(){t._updateIndex()},1e3/this.frameRate())}start(){if(!this.isRunning()){var t=this.getLayer();this.anim.setLayers(t),this._setInterval(),this.anim.start()}}stop(){this.anim.stop(),clearInterval(this.interval)}isRunning(){return this.anim.isRunning()}_updateIndex(){var t=this.frameIndex(),n=this.animation(),r=this.animations(),i=r[n],o=i.length/4;t{t=t.trim();const n=t.indexOf(" ")>=0,r=t.indexOf('"')>=0||t.indexOf("'")>=0;return n&&!r&&(t=`"${t}"`),t}).join(", ")}var v3;function Xw(){return v3||(v3=de.createCanvasElement().getContext(a9e),v3)}function v9e(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function y9e(e){e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function S9e(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}class pr extends Ie{constructor(t){super(S9e(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(P+=a)}}}_hitFunc(t){var n=this.getWidth(),r=this.getHeight();t.beginPath(),t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)}setText(t){var n=de._isString(t)?t:t==null?"":t+"";return this._setAttr(s9e,n),this}getWidth(){var t=this.attrs.width===Vp||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===Vp||this.attrs.height===void 0;return t?this.fontSize()*this.textArr.length*this.lineHeight()+this.padding()*2:this.attrs.height}getTextWidth(){return this.textWidth}getTextHeight(){return de.warn("text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height."),this.textHeight}measureSize(t){var n=Xw(),r=this.fontSize(),i;return n.save(),n.font=this._getContextFont(),i=n.measureText(t),n.restore(),{width:i.width,height:r}}_getContextFont(){return this.fontStyle()+m3+this.fontVariant()+m3+(this.fontSize()+d9e)+m9e(this.fontFamily())}_addTextLine(t){this.align()===rm&&(t=t.trim());var n=this._getTextWidth(t);return this.textArr.push({text:t,width:n,lastInParagraph:!1})}_getTextWidth(t){var n=this.letterSpacing(),r=t.length;return Xw().measureText(t).width+(r?n*(r-1):0)}_setTextData(){var t=this.text().split(` +`),n=+this.fontSize(),r=0,i=this.lineHeight()*n,o=this.attrs.width,a=this.attrs.height,s=o!==Vp&&o!==void 0,l=a!==Vp&&a!==void 0,u=this.padding(),h=o-u*2,g=a-u*2,m=0,v=this.wrap(),S=v!==dI,w=v!==p9e&&S,k=this.ellipsis();this.textArr=[],Xw().font=this._getContextFont();for(var P=k?this._getTextWidth(Kw):0,E=0,T=t.length;Eh)for(;M.length>0;){for(var O=0,D=M.length,B="",$=0;O>>1,j=M.slice(0,W+1),te=this._getTextWidth(j)+P;te<=h?(O=W+1,B=j,$=te):D=W}if(B){if(w){var V,J=M[B.length],re=J===m3||J===uI;re&&$<=h?V=B.length:V=Math.max(B.lastIndexOf(m3),B.lastIndexOf(uI))+1,V>0&&(O=V,B=B.slice(0,O),$=this._getTextWidth(B))}B=B.trimRight(),this._addTextLine(B),r=Math.max(r,$),m+=i;var ee=this._shouldHandleEllipsis(m);if(ee){this._tryToAddEllipsisToLastLine();break}if(M=M.slice(O),M=M.trimLeft(),M.length>0&&(R=this._getTextWidth(M),R<=h)){this._addTextLine(M),m+=i,r=Math.max(r,R);break}}else break}else this._addTextLine(M),m+=i,r=Math.max(r,R),this._shouldHandleEllipsis(m)&&Eg)break;this.textArr[this.textArr.length-1]&&(this.textArr[this.textArr.length-1].lastInParagraph=!0)}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==Vp&&i!==void 0,a=this.padding(),s=i-a*2,l=this.wrap(),u=l!==dI;return!u||o&&t+r>s}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==Vp&&t!==void 0,r=this.padding(),i=t-r*2,o=this.ellipsis(),a=this.textArr[this.textArr.length-1];if(!(!a||!o)){if(n){var s=this._getTextWidth(a.text+Kw)=1){var r=n[0].p0;t.moveTo(r.x,r.y)}for(var i=0;i0&&(s+=t.dataArray[l].pathLength);var u=0;i==="center"&&(u=Math.max(0,s/2-a/2)),i==="right"&&(u=Math.max(0,s-a));for(var h=nV(this.text()),g=this.text().split(" ").length-1,m,v,S,w=-1,k=0,P=function(){k=0;for(var te=t.dataArray,V=w+1;V0)return w=V,te[V];te[V].command==="M"&&(m={x:te[V].points[0],y:te[V].points[1]})}return{}},E=function(te){var V=t._getTextSize(te).width+r;te===" "&&i==="justify"&&(V+=(s-a)/g);var J=0,re=0;for(v=void 0;Math.abs(V-J)/V>.01&&re<20;){re++;for(var ee=J;S===void 0;)S=P(),S&&ee+S.pathLengthV?v=Nn.getPointOnLine(V,m.x,m.y,S.points[0],S.points[1],m.x,m.y):S=void 0;break;case"A":var G=S.points[4],Z=S.points[5],ce=S.points[4]+Z;k===0?k=G+1e-8:V>J?k+=Math.PI/180*Z/Math.abs(Z):k-=Math.PI/360*Z/Math.abs(Z),(Z<0&&k=0&&k>ce)&&(k=ce,K=!0),v=Nn.getPointOnEllipticalArc(S.points[0],S.points[1],S.points[2],S.points[3],k,S.points[6]);break;case"C":k===0?V>S.pathLength?k=1e-8:k=V/S.pathLength:V>J?k+=(V-J)/S.pathLength/2:k=Math.max(k-(J-V)/S.pathLength/2,0),k>1&&(k=1,K=!0),v=Nn.getPointOnCubicBezier(k,S.start.x,S.start.y,S.points[0],S.points[1],S.points[2],S.points[3],S.points[4],S.points[5]);break;case"Q":k===0?k=V/S.pathLength:V>J?k+=(V-J)/S.pathLength:k-=(J-V)/S.pathLength,k>1&&(k=1,K=!0),v=Nn.getPointOnQuadraticBezier(k,S.start.x,S.start.y,S.points[0],S.points[1],S.points[2],S.points[3]);break}v!==void 0&&(J=Nn.getLineLength(m.x,m.y,v.x,v.y)),K&&(K=!1,S=void 0)}},T="C",M=t._getTextSize(T).width+r,R=u/M-1,O=0;Oe+`.${uV}`).join(" "),fI="nodesRect",w9e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],C9e={"top-left":-45,"top-center":0,"top-right":45,"middle-right":-90,"middle-left":90,"bottom-left":-135,"bottom-center":180,"bottom-right":135};const _9e="ontouchstart"in rt._global;function k9e(e,t){if(e==="rotater")return"crosshair";t+=de.degToRad(C9e[e]||0);var n=(de.radToDeg(t)%360+360)%360;return de._inRange(n,315+22.5,360)||de._inRange(n,0,22.5)?"ns-resize":de._inRange(n,45-22.5,45+22.5)?"nesw-resize":de._inRange(n,90-22.5,90+22.5)?"ew-resize":de._inRange(n,135-22.5,135+22.5)?"nwse-resize":de._inRange(n,180-22.5,180+22.5)?"ns-resize":de._inRange(n,225-22.5,225+22.5)?"nesw-resize":de._inRange(n,270-22.5,270+22.5)?"ew-resize":de._inRange(n,315-22.5,315+22.5)?"nwse-resize":(de.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var k5=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],hI=1e8;function E9e(e){return{x:e.x+e.width/2*Math.cos(e.rotation)+e.height/2*Math.sin(-e.rotation),y:e.y+e.height/2*Math.cos(e.rotation)+e.width/2*Math.sin(e.rotation)}}function cV(e,t,n){const r=n.x+(e.x-n.x)*Math.cos(t)-(e.y-n.y)*Math.sin(t),i=n.y+(e.x-n.x)*Math.sin(t)+(e.y-n.y)*Math.cos(t);return Object.assign(Object.assign({},e),{rotation:e.rotation+t,x:r,y:i})}function P9e(e,t){const n=E9e(e);return cV(e,t,n)}function T9e(e,t,n){let r=t;for(let i=0;i{const i=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},o=r._attrsAffectingSize.map(a=>a+"Change."+this._getEventNamespace()).join(" ");r.on(o,i),r.on(w9e.map(a=>a+`.${this._getEventNamespace()}`).join(" "),i),r.on(`absoluteTransformChange.${this._getEventNamespace()}`,i),this._proxyDrag(r)}),this._resetTransformCache();var n=!!this.findOne(".top-left");return n&&this.update(),this}_proxyDrag(t){let n;t.on(`dragstart.${this._getEventNamespace()}`,r=>{n=t.getAbsolutePosition(),!this.isDragging()&&t!==this.findOne(".back")&&this.startDrag(r,!1)}),t.on(`dragmove.${this._getEventNamespace()}`,r=>{if(!n)return;const i=t.getAbsolutePosition(),o=i.x-n.x,a=i.y-n.y;this.nodes().forEach(s=>{if(s===t||s.isDragging())return;const l=s.getAbsolutePosition();s.setAbsolutePosition({x:l.x+o,y:l.y+a}),s.startDrag(r)}),n=null})}getNodes(){return this._nodes||[]}getActiveAnchor(){return this._movingAnchorName}detach(){this._nodes&&this._nodes.forEach(t=>{t.off("."+this._getEventNamespace())}),this._nodes=[],this._resetTransformCache()}_resetTransformCache(){this._clearCache(fI),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(fI,this.__getNodeRect)}__getNodeShape(t,n=this.rotation(),r){var i=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),o=t.getAbsoluteScale(r),a=t.getAbsolutePosition(r),s=i.x*o.x-t.offsetX()*o.x,l=i.y*o.y-t.offsetY()*o.y;const u=(rt.getAngle(t.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),h={x:a.x+s*Math.cos(u)+l*Math.sin(-u),y:a.y+l*Math.cos(u)+s*Math.sin(u),width:i.width*o.x,height:i.height*o.y,rotation:u};return cV(h,-rt.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-hI,y:-hI,width:0,height:0,rotation:0};const n=[];this.nodes().map(u=>{const h=u.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var g=[{x:h.x,y:h.y},{x:h.x+h.width,y:h.y},{x:h.x+h.width,y:h.y+h.height},{x:h.x,y:h.y+h.height}],m=u.getAbsoluteTransform();g.forEach(function(v){var S=m.point(v);n.push(S)})});const r=new aa;r.rotate(-rt.getAngle(this.rotation()));var i,o,a,s;n.forEach(function(u){var h=r.point(u);i===void 0&&(i=a=h.x,o=s=h.y),i=Math.min(i,h.x),o=Math.min(o,h.y),a=Math.max(a,h.x),s=Math.max(s,h.y)}),r.invert();const l=r.point({x:i,y:o});return{x:l.x,y:l.y,width:a-i,height:s-o,rotation:rt.getAngle(this.rotation())}}getX(){return this._getNodeRect().x}getY(){return this._getNodeRect().y}getWidth(){return this._getNodeRect().width}getHeight(){return this._getNodeRect().height}_createElements(){this._createBack(),k5.forEach(function(t){this._createAnchor(t)}.bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new x2({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:_9e?10:"auto"}),r=this;n.on("mousedown touchstart",function(i){r._handleMouseDown(i)}),n.on("dragstart",i=>{n.stopDrag(),i.cancelBubble=!0}),n.on("dragend",i=>{i.cancelBubble=!0}),n.on("mouseenter",()=>{var i=rt.getAngle(this.rotation()),o=k9e(t,i);n.getStage().content&&(n.getStage().content.style.cursor=o),this._cursorChange=!0}),n.on("mouseout",()=>{n.getStage().content&&(n.getStage().content.style.cursor=""),this._cursorChange=!1}),this.add(n)}_createBack(){var t=new Ie({name:"back",width:0,height:0,draggable:!0,sceneFunc(n){var r=this.getParent(),i=r.padding();n.beginPath(),n.rect(-i,-i,this.width()+i*2,this.height()+i*2),n.moveTo(this.width()/2,-i),r.rotateEnabled()&&n.lineTo(this.width()/2,-r.rotateAnchorOffset()*de._sign(this.height())-i),n.fillStrokeShape(this)},hitFunc:(n,r)=>{if(!!this.shouldOverdrawWholeArea()){var i=this.padding();n.beginPath(),n.rect(-i,-i,r.width()+i*2,r.height()+i*2),n.fillStrokeShape(r)}}});this.add(t),this._proxyDrag(t),t.on("dragstart",n=>{n.cancelBubble=!0}),t.on("dragmove",n=>{n.cancelBubble=!0}),t.on("dragend",n=>{n.cancelBubble=!0}),this.on("dragmove",n=>{this.update()})}_handleMouseDown(t){this._movingAnchorName=t.target.name().split(" ")[0];var n=this._getNodeRect(),r=n.width,i=n.height,o=Math.sqrt(Math.pow(r,2)+Math.pow(i,2));this.sin=Math.abs(i/o),this.cos=Math.abs(r/o),typeof window<"u"&&(window.addEventListener("mousemove",this._handleMouseMove),window.addEventListener("touchmove",this._handleMouseMove),window.addEventListener("mouseup",this._handleMouseUp,!0),window.addEventListener("touchend",this._handleMouseUp,!0)),this._transforming=!0;var a=t.target.getAbsolutePosition(),s=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:s.x-a.x,y:s.y-a.y},this._fire("transformstart",{evt:t.evt,target:this.getNode()}),this._nodes.forEach(l=>{l._fire("transformstart",{evt:t.evt,target:l})})}_handleMouseMove(t){var n,r,i,o=this.findOne("."+this._movingAnchorName),a=o.getStage();a.setPointersPositions(t);const s=a.getPointerPosition();let l={x:s.x-this._anchorDragOffset.x,y:s.y-this._anchorDragOffset.y};const u=o.getAbsolutePosition();this.anchorDragBoundFunc()&&(l=this.anchorDragBoundFunc()(u,l,t)),o.setAbsolutePosition(l);const h=o.getAbsolutePosition();if(!(u.x===h.x&&u.y===h.y)){if(this._movingAnchorName==="rotater"){var g=this._getNodeRect();n=o.x()-g.width/2,r=-o.y()+g.height/2;let te=Math.atan2(-r,n)+Math.PI/2;g.height<0&&(te-=Math.PI);var m=rt.getAngle(this.rotation());const V=m+te,J=rt.getAngle(this.rotationSnapTolerance()),ee=T9e(this.rotationSnaps(),V,J)-g.rotation,K=P9e(g,ee);this._fitNodesInto(K,t);return}var v=this.keepRatio()||t.shiftKey,E=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(v){var S=E?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-right").x(),y:this.findOne(".bottom-right").y()};i=Math.sqrt(Math.pow(S.x-o.x(),2)+Math.pow(S.y-o.y(),2));var w=this.findOne(".top-left").x()>S.x?-1:1,k=this.findOne(".top-left").y()>S.y?-1:1;n=i*this.cos*w,r=i*this.sin*k,this.findOne(".top-left").x(S.x-n),this.findOne(".top-left").y(S.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(v){var S=E?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".bottom-left").x(),y:this.findOne(".bottom-left").y()};i=Math.sqrt(Math.pow(o.x()-S.x,2)+Math.pow(S.y-o.y(),2));var w=this.findOne(".top-right").x()S.y?-1:1;n=i*this.cos*w,r=i*this.sin*k,this.findOne(".top-right").x(S.x+n),this.findOne(".top-right").y(S.y-r)}var P=o.position();this.findOne(".top-left").y(P.y),this.findOne(".bottom-right").x(P.x)}else if(this._movingAnchorName==="middle-left")this.findOne(".top-left").x(o.x());else if(this._movingAnchorName==="middle-right")this.findOne(".bottom-right").x(o.x());else if(this._movingAnchorName==="bottom-left"){if(v){var S=E?{x:this.width()/2,y:this.height()/2}:{x:this.findOne(".top-right").x(),y:this.findOne(".top-right").y()};i=Math.sqrt(Math.pow(S.x-o.x(),2)+Math.pow(o.y()-S.y,2));var w=S.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(de._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(de._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var a=new aa;if(a.rotate(rt.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const g=a.point({x:-this.padding()*2,y:0});if(t.x+=g.x,t.y+=g.y,t.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,!o){this.update();return}}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const g=a.point({x:this.padding()*2,y:0});if(this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.width+=this.padding()*2,!o){this.update();return}}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const g=a.point({x:0,y:-this.padding()*2});if(t.x+=g.x,t.y+=g.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.height+=this.padding()*2,!o){this.update();return}}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const g=a.point({x:0,y:this.padding()*2});if(this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=g.x,this._anchorDragOffset.y-=g.y,t.height+=this.padding()*2,!o){this.update();return}}if(this.boundBoxFunc()){const g=this.boundBoxFunc()(r,t);g?t=g:de.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const s=1e7,l=new aa;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/s,r.height/s);const u=new aa;u.translate(t.x,t.y),u.rotate(t.rotation),u.scale(t.width/s,t.height/s);const h=u.multiply(l.invert());this._nodes.forEach(g=>{var m;const v=g.getParent().getAbsoluteTransform(),S=g.getTransform().copy();S.translate(g.offsetX(),g.offsetY());const w=new aa;w.multiply(v.copy().invert()).multiply(h).multiply(v).multiply(S);const k=w.decompose();g.setAttrs(k),this._fire("transform",{evt:n,target:g}),g._fire("transform",{evt:n,target:g}),(m=g.getLayer())===null||m===void 0||m.batchDraw()}),this.rotation(de._getRotation(t.rotation)),this._resetTransformCache(),this.update(),this.getLayer().batchDraw()}forceUpdate(){this._resetTransformCache(),this.update()}_batchChangeChild(t,n){this.findOne(t).setAttrs(n)}update(){var t,n=this._getNodeRect();this.rotation(de._getRotation(n.rotation));var r=n.width,i=n.height,o=this.enabledAnchors(),a=this.resizeEnabled(),s=this.padding(),l=this.anchorSize();this.find("._anchor").forEach(u=>{u.setAttrs({width:l,height:l,offsetX:l/2,offsetY:l/2,stroke:this.anchorStroke(),strokeWidth:this.anchorStrokeWidth(),fill:this.anchorFill(),cornerRadius:this.anchorCornerRadius()})}),this._batchChangeChild(".top-left",{x:0,y:0,offsetX:l/2+s,offsetY:l/2+s,visible:a&&o.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:r/2,y:0,offsetY:l/2+s,visible:a&&o.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:r,y:0,offsetX:l/2-s,offsetY:l/2+s,visible:a&&o.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:i/2,offsetX:l/2+s,visible:a&&o.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:r,y:i/2,offsetX:l/2-s,visible:a&&o.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:i,offsetX:l/2+s,offsetY:l/2-s,visible:a&&o.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:r/2,y:i,offsetY:l/2-s,visible:a&&o.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:r,y:i,offsetX:l/2-s,offsetY:l/2-s,visible:a&&o.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:r/2,y:-this.rotateAnchorOffset()*de._sign(i)-s,visible:this.rotateEnabled()}),this._batchChangeChild(".back",{width:r,height:i,visible:this.borderEnabled(),stroke:this.borderStroke(),strokeWidth:this.borderStrokeWidth(),dash:this.borderDash(),x:0,y:0}),(t=this.getLayer())===null||t===void 0||t.batchDraw()}isTransforming(){return this._transforming}stopTransform(){if(this._transforming){this._removeEvents();var t=this.findOne("."+this._movingAnchorName);t&&t.stopDrag()}}destroy(){return this.getStage()&&this._cursorChange&&this.getStage().content&&(this.getStage().content.style.cursor=""),s1.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return $e.prototype.toObject.call(this)}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}function L9e(e){return e instanceof Array||de.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){k5.indexOf(t)===-1&&de.warn("Unknown anchor name: "+t+". Available names are: "+k5.join(", "))}),e||[]}En.prototype.className="Transformer";gr(En);q.addGetterSetter(En,"enabledAnchors",k5,L9e);q.addGetterSetter(En,"flipEnabled",!0,Is());q.addGetterSetter(En,"resizeEnabled",!0);q.addGetterSetter(En,"anchorSize",10,Fe());q.addGetterSetter(En,"rotateEnabled",!0);q.addGetterSetter(En,"rotationSnaps",[]);q.addGetterSetter(En,"rotateAnchorOffset",50,Fe());q.addGetterSetter(En,"rotationSnapTolerance",5,Fe());q.addGetterSetter(En,"borderEnabled",!0);q.addGetterSetter(En,"anchorStroke","rgb(0, 161, 255)");q.addGetterSetter(En,"anchorStrokeWidth",1,Fe());q.addGetterSetter(En,"anchorFill","white");q.addGetterSetter(En,"anchorCornerRadius",0,Fe());q.addGetterSetter(En,"borderStroke","rgb(0, 161, 255)");q.addGetterSetter(En,"borderStrokeWidth",1,Fe());q.addGetterSetter(En,"borderDash");q.addGetterSetter(En,"keepRatio",!0);q.addGetterSetter(En,"centeredScaling",!1);q.addGetterSetter(En,"ignoreStroke",!1);q.addGetterSetter(En,"padding",0,Fe());q.addGetterSetter(En,"node");q.addGetterSetter(En,"nodes");q.addGetterSetter(En,"boundBoxFunc");q.addGetterSetter(En,"anchorDragBoundFunc");q.addGetterSetter(En,"shouldOverdrawWholeArea",!1);q.addGetterSetter(En,"useSingleNodeRotation",!0);q.backCompat(En,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});class $u extends Ie{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,rt.getAngle(this.angle()),this.clockwise()),t.lineTo(0,0),t.closePath(),t.fillStrokeShape(this)}getWidth(){return this.radius()*2}getHeight(){return this.radius()*2}setWidth(t){this.radius(t/2)}setHeight(t){this.radius(t/2)}}$u.prototype.className="Wedge";$u.prototype._centroid=!0;$u.prototype._attrsAffectingSize=["radius"];gr($u);q.addGetterSetter($u,"radius",0,Fe());q.addGetterSetter($u,"angle",0,Fe());q.addGetterSetter($u,"clockwise",!1);q.backCompat($u,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});function pI(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var A9e=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],M9e=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function I9e(e,t){var n=e.data,r=e.width,i=e.height,o,a,s,l,u,h,g,m,v,S,w,k,P,E,T,M,R,O,D,B,$,W,j,te,V=t+t+1,J=r-1,re=i-1,ee=t+1,K=ee*(ee+1)/2,G=new pI,Z=null,ce=G,me=null,Re=null,xe=A9e[t],Se=M9e[t];for(s=1;s>Se,j!==0?(j=255/j,n[h]=(m*xe>>Se)*j,n[h+1]=(v*xe>>Se)*j,n[h+2]=(S*xe>>Se)*j):n[h]=n[h+1]=n[h+2]=0,m-=k,v-=P,S-=E,w-=T,k-=me.r,P-=me.g,E-=me.b,T-=me.a,l=g+((l=o+t+1)>Se,j>0?(j=255/j,n[l]=(m*xe>>Se)*j,n[l+1]=(v*xe>>Se)*j,n[l+2]=(S*xe>>Se)*j):n[l]=n[l+1]=n[l+2]=0,m-=k,v-=P,S-=E,w-=T,k-=me.r,P-=me.g,E-=me.b,T-=me.a,l=o+((l=a+ee)0&&I9e(t,n)};q.addGetterSetter($e,"blurRadius",0,Fe(),q.afterSetFilter);const O9e=function(e){var t=this.brightness()*255,n=e.data,r=n.length,i;for(i=0;i255?255:i,o=o<0?0:o>255?255:o,a=a<0?0:a>255?255:a,n[s]=i,n[s+1]=o,n[s+2]=a};q.addGetterSetter($e,"contrast",0,Fe(),q.afterSetFilter);const N9e=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,a=0,s=e.data,l=e.width,u=e.height,h=l*4,g=u;switch(r){case"top-left":o=-1,a=-1;break;case"top":o=-1,a=0;break;case"top-right":o=-1,a=1;break;case"right":o=0,a=1;break;case"bottom-right":o=1,a=1;break;case"bottom":o=1,a=0;break;case"bottom-left":o=1,a=-1;break;case"left":o=0,a=-1;break;default:de.error("Unknown emboss direction: "+r)}do{var m=(g-1)*h,v=o;g+v<1&&(v=0),g+v>u&&(v=0);var S=(g-1+v)*l*4,w=l;do{var k=m+(w-1)*4,P=a;w+P<1&&(P=0),w+P>l&&(P=0);var E=S+(w-1+P)*4,T=s[k]-s[E],M=s[k+1]-s[E+1],R=s[k+2]-s[E+2],O=T,D=O>0?O:-O,B=M>0?M:-M,$=R>0?R:-R;if(B>D&&(O=M),$>D&&(O=R),O*=t,i){var W=s[k]+O,j=s[k+1]+O,te=s[k+2]+O;s[k]=W>255?255:W<0?0:W,s[k+1]=j>255?255:j<0?0:j,s[k+2]=te>255?255:te<0?0:te}else{var V=n-O;V<0?V=0:V>255&&(V=255),s[k]=s[k+1]=s[k+2]=V}}while(--w)}while(--g)};q.addGetterSetter($e,"embossStrength",.5,Fe(),q.afterSetFilter);q.addGetterSetter($e,"embossWhiteLevel",.5,Fe(),q.afterSetFilter);q.addGetterSetter($e,"embossDirection","top-left",null,q.afterSetFilter);q.addGetterSetter($e,"embossBlend",!1,null,q.afterSetFilter);function Zw(e,t,n,r,i){var o=n-t,a=i-r,s;return o===0?r+a/2:a===0?r:(s=(e-t)/o,s=a*s+r,s)}const B9e=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,a=t[1],s=a,l,u=t[2],h=u,g,m,v=this.enhance();if(v!==0){for(m=0;mi&&(i=o),l=t[m+1],ls&&(s=l),g=t[m+2],gh&&(h=g);i===r&&(i=255,r=0),s===a&&(s=255,a=0),h===u&&(h=255,u=0);var S,w,k,P,E,T,M,R,O;for(v>0?(w=i+v*(255-i),k=r-v*(r-0),E=s+v*(255-s),T=a-v*(a-0),R=h+v*(255-h),O=u-v*(u-0)):(S=(i+r)*.5,w=i+v*(i-S),k=r+v*(r-S),P=(s+a)*.5,E=s+v*(s-P),T=a+v*(a-P),M=(h+u)*.5,R=h+v*(h-M),O=u+v*(u-M)),m=0;mP?k:P;var E=a,T=o,M,R,O=360/T*Math.PI/180,D,B;for(R=0;RT?E:T;var M=a,R=o,O,D,B=n.polarRotation||0,$,W;for(h=0;ht&&(M=T,R=0,O=-1),i=0;i=0&&v=0&&S=0&&v=0&&S=255*4?255:0}return a}function X9e(e,t,n){for(var r=[.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111,.1111111111111111],i=Math.round(Math.sqrt(r.length)),o=Math.floor(i/2),a=[],s=0;s=0&&v=0&&S=n))for(o=w;o=r||(a=(n*o+i)*4,s+=M[a+0],l+=M[a+1],u+=M[a+2],h+=M[a+3],T+=1);for(s=s/T,l=l/T,u=u/T,h=h/T,i=v;i=n))for(o=w;o=r||(a=(n*o+i)*4,M[a+0]=s,M[a+1]=l,M[a+2]=u,M[a+3]=h)}};q.addGetterSetter($e,"pixelSize",8,Fe(),q.afterSetFilter);const e8e=function(e){var t=Math.round(this.levels()*254)+1,n=e.data,r=n.length,i=255/t,o;for(o=0;o255?255:e<0?0:Math.round(e)});q.addGetterSetter($e,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});q.addGetterSetter($e,"blue",0,RW,q.afterSetFilter);const n8e=function(e){var t=e.data,n=t.length,r=this.red(),i=this.green(),o=this.blue(),a=this.alpha(),s,l;for(s=0;s255?255:e<0?0:Math.round(e)});q.addGetterSetter($e,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});q.addGetterSetter($e,"blue",0,RW,q.afterSetFilter);q.addGetterSetter($e,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});const r8e=function(e){var t=e.data,n=t.length,r,i,o,a;for(r=0;r127&&(u=255-u),h>127&&(h=255-h),g>127&&(g=255-g),t[l]=u,t[l+1]=h,t[l+2]=g}while(--s)}while(--o)},o8e=function(e){var t=this.threshold()*255,n=e.data,r=n.length,i;for(i=0;iae||L[H]!==I[ae]){var fe=` +`+L[H].replace(" at new "," at ");return d.displayName&&fe.includes("")&&(fe=fe.replace("",d.displayName)),fe}while(1<=H&&0<=ae);break}}}finally{Bs=!1,Error.prepareStackTrace=y}return(d=d?d.displayName||d.name:"")?Vl(d):""}var Nh=Object.prototype.hasOwnProperty,Uu=[],zs=-1;function zo(d){return{current:d}}function Pn(d){0>zs||(d.current=Uu[zs],Uu[zs]=null,zs--)}function Sn(d,f){zs++,Uu[zs]=d.current,d.current=f}var Fo={},kr=zo(Fo),Gr=zo(!1),$o=Fo;function Fs(d,f){var y=d.type.contextTypes;if(!y)return Fo;var _=d.stateNode;if(_&&_.__reactInternalMemoizedUnmaskedChildContext===f)return _.__reactInternalMemoizedMaskedChildContext;var L={},I;for(I in y)L[I]=f[I];return _&&(d=d.stateNode,d.__reactInternalMemoizedUnmaskedChildContext=f,d.__reactInternalMemoizedMaskedChildContext=L),L}function jr(d){return d=d.childContextTypes,d!=null}function Qa(){Pn(Gr),Pn(kr)}function Nd(d,f,y){if(kr.current!==Fo)throw Error(a(168));Sn(kr,f),Sn(Gr,y)}function Gl(d,f,y){var _=d.stateNode;if(f=f.childContextTypes,typeof _.getChildContext!="function")return y;_=_.getChildContext();for(var L in _)if(!(L in f))throw Error(a(108,B(d)||"Unknown",L));return o({},y,_)}function Ja(d){return d=(d=d.stateNode)&&d.__reactInternalMemoizedMergedChildContext||Fo,$o=kr.current,Sn(kr,d),Sn(Gr,Gr.current),!0}function Bd(d,f,y){var _=d.stateNode;if(!_)throw Error(a(169));y?(d=Gl(d,f,$o),_.__reactInternalMemoizedMergedChildContext=d,Pn(Gr),Pn(kr),Sn(kr,d)):Pn(Gr),Sn(Gr,y)}var vi=Math.clz32?Math.clz32:zd,Bh=Math.log,zh=Math.LN2;function zd(d){return d>>>=0,d===0?32:31-(Bh(d)/zh|0)|0}var $s=64,uo=4194304;function Hs(d){switch(d&-d){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: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 d&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return d&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return d}}function jl(d,f){var y=d.pendingLanes;if(y===0)return 0;var _=0,L=d.suspendedLanes,I=d.pingedLanes,H=y&268435455;if(H!==0){var ae=H&~L;ae!==0?_=Hs(ae):(I&=H,I!==0&&(_=Hs(I)))}else H=y&~L,H!==0?_=Hs(H):I!==0&&(_=Hs(I));if(_===0)return 0;if(f!==0&&f!==_&&(f&L)===0&&(L=_&-_,I=f&-f,L>=I||L===16&&(I&4194240)!==0))return f;if((_&4)!==0&&(_|=y&16),f=d.entangledLanes,f!==0)for(d=d.entanglements,f&=_;0y;y++)f.push(d);return f}function xa(d,f,y){d.pendingLanes|=f,f!==536870912&&(d.suspendedLanes=0,d.pingedLanes=0),d=d.eventTimes,f=31-vi(f),d[f]=y}function $d(d,f){var y=d.pendingLanes&~f;d.pendingLanes=f,d.suspendedLanes=0,d.pingedLanes=0,d.expiredLanes&=f,d.mutableReadLanes&=f,d.entangledLanes&=f,f=d.entanglements;var _=d.eventTimes;for(d=d.expirationTimes;0>=H,L-=H,Ui=1<<32-vi(f)+L|y<Ft?(zr=Pt,Pt=null):zr=Pt.sibling;var Kt=je(pe,Pt,ve[Ft],Ve);if(Kt===null){Pt===null&&(Pt=zr);break}d&&Pt&&Kt.alternate===null&&f(pe,Pt),le=I(Kt,le,Ft),Mt===null?Te=Kt:Mt.sibling=Kt,Mt=Kt,Pt=zr}if(Ft===ve.length)return y(pe,Pt),Fn&&Ws(pe,Ft),Te;if(Pt===null){for(;FtFt?(zr=Pt,Pt=null):zr=Pt.sibling;var ls=je(pe,Pt,Kt.value,Ve);if(ls===null){Pt===null&&(Pt=zr);break}d&&Pt&&ls.alternate===null&&f(pe,Pt),le=I(ls,le,Ft),Mt===null?Te=ls:Mt.sibling=ls,Mt=ls,Pt=zr}if(Kt.done)return y(pe,Pt),Fn&&Ws(pe,Ft),Te;if(Pt===null){for(;!Kt.done;Ft++,Kt=ve.next())Kt=At(pe,Kt.value,Ve),Kt!==null&&(le=I(Kt,le,Ft),Mt===null?Te=Kt:Mt.sibling=Kt,Mt=Kt);return Fn&&Ws(pe,Ft),Te}for(Pt=_(pe,Pt);!Kt.done;Ft++,Kt=ve.next())Kt=Hn(Pt,pe,Ft,Kt.value,Ve),Kt!==null&&(d&&Kt.alternate!==null&&Pt.delete(Kt.key===null?Ft:Kt.key),le=I(Kt,le,Ft),Mt===null?Te=Kt:Mt.sibling=Kt,Mt=Kt);return d&&Pt.forEach(function(ui){return f(pe,ui)}),Fn&&Ws(pe,Ft),Te}function Zo(pe,le,ve,Ve){if(typeof ve=="object"&&ve!==null&&ve.type===h&&ve.key===null&&(ve=ve.props.children),typeof ve=="object"&&ve!==null){switch(ve.$$typeof){case l:e:{for(var Te=ve.key,Mt=le;Mt!==null;){if(Mt.key===Te){if(Te=ve.type,Te===h){if(Mt.tag===7){y(pe,Mt.sibling),le=L(Mt,ve.props.children),le.return=pe,pe=le;break e}}else if(Mt.elementType===Te||typeof Te=="object"&&Te!==null&&Te.$$typeof===T&&Z1(Te)===Mt.type){y(pe,Mt.sibling),le=L(Mt,ve.props),le.ref=_a(pe,Mt,ve),le.return=pe,pe=le;break e}y(pe,Mt);break}else f(pe,Mt);Mt=Mt.sibling}ve.type===h?(le=nl(ve.props.children,pe.mode,Ve,ve.key),le.return=pe,pe=le):(Ve=gf(ve.type,ve.key,ve.props,null,pe.mode,Ve),Ve.ref=_a(pe,le,ve),Ve.return=pe,pe=Ve)}return H(pe);case u:e:{for(Mt=ve.key;le!==null;){if(le.key===Mt)if(le.tag===4&&le.stateNode.containerInfo===ve.containerInfo&&le.stateNode.implementation===ve.implementation){y(pe,le.sibling),le=L(le,ve.children||[]),le.return=pe,pe=le;break e}else{y(pe,le);break}else f(pe,le);le=le.sibling}le=rl(ve,pe.mode,Ve),le.return=pe,pe=le}return H(pe);case T:return Mt=ve._init,Zo(pe,le,Mt(ve._payload),Ve)}if(re(ve))return Tn(pe,le,ve,Ve);if(O(ve))return nr(pe,le,ve,Ve);Oi(pe,ve)}return typeof ve=="string"&&ve!==""||typeof ve=="number"?(ve=""+ve,le!==null&&le.tag===6?(y(pe,le.sibling),le=L(le,ve),le.return=pe,pe=le):(y(pe,le),le=kp(ve,pe.mode,Ve),le.return=pe,pe=le),H(pe)):y(pe,le)}return Zo}var tc=I2(!0),R2=I2(!1),Zd={},po=zo(Zd),ka=zo(Zd),ie=zo(Zd);function ye(d){if(d===Zd)throw Error(a(174));return d}function ge(d,f){Sn(ie,f),Sn(ka,d),Sn(po,Zd),d=K(f),Pn(po),Sn(po,d)}function Ge(){Pn(po),Pn(ka),Pn(ie)}function Et(d){var f=ye(ie.current),y=ye(po.current);f=G(y,d.type,f),y!==f&&(Sn(ka,d),Sn(po,f))}function Jt(d){ka.current===d&&(Pn(po),Pn(ka))}var Rt=zo(0);function dn(d){for(var f=d;f!==null;){if(f.tag===13){var y=f.memoizedState;if(y!==null&&(y=y.dehydrated,y===null||Wu(y)||Dd(y)))return f}else if(f.tag===19&&f.memoizedProps.revealOrder!==void 0){if((f.flags&128)!==0)return f}else if(f.child!==null){f.child.return=f,f=f.child;continue}if(f===d)break;for(;f.sibling===null;){if(f.return===null||f.return===d)return null;f=f.return}f.sibling.return=f.return,f=f.sibling}return null}var Qd=[];function Q1(){for(var d=0;dy?y:4,d(!0);var _=nc.transition;nc.transition={};try{d(!1),f()}finally{Ht=y,nc.transition=_}}function uc(){return bi().memoizedState}function ag(d,f,y){var _=Ar(d);if(y={lane:_,action:y,hasEagerState:!1,eagerState:null,next:null},dc(d))fc(f,y);else if(y=ec(d,f,y,_),y!==null){var L=li();vo(y,d,_,L),of(y,f,_)}}function cc(d,f,y){var _=Ar(d),L={lane:_,action:y,hasEagerState:!1,eagerState:null,next:null};if(dc(d))fc(f,L);else{var I=d.alternate;if(d.lanes===0&&(I===null||I.lanes===0)&&(I=f.lastRenderedReducer,I!==null))try{var H=f.lastRenderedState,ae=I(H,y);if(L.hasEagerState=!0,L.eagerState=ae,U(ae,H)){var fe=f.interleaved;fe===null?(L.next=L,Kd(f)):(L.next=fe.next,fe.next=L),f.interleaved=L;return}}catch{}finally{}y=ec(d,f,L,_),y!==null&&(L=li(),vo(y,d,_,L),of(y,f,_))}}function dc(d){var f=d.alternate;return d===bn||f!==null&&f===bn}function fc(d,f){Jd=tn=!0;var y=d.pending;y===null?f.next=f:(f.next=y.next,y.next=f),d.pending=f}function of(d,f,y){if((y&4194240)!==0){var _=f.lanes;_&=d.pendingLanes,y|=_,f.lanes=y,Yl(d,y)}}var ns={readContext:Gi,useCallback:ii,useContext:ii,useEffect:ii,useImperativeHandle:ii,useInsertionEffect:ii,useLayoutEffect:ii,useMemo:ii,useReducer:ii,useRef:ii,useState:ii,useDebugValue:ii,useDeferredValue:ii,useTransition:ii,useMutableSource:ii,useSyncExternalStore:ii,useId:ii,unstable_isNewReconciler:!1},kb={readContext:Gi,useCallback:function(d,f){return qr().memoizedState=[d,f===void 0?null:f],d},useContext:Gi,useEffect:N2,useImperativeHandle:function(d,f,y){return y=y!=null?y.concat([d]):null,Zl(4194308,4,vr.bind(null,f,d),y)},useLayoutEffect:function(d,f){return Zl(4194308,4,d,f)},useInsertionEffect:function(d,f){return Zl(4,2,d,f)},useMemo:function(d,f){var y=qr();return f=f===void 0?null:f,d=d(),y.memoizedState=[d,f],d},useReducer:function(d,f,y){var _=qr();return f=y!==void 0?y(f):f,_.memoizedState=_.baseState=f,d={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:f},_.queue=d,d=d.dispatch=ag.bind(null,bn,d),[_.memoizedState,d]},useRef:function(d){var f=qr();return d={current:d},f.memoizedState=d},useState:D2,useDebugValue:rg,useDeferredValue:function(d){return qr().memoizedState=d},useTransition:function(){var d=D2(!1),f=d[0];return d=og.bind(null,d[1]),qr().memoizedState=d,[f,d]},useMutableSource:function(){},useSyncExternalStore:function(d,f,y){var _=bn,L=qr();if(Fn){if(y===void 0)throw Error(a(407));y=y()}else{if(y=f(),Br===null)throw Error(a(349));(Xl&30)!==0||ng(_,f,y)}L.memoizedState=y;var I={value:y,getSnapshot:f};return L.queue=I,N2(Gs.bind(null,_,I,d),[d]),_.flags|=2048,nf(9,sc.bind(null,_,I,y,f),void 0,null),y},useId:function(){var d=qr(),f=Br.identifierPrefix;if(Fn){var y=wa,_=Ui;y=(_&~(1<<32-vi(_)-1)).toString(32)+y,f=":"+f+"R"+y,y=rc++,0gp&&(f.flags|=128,_=!0,gc(L,!1),f.lanes=4194304)}else{if(!_)if(d=dn(I),d!==null){if(f.flags|=128,_=!0,d=d.updateQueue,d!==null&&(f.updateQueue=d,f.flags|=4),gc(L,!0),L.tail===null&&L.tailMode==="hidden"&&!I.alternate&&!Fn)return oi(f),null}else 2*Un()-L.renderingStartTime>gp&&y!==1073741824&&(f.flags|=128,_=!0,gc(L,!1),f.lanes=4194304);L.isBackwards?(I.sibling=f.child,f.child=I):(d=L.last,d!==null?d.sibling=I:f.child=I,L.last=I)}return L.tail!==null?(f=L.tail,L.rendering=f,L.tail=f.sibling,L.renderingStartTime=Un(),f.sibling=null,d=Rt.current,Sn(Rt,_?d&1|2:d&1),f):(oi(f),null);case 22:case 23:return _c(),y=f.memoizedState!==null,d!==null&&d.memoizedState!==null!==y&&(f.flags|=8192),y&&(f.mode&1)!==0?(Yi&1073741824)!==0&&(oi(f),gt&&f.subtreeFlags&6&&(f.flags|=8192)):oi(f),null;case 24:return null;case 25:return null}throw Error(a(156,f.tag))}function pg(d,f){switch(Y1(f),f.tag){case 1:return jr(f.type)&&Qa(),d=f.flags,d&65536?(f.flags=d&-65537|128,f):null;case 3:return Ge(),Pn(Gr),Pn(kr),Q1(),d=f.flags,(d&65536)!==0&&(d&128)===0?(f.flags=d&-65537|128,f):null;case 5:return Jt(f),null;case 13:if(Pn(Rt),d=f.memoizedState,d!==null&&d.dehydrated!==null){if(f.alternate===null)throw Error(a(340));Zu()}return d=f.flags,d&65536?(f.flags=d&-65537|128,f):null;case 19:return Pn(Rt),null;case 4:return Ge(),null;case 10:return Yd(f.type._context),null;case 22:case 23:return _c(),null;case 24:return null;default:return null}}var Ys=!1,Pr=!1,Mb=typeof WeakSet=="function"?WeakSet:Set,Ke=null;function mc(d,f){var y=d.ref;if(y!==null)if(typeof y=="function")try{y(null)}catch(_){jn(d,f,_)}else y.current=null}function Yo(d,f,y){try{y()}catch(_){jn(d,f,_)}}var np=!1;function Jl(d,f){for(Z(d.containerInfo),Ke=f;Ke!==null;)if(d=Ke,f=d.child,(d.subtreeFlags&1028)!==0&&f!==null)f.return=d,Ke=f;else for(;Ke!==null;){d=Ke;try{var y=d.alternate;if((d.flags&1024)!==0)switch(d.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var _=y.memoizedProps,L=y.memoizedState,I=d.stateNode,H=I.getSnapshotBeforeUpdate(d.elementType===d.type?_:Wo(d.type,_),L);I.__reactInternalSnapshotBeforeUpdate=H}break;case 3:gt&&Os(d.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(ae){jn(d,d.return,ae)}if(f=d.sibling,f!==null){f.return=d.return,Ke=f;break}Ke=d.return}return y=np,np=!1,y}function ai(d,f,y){var _=f.updateQueue;if(_=_!==null?_.lastEffect:null,_!==null){var L=_=_.next;do{if((L.tag&d)===d){var I=L.destroy;L.destroy=void 0,I!==void 0&&Yo(f,y,I)}L=L.next}while(L!==_)}}function rp(d,f){if(f=f.updateQueue,f=f!==null?f.lastEffect:null,f!==null){var y=f=f.next;do{if((y.tag&d)===d){var _=y.create;y.destroy=_()}y=y.next}while(y!==f)}}function ip(d){var f=d.ref;if(f!==null){var y=d.stateNode;switch(d.tag){case 5:d=ee(y);break;default:d=y}typeof f=="function"?f(d):f.current=d}}function gg(d){var f=d.alternate;f!==null&&(d.alternate=null,gg(f)),d.child=null,d.deletions=null,d.sibling=null,d.tag===5&&(f=d.stateNode,f!==null&&it(f)),d.stateNode=null,d.return=null,d.dependencies=null,d.memoizedProps=null,d.memoizedState=null,d.pendingProps=null,d.stateNode=null,d.updateQueue=null}function vc(d){return d.tag===5||d.tag===3||d.tag===4}function is(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||vc(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function op(d,f,y){var _=d.tag;if(_===5||_===6)d=d.stateNode,f?He(y,d,f):It(y,d);else if(_!==4&&(d=d.child,d!==null))for(op(d,f,y),d=d.sibling;d!==null;)op(d,f,y),d=d.sibling}function mg(d,f,y){var _=d.tag;if(_===5||_===6)d=d.stateNode,f?zn(y,d,f):ke(y,d);else if(_!==4&&(d=d.child,d!==null))for(mg(d,f,y),d=d.sibling;d!==null;)mg(d,f,y),d=d.sibling}var Sr=null,qo=!1;function Ko(d,f,y){for(y=y.child;y!==null;)Tr(d,f,y),y=y.sibling}function Tr(d,f,y){if(Wt&&typeof Wt.onCommitFiberUnmount=="function")try{Wt.onCommitFiberUnmount(cn,y)}catch{}switch(y.tag){case 5:Pr||mc(y,f);case 6:if(gt){var _=Sr,L=qo;Sr=null,Ko(d,f,y),Sr=_,qo=L,Sr!==null&&(qo?tt(Sr,y.stateNode):ht(Sr,y.stateNode))}else Ko(d,f,y);break;case 18:gt&&Sr!==null&&(qo?W1(Sr,y.stateNode):H1(Sr,y.stateNode));break;case 4:gt?(_=Sr,L=qo,Sr=y.stateNode.containerInfo,qo=!0,Ko(d,f,y),Sr=_,qo=L):(dt&&(_=y.stateNode.containerInfo,L=ba(_),Hu(_,L)),Ko(d,f,y));break;case 0:case 11:case 14:case 15:if(!Pr&&(_=y.updateQueue,_!==null&&(_=_.lastEffect,_!==null))){L=_=_.next;do{var I=L,H=I.destroy;I=I.tag,H!==void 0&&((I&2)!==0||(I&4)!==0)&&Yo(y,f,H),L=L.next}while(L!==_)}Ko(d,f,y);break;case 1:if(!Pr&&(mc(y,f),_=y.stateNode,typeof _.componentWillUnmount=="function"))try{_.props=y.memoizedProps,_.state=y.memoizedState,_.componentWillUnmount()}catch(ae){jn(y,f,ae)}Ko(d,f,y);break;case 21:Ko(d,f,y);break;case 22:y.mode&1?(Pr=(_=Pr)||y.memoizedState!==null,Ko(d,f,y),Pr=_):Ko(d,f,y);break;default:Ko(d,f,y)}}function ap(d){var f=d.updateQueue;if(f!==null){d.updateQueue=null;var y=d.stateNode;y===null&&(y=d.stateNode=new Mb),f.forEach(function(_){var L=ey.bind(null,d,_);y.has(_)||(y.add(_),_.then(L,L))})}}function go(d,f){var y=f.deletions;if(y!==null)for(var _=0;_";case cp:return":has("+(Sg(d)||"")+")";case dp:return'[role="'+d.value+'"]';case fp:return'"'+d.value+'"';case yc:return'[data-testname="'+d.value+'"]';default:throw Error(a(365))}}function Sc(d,f){var y=[];d=[d,0];for(var _=0;_L&&(L=H),_&=~I}if(_=L,_=Un()-_,_=(120>_?120:480>_?480:1080>_?1080:1920>_?1920:3e3>_?3e3:4320>_?4320:1960*Ib(_/1960))-_,10<_){d.timeoutHandle=Je(tl.bind(null,d,wi,as),_);break}tl(d,wi,as);break;case 5:tl(d,wi,as);break;default:throw Error(a(329))}}}return Xr(d,Un()),d.callbackNode===y?yp.bind(null,d):null}function Sp(d,f){var y=wc;return d.current.memoizedState.isDehydrated&&(Js(d,f).flags|=256),d=kc(d,f),d!==2&&(f=wi,wi=y,f!==null&&bp(f)),d}function bp(d){wi===null?wi=d:wi.push.apply(wi,d)}function qi(d){for(var f=d;;){if(f.flags&16384){var y=f.updateQueue;if(y!==null&&(y=y.stores,y!==null))for(var _=0;_d?16:d,kt===null)var _=!1;else{if(d=kt,kt=null,mp=0,(zt&6)!==0)throw Error(a(331));var L=zt;for(zt|=4,Ke=d.current;Ke!==null;){var I=Ke,H=I.child;if((Ke.flags&16)!==0){var ae=I.deletions;if(ae!==null){for(var fe=0;feUn()-wg?Js(d,0):xg|=y),Xr(d,f)}function Pg(d,f){f===0&&((d.mode&1)===0?f=1:(f=uo,uo<<=1,(uo&130023424)===0&&(uo=4194304)));var y=li();d=Vo(d,f),d!==null&&(xa(d,f,y),Xr(d,y))}function Ob(d){var f=d.memoizedState,y=0;f!==null&&(y=f.retryLane),Pg(d,y)}function ey(d,f){var y=0;switch(d.tag){case 13:var _=d.stateNode,L=d.memoizedState;L!==null&&(y=L.retryLane);break;case 19:_=d.stateNode;break;default:throw Error(a(314))}_!==null&&_.delete(f),Pg(d,y)}var Tg;Tg=function(d,f,y){if(d!==null)if(d.memoizedProps!==f.pendingProps||Gr.current)Di=!0;else{if((d.lanes&y)===0&&(f.flags&128)===0)return Di=!1,Lb(d,f,y);Di=(d.flags&131072)!==0}else Di=!1,Fn&&(f.flags&1048576)!==0&&j1(f,mr,f.index);switch(f.lanes=0,f.tag){case 2:var _=f.type;Ea(d,f),d=f.pendingProps;var L=Fs(f,kr.current);Ju(f,y),L=eg(null,f,_,d,L,y);var I=ic();return f.flags|=1,typeof L=="object"&&L!==null&&typeof L.render=="function"&&L.$$typeof===void 0?(f.tag=1,f.memoizedState=null,f.updateQueue=null,jr(_)?(I=!0,Ja(f)):I=!1,f.memoizedState=L.state!==null&&L.state!==void 0?L.state:null,K1(f),L.updater=Uo,f.stateNode=L,L._reactInternals=f,X1(f,_,d,y),f=Go(null,f,_,!0,I,y)):(f.tag=0,Fn&&I&&yi(f),xi(null,f,L,y),f=f.child),f;case 16:_=f.elementType;e:{switch(Ea(d,f),d=f.pendingProps,L=_._init,_=L(_._payload),f.type=_,L=f.tag=Cp(_),d=Wo(_,d),L){case 0:f=ug(null,f,_,d,y);break e;case 1:f=G2(null,f,_,d,y);break e;case 11:f=H2(null,f,_,d,y);break e;case 14:f=js(null,f,_,Wo(_.type,d),y);break e}throw Error(a(306,_,""))}return f;case 0:return _=f.type,L=f.pendingProps,L=f.elementType===_?L:Wo(_,L),ug(d,f,_,L,y);case 1:return _=f.type,L=f.pendingProps,L=f.elementType===_?L:Wo(_,L),G2(d,f,_,L,y);case 3:e:{if(j2(f),d===null)throw Error(a(387));_=f.pendingProps,I=f.memoizedState,L=I.element,T2(d,f),Yh(f,_,null,y);var H=f.memoizedState;if(_=H.element,mt&&I.isDehydrated)if(I={element:_,isDehydrated:!1,cache:H.cache,pendingSuspenseBoundaries:H.pendingSuspenseBoundaries,transitions:H.transitions},f.updateQueue.baseState=I,f.memoizedState=I,f.flags&256){L=hc(Error(a(423)),f),f=Y2(d,f,_,y,L);break e}else if(_!==L){L=hc(Error(a(424)),f),f=Y2(d,f,_,y,L);break e}else for(mt&&(fo=O1(f.stateNode.containerInfo),Gn=f,Fn=!0,Ri=null,ho=!1),y=R2(f,null,_,y),f.child=y;y;)y.flags=y.flags&-3|4096,y=y.sibling;else{if(Zu(),_===L){f=rs(d,f,y);break e}xi(d,f,_,y)}f=f.child}return f;case 5:return Et(f),d===null&&Vd(f),_=f.type,L=f.pendingProps,I=d!==null?d.memoizedProps:null,H=L.children,Me(_,L)?H=null:I!==null&&Me(_,I)&&(f.flags|=32),U2(d,f),xi(d,f,H,y),f.child;case 6:return d===null&&Vd(f),null;case 13:return q2(d,f,y);case 4:return ge(f,f.stateNode.containerInfo),_=f.pendingProps,d===null?f.child=tc(f,null,_,y):xi(d,f,_,y),f.child;case 11:return _=f.type,L=f.pendingProps,L=f.elementType===_?L:Wo(_,L),H2(d,f,_,L,y);case 7:return xi(d,f,f.pendingProps,y),f.child;case 8:return xi(d,f,f.pendingProps.children,y),f.child;case 12:return xi(d,f,f.pendingProps.children,y),f.child;case 10:e:{if(_=f.type._context,L=f.pendingProps,I=f.memoizedProps,H=L.value,P2(f,_,H),I!==null)if(U(I.value,H)){if(I.children===L.children&&!Gr.current){f=rs(d,f,y);break e}}else for(I=f.child,I!==null&&(I.return=f);I!==null;){var ae=I.dependencies;if(ae!==null){H=I.child;for(var fe=ae.firstContext;fe!==null;){if(fe.context===_){if(I.tag===1){fe=ts(-1,y&-y),fe.tag=2;var Ne=I.updateQueue;if(Ne!==null){Ne=Ne.shared;var Qe=Ne.pending;Qe===null?fe.next=fe:(fe.next=Qe.next,Qe.next=fe),Ne.pending=fe}}I.lanes|=y,fe=I.alternate,fe!==null&&(fe.lanes|=y),qd(I.return,y,f),ae.lanes|=y;break}fe=fe.next}}else if(I.tag===10)H=I.type===f.type?null:I.child;else if(I.tag===18){if(H=I.return,H===null)throw Error(a(341));H.lanes|=y,ae=H.alternate,ae!==null&&(ae.lanes|=y),qd(H,y,f),H=I.sibling}else H=I.child;if(H!==null)H.return=I;else for(H=I;H!==null;){if(H===f){H=null;break}if(I=H.sibling,I!==null){I.return=H.return,H=I;break}H=H.return}I=H}xi(d,f,L.children,y),f=f.child}return f;case 9:return L=f.type,_=f.pendingProps.children,Ju(f,y),L=Gi(L),_=_(L),f.flags|=1,xi(d,f,_,y),f.child;case 14:return _=f.type,L=Wo(_,f.pendingProps),L=Wo(_.type,L),js(d,f,_,L,y);case 15:return W2(d,f,f.type,f.pendingProps,y);case 17:return _=f.type,L=f.pendingProps,L=f.elementType===_?L:Wo(_,L),Ea(d,f),f.tag=1,jr(_)?(d=!0,Ja(f)):d=!1,Ju(f,y),A2(f,_,L),X1(f,_,L,y),Go(null,f,_,!0,d,y);case 19:return X2(d,f,y);case 22:return V2(d,f,y)}throw Error(a(156,f.tag))};function _i(d,f){return qu(d,f)}function Pa(d,f,y,_){this.tag=d,this.key=y,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=f,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=_,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function yo(d,f,y,_){return new Pa(d,f,y,_)}function Lg(d){return d=d.prototype,!(!d||!d.isReactComponent)}function Cp(d){if(typeof d=="function")return Lg(d)?1:0;if(d!=null){if(d=d.$$typeof,d===w)return 11;if(d===E)return 14}return 2}function Ki(d,f){var y=d.alternate;return y===null?(y=yo(d.tag,f,d.key,d.mode),y.elementType=d.elementType,y.type=d.type,y.stateNode=d.stateNode,y.alternate=d,d.alternate=y):(y.pendingProps=f,y.type=d.type,y.flags=0,y.subtreeFlags=0,y.deletions=null),y.flags=d.flags&14680064,y.childLanes=d.childLanes,y.lanes=d.lanes,y.child=d.child,y.memoizedProps=d.memoizedProps,y.memoizedState=d.memoizedState,y.updateQueue=d.updateQueue,f=d.dependencies,y.dependencies=f===null?null:{lanes:f.lanes,firstContext:f.firstContext},y.sibling=d.sibling,y.index=d.index,y.ref=d.ref,y}function gf(d,f,y,_,L,I){var H=2;if(_=d,typeof d=="function")Lg(d)&&(H=1);else if(typeof d=="string")H=5;else e:switch(d){case h:return nl(y.children,L,I,f);case g:H=8,L|=8;break;case m:return d=yo(12,y,f,L|2),d.elementType=m,d.lanes=I,d;case k:return d=yo(13,y,f,L),d.elementType=k,d.lanes=I,d;case P:return d=yo(19,y,f,L),d.elementType=P,d.lanes=I,d;case M:return _p(y,L,I,f);default:if(typeof d=="object"&&d!==null)switch(d.$$typeof){case v:H=10;break e;case S:H=9;break e;case w:H=11;break e;case E:H=14;break e;case T:H=16,_=null;break e}throw Error(a(130,d==null?d:typeof d,""))}return f=yo(H,y,f,L),f.elementType=d,f.type=_,f.lanes=I,f}function nl(d,f,y,_){return d=yo(7,d,_,f),d.lanes=y,d}function _p(d,f,y,_){return d=yo(22,d,_,f),d.elementType=M,d.lanes=y,d.stateNode={isHidden:!1},d}function kp(d,f,y){return d=yo(6,d,null,f),d.lanes=y,d}function rl(d,f,y){return f=yo(4,d.children!==null?d.children:[],d.key,f),f.lanes=y,f.stateNode={containerInfo:d.containerInfo,pendingChildren:null,implementation:d.implementation},f}function mf(d,f,y,_,L){this.tag=f,this.containerInfo=d,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=ft,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Yu(0),this.expirationTimes=Yu(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Yu(0),this.identifierPrefix=_,this.onRecoverableError=L,mt&&(this.mutableSourceEagerHydrationData=null)}function ty(d,f,y,_,L,I,H,ae,fe){return d=new mf(d,f,y,ae,fe),f===1?(f=1,I===!0&&(f|=8)):f=0,I=yo(3,null,null,f),d.current=I,I.stateNode=d,I.memoizedState={element:_,isDehydrated:y,cache:null,transitions:null,pendingSuspenseBoundaries:null},K1(I),d}function Ag(d){if(!d)return Fo;d=d._reactInternals;e:{if($(d)!==d||d.tag!==1)throw Error(a(170));var f=d;do{switch(f.tag){case 3:f=f.stateNode.context;break e;case 1:if(jr(f.type)){f=f.stateNode.__reactInternalMemoizedMergedChildContext;break e}}f=f.return}while(f!==null);throw Error(a(171))}if(d.tag===1){var y=d.type;if(jr(y))return Gl(d,y,f)}return f}function Mg(d){var f=d._reactInternals;if(f===void 0)throw typeof d.render=="function"?Error(a(188)):(d=Object.keys(d).join(","),Error(a(268,d)));return d=te(f),d===null?null:d.stateNode}function vf(d,f){if(d=d.memoizedState,d!==null&&d.dehydrated!==null){var y=d.retryLane;d.retryLane=y!==0&&y=Ne&&I>=At&&L<=Qe&&H<=je){d.splice(f,1);break}else if(_!==Ne||y.width!==fe.width||jeH){if(!(I!==At||y.height!==fe.height||Qe<_||Ne>L)){Ne>_&&(fe.width+=Ne-_,fe.x=_),QeI&&(fe.height+=At-I,fe.y=I),jey&&(y=H)),H ")+` + +No matching component was found for: + `)+d.join(" > ")}return null},n.getPublicRootInstance=function(d){if(d=d.current,!d.child)return null;switch(d.child.tag){case 5:return ee(d.child.stateNode);default:return d.child.stateNode}},n.injectIntoDevTools=function(d){if(d={bundleType:d.bundleType,version:d.version,rendererPackageName:d.rendererPackageName,rendererConfig:d.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:s.ReactCurrentDispatcher,findHostInstanceByFiber:Ep,findFiberByHostInstance:d.findFiberByHostInstance||Ig,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")d=!1;else{var f=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(f.isDisabled||!f.supportsFiber)d=!0;else{try{cn=f.inject(d),Wt=f}catch{}d=!!f.checkDCE}}return d},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(d,f,y,_){if(!wt)throw Error(a(363));d=bg(d,f);var L=qt(d,y,_).disconnect;return{disconnect:function(){L()}}},n.registerMutableSourceForHydration=function(d,f){var y=f._getVersion;y=y(f._source),d.mutableSourceEagerHydrationData==null?d.mutableSourceEagerHydrationData=[f,y]:d.mutableSourceEagerHydrationData.push(f,y)},n.runWithPriority=function(d,f){var y=Ht;try{return Ht=d,f()}finally{Ht=y}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(d,f,y,_){var L=f.current,I=li(),H=Ar(L);return y=Ag(y),f.context===null?f.context=y:f.pendingContext=y,f=ts(I,H),f.payload={element:d},_=_===void 0?null:_,_!==null&&(f.callback=_),d=Us(L,f,H),d!==null&&(vo(d,L,H,I),jh(d,L,H)),H},n};(function(e){e.exports=a8e})(dV);const s8e=Q7(dV.exports);var Lk={exports:{}},Ih={};/** + * @license React + * react-reconciler-constants.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */Ih.ConcurrentRoot=1;Ih.ContinuousEventPriority=4;Ih.DefaultEventPriority=16;Ih.DiscreteEventPriority=1;Ih.IdleEventPriority=536870912;Ih.LegacyRoot=0;(function(e){e.exports=Ih})(Lk);const gI={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let mI=!1,vI=!1;const Ak=".react-konva-event",l8e=`ReactKonva: You have a Konva node with draggable = true and position defined but no onDragMove or onDragEnd events are handled. +Position of a node will be changed during drag&drop, so you should update state of the react app as well. +Consider to add onDragMove or onDragEnd events. +For more info see: https://github.com/konvajs/react-konva/issues/256 +`,u8e=`ReactKonva: You are using "zIndex" attribute for a Konva node. +react-konva may get confused with ordering. Just define correct order of elements in your render function of a component. +For more info see: https://github.com/konvajs/react-konva/issues/194 +`,c8e={};function Sb(e,t,n=c8e){if(!mI&&"zIndex"in t&&(console.warn(u8e),mI=!0),!vI&&t.draggable){var r=t.x!==void 0||t.y!==void 0,i=t.onDragEnd||t.onDragMove;r&&!i&&(console.warn(l8e),vI=!0)}for(var o in n)if(!gI[o]){var a=o.slice(0,2)==="on",s=n[o]!==t[o];if(a&&s){var l=o.substr(2).toLowerCase();l.substr(0,7)==="content"&&(l="content"+l.substr(7,1).toUpperCase()+l.substr(8)),e.off(l,n[o])}var u=!t.hasOwnProperty(o);u&&e.setAttr(o,void 0)}var h=t._useStrictMode,g={},m=!1;const v={};for(var o in t)if(!gI[o]){var a=o.slice(0,2)==="on",S=n[o]!==t[o];if(a&&S){var l=o.substr(2).toLowerCase();l.substr(0,7)==="content"&&(l="content"+l.substr(7,1).toUpperCase()+l.substr(8)),t[o]&&(v[l]=t[o])}!a&&(t[o]!==n[o]||h&&t[o]!==e.getAttr(o))&&(m=!0,g[o]=t[o])}m&&(e.setAttrs(g),Rd(e));for(var l in v)e.on(l+Ak,v[l])}function Rd(e){if(!rt.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const fV={},d8e={};gh.Node.prototype._applyProps=Sb;function f8e(e,t){if(typeof t=="string"){console.error(`Do not use plain text as child of Konva.Node. You are using text: ${t}`);return}e.add(t),Rd(e)}function h8e(e,t,n){let r=gh[e];r||(console.error(`Konva has no node with the type ${e}. Group will be used instead. If you use minimal version of react-konva, just import required nodes into Konva: "import "konva/lib/shapes/${e}" If you want to render DOM elements as part of canvas tree take a look into this demo: https://konvajs.github.io/docs/react/DOM_Portal.html`),r=gh.Group);const i={},o={};for(var a in t){var s=a.slice(0,2)==="on";s?o[a]=t[a]:i[a]=t[a]}const l=new r(i);return Sb(l,o),l}function p8e(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function g8e(e,t,n){return!1}function m8e(e){return e}function v8e(){return null}function y8e(){return null}function S8e(e,t,n,r){return d8e}function b8e(){}function x8e(e){}function w8e(e,t){return!1}function C8e(){return fV}function _8e(){return fV}const k8e=setTimeout,E8e=clearTimeout,P8e=-1;function T8e(e,t){return!1}const L8e=!1,A8e=!0,M8e=!0;function I8e(e,t){t.parent===e?t.moveToTop():e.add(t),Rd(e)}function R8e(e,t){t.parent===e?t.moveToTop():e.add(t),Rd(e)}function hV(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),Rd(e)}function O8e(e,t,n){hV(e,t,n)}function D8e(e,t){t.destroy(),t.off(Ak),Rd(e)}function N8e(e,t){t.destroy(),t.off(Ak),Rd(e)}function B8e(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function z8e(e,t,n){}function F8e(e,t,n,r,i){Sb(e,i,r)}function $8e(e){e.hide(),Rd(e)}function H8e(e){}function W8e(e,t){(t.visible==null||t.visible)&&e.show()}function V8e(e,t){}function U8e(e){}function G8e(){}const j8e=()=>Lk.exports.DefaultEventPriority,Y8e=Object.freeze(Object.defineProperty({__proto__:null,appendInitialChild:f8e,createInstance:h8e,createTextInstance:p8e,finalizeInitialChildren:g8e,getPublicInstance:m8e,prepareForCommit:v8e,preparePortalMount:y8e,prepareUpdate:S8e,resetAfterCommit:b8e,resetTextContent:x8e,shouldDeprioritizeSubtree:w8e,getRootHostContext:C8e,getChildHostContext:_8e,scheduleTimeout:k8e,cancelTimeout:E8e,noTimeout:P8e,shouldSetTextContent:T8e,isPrimaryRenderer:L8e,warnsIfNotActing:A8e,supportsMutation:M8e,appendChild:I8e,appendChildToContainer:R8e,insertBefore:hV,insertInContainerBefore:O8e,removeChild:D8e,removeChildFromContainer:N8e,commitTextUpdate:B8e,commitMount:z8e,commitUpdate:F8e,hideInstance:$8e,hideTextInstance:H8e,unhideInstance:W8e,unhideTextInstance:V8e,clearContainer:U8e,detachDeletedInstance:G8e,getCurrentEventPriority:j8e,now:p0.exports.unstable_now,idlePriority:p0.exports.unstable_IdlePriority,run:p0.exports.unstable_runWithPriority},Symbol.toStringTag,{value:"Module"}));var q8e=Object.defineProperty,K8e=Object.defineProperties,X8e=Object.getOwnPropertyDescriptors,yI=Object.getOwnPropertySymbols,Z8e=Object.prototype.hasOwnProperty,Q8e=Object.prototype.propertyIsEnumerable,SI=(e,t,n)=>t in e?q8e(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,bI=(e,t)=>{for(var n in t||(t={}))Z8e.call(t,n)&&SI(e,n,t[n]);if(yI)for(var n of yI(t))Q8e.call(t,n)&&SI(e,n,t[n]);return e},J8e=(e,t)=>K8e(e,X8e(t));function Mk(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const i=Mk(r,t,n);if(i)return i;r=t?null:r.sibling}}function pV(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const Ik=pV(C.exports.createContext(null));class gV extends C.exports.Component{render(){return b(Ik.Provider,{value:this._reactInternals,children:this.props.children})}}const{ReactCurrentOwner:e_e,ReactCurrentDispatcher:t_e}=C.exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function n_e(){const e=C.exports.useContext(Ik);if(!e)throw new Error("its-fine: useFiber must be called within a !");const t=C.exports.useId();return C.exports.useMemo(()=>{var r;return(r=e_e.current)!=null?r:Mk(e,!1,i=>{let o=i.memoizedState;for(;o;){if(o.memoizedState===t)return!0;o=o.next}})},[e,t])}const om=[],xI=new WeakMap;function r_e(){var e;const t=n_e();om.splice(0,om.length),Mk(t,!0,n=>{var r;const i=(r=n.type)==null?void 0:r._context;i&&i!==Ik&&om.push(pV(i))});for(const n of om){const r=(e=t_e.current)==null?void 0:e.readContext(n);xI.set(n,r)}return C.exports.useMemo(()=>om.reduce((n,r)=>i=>C.exports.createElement(n,null,C.exports.createElement(r.Provider,J8e(bI({},i),{value:xI.get(r)}))),n=>b(gV,{...bI({},n)})),[])}function i_e(e){const t=se.useRef();return se.useLayoutEffect(()=>{t.current=e}),t.current}const o_e=e=>{const t=se.useRef(),n=se.useRef(),r=se.useRef(),i=i_e(e),o=r_e(),a=s=>{const{forwardedRef:l}=e;!l||(typeof l=="function"?l(s):l.current=s)};return se.useLayoutEffect(()=>(n.current=new gh.Stage({width:e.width,height:e.height,container:t.current}),a(n.current),r.current=km.createContainer(n.current,Lk.exports.LegacyRoot,!1,null),km.updateContainer(b(o,{children:e.children}),r.current),()=>{!gh.isBrowser||(a(null),km.updateContainer(null,r.current,null),n.current.destroy())}),[]),se.useLayoutEffect(()=>{a(n.current),Sb(n.current,e,i),km.updateContainer(b(o,{children:e.children}),r.current,null)}),b("div",{ref:t,accessKey:e.accessKey,className:e.className,role:e.role,style:e.style,tabIndex:e.tabIndex,title:e.title})},am="Layer",Iu="Group",Ru="Rect",kf="Circle",E5="Line",mV="Image",a_e="Transformer",km=s8e(Y8e);km.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:se.version,rendererPackageName:"react-konva"});const s_e=se.forwardRef((e,t)=>b(gV,{children:b(o_e,{...e,forwardedRef:t})})),l_e=lt([kn],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:We.isEqual}}),u_e=e=>{const{...t}=e,{objects:n}=Le(l_e);return b(Iu,{listening:!1,...t,children:n.filter(ak).map((r,i)=>b(E5,{points:r.points,stroke:"rgb(0,0,0)",strokeWidth:r.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,listening:!1,globalCompositeOperation:r.tool==="brush"?"source-over":"destination-out"},i))})},oh=e=>{const{r:t,g:n,b:r,a:i}=e;return`rgba(${t}, ${n}, ${r}, ${i})`},c_e=lt(kn,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:i,brushColor:o,tool:a,layer:s,shouldShowBrush:l,isMovingBoundingBox:u,isTransformingBoundingBox:h,stageScale:g,stageDimensions:m,boundingBoxCoordinates:v,boundingBoxDimensions:S,shouldRestrictStrokesToBox:w}=e,k=w?{clipX:v.x,clipY:v.y,clipWidth:S.width,clipHeight:S.height}:{};return{cursorPosition:t,brushX:t?t.x:m.width/2,brushY:t?t.y:m.height/2,radius:n/2,colorPickerOuterRadius:lM/g,colorPickerInnerRadius:(lM-d7+1)/g,maskColorString:oh({...i,a:.5}),brushColorString:oh(o),colorPickerColorString:oh(r),tool:a,layer:s,shouldShowBrush:l,shouldDrawBrushPreview:!(u||h||!t)&&l,strokeWidth:1.5/g,dotRadius:1.5/g,clip:k}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),d_e=e=>{const{...t}=e,{brushX:n,brushY:r,radius:i,maskColorString:o,tool:a,layer:s,shouldDrawBrushPreview:l,dotRadius:u,strokeWidth:h,brushColorString:g,colorPickerColorString:m,colorPickerInnerRadius:v,colorPickerOuterRadius:S,clip:w}=Le(c_e);return l?Q(Iu,{listening:!1,...w,...t,children:[a==="colorPicker"?Q(An,{children:[b(kf,{x:n,y:r,radius:S,stroke:g,strokeWidth:d7,strokeScaleEnabled:!1}),b(kf,{x:n,y:r,radius:v,stroke:m,strokeWidth:d7,strokeScaleEnabled:!1})]}):Q(An,{children:[b(kf,{x:n,y:r,radius:i,fill:s==="mask"?o:g,globalCompositeOperation:a==="eraser"?"destination-out":"source-out"}),b(kf,{x:n,y:r,radius:i,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),b(kf,{x:n,y:r,radius:i,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),b(kf,{x:n,y:r,radius:u*2,fill:"rgba(255,255,255,0.4)",listening:!1}),b(kf,{x:n,y:r,radius:u,fill:"rgba(0,0,0,1)",listening:!1})]}):null},f_e=lt(kn,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageScale:r,isDrawing:i,isTransformingBoundingBox:o,isMovingBoundingBox:a,tool:s,shouldSnapToGrid:l}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,isDrawing:i,isMovingBoundingBox:a,isTransformingBoundingBox:o,stageScale:r,shouldSnapToGrid:l,tool:s,hitStrokeWidth:20/r}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),h_e=e=>{const{...t}=e,n=qe(),{boundingBoxCoordinates:r,boundingBoxDimensions:i,isDrawing:o,isMovingBoundingBox:a,isTransformingBoundingBox:s,stageScale:l,shouldSnapToGrid:u,tool:h,hitStrokeWidth:g}=Le(f_e),m=C.exports.useRef(null),v=C.exports.useRef(null),[S,w]=C.exports.useState(!1);C.exports.useEffect(()=>{!m.current||!v.current||(m.current.nodes([v.current]),m.current.getLayer()?.batchDraw())},[]);const k=64*l,P=C.exports.useCallback(te=>{if(!u){n(Aw({x:Math.floor(te.target.x()),y:Math.floor(te.target.y())}));return}const V=te.target.x(),J=te.target.y(),re=wl(V,64),ee=wl(J,64);te.target.x(re),te.target.y(ee),n(Aw({x:re,y:ee}))},[n,u]),E=C.exports.useCallback(()=>{if(!v.current)return;const te=v.current,V=te.scaleX(),J=te.scaleY(),re=Math.round(te.width()*V),ee=Math.round(te.height()*J),K=Math.round(te.x()),G=Math.round(te.y());n(bm({width:re,height:ee})),n(Aw({x:u?qc(K,64):K,y:u?qc(G,64):G})),te.scaleX(1),te.scaleY(1)},[n,u]),T=C.exports.useCallback((te,V,J)=>{const re=te.x%k,ee=te.y%k;return{x:qc(V.x,k)+re,y:qc(V.y,k)+ee}},[k]),M=()=>{n(Ow(!0))},R=()=>{n(Ow(!1)),n(Rw(!1)),n(Qy(!1)),w(!1)},O=()=>{n(Rw(!0))},D=()=>{n(Ow(!1)),n(Rw(!1)),n(Qy(!1)),w(!1)},B=()=>{w(!0)},$=()=>{!s&&!a&&w(!1)},W=()=>{n(Qy(!0))},j=()=>{n(Qy(!1))};return Q(Iu,{...t,children:[b(Ru,{height:i.height,width:i.width,x:r.x,y:r.y,onMouseEnter:W,onMouseOver:W,onMouseLeave:j,onMouseOut:j}),b(Ru,{draggable:!0,fillEnabled:!1,height:i.height,hitStrokeWidth:g,listening:!o&&h==="move",onDragStart:O,onDragEnd:D,onDragMove:P,onMouseDown:O,onMouseOut:$,onMouseOver:B,onMouseEnter:B,onMouseUp:D,onTransform:E,onTransformEnd:R,ref:v,stroke:S?"rgba(255,255,255,0.7)":"white",strokeWidth:(S?8:1)/l,width:i.width,x:r.x,y:r.y}),b(a_e,{anchorCornerRadius:3,anchorDragBoundFunc:T,anchorFill:"rgba(212,216,234,1)",anchorSize:15,anchorStroke:"rgb(42,42,42)",borderDash:[4,4],borderEnabled:!0,borderStroke:"black",draggable:!1,enabledAnchors:h==="move"?void 0:[],flipEnabled:!1,ignoreStroke:!0,keepRatio:!1,listening:!o&&h==="move",onDragStart:O,onDragEnd:D,onMouseDown:M,onMouseUp:R,onTransformEnd:R,ref:m,rotateEnabled:!1})]})};let vV=null,yV=null;const p_e=e=>{vV=e},jv=()=>vV,g_e=e=>{yV=e},SV=()=>yV,m_e=lt([kn,_r,Ka],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:i,shouldShowBoundingBox:o,tool:a}=e;return{activeTabName:t,isCursorOnCanvas:Boolean(r),shouldLockBoundingBox:i,shouldShowBoundingBox:o,tool:a,isStaging:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),v_e=()=>{const e=qe(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:i}=Le(m_e),o=C.exports.useRef(null),a=SV();st("esc",()=>{e(WSe())},{enabled:()=>!0,preventDefault:!0}),st("shift+h",()=>{e(tbe(!n))},{enabled:()=>!i,preventDefault:!0},[t,n]),st(["space"],s=>{s.repeat||(a?.container().focus(),r!=="move"&&(o.current=r,e(z0("move"))),r==="move"&&o.current&&o.current!=="move"&&(e(z0(o.current)),o.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,o])},y_e=lt(kn,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:i}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:i,maskColorString:oh(t)}}),wI=e=>`data:image/svg+xml;utf8, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.replaceAll("black",e),S_e=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:i,stageScale:o}=Le(y_e),[a,s]=C.exports.useState(null),[l,u]=C.exports.useState(0),h=C.exports.useRef(null),g=C.exports.useCallback(()=>{u(l+1),setTimeout(g,500)},[l]);return C.exports.useEffect(()=>{if(a)return;const m=new Image;m.onload=()=>{s(m)},m.src=wI(n)},[a,n]),C.exports.useEffect(()=>{!a||(a.src=wI(n))},[a,n]),C.exports.useEffect(()=>{const m=setInterval(()=>u(v=>(v+1)%5),50);return()=>clearInterval(m)},[]),!a||!Jr.exports.isNumber(r.x)||!Jr.exports.isNumber(r.y)||!Jr.exports.isNumber(o)||!Jr.exports.isNumber(i.width)||!Jr.exports.isNumber(i.height)?null:b(Ru,{ref:h,offsetX:r.x/o,offsetY:r.y/o,height:i.height/o,width:i.width/o,fillPatternImage:a,fillPatternOffsetY:Jr.exports.isNumber(l)?l:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/o,y:1/o},listening:!0,globalCompositeOperation:"source-in",...t})},b_e=lt([kn],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),x_e=e=>{const t=qe(),{isMoveStageKeyHeld:n,stageScale:r}=Le(b_e);return C.exports.useCallback(i=>{if(!e.current||n)return;i.evt.preventDefault();const o=e.current.getPointerPosition();if(!o)return;const a={x:(o.x-e.current.x())/r,y:(o.y-e.current.y())/r};let s=i.evt.deltaY;i.evt.ctrlKey&&(s=-s);const l=We.clamp(r*kSe**s,ESe,PSe),u={x:o.x-a.x*l,y:o.y-a.y*l};t(sbe(l)),t(IH(u))},[e,n,r,t])},Rk=e=>{const t=e.getPointerPosition(),n=e.getAbsoluteTransform().copy();if(!t||!n)return;const r=n.invert().point(t);return{x:r.x,y:r.y}},bV=()=>{const e=qe(),t=jv(),n=SV();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const i=jp.pixelRatio,[o,a,s,l]=t.getContext().getImageData(r.x*i,r.y*i,1,1).data;e(YSe({r:o,g:a,b:s,a:l}))},commitColorUnderCursor:()=>{e(DSe())}}},w_e=lt([_r,kn,Ka],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),C_e=e=>{const t=qe(),{tool:n,isStaging:r}=Le(w_e),{commitColorUnderCursor:i}=bV();return C.exports.useCallback(o=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(v5(!0));return}if(n==="colorPicker"){i();return}const a=Rk(e.current);!a||(o.evt.preventDefault(),t(LH(!0)),t(RSe([a.x,a.y])))},[e,n,r,t,i])},__e=lt([_r,kn,Ka],(e,t,n)=>{const{tool:r,isDrawing:i}=t;return{tool:r,isDrawing:i,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),k_e=(e,t)=>{const n=qe(),{tool:r,isDrawing:i,isStaging:o}=Le(__e);return C.exports.useCallback(()=>{if(r==="move"||o){n(v5(!1));return}if(!t.current&&i&&e.current){const a=Rk(e.current);if(!a)return;n(EH([a.x,a.y]))}else t.current=!1;n(LH(!1))},[t,n,i,o,e,r])},E_e=lt([_r,kn,Ka],(e,t,n)=>{const{tool:r,isDrawing:i}=t;return{tool:r,isDrawing:i,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),P_e=(e,t,n)=>{const r=qe(),{isDrawing:i,tool:o,isStaging:a}=Le(E_e),{updateColorUnderCursor:s}=bV();return C.exports.useCallback(()=>{if(!e.current)return;const l=Rk(e.current);if(!!l){if(r(qSe(l)),n.current=l,o==="colorPicker"){s();return}!i||o==="move"||a||(t.current=!0,r(EH([l.x,l.y])))}},[t,r,i,a,n,e,o,s])},T_e=()=>{const e=qe();return C.exports.useCallback(()=>{e(zSe())},[e])},L_e=lt([kn,Ka],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),A_e=()=>{const e=qe(),{tool:t,isStaging:n,isMovingBoundingBox:r}=Le(L_e);return{handleDragStart:C.exports.useCallback(()=>{!((t==="move"||n)&&!r)||e(v5(!0))},[e,r,n,t]),handleDragMove:C.exports.useCallback(i=>{if(!((t==="move"||n)&&!r))return;const o={x:i.target.x(),y:i.target.y()};e(IH(o))},[e,r,n,t]),handleDragEnd:C.exports.useCallback(()=>{!((t==="move"||n)&&!r)||e(v5(!1))},[e,r,n,t])}};var Ef=C.exports,M_e=function(t,n,r){const i=Ef.useRef("loading"),o=Ef.useRef(),[a,s]=Ef.useState(0),l=Ef.useRef(),u=Ef.useRef(),h=Ef.useRef();return(l.current!==t||u.current!==n||h.current!==r)&&(i.current="loading",o.current=void 0,l.current=t,u.current=n,h.current=r),Ef.useLayoutEffect(function(){if(!t)return;var g=document.createElement("img");function m(){i.current="loaded",o.current=g,s(Math.random())}function v(){i.current="failed",o.current=void 0,s(Math.random())}return g.addEventListener("load",m),g.addEventListener("error",v),n&&(g.crossOrigin=n),r&&(g.referrerpolicy=r),g.src=t,function(){g.removeEventListener("load",m),g.removeEventListener("error",v)}},[t,n,r]),[o.current,i.current]};const xV=e=>{const{url:t,x:n,y:r}=e,[i]=M_e(t);return b(mV,{x:n,y:r,image:i,listening:!1})},I_e=lt([kn],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),R_e=()=>{const{objects:e}=Le(I_e);return e?b(Iu,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(m5(t))return b(xV,{x:t.x,y:t.y,url:t.image.url},n);if(oSe(t)){const r=b(E5,{points:t.points,stroke:t.color?oh(t.color):"rgb(0,0,0)",strokeWidth:t.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,listening:!1,globalCompositeOperation:t.tool==="brush"?"source-over":"destination-out"},n);return t.clip?b(Iu,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(aSe(t))return b(Ru,{x:t.x,y:t.y,width:t.width,height:t.height,fill:oh(t.color)},n);if(sSe(t))return b(Ru,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},O_e=lt([kn],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),D_e={dark:"rgba(255, 255, 255, 0.2)",green:"rgba(255, 255, 255, 0.2)",light:"rgba(0, 0, 0, 0.2)"},N_e=()=>{const{colorMode:e}=Jv(),{stageScale:t,stageCoordinates:n,stageDimensions:r}=Le(O_e),[i,o]=C.exports.useState([]),a=C.exports.useCallback(s=>s/t,[t]);return C.exports.useLayoutEffect(()=>{const s=D_e[e],{width:l,height:u}=r,{x:h,y:g}=n,m={x1:0,y1:0,x2:l,y2:u,offset:{x:a(h),y:a(g)}},v={x:Math.ceil(a(h)/64)*64,y:Math.ceil(a(g)/64)*64},S={x1:-v.x,y1:-v.y,x2:a(l)-v.x+64,y2:a(u)-v.y+64},k={x1:Math.min(m.x1,S.x1),y1:Math.min(m.y1,S.y1),x2:Math.max(m.x2,S.x2),y2:Math.max(m.y2,S.y2)},P=k.x2-k.x1,E=k.y2-k.y1,T=Math.round(P/64)+1,M=Math.round(E/64)+1,R=We.range(0,T).map(D=>b(E5,{x:k.x1+D*64,y:k.y1,points:[0,0,0,E],stroke:s,strokeWidth:1},`x_${D}`)),O=We.range(0,M).map(D=>b(E5,{x:k.x1,y:k.y1+D*64,points:[0,0,P,0],stroke:s,strokeWidth:1},`y_${D}`));o(R.concat(O))},[t,n,r,e,a]),b(Iu,{children:i})},B_e=lt([e=>e.gallery],e=>e.intermediateImage?e.intermediateImage:null,{memoizeOptions:{resultEqualityCheck:We.isEqual}}),z_e=e=>{const{...t}=e,n=Le(B_e),[r,i]=C.exports.useState(null);if(C.exports.useEffect(()=>{if(!n)return;const u=new Image;u.onload=()=>{i(u)},u.src=n.url},[n]),!n?.boundingBox)return null;const{boundingBox:{x:o,y:a,width:s,height:l}}=n;return r?b(mV,{x:o,y:a,width:s,height:l,image:r,listening:!1,...t}):null},f0=e=>Math.round(e*100)/100,F_e=lt([kn],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${f0(n)}, ${f0(r)})`}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function $_e(){const{cursorCoordinatesString:e}=Le(F_e);return b("div",{children:`Cursor Position: ${e}`})}const H_e=lt([kn],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:i},boundingBoxDimensions:{width:o,height:a},scaledBoundingBoxDimensions:{width:s,height:l},boundingBoxCoordinates:{x:u,y:h},stageScale:g,shouldShowCanvasDebugInfo:m,layer:v,boundingBoxScaleMethod:S}=e;let w="inherit";return(S==="none"&&(o<512||a<512)||S==="manual"&&s*l<512*512)&&(w="var(--status-working-color)"),{activeLayerColor:v==="mask"?"var(--status-working-color)":"inherit",activeLayerString:v.charAt(0).toUpperCase()+v.slice(1),boundingBoxColor:w,boundingBoxCoordinatesString:`(${f0(u)}, ${f0(h)})`,boundingBoxDimensionsString:`${o}\xD7${a}`,scaledBoundingBoxDimensionsString:`${s}\xD7${l}`,canvasCoordinatesString:`${f0(r)}\xD7${f0(i)}`,canvasDimensionsString:`${t}\xD7${n}`,canvasScaleString:Math.round(g*100),shouldShowCanvasDebugInfo:m,shouldShowBoundingBox:S!=="auto",shouldShowScaledBoundingBox:S!=="none"}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),W_e=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:i,scaledBoundingBoxDimensionsString:o,shouldShowScaledBoundingBox:a,canvasCoordinatesString:s,canvasDimensionsString:l,canvasScaleString:u,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:g}=Le(H_e);return Q("div",{className:"canvas-status-text",children:[b("div",{style:{color:e},children:`Active Layer: ${t}`}),b("div",{children:`Canvas Scale: ${u}%`}),g&&b("div",{style:{color:n},children:`Bounding Box: ${i}`}),a&&b("div",{style:{color:n},children:`Scaled Bounding Box: ${o}`}),h&&Q(An,{children:[b("div",{children:`Bounding Box Position: ${r}`}),b("div",{children:`Canvas Dimensions: ${l}`}),b("div",{children:`Canvas Position: ${s}`}),b($_e,{})]})]})},V_e=lt([kn],e=>{const{layerState:{stagingArea:{images:t,selectedImageIndex:n}},shouldShowStagingImage:r,shouldShowStagingOutline:i,boundingBoxCoordinates:{x:o,y:a},boundingBoxDimensions:{width:s,height:l}}=e;return{currentStagingAreaImage:t.length>0?t[n]:void 0,isOnFirstImage:n===0,isOnLastImage:n===t.length-1,shouldShowStagingImage:r,shouldShowStagingOutline:i,x:o,y:a,width:s,height:l}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),U_e=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:i,x:o,y:a,width:s,height:l}=Le(V_e);return Q(Iu,{...t,children:[r&&n&&b(xV,{url:n.image.url,x:o,y:a}),i&&Q(Iu,{children:[b(Ru,{x:o,y:a,width:s,height:l,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),b(Ru,{x:o,y:a,width:s,height:l,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},G_e=lt([kn],e=>{const{layerState:{stagingArea:{images:t,selectedImageIndex:n}},shouldShowStagingOutline:r,shouldShowStagingImage:i}=e;return{currentStagingAreaImage:t.length>0?t[n]:void 0,isOnFirstImage:n===0,isOnLastImage:n===t.length-1,shouldShowStagingImage:i,shouldShowStagingOutline:r}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),j_e=()=>{const e=qe(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:i}=Le(G_e),o=C.exports.useCallback(()=>{e(dM(!0))},[e]),a=C.exports.useCallback(()=>{e(dM(!1))},[e]);st(["left"],()=>{s()},{enabled:()=>!0,preventDefault:!0}),st(["right"],()=>{l()},{enabled:()=>!0,preventDefault:!0}),st(["enter"],()=>{u()},{enabled:()=>!0,preventDefault:!0});const s=()=>e($Se()),l=()=>e(FSe()),u=()=>e(NSe());return r?b(rn,{pos:"absolute",bottom:"1rem",w:"100%",align:"center",justify:"center",filter:"drop-shadow(0 0.5rem 1rem rgba(0,0,0))",onMouseOver:o,onMouseOut:a,children:Q(Lo,{isAttached:!0,children:[b(pt,{tooltip:"Previous (Left)","aria-label":"Previous (Left)",icon:b(E5e,{}),onClick:s,"data-selected":!0,isDisabled:t}),b(pt,{tooltip:"Next (Right)","aria-label":"Next (Right)",icon:b(P5e,{}),onClick:l,"data-selected":!0,isDisabled:n}),b(pt,{tooltip:"Accept (Enter)","aria-label":"Accept (Enter)",icon:b(rk,{}),onClick:u,"data-selected":!0}),b(pt,{tooltip:"Show/Hide","aria-label":"Show/Hide","data-alert":!i,icon:i?b(B5e,{}):b(N5e,{}),onClick:()=>e(obe(!i)),"data-selected":!0}),b(pt,{tooltip:"Save to Gallery","aria-label":"Save to Gallery",icon:b(hH,{}),onClick:()=>e(pSe(r.image.url)),"data-selected":!0}),b(pt,{tooltip:"Discard All","aria-label":"Discard All",icon:b(fH,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(BSe()),"data-selected":!0,style:{backgroundColor:"var(--btn-delete-image)"},fontSize:20})]})}):null},Y_e=lt(kn,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageDimensions:r,stageScale:i,shouldDarkenOutsideBoundingBox:o,stageCoordinates:a}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,shouldDarkenOutsideBoundingBox:o,stageCoordinates:a,stageDimensions:r,stageScale:i}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),q_e=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:i,stageScale:o}=Le(Y_e);return Q(Iu,{children:[b(Ru,{offsetX:r.x/o,offsetY:r.y/o,height:i.height/o,width:i.width/o,fill:"rgba(0,0,0,0.4)",listening:!1,visible:n}),b(Ru,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},K_e=lt([kn,Ka],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:i,isTransformingBoundingBox:o,isMouseOverBoundingBox:a,isMovingBoundingBox:s,stageDimensions:l,stageCoordinates:u,tool:h,isMovingStage:g,shouldShowIntermediates:m,shouldShowGrid:v,shouldRestrictStrokesToBox:S}=e;let w="none";return h==="move"||t?g?w="grabbing":w="grab":o?w=void 0:S&&!a&&(w="default"),{isMaskEnabled:n,isModifyingBoundingBox:o||s,shouldShowBoundingBox:i,shouldShowGrid:v,stageCoordinates:u,stageCursor:w,stageDimensions:l,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:m}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),X_e=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:i,stageCursor:o,stageDimensions:a,stageScale:s,tool:l,isStaging:u,shouldShowIntermediates:h}=Le(K_e);v_e();const g=C.exports.useRef(null),m=C.exports.useRef(null),v=C.exports.useCallback($=>{g_e($),g.current=$},[]),S=C.exports.useCallback($=>{p_e($),m.current=$},[]),w=C.exports.useRef({x:0,y:0}),k=C.exports.useRef(!1),P=x_e(g),E=C_e(g),T=k_e(g,k),M=P_e(g,k,w),R=T_e(),{handleDragStart:O,handleDragMove:D,handleDragEnd:B}=A_e();return b("div",{className:"inpainting-canvas-container",children:Q("div",{className:"inpainting-canvas-wrapper",children:[Q(s_e,{tabIndex:-1,ref:v,className:"inpainting-canvas-stage",style:{...o?{cursor:o}:{}},x:i.x,y:i.y,width:a.width,height:a.height,scale:{x:s,y:s},onTouchStart:E,onTouchMove:M,onTouchEnd:T,onMouseDown:E,onMouseLeave:R,onMouseMove:M,onMouseUp:T,onDragStart:O,onDragMove:D,onDragEnd:B,onContextMenu:$=>$.evt.preventDefault(),onWheel:P,draggable:(l==="move"||u)&&!t,children:[b(am,{id:"grid",visible:r,children:b(N_e,{})}),b(am,{id:"base",ref:S,listening:!1,imageSmoothingEnabled:!1,children:b(R_e,{})}),Q(am,{id:"mask",visible:e,listening:!1,children:[b(u_e,{visible:!0,listening:!1}),b(S_e,{listening:!1})]}),b(am,{children:b(q_e,{})}),Q(am,{id:"preview",imageSmoothingEnabled:!1,children:[!u&&b(d_e,{visible:l!=="move",listening:!1}),b(U_e,{visible:u}),h&&b(z_e,{}),b(h_e,{visible:n&&!u})]})]}),b(W_e,{}),b(j_e,{})]})})},Z_e=lt([kn,_r,Pd],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function Q_e(){const e=qe(),{canUndo:t,activeTabName:n}=Le(Z_e),r=()=>{e(lbe())};return st(["meta+z","ctrl+z"],()=>{r()},{enabled:()=>t,preventDefault:!0},[n,t]),b(pt,{"aria-label":"Undo (Ctrl+Z)",tooltip:"Undo (Ctrl+Z)",icon:b(eSe,{}),onClick:r,isDisabled:!t})}const J_e=lt([kn,_r,Pd],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}});function eke(){const e=qe(),{canRedo:t,activeTabName:n}=Le(J_e),r=()=>{e(HSe())};return st(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{r()},{enabled:()=>t,preventDefault:!0},[n,t]),b(pt,{"aria-label":"Redo (Ctrl+Shift+Z)",tooltip:"Redo (Ctrl+Shift+Z)",icon:b(X5e,{}),onClick:r,isDisabled:!t})}const wV=Ee((e,t)=>{const{acceptButtonText:n="Accept",acceptCallback:r,cancelButtonText:i="Cancel",cancelCallback:o,children:a,title:s,triggerComponent:l}=e,{isOpen:u,onOpen:h,onClose:g}=Dv(),m=C.exports.useRef(null),v=()=>{r(),g()},S=()=>{o&&o(),g()};return Q(An,{children:[C.exports.cloneElement(l,{onClick:h,ref:t}),b(AF,{isOpen:u,leastDestructiveRef:m,onClose:g,children:b(r1,{children:Q(MF,{className:"modal",children:[b(NS,{fontSize:"lg",fontWeight:"bold",children:s}),b($v,{children:a}),Q(DS,{children:[b(Wa,{ref:m,onClick:S,className:"modal-close-btn",children:i}),b(Wa,{colorScheme:"red",onClick:v,ml:3,children:n})]})]})})})]})}),tke=()=>{const e=Le(Ka),t=qe();return Q(wV,{title:"Empty Temp Image Folder",acceptCallback:()=>{t(gSe()),t(TH()),t(PH())},acceptButtonText:"Empty Folder",triggerComponent:b(oa,{leftIcon:b(v2,{}),size:"sm",isDisabled:e,children:"Empty Temp Image Folder"}),children:[b("p",{children:"Emptying the temp image folder also fully resets the Unified Canvas. This includes all undo/redo history, images in the staging area, and the canvas base layer."}),b("br",{}),b("p",{children:"Are you sure you want to empty the temp folder?"})]})},nke=()=>{const e=Le(Ka),t=qe();return Q(wV,{title:"Clear Canvas History",acceptCallback:()=>t(PH()),acceptButtonText:"Clear History",triggerComponent:b(oa,{size:"sm",leftIcon:b(v2,{}),isDisabled:e,children:"Clear Canvas History"}),children:[b("p",{children:"Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history."}),b("br",{}),b("p",{children:"Are you sure you want to clear the canvas history?"})]})},rke=lt([kn],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:i,shouldShowGrid:o,shouldShowIntermediates:a,shouldSnapToGrid:s,shouldRestrictStrokesToBox:l}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:i,shouldShowGrid:o,shouldShowIntermediates:a,shouldSnapToGrid:s,shouldRestrictStrokesToBox:l}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),ike=()=>{const e=qe(),{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:i,shouldShowGrid:o,shouldShowIntermediates:a,shouldSnapToGrid:s,shouldRestrictStrokesToBox:l}=Le(rke);return st(["n"],()=>{e(fM(!s))},{enabled:!0,preventDefault:!0},[s]),b(ad,{trigger:"hover",triggerComponent:b(pt,{tooltip:"Canvas Settings","aria-label":"Canvas Settings",icon:b(ok,{})}),children:Q(rn,{direction:"column",gap:"0.5rem",children:[b(ia,{label:"Show Intermediates",isChecked:a,onChange:h=>e(ibe(h.target.checked))}),b(ia,{label:"Show Grid",isChecked:o,onChange:h=>e(rbe(h.target.checked))}),b(ia,{label:"Snap to Grid",isChecked:s,onChange:h=>e(fM(h.target.checked))}),b(ia,{label:"Darken Outside Selection",isChecked:r,onChange:h=>e(JSe(h.target.checked))}),b(ia,{label:"Auto Save to Gallery",isChecked:t,onChange:h=>e(ZSe(h.target.checked))}),b(ia,{label:"Save Box Region Only",isChecked:n,onChange:h=>e(QSe(h.target.checked))}),b(ia,{label:"Limit Strokes to Box",isChecked:l,onChange:h=>e(ube(h.target.checked))}),b(ia,{label:"Show Canvas Debug Info",isChecked:i,onChange:h=>e(nbe(h.target.checked))}),b(nke,{}),b(tke,{})]})})};function bb(){return(bb=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}function O7(e){var t=C.exports.useRef(e),n=C.exports.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var l1=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:k.buttons>0)&&i.current?o(CI(i.current,k,s.current)):w(!1)},S=function(){return w(!1)};function w(k){var P=l.current,E=D7(i.current),T=k?E.addEventListener:E.removeEventListener;T(P?"touchmove":"mousemove",v),T(P?"touchend":"mouseup",S)}return[function(k){var P=k.nativeEvent,E=i.current;if(E&&(_I(P),!function(M,R){return R&&!nv(M)}(P,l.current)&&E)){if(nv(P)){l.current=!0;var T=P.changedTouches||[];T.length&&(s.current=T[0].identifier)}E.focus(),o(CI(E,P,s.current)),w(!0)}},function(k){var P=k.which||k.keyCode;P<37||P>40||(k.preventDefault(),a({left:P===39?.05:P===37?-.05:0,top:P===40?.05:P===38?-.05:0}))},w]},[a,o]),h=u[0],g=u[1],m=u[2];return C.exports.useEffect(function(){return m},[m]),b("div",{...bb({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:i,onKeyDown:g,tabIndex:0,role:"slider"})})}),xb=function(e){return e.filter(Boolean).join(" ")},Dk=function(e){var t=e.color,n=e.left,r=e.top,i=r===void 0?.5:r,o=xb(["react-colorful__pointer",e.className]);return b("div",{className:o,style:{top:100*i+"%",left:100*n+"%"},children:b("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}})})},no=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},_V=function(e){var t=e.s,n=e.v,r=e.a,i=(200-t)*n/100;return{h:no(e.h),s:no(i>0&&i<200?t*n/100/(i<=100?i:200-i)*100:0),l:no(i/2),a:no(r,2)}},N7=function(e){var t=_V(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Qw=function(e){var t=_V(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},oke=function(e){var t=e.h,n=e.s,r=e.v,i=e.a;t=t/360*6,n/=100,r/=100;var o=Math.floor(t),a=r*(1-n),s=r*(1-(t-o)*n),l=r*(1-(1-t+o)*n),u=o%6;return{r:no(255*[r,s,a,a,l,r][u]),g:no(255*[l,r,r,s,a,a][u]),b:no(255*[a,a,l,r,r,s][u]),a:no(i,2)}},ake=function(e){var t=e.r,n=e.g,r=e.b,i=e.a,o=Math.max(t,n,r),a=o-Math.min(t,n,r),s=a?o===t?(n-r)/a:o===n?2+(r-t)/a:4+(t-n)/a:0;return{h:no(60*(s<0?s+6:s)),s:no(o?a/o*100:0),v:no(o/255*100),a:i}},ske=se.memo(function(e){var t=e.hue,n=e.onChange,r=xb(["react-colorful__hue",e.className]);return se.createElement("div",{className:r},se.createElement(Ok,{onMove:function(i){n({h:360*i.left})},onKey:function(i){n({h:l1(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":no(t),"aria-valuemax":"360","aria-valuemin":"0"},se.createElement(Dk,{className:"react-colorful__hue-pointer",left:t/360,color:N7({h:t,s:100,v:100,a:1})})))}),lke=se.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:N7({h:t.h,s:100,v:100,a:1})};return se.createElement("div",{className:"react-colorful__saturation",style:r},se.createElement(Ok,{onMove:function(i){n({s:100*i.left,v:100-100*i.top})},onKey:function(i){n({s:l1(t.s+100*i.left,0,100),v:l1(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+no(t.s)+"%, Brightness "+no(t.v)+"%"},se.createElement(Dk,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:N7(t)})))}),kV=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function uke(e,t,n){var r=O7(n),i=C.exports.useState(function(){return e.toHsva(t)}),o=i[0],a=i[1],s=C.exports.useRef({color:t,hsva:o});C.exports.useEffect(function(){if(!e.equal(t,s.current.color)){var u=e.toHsva(t);s.current={hsva:u,color:t},a(u)}},[t,e]),C.exports.useEffect(function(){var u;kV(o,s.current.hsva)||e.equal(u=e.fromHsva(o),s.current.color)||(s.current={hsva:o,color:u},r(u))},[o,e,r]);var l=C.exports.useCallback(function(u){a(function(h){return Object.assign({},h,u)})},[]);return[o,l]}var cke=typeof window<"u"?C.exports.useLayoutEffect:C.exports.useEffect,dke=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},kI=new Map,fke=function(e){cke(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!kI.has(t)){var n=t.createElement("style");n.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,kI.set(t,n);var r=dke();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},hke=function(e){var t=e.className,n=e.hsva,r=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+Qw(Object.assign({},n,{a:0}))+", "+Qw(Object.assign({},n,{a:1}))+")"},o=xb(["react-colorful__alpha",t]),a=no(100*n.a);return se.createElement("div",{className:o},b("div",{className:"react-colorful__alpha-gradient",style:i}),se.createElement(Ok,{onMove:function(s){r({a:s.left})},onKey:function(s){r({a:l1(n.a+s.left)})},"aria-label":"Alpha","aria-valuetext":a+"%","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":"100"},se.createElement(Dk,{className:"react-colorful__alpha-pointer",left:n.a,color:Qw(n)})))},pke=function(e){var t=e.className,n=e.colorModel,r=e.color,i=r===void 0?n.defaultColor:r,o=e.onChange,a=CV(e,["className","colorModel","color","onChange"]),s=C.exports.useRef(null);fke(s);var l=uke(n,i,o),u=l[0],h=l[1],g=xb(["react-colorful",t]);return se.createElement("div",bb({},a,{ref:s,className:g}),b(lke,{hsva:u,onChange:h}),b(ske,{hue:u.h,onChange:h}),se.createElement(hke,{hsva:u,onChange:h,className:"react-colorful__last-control"}))},gke={defaultColor:{r:0,g:0,b:0,a:1},toHsva:ake,fromHsva:oke,equal:kV},mke=function(e){return se.createElement(pke,bb({},e,{colorModel:gke}))};const EV=e=>{const{styleClass:t,...n}=e;return b(mke,{className:`invokeai__color-picker ${t}`,...n})},vke=lt([kn,Ka],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:i,shouldPreserveMaskedArea:o}=e;return{layer:r,maskColor:n,maskColorString:oh(n),isMaskEnabled:i,shouldPreserveMaskedArea:o,isStaging:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),yke=()=>{const e=qe(),{layer:t,maskColor:n,isMaskEnabled:r,shouldPreserveMaskedArea:i,isStaging:o}=Le(vke);st(["q"],()=>{a()},{enabled:()=>!o,preventDefault:!0},[t]),st(["shift+c"],()=>{s()},{enabled:()=>!o,preventDefault:!0},[]),st(["h"],()=>{l()},{enabled:()=>!o,preventDefault:!0},[r]);const a=()=>{e(MH(t==="mask"?"base":"mask"))},s=()=>e(OSe()),l=()=>e(AH(!r));return b(ad,{trigger:"hover",triggerComponent:b(Lo,{children:b(pt,{"aria-label":"Masking Options",tooltip:"Masking Options",icon:b(V5e,{}),style:t==="mask"?{backgroundColor:"var(--accent-color)"}:{backgroundColor:"var(--btn-base-color)"},isDisabled:o})}),children:Q(rn,{direction:"column",gap:"0.5rem",children:[b(ia,{label:"Enable Mask (H)",isChecked:r,onChange:l}),b(ia,{label:"Preserve Masked Area",isChecked:i,onChange:u=>e(ebe(u.target.checked))}),b(EV,{style:{paddingTop:"0.5rem",paddingBottom:"0.5rem"},color:n,onChange:u=>e(KSe(u))}),b(oa,{size:"sm",leftIcon:b(v2,{}),onClick:s,children:"Clear Mask (Shift+C)"})]})})};let S3;const Ske=new Uint8Array(16);function bke(){if(!S3&&(S3=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!S3))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return S3(Ske)}const Ei=[];for(let e=0;e<256;++e)Ei.push((e+256).toString(16).slice(1));function xke(e,t=0){return(Ei[e[t+0]]+Ei[e[t+1]]+Ei[e[t+2]]+Ei[e[t+3]]+"-"+Ei[e[t+4]]+Ei[e[t+5]]+"-"+Ei[e[t+6]]+Ei[e[t+7]]+"-"+Ei[e[t+8]]+Ei[e[t+9]]+"-"+Ei[e[t+10]]+Ei[e[t+11]]+Ei[e[t+12]]+Ei[e[t+13]]+Ei[e[t+14]]+Ei[e[t+15]]).toLowerCase()}const wke=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),EI={randomUUID:wke};function h0(e,t,n){if(EI.randomUUID&&!t&&!e)return EI.randomUUID();e=e||{};const r=e.random||(e.rng||bke)();if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){n=n||0;for(let i=0;i<16;++i)t[n+i]=r[i];return t}return xke(r)}const Cke=(e,t,n,r)=>{const i=e.scale(),o=e.getClientRect({relativeTo:e.getParent()});e.scale({x:1/t,y:1/t});const{x:a,y:s,width:l,height:u}=e.getClientRect(),h=r?{x:Math.round(r.x+n.x),y:Math.round(r.y+n.y),width:Math.round(r.width),height:Math.round(r.height)}:{x:Math.round(a),y:Math.round(s),width:Math.round(l),height:Math.round(u)},g=e.toDataURL(h);return e.scale(i),{dataURL:g,boundingBox:{x:Math.round(o.x),y:Math.round(o.y),width:Math.round(l),height:Math.round(u)}}},_ke=e=>{const t=document.createElement("a");t.href=e,t.download="",document.body.appendChild(t),t.click(),document.body.removeChild(t),t.remove()},kke=(e,t,n)=>{const r=document.createElement("img");r.addEventListener("load",()=>{const i=document.createElement("canvas");i.width=t,i.height=n;const o=i.getContext("2d");!o||(o.drawImage(r,0,0),i.toBlob(a=>{a&&navigator.clipboard.write([new ClipboardItem({[a.type]:a})])}),i.remove(),r.remove())}),r.src=e},Eke={cropVisible:!1,cropToBoundingBox:!1,shouldSaveToGallery:!1,shouldDownload:!1,shouldCopy:!1,shouldSetAsInitialImage:!0},b3=(e=Eke)=>async(t,n)=>{const{cropVisible:r,cropToBoundingBox:i,shouldSaveToGallery:o,shouldDownload:a,shouldCopy:s,shouldSetAsInitialImage:l}=e;t(h5e("Exporting Image")),t(l0(!1));const u=n(),{stageScale:h,boundingBoxCoordinates:g,boundingBoxDimensions:m,stageCoordinates:v}=u.canvas,S=jv();if(!S){t(Su(!1)),t(l0(!0));return}const{dataURL:w,boundingBox:k}=Cke(S,h,v,i?{...g,...m}:void 0);if(!w){t(Su(!1)),t(l0(!0));return}const P=new FormData;P.append("data",JSON.stringify({dataURL:w,filename:"merged_canvas.png",kind:o?"result":"temp",cropVisible:r}));const T=await(await fetch(window.location.origin+"/upload",{method:"POST",body:P})).json(),{url:M,width:R,height:O}=T,D={uuid:h0(),category:o?"result":"user",...T};a&&(_ke(M),t(vm({title:"Image Download Started",status:"success",duration:2500,isClosable:!0}))),s&&(kke(M,R,O),t(vm({title:"Image Copied",status:"success",duration:2500,isClosable:!0}))),o&&(t(u0({image:D,category:"result"})),t(vm({title:"Image Saved to Gallery",status:"success",duration:2500,isClosable:!0}))),l&&(t(XSe({kind:"image",layer:"base",...k,image:D})),t(vm({title:"Canvas Merged",status:"success",duration:2500,isClosable:!0}))),t(Su(!1)),t(t4("Connected")),t(l0(!0))},Pke=lt([kn,Ka,Pd],(e,t,n)=>{const{isProcessing:r}=n,{tool:i,brushColor:o,brushSize:a}=e;return{tool:i,isStaging:t,isProcessing:r,brushColor:o,brushSize:a}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),Tke=()=>{const e=qe(),{tool:t,brushColor:n,brushSize:r,isStaging:i}=Le(Pke);st(["b"],()=>{o()},{enabled:()=>!i,preventDefault:!0},[]),st(["e"],()=>{a()},{enabled:()=>!i,preventDefault:!0},[t]),st(["c"],()=>{s()},{enabled:()=>!i,preventDefault:!0},[t]),st(["shift+f"],()=>{l()},{enabled:()=>!i,preventDefault:!0}),st(["delete","backspace"],()=>{u()},{enabled:()=>!i,preventDefault:!0}),st(["BracketLeft"],()=>{e(Iw(Math.max(r-5,5)))},{enabled:()=>!i,preventDefault:!0},[r]),st(["BracketRight"],()=>{e(Iw(Math.min(r+5,500)))},{enabled:()=>!i,preventDefault:!0},[r]),st(["shift+BracketLeft"],()=>{e(Mw({...n,a:We.clamp(n.a-.05,.05,1)}))},{enabled:()=>!i,preventDefault:!0},[n]),st(["shift+BracketRight"],()=>{e(Mw({...n,a:We.clamp(n.a+.05,.05,1)}))},{enabled:()=>!i,preventDefault:!0},[n]);const o=()=>e(z0("brush")),a=()=>e(z0("eraser")),s=()=>e(z0("colorPicker")),l=()=>e(MSe()),u=()=>e(ASe());return Q(Lo,{isAttached:!0,children:[b(pt,{"aria-label":"Brush Tool (B)",tooltip:"Brush Tool (B)",icon:b(G5e,{}),"data-selected":t==="brush"&&!i,onClick:o,isDisabled:i}),b(pt,{"aria-label":"Eraser Tool (E)",tooltip:"Eraser Tool (E)",icon:b(I5e,{}),"data-selected":t==="eraser"&&!i,isDisabled:i,onClick:a}),b(pt,{"aria-label":"Fill Bounding Box (Shift+F)",tooltip:"Fill Bounding Box (Shift+F)",icon:b(z5e,{}),isDisabled:i,onClick:l}),b(pt,{"aria-label":"Erase Bounding Box Area (Delete/Backspace)",tooltip:"Erase Bounding Box Area (Delete/Backspace)",icon:b(fH,{style:{transform:"rotate(45deg)"}}),isDisabled:i,onClick:u}),b(pt,{"aria-label":"Color Picker (C)",tooltip:"Color Picker (C)",icon:b(D5e,{}),"data-selected":t==="colorPicker"&&!i,isDisabled:i,onClick:s}),b(ad,{trigger:"hover",triggerComponent:b(pt,{"aria-label":"Brush Options",tooltip:"Brush Options",icon:b(pH,{})}),children:Q(rn,{minWidth:"15rem",direction:"column",gap:"1rem",width:"100%",children:[b(rn,{gap:"1rem",justifyContent:"space-between",children:b(la,{label:"Size",value:r,withInput:!0,onChange:h=>e(Iw(h)),sliderNumberInputProps:{max:500},inputReadOnly:!1})}),b(EV,{style:{width:"100%",paddingTop:"0.5rem",paddingBottom:"0.5rem"},color:n,onChange:h=>e(Mw(h))})]})})]})};let PI;const PV=()=>({setOpenUploader:e=>{e&&(PI=e)},openUploader:PI}),Lke=lt([Pd,kn,Ka],(e,t,n)=>{const{isProcessing:r}=e,{tool:i,shouldCropToBoundingBoxOnSave:o,layer:a,isMaskEnabled:s}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:s,tool:i,layer:a,shouldCropToBoundingBoxOnSave:o}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),Ake=()=>{const e=qe(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:i,tool:o,shouldCropToBoundingBoxOnSave:a}=Le(Lke),s=jv(),{openUploader:l}=PV();st(["v"],()=>{u()},{enabled:()=>!n,preventDefault:!0},[]),st(["r"],()=>{h()},{enabled:()=>!0,preventDefault:!0},[s]),st(["shift+m"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[s,t]),st(["shift+s"],()=>{v()},{enabled:()=>!n,preventDefault:!0},[s,t]),st(["meta+c","ctrl+c"],()=>{S()},{enabled:()=>!n,preventDefault:!0},[s,t]),st(["shift+d"],()=>{w()},{enabled:()=>!n,preventDefault:!0},[s,t]);const u=()=>e(z0("move")),h=()=>{const P=jv();if(!P)return;const E=P.getClientRect({skipTransform:!0});e(VSe({contentRect:E}))},g=()=>{e(TH()),e(ck())},m=()=>{e(b3({cropVisible:!1,shouldSetAsInitialImage:!0}))},v=()=>{e(b3({cropVisible:!a,cropToBoundingBox:a,shouldSaveToGallery:!0}))},S=()=>{e(b3({cropVisible:!a,cropToBoundingBox:a,shouldCopy:!0}))},w=()=>{e(b3({cropVisible:!a,cropToBoundingBox:a,shouldDownload:!0}))};return Q("div",{className:"inpainting-settings",children:[b(Ol,{tooltip:"Layer (Q)",tooltipProps:{hasArrow:!0,placement:"top"},value:i,validValues:rSe,onChange:P=>{const E=P.target.value;e(MH(E)),E==="mask"&&!r&&e(AH(!0))},isDisabled:n}),b(yke,{}),b(Tke,{}),Q(Lo,{isAttached:!0,children:[b(pt,{"aria-label":"Move Tool (V)",tooltip:"Move Tool (V)",icon:b(T5e,{}),"data-selected":o==="move"||n,onClick:u}),b(pt,{"aria-label":"Reset View (R)",tooltip:"Reset View (R)",icon:b(M5e,{}),onClick:h})]}),Q(Lo,{isAttached:!0,children:[b(pt,{"aria-label":"Merge Visible (Shift+M)",tooltip:"Merge Visible (Shift+M)",icon:b(W5e,{}),onClick:m,isDisabled:n}),b(pt,{"aria-label":"Save to Gallery (Shift+S)",tooltip:"Save to Gallery (Shift+S)",icon:b(hH,{}),onClick:v,isDisabled:n}),b(pt,{"aria-label":"Copy to Clipboard (Cmd/Ctrl+C)",tooltip:"Copy to Clipboard (Cmd/Ctrl+C)",icon:b(ob,{}),onClick:S,isDisabled:n}),b(pt,{"aria-label":"Download as Image (Shift+D)",tooltip:"Download as Image (Shift+D)",icon:b(dH,{}),onClick:w,isDisabled:n})]}),Q(Lo,{isAttached:!0,children:[b(Q_e,{}),b(eke,{})]}),Q(Lo,{isAttached:!0,children:[b(pt,{"aria-label":"Upload",tooltip:"Upload",icon:b(ik,{}),onClick:l,isDisabled:n}),b(pt,{"aria-label":"Clear Canvas",tooltip:"Clear Canvas",icon:b(v2,{}),onClick:g,style:{backgroundColor:"var(--btn-delete-image)"},isDisabled:n})]}),b(Lo,{isAttached:!0,children:b(ike,{})})]})},Mke=lt([kn],e=>{const{doesCanvasNeedScaling:t}=e;return{doesCanvasNeedScaling:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),Ike=()=>{const e=qe(),{doesCanvasNeedScaling:t}=Le(Mke);return C.exports.useLayoutEffect(()=>{e(Wi(!0));const n=We.debounce(()=>{e(Wi(!0))},250);return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[e]),b("div",{className:"workarea-single-view",children:b("div",{className:"workarea-split-view-left",children:Q("div",{className:"inpainting-main-area",children:[b(Ake,{}),b("div",{className:"inpainting-canvas-area",children:t?b(KCe,{}):b(X_e,{})})]})})})};function Rke(){return b(xk,{optionsPanel:b(YCe,{}),styleClass:"inpainting-workarea-overrides",children:b(Ike,{})})}const Oke=at({displayName:"UnifiedCanvasIcon",viewBox:"0 0 3544 3544",path:b("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M3543.31,770.787C3543.31,515.578 3336.11,308.38 3080.9,308.38L462.407,308.38C207.197,308.38 -0,515.578 -0,770.787L-0,2766.03C-0,3021.24 207.197,3228.44 462.407,3228.44L3080.9,3228.44C3336.11,3228.44 3543.31,3021.24 3543.31,2766.03C3543.31,2766.03 3543.31,770.787 3543.31,770.787ZM922.933,3113.01L462.407,3113.01C437.741,3113.01 413.674,3110.43 390.453,3105.52L390.453,2899.11L922.933,2899.11L922.933,3113.01ZM947.933,2899.11L947.933,3113.01L1480.41,3113.01L1480.41,2899.11L947.933,2899.11ZM1505.41,2899.11L1505.41,3113.01L2037.89,3113.01L2037.89,2899.11L1505.41,2899.11ZM2062.89,2899.11L2062.89,3113.01L2595.37,3113.01L2595.37,2899.11L2062.89,2899.11ZM3152.85,3105.52C3129.63,3110.43 3105.57,3113.01 3080.9,3113.01L2620.37,3113.01L2620.37,2899.11L3152.85,2899.11L3152.85,3105.52ZM365.453,3099.26L365.408,3099.24C354.521,3096.07 343.79,3092.37 333.266,3088.14C315.377,3080.95 298.094,3072.26 281.651,3062.2C263.114,3050.85 245.648,3037.77 229.544,3023.17C213.34,3008.49 198.518,2992.28 185.34,2974.83C174.102,2959.94 164.06,2944.16 155.353,2927.66C150.517,2918.5 146.102,2909.13 142.102,2899.57L141.91,2899.11L365.453,2899.11L365.453,3099.26ZM3401.4,2899.11C3361.33,2995.39 3279.12,3069.8 3177.85,3099.26L3177.85,2899.11L3401.4,2899.11ZM132.624,2874.11C121.465,2840.08 115.431,2803.76 115.431,2766.03L115.431,2341.63L365.453,2341.63L365.453,2874.11L132.624,2874.11ZM922.933,918.103L922.933,669.193L390.453,669.193L390.453,1201.67L731.014,1201.67L731.014,1226.67L390.453,1226.67L390.453,1759.15L731.014,1759.15L731.014,1784.15L390.453,1784.15L390.453,2316.63L731.014,2316.63L731.014,2341.63L390.453,2341.63L390.453,2874.11L922.933,2874.11L922.933,2625.2C931.122,2627.1 939.463,2628.6 947.933,2629.66L947.933,2874.11L1480.41,2874.11L1480.41,2631.62L1505.41,2631.62L1505.41,2874.11L2037.89,2874.11L2037.89,2631.62L2062.89,2631.62L2062.89,2874.11L2595.37,2874.11L2595.37,2629.66C2603.85,2628.6 2612.18,2627.1 2620.37,2625.2L2620.37,2874.11L3152.85,2874.11L3152.85,2341.63L2812.29,2341.63L2812.29,2316.63L3152.85,2316.63L3152.85,1784.15L2812.29,1784.15L2812.29,1759.15L3152.85,1759.15L3152.85,1226.67L2812.29,1226.67L2812.29,1201.67L3152.85,1201.67L3152.85,669.193L2620.37,669.193L2620.37,918.103C2612.18,916.203 2603.84,914.708 2595.37,913.642L2595.37,669.193L2062.89,669.193L2062.89,911.688L2037.89,911.688L2037.89,669.193L1505.41,669.193L1505.41,911.688L1480.41,911.688L1480.41,669.193L947.933,669.193L947.933,913.642C939.462,914.708 931.123,916.203 922.933,918.103ZM3427.88,2341.63L3427.88,2766.03C3427.88,2803.76 3421.84,2840.08 3410.68,2874.11L3177.85,2874.11L3177.85,2341.63L3427.88,2341.63ZM2494.01,2603.04L2524.53,2603.04C2541.26,2603.04 2557.62,2601.44 2573.47,2598.39L2598.02,2593.66L2588.56,2544.56L2564.01,2549.29C2551.23,2551.75 2538.03,2553.04 2524.53,2553.04L2494.01,2553.04L2494.01,2603.04ZM1294.01,2603.04L1394.01,2603.04L1394.01,2553.04L1294.01,2553.04L1294.01,2603.04ZM1894.01,2603.04L1994.01,2603.04L1994.01,2553.04L1894.01,2553.04L1894.01,2603.04ZM2194.01,2603.04L2294.01,2603.04L2294.01,2553.04L2194.01,2553.04L2194.01,2603.04ZM1144.01,2603.04L1244.01,2603.04L1244.01,2553.04L1144.01,2553.04L1144.01,2603.04ZM1444.01,2603.04L1544.01,2603.04L1544.01,2553.04L1444.01,2553.04L1444.01,2603.04ZM1594.01,2603.04L1694.01,2603.04L1694.01,2553.04L1594.01,2553.04L1594.01,2603.04ZM2344.01,2603.04L2444.01,2603.04L2444.01,2553.04L2344.01,2553.04L2344.01,2603.04ZM2044.01,2603.04L2144.01,2603.04L2144.01,2553.04L2044.01,2553.04L2044.01,2603.04ZM994.01,2603.04L1094.01,2603.04L1094.01,2553.04L994.01,2553.04L994.01,2603.04ZM1744.01,2603.04L1844.01,2603.04L1844.01,2553.04L1744.01,2553.04L1744.01,2603.04ZM864.145,2551.46C878.835,2562.5 894.741,2572 911.624,2579.74L934.352,2590.15L955.18,2544.7L932.452,2534.28C918.844,2528.05 906.024,2520.39 894.185,2511.49L874.199,2496.47L844.16,2536.44L864.145,2551.46ZM2674.44,2554.92C2689.46,2544.16 2703.28,2531.82 2715.65,2518.14L2732.42,2499.61L2695.35,2466.06L2678.58,2484.6C2668.59,2495.63 2657.44,2505.59 2645.32,2514.28L2625,2528.84L2654.12,2569.48L2674.44,2554.92ZM865.632,1911.31L1339.59,1374.15L2030.89,2134.59L2392.97,1713.77L2677.68,2017.9L2677.68,2324.93C2677.68,2424.23 2597.06,2504.85 2497.76,2504.85C2497.76,2504.85 1045.55,2504.85 1045.55,2504.85C946.251,2504.85 865.632,2424.23 865.632,2324.93L865.632,1911.31ZM771.251,2417.22C776.455,2435.14 783.552,2452.26 792.313,2468.35L804.27,2490.3L848.18,2466.39L836.223,2444.43C829.171,2431.49 823.457,2417.7 819.268,2403.28L812.297,2379.27L764.28,2393.21L771.251,2417.22ZM2770.36,2422.83C2775.83,2405.47 2779.52,2387.33 2781.2,2368.61L2783.43,2343.71L2733.64,2339.24L2731.4,2364.14C2730.05,2379.21 2727.08,2393.82 2722.67,2407.79L2715.15,2431.63L2762.84,2446.67L2770.36,2422.83ZM761.068,2236.12L761.068,2336.12L811.068,2336.12L811.068,2236.12L761.068,2236.12ZM3177.85,1784.15L3177.85,2316.63L3427.88,2316.63L3427.88,1784.15L3177.85,1784.15ZM115.431,1784.15L115.431,2316.63L365.453,2316.63L365.453,1784.15L115.431,1784.15ZM2782.24,2291.41L2782.24,2191.41L2732.24,2191.41L2732.24,2291.41L2782.24,2291.41ZM761.068,2086.12L761.068,2186.12L811.068,2186.12L811.068,2086.12L761.068,2086.12ZM2782.24,2141.41L2782.24,2041.4L2732.24,2041.4L2732.24,2141.41L2782.24,2141.41ZM761.068,1936.12L761.068,2036.12L811.068,2036.12L811.068,1936.12L761.068,1936.12ZM2782.24,1991.4L2782.24,1891.4L2732.24,1891.4L2732.24,1991.4L2782.24,1991.4ZM761.068,1786.12L761.068,1886.12L811.068,1886.12L811.068,1786.12L761.068,1786.12ZM2782.24,1841.4L2782.24,1741.41L2732.24,1741.41L2732.24,1841.4L2782.24,1841.4ZM3177.85,1226.67L3177.85,1759.15L3427.88,1759.15L3427.88,1226.67L3177.85,1226.67ZM115.431,1226.67L115.431,1759.15L365.453,1759.15L365.453,1226.67L115.431,1226.67ZM761.068,1636.12L761.068,1736.12L811.068,1736.12L811.068,1636.12L761.068,1636.12ZM2782.24,1691.41L2782.24,1591.41L2732.24,1591.41L2732.24,1691.41L2782.24,1691.41ZM761.068,1486.12L761.068,1586.12L811.068,1586.12L811.068,1486.12L761.068,1486.12ZM2203.72,1132.2C2318.18,1132.2 2411.11,1225.13 2411.11,1339.59C2411.11,1454.05 2318.18,1546.98 2203.72,1546.98C2089.26,1546.98 1996.33,1454.05 1996.33,1339.59C1996.33,1225.13 2089.26,1132.2 2203.72,1132.2ZM2782.24,1541.41L2782.24,1441.41L2732.24,1441.41L2732.24,1541.41L2782.24,1541.41ZM761.068,1336.12L761.068,1436.12L811.068,1436.12L811.068,1336.12L761.068,1336.12ZM2782.24,1391.41L2782.24,1291.41L2732.24,1291.41L2732.24,1391.41L2782.24,1391.41ZM761.068,1186.12L761.068,1286.12L811.068,1286.12L811.068,1186.12L761.068,1186.12ZM2732.24,1197.98L2732.24,1241.41L2782.24,1241.41L2782.24,1172.98L2781.03,1172.98C2780.06,1162.82 2778.49,1152.83 2776.36,1143.04L2771.04,1118.62L2722.18,1129.24L2727.5,1153.67C2730.61,1167.95 2732.24,1182.78 2732.24,1197.98ZM3412.74,669.193L3412.89,669.694C3414.66,675.5 3416.28,681.348 3417.73,687.238C3420.46,698.265 3422.65,709.427 3424.28,720.67C3425.85,731.554 3426.91,742.513 3427.45,753.497C3427.74,759.256 3427.87,765.021 3427.88,770.787L3427.88,1201.67L3177.85,1201.67L3177.85,669.193L3412.74,669.193ZM115.431,1201.67L115.431,770.787C115.436,765.021 115.572,759.256 115.855,753.497C116.395,742.513 117.453,731.554 119.031,720.67C120.66,709.427 122.844,698.265 125.574,687.238C127.032,681.348 128.65,675.5 130.414,669.694L130.567,669.193L365.453,669.193L365.453,1201.67L115.431,1201.67ZM804.386,1055C794.186,1070.26 785.572,1086.67 778.777,1103.99L769.647,1127.26L816.194,1145.52L825.324,1122.25C830.797,1108.3 837.738,1095.08 845.955,1082.79L859.848,1062L818.279,1034.21L804.386,1055ZM2730.5,1043.14C2719.39,1028.39 2706.73,1014.86 2692.77,1002.81L2673.84,986.48L2641.17,1024.34L2660.1,1040.67C2671.37,1050.39 2681.59,1061.31 2690.56,1073.22L2705.6,1093.19L2745.54,1063.11L2730.5,1043.14ZM933.266,954.821C915.698,961.006 898.998,969.041 883.402,978.694L862.144,991.851L888.457,1034.37L909.715,1021.21C922.275,1013.44 935.723,1006.96 949.871,1001.98L973.452,993.681L956.848,946.518L933.266,954.821ZM2596.18,950.378C2578.71,945.327 2560.49,942.072 2541.72,940.832L2516.78,939.183L2513.48,989.074L2538.43,990.723C2553.54,991.722 2568.22,994.341 2582.28,998.409L2606.3,1005.36L2620.19,957.325L2596.18,950.378ZM2165.09,940.265L2065.09,940.265L2065.09,990.265L2165.09,990.265L2165.09,940.265ZM1865.08,940.265L1765.08,940.265L1765.08,990.265L1865.08,990.265L1865.08,940.265ZM1115.08,940.265L1015.08,940.265L1015.08,990.265L1115.08,990.265L1115.08,940.265ZM2015.09,940.265L1915.09,940.265L1915.09,990.265L2015.09,990.265L2015.09,940.265ZM2315.09,940.265L2215.09,940.265L2215.09,990.265L2315.09,990.265L2315.09,940.265ZM1265.08,940.265L1165.08,940.265L1165.08,990.265L1265.08,990.265L1265.08,940.265ZM1415.08,940.265L1315.08,940.265L1315.08,990.265L1415.08,990.265L1415.08,940.265ZM1565.08,940.265L1465.08,940.265L1465.08,990.265L1565.08,990.265L1565.08,940.265ZM1715.08,940.265L1615.08,940.265L1615.08,990.265L1715.08,990.265L1715.08,940.265ZM2465.09,940.265L2365.09,940.265L2365.09,990.265L2465.09,990.265L2465.09,940.265ZM365.453,437.562L365.453,644.193L139.286,644.193C178.303,544.782 261.917,467.677 365.453,437.562ZM922.933,423.812L922.933,644.193L390.453,644.193L390.453,431.295C413.674,426.391 437.741,423.812 462.407,423.812L922.933,423.812ZM947.933,423.812L947.933,644.193L1480.41,644.193L1480.41,423.812L947.933,423.812ZM1505.41,423.812L1505.41,644.193L2037.89,644.193L2037.89,423.812L1505.41,423.812ZM2062.89,423.812L2062.89,644.193L2595.37,644.193L2595.37,423.812L2062.89,423.812ZM2620.37,423.812L3080.9,423.812C3105.57,423.812 3129.63,426.391 3152.85,431.295L3152.85,644.193L2620.37,644.193L2620.37,423.812ZM3177.85,437.562C3281.38,467.669 3365,544.774 3404.02,644.193L3177.85,644.193L3177.85,437.562Z"})});function Dke(){return Q("div",{className:"work-in-progress nodes-work-in-progress",children:[b("h1",{children:"Training"}),Q("p",{children:["A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface. ",b("br",{}),b("br",{}),"InvokeAI already supports training custom embeddings using Textual Inversion using the main script."]})]})}const Nke=at({displayName:"TrainingIcon",viewBox:"0 0 3544 3544",path:b("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M0,768.593L0,2774.71C0,2930.6 78.519,3068.3 198.135,3150.37C273.059,3202.68 364.177,3233.38 462.407,3233.38C462.407,3233.38 3080.9,3233.38 3080.9,3233.38C3179.13,3233.38 3270.25,3202.68 3345.17,3150.37C3464.79,3068.3 3543.31,2930.6 3543.31,2774.71L3543.31,768.593C3543.31,517.323 3339.31,313.324 3088.04,313.324L455.269,313.324C203.999,313.324 0,517.323 0,768.593ZM3427.88,775.73L3427.88,2770.97C3427.88,2962.47 3272.4,3117.95 3080.9,3117.95L462.407,3117.95C270.906,3117.95 115.431,2962.47 115.431,2770.97C115.431,2770.97 115.431,775.73 115.431,775.73C115.431,584.229 270.906,428.755 462.407,428.755C462.407,428.755 3080.9,428.755 3080.9,428.755C3272.4,428.755 3427.88,584.229 3427.88,775.73ZM796.24,1322.76L796.24,1250.45C796.24,1199.03 836.16,1157.27 885.331,1157.27C885.331,1157.27 946.847,1157.27 946.847,1157.27C996.017,1157.27 1035.94,1199.03 1035.94,1250.45L1035.94,1644.81L2507.37,1644.81L2507.37,1250.45C2507.37,1199.03 2547.29,1157.27 2596.46,1157.27C2596.46,1157.27 2657.98,1157.27 2657.98,1157.27C2707.15,1157.27 2747.07,1199.03 2747.07,1250.45L2747.07,1322.76C2756.66,1319.22 2767.02,1317.29 2777.83,1317.29C2777.83,1317.29 2839.34,1317.29 2839.34,1317.29C2888.51,1317.29 2928.43,1357.21 2928.43,1406.38L2928.43,1527.32C2933.51,1526.26 2938.77,1525.71 2944.16,1525.71L2995.3,1525.71C3036.18,1525.71 3069.37,1557.59 3069.37,1596.86C3069.37,1596.86 3069.37,1946.44 3069.37,1946.44C3069.37,1985.72 3036.18,2017.6 2995.3,2017.6C2995.3,2017.6 2944.16,2017.6 2944.16,2017.6C2938.77,2017.6 2933.51,2017.04 2928.43,2015.99L2928.43,2136.92C2928.43,2186.09 2888.51,2226.01 2839.34,2226.01L2777.83,2226.01C2767.02,2226.01 2756.66,2224.08 2747.07,2220.55L2747.07,2292.85C2747.07,2344.28 2707.15,2386.03 2657.98,2386.03C2657.98,2386.03 2596.46,2386.03 2596.46,2386.03C2547.29,2386.03 2507.37,2344.28 2507.37,2292.85L2507.37,1898.5L1035.94,1898.5L1035.94,2292.85C1035.94,2344.28 996.017,2386.03 946.847,2386.03C946.847,2386.03 885.331,2386.03 885.331,2386.03C836.16,2386.03 796.24,2344.28 796.24,2292.85L796.24,2220.55C786.651,2224.08 776.29,2226.01 765.482,2226.01L703.967,2226.01C654.796,2226.01 614.876,2186.09 614.876,2136.92L614.876,2015.99C609.801,2017.04 604.539,2017.6 599.144,2017.6C599.144,2017.6 548.003,2017.6 548.003,2017.6C507.125,2017.6 473.937,1985.72 473.937,1946.44C473.937,1946.44 473.937,1596.86 473.937,1596.86C473.937,1557.59 507.125,1525.71 548.003,1525.71L599.144,1525.71C604.539,1525.71 609.801,1526.26 614.876,1527.32L614.876,1406.38C614.876,1357.21 654.796,1317.29 703.967,1317.29C703.967,1317.29 765.482,1317.29 765.482,1317.29C776.29,1317.29 786.651,1319.22 796.24,1322.76ZM977.604,1250.45C977.604,1232.7 963.822,1218.29 946.847,1218.29L885.331,1218.29C868.355,1218.29 854.573,1232.7 854.573,1250.45L854.573,2292.85C854.573,2310.61 868.355,2325.02 885.331,2325.02L946.847,2325.02C963.822,2325.02 977.604,2310.61 977.604,2292.85L977.604,1250.45ZM2565.7,1250.45C2565.7,1232.7 2579.49,1218.29 2596.46,1218.29L2657.98,1218.29C2674.95,1218.29 2688.73,1232.7 2688.73,1250.45L2688.73,2292.85C2688.73,2310.61 2674.95,2325.02 2657.98,2325.02L2596.46,2325.02C2579.49,2325.02 2565.7,2310.61 2565.7,2292.85L2565.7,1250.45ZM673.209,1406.38L673.209,2136.92C673.209,2153.9 686.991,2167.68 703.967,2167.68L765.482,2167.68C782.458,2167.68 796.24,2153.9 796.24,2136.92L796.24,1406.38C796.24,1389.41 782.458,1375.63 765.482,1375.63L703.967,1375.63C686.991,1375.63 673.209,1389.41 673.209,1406.38ZM2870.1,1406.38L2870.1,2136.92C2870.1,2153.9 2856.32,2167.68 2839.34,2167.68L2777.83,2167.68C2760.85,2167.68 2747.07,2153.9 2747.07,2136.92L2747.07,1406.38C2747.07,1389.41 2760.85,1375.63 2777.83,1375.63L2839.34,1375.63C2856.32,1375.63 2870.1,1389.41 2870.1,1406.38ZM614.876,1577.5C610.535,1574.24 605.074,1572.3 599.144,1572.3L548.003,1572.3C533.89,1572.3 522.433,1583.3 522.433,1596.86L522.433,1946.44C522.433,1960 533.89,1971.01 548.003,1971.01L599.144,1971.01C605.074,1971.01 610.535,1969.07 614.876,1965.81L614.876,1577.5ZM2928.43,1965.81L2928.43,1577.5C2932.77,1574.24 2938.23,1572.3 2944.16,1572.3L2995.3,1572.3C3009.42,1572.3 3020.87,1583.3 3020.87,1596.86L3020.87,1946.44C3020.87,1960 3009.42,1971.01 2995.3,1971.01L2944.16,1971.01C2938.23,1971.01 2932.77,1969.07 2928.43,1965.81ZM2507.37,1703.14L1035.94,1703.14L1035.94,1840.16L2507.37,1840.16L2507.37,1898.38L2507.37,1659.46L2507.37,1703.14Z"})}),Nf={txt2img:{title:b(y4e,{fill:"black",boxSize:"2.5rem"}),workarea:b(k6e,{}),tooltip:"Text To Image"},img2img:{title:b(g4e,{fill:"black",boxSize:"2.5rem"}),workarea:b(w6e,{}),tooltip:"Image To Image"},unifiedCanvas:{title:b(Oke,{fill:"black",boxSize:"2.5rem"}),workarea:b(Rke,{}),tooltip:"Unified Canvas"},nodes:{title:b(m4e,{fill:"black",boxSize:"2.5rem"}),workarea:b(h4e,{}),tooltip:"Nodes"},postprocess:{title:b(v4e,{fill:"black",boxSize:"2.5rem"}),workarea:b(p4e,{}),tooltip:"Post Processing"},training:{title:b(Nke,{fill:"black",boxSize:"2.5rem"}),workarea:b(Dke,{}),tooltip:"Training"}},wb=We.map(Nf,(e,t)=>t);[...wb];function Bke(){const e=Le(o=>o.options.activeTab),t=Le(o=>o.options.isLightBoxOpen),n=qe();st("1",()=>{n(ko(0))}),st("2",()=>{n(ko(1))}),st("3",()=>{n(ko(2))}),st("4",()=>{n(ko(3))}),st("5",()=>{n(ko(4))}),st("6",()=>{n(ko(5))}),st("z",()=>{n(bu(!t))},[t]);const r=()=>{const o=[];return Object.keys(Nf).forEach(a=>{o.push(b(pi,{hasArrow:!0,label:Nf[a].tooltip,placement:"right",children:b(o$,{children:Nf[a].title})},a))}),o},i=()=>{const o=[];return Object.keys(Nf).forEach(a=>{o.push(b(r$,{className:"app-tabs-panel",children:Nf[a].workarea},a))}),o};return Q(n$,{isLazy:!0,className:"app-tabs",variant:"unstyled",defaultIndex:e,index:e,onChange:o=>{n(ko(o))},children:[b("div",{className:"app-tabs-list",children:r()}),b(i$,{className:"app-tabs-panels",children:t?b(zCe,{}):i()})]})}const TV={activeTab:0,cfgScale:7.5,codeformerFidelity:.75,currentTheme:"dark",facetoolStrength:.8,facetoolType:"gfpgan",height:512,hiresFix:!1,img2imgStrength:.75,infillMethod:"patchmatch",isLightBoxOpen:!1,iterations:1,maskPath:"",optionsPanelScrollPosition:0,perlin:0,prompt:"",sampler:"k_lms",seamBlur:16,seamless:!1,seamSize:96,seamSteps:10,seamStrength:.7,seed:0,seedWeights:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,shouldHoldOptionsPanelOpen:!1,shouldLoopback:!1,shouldPinOptionsPanel:!0,shouldRandomizeSeed:!0,shouldRunESRGAN:!1,shouldRunFacetool:!1,shouldShowImageDetails:!1,shouldShowOptionsPanel:!0,showAdvancedOptions:!0,showDualDisplay:!0,steps:50,threshold:0,tileSize:32,upscalingLevel:4,upscalingStrength:.75,variationAmount:.1,width:512},zke=TV,LV=HS({name:"options",initialState:zke,reducers:{setPrompt:(e,t)=>{const n=t.payload;typeof n=="string"?e.prompt=n:e.prompt=e4(n)},setIterations:(e,t)=>{e.iterations=t.payload},setSteps:(e,t)=>{e.steps=t.payload},setCfgScale:(e,t)=>{e.cfgScale=t.payload},setThreshold:(e,t)=>{e.threshold=t.payload},setPerlin:(e,t)=>{e.perlin=t.payload},setHeight:(e,t)=>{e.height=t.payload},setWidth:(e,t)=>{e.width=t.payload},setSampler:(e,t)=>{e.sampler=t.payload},setSeed:(e,t)=>{e.seed=t.payload,e.shouldRandomizeSeed=!1},setImg2imgStrength:(e,t)=>{e.img2imgStrength=t.payload},setFacetoolStrength:(e,t)=>{e.facetoolStrength=t.payload},setCodeformerFidelity:(e,t)=>{e.codeformerFidelity=t.payload},setUpscalingLevel:(e,t)=>{e.upscalingLevel=t.payload},setUpscalingStrength:(e,t)=>{e.upscalingStrength=t.payload},setMaskPath:(e,t)=>{e.maskPath=t.payload},setSeamless:(e,t)=>{e.seamless=t.payload},setHiresFix:(e,t)=>{e.hiresFix=t.payload},setShouldFitToWidthHeight:(e,t)=>{e.shouldFitToWidthHeight=t.payload},resetSeed:e=>{e.seed=-1},setParameter:(e,t)=>{const{key:n,value:r}=t.payload,i={...e,[n]:r};return n==="seed"&&(i.shouldRandomizeSeed=!1),i},setShouldGenerateVariations:(e,t)=>{e.shouldGenerateVariations=t.payload},setVariationAmount:(e,t)=>{e.variationAmount=t.payload},setSeedWeights:(e,t)=>{e.seedWeights=t.payload,e.shouldGenerateVariations=!0,e.variationAmount=0},setAllTextToImageParameters:(e,t)=>{const{sampler:n,prompt:r,seed:i,variations:o,steps:a,cfg_scale:s,threshold:l,perlin:u,seamless:h,hires_fix:g,width:m,height:v}=t.payload.image;o&&o.length>0?(e.seedWeights=g5(o),e.shouldGenerateVariations=!0,e.variationAmount=0):e.shouldGenerateVariations=!1,i&&(e.seed=i,e.shouldRandomizeSeed=!1),r&&(e.prompt=e4(r)),n&&(e.sampler=n),a&&(e.steps=a),s&&(e.cfgScale=s),l&&(e.threshold=l),typeof l>"u"&&(e.threshold=0),u&&(e.perlin=u),typeof u>"u"&&(e.perlin=0),typeof h=="boolean"&&(e.seamless=h),typeof g=="boolean"&&(e.hiresFix=g),m&&(e.width=m),v&&(e.height=v)},setAllImageToImageParameters:(e,t)=>{const{type:n,strength:r,fit:i,init_image_path:o,mask_image_path:a}=t.payload.image;n==="img2img"&&(o&&(e.initialImage=o),a&&(e.maskPath=a),r&&(e.img2imgStrength=r),typeof i=="boolean"&&(e.shouldFitToWidthHeight=i))},setAllParameters:(e,t)=>{const{type:n,sampler:r,prompt:i,seed:o,variations:a,steps:s,cfg_scale:l,threshold:u,perlin:h,seamless:g,hires_fix:m,width:v,height:S,strength:w,fit:k,init_image_path:P,mask_image_path:E}=t.payload.image;n==="img2img"&&(P&&(e.initialImage=P),E&&(e.maskPath=E),w&&(e.img2imgStrength=w),typeof k=="boolean"&&(e.shouldFitToWidthHeight=k)),a&&a.length>0?(e.seedWeights=g5(a),e.shouldGenerateVariations=!0,e.variationAmount=0):e.shouldGenerateVariations=!1,o&&(e.seed=o,e.shouldRandomizeSeed=!1),i&&(e.prompt=e4(i)),r&&(e.sampler=r),s&&(e.steps=s),l&&(e.cfgScale=l),u&&(e.threshold=u),typeof u>"u"&&(e.threshold=0),h&&(e.perlin=h),typeof h>"u"&&(e.perlin=0),typeof g=="boolean"&&(e.seamless=g),typeof m=="boolean"&&(e.hiresFix=m),v&&(e.width=v),S&&(e.height=S),e.shouldRunESRGAN=!1,e.shouldRunFacetool=!1},resetOptionsState:e=>({...e,...TV}),setShouldRunFacetool:(e,t)=>{e.shouldRunFacetool=t.payload},setFacetoolType:(e,t)=>{e.facetoolType=t.payload},setShouldRunESRGAN:(e,t)=>{e.shouldRunESRGAN=t.payload},setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},setShowAdvancedOptions:(e,t)=>{e.showAdvancedOptions=t.payload},setActiveTab:(e,t)=>{typeof t.payload=="number"?e.activeTab=t.payload:e.activeTab=wb.indexOf(t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShowDualDisplay:(e,t)=>{e.showDualDisplay=t.payload},setInitialImage:(e,t)=>{e.initialImage=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setShouldPinOptionsPanel:(e,t)=>{e.shouldPinOptionsPanel=t.payload},setShouldShowOptionsPanel:(e,t)=>{e.shouldShowOptionsPanel=t.payload},setOptionsPanelScrollPosition:(e,t)=>{e.optionsPanelScrollPosition=t.payload},setShouldHoldOptionsPanelOpen:(e,t)=>{e.shouldHoldOptionsPanelOpen=t.payload},setShouldLoopback:(e,t)=>{e.shouldLoopback=t.payload},setCurrentTheme:(e,t)=>{e.currentTheme=t.payload},setIsLightBoxOpen:(e,t)=>{e.isLightBoxOpen=t.payload},setSeamSize:(e,t)=>{e.seamSize=t.payload},setSeamBlur:(e,t)=>{e.seamBlur=t.payload},setSeamStrength:(e,t)=>{e.seamStrength=t.payload},setSeamSteps:(e,t)=>{e.seamSteps=t.payload},setTileSize:(e,t)=>{e.tileSize=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload}}}),{clearInitialImage:AV,resetOptionsState:qTe,resetSeed:KTe,setActiveTab:ko,setAllImageToImageParameters:Fke,setAllParameters:$ke,setAllTextToImageParameters:Hke,setCfgScale:MV,setCodeformerFidelity:IV,setCurrentTheme:Wke,setFacetoolStrength:o4,setFacetoolType:a4,setHeight:RV,setHiresFix:OV,setImg2imgStrength:B7,setInfillMethod:DV,setInitialImage:P1,setIsLightBoxOpen:bu,setIterations:Vke,setMaskPath:NV,setOptionsPanelScrollPosition:Uke,setParameter:XTe,setPerlin:BV,setPrompt:Cb,setSampler:zV,setSeamBlur:TI,setSeamless:FV,setSeamSize:LI,setSeamSteps:AI,setSeamStrength:MI,setSeed:w2,setSeedWeights:$V,setShouldFitToWidthHeight:HV,setShouldGenerateVariations:Gke,setShouldHoldOptionsPanelOpen:jke,setShouldLoopback:Yke,setShouldPinOptionsPanel:qke,setShouldRandomizeSeed:Kke,setShouldRunESRGAN:Xke,setShouldRunFacetool:Zke,setShouldShowImageDetails:WV,setShouldShowOptionsPanel:ud,setShowAdvancedOptions:ZTe,setShowDualDisplay:Qke,setSteps:VV,setThreshold:UV,setTileSize:II,setUpscalingLevel:z7,setUpscalingStrength:F7,setVariationAmount:Jke,setWidth:GV}=LV.actions,eEe=LV.reducer,Bl=Object.create(null);Bl.open="0";Bl.close="1";Bl.ping="2";Bl.pong="3";Bl.message="4";Bl.upgrade="5";Bl.noop="6";const s4=Object.create(null);Object.keys(Bl).forEach(e=>{s4[Bl[e]]=e});const tEe={type:"error",data:"parser error"},nEe=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",rEe=typeof ArrayBuffer=="function",iEe=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,jV=({type:e,data:t},n,r)=>nEe&&t instanceof Blob?n?r(t):RI(t,r):rEe&&(t instanceof ArrayBuffer||iEe(t))?n?r(t):RI(new Blob([t]),r):r(Bl[e]+(t||"")),RI=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+r)},n.readAsDataURL(e)},OI="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Em=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,i=0,o,a,s,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),h=new Uint8Array(u);for(r=0;r>4,h[i++]=(a&15)<<4|s>>2,h[i++]=(s&3)<<6|l&63;return u},aEe=typeof ArrayBuffer=="function",YV=(e,t)=>{if(typeof e!="string")return{type:"message",data:qV(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:sEe(e.substring(1),t)}:s4[n]?e.length>1?{type:s4[n],data:e.substring(1)}:{type:s4[n]}:tEe},sEe=(e,t)=>{if(aEe){const n=oEe(e);return qV(n,t)}else return{base64:!0,data:e}},qV=(e,t)=>{switch(t){case"blob":return e instanceof ArrayBuffer?new Blob([e]):e;case"arraybuffer":default:return e}},KV=String.fromCharCode(30),lEe=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,a)=>{jV(o,!1,s=>{r[a]=s,++i===n&&t(r.join(KV))})})},uEe=(e,t)=>{const n=e.split(KV),r=[];for(let i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function ZV(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const dEe=setTimeout,fEe=clearTimeout;function _b(e,t){t.useNativeTimers?(e.setTimeoutFn=dEe.bind(Kc),e.clearTimeoutFn=fEe.bind(Kc)):(e.setTimeoutFn=setTimeout.bind(Kc),e.clearTimeoutFn=clearTimeout.bind(Kc))}const hEe=1.33;function pEe(e){return typeof e=="string"?gEe(e):Math.ceil((e.byteLength||e.size)*hEe)}function gEe(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}class mEe extends Error{constructor(t,n,r){super(t),this.description=n,this.context=r,this.type="TransportError"}}class QV extends Ur{constructor(t){super(),this.writable=!1,_b(this,t),this.opts=t,this.query=t.query,this.readyState="",this.socket=t.socket}onError(t,n,r){return super.emitReserved("error",new mEe(t,n,r)),this}open(){return(this.readyState==="closed"||this.readyState==="")&&(this.readyState="opening",this.doOpen()),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(t){this.readyState==="open"&&this.write(t)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(t){const n=YV(t,this.socket.binaryType);this.onPacket(n)}onPacket(t){super.emitReserved("packet",t)}onClose(t){this.readyState="closed",super.emitReserved("close",t)}}const JV="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),$7=64,vEe={};let DI=0,x3=0,NI;function BI(e){let t="";do t=JV[e%$7]+t,e=Math.floor(e/$7);while(e>0);return t}function eU(){const e=BI(+new Date);return e!==NI?(DI=0,NI=e):e+"."+BI(DI++)}for(;x3<$7;x3++)vEe[JV[x3]]=x3;function tU(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function yEe(e){let t={},n=e.split("&");for(let r=0,i=n.length;r{this.readyState="paused",t()};if(this.polling||!this.writable){let r=0;this.polling&&(r++,this.once("pollComplete",function(){--r||n()})),this.writable||(r++,this.once("drain",function(){--r||n()}))}else n()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(t){const n=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};uEe(t,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this.polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this.poll())}doClose(){const t=()=>{this.write([{type:"close"}])};this.readyState==="open"?t():this.once("open",t)}write(t){this.writable=!1,lEe(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){let t=this.query||{};const n=this.opts.secure?"https":"http";let r="";this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=eU()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.opts.port&&(n==="https"&&Number(this.opts.port)!==443||n==="http"&&Number(this.opts.port)!==80)&&(r=":"+this.opts.port);const i=tU(t),o=this.opts.hostname.indexOf(":")!==-1;return n+"://"+(o?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}request(t={}){return Object.assign(t,{xd:this.xd,xs:this.xs},this.opts),new Ml(this.uri(),t)}doWrite(t,n){const r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(i,o)=>{this.onError("xhr post error",i,o)})}doPoll(){const t=this.request();t.on("data",this.onData.bind(this)),t.on("error",(n,r)=>{this.onError("xhr poll error",n,r)}),this.pollXhr=t}}class Ml extends Ur{constructor(t,n){super(),_b(this,n),this.opts=n,this.method=n.method||"GET",this.uri=t,this.async=n.async!==!1,this.data=n.data!==void 0?n.data:null,this.create()}create(){const t=ZV(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;const n=this.xhr=new rU(t);try{n.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){n.setDisableHeaderCheck&&n.setDisableHeaderCheck(!0);for(let r in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(r)&&n.setRequestHeader(r,this.opts.extraHeaders[r])}}catch{}if(this.method==="POST")try{n.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{n.setRequestHeader("Accept","*/*")}catch{}"withCredentials"in n&&(n.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(n.timeout=this.opts.requestTimeout),n.onreadystatechange=()=>{n.readyState===4&&(n.status===200||n.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof n.status=="number"?n.status:0)},0))},n.send(this.data)}catch(r){this.setTimeoutFn(()=>{this.onError(r)},0);return}typeof document<"u"&&(this.index=Ml.requestsCount++,Ml.requests[this.index]=this)}onError(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}cleanup(t){if(!(typeof this.xhr>"u"||this.xhr===null)){if(this.xhr.onreadystatechange=bEe,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete Ml.requests[this.index],this.xhr=null}}onLoad(){const t=this.xhr.responseText;t!==null&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}Ml.requestsCount=0;Ml.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",zI);else if(typeof addEventListener=="function"){const e="onpagehide"in Kc?"pagehide":"unload";addEventListener(e,zI,!1)}}function zI(){for(let e in Ml.requests)Ml.requests.hasOwnProperty(e)&&Ml.requests[e].abort()}const iU=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),w3=Kc.WebSocket||Kc.MozWebSocket,FI=!0,CEe="arraybuffer",$I=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class _Ee extends QV{constructor(t){super(t),this.supportsBinary=!t.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const t=this.uri(),n=this.opts.protocols,r=$I?{}:ZV(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=FI&&!$I?n?new w3(t,n):new w3(t):new w3(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType||CEe,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=t=>this.onClose({description:"websocket connection closed",context:t}),this.ws.onmessage=t=>this.onData(t.data),this.ws.onerror=t=>this.onError("websocket error",t)}write(t){this.writable=!1;for(let n=0;n{const a={};try{FI&&this.ws.send(o)}catch{}i&&iU(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){let t=this.query||{};const n=this.opts.secure?"wss":"ws";let r="";this.opts.port&&(n==="wss"&&Number(this.opts.port)!==443||n==="ws"&&Number(this.opts.port)!==80)&&(r=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=eU()),this.supportsBinary||(t.b64=1);const i=tU(t),o=this.opts.hostname.indexOf(":")!==-1;return n+"://"+(o?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!!w3}}const kEe={websocket:_Ee,polling:wEe},EEe=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,PEe=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function H7(e){const t=e,n=e.indexOf("["),r=e.indexOf("]");n!=-1&&r!=-1&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=EEe.exec(e||""),o={},a=14;for(;a--;)o[PEe[a]]=i[a]||"";return n!=-1&&r!=-1&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=TEe(o,o.path),o.queryKey=LEe(o,o.query),o}function TEe(e,t){const n=/\/{2,9}/g,r=t.replace(n,"/").split("/");return(t.slice(0,1)=="/"||t.length===0)&&r.splice(0,1),t.slice(-1)=="/"&&r.splice(r.length-1,1),r}function LEe(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}class Wc extends Ur{constructor(t,n={}){super(),t&&typeof t=="object"&&(n=t,t=null),t?(t=H7(t),n.hostname=t.host,n.secure=t.protocol==="https"||t.protocol==="wss",n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=H7(n.host).host),_b(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=n.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},n),this.opts.path=this.opts.path.replace(/\/$/,"")+"/",typeof this.opts.query=="string"&&(this.opts.query=yEe(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,typeof addEventListener=="function"&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(t){const n=Object.assign({},this.opts.query);n.EIO=XV,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts.transportOptions[t],this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new kEe[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Wc.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1)t="websocket";else if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}else t=this.transports[0];this.readyState="opening";try{t=this.createTransport(t)}catch{this.transports.shift(),this.open();return}t.open(),this.setTransport(t)}setTransport(t){this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",n=>this.onClose("transport close",n))}probe(t){let n=this.createTransport(t),r=!1;Wc.priorWebsocketSuccess=!1;const i=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",g=>{if(!r)if(g.type==="pong"&&g.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Wc.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(h(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const m=new Error("probe error");m.transport=n.name,this.emitReserved("upgradeError",m)}}))};function o(){r||(r=!0,h(),n.close(),n=null)}const a=g=>{const m=new Error("probe error: "+g);m.transport=n.name,o(),this.emitReserved("upgradeError",m)};function s(){a("transport closed")}function l(){a("socket closed")}function u(g){n&&g.name!==n.name&&o()}const h=()=>{n.removeListener("open",i),n.removeListener("error",a),n.removeListener("close",s),this.off("close",l),this.off("upgrading",u)};n.once("open",i),n.once("error",a),n.once("close",s),this.once("close",l),this.once("upgrading",u),n.open()}onOpen(){if(this.readyState="open",Wc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade&&this.transport.pause){let t=0;const n=this.upgrades.length;for(;t{this.onClose("ping timeout")},this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let r=0;r0&&n>this.maxPayload)return this.writeBuffer.slice(0,r);n+=2}return this.writeBuffer}write(t,n,r){return this.sendPacket("message",t,n,r),this}send(t,n,r){return this.sendPacket("message",t,n,r),this}sendPacket(t,n,r,i){if(typeof n=="function"&&(i=n,n=void 0),typeof r=="function"&&(i=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;const o={type:t,data:n,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),i&&this.once("flush",i),this.flush()}close(){const t=()=>{this.onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),t()},r=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():t()}):this.upgrading?r():t()),this}onError(t){Wc.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(t,n){(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")&&(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),typeof removeEventListener=="function"&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(t){const n=[];let r=0;const i=t.length;for(;rtypeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,oU=Object.prototype.toString,REe=typeof Blob=="function"||typeof Blob<"u"&&oU.call(Blob)==="[object BlobConstructor]",OEe=typeof File=="function"||typeof File<"u"&&oU.call(File)==="[object FileConstructor]";function Nk(e){return MEe&&(e instanceof ArrayBuffer||IEe(e))||REe&&e instanceof Blob||OEe&&e instanceof File}function l4(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num0;case nn.ACK:case nn.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class FEe{constructor(t){this.packet=t,this.buffers=[],this.reconPack=t}takeBinaryData(t){if(this.buffers.push(t),this.buffers.length===this.reconPack.attachments){const n=NEe(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const $Ee=Object.freeze(Object.defineProperty({__proto__:null,protocol:BEe,get PacketType(){return nn},Encoder:zEe,Decoder:Bk},Symbol.toStringTag,{value:"Module"}));function ys(e,t,n){return e.on(t,n),function(){e.off(t,n)}}const HEe=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class aU extends Ur{constructor(t,n,r){super(),this.connected=!1,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=t,this.nsp=n,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const t=this.io;this.subs=[ys(t,"open",this.onopen.bind(this)),ys(t,"packet",this.onpacket.bind(this)),ys(t,"error",this.onerror.bind(this)),ys(t,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...t){return t.unshift("message"),this.emit.apply(this,t),this}emit(t,...n){if(HEe.hasOwnProperty(t))throw new Error('"'+t.toString()+'" is a reserved event name');n.unshift(t);const r={type:nn.EVENT,data:n};if(r.options={},r.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const a=this.ids++,s=n.pop();this._registerAckCallback(a,s),r.id=a}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(t,n){const r=this.flags.timeout;if(r===void 0){this.acks[t]=n;return}const i=this.io.setTimeoutFn(()=>{delete this.acks[t];for(let o=0;o{this.io.clearTimeoutFn(i),n.apply(this,[null,...o])}}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this.packet({type:nn.CONNECT,data:t})}):this.packet({type:nn.CONNECT,data:this.auth})}onerror(t){this.connected||this.emitReserved("connect_error",t)}onclose(t,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",t,n)}onpacket(t){if(t.nsp===this.nsp)switch(t.type){case nn.CONNECT:if(t.data&&t.data.sid){const i=t.data.sid;this.onconnect(i)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case nn.EVENT:case nn.BINARY_EVENT:this.onevent(t);break;case nn.ACK:case nn.BINARY_ACK:this.onack(t);break;case nn.DISCONNECT:this.ondisconnect();break;case nn.CONNECT_ERROR:this.destroy();const r=new Error(t.data.message);r.data=t.data.data,this.emitReserved("connect_error",r);break}}onevent(t){const n=t.data||[];t.id!=null&&n.push(this.ack(t.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(t){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const r of n)r.apply(this,t)}super.emit.apply(this,t)}ack(t){const n=this;let r=!1;return function(...i){r||(r=!0,n.packet({type:nn.ACK,id:t,data:i}))}}onack(t){const n=this.acks[t.id];typeof n=="function"&&(n.apply(this,t.data),delete this.acks[t.id])}onconnect(t){this.id=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(t=>this.emitEvent(t)),this.receiveBuffer=[],this.sendBuffer.forEach(t=>{this.notifyOutgoingListeners(t),this.packet(t)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(t=>t()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:nn.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(t){return this.flags.compress=t,this}get volatile(){return this.flags.volatile=!0,this}timeout(t){return this.flags.timeout=t,this}onAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(t),this}prependAny(t){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(t),this}offAny(t){if(!this._anyListeners)return this;if(t){const n=this._anyListeners;for(let r=0;r0&&e.jitter<=1?e.jitter:0,this.attempts=0}T1.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=(Math.floor(t*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};T1.prototype.reset=function(){this.attempts=0};T1.prototype.setMin=function(e){this.ms=e};T1.prototype.setMax=function(e){this.max=e};T1.prototype.setJitter=function(e){this.jitter=e};class U7 extends Ur{constructor(t,n){var r;super(),this.nsps={},this.subs=[],t&&typeof t=="object"&&(n=t,t=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,_b(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((r=n.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new T1({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=t;const i=n.parser||$Ee;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(t){return arguments.length?(this._reconnection=!!t,this):this._reconnection}reconnectionAttempts(t){return t===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=t,this)}reconnectionDelay(t){var n;return t===void 0?this._reconnectionDelay:(this._reconnectionDelay=t,(n=this.backoff)===null||n===void 0||n.setMin(t),this)}randomizationFactor(t){var n;return t===void 0?this._randomizationFactor:(this._randomizationFactor=t,(n=this.backoff)===null||n===void 0||n.setJitter(t),this)}reconnectionDelayMax(t){var n;return t===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=t,(n=this.backoff)===null||n===void 0||n.setMax(t),this)}timeout(t){return arguments.length?(this._timeout=t,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(t){if(~this._readyState.indexOf("open"))return this;this.engine=new Wc(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=ys(n,"open",function(){r.onopen(),t&&t()}),o=ys(n,"error",a=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",a),t?t(a):r.maybeReconnectOnOpen()});if(this._timeout!==!1){const a=this._timeout;a===0&&i();const s=this.setTimeoutFn(()=>{i(),n.close(),n.emit("error",new Error("timeout"))},a);this.opts.autoUnref&&s.unref(),this.subs.push(function(){clearTimeout(s)})}return this.subs.push(i),this.subs.push(o),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(ys(t,"ping",this.onping.bind(this)),ys(t,"data",this.ondata.bind(this)),ys(t,"error",this.onerror.bind(this)),ys(t,"close",this.onclose.bind(this)),ys(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(t){try{this.decoder.add(t)}catch(n){this.onclose("parse error",n)}}ondecoded(t){iU(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r||(r=new aU(this,t,n),this.nsps[t]=r),r}_destroy(t){const n=Object.keys(this.nsps);for(const r of n)if(this.nsps[r].active)return;this._close()}_packet(t){const n=this.encoder.encode(t);for(let r=0;rt()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(t,n){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",t,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const t=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn(()=>{t.skipReconnect||(this.emitReserved("reconnect_attempt",t.backoff.attempts),!t.skipReconnect&&t.open(i=>{i?(t._reconnecting=!1,t.reconnect(),this.emitReserved("reconnect_error",i)):t.onreconnect()}))},n);this.opts.autoUnref&&r.unref(),this.subs.push(function(){clearTimeout(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const sm={};function u4(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=AEe(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,a=sm[i]&&o in sm[i].nsps,s=t.forceNew||t["force new connection"]||t.multiplex===!1||a;let l;return s?l=new U7(r,t):(sm[i]||(sm[i]=new U7(r,t)),l=sm[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(u4,{Manager:U7,Socket:aU,io:u4,connect:u4});var WEe=/d{1,4}|D{3,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|W{1,2}|[LlopSZN]|"[^"]*"|'[^']*'/g,VEe=/\b(?:[A-Z]{1,3}[A-Z][TC])(?:[-+]\d{4})?|((?:Australian )?(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time)\b/g,UEe=/[^-+\dA-Z]/g;function _o(e,t,n,r){if(arguments.length===1&&typeof e=="string"&&!/\d/.test(e)&&(t=e,e=void 0),e=e||e===0?e:new Date,e instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");t=String(HI[t]||t||HI.default);var i=t.slice(0,4);(i==="UTC:"||i==="GMT:")&&(t=t.slice(4),n=!0,i==="GMT:"&&(r=!0));var o=function(){return n?"getUTC":"get"},a=function(){return e[o()+"Date"]()},s=function(){return e[o()+"Day"]()},l=function(){return e[o()+"Month"]()},u=function(){return e[o()+"FullYear"]()},h=function(){return e[o()+"Hours"]()},g=function(){return e[o()+"Minutes"]()},m=function(){return e[o()+"Seconds"]()},v=function(){return e[o()+"Milliseconds"]()},S=function(){return n?0:e.getTimezoneOffset()},w=function(){return GEe(e)},k=function(){return jEe(e)},P={d:function(){return a()},dd:function(){return ta(a())},ddd:function(){return wo.dayNames[s()]},DDD:function(){return WI({y:u(),m:l(),d:a(),_:o(),dayName:wo.dayNames[s()],short:!0})},dddd:function(){return wo.dayNames[s()+7]},DDDD:function(){return WI({y:u(),m:l(),d:a(),_:o(),dayName:wo.dayNames[s()+7]})},m:function(){return l()+1},mm:function(){return ta(l()+1)},mmm:function(){return wo.monthNames[l()]},mmmm:function(){return wo.monthNames[l()+12]},yy:function(){return String(u()).slice(2)},yyyy:function(){return ta(u(),4)},h:function(){return h()%12||12},hh:function(){return ta(h()%12||12)},H:function(){return h()},HH:function(){return ta(h())},M:function(){return g()},MM:function(){return ta(g())},s:function(){return m()},ss:function(){return ta(m())},l:function(){return ta(v(),3)},L:function(){return ta(Math.floor(v()/10))},t:function(){return h()<12?wo.timeNames[0]:wo.timeNames[1]},tt:function(){return h()<12?wo.timeNames[2]:wo.timeNames[3]},T:function(){return h()<12?wo.timeNames[4]:wo.timeNames[5]},TT:function(){return h()<12?wo.timeNames[6]:wo.timeNames[7]},Z:function(){return r?"GMT":n?"UTC":YEe(e)},o:function(){return(S()>0?"-":"+")+ta(Math.floor(Math.abs(S())/60)*100+Math.abs(S())%60,4)},p:function(){return(S()>0?"-":"+")+ta(Math.floor(Math.abs(S())/60),2)+":"+ta(Math.floor(Math.abs(S())%60),2)},S:function(){return["th","st","nd","rd"][a()%10>3?0:(a()%100-a()%10!=10)*a()%10]},W:function(){return w()},WW:function(){return ta(w())},N:function(){return k()}};return t.replace(WEe,function(E){return E in P?P[E]():E.slice(1,E.length-1)})}var HI={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},wo={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]},ta=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(t).padStart(n,"0")},WI=function(t){var n=t.y,r=t.m,i=t.d,o=t._,a=t.dayName,s=t.short,l=s===void 0?!1:s,u=new Date,h=new Date;h.setDate(h[o+"Date"]()-1);var g=new Date;g.setDate(g[o+"Date"]()+1);var m=function(){return u[o+"Date"]()},v=function(){return u[o+"Month"]()},S=function(){return u[o+"FullYear"]()},w=function(){return h[o+"Date"]()},k=function(){return h[o+"Month"]()},P=function(){return h[o+"FullYear"]()},E=function(){return g[o+"Date"]()},T=function(){return g[o+"Month"]()},M=function(){return g[o+"FullYear"]()};return S()===n&&v()===r&&m()===i?l?"Tdy":"Today":P()===n&&k()===r&&w()===i?l?"Ysd":"Yesterday":M()===n&&T()===r&&E()===i?l?"Tmw":"Tomorrow":a},GEe=function(t){var n=new Date(t.getFullYear(),t.getMonth(),t.getDate());n.setDate(n.getDate()-(n.getDay()+6)%7+3);var r=new Date(n.getFullYear(),0,4);r.setDate(r.getDate()-(r.getDay()+6)%7+3);var i=n.getTimezoneOffset()-r.getTimezoneOffset();n.setHours(n.getHours()-i);var o=(n-r)/(864e5*7);return 1+Math.floor(o)},jEe=function(t){var n=t.getDay();return n===0&&(n=7),n},YEe=function(t){return(String(t).match(VEe)||[""]).pop().replace(UEe,"").replace(/GMT\+0000/g,"UTC")};const qEe=e=>{const{dispatch:t,getState:n}=e;return{onConnect:()=>{try{t(tM(!0)),t(t4("Connected")),t(hSe());const r=n().gallery;r.categories.result.latest_mtime?t(oM("result")):t(u7("result")),r.categories.user.latest_mtime?t(oM("user")):t(u7("user"))}catch(r){console.error(r)}},onDisconnect:()=>{try{t(tM(!1)),t(t4("Disconnected")),t(Co({timestamp:_o(new Date,"isoDateTime"),message:"Disconnected from server",level:"warning"}))}catch(r){console.error(r)}},onGenerationResult:r=>{try{const i=n(),{shouldLoopback:o,activeTab:a}=i.options,{boundingBox:s,generationMode:l,...u}=r,h={uuid:h0(),...u};if(["txt2img","img2img"].includes(l)&&t(u0({category:"result",image:{...h,category:"result"}})),l==="unifiedCanvas"&&r.boundingBox){const{boundingBox:g}=r;t(ISe({image:{...h,category:"temp"},boundingBox:g})),i.canvas.shouldAutoSave&&t(u0({image:{...h,category:"result"},category:"result"}))}if(o)switch(wb[a]){case"img2img":{t(P1(h));break}}t(Dw()),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Image generated: ${r.url}`}))}catch(i){console.error(i)}},onIntermediateResult:r=>{try{t(ybe({uuid:h0(),...r,category:"result"})),r.isBase64||t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Intermediate image generated: ${r.url}`}))}catch(i){console.error(i)}},onPostprocessingResult:r=>{try{t(u0({category:"result",image:{uuid:h0(),...r,category:"result"}})),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Postprocessed: ${r.url}`}))}catch(i){console.error(i)}},onProgressUpdate:r=>{try{t(Su(!0)),t(i5e(r))}catch(i){console.error(i)}},onError:r=>{const{message:i,additionalData:o}=r;try{t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Server error: ${i}`,level:"error"})),t(nM()),t(Dw())}catch(a){console.error(a)}},onGalleryImages:r=>{const{images:i,areMoreImagesAvailable:o,category:a}=r,s=i.map(l=>({uuid:h0(),...l}));t(vbe({images:s,areMoreImagesAvailable:o,category:a})),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Loaded ${i.length} images`}))},onProcessingCanceled:()=>{t(s5e());const{intermediateImage:r}=n().gallery;r&&(r.isBase64||(t(u0({category:"result",image:r})),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Intermediate image saved: ${r.url}`}))),t(Dw())),t(Co({timestamp:_o(new Date,"isoDateTime"),message:"Processing canceled",level:"warning"}))},onImageDeleted:r=>{const{url:i}=r;t(NH(r));const{initialImage:o,maskPath:a}=n().options;(o?.url===i||o===i)&&t(AV()),a===i&&t(NV("")),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Image deleted: ${i}`}))},onSystemConfig:r=>{t(o5e(r)),r.infill_methods.includes("patchmatch")||t(DV(r.infill_methods[0]))},onModelChanged:r=>{const{model_name:i,model_list:o}=r;t(rM(o)),t(t4("Model Changed")),t(Su(!1)),t(l0(!0)),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Model changed: ${i}`,level:"info"}))},onModelChangeFailed:r=>{const{model_name:i,model_list:o}=r;t(rM(o)),t(Su(!1)),t(l0(!0)),t(nM()),t(Co({timestamp:_o(new Date,"isoDateTime"),message:`Model change failed: ${i}`,level:"error"}))},onTempFolderEmptied:()=>{t(vm({title:"Temp Folder Emptied",status:"success",duration:2500,isClosable:!0}))}}},KEe=(e,t)=>{const{width:n,height:r}=t,i=document.createElement("div"),o=new jp.Stage({container:i,width:n,height:r}),a=new jp.Layer,s=new jp.Layer;a.add(new jp.Rect({...t,fill:"white"})),e.forEach(u=>s.add(new jp.Line({points:u.points,stroke:"black",strokeWidth:u.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,globalCompositeOperation:u.tool==="brush"?"source-over":"destination-out"}))),o.add(a),o.add(s);const l=o.toDataURL({...t});return i.remove(),l},XEe=e=>{const t=window.open("");!t||e.forEach(n=>{const r=new Image;r.src=n.base64,t.document.write(n.caption),t.document.write("
"),t.document.write(r.outerHTML),t.document.write("

")})},ZEe=e=>{const t=jv(),{generationMode:n,optionsState:r,canvasState:i,systemState:o,imageToProcessUrl:a}=e,{cfgScale:s,codeformerFidelity:l,facetoolStrength:u,facetoolType:h,height:g,hiresFix:m,img2imgStrength:v,infillMethod:S,initialImage:w,iterations:k,perlin:P,prompt:E,sampler:T,seamBlur:M,seamless:R,seamSize:O,seamSteps:D,seamStrength:B,seed:$,seedWeights:W,shouldFitToWidthHeight:j,shouldGenerateVariations:te,shouldRandomizeSeed:V,shouldRunESRGAN:J,shouldRunFacetool:re,steps:ee,threshold:K,tileSize:G,upscalingLevel:Z,upscalingStrength:ce,variationAmount:me,width:Re}=r,{shouldDisplayInProgressType:xe,saveIntermediatesInterval:Se,enableImageDebugging:Me}=o,_e={prompt:E,iterations:k,steps:ee,cfg_scale:s,threshold:K,perlin:P,height:g,width:Re,sampler_name:T,seed:$,progress_images:xe==="full-res",progress_latents:xe==="latents",save_intermediates:Se,generation_mode:n,init_mask:""};let Je=!1,Xe=!1;if(_e.seed=V?nH(G_,j_):$,["txt2img","img2img"].includes(n)&&(_e.seamless=R,_e.hires_fix=m,J&&(Je={level:Z,strength:ce}),re&&(Xe={type:h,strength:u},h==="codeformer"&&(Xe.codeformer_fidelity=l))),n==="img2img"&&w&&(_e.init_img=typeof w=="string"?w:w.url,_e.strength=v,_e.fit=j),n==="unifiedCanvas"&&t){const{layerState:{objects:ft},boundingBoxCoordinates:_t,boundingBoxDimensions:gt,inpaintReplace:dt,shouldUseInpaintReplace:mt,stageScale:Pe,isMaskEnabled:et,shouldPreserveMaskedArea:Lt,boundingBoxScaleMethod:it,scaledBoundingBoxDimensions:St}=i,Yt={..._t,...gt},wt=KEe(et?ft.filter(ak):[],Yt);_e.init_mask=wt,_e.fit=!1,_e.init_img=a,_e.strength=v,_e.invert_mask=Lt,mt&&(_e.inpaint_replace=dt),_e.bounding_box=Yt;const Gt=t.scale();t.scale({x:1/Pe,y:1/Pe});const ln=t.getAbsolutePosition(),on=t.toDataURL({x:Yt.x+ln.x,y:Yt.y+ln.y,width:Yt.width,height:Yt.height});Me&&XEe([{base64:wt,caption:"mask sent as init_mask"},{base64:on,caption:"image sent as init_img"}]),t.scale(Gt),_e.init_img=on,_e.progress_images=!1,it!=="none"&&(_e.inpaint_width=St.width,_e.inpaint_height=St.height),_e.seam_size=O,_e.seam_blur=M,_e.seam_strength=B,_e.seam_steps=D,_e.tile_size=G,_e.infill_method=S,_e.force_outpaint=!1}return te?(_e.variation_amount=me,W&&(_e.with_variations=Iye(W))):_e.variation_amount=0,Me&&(_e.enable_image_debugging=Me),{generationParameters:_e,esrganParameters:Je,facetoolParameters:Xe}},QEe=(e,t)=>{const{dispatch:n,getState:r}=e;return{emitGenerateImage:i=>{n(Su(!0));const o=r(),{options:a,system:s,canvas:l,gallery:u}=o,h={generationMode:i,optionsState:a,canvasState:l,systemState:s};if(n(d5e()),!["txt2img","img2img"].includes(i)){if(!u.currentImage?.url)return;h.imageToProcessUrl=u.currentImage.url}const{generationParameters:g,esrganParameters:m,facetoolParameters:v}=ZEe(h);t.emit("generateImage",g,m,v),g.init_mask&&(g.init_mask=g.init_mask.substr(0,64).concat("...")),g.init_img&&(g.init_img=g.init_img.substr(0,64).concat("...")),n(Co({timestamp:_o(new Date,"isoDateTime"),message:`Image generation requested: ${JSON.stringify({...g,...m,...v})}`}))},emitRunESRGAN:i=>{n(Su(!0));const o=r().options,{upscalingLevel:a,upscalingStrength:s}=o,l={upscale:[a,s]};t.emit("runPostprocessing",i,{type:"esrgan",...l}),n(Co({timestamp:_o(new Date,"isoDateTime"),message:`ESRGAN upscale requested: ${JSON.stringify({file:i.url,...l})}`}))},emitRunFacetool:i=>{n(Su(!0));const o=r().options,{facetoolType:a,facetoolStrength:s,codeformerFidelity:l}=o,u={facetool_strength:s};a==="codeformer"&&(u.codeformer_fidelity=l),t.emit("runPostprocessing",i,{type:a,...u}),n(Co({timestamp:_o(new Date,"isoDateTime"),message:`Face restoration (${a}) requested: ${JSON.stringify({file:i.url,...u})}`}))},emitDeleteImage:i=>{const{url:o,uuid:a,category:s,thumbnail:l}=i;n(NH(i)),t.emit("deleteImage",o,l,a,s)},emitRequestImages:i=>{const o=r().gallery,{earliest_mtime:a}=o.categories[i];t.emit("requestImages",i,a)},emitRequestNewImages:i=>{const o=r().gallery,{latest_mtime:a}=o.categories[i];t.emit("requestLatestImages",i,a)},emitCancelProcessing:()=>{t.emit("cancel")},emitRequestSystemConfig:()=>{t.emit("requestSystemConfig")},emitRequestModelChange:i=>{n(l5e()),t.emit("requestModelChange",i)},emitSaveStagingAreaImageToGallery:i=>{t.emit("requestSaveStagingAreaImageToGallery",i)},emitRequestEmptyTempFolder:()=>{t.emit("requestEmptyTempFolder")}}},JEe=()=>{const{origin:e}=new URL(window.location.href),t=u4(e,{timeout:6e4,path:window.location.pathname+"socket.io"});let n=!1;return i=>o=>a=>{const{onConnect:s,onDisconnect:l,onError:u,onPostprocessingResult:h,onGenerationResult:g,onIntermediateResult:m,onProgressUpdate:v,onGalleryImages:S,onProcessingCanceled:w,onImageDeleted:k,onSystemConfig:P,onModelChanged:E,onModelChangeFailed:T,onTempFolderEmptied:M}=qEe(i),{emitGenerateImage:R,emitRunESRGAN:O,emitRunFacetool:D,emitDeleteImage:B,emitRequestImages:$,emitRequestNewImages:W,emitCancelProcessing:j,emitRequestSystemConfig:te,emitRequestModelChange:V,emitSaveStagingAreaImageToGallery:J,emitRequestEmptyTempFolder:re}=QEe(i,t);switch(n||(t.on("connect",()=>s()),t.on("disconnect",()=>l()),t.on("error",ee=>u(ee)),t.on("generationResult",ee=>g(ee)),t.on("postprocessingResult",ee=>h(ee)),t.on("intermediateResult",ee=>m(ee)),t.on("progressUpdate",ee=>v(ee)),t.on("galleryImages",ee=>S(ee)),t.on("processingCanceled",()=>{w()}),t.on("imageDeleted",ee=>{k(ee)}),t.on("systemConfig",ee=>{P(ee)}),t.on("modelChanged",ee=>{E(ee)}),t.on("modelChangeFailed",ee=>{T(ee)}),t.on("tempFolderEmptied",()=>{M()}),n=!0),a.type){case"socketio/generateImage":{R(a.payload);break}case"socketio/runESRGAN":{O(a.payload);break}case"socketio/runFacetool":{D(a.payload);break}case"socketio/deleteImage":{B(a.payload);break}case"socketio/requestImages":{$(a.payload);break}case"socketio/requestNewImages":{W(a.payload);break}case"socketio/cancelProcessing":{j();break}case"socketio/requestSystemConfig":{te();break}case"socketio/requestModelChange":{V(a.payload);break}case"socketio/saveStagingAreaImageToGallery":{J(a.payload);break}case"socketio/requestEmptyTempFolder":{re();break}}o(a)}},ePe=["cursorPosition","isCanvasInitialized","doesCanvasNeedScaling"].map(e=>`canvas.${e}`),tPe=["currentIteration","currentStatus","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","socketId","totalIterations","totalSteps"].map(e=>`system.${e}`),nPe=["categories","currentCategory","currentImage","currentImageUuid","shouldAutoSwitchToNewImages","shouldHoldGalleryOpen","intermediateImage"].map(e=>`gallery.${e}`),sU=g$({options:eEe,gallery:kbe,system:p5e,canvas:cbe}),rPe=D$.getPersistConfig({key:"root",storage:O$,rootReducer:sU,blacklist:[...ePe,...tPe,...nPe],debounce:300}),iPe=gye(rPe,sU),lU=u2e({reducer:iPe,middleware:e=>e({immutableCheck:!1,serializableCheck:!1}).concat(JEe()),devTools:{actionsDenylist:["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setIsDrawing","canvas/addPointToCurrentLine"]}}),qe=eye,Le=V2e;function c4(e){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?c4=function(n){return typeof n}:c4=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},c4(e)}function oPe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function VI(e,t){for(var n=0;nb(rn,{width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",children:b(u2,{thickness:"2px",speed:"1s",emptyColor:"gray.200",color:"gray.400",size:"xl"})}),cPe=lt(e=>e.system,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),dPe=()=>{const{isProcessing:e,currentStep:t,totalSteps:n,currentStatusHasSteps:r}=Le(cPe),i=t?Math.round(t*100/n):0;return b(zF,{value:i,isIndeterminate:e&&!r,className:"progress-bar"})};function fPe(e){const{title:t,hotkey:n,description:r}=e;return Q("div",{className:"hotkey-modal-item",children:[Q("div",{className:"hotkey-info",children:[b("p",{className:"hotkey-title",children:t}),r&&b("p",{className:"hotkey-description",children:r})]}),b("div",{className:"hotkey-key",children:n})]})}function hPe({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Dv(),i=[{title:"Invoke",desc:"Generate an image",hotkey:"Ctrl+Enter"},{title:"Cancel",desc:"Cancel image generation",hotkey:"Shift+X"},{title:"Focus Prompt",desc:"Focus the prompt input area",hotkey:"Alt+A"},{title:"Toggle Options",desc:"Open and close the options panel",hotkey:"O"},{title:"Pin Options",desc:"Pin the options panel",hotkey:"Shift+O"},{title:"Toggle Viewer",desc:"Open and close Image Viewer",hotkey:"Z"},{title:"Toggle Gallery",desc:"Open and close the gallery drawer",hotkey:"G"},{title:"Maximize Workspace",desc:"Close panels and maximize work area",hotkey:"F"},{title:"Change Tabs",desc:"Switch to another workspace",hotkey:"1-5"},{title:"Console Toggle",desc:"Open and close console",hotkey:"`"}],o=[{title:"Set Prompt",desc:"Use the prompt of the current image",hotkey:"P"},{title:"Set Seed",desc:"Use the seed of the current image",hotkey:"S"},{title:"Set Parameters",desc:"Use all parameters of the current image",hotkey:"A"},{title:"Restore Faces",desc:"Restore the current image",hotkey:"R"},{title:"Upscale",desc:"Upscale the current image",hotkey:"U"},{title:"Show Info",desc:"Show metadata info of the current image",hotkey:"I"},{title:"Send To Image To Image",desc:"Send current image to Image to Image",hotkey:"Shift+I"},{title:"Delete Image",desc:"Delete the current image",hotkey:"Del"},{title:"Close Panels",desc:"Closes open panels",hotkey:"Esc"}],a=[{title:"Previous Image",desc:"Display the previous image in gallery",hotkey:"Arrow Left"},{title:"Next Image",desc:"Display the next image in gallery",hotkey:"Arrow Right"},{title:"Toggle Gallery Pin",desc:"Pins and unpins the gallery to the UI",hotkey:"Shift+G"},{title:"Increase Gallery Image Size",desc:"Increases gallery thumbnails size",hotkey:"Shift+Up"},{title:"Decrease Gallery Image Size",desc:"Decreases gallery thumbnails size",hotkey:"Shift+Down"}],s=[{title:"Select Brush",desc:"Selects the canvas brush",hotkey:"B"},{title:"Select Eraser",desc:"Selects the canvas eraser",hotkey:"E"},{title:"Decrease Brush Size",desc:"Decreases the size of the canvas brush/eraser",hotkey:"["},{title:"Increase Brush Size",desc:"Increases the size of the canvas brush/eraser",hotkey:"]"},{title:"Decrease Brush Opacity",desc:"Decreases the opacity of the canvas brush",hotkey:"Shift + ["},{title:"Increase Brush Opacity",desc:"Increases the opacity of the canvas brush",hotkey:"Shift + ]"},{title:"Move Tool",desc:"Allows canvas navigation",hotkey:"V"},{title:"Fill Bounding Box",desc:"Fills the bounding box with brush color",hotkey:"Shift + F"},{title:"Erase Bounding Box",desc:"Erases the bounding box area",hotkey:"Delete / Backspace"},{title:"Select Color Picker",desc:"Selects the canvas color picker",hotkey:"C"},{title:"Toggle Snap",desc:"Toggles Snap to Grid",hotkey:"N"},{title:"Quick Toggle Move",desc:"Temporarily toggles Move mode",hotkey:"Hold Space"},{title:"Toggle Layer",desc:"Toggles mask/base layer selection",hotkey:"Q"},{title:"Clear Mask",desc:"Clear the entire mask",hotkey:"Shift+C"},{title:"Hide Mask",desc:"Hide and unhide mask",hotkey:"H"},{title:"Show/Hide Bounding Box",desc:"Toggle visibility of bounding box",hotkey:"Shift+H"},{title:"Merge Visible",desc:"Merge all visible layers of canvas",hotkey:"Shift+M"},{title:"Save To Gallery",desc:"Save current canvas to gallery",hotkey:"Shift+S"},{title:"Copy to Clipboard",desc:"Copy current canvas to clipboard",hotkey:"Ctrl+C"},{title:"Download Image",desc:"Download current canvas",hotkey:"Shift+D"},{title:"Undo Stroke",desc:"Undo a brush stroke",hotkey:"Ctrl+Z"},{title:"Redo Stroke",desc:"Redo a brush stroke",hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:"Reset View",desc:"Reset Canvas View",hotkey:"R"},{title:"Previous Image",desc:"Previous Staging Area Image",hotkey:"Arrow Left"},{title:"Next Image",desc:"Next Staging Area Image",hotkey:"Arrow Right"},{title:"Accept Image",desc:"Accept Current Staging Area Image",hotkey:"Enter"}],l=u=>{const h=[];return u.forEach((g,m)=>{h.push(b(fPe,{title:g.title,description:g.desc,hotkey:g.hotkey},m))}),b("div",{className:"hotkey-modal-category",children:h})};return Q(An,{children:[C.exports.cloneElement(e,{onClick:n}),Q(n1,{isOpen:t,onClose:r,children:[b(r1,{}),Q(Hv,{className:" modal hotkeys-modal",children:[b(h_,{className:"modal-close-btn"}),b("h1",{children:"Keyboard Shorcuts"}),b("div",{className:"hotkeys-modal-items",children:Q(kS,{allowMultiple:!0,children:[Q(Yf,{children:[Q(Gf,{className:"hotkeys-modal-button",children:[b("h2",{children:"App Hotkeys"}),b(jf,{})]}),b(qf,{children:l(i)})]}),Q(Yf,{children:[Q(Gf,{className:"hotkeys-modal-button",children:[b("h2",{children:"General Hotkeys"}),b(jf,{})]}),b(qf,{children:l(o)})]}),Q(Yf,{children:[Q(Gf,{className:"hotkeys-modal-button",children:[b("h2",{children:"Gallery Hotkeys"}),b(jf,{})]}),b(qf,{children:l(a)})]}),Q(Yf,{children:[Q(Gf,{className:"hotkeys-modal-button",children:[b("h2",{children:"Unified Canvas Hotkeys"}),b(jf,{})]}),b(qf,{children:l(s)})]})]})})]})]})]})}const pPe=e=>{const{isProcessing:t,isConnected:n}=Le(l=>l.system),r=qe(),{name:i,status:o,description:a}=e,s=()=>{r(vH(i))};return Q("div",{className:"model-list-item",children:[b(pi,{label:a,hasArrow:!0,placement:"bottom",children:b("div",{className:"model-list-item-name",children:i})}),b(cz,{}),b("div",{className:`model-list-item-status ${o.split(" ").join("-")}`,children:o}),b("div",{className:"model-list-item-load-btn",children:b(Wa,{size:"sm",onClick:s,isDisabled:o==="active"||t||!n,children:"Load"})})]})},gPe=lt(e=>e.system,e=>{const t=We.map(e.model_list,(r,i)=>({name:i,...r})),n=t.find(r=>r.status==="active");return{models:t,activeModel:n}}),mPe=()=>{const{models:e}=Le(gPe);return b(kS,{allowToggle:!0,className:"model-list-accordion",variant:"unstyled",children:Q(Yf,{children:[b(Gf,{children:Q("div",{className:"model-list-button",children:[b("h2",{children:"Models"}),b(jf,{})]})}),b(qf,{children:b("div",{className:"model-list-list",children:e.map((t,n)=>b(pPe,{name:t.name,status:t.status,description:t.description},n))})})]})})},vPe=lt([Pd,J_],e=>{const{shouldDisplayInProgressType:t,shouldConfirmOnDelete:n,shouldDisplayGuides:r,model_list:i,saveIntermediatesInterval:o,enableImageDebugging:a}=e;return{shouldDisplayInProgressType:t,shouldConfirmOnDelete:n,shouldDisplayGuides:r,models:We.map(i,(s,l)=>l),saveIntermediatesInterval:o,enableImageDebugging:a}},{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),yPe=({children:e})=>{const t=qe(),n=Le(k=>k.options.steps),{isOpen:r,onOpen:i,onClose:o}=Dv(),{isOpen:a,onOpen:s,onClose:l}=Dv(),{shouldDisplayInProgressType:u,shouldConfirmOnDelete:h,shouldDisplayGuides:g,saveIntermediatesInterval:m,enableImageDebugging:v}=Le(vPe),S=()=>{wU.purge().then(()=>{o(),s()})},w=k=>{k>n&&(k=n),k<1&&(k=1),t(u5e(k))};return Q(An,{children:[C.exports.cloneElement(e,{onClick:i}),Q(n1,{isOpen:r,onClose:o,children:[b(r1,{}),Q(Hv,{className:"modal settings-modal",children:[b(NS,{className:"settings-modal-header",children:"Settings"}),b(h_,{className:"modal-close-btn"}),Q($v,{className:"settings-modal-content",children:[Q("div",{className:"settings-modal-items",children:[b("div",{className:"settings-modal-item",children:b(mPe,{})}),Q("div",{className:"settings-modal-item",style:{gridAutoFlow:"row",rowGap:"0.5rem"},children:[b(Ol,{label:"Display In-Progress Images",validValues:k4e,value:u,onChange:k=>t(n5e(k.target.value))}),u==="full-res"&&b(Ms,{label:"Save images every n steps",min:1,max:n,step:1,onChange:w,value:m,width:"auto",textAlign:"center"})]}),b(Ls,{styleClass:"settings-modal-item",label:"Confirm on Delete",isChecked:h,onChange:k=>t(oH(k.target.checked))}),b(Ls,{styleClass:"settings-modal-item",label:"Display Help Icons",isChecked:g,onChange:k=>t(a5e(k.target.checked))})]}),Q("div",{className:"settings-modal-items",children:[b("h2",{style:{fontWeight:"bold"},children:"Developer"}),b(Ls,{styleClass:"settings-modal-item",label:"Enable Image Debugging",isChecked:v,onChange:k=>t(c5e(k.target.checked))})]}),Q("div",{className:"settings-modal-reset",children:[b(nh,{size:"md",children:"Reset Web UI"}),b(Wa,{colorScheme:"red",onClick:S,children:"Reset Web UI"}),b(Po,{children:"Resetting the web UI only resets the browser's local cache of your images and remembered settings. It does not delete any images from disk."}),b(Po,{children:"If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub."})]})]}),b(DS,{children:b(Wa,{onClick:o,className:"modal-close-btn",children:"Close"})})]})]}),Q(n1,{closeOnOverlayClick:!1,isOpen:a,onClose:l,isCentered:!0,children:[b(r1,{bg:"blackAlpha.300",backdropFilter:"blur(40px)"}),b(Hv,{children:b($v,{pb:6,pt:6,children:b(rn,{justifyContent:"center",children:b(Po,{fontSize:"lg",children:"Web UI has been reset. Refresh the page to reload."})})})})]})]})},SPe=lt(e=>e.system,e=>({isConnected:e.isConnected,isProcessing:e.isProcessing,currentIteration:e.currentIteration,totalIterations:e.totalIterations,currentStatus:e.currentStatus,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),bPe=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,currentStatus:i,hasError:o,wasErrorSeen:a}=Le(SPe),s=qe();let l;e&&!o?l="status-good":l="status-bad";let u=i;return["generating","preparing","saving image","restoring faces","upscaling"].includes(u.toLowerCase())&&(l="status-working"),u&&t&&r>1&&(u+=` (${n}/${r})`),b(pi,{label:o&&!a?"Click to clear, check logs for details":void 0,children:b(Po,{cursor:o&&!a?"pointer":"initial",onClick:()=>{(o||!a)&&s(aH())},className:`status ${l}`,children:u})})},xPe=["dark","light","green"];function wPe(){const{setColorMode:e}=Jv(),t=qe(),n=Le(i=>i.options.currentTheme),r=i=>{e(i),t(Wke(i))};return b(ad,{trigger:"hover",triggerComponent:b(pt,{"aria-label":"Theme",size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:b(j5e,{})}),children:b(hz,{align:"stretch",children:xPe.map(i=>b(oa,{style:{width:"6rem"},leftIcon:n===i?b(rk,{}):void 0,size:"sm",onClick:()=>r(i),children:i.charAt(0).toUpperCase()+i.slice(1)},i))})})}const CPe=lt([Pd],e=>{const{isProcessing:t,model_list:n}=e,r=We.map(n,(o,a)=>a),i=We.reduce(n,(o,a,s)=>(a.status==="active"&&(o=s),o),"");return{models:r,activeModel:i,isProcessing:t}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),_Pe=()=>{const e=qe(),{models:t,activeModel:n,isProcessing:r}=Le(CPe);return b(rn,{style:{paddingLeft:"0.3rem"},children:b(Ol,{style:{fontSize:"0.8rem"},isDisabled:r,value:n,validValues:t,onChange:o=>{e(vH(o.target.value))}})})},kPe=()=>Q("div",{className:"site-header",children:[Q("div",{className:"site-header-left-side",children:[b("img",{src:RH,alt:"invoke-ai-logo"}),Q("h1",{children:["invoke ",b("strong",{children:"ai"})]})]}),Q("div",{className:"site-header-right-side",children:[b(bPe,{}),b(_Pe,{}),b(hPe,{children:b(pt,{"aria-label":"Hotkeys",tooltip:"Hotkeys",size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:b(H5e,{})})}),b(wPe,{}),b(pt,{"aria-label":"Report Bug",tooltip:"Report Bug",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:b(rh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI/issues",children:b(A5e,{})})}),b(pt,{"aria-label":"Link to Github Repo",tooltip:"Github",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:b(rh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI",children:b(_5e,{})})}),b(pt,{"aria-label":"Link to Discord Server",tooltip:"Discord",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:b(rh,{isExternal:!0,href:"https://discord.gg/ZmtBAhwWhy",children:b(C5e,{})})}),b(yPe,{children:b(pt,{"aria-label":"Settings",tooltip:"Settings",variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:b(ok,{})})})]})]}),EPe=lt(e=>e.system,e=>e.log,{memoizeOptions:{resultEqualityCheck:(e,t)=>e.length===t.length}}),PPe=lt(e=>e.system,e=>({shouldShowLogViewer:e.shouldShowLogViewer,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:Jr.exports.isEqual}}),TPe=()=>{const e=qe(),t=Le(EPe),{shouldShowLogViewer:n,hasError:r,wasErrorSeen:i}=Le(PPe),[o,a]=C.exports.useState(!0),s=C.exports.useRef(null);C.exports.useLayoutEffect(()=>{s.current!==null&&o&&(s.current.scrollTop=s.current.scrollHeight)},[o,t,n]);const l=()=>{e(aH()),e(Tw(!n))};return st("`",()=>{e(Tw(!n))},[n]),st("esc",()=>{e(Tw(!1))}),Q(An,{children:[n&&b(WH,{defaultSize:{width:"100%",height:200},style:{display:"flex",position:"fixed",left:0,bottom:0,zIndex:9999},maxHeight:"90vh",children:b("div",{className:"console",ref:s,onScroll:()=>{!s.current||o&&s.current.scrollTop{const{timestamp:m,message:v,level:S}=h;return Q("div",{className:`console-entry console-${S}-color`,children:[Q("p",{className:"console-timestamp",children:[m,":"]}),b("p",{className:"console-message",children:v})]},g)})})}),n&&b(pi,{hasArrow:!0,label:o?"Autoscroll On":"Autoscroll Off",children:b(Va,{className:"console-autoscroll-icon-button","data-autoscroll-enabled":o,size:"sm","aria-label":"Toggle autoscroll",variant:"solid",icon:b(k5e,{}),onClick:()=>a(!o)})}),b(pi,{hasArrow:!0,label:n?"Hide Console":"Show Console",children:b(Va,{className:"console-toggle-icon-button","data-error-seen":r||!i,size:"sm",position:"fixed",variant:"solid","aria-label":"Toggle Log Viewer",icon:n?b(U5e,{}):b(cH,{}),onClick:l})})]})};function LPe(){async function e(n=""){return await fetch(n,{method:"GET",cache:"no-cache"})}const t=()=>{const n=document.location;e(n+"/flaskwebgui-keep-server-alive").then(i=>i)};(!{BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0}.NODE_ENV||{BASE_URL:"./",MODE:"production",DEV:!1,PROD:!0}.NODE_ENV==="production")&&document.addEventListener("DOMContentLoaded",()=>{t(),setInterval(t,3e3)})}var APe=new Map([["aac","audio/aac"],["abw","application/x-abiword"],["arc","application/x-freearc"],["avif","image/avif"],["avi","video/x-msvideo"],["azw","application/vnd.amazon.ebook"],["bin","application/octet-stream"],["bmp","image/bmp"],["bz","application/x-bzip"],["bz2","application/x-bzip2"],["cda","application/x-cdf"],["csh","application/x-csh"],["css","text/css"],["csv","text/csv"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],["eot","application/vnd.ms-fontobject"],["epub","application/epub+zip"],["gz","application/gzip"],["gif","image/gif"],["heic","image/heic"],["heif","image/heif"],["htm","text/html"],["html","text/html"],["ico","image/vnd.microsoft.icon"],["ics","text/calendar"],["jar","application/java-archive"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["js","text/javascript"],["json","application/json"],["jsonld","application/ld+json"],["mid","audio/midi"],["midi","audio/midi"],["mjs","text/javascript"],["mp3","audio/mpeg"],["mp4","video/mp4"],["mpeg","video/mpeg"],["mpkg","application/vnd.apple.installer+xml"],["odp","application/vnd.oasis.opendocument.presentation"],["ods","application/vnd.oasis.opendocument.spreadsheet"],["odt","application/vnd.oasis.opendocument.text"],["oga","audio/ogg"],["ogv","video/ogg"],["ogx","application/ogg"],["opus","audio/opus"],["otf","font/otf"],["png","image/png"],["pdf","application/pdf"],["php","application/x-httpd-php"],["ppt","application/vnd.ms-powerpoint"],["pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation"],["rar","application/vnd.rar"],["rtf","application/rtf"],["sh","application/x-sh"],["svg","image/svg+xml"],["swf","application/x-shockwave-flash"],["tar","application/x-tar"],["tif","image/tiff"],["tiff","image/tiff"],["ts","video/mp2t"],["ttf","font/ttf"],["txt","text/plain"],["vsd","application/vnd.visio"],["wav","audio/wav"],["weba","audio/webm"],["webm","video/webm"],["webp","image/webp"],["woff","font/woff"],["woff2","font/woff2"],["xhtml","application/xhtml+xml"],["xls","application/vnd.ms-excel"],["xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],["xml","application/xml"],["xul","application/vnd.mozilla.xul+xml"],["zip","application/zip"],["7z","application/x-7z-compressed"],["mkv","video/x-matroska"],["mov","video/quicktime"],["msg","application/vnd.ms-outlook"]]);function C2(e,t){var n=MPe(e);if(typeof n.path!="string"){var r=e.webkitRelativePath;Object.defineProperty(n,"path",{value:typeof t=="string"?t:typeof r=="string"&&r.length>0?r:e.name,writable:!1,configurable:!1,enumerable:!0})}return n}function MPe(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),i=APe.get(r);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var IPe=[".DS_Store","Thumbs.db"];function RPe(e){return m1(this,void 0,void 0,function(){return v1(this,function(t){return P5(e)&&OPe(e.dataTransfer)?[2,zPe(e.dataTransfer,e.type)]:DPe(e)?[2,NPe(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,BPe(e)]:[2,[]]})})}function OPe(e){return P5(e)}function DPe(e){return P5(e)&&P5(e.target)}function P5(e){return typeof e=="object"&&e!==null}function NPe(e){return Y7(e.target.files).map(function(t){return C2(t)})}function BPe(e){return m1(this,void 0,void 0,function(){var t;return v1(this,function(n){switch(n.label){case 0:return[4,Promise.all(e.map(function(r){return r.getFile()}))];case 1:return t=n.sent(),[2,t.map(function(r){return C2(r)})]}})})}function zPe(e,t){return m1(this,void 0,void 0,function(){var n,r;return v1(this,function(i){switch(i.label){case 0:return e.items?(n=Y7(e.items).filter(function(o){return o.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(FPe))]):[3,2];case 1:return r=i.sent(),[2,UI(cU(r))];case 2:return[2,UI(Y7(e.files).map(function(o){return C2(o)}))]}})})}function UI(e){return e.filter(function(t){return IPe.indexOf(t.name)===-1})}function Y7(e){if(e===null)return[];for(var t=[],n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);nn)return[!1,KI(n)];if(e.sizen)return[!1,KI(n)]}return[!0,null]}function Bf(e){return e!=null}function tTe(e){var t=e.files,n=e.accept,r=e.minSize,i=e.maxSize,o=e.multiple,a=e.maxFiles,s=e.validator;return!o&&t.length>1||o&&a>=1&&t.length>a?!1:t.every(function(l){var u=pU(l,n),h=Yv(u,1),g=h[0],m=gU(l,r,i),v=Yv(m,1),S=v[0],w=s?s(l):null;return g&&S&&!w})}function T5(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function C3(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(t){return t==="Files"||t==="application/x-moz-file"}):!!e.target&&!!e.target.files}function ZI(e){e.preventDefault()}function nTe(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function rTe(e){return e.indexOf("Edge/")!==-1}function iTe(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return nTe(e)||rTe(e)}function ul(){for(var e=arguments.length,t=new Array(e),n=0;n1?i-1:0),a=1;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&(!Object.prototype.propertyIsEnumerable.call(e,r)||(n[r]=e[r]))}return n}function xTe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var zk=C.exports.forwardRef(function(e,t){var n=e.children,r=L5(e,cTe),i=bU(r),o=i.open,a=L5(i,dTe);return C.exports.useImperativeHandle(t,function(){return{open:o}},[o]),b(C.exports.Fragment,{children:n(ur(ur({},a),{},{open:o}))})});zk.displayName="Dropzone";var SU={disabled:!1,getFilesFromEvent:RPe,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};zk.defaultProps=SU;zk.propTypes={children:Dn.exports.func,accept:Dn.exports.objectOf(Dn.exports.arrayOf(Dn.exports.string)),multiple:Dn.exports.bool,preventDropOnDocument:Dn.exports.bool,noClick:Dn.exports.bool,noKeyboard:Dn.exports.bool,noDrag:Dn.exports.bool,noDragEventsBubbling:Dn.exports.bool,minSize:Dn.exports.number,maxSize:Dn.exports.number,maxFiles:Dn.exports.number,disabled:Dn.exports.bool,getFilesFromEvent:Dn.exports.func,onFileDialogCancel:Dn.exports.func,onFileDialogOpen:Dn.exports.func,useFsAccessApi:Dn.exports.bool,autoFocus:Dn.exports.bool,onDragEnter:Dn.exports.func,onDragLeave:Dn.exports.func,onDragOver:Dn.exports.func,onDrop:Dn.exports.func,onDropAccepted:Dn.exports.func,onDropRejected:Dn.exports.func,onError:Dn.exports.func,validator:Dn.exports.func};var Z7={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function bU(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ur(ur({},SU),e),n=t.accept,r=t.disabled,i=t.getFilesFromEvent,o=t.maxSize,a=t.minSize,s=t.multiple,l=t.maxFiles,u=t.onDragEnter,h=t.onDragLeave,g=t.onDragOver,m=t.onDrop,v=t.onDropAccepted,S=t.onDropRejected,w=t.onFileDialogCancel,k=t.onFileDialogOpen,P=t.useFsAccessApi,E=t.autoFocus,T=t.preventDropOnDocument,M=t.noClick,R=t.noKeyboard,O=t.noDrag,D=t.noDragEventsBubbling,B=t.onError,$=t.validator,W=C.exports.useMemo(function(){return sTe(n)},[n]),j=C.exports.useMemo(function(){return aTe(n)},[n]),te=C.exports.useMemo(function(){return typeof k=="function"?k:JI},[k]),V=C.exports.useMemo(function(){return typeof w=="function"?w:JI},[w]),J=C.exports.useRef(null),re=C.exports.useRef(null),ee=C.exports.useReducer(wTe,Z7),K=Jw(ee,2),G=K[0],Z=K[1],ce=G.isFocused,me=G.isFileDialogActive,Re=C.exports.useRef(typeof window<"u"&&window.isSecureContext&&P&&oTe()),xe=function(){!Re.current&&me&&setTimeout(function(){if(re.current){var Ze=re.current.files;Ze.length||(Z({type:"closeDialog"}),V())}},300)};C.exports.useEffect(function(){return window.addEventListener("focus",xe,!1),function(){window.removeEventListener("focus",xe,!1)}},[re,me,V,Re]);var Se=C.exports.useRef([]),Me=function(Ze){J.current&&J.current.contains(Ze.target)||(Ze.preventDefault(),Se.current=[])};C.exports.useEffect(function(){return T&&(document.addEventListener("dragover",ZI,!1),document.addEventListener("drop",Me,!1)),function(){T&&(document.removeEventListener("dragover",ZI),document.removeEventListener("drop",Me))}},[J,T]),C.exports.useEffect(function(){return!r&&E&&J.current&&J.current.focus(),function(){}},[J,E,r]);var _e=C.exports.useCallback(function(Oe){B?B(Oe):console.error(Oe)},[B]),Je=C.exports.useCallback(function(Oe){Oe.preventDefault(),Oe.persist(),wt(Oe),Se.current=[].concat(pTe(Se.current),[Oe.target]),C3(Oe)&&Promise.resolve(i(Oe)).then(function(Ze){if(!(T5(Oe)&&!D)){var Zt=Ze.length,qt=Zt>0&&tTe({files:Ze,accept:W,minSize:a,maxSize:o,multiple:s,maxFiles:l,validator:$}),ke=Zt>0&&!qt;Z({isDragAccept:qt,isDragReject:ke,isDragActive:!0,type:"setDraggedFiles"}),u&&u(Oe)}}).catch(function(Ze){return _e(Ze)})},[i,u,_e,D,W,a,o,s,l,$]),Xe=C.exports.useCallback(function(Oe){Oe.preventDefault(),Oe.persist(),wt(Oe);var Ze=C3(Oe);if(Ze&&Oe.dataTransfer)try{Oe.dataTransfer.dropEffect="copy"}catch{}return Ze&&g&&g(Oe),!1},[g,D]),ft=C.exports.useCallback(function(Oe){Oe.preventDefault(),Oe.persist(),wt(Oe);var Ze=Se.current.filter(function(qt){return J.current&&J.current.contains(qt)}),Zt=Ze.indexOf(Oe.target);Zt!==-1&&Ze.splice(Zt,1),Se.current=Ze,!(Ze.length>0)&&(Z({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),C3(Oe)&&h&&h(Oe))},[J,h,D]),_t=C.exports.useCallback(function(Oe,Ze){var Zt=[],qt=[];Oe.forEach(function(ke){var It=pU(ke,W),Be=Jw(It,2),ot=Be[0],un=Be[1],zn=gU(ke,a,o),He=Jw(zn,2),ht=He[0],tt=He[1],Dt=$?$(ke):null;if(ot&&ht&&!Dt)Zt.push(ke);else{var Qt=[un,tt];Dt&&(Qt=Qt.concat(Dt)),qt.push({file:ke,errors:Qt.filter(function(er){return er})})}}),(!s&&Zt.length>1||s&&l>=1&&Zt.length>l)&&(Zt.forEach(function(ke){qt.push({file:ke,errors:[eTe]})}),Zt.splice(0)),Z({acceptedFiles:Zt,fileRejections:qt,type:"setFiles"}),m&&m(Zt,qt,Ze),qt.length>0&&S&&S(qt,Ze),Zt.length>0&&v&&v(Zt,Ze)},[Z,s,W,a,o,l,m,v,S,$]),gt=C.exports.useCallback(function(Oe){Oe.preventDefault(),Oe.persist(),wt(Oe),Se.current=[],C3(Oe)&&Promise.resolve(i(Oe)).then(function(Ze){T5(Oe)&&!D||_t(Ze,Oe)}).catch(function(Ze){return _e(Ze)}),Z({type:"reset"})},[i,_t,_e,D]),dt=C.exports.useCallback(function(){if(Re.current){Z({type:"openDialog"}),te();var Oe={multiple:s,types:j};window.showOpenFilePicker(Oe).then(function(Ze){return i(Ze)}).then(function(Ze){_t(Ze,null),Z({type:"closeDialog"})}).catch(function(Ze){lTe(Ze)?(V(Ze),Z({type:"closeDialog"})):uTe(Ze)?(Re.current=!1,re.current?(re.current.value=null,re.current.click()):_e(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):_e(Ze)});return}re.current&&(Z({type:"openDialog"}),te(),re.current.value=null,re.current.click())},[Z,te,V,P,_t,_e,j,s]),mt=C.exports.useCallback(function(Oe){!J.current||!J.current.isEqualNode(Oe.target)||(Oe.key===" "||Oe.key==="Enter"||Oe.keyCode===32||Oe.keyCode===13)&&(Oe.preventDefault(),dt())},[J,dt]),Pe=C.exports.useCallback(function(){Z({type:"focus"})},[]),et=C.exports.useCallback(function(){Z({type:"blur"})},[]),Lt=C.exports.useCallback(function(){M||(iTe()?setTimeout(dt,0):dt())},[M,dt]),it=function(Ze){return r?null:Ze},St=function(Ze){return R?null:it(Ze)},Yt=function(Ze){return O?null:it(Ze)},wt=function(Ze){D&&Ze.stopPropagation()},Gt=C.exports.useMemo(function(){return function(){var Oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ze=Oe.refKey,Zt=Ze===void 0?"ref":Ze,qt=Oe.role,ke=Oe.onKeyDown,It=Oe.onFocus,Be=Oe.onBlur,ot=Oe.onClick,un=Oe.onDragEnter,zn=Oe.onDragOver,He=Oe.onDragLeave,ht=Oe.onDrop,tt=L5(Oe,fTe);return ur(ur(X7({onKeyDown:St(ul(ke,mt)),onFocus:St(ul(It,Pe)),onBlur:St(ul(Be,et)),onClick:it(ul(ot,Lt)),onDragEnter:Yt(ul(un,Je)),onDragOver:Yt(ul(zn,Xe)),onDragLeave:Yt(ul(He,ft)),onDrop:Yt(ul(ht,gt)),role:typeof qt=="string"&&qt!==""?qt:"presentation"},Zt,J),!r&&!R?{tabIndex:0}:{}),tt)}},[J,mt,Pe,et,Lt,Je,Xe,ft,gt,R,O,r]),ln=C.exports.useCallback(function(Oe){Oe.stopPropagation()},[]),on=C.exports.useMemo(function(){return function(){var Oe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ze=Oe.refKey,Zt=Ze===void 0?"ref":Ze,qt=Oe.onChange,ke=Oe.onClick,It=L5(Oe,hTe),Be=X7({accept:W,multiple:s,type:"file",style:{display:"none"},onChange:it(ul(qt,gt)),onClick:it(ul(ke,ln)),tabIndex:-1},Zt,re);return ur(ur({},Be),It)}},[re,n,s,gt,r]);return ur(ur({},G),{},{isFocused:ce&&!r,getRootProps:Gt,getInputProps:on,rootRef:J,inputRef:re,open:it(dt)})}function wTe(e,t){switch(t.type){case"focus":return ur(ur({},e),{},{isFocused:!0});case"blur":return ur(ur({},e),{},{isFocused:!1});case"openDialog":return ur(ur({},Z7),{},{isFileDialogActive:!0});case"closeDialog":return ur(ur({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return ur(ur({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return ur(ur({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return ur({},Z7);default:return e}}function JI(){}const CTe=e=>{const{isDragAccept:t,isDragReject:n,overlaySecondaryText:r,setIsHandlingUpload:i}=e;return st("esc",()=>{i(!1)}),Q("div",{className:"dropzone-container",children:[t&&b("div",{className:"dropzone-overlay is-drag-accept",children:Q(nh,{size:"lg",children:["Upload Image",r]})}),n&&Q("div",{className:"dropzone-overlay is-drag-reject",children:[b(nh,{size:"lg",children:"Invalid Upload"}),b(nh,{size:"md",children:"Must be single JPEG or PNG image"})]})]})},eR=e=>async(t,n)=>{const{imageFile:r}=e,i=n(),o=_r(i),a=new FormData;a.append("file",r,r.name),a.append("data",JSON.stringify({kind:"init"}));const l=await(await fetch(window.location.origin+"/upload",{method:"POST",body:a})).json();console.log(l);const u={uuid:h0(),category:"user",...l};t(u0({image:u,category:"user"})),o==="unifiedCanvas"?t(ab(u)):o==="img2img"&&t(P1(u))},_Te=e=>{const{children:t}=e,n=qe(),r=Le(_r),i=m2({}),[o,a]=C.exports.useState(!1),{setOpenUploader:s}=PV(),l=C.exports.useCallback(E=>{a(!0);const T=E.errors.reduce((M,R)=>M+` +`+R.message,"");i({title:"Upload failed",description:T,status:"error",isClosable:!0})},[i]),u=C.exports.useCallback(async E=>{n(eR({imageFile:E}))},[n]),h=C.exports.useCallback((E,T)=>{T.forEach(M=>{l(M)}),E.forEach(M=>{u(M)})},[u,l]),{getRootProps:g,getInputProps:m,isDragAccept:v,isDragReject:S,isDragActive:w,open:k}=bU({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:h,onDragOver:()=>a(!0),maxFiles:1});s(k),C.exports.useEffect(()=>{const E=T=>{const M=T.clipboardData?.items;if(!M)return;const R=[];for(const D of M)D.kind==="file"&&["image/png","image/jpg"].includes(D.type)&&R.push(D);if(!R.length)return;if(T.stopImmediatePropagation(),R.length>1){i({description:"Multiple images pasted, may only upload one image at a time",status:"error",isClosable:!0});return}const O=R[0].getAsFile();if(!O){i({description:"Unable to load file",status:"error",isClosable:!0});return}n(eR({imageFile:O}))};return document.addEventListener("paste",E),()=>{document.removeEventListener("paste",E)}},[n,i,r]);const P=["img2img","unifiedCanvas"].includes(r)?` to ${Nf[r].tooltip}`:"";return b(fk.Provider,{value:k,children:Q("div",{...g({style:{}}),onKeyDown:E=>{E.key},children:[b("input",{...m()}),t,w&&o&&b(CTe,{isDragAccept:v,isDragReject:S,overlaySecondaryText:P,setIsHandlingUpload:a})]})})},kTe=()=>{const e=qe(),t=Le(nSe),n=m2();C.exports.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(f5e())},[e,n,t])},xU=lt([e=>e.options,e=>e.gallery,_r],(e,t,n)=>{const{shouldPinOptionsPanel:r,shouldShowOptionsPanel:i,shouldHoldOptionsPanelOpen:o}=e,{shouldShowGallery:a,shouldPinGallery:s,shouldHoldGalleryOpen:l}=t,u=!(i||o&&!r)&&["txt2img","img2img","unifiedCanvas"].includes(n),h=!(a||l&&!s)&&["txt2img","img2img","unifiedCanvas"].includes(n);return{shouldPinOptionsPanel:r,shouldShowProcessButtons:!r||!i,shouldShowOptionsPanelButton:u,shouldShowOptionsPanel:i,shouldShowGallery:a,shouldPinGallery:s,shouldShowGalleryButton:h}},{memoizeOptions:{resultEqualityCheck:We.isEqual}}),ETe=()=>{const e=qe(),{shouldShowOptionsPanel:t,shouldShowOptionsPanelButton:n,shouldShowProcessButtons:r,shouldPinOptionsPanel:i,shouldShowGallery:o,shouldPinGallery:a}=Le(xU),s=()=>{e(ud(!0)),i&&setTimeout(()=>e(Wi(!0)),400)};return st("f",()=>{o||t?(e(ud(!1)),e(sd(!1))):(e(ud(!0)),e(sd(!0))),(a||i)&&setTimeout(()=>e(Wi(!0)),400)},[o,t]),n?Q("div",{className:"show-hide-button-options",children:[b(pt,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":"Show Options Panel",onClick:s,children:b(pH,{})}),r&&Q(An,{children:[b(yH,{iconButton:!0}),b(SH,{})]})]}):null},PTe=()=>{const e=qe(),{shouldShowGallery:t,shouldShowGalleryButton:n,shouldPinGallery:r,shouldShowOptionsPanel:i,shouldPinOptionsPanel:o}=Le(xU),a=()=>{e(sd(!0)),r&&e(Wi(!0))};return st("f",()=>{t||i?(e(ud(!1)),e(sd(!1))):(e(ud(!0)),e(sd(!0))),(r||o)&&setTimeout(()=>e(Wi(!0)),400)},[t,i]),n?b(pt,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":"Show Gallery",styleClass:"floating-show-hide-button right show-hide-button-gallery",onClick:a,children:b(sH,{})}):null};LPe();const TTe=()=>(kTe(),Q("div",{className:"App",children:[Q(_Te,{children:[b(dPe,{}),Q("div",{className:"app-content",children:[b(kPe,{}),b(Bke,{})]}),b("div",{className:"app-console",children:b(TPe,{})})]}),b(ETe,{}),b(PTe,{})]}));const wU=xye(lU),LTe=PD({key:"invokeai-style-cache",prepend:!0});t6.createRoot(document.getElementById("root")).render(b(se.StrictMode,{children:b(Z2e,{store:lU,children:b(uU,{loading:b(uPe,{}),persistor:wU,children:b(AJ,{value:LTe,children:b(Pve,{children:b(TTe,{})})})})})})); diff --git a/frontend/dist/index.html b/frontend/dist/index.html index ca24f17b60..0d053da5a9 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -6,8 +6,8 @@ InvokeAI - A Stable Diffusion Toolkit - - + + diff --git a/frontend/eslintconfig.json b/frontend/eslintconfig.json new file mode 100644 index 0000000000..06f6f22a57 --- /dev/null +++ b/frontend/eslintconfig.json @@ -0,0 +1,23 @@ +{ + "eslintConfig": { + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended" + ], + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint", "eslint-plugin-react-hooks"], + "root": true, + "settings": { + "import/resolver": { + "node": { + "paths": ["src"], + "extensions": [".js", ".jsx", ".ts", ".tsx"] + } + } + }, + "rules": { + "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".ts"] }] + } + } +} diff --git a/frontend/package.json b/frontend/package.json index 5d9b7d72f8..1e08961a3e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,11 +7,13 @@ "dev": "vite dev", "build": "tsc && vite build", "build-dev": "tsc && vite build -m development", - "preview": "vite preview" + "preview": "vite preview", + "postinstall": "patch-package" }, "dependencies": { "@chakra-ui/icons": "^2.0.10", "@chakra-ui/react": "^2.3.1", + "@emotion/cache": "^11.10.5", "@emotion/react": "^11.10.4", "@emotion/styled": "^11.10.4", "@radix-ui/react-context-menu": "^2.0.1", @@ -29,14 +31,18 @@ "react-colorful": "^5.6.1", "react-dom": "^18.2.0", "react-dropzone": "^14.2.2", - "react-hotkeys-hook": "^3.4.7", + "react-hotkeys-hook": "4.0.2", "react-icons": "^4.4.0", "react-konva": "^18.2.3", + "react-konva-utils": "^0.3.0", "react-redux": "^8.0.2", "react-transition-group": "^4.4.5", + "react-zoom-pan-pinch": "^2.1.3", + "redux-deep-persist": "^1.0.6", "redux-persist": "^6.0.0", "socket.io": "^4.5.2", "socket.io-client": "^4.5.2", + "use-image": "^1.1.0", "uuid": "^9.0.0", "yarn": "^1.22.19" }, @@ -51,10 +57,13 @@ "eslint": "^8.23.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-react-hooks": "^4.6.0", + "patch-package": "^6.5.0", + "postinstall-postinstall": "^2.1.0", "sass": "^1.55.0", "tsc-watch": "^5.0.3", "typescript": "^4.6.4", "vite": "^3.0.7", - "vite-plugin-eslint": "^1.8.1" + "vite-plugin-eslint": "^1.8.1", + "vite-tsconfig-paths": "^3.5.2" } } diff --git a/frontend/patches/redux-deep-persist+1.0.6.patch b/frontend/patches/redux-deep-persist+1.0.6.patch new file mode 100644 index 0000000000..47a62e6aac --- /dev/null +++ b/frontend/patches/redux-deep-persist+1.0.6.patch @@ -0,0 +1,24 @@ +diff --git a/node_modules/redux-deep-persist/lib/types.d.ts b/node_modules/redux-deep-persist/lib/types.d.ts +index b67b8c2..7fc0fa1 100644 +--- a/node_modules/redux-deep-persist/lib/types.d.ts ++++ b/node_modules/redux-deep-persist/lib/types.d.ts +@@ -35,6 +35,7 @@ export interface PersistConfig { + whitelist?: Array; + transforms?: Array>; + throttle?: number; ++ debounce?: number; + migrate?: PersistMigrate; + stateReconciler?: false | StateReconciler; + getStoredState?: (config: PersistConfig) => Promise; +diff --git a/node_modules/redux-deep-persist/src/types.ts b/node_modules/redux-deep-persist/src/types.ts +index 398ac19..cbc5663 100644 +--- a/node_modules/redux-deep-persist/src/types.ts ++++ b/node_modules/redux-deep-persist/src/types.ts +@@ -91,6 +91,7 @@ export interface PersistConfig { + whitelist?: Array; + transforms?: Array>; + throttle?: number; ++ debounce?: number; + migrate?: PersistMigrate; + stateReconciler?: false | StateReconciler; + /** diff --git a/frontend/patches/redux-persist+6.0.0.patch b/frontend/patches/redux-persist+6.0.0.patch new file mode 100644 index 0000000000..9e0a8492db --- /dev/null +++ b/frontend/patches/redux-persist+6.0.0.patch @@ -0,0 +1,116 @@ +diff --git a/node_modules/redux-persist/es/createPersistoid.js b/node_modules/redux-persist/es/createPersistoid.js +index 8b43b9a..184faab 100644 +--- a/node_modules/redux-persist/es/createPersistoid.js ++++ b/node_modules/redux-persist/es/createPersistoid.js +@@ -6,6 +6,7 @@ export default function createPersistoid(config) { + var whitelist = config.whitelist || null; + var transforms = config.transforms || []; + var throttle = config.throttle || 0; ++ var debounce = config.debounce || 0; + var storageKey = "".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key); + var storage = config.storage; + var serialize; +@@ -28,30 +29,37 @@ export default function createPersistoid(config) { + var timeIterator = null; + var writePromise = null; + +- var update = function update(state) { +- // add any changed keys to the queue +- Object.keys(state).forEach(function (key) { +- if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop ++ // Timer for debounced `update()` ++ let timer = 0; + +- if (lastState[key] === state[key]) return; // value unchanged? noop ++ function update(state) { ++ // Debounce the update ++ clearTimeout(timer); ++ timer = setTimeout(() => { ++ // add any changed keys to the queue ++ Object.keys(state).forEach(function (key) { ++ if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop + +- if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop ++ if (lastState[key] === state[key]) return; // value unchanged? noop + +- keysToProcess.push(key); // add key to queue +- }); //if any key is missing in the new state which was present in the lastState, +- //add it for processing too ++ if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop + +- Object.keys(lastState).forEach(function (key) { +- if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) { +- keysToProcess.push(key); +- } +- }); // start the time iterator if not running (read: throttle) ++ keysToProcess.push(key); // add key to queue ++ }); //if any key is missing in the new state which was present in the lastState, ++ //add it for processing too + +- if (timeIterator === null) { +- timeIterator = setInterval(processNextKey, throttle); +- } ++ Object.keys(lastState).forEach(function (key) { ++ if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) { ++ keysToProcess.push(key); ++ } ++ }); // start the time iterator if not running (read: throttle) ++ ++ if (timeIterator === null) { ++ timeIterator = setInterval(processNextKey, throttle); ++ } + +- lastState = state; ++ lastState = state; ++ }, debounce) + }; + + function processNextKey() { +diff --git a/node_modules/redux-persist/es/types.js.flow b/node_modules/redux-persist/es/types.js.flow +index c50d3cd..39d8be2 100644 +--- a/node_modules/redux-persist/es/types.js.flow ++++ b/node_modules/redux-persist/es/types.js.flow +@@ -19,6 +19,7 @@ export type PersistConfig = { + whitelist?: Array, + transforms?: Array, + throttle?: number, ++ debounce?: number, + migrate?: (PersistedState, number) => Promise, + stateReconciler?: false | Function, + getStoredState?: PersistConfig => Promise, // used for migrations +diff --git a/node_modules/redux-persist/lib/types.js.flow b/node_modules/redux-persist/lib/types.js.flow +index c50d3cd..39d8be2 100644 +--- a/node_modules/redux-persist/lib/types.js.flow ++++ b/node_modules/redux-persist/lib/types.js.flow +@@ -19,6 +19,7 @@ export type PersistConfig = { + whitelist?: Array, + transforms?: Array, + throttle?: number, ++ debounce?: number, + migrate?: (PersistedState, number) => Promise, + stateReconciler?: false | Function, + getStoredState?: PersistConfig => Promise, // used for migrations +diff --git a/node_modules/redux-persist/src/types.js b/node_modules/redux-persist/src/types.js +index c50d3cd..39d8be2 100644 +--- a/node_modules/redux-persist/src/types.js ++++ b/node_modules/redux-persist/src/types.js +@@ -19,6 +19,7 @@ export type PersistConfig = { + whitelist?: Array, + transforms?: Array, + throttle?: number, ++ debounce?: number, + migrate?: (PersistedState, number) => Promise, + stateReconciler?: false | Function, + getStoredState?: PersistConfig => Promise, // used for migrations +diff --git a/node_modules/redux-persist/types/types.d.ts b/node_modules/redux-persist/types/types.d.ts +index b3733bc..2a1696c 100644 +--- a/node_modules/redux-persist/types/types.d.ts ++++ b/node_modules/redux-persist/types/types.d.ts +@@ -35,6 +35,7 @@ declare module "redux-persist/es/types" { + whitelist?: Array; + transforms?: Array>; + throttle?: number; ++ debounce?: number; + migrate?: PersistMigrate; + stateReconciler?: false | StateReconciler; + /** diff --git a/frontend/src/app/App.scss b/frontend/src/app/App.scss index 84c76fd065..16655f84d4 100644 --- a/frontend/src/app/App.scss +++ b/frontend/src/app/App.scss @@ -1,5 +1,9 @@ @use '../styles/Mixins/' as *; +svg { + fill: var(--svg-color); +} + .App { display: grid; width: 100vw; diff --git a/frontend/src/app/App.tsx b/frontend/src/app/App.tsx index 71b001e9b0..f7ce52dff1 100644 --- a/frontend/src/app/App.tsx +++ b/frontend/src/app/App.tsx @@ -1,89 +1,19 @@ -import { useEffect } from 'react'; -import ProgressBar from '../features/system/ProgressBar'; -import SiteHeader from '../features/system/SiteHeader'; -import Console from '../features/system/Console'; -import { useAppDispatch } from './store'; -import { requestSystemConfig } from './socketio/actions'; +import ProgressBar from 'features/system/components/ProgressBar'; +import SiteHeader from 'features/system/components/SiteHeader'; +import Console from 'features/system/components/Console'; import { keepGUIAlive } from './utils'; -import InvokeTabs from '../features/tabs/InvokeTabs'; -import ImageUploader from '../common/components/ImageUploader'; -import { RootState, useAppSelector } from '../app/store'; +import InvokeTabs from 'features/tabs/components/InvokeTabs'; +import ImageUploader from 'common/components/ImageUploader'; -import FloatingGalleryButton from '../features/tabs/FloatingGalleryButton'; -import FloatingOptionsPanelButtons from '../features/tabs/FloatingOptionsPanelButtons'; -import { createSelector } from '@reduxjs/toolkit'; -import { GalleryState } from '../features/gallery/gallerySlice'; -import { OptionsState } from '../features/options/optionsSlice'; -import { activeTabNameSelector } from '../features/options/optionsSelectors'; -import { SystemState } from '../features/system/systemSlice'; -import _ from 'lodash'; -import { Model } from './invokeai'; +import useToastWatcher from 'features/system/hooks/useToastWatcher'; + +import FloatingOptionsPanelButtons from 'features/tabs/components/FloatingOptionsPanelButtons'; +import FloatingGalleryButton from 'features/tabs/components/FloatingGalleryButton'; keepGUIAlive(); -const appSelector = createSelector( - [ - (state: RootState) => state.gallery, - (state: RootState) => state.options, - (state: RootState) => state.system, - activeTabNameSelector, - ], - ( - gallery: GalleryState, - options: OptionsState, - system: SystemState, - activeTabName - ) => { - const { shouldShowGallery, shouldHoldGalleryOpen, shouldPinGallery } = - gallery; - const { - shouldShowOptionsPanel, - shouldHoldOptionsPanelOpen, - shouldPinOptionsPanel, - } = options; - - const modelStatusText = _.reduce( - system.model_list, - (acc: string, cur: Model, key: string) => { - if (cur.status === 'active') acc = key; - return acc; - }, - '' - ); - - const shouldShowGalleryButton = !( - shouldShowGallery || - (shouldHoldGalleryOpen && !shouldPinGallery) - ); - - const shouldShowOptionsPanelButton = - !( - shouldShowOptionsPanel || - (shouldHoldOptionsPanelOpen && !shouldPinOptionsPanel) - ) && ['txt2img', 'img2img', 'inpainting'].includes(activeTabName); - - return { - modelStatusText, - shouldShowGalleryButton, - shouldShowOptionsPanelButton, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - const App = () => { - const dispatch = useAppDispatch(); - - const { shouldShowGalleryButton, shouldShowOptionsPanelButton } = - useAppSelector(appSelector); - - useEffect(() => { - dispatch(requestSystemConfig()); - }, [dispatch]); + useToastWatcher(); return (
@@ -96,9 +26,9 @@ const App = () => {
- {shouldShowGalleryButton && } - {shouldShowOptionsPanelButton && } + +
); }; diff --git a/frontend/src/app/constants.ts b/frontend/src/app/constants.ts index bd457dc7fb..c5221553b3 100644 --- a/frontend/src/app/constants.ts +++ b/frontend/src/app/constants.ts @@ -1,6 +1,6 @@ // TODO: use Enums? -import { InProgressImageType } from '../features/system/systemSlice'; +import { InProgressImageType } from 'features/system/store/systemSlice'; // Valid samplers export const SAMPLERS: Array = [ @@ -9,6 +9,8 @@ export const SAMPLERS: Array = [ 'k_lms', 'k_dpm_2', 'k_dpm_2_a', + 'k_dpmpp_2', + 'k_dpmpp_2_a', 'k_euler', 'k_euler_a', 'k_heun', diff --git a/frontend/src/app/features.ts b/frontend/src/app/features.ts index 361c8356dc..0480e443fe 100644 --- a/frontend/src/app/features.ts +++ b/frontend/src/app/features.ts @@ -13,10 +13,13 @@ export enum Feature { UPSCALE, FACE_CORRECTION, IMAGE_TO_IMAGE, + BOUNDING_BOX, + SEAM_CORRECTION, + INFILL_AND_SCALING, } /** For each tooltip in the UI, the below feature definitions & props will pull relevant information into the tooltip. * - * To-do: href & GuideImages are placeholders, and are not currently utilized, but will be updated (along with the tooltip UI) as feature and UI development and we get a better idea on where things "forever homes" will be . + * To-do: href & GuideImages are placeholders, and are not currently utilized, but will be updated (along with the tooltip UI) as feature and UI develop and we get a better idea on where things "forever homes" will be . */ export const FEATURES: Record = { [Feature.PROMPT]: { @@ -55,7 +58,22 @@ export const FEATURES: Record = { guideImage: 'asset/path.gif', }, [Feature.IMAGE_TO_IMAGE]: { - text: 'ImageToImage allows the upload of an initial image, which InvokeAI will use to guide the generation process, along with a prompt. A lower value for this setting will more closely resemble the original image. Values between 0-1 are accepted, and a range of .25-.75 is recommended ', + text: 'Image to Image allows the upload of an initial image, which InvokeAI will use to guide the generation process, along with a prompt. A lower value for this setting will more closely resemble the original image. Values between 0-1 are accepted, and a range of .25-.75 is recommended ', + href: 'link/to/docs/feature3.html', + guideImage: 'asset/path.gif', + }, + [Feature.BOUNDING_BOX]: { + text: 'The bounding box is analogous to the Width and Height settings for Text to Image or Image to Image. Only the area in the box will be processed.', + href: 'link/to/docs/feature3.html', + guideImage: 'asset/path.gif', + }, + [Feature.SEAM_CORRECTION]: { + text: 'Control the handling of visible seams which may occur when a generated image is pasted back onto the canvas.', + href: 'link/to/docs/feature3.html', + guideImage: 'asset/path.gif', + }, + [Feature.INFILL_AND_SCALING]: { + text: 'Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes).', href: 'link/to/docs/feature3.html', guideImage: 'asset/path.gif', }, diff --git a/frontend/src/app/invokeai.d.ts b/frontend/src/app/invokeai.d.ts index 0a263e2799..ea53b54546 100644 --- a/frontend/src/app/invokeai.d.ts +++ b/frontend/src/app/invokeai.d.ts @@ -12,7 +12,9 @@ * 'gfpgan'. */ -import { Category as GalleryCategory } from '../features/gallery/gallerySlice'; +import { Category as GalleryCategory } from 'features/gallery/store/gallerySlice'; +import { InvokeTabName } from 'features/tabs/components/InvokeTabs'; +import { IRect } from 'konva/lib/types'; /** * TODO: @@ -44,6 +46,8 @@ export declare type CommonGeneratedImageMetadata = { | 'ddim' | 'k_dpm_2_a' | 'k_dpm_2' + | 'k_dpmpp_2_a' + | 'k_dpmpp_2' | 'k_euler_a' | 'k_euler' | 'k_heun' @@ -103,7 +107,7 @@ export declare type PostProcessedImageMetadata = | FacetoolMetadata; // Metadata includes the system config and image metadata. -export declare type Metadata = SystemConfig & { +export declare type Metadata = SystemGenerationMetadata & { image: GeneratedImageMetadata | PostProcessedImageMetadata; }; @@ -111,12 +115,14 @@ export declare type Metadata = SystemConfig & { export declare type Image = { uuid: string; url: string; + thumbnail: string; mtime: number; metadata?: Metadata; width: number; height: number; - category: GalleryCategory; - isBase64: boolean; + category: GalleryCategory; + isBase64?: boolean; + dreamPrompt?: 'string'; }; // GalleryImages is an array of Image. @@ -140,13 +146,18 @@ export declare type SystemStatus = { hasError: boolean; }; -export declare type SystemConfig = { +export declare type SystemGenerationMetadata = { model: string; - model_id: string; + model_weights?: string; + model_id?: string; model_hash: string; app_id: string; app_version: string; +}; + +export declare type SystemConfig = SystemGenerationMetadata & { model_list: ModelList; + infill_methods: string[]; }; export declare type ModelStatus = 'active' | 'cached' | 'not loaded'; @@ -171,10 +182,19 @@ export declare type SystemStatusResponse = SystemStatus; export declare type SystemConfigResponse = SystemConfig; -export declare type ImageResultResponse = Omit; +export declare type ImageResultResponse = Omit & { + boundingBox?: IRect; + generationMode: InvokeTabName; +}; -export declare type ImageUploadResponse = Omit & { - destination: 'img2img' | 'inpainting'; +export declare type ImageUploadResponse = { + // image: Omit; + url: string; + mtime: number; + width: number; + height: number; + thumbnail: string; + // bbox: [number, number, number, number]; }; export declare type ErrorResponse = { @@ -198,9 +218,12 @@ export declare type ImageUrlResponse = { url: string; }; -export declare type ImageUploadDestination = 'img2img' | 'inpainting'; - export declare type UploadImagePayload = { file: File; destination?: ImageUploadDestination; }; + +export declare type UploadOutpaintingMergeImagePayload = { + dataURL: string; + name: string; +}; diff --git a/frontend/src/app/selectors/readinessSelector.ts b/frontend/src/app/selectors/readinessSelector.ts index 702f45c473..06a431cd93 100644 --- a/frontend/src/app/selectors/readinessSelector.ts +++ b/frontend/src/app/selectors/readinessSelector.ts @@ -1,39 +1,35 @@ import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; -import { RootState } from '../store'; -import { activeTabNameSelector } from '../../features/options/optionsSelectors'; -import { OptionsState } from '../../features/options/optionsSlice'; - -import { SystemState } from '../../features/system/systemSlice'; -import { InpaintingState } from '../../features/tabs/Inpainting/inpaintingSlice'; -import { validateSeedWeights } from '../../common/util/seedWeightPairs'; +import { RootState } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { OptionsState } from 'features/options/store/optionsSlice'; +import { SystemState } from 'features/system/store/systemSlice'; +import { validateSeedWeights } from 'common/util/seedWeightPairs'; +import { initialCanvasImageSelector } from 'features/canvas/store/canvasSelectors'; export const readinessSelector = createSelector( [ (state: RootState) => state.options, (state: RootState) => state.system, - (state: RootState) => state.inpainting, + initialCanvasImageSelector, activeTabNameSelector, ], ( options: OptionsState, system: SystemState, - inpainting: InpaintingState, + initialCanvasImage, activeTabName ) => { const { prompt, shouldGenerateVariations, seedWeights, - // maskPath, initialImage, seed, } = options; const { isProcessing, isConnected } = system; - const { imageToInpaint } = inpainting; - let isReady = true; const reasonsWhyNotReady: string[] = []; @@ -48,20 +44,6 @@ export const readinessSelector = createSelector( reasonsWhyNotReady.push('No initial image selected'); } - if (activeTabName === 'inpainting' && !imageToInpaint) { - isReady = false; - reasonsWhyNotReady.push('No inpainting image selected'); - } - - // // We don't use mask paths now. - // // Cannot generate with a mask without img2img - // if (maskPath && !initialImage) { - // isReady = false; - // reasonsWhyNotReady.push( - // 'On ImageToImage tab, but no mask is provided.' - // ); - // } - // TODO: job queue // Cannot generate if already processing an image if (isProcessing) { diff --git a/frontend/src/app/socketio/actions.ts b/frontend/src/app/socketio/actions.ts index 05e0eb92b8..31894213b4 100644 --- a/frontend/src/app/socketio/actions.ts +++ b/frontend/src/app/socketio/actions.ts @@ -1,8 +1,7 @@ import { createAction } from '@reduxjs/toolkit'; -import { GalleryCategory } from '../../features/gallery/gallerySlice'; -import { InvokeTabName } from '../../features/tabs/InvokeTabs'; -import * as InvokeAI from '../invokeai'; - +import { GalleryCategory } from 'features/gallery/store/gallerySlice'; +import { InvokeTabName } from 'features/tabs/components/InvokeTabs'; +import * as InvokeAI from 'app/invokeai'; /** * We can't use redux-toolkit's createSlice() to make these actions, @@ -26,8 +25,6 @@ export const requestNewImages = createAction( export const cancelProcessing = createAction( 'socketio/cancelProcessing' ); -export const uploadImage = createAction('socketio/uploadImage'); -export const uploadMaskImage = createAction('socketio/uploadMaskImage'); export const requestSystemConfig = createAction( 'socketio/requestSystemConfig' @@ -36,3 +33,11 @@ export const requestSystemConfig = createAction( export const requestModelChange = createAction( 'socketio/requestModelChange' ); + +export const saveStagingAreaImageToGallery = createAction( + 'socketio/saveStagingAreaImageToGallery' +); + +export const emptyTempFolder = createAction( + 'socketio/requestEmptyTempFolder' +); diff --git a/frontend/src/app/socketio/emitters.ts b/frontend/src/app/socketio/emitters.ts index 3f1740b027..a9eade2a14 100644 --- a/frontend/src/app/socketio/emitters.ts +++ b/frontend/src/app/socketio/emitters.ts @@ -4,23 +4,22 @@ import { Socket } from 'socket.io-client'; import { frontendToBackendParameters, FrontendToBackendParametersConfig, -} from '../../common/util/parameterTranslation'; +} from 'common/util/parameterTranslation'; import { GalleryCategory, GalleryState, removeImage, -} from '../../features/gallery/gallerySlice'; -import { OptionsState } from '../../features/options/optionsSlice'; +} from 'features/gallery/store/gallerySlice'; +import { OptionsState } from 'features/options/store/optionsSlice'; import { addLogEntry, - errorOccurred, + generationRequested, modelChangeRequested, setIsProcessing, -} from '../../features/system/systemSlice'; -import { inpaintingImageElementRef } from '../../features/tabs/Inpainting/InpaintingCanvas'; -import { InvokeTabName } from '../../features/tabs/InvokeTabs'; -import * as InvokeAI from '../invokeai'; -import { RootState } from '../store'; +} from 'features/system/store/systemSlice'; +import { InvokeTabName } from 'features/tabs/components/InvokeTabs'; +import * as InvokeAI from 'app/invokeai'; +import { RootState } from 'app/store'; /** * Returns an object containing all functions which use `socketio.emit()`. @@ -42,7 +41,7 @@ const makeSocketIOEmitters = ( const { options: optionsState, system: systemState, - inpainting: inpaintingState, + canvas: canvasState, gallery: galleryState, } = state; @@ -50,32 +49,13 @@ const makeSocketIOEmitters = ( { generationMode, optionsState, - inpaintingState, + canvasState, systemState, }; - if (generationMode === 'inpainting') { - if ( - !inpaintingImageElementRef.current || - !inpaintingState.imageToInpaint?.url - ) { - dispatch( - addLogEntry({ - timestamp: dateFormat(new Date(), 'isoDateTime'), - message: 'Inpainting image not loaded, cannot generate image.', - level: 'error', - }) - ); - dispatch(errorOccurred()); - return; - } + dispatch(generationRequested()); - frontendToBackendParametersConfig.imageToProcessUrl = - inpaintingState.imageToInpaint.url; - - frontendToBackendParametersConfig.maskImageElement = - inpaintingImageElementRef.current; - } else if (!['txt2img', 'img2img'].includes(generationMode)) { + if (!['txt2img', 'img2img'].includes(generationMode)) { if (!galleryState.currentImage?.url) return; frontendToBackendParametersConfig.imageToProcessUrl = @@ -96,7 +76,12 @@ const makeSocketIOEmitters = ( // TODO: handle maintaining masks for reproducibility in future if (generationParameters.init_mask) { generationParameters.init_mask = generationParameters.init_mask - .substr(0, 20) + .substr(0, 64) + .concat('...'); + } + if (generationParameters.init_img) { + generationParameters.init_img = generationParameters.init_img + .substr(0, 64) .concat('...'); } @@ -162,9 +147,9 @@ const makeSocketIOEmitters = ( ); }, emitDeleteImage: (imageToDelete: InvokeAI.Image) => { - const { url, uuid, category } = imageToDelete; + const { url, uuid, category, thumbnail } = imageToDelete; dispatch(removeImage(imageToDelete)); - socketio.emit('deleteImage', url, uuid, category); + socketio.emit('deleteImage', url, thumbnail, uuid, category); }, emitRequestImages: (category: GalleryCategory) => { const gallery: GalleryState = getState().gallery; @@ -179,13 +164,6 @@ const makeSocketIOEmitters = ( emitCancelProcessing: () => { socketio.emit('cancel'); }, - emitUploadImage: (payload: InvokeAI.UploadImagePayload) => { - const { file, destination } = payload; - socketio.emit('uploadImage', file, file.name, destination); - }, - emitUploadMaskImage: (file: File) => { - socketio.emit('uploadMaskImage', file, file.name); - }, emitRequestSystemConfig: () => { socketio.emit('requestSystemConfig'); }, @@ -193,6 +171,12 @@ const makeSocketIOEmitters = ( dispatch(modelChangeRequested()); socketio.emit('requestModelChange', modelName); }, + emitSaveStagingAreaImageToGallery: (url: string) => { + socketio.emit('requestSaveStagingAreaImageToGallery', url); + }, + emitRequestEmptyTempFolder: () => { + socketio.emit('requestEmptyTempFolder'); + }, }; }; diff --git a/frontend/src/app/socketio/listeners.ts b/frontend/src/app/socketio/listeners.ts index e27d79f55c..e3cab60828 100644 --- a/frontend/src/app/socketio/listeners.ts +++ b/frontend/src/app/socketio/listeners.ts @@ -2,7 +2,7 @@ import { AnyAction, MiddlewareAPI, Dispatch } from '@reduxjs/toolkit'; import { v4 as uuidv4 } from 'uuid'; import dateFormat from 'dateformat'; -import * as InvokeAI from '../invokeai'; +import * as InvokeAI from 'app/invokeai'; import { addLogEntry, @@ -15,7 +15,8 @@ import { errorOccurred, setModelList, setIsCancelable, -} from '../../features/system/systemSlice'; + addToast, +} from 'features/system/store/systemSlice'; import { addGalleryImages, @@ -23,21 +24,22 @@ import { clearIntermediateImage, GalleryState, removeImage, - setCurrentImage, setIntermediateImage, -} from '../../features/gallery/gallerySlice'; +} from 'features/gallery/store/gallerySlice'; import { clearInitialImage, + setInfillMethod, setInitialImage, setMaskPath, -} from '../../features/options/optionsSlice'; -import { requestImages, requestNewImages } from './actions'; +} from 'features/options/store/optionsSlice'; import { - clearImageToInpaint, - setImageToInpaint, -} from '../../features/tabs/Inpainting/inpaintingSlice'; -import { tabMap } from '../../features/tabs/InvokeTabs'; + requestImages, + requestNewImages, + requestSystemConfig, +} from './actions'; +import { addImageToStagingArea } from 'features/canvas/store/canvasSlice'; +import { tabMap } from 'features/tabs/components/InvokeTabs'; /** * Returns an object containing listener callbacks for socketio events. @@ -56,19 +58,20 @@ const makeSocketIOListeners = ( try { dispatch(setIsConnected(true)); dispatch(setCurrentStatus('Connected')); + dispatch(requestSystemConfig()); const gallery: GalleryState = getState().gallery; - if (gallery.categories.user.latest_mtime) { - dispatch(requestNewImages('user')); - } else { - dispatch(requestImages('user')); - } - if (gallery.categories.result.latest_mtime) { dispatch(requestNewImages('result')); } else { dispatch(requestImages('result')); } + + if (gallery.categories.user.latest_mtime) { + dispatch(requestNewImages('user')); + } else { + dispatch(requestImages('user')); + } } catch (e) { console.error(e); } @@ -97,19 +100,42 @@ const makeSocketIOListeners = ( */ onGenerationResult: (data: InvokeAI.ImageResultResponse) => { try { - const { shouldLoopback, activeTab } = getState().options; + const state = getState(); + const { shouldLoopback, activeTab } = state.options; + const { boundingBox: _, generationMode, ...rest } = data; + const newImage = { uuid: uuidv4(), - ...data, - category: 'result', + ...rest, }; - dispatch( - addImage({ - category: 'result', - image: newImage, - }) - ); + if (['txt2img', 'img2img'].includes(generationMode)) { + dispatch( + addImage({ + category: 'result', + image: { ...newImage, category: 'result' }, + }) + ); + } + + if (generationMode === 'unifiedCanvas' && data.boundingBox) { + const { boundingBox } = data; + dispatch( + addImageToStagingArea({ + image: { ...newImage, category: 'temp' }, + boundingBox, + }) + ); + + if (state.canvas.shouldAutoSave) { + dispatch( + addImage({ + image: { ...newImage, category: 'result' }, + category: 'result', + }) + ); + } + } if (shouldLoopback) { const activeTabName = tabMap[activeTab]; @@ -118,13 +144,11 @@ const makeSocketIOListeners = ( dispatch(setInitialImage(newImage)); break; } - case 'inpainting': { - dispatch(setImageToInpaint(newImage)); - break; - } } } + dispatch(clearIntermediateImage()); + dispatch( addLogEntry({ timestamp: dateFormat(new Date(), 'isoDateTime'), @@ -144,6 +168,7 @@ const makeSocketIOListeners = ( setIntermediateImage({ uuid: uuidv4(), ...data, + category: 'result', }) ); if (!data.isBase64) { @@ -299,16 +324,11 @@ const makeSocketIOListeners = ( // remove references to image in options const { initialImage, maskPath } = getState().options; - const { imageToInpaint } = getState().inpainting; if (initialImage?.url === url || initialImage === url) { dispatch(clearInitialImage()); } - if (imageToInpaint?.url === url) { - dispatch(clearImageToInpaint()); - } - if (maskPath === url) { dispatch(setMaskPath('')); } @@ -320,56 +340,11 @@ const makeSocketIOListeners = ( }) ); }, - onImageUploaded: (data: InvokeAI.ImageUploadResponse) => { - const { destination, ...rest } = data; - const image = { - uuid: uuidv4(), - ...rest, - }; - - try { - dispatch(addImage({ image, category: 'user' })); - - switch (destination) { - case 'img2img': { - dispatch(setInitialImage(image)); - break; - } - case 'inpainting': { - dispatch(setImageToInpaint(image)); - break; - } - default: { - dispatch(setCurrentImage(image)); - break; - } - } - - dispatch( - addLogEntry({ - timestamp: dateFormat(new Date(), 'isoDateTime'), - message: `Image uploaded: ${data.url}`, - }) - ); - } catch (e) { - console.error(e); - } - }, - /** - * Callback to run when we receive a 'maskImageUploaded' event. - */ - onMaskImageUploaded: (data: InvokeAI.ImageUrlResponse) => { - const { url } = data; - dispatch(setMaskPath(url)); - dispatch( - addLogEntry({ - timestamp: dateFormat(new Date(), 'isoDateTime'), - message: `Mask image uploaded: ${url}`, - }) - ); - }, onSystemConfig: (data: InvokeAI.SystemConfig) => { dispatch(setSystemConfig(data)); + if (!data.infill_methods.includes('patchmatch')) { + dispatch(setInfillMethod(data.infill_methods[0])); + } }, onModelChanged: (data: InvokeAI.ModelChangeResponse) => { const { model_name, model_list } = data; @@ -399,6 +374,16 @@ const makeSocketIOListeners = ( }) ); }, + onTempFolderEmptied: () => { + dispatch( + addToast({ + title: 'Temp Folder Emptied', + status: 'success', + duration: 2500, + isClosable: true, + }) + ); + }, }; }; diff --git a/frontend/src/app/socketio/middleware.ts b/frontend/src/app/socketio/middleware.ts index 854e245c4f..308209d8bb 100644 --- a/frontend/src/app/socketio/middleware.ts +++ b/frontend/src/app/socketio/middleware.ts @@ -4,7 +4,7 @@ import { io } from 'socket.io-client'; import makeSocketIOListeners from './listeners'; import makeSocketIOEmitters from './emitters'; -import * as InvokeAI from '../invokeai'; +import * as InvokeAI from 'app/invokeai'; /** * Creates a socketio middleware to handle communication with server. @@ -43,11 +43,10 @@ export const socketioMiddleware = () => { onGalleryImages, onProcessingCanceled, onImageDeleted, - onImageUploaded, - onMaskImageUploaded, onSystemConfig, onModelChanged, onModelChangeFailed, + onTempFolderEmptied, } = makeSocketIOListeners(store); const { @@ -58,10 +57,10 @@ export const socketioMiddleware = () => { emitRequestImages, emitRequestNewImages, emitCancelProcessing, - emitUploadImage, - emitUploadMaskImage, emitRequestSystemConfig, emitRequestModelChange, + emitSaveStagingAreaImageToGallery, + emitRequestEmptyTempFolder, } = makeSocketIOEmitters(store, socketio); /** @@ -104,17 +103,6 @@ export const socketioMiddleware = () => { onImageDeleted(data); }); - socketio.on( - 'imageUploaded', - (data: InvokeAI.ImageUploadResponse) => { - onImageUploaded(data); - } - ); - - socketio.on('maskImageUploaded', (data: InvokeAI.ImageUrlResponse) => { - onMaskImageUploaded(data); - }); - socketio.on('systemConfig', (data: InvokeAI.SystemConfig) => { onSystemConfig(data); }); @@ -127,6 +115,10 @@ export const socketioMiddleware = () => { onModelChangeFailed(data); }); + socketio.on('tempFolderEmptied', () => { + onTempFolderEmptied(); + }); + areListenersSet = true; } @@ -169,16 +161,6 @@ export const socketioMiddleware = () => { break; } - case 'socketio/uploadImage': { - emitUploadImage(action.payload); - break; - } - - case 'socketio/uploadMaskImage': { - emitUploadMaskImage(action.payload); - break; - } - case 'socketio/requestSystemConfig': { emitRequestSystemConfig(); break; @@ -188,6 +170,16 @@ export const socketioMiddleware = () => { emitRequestModelChange(action.payload); break; } + + case 'socketio/saveStagingAreaImageToGallery': { + emitSaveStagingAreaImageToGallery(action.payload); + break; + } + + case 'socketio/requestEmptyTempFolder': { + emitRequestEmptyTempFolder(); + break; + } } next(action); diff --git a/frontend/src/app/store.ts b/frontend/src/app/store.ts index 76ccc09bfe..8bb9f87f6e 100644 --- a/frontend/src/app/store.ts +++ b/frontend/src/app/store.ts @@ -5,16 +5,14 @@ import type { TypedUseSelectorHook } from 'react-redux'; import { persistReducer } from 'redux-persist'; import storage from 'redux-persist/lib/storage'; // defaults to localStorage for web -import optionsReducer, { OptionsState } from '../features/options/optionsSlice'; -import galleryReducer, { GalleryState } from '../features/gallery/gallerySlice'; -import inpaintingReducer, { - InpaintingState, -} from '../features/tabs/Inpainting/inpaintingSlice'; +import { getPersistConfig } from 'redux-deep-persist'; + +import optionsReducer from 'features/options/store/optionsSlice'; +import galleryReducer from 'features/gallery/store/gallerySlice'; +import systemReducer from 'features/system/store/systemSlice'; +import canvasReducer from 'features/canvas/store/canvasSlice'; -import systemReducer, { SystemState } from '../features/system/systemSlice'; import { socketioMiddleware } from './socketio/middleware'; -import autoMergeLevel2 from 'redux-persist/es/stateReconciler/autoMergeLevel2'; -import { PersistPartial } from 'redux-persist/es/persistReducer'; /** * redux-persist provides an easy and reliable way to persist state across reloads. @@ -28,87 +26,79 @@ import { PersistPartial } from 'redux-persist/es/persistReducer'; * These can be blacklisted in redux-persist. * * The necesssary nested persistors with blacklists are configured below. - * - * TODO: Do we blacklist initialImagePath? If the image is deleted from disk we get an - * ugly 404. But if we blacklist it, then this is a valuable parameter that is lost - * on reload. Need to figure out a good way to handle this. */ -const rootPersistConfig = { - key: 'root', - storage, - stateReconciler: autoMergeLevel2, - blacklist: ['gallery', 'system', 'inpainting'], -}; +const canvasBlacklist = [ + 'cursorPosition', + 'isCanvasInitialized', + 'doesCanvasNeedScaling', +].map((blacklistItem) => `canvas.${blacklistItem}`); -const systemPersistConfig = { - key: 'system', - storage, - stateReconciler: autoMergeLevel2, - blacklist: [ - 'isCancelable', - 'isConnected', - 'isProcessing', - 'currentStep', - 'socketId', - 'isESRGANAvailable', - 'isGFPGANAvailable', - 'currentStep', - 'totalSteps', - 'currentIteration', - 'totalIterations', - 'currentStatus', - ], -}; +const systemBlacklist = [ + 'currentIteration', + 'currentStatus', + 'currentStep', + 'isCancelable', + 'isConnected', + 'isESRGANAvailable', + 'isGFPGANAvailable', + 'isProcessing', + 'socketId', + 'totalIterations', + 'totalSteps', +].map((blacklistItem) => `system.${blacklistItem}`); -const galleryPersistConfig = { - key: 'gallery', - storage, - stateReconciler: autoMergeLevel2, - whitelist: [ - 'galleryWidth', - 'shouldPinGallery', - 'shouldShowGallery', - 'galleryScrollPosition', - 'galleryImageMinimumWidth', - 'galleryImageObjectFit', - ], -}; +const galleryBlacklist = [ + 'categories', + 'currentCategory', + 'currentImage', + 'currentImageUuid', + 'shouldAutoSwitchToNewImages', + 'shouldHoldGalleryOpen', + 'intermediateImage', +].map((blacklistItem) => `gallery.${blacklistItem}`); -const inpaintingPersistConfig = { - key: 'inpainting', - storage, - stateReconciler: autoMergeLevel2, - blacklist: ['pastLines', 'futuresLines', 'cursorPosition'], -}; - -const reducers = combineReducers({ +const rootReducer = combineReducers({ options: optionsReducer, - gallery: persistReducer(galleryPersistConfig, galleryReducer), - system: persistReducer(systemPersistConfig, systemReducer), - inpainting: persistReducer( - inpaintingPersistConfig, - inpaintingReducer - ), + gallery: galleryReducer, + system: systemReducer, + canvas: canvasReducer, }); -const persistedReducer = persistReducer<{ - options: OptionsState; - gallery: GalleryState & PersistPartial; - system: SystemState & PersistPartial; - inpainting: InpaintingState & PersistPartial; -}>(rootPersistConfig, reducers); +const rootPersistConfig = getPersistConfig({ + key: 'root', + storage, + rootReducer, + blacklist: [...canvasBlacklist, ...systemBlacklist, ...galleryBlacklist], + debounce: 300, +}); + +const persistedReducer = persistReducer(rootPersistConfig, rootReducer); // Continue with store setup export const store = configureStore({ reducer: persistedReducer, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ - // redux-persist sometimes needs to temporarily put a function in redux state, need to disable this check + immutableCheck: false, serializableCheck: false, }).concat(socketioMiddleware()), + devTools: { + // Uncommenting these very rapidly called actions makes the redux dev tools output much more readable + actionsDenylist: [ + 'canvas/setCursorPosition', + 'canvas/setStageCoordinates', + 'canvas/setStageScale', + 'canvas/setIsDrawing', + // 'canvas/setBoundingBoxCoordinates', + // 'canvas/setBoundingBoxDimensions', + 'canvas/setIsDrawing', + 'canvas/addPointToCurrentLine', + ], + }, }); +export type AppGetState = typeof store.getState; export type RootState = ReturnType; export type AppDispatch = typeof store.dispatch; diff --git a/frontend/src/assets/images/mask.afdesign b/frontend/src/assets/images/mask.afdesign new file mode 100644 index 0000000000..52c8ea4105 Binary files /dev/null and b/frontend/src/assets/images/mask.afdesign differ diff --git a/frontend/src/assets/images/mask.svg b/frontend/src/assets/images/mask.svg new file mode 100644 index 0000000000..8cc4bee424 --- /dev/null +++ b/frontend/src/assets/images/mask.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/common/components/GuideIcon.tsx b/frontend/src/common/components/GuideIcon.tsx index 2f4312ae76..c446024452 100644 --- a/frontend/src/common/components/GuideIcon.tsx +++ b/frontend/src/common/components/GuideIcon.tsx @@ -1,7 +1,7 @@ import { Box, forwardRef, Icon } from '@chakra-ui/react'; import { IconType } from 'react-icons'; import { MdHelp } from 'react-icons/md'; -import { Feature } from '../../app/features'; +import { Feature } from 'app/features'; import GuidePopover from './GuidePopover'; type GuideIconProps = { @@ -13,7 +13,7 @@ const GuideIcon = forwardRef( ({ feature, icon = MdHelp }: GuideIconProps, ref) => ( - + ) diff --git a/frontend/src/common/components/GuidePopover.scss b/frontend/src/common/components/GuidePopover.scss index faa31212bb..58434270b2 100644 --- a/frontend/src/common/components/GuidePopover.scss +++ b/frontend/src/common/components/GuidePopover.scss @@ -1,11 +1,11 @@ .guide-popover-arrow { - background-color: var(--tab-panel-bg) !important; - box-shadow: none !important; + background-color: var(--tab-panel-bg); + box-shadow: none; } .guide-popover-content { - background-color: var(--background-color-secondary) !important; - border: none !important; + background-color: var(--background-color-secondary); + border: none; } .guide-popover-guide-content { diff --git a/frontend/src/common/components/GuidePopover.tsx b/frontend/src/common/components/GuidePopover.tsx index b5893629c0..f8ad81eaaa 100644 --- a/frontend/src/common/components/GuidePopover.tsx +++ b/frontend/src/common/components/GuidePopover.tsx @@ -5,12 +5,12 @@ import { PopoverTrigger, Box, } from '@chakra-ui/react'; -import { SystemState } from '../../features/system/systemSlice'; -import { useAppSelector } from '../../app/store'; -import { RootState } from '../../app/store'; +import { SystemState } from 'features/system/store/systemSlice'; +import { useAppSelector } from 'app/store'; +import { RootState } from 'app/store'; import { createSelector } from '@reduxjs/toolkit'; import { ReactElement } from 'react'; -import { Feature, FEATURES } from '../../app/features'; +import { Feature, FEATURES } from 'app/features'; type GuideProps = { children: ReactElement; diff --git a/frontend/src/common/components/IAIAlertDialog.tsx b/frontend/src/common/components/IAIAlertDialog.tsx new file mode 100644 index 0000000000..1ea35f5881 --- /dev/null +++ b/frontend/src/common/components/IAIAlertDialog.tsx @@ -0,0 +1,86 @@ +import { + AlertDialog, + AlertDialogBody, + AlertDialogContent, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogOverlay, + Button, + forwardRef, + useDisclosure, +} from '@chakra-ui/react'; +import { cloneElement, ReactElement, ReactNode, useRef } from 'react'; + +type Props = { + acceptButtonText?: string; + acceptCallback: () => void; + cancelButtonText?: string; + cancelCallback?: () => void; + children: ReactNode; + title: string; + triggerComponent: ReactElement; +}; + +const IAIAlertDialog = forwardRef((props: Props, ref) => { + const { + acceptButtonText = 'Accept', + acceptCallback, + cancelButtonText = 'Cancel', + cancelCallback, + children, + title, + triggerComponent, + } = props; + + const { isOpen, onOpen, onClose } = useDisclosure(); + const cancelRef = useRef(null); + + const handleAccept = () => { + acceptCallback(); + onClose(); + }; + + const handleCancel = () => { + cancelCallback && cancelCallback(); + onClose(); + }; + + return ( + <> + {cloneElement(triggerComponent, { + onClick: onOpen, + ref: ref, + })} + + + + + + {title} + + + {children} + + + + + + + + + + ); +}); +export default IAIAlertDialog; diff --git a/frontend/src/common/components/IAIButton.scss b/frontend/src/common/components/IAIButton.scss index 1ac41cf0d7..90489a3bda 100644 --- a/frontend/src/common/components/IAIButton.scss +++ b/frontend/src/common/components/IAIButton.scss @@ -1,3 +1,8 @@ .invokeai__button { - justify-content: space-between; + background-color: var(--btn-base-color); + place-content: center; + + &:hover { + background-color: var(--btn-base-color-hover); + } } diff --git a/frontend/src/common/components/IAICheckbox.scss b/frontend/src/common/components/IAICheckbox.scss index c0118e25e1..3b79c8f4db 100644 --- a/frontend/src/common/components/IAICheckbox.scss +++ b/frontend/src/common/components/IAICheckbox.scss @@ -15,7 +15,7 @@ svg { width: 0.6rem; height: 0.6rem; - stroke-width: 3px !important; + stroke-width: 3px; } &[data-checked] { diff --git a/frontend/src/common/components/IAIIconButton.scss b/frontend/src/common/components/IAIIconButton.scss index 7bed75c3fc..d55e5de4c5 100644 --- a/frontend/src/common/components/IAIIconButton.scss +++ b/frontend/src/common/components/IAIIconButton.scss @@ -1,11 +1,11 @@ @use '../../styles/Mixins/' as *; .invokeai__icon-button { - background-color: var(--btn-grey); + background: var(--btn-base-color); cursor: pointer; &:hover { - background-color: var(--btn-grey-hover); + background-color: var(--btn-base-color-hover); } &[data-selected='true'] { @@ -20,16 +20,39 @@ } &[data-variant='link'] { - background: none !important; + background: none; &:hover { - background: none !important; + background: none; } } - &[data-selected='true'] { - border-color: var(--accent-color); + // Check Box Style + &[data-as-checkbox='true'] { + background-color: var(--btn-base-color); + border: 3px solid var(--btn-base-color); + + svg { + fill: var(--text-color); + } + &:hover { - border-color: var(--accent-color-hover); + background-color: var(--btn-base-color); + border-color: var(--btn-checkbox-border-hover); + svg { + fill: var(--text-color); + } + } + + &[data-selected='true'] { + border-color: var(--accent-color); + svg { + fill: var(--accent-color-hover); + } + &:hover { + svg { + fill: var(--accent-color-hover); + } + } } } @@ -38,28 +61,12 @@ animation-duration: 1s; animation-timing-function: ease-in-out; animation-iteration-count: infinite; + &:hover { animation: none; background-color: var(--accent-color-hover); } } - - &[data-as-checkbox='true'] { - background-color: var(--btn-grey); - border: 3px solid var(--btn-grey); - - svg { - fill: var(--text-color); - } - - &:hover { - background-color: var(--btn-grey); - border-color: var(--btn-checkbox-border-hover); - svg { - fill: var(--text-color); - } - } - } } @keyframes pulseColor { diff --git a/frontend/src/common/components/IAIIconButton.tsx b/frontend/src/common/components/IAIIconButton.tsx index 3cc76c09f0..239e1f5372 100644 --- a/frontend/src/common/components/IAIIconButton.tsx +++ b/frontend/src/common/components/IAIIconButton.tsx @@ -25,13 +25,23 @@ const IAIIconButton = forwardRef((props: IAIIconButtonProps, forwardedRef) => { } = props; return ( - + diff --git a/frontend/src/common/components/IAINumberInput.scss b/frontend/src/common/components/IAINumberInput.scss index c7de72dd9a..5012828311 100644 --- a/frontend/src/common/components/IAINumberInput.scss +++ b/frontend/src/common/components/IAINumberInput.scss @@ -1,16 +1,14 @@ .invokeai__number-input-form-control { - display: grid; - grid-template-columns: max-content auto; + display: flex; align-items: center; + column-gap: 1rem; .invokeai__number-input-form-label { color: var(--text-color-secondary); margin-right: 0; font-size: 1rem; margin-bottom: 0; - flex-grow: 2; white-space: nowrap; - padding-right: 1rem; &[data-focus] + .invokeai__number-input-root { outline: none; @@ -33,7 +31,7 @@ align-items: center; background-color: var(--background-color-secondary); border: 2px solid var(--border-color); - border-radius: 0.2rem; + border-radius: 0.3rem; } .invokeai__number-input-field { @@ -41,10 +39,8 @@ font-weight: bold; width: 100%; height: auto; - padding: 0; font-size: 0.9rem; - padding-left: 0.5rem; - padding-right: 0.5rem; + padding: 0 0.5rem; &:focus { outline: none; diff --git a/frontend/src/common/components/IAINumberInput.tsx b/frontend/src/common/components/IAINumberInput.tsx index b538092909..9d6e6969a0 100644 --- a/frontend/src/common/components/IAINumberInput.tsx +++ b/frontend/src/common/components/IAINumberInput.tsx @@ -21,6 +21,7 @@ const numberStringRegex = /^-?(0\.)?\.?$/; interface Props extends Omit { styleClass?: string; label?: string; + labelFontSize?: string | number; width?: string | number; showStepper?: boolean; value: number; @@ -43,6 +44,7 @@ interface Props extends Omit { const IAINumberInput = (props: Props) => { const { label, + labelFontSize = '1rem', styleClass, isDisabled = false, showStepper = true, @@ -127,6 +129,7 @@ const IAINumberInput = (props: Props) => { {label} diff --git a/frontend/src/common/components/IAIPopover.scss b/frontend/src/common/components/IAIPopover.scss index 73fab8cfb5..ab2ac26b3a 100644 --- a/frontend/src/common/components/IAIPopover.scss +++ b/frontend/src/common/components/IAIPopover.scss @@ -1,10 +1,10 @@ .invokeai__popover-content { min-width: unset; - width: unset !important; + width: unset; padding: 1rem; - border-radius: 0.5rem !important; - background-color: var(--background-color) !important; - border: 2px solid var(--border-color) !important; + border-radius: 0.5rem; + background-color: var(--background-color); + border: 2px solid var(--border-color); .invokeai__popover-arrow { background-color: var(--background-color) !important; diff --git a/frontend/src/common/components/IAIPopover.tsx b/frontend/src/common/components/IAIPopover.tsx index ff18d96ddd..74bf1644a4 100644 --- a/frontend/src/common/components/IAIPopover.tsx +++ b/frontend/src/common/components/IAIPopover.tsx @@ -29,7 +29,7 @@ const IAIPopover = (props: IAIPopoverProps) => { {triggerComponent} - {hasArrow && } + {hasArrow && } {children} diff --git a/frontend/src/common/components/IAISelect.scss b/frontend/src/common/components/IAISelect.scss index d0b9e54037..51baa3bbaa 100644 --- a/frontend/src/common/components/IAISelect.scss +++ b/frontend/src/common/components/IAISelect.scss @@ -4,7 +4,6 @@ display: flex; column-gap: 1rem; align-items: center; - width: max-content; .invokeai__select-label { color: var(--text-color-secondary); @@ -15,6 +14,7 @@ border: 2px solid var(--border-color); background-color: var(--background-color-secondary); font-weight: bold; + font-size: 0.9rem; height: 2rem; border-radius: 0.2rem; @@ -27,5 +27,6 @@ .invokeai__select-option { background-color: var(--background-color-secondary); + color: var(--text-color-secondary); } } diff --git a/frontend/src/common/components/IAISelect.tsx b/frontend/src/common/components/IAISelect.tsx index cfec3ff18d..c21135db00 100644 --- a/frontend/src/common/components/IAISelect.tsx +++ b/frontend/src/common/components/IAISelect.tsx @@ -1,9 +1,18 @@ -import { FormControl, FormLabel, Select, SelectProps } from '@chakra-ui/react'; +import { + FormControl, + FormLabel, + Select, + SelectProps, + Tooltip, + TooltipProps, +} from '@chakra-ui/react'; import { MouseEvent } from 'react'; type IAISelectProps = SelectProps & { - label: string; + label?: string; styleClass?: string; + tooltip?: string; + tooltipProps?: Omit; validValues: | Array | Array<{ key: string; value: string | number }>; @@ -16,6 +25,8 @@ const IAISelect = (props: IAISelectProps) => { label, isDisabled, validValues, + tooltip, + tooltipProps, size = 'sm', fontSize = 'md', styleClass, @@ -32,37 +43,41 @@ const IAISelect = (props: IAISelectProps) => { e.nativeEvent.cancelBubble = true; }} > - - {label} - - + {label && ( + + {label} + + )} + + +
); }; diff --git a/frontend/src/common/components/IAISlider.scss b/frontend/src/common/components/IAISlider.scss index ef7681c42f..afd3df8491 100644 --- a/frontend/src/common/components/IAISlider.scss +++ b/frontend/src/common/components/IAISlider.scss @@ -1,40 +1,62 @@ -@use '../../styles/Mixins/' as *; - -.invokeai__slider-form-control { +.invokeai__slider-component { display: flex; - column-gap: 1rem; - justify-content: space-between; + gap: 1rem; align-items: center; - width: max-content; - padding-right: 0.25rem; - .invokeai__slider-inner-container { - display: flex; - column-gap: 0.5rem; + .invokeai__slider-component-label { + min-width: max-content; + margin: 0; + font-weight: bold; + font-size: 0.9rem; + color: var(--text-color-secondary); + } - .invokeai__slider-form-label { - color: var(--text-color-secondary); - margin: 0; - margin-right: 0.5rem; - margin-bottom: 0.1rem; + .invokeai__slider_track { + background-color: var(--tab-color); + } + + .invokeai__slider_track-filled { + background-color: var(--slider-color); + } + + .invokeai__slider-thumb { + width: 4px; + } + + .invokeai__slider-mark { + font-size: 0.75rem; + font-weight: bold; + color: var(--slider-color); + margin-top: 0.3rem; + } + + .invokeai__slider-number-input { + border: none; + font-size: 0.9rem; + font-weight: bold; + height: 2rem; + background-color: var(--background-color-secondary); + border: 2px solid var(--border-color); + + &:focus { + outline: none; + box-shadow: none; + border: 2px solid var(--input-border-color); + box-shadow: 0 0 10px 0 var(--input-box-shadow-color); } - .invokeai__slider-root { - .invokeai__slider-filled-track { - background-color: var(--accent-color-hover); - } + &:disabled { + opacity: 0.2; + } + } - .invokeai__slider-track { - background-color: var(--text-color-secondary); - height: 5px; - border-radius: 9999px; - } + .invokeai__slider-number-stepper { + border: none; + } - .invokeai__slider-thumb { - } + &[data-markers='true'] { + .invokeai__slider_container { + margin-top: -1rem; } } } - -.invokeai__slider-thumb-tooltip { -} diff --git a/frontend/src/common/components/IAISlider.tsx b/frontend/src/common/components/IAISlider.tsx index 9b7156c5ad..375cd55a0a 100644 --- a/frontend/src/common/components/IAISlider.tsx +++ b/frontend/src/common/components/IAISlider.tsx @@ -1,87 +1,246 @@ import { - Slider, - SliderTrack, - SliderFilledTrack, - SliderThumb, FormControl, - FormLabel, - Tooltip, - SliderProps, FormControlProps, + FormLabel, FormLabelProps, - SliderTrackProps, + HStack, + NumberDecrementStepper, + NumberIncrementStepper, + NumberInput, + NumberInputField, + NumberInputFieldProps, + NumberInputProps, + NumberInputStepper, + NumberInputStepperProps, + Slider, + SliderFilledTrack, + SliderMark, + SliderMarkProps, + SliderThumb, SliderThumbProps, + SliderTrack, + SliderTrackProps, + Tooltip, TooltipProps, - SliderInnerTrackProps, } from '@chakra-ui/react'; +import React, { FocusEvent, useEffect, useMemo, useState } from 'react'; +import { BiReset } from 'react-icons/bi'; +import IAIIconButton, { IAIIconButtonProps } from './IAIIconButton'; +import _ from 'lodash'; -type IAISliderProps = SliderProps & { - label?: string; +export type IAIFullSliderProps = { + label: string; + value: number; + min?: number; + max?: number; + step?: number; + onChange: (v: number) => void; + withSliderMarks?: boolean; + sliderMarkLeftOffset?: number; + sliderMarkRightOffset?: number; + withInput?: boolean; + isInteger?: boolean; + inputWidth?: string | number; + inputReadOnly?: boolean; + withReset?: boolean; + handleReset?: () => void; + isResetDisabled?: boolean; + isSliderDisabled?: boolean; + isInputDisabled?: boolean; + tooltipSuffix?: string; + hideTooltip?: boolean; styleClass?: string; - formControlProps?: FormControlProps; - formLabelProps?: FormLabelProps; + sliderFormControlProps?: FormControlProps; + sliderFormLabelProps?: FormLabelProps; + sliderMarkProps?: Omit; sliderTrackProps?: SliderTrackProps; - sliderInnerTrackProps?: SliderInnerTrackProps; sliderThumbProps?: SliderThumbProps; - sliderThumbTooltipProps?: Omit; + sliderNumberInputProps?: NumberInputProps; + sliderNumberInputFieldProps?: NumberInputFieldProps; + sliderNumberInputStepperProps?: NumberInputStepperProps; + sliderTooltipProps?: Omit; + sliderIAIIconButtonProps?: IAIIconButtonProps; }; -const IAISlider = (props: IAISliderProps) => { +export default function IAISlider(props: IAIFullSliderProps) { + const [showTooltip, setShowTooltip] = useState(false); const { label, + value, + min = 1, + max = 100, + step = 1, + onChange, + tooltipSuffix = '', + withSliderMarks = false, + sliderMarkLeftOffset = 0, + sliderMarkRightOffset = -7, + withInput = false, + isInteger = false, + inputWidth = '5rem', + inputReadOnly = true, + withReset = false, + hideTooltip = false, + handleReset, + isResetDisabled, + isSliderDisabled, + isInputDisabled, styleClass, - formControlProps, - formLabelProps, + sliderFormControlProps, + sliderFormLabelProps, + sliderMarkProps, sliderTrackProps, - sliderInnerTrackProps, sliderThumbProps, - sliderThumbTooltipProps, + sliderNumberInputProps, + sliderNumberInputFieldProps, + sliderNumberInputStepperProps, + sliderTooltipProps, + sliderIAIIconButtonProps, ...rest } = props; + + const [localInputValue, setLocalInputValue] = useState(String(value)); + + const numberInputMax = useMemo( + () => (sliderNumberInputProps?.max ? sliderNumberInputProps.max : max), + [max, sliderNumberInputProps?.max] + ); + + useEffect(() => { + if (String(value) !== localInputValue && localInputValue !== '') { + setLocalInputValue(String(value)); + } + }, [value, localInputValue, setLocalInputValue]); + + const handleInputBlur = (e: FocusEvent) => { + const clamped = _.clamp( + isInteger ? Math.floor(Number(e.target.value)) : Number(e.target.value), + min, + numberInputMax + ); + setLocalInputValue(String(clamped)); + onChange(clamped); + }; + + const handleInputChange = (v: any) => { + setLocalInputValue(v); + onChange(Number(v)); + }; + + const handleResetDisable = () => { + if (!handleReset) return; + handleReset(); + }; + return ( -
- - {label} - + + {label} + + setShowTooltip(true)} + onMouseLeave={() => setShowTooltip(false)} + focusThumbOnChange={false} + isDisabled={isSliderDisabled} {...rest} > - - + {withSliderMarks && ( + <> + + {min} + + + {max} + + + )} + + + -
+ + {withInput && ( + + + + + + + + )} + + {withReset && ( + } + onClick={handleResetDisable} + isDisabled={isResetDisabled} + {...sliderIAIIconButtonProps} + /> + )} +
); -}; - -export default IAISlider; +} diff --git a/frontend/src/common/components/ImageUploader.scss b/frontend/src/common/components/ImageUploader.scss index 5d0f6774bb..ee4b31ace7 100644 --- a/frontend/src/common/components/ImageUploader.scss +++ b/frontend/src/common/components/ImageUploader.scss @@ -33,7 +33,6 @@ } .image-uploader-button-outer { - min-width: 20rem; width: 100%; height: 100%; display: flex; @@ -42,10 +41,10 @@ cursor: pointer; border-radius: 0.5rem; color: var(--tab-list-text-inactive); - background-color: var(--btn-grey); + background-color: var(--background-color); &:hover { - background-color: var(--btn-grey-hover); + background-color: var(--background-color-light); } } @@ -66,10 +65,10 @@ text-align: center; svg { - width: 4rem !important; - height: 4rem !important; + width: 4rem; + height: 4rem; } h2 { - font-size: 1.2rem !important; + font-size: 1.2rem; } } diff --git a/frontend/src/common/components/ImageUploader.tsx b/frontend/src/common/components/ImageUploader.tsx index d79bbbee8e..04cce48b5d 100644 --- a/frontend/src/common/components/ImageUploader.tsx +++ b/frontend/src/common/components/ImageUploader.tsx @@ -1,13 +1,19 @@ -import { useCallback, ReactNode, useState, useEffect } from 'react'; -import { useAppDispatch, useAppSelector } from '../../app/store'; +import { + useCallback, + ReactNode, + useState, + useEffect, + KeyboardEvent, +} from 'react'; +import { useAppDispatch, useAppSelector } from 'app/store'; import { FileRejection, useDropzone } from 'react-dropzone'; import { useToast } from '@chakra-ui/react'; -import { uploadImage } from '../../app/socketio/actions'; -import { ImageUploadDestination, UploadImagePayload } from '../../app/invokeai'; -import { ImageUploaderTriggerContext } from '../../app/contexts/ImageUploaderTriggerContext'; -import { activeTabNameSelector } from '../../features/options/optionsSelectors'; -import { tabDict } from '../../features/tabs/InvokeTabs'; +import { ImageUploaderTriggerContext } from 'app/contexts/ImageUploaderTriggerContext'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { tabDict } from 'features/tabs/components/InvokeTabs'; import ImageUploadOverlay from './ImageUploadOverlay'; +import { uploadImage } from 'features/gallery/store/thunks/uploadImage'; +import useImageUploader from 'common/hooks/useImageUploader'; type ImageUploaderProps = { children: ReactNode; @@ -19,6 +25,7 @@ const ImageUploader = (props: ImageUploaderProps) => { const activeTabName = useAppSelector(activeTabNameSelector); const toast = useToast({}); const [isHandlingUpload, setIsHandlingUpload] = useState(false); + const { setOpenUploader } = useImageUploader(); const fileRejectionCallback = useCallback( (rejection: FileRejection) => { @@ -38,15 +45,10 @@ const ImageUploader = (props: ImageUploaderProps) => { ); const fileAcceptedCallback = useCallback( - (file: File) => { - setIsHandlingUpload(true); - const payload: UploadImagePayload = { file }; - if (['img2img', 'inpainting'].includes(activeTabName)) { - payload.destination = activeTabName as ImageUploadDestination; - } - dispatch(uploadImage(payload)); + async (file: File) => { + dispatch(uploadImage({ imageFile: file })); }, - [dispatch, activeTabName] + [dispatch] ); const onDrop = useCallback( @@ -77,6 +79,8 @@ const ImageUploader = (props: ImageUploaderProps) => { maxFiles: 1, }); + setOpenUploader(open); + useEffect(() => { const pasteImageListener = (e: ClipboardEvent) => { const dataTransferItemList = e.clipboardData?.items; @@ -118,12 +122,7 @@ const ImageUploader = (props: ImageUploaderProps) => { return; } - const payload: UploadImagePayload = { file }; - if (['img2img', 'inpainting'].includes(activeTabName)) { - payload.destination = activeTabName as ImageUploadDestination; - } - - dispatch(uploadImage(payload)); + dispatch(uploadImage({ imageFile: file })); }; document.addEventListener('paste', pasteImageListener); return () => { @@ -131,13 +130,21 @@ const ImageUploader = (props: ImageUploaderProps) => { }; }, [dispatch, toast, activeTabName]); - const overlaySecondaryText = ['img2img', 'inpainting'].includes(activeTabName) + const overlaySecondaryText = ['img2img', 'unifiedCanvas'].includes( + activeTabName + ) ? ` to ${tabDict[activeTabName as keyof typeof tabDict].tooltip}` : ``; return ( -
+
{ + // Bail out if user hits spacebar - do not open the uploader + if (e.key === ' ') return; + }} + > {children} {isDragActive && isHandlingUpload && ( diff --git a/frontend/src/common/components/ImageUploaderButton.tsx b/frontend/src/common/components/ImageUploaderButton.tsx index 373ab7ad21..c11428cec7 100644 --- a/frontend/src/common/components/ImageUploaderButton.tsx +++ b/frontend/src/common/components/ImageUploaderButton.tsx @@ -1,7 +1,7 @@ import { Heading } from '@chakra-ui/react'; import { useContext } from 'react'; import { FaUpload } from 'react-icons/fa'; -import { ImageUploaderTriggerContext } from '../../app/contexts/ImageUploaderTriggerContext'; +import { ImageUploaderTriggerContext } from 'app/contexts/ImageUploaderTriggerContext'; type ImageUploaderButtonProps = { styleClass?: string; diff --git a/frontend/src/common/components/ImageUploaderIconButton.tsx b/frontend/src/common/components/ImageUploaderIconButton.tsx index 214e7b7b7c..b35b32afce 100644 --- a/frontend/src/common/components/ImageUploaderIconButton.tsx +++ b/frontend/src/common/components/ImageUploaderIconButton.tsx @@ -1,6 +1,6 @@ import { useContext } from 'react'; import { FaUpload } from 'react-icons/fa'; -import { ImageUploaderTriggerContext } from '../../app/contexts/ImageUploaderTriggerContext'; +import { ImageUploaderTriggerContext } from 'app/contexts/ImageUploaderTriggerContext'; import IAIIconButton from './IAIIconButton'; const ImageUploaderIconButton = () => { diff --git a/frontend/src/common/components/WorkInProgress/ImageToImageWIP.tsx b/frontend/src/common/components/WorkInProgress/ImageToImageWIP.tsx deleted file mode 100644 index 20686087a0..0000000000 --- a/frontend/src/common/components/WorkInProgress/ImageToImageWIP.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import Img2ImgPlaceHolder from '../../../assets/images/image2img.png'; - -export const ImageToImageWIP = () => { - return ( -
- img2img_placeholder -

Image To Image

-

- Image to Image is already available in the WebUI. You can access it from - the Text to Image - Advanced Options menu. A dedicated UI for Image To - Image will be released soon. -

-
- ); -}; diff --git a/frontend/src/common/components/WorkInProgress/InpaintingWIP.tsx b/frontend/src/common/components/WorkInProgress/InpaintingWIP.tsx deleted file mode 100644 index 1c029aa829..0000000000 --- a/frontend/src/common/components/WorkInProgress/InpaintingWIP.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -export default function InpaintingWIP() { - return ( -
-

Inpainting

-

- Inpainting is available as a part of the Invoke AI Command Line - Interface. A dedicated WebUI interface will be released in the near - future. -

-
- ); -} diff --git a/frontend/src/common/components/WorkInProgress/OutpaintingWIP.tsx b/frontend/src/common/components/WorkInProgress/OutpaintingWIP.tsx deleted file mode 100644 index fb913a40f7..0000000000 --- a/frontend/src/common/components/WorkInProgress/OutpaintingWIP.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -export default function OutpaintingWIP() { - return ( -
-

Outpainting

-

- Outpainting is available as a part of the Invoke AI Command Line - Interface. A dedicated WebUI interface will be released in the near - future. -

-
- ); -} diff --git a/frontend/src/common/components/WorkInProgress/PostProcessingWIP.tsx b/frontend/src/common/components/WorkInProgress/PostProcessingWIP.tsx index 5d270696b2..de9c59afa0 100644 --- a/frontend/src/common/components/WorkInProgress/PostProcessingWIP.tsx +++ b/frontend/src/common/components/WorkInProgress/PostProcessingWIP.tsx @@ -9,7 +9,7 @@ export const PostProcessingWIP = () => { Upscaling and Face Restoration are already available in the WebUI. You can access them from the Advanced Options menu of the Text To Image and Image To Image tabs. You can also process images directly, using the - image action buttons above the main image display. + image action buttons above the current image display or in the viewer.

A dedicated UI will be released soon to facilitate more advanced post diff --git a/frontend/src/common/components/WorkInProgress/Training.tsx b/frontend/src/common/components/WorkInProgress/Training.tsx new file mode 100644 index 0000000000..0a36ca22f9 --- /dev/null +++ b/frontend/src/common/components/WorkInProgress/Training.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +export default function TrainingWIP() { + return ( +

+

Training

+

+ A dedicated workflow for training your own embeddings and checkpoints + using Textual Inversion and Dreambooth from the web interface.
+
+ InvokeAI already supports training custom embeddings using Textual + Inversion using the main script. +

+
+ ); +} diff --git a/frontend/src/common/hooks/useClickOutsideWatcher.ts b/frontend/src/common/hooks/useClickOutsideWatcher.ts index 88a5a23585..14252927fe 100644 --- a/frontend/src/common/hooks/useClickOutsideWatcher.ts +++ b/frontend/src/common/hooks/useClickOutsideWatcher.ts @@ -1,25 +1,37 @@ -import { RefObject, useEffect } from 'react'; +import { RefObject, useEffect, useRef } from 'react'; +import { Rect } from 'react-konva'; -const useClickOutsideWatcher = ( - ref: RefObject, - callback: () => void, - req = true -) => { +const watchers: { + ref: RefObject; + enable: boolean; + callback: () => void; +}[] = []; + +const useClickOutsideWatcher = () => { useEffect(() => { function handleClickOutside(e: MouseEvent) { - if (ref.current && !ref.current.contains(e.target as Node)) { - callback(); - } - } - if (req) { - document.addEventListener('mousedown', handleClickOutside); + watchers.forEach(({ ref, enable, callback }) => { + if (enable && ref.current && !ref.current.contains(e.target as Node)) { + console.log('callback'); + callback(); + } + }); } + document.addEventListener('mousedown', handleClickOutside); return () => { - if (req) { - document.removeEventListener('mousedown', handleClickOutside); - } + document.removeEventListener('mousedown', handleClickOutside); }; - }, [ref, req, callback]); + }, []); + + return { + addWatcher: (watcher: { + ref: RefObject; + callback: () => void; + enable: boolean; + }) => { + watchers.push(watcher); + }, + }; }; export default useClickOutsideWatcher; diff --git a/frontend/src/common/hooks/useImageUploader.ts b/frontend/src/common/hooks/useImageUploader.ts new file mode 100644 index 0000000000..10c81c4dfd --- /dev/null +++ b/frontend/src/common/hooks/useImageUploader.ts @@ -0,0 +1,14 @@ +let openFunction: () => void; + +const useImageUploader = () => { + return { + setOpenUploader: (open?: () => void) => { + if (open) { + openFunction = open; + } + }, + openUploader: openFunction, + }; +}; + +export default useImageUploader; diff --git a/frontend/src/common/icons/TrainingIcon.tsx b/frontend/src/common/icons/TrainingIcon.tsx new file mode 100644 index 0000000000..a6bf178aab --- /dev/null +++ b/frontend/src/common/icons/TrainingIcon.tsx @@ -0,0 +1,16 @@ +import { createIcon } from '@chakra-ui/react'; + +const TrainingIcon = createIcon({ + displayName: 'TrainingIcon', + viewBox: '0 0 3544 3544', + path: ( + + ), +}); + +export default TrainingIcon; diff --git a/frontend/src/common/icons/UnifiedCanvas.afdesign b/frontend/src/common/icons/UnifiedCanvas.afdesign new file mode 100644 index 0000000000..d4f7b149ce Binary files /dev/null and b/frontend/src/common/icons/UnifiedCanvas.afdesign differ diff --git a/frontend/src/common/icons/UnifiedCanvasIcon.tsx b/frontend/src/common/icons/UnifiedCanvasIcon.tsx new file mode 100644 index 0000000000..daa8ecf8a9 --- /dev/null +++ b/frontend/src/common/icons/UnifiedCanvasIcon.tsx @@ -0,0 +1,16 @@ +import { createIcon } from '@chakra-ui/react'; + +const UnifiedCanvasIcon = createIcon({ + displayName: 'UnifiedCanvasIcon', + viewBox: '0 0 3544 3544', + path: ( + + ), +}); + +export default UnifiedCanvasIcon; diff --git a/frontend/src/common/icons/design_files/Training.afdesign b/frontend/src/common/icons/design_files/Training.afdesign new file mode 100644 index 0000000000..4d1a39d738 Binary files /dev/null and b/frontend/src/common/icons/design_files/Training.afdesign differ diff --git a/frontend/src/common/icons/design_files/Training.svg b/frontend/src/common/icons/design_files/Training.svg new file mode 100644 index 0000000000..d8e2df0e0a --- /dev/null +++ b/frontend/src/common/icons/design_files/Training.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/frontend/src/common/icons/design_files/UnifiedCanvas.afdesign b/frontend/src/common/icons/design_files/UnifiedCanvas.afdesign new file mode 100644 index 0000000000..4248d3a41d Binary files /dev/null and b/frontend/src/common/icons/design_files/UnifiedCanvas.afdesign differ diff --git a/frontend/src/common/icons/design_files/UnifiedCanvas.svg b/frontend/src/common/icons/design_files/UnifiedCanvas.svg new file mode 100644 index 0000000000..fe9a9b800e --- /dev/null +++ b/frontend/src/common/icons/design_files/UnifiedCanvas.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/src/common/util/openBase64ImageInTab.ts b/frontend/src/common/util/openBase64ImageInTab.ts new file mode 100644 index 0000000000..0e18ccb45f --- /dev/null +++ b/frontend/src/common/util/openBase64ImageInTab.ts @@ -0,0 +1,21 @@ +type Base64AndCaption = { + base64: string; + caption: string; +}; + +const openBase64ImageInTab = (images: Base64AndCaption[]) => { + const w = window.open(''); + if (!w) return; + + images.forEach((i) => { + const image = new Image(); + image.src = i.base64; + + w.document.write(i.caption); + w.document.write('
'); + w.document.write(image.outerHTML); + w.document.write('

'); + }); +}; + +export default openBase64ImageInTab; diff --git a/frontend/src/common/util/parameterTranslation.ts b/frontend/src/common/util/parameterTranslation.ts index d1f52cd9ac..6542d30bc9 100644 --- a/frontend/src/common/util/parameterTranslation.ts +++ b/frontend/src/common/util/parameterTranslation.ts @@ -1,20 +1,24 @@ -import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from '../../app/constants'; -import { OptionsState } from '../../features/options/optionsSlice'; -import { SystemState } from '../../features/system/systemSlice'; +import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from 'app/constants'; +import { OptionsState } from 'features/options/store/optionsSlice'; +import { SystemState } from 'features/system/store/systemSlice'; import { stringToSeedWeightsArray } from './seedWeightPairs'; import randomInt from './randomInt'; -import { InvokeTabName } from '../../features/tabs/InvokeTabs'; -import { InpaintingState } from '../../features/tabs/Inpainting/inpaintingSlice'; -import generateMask from '../../features/tabs/Inpainting/util/generateMask'; +import { InvokeTabName } from 'features/tabs/components/InvokeTabs'; +import { + CanvasState, + isCanvasMaskLine, +} from 'features/canvas/store/canvasTypes'; +import generateMask from 'features/canvas/util/generateMask'; +import openBase64ImageInTab from './openBase64ImageInTab'; +import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; export type FrontendToBackendParametersConfig = { generationMode: InvokeTabName; optionsState: OptionsState; - inpaintingState: InpaintingState; + canvasState: CanvasState; systemState: SystemState; imageToProcessUrl?: string; - maskImageElement?: HTMLImageElement; }; /** @@ -24,51 +28,60 @@ export type FrontendToBackendParametersConfig = { export const frontendToBackendParameters = ( config: FrontendToBackendParametersConfig ): { [key: string]: any } => { + const canvasBaseLayer = getCanvasBaseLayer(); + const { generationMode, optionsState, - inpaintingState, + canvasState, systemState, imageToProcessUrl, - maskImageElement, } = config; const { - prompt, - iterations, - steps, cfgScale, - threshold, - perlin, + codeformerFidelity, + facetoolStrength, + facetoolType, height, - width, - sampler, - seed, - seamless, hiresFix, img2imgStrength, + infillMethod, initialImage, + iterations, + perlin, + prompt, + sampler, + seamBlur, + seamless, + seamSize, + seamSteps, + seamStrength, + seed, + seedWeights, shouldFitToWidthHeight, shouldGenerateVariations, - variationAmount, - seedWeights, + shouldRandomizeSeed, shouldRunESRGAN, + shouldRunFacetool, + steps, + threshold, + tileSize, upscalingLevel, upscalingStrength, - shouldRunFacetool, - facetoolStrength, - codeformerFidelity, - facetoolType, - shouldRandomizeSeed, + variationAmount, + width, } = optionsState; - const { shouldDisplayInProgressType, saveIntermediatesInterval } = - systemState; + const { + shouldDisplayInProgressType, + saveIntermediatesInterval, + enableImageDebugging, + } = systemState; const generationParameters: { [k: string]: any } = { prompt, - iterations: - shouldRandomizeSeed || shouldGenerateVariations ? iterations : 1, + iterations, steps, cfg_scale: cfgScale, threshold, @@ -80,8 +93,13 @@ export const frontendToBackendParameters = ( progress_images: shouldDisplayInProgressType === 'full-res', progress_latents: shouldDisplayInProgressType === 'latents', save_intermediates: saveIntermediatesInterval, + generation_mode: generationMode, + init_mask: '', }; + let esrganParameters: false | { [k: string]: any } = false; + let facetoolParameters: false | { [k: string]: any } = false; + generationParameters.seed = shouldRandomizeSeed ? randomInt(NUMPY_RAND_MIN, NUMPY_RAND_MAX) : seed; @@ -90,6 +108,23 @@ export const frontendToBackendParameters = ( if (['txt2img', 'img2img'].includes(generationMode)) { generationParameters.seamless = seamless; generationParameters.hires_fix = hiresFix; + + if (shouldRunESRGAN) { + esrganParameters = { + level: upscalingLevel, + strength: upscalingStrength, + }; + } + + if (shouldRunFacetool) { + facetoolParameters = { + type: facetoolType, + strength: facetoolStrength, + }; + if (facetoolType === 'codeformer') { + facetoolParameters.codeformer_fidelity = codeformerFidelity; + } + } } // img2img exclusive parameters @@ -101,35 +136,38 @@ export const frontendToBackendParameters = ( } // inpainting exclusive parameters - if (generationMode === 'inpainting' && maskImageElement) { + if (generationMode === 'unifiedCanvas' && canvasBaseLayer) { const { - lines, - boundingBoxCoordinate, + layerState: { objects }, + boundingBoxCoordinates, boundingBoxDimensions, inpaintReplace, shouldUseInpaintReplace, - } = inpaintingState; + stageScale, + isMaskEnabled, + shouldPreserveMaskedArea, + boundingBoxScaleMethod: boundingBoxScale, + scaledBoundingBoxDimensions, + } = canvasState; const boundingBox = { - ...boundingBoxCoordinate, + ...boundingBoxCoordinates, ...boundingBoxDimensions, }; - generationParameters.init_img = imageToProcessUrl; - generationParameters.strength = img2imgStrength; - generationParameters.fit = false; - - const { maskDataURL, isMaskEmpty } = generateMask( - maskImageElement, - lines, + const maskDataURL = generateMask( + isMaskEnabled ? objects.filter(isCanvasMaskLine) : [], boundingBox ); - generationParameters.is_mask_empty = isMaskEmpty; + generationParameters.init_mask = maskDataURL; - generationParameters.init_mask = maskDataURL.split( - 'data:image/png;base64,' - )[1]; + generationParameters.fit = false; + + generationParameters.init_img = imageToProcessUrl; + generationParameters.strength = img2imgStrength; + + generationParameters.invert_mask = shouldPreserveMaskedArea; if (shouldUseInpaintReplace) { generationParameters.inpaint_replace = inpaintReplace; @@ -137,8 +175,47 @@ export const frontendToBackendParameters = ( generationParameters.bounding_box = boundingBox; - // TODO: The server metadata generation needs to be changed to fix this. + const tempScale = canvasBaseLayer.scale(); + + canvasBaseLayer.scale({ + x: 1 / stageScale, + y: 1 / stageScale, + }); + + const absPos = canvasBaseLayer.getAbsolutePosition(); + + const imageDataURL = canvasBaseLayer.toDataURL({ + x: boundingBox.x + absPos.x, + y: boundingBox.y + absPos.y, + width: boundingBox.width, + height: boundingBox.height, + }); + + if (enableImageDebugging) { + openBase64ImageInTab([ + { base64: maskDataURL, caption: 'mask sent as init_mask' }, + { base64: imageDataURL, caption: 'image sent as init_img' }, + ]); + } + + canvasBaseLayer.scale(tempScale); + + generationParameters.init_img = imageDataURL; + generationParameters.progress_images = false; + + if (boundingBoxScale !== 'none') { + generationParameters.inpaint_width = scaledBoundingBoxDimensions.width; + generationParameters.inpaint_height = scaledBoundingBoxDimensions.height; + } + + generationParameters.seam_size = seamSize; + generationParameters.seam_blur = seamBlur; + generationParameters.seam_strength = seamStrength; + generationParameters.seam_steps = seamSteps; + generationParameters.tile_size = tileSize; + generationParameters.infill_method = infillMethod; + generationParameters.force_outpaint = false; } if (shouldGenerateVariations) { @@ -151,24 +228,8 @@ export const frontendToBackendParameters = ( generationParameters.variation_amount = 0; } - let esrganParameters: false | { [k: string]: any } = false; - let facetoolParameters: false | { [k: string]: any } = false; - - if (shouldRunESRGAN) { - esrganParameters = { - level: upscalingLevel, - strength: upscalingStrength, - }; - } - - if (shouldRunFacetool) { - facetoolParameters = { - type: facetoolType, - strength: facetoolStrength, - }; - if (facetoolType === 'codeformer') { - facetoolParameters.codeformer_fidelity = codeformerFidelity; - } + if (enableImageDebugging) { + generationParameters.enable_image_debugging = enableImageDebugging; } return { diff --git a/frontend/src/common/util/promptToString.ts b/frontend/src/common/util/promptToString.ts index d84a24acf8..ef1e7796e6 100644 --- a/frontend/src/common/util/promptToString.ts +++ b/frontend/src/common/util/promptToString.ts @@ -1,4 +1,4 @@ -import * as InvokeAI from '../../app/invokeai'; +import * as InvokeAI from 'app/invokeai'; const promptToString = (prompt: InvokeAI.Prompt): string => { if (prompt.length === 1) { diff --git a/frontend/src/common/util/seedWeightPairs.ts b/frontend/src/common/util/seedWeightPairs.ts index 9c024e1e1a..ec64b2742d 100644 --- a/frontend/src/common/util/seedWeightPairs.ts +++ b/frontend/src/common/util/seedWeightPairs.ts @@ -1,4 +1,4 @@ -import * as InvokeAI from '../../app/invokeai'; +import * as InvokeAI from 'app/invokeai'; export const stringToSeedWeights = ( string: string diff --git a/frontend/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx b/frontend/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx new file mode 100644 index 0000000000..391680a49a --- /dev/null +++ b/frontend/src/features/canvas/components/ClearCanvasHistoryButtonModal.tsx @@ -0,0 +1,32 @@ +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIAlertDialog from 'common/components/IAIAlertDialog'; +import IAIButton from 'common/components/IAIButton'; +import { clearCanvasHistory } from 'features/canvas/store/canvasSlice'; +import { FaTrash } from 'react-icons/fa'; +import { isStagingSelector } from '../store/canvasSelectors'; + +const ClearCanvasHistoryButtonModal = () => { + const isStaging = useAppSelector(isStagingSelector); + const dispatch = useAppDispatch(); + + return ( + dispatch(clearCanvasHistory())} + acceptButtonText={'Clear History'} + triggerComponent={ + } isDisabled={isStaging}> + Clear Canvas History + + } + > +

+ Clearing the canvas history leaves your current canvas intact, but + irreversibly clears the undo and redo history. +

+
+

Are you sure you want to clear the canvas history?

+
+ ); +}; +export default ClearCanvasHistoryButtonModal; diff --git a/frontend/src/features/canvas/components/IAICanvas.tsx b/frontend/src/features/canvas/components/IAICanvas.tsx new file mode 100644 index 0000000000..8c221ef70f --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvas.tsx @@ -0,0 +1,207 @@ +import { useCallback, useRef } from 'react'; +import Konva from 'konva'; +import { Layer, Stage } from 'react-konva'; +import { useAppSelector } from 'app/store'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import IAICanvasMaskLines from './IAICanvasMaskLines'; +import IAICanvasToolPreview from './IAICanvasToolPreview'; +import { Vector2d } from 'konva/lib/types'; +import IAICanvasBoundingBox from './IAICanvasToolbar/IAICanvasBoundingBox'; +import useCanvasHotkeys from '../hooks/useCanvasHotkeys'; +import _ from 'lodash'; +import { createSelector } from '@reduxjs/toolkit'; +import IAICanvasMaskCompositer from './IAICanvasMaskCompositer'; +import useCanvasWheel from '../hooks/useCanvasZoom'; +import useCanvasMouseDown from '../hooks/useCanvasMouseDown'; +import useCanvasMouseUp from '../hooks/useCanvasMouseUp'; +import useCanvasMouseMove from '../hooks/useCanvasMouseMove'; +import useCanvasMouseOut from '../hooks/useCanvasMouseOut'; +import useCanvasDragMove from '../hooks/useCanvasDragMove'; +import IAICanvasObjectRenderer from './IAICanvasObjectRenderer'; +import IAICanvasGrid from './IAICanvasGrid'; +import IAICanvasIntermediateImage from './IAICanvasIntermediateImage'; +import IAICanvasStatusText from './IAICanvasStatusText'; +import IAICanvasStagingArea from './IAICanvasStagingArea'; +import IAICanvasStagingAreaToolbar from './IAICanvasStagingAreaToolbar'; +import { + setCanvasBaseLayer, + setCanvasStage, +} from '../util/konvaInstanceProvider'; +import { KonvaEventObject } from 'konva/lib/Node'; +import IAICanvasBoundingBoxOverlay from './IAICanvasBoundingBoxOverlay'; + +const selector = createSelector( + [canvasSelector, isStagingSelector], + (canvas, isStaging) => { + const { + isMaskEnabled, + stageScale, + shouldShowBoundingBox, + isTransformingBoundingBox, + isMouseOverBoundingBox, + isMovingBoundingBox, + stageDimensions, + stageCoordinates, + tool, + isMovingStage, + shouldShowIntermediates, + shouldShowGrid, + shouldRestrictStrokesToBox, + } = canvas; + + let stageCursor: string | undefined = 'none'; + + if (tool === 'move' || isStaging) { + if (isMovingStage) { + stageCursor = 'grabbing'; + } else { + stageCursor = 'grab'; + } + } else if (isTransformingBoundingBox) { + stageCursor = undefined; + } else if (shouldRestrictStrokesToBox && !isMouseOverBoundingBox) { + stageCursor = 'default'; + } + + return { + isMaskEnabled, + isModifyingBoundingBox: isTransformingBoundingBox || isMovingBoundingBox, + shouldShowBoundingBox, + shouldShowGrid, + stageCoordinates, + stageCursor, + stageDimensions, + stageScale, + tool, + isStaging, + shouldShowIntermediates, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvas = () => { + const { + isMaskEnabled, + isModifyingBoundingBox, + shouldShowBoundingBox, + shouldShowGrid, + stageCoordinates, + stageCursor, + stageDimensions, + stageScale, + tool, + isStaging, + shouldShowIntermediates, + } = useAppSelector(selector); + useCanvasHotkeys(); + + const stageRef = useRef(null); + const canvasBaseLayerRef = useRef(null); + + const canvasStageRefCallback = useCallback((el: Konva.Stage) => { + setCanvasStage(el as Konva.Stage); + stageRef.current = el; + }, []); + + const canvasBaseLayerRefCallback = useCallback((el: Konva.Layer) => { + setCanvasBaseLayer(el as Konva.Layer); + canvasBaseLayerRef.current = el; + }, []); + + const lastCursorPositionRef = useRef({ x: 0, y: 0 }); + + // Use refs for values that do not affect rendering, other values in redux + const didMouseMoveRef = useRef(false); + + const handleWheel = useCanvasWheel(stageRef); + const handleMouseDown = useCanvasMouseDown(stageRef); + const handleMouseUp = useCanvasMouseUp(stageRef, didMouseMoveRef); + const handleMouseMove = useCanvasMouseMove( + stageRef, + didMouseMoveRef, + lastCursorPositionRef + ); + const handleMouseOut = useCanvasMouseOut(); + const { handleDragStart, handleDragMove, handleDragEnd } = + useCanvasDragMove(); + + return ( +
+
+ ) => + e.evt.preventDefault() + } + onWheel={handleWheel} + draggable={(tool === 'move' || isStaging) && !isModifyingBoundingBox} + > + + + + + + + + + + + + + + + + {!isStaging && ( + + )} + + {shouldShowIntermediates && } + + + + + +
+
+ ); +}; + +export default IAICanvas; diff --git a/frontend/src/features/canvas/components/IAICanvasBoundingBoxOverlay.tsx b/frontend/src/features/canvas/components/IAICanvasBoundingBoxOverlay.tsx new file mode 100644 index 0000000000..2b2237df58 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasBoundingBoxOverlay.tsx @@ -0,0 +1,69 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import _ from 'lodash'; +import { Group, Rect } from 'react-konva'; +import { canvasSelector } from '../store/canvasSelectors'; + +const selector = createSelector( + canvasSelector, + (canvas) => { + const { + boundingBoxCoordinates, + boundingBoxDimensions, + stageDimensions, + stageScale, + shouldDarkenOutsideBoundingBox, + stageCoordinates, + } = canvas; + + return { + boundingBoxCoordinates, + boundingBoxDimensions, + shouldDarkenOutsideBoundingBox, + stageCoordinates, + stageDimensions, + stageScale, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); +const IAICanvasBoundingBoxOverlay = () => { + const { + boundingBoxCoordinates, + boundingBoxDimensions, + shouldDarkenOutsideBoundingBox, + stageCoordinates, + stageDimensions, + stageScale, + } = useAppSelector(selector); + + return ( + + + + + ); +}; + +export default IAICanvasBoundingBoxOverlay; diff --git a/frontend/src/features/canvas/components/IAICanvasGrid.tsx b/frontend/src/features/canvas/components/IAICanvasGrid.tsx new file mode 100644 index 0000000000..7495f0ee7d --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasGrid.tsx @@ -0,0 +1,115 @@ +// Grid drawing adapted from https://longviewcoder.com/2021/12/08/konva-a-better-grid/ + +import { useColorMode } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import _ from 'lodash'; +import { ReactNode, useCallback, useLayoutEffect, useState } from 'react'; +import { Group, Line as KonvaLine } from 'react-konva'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { stageScale, stageCoordinates, stageDimensions } = canvas; + return { stageScale, stageCoordinates, stageDimensions }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const gridLinesColor = { + dark: 'rgba(255, 255, 255, 0.2)', + green: 'rgba(255, 255, 255, 0.2)', + light: 'rgba(0, 0, 0, 0.2)', +}; + +const IAICanvasGrid = () => { + const { colorMode } = useColorMode(); + const { stageScale, stageCoordinates, stageDimensions } = + useAppSelector(selector); + const [gridLines, setGridLines] = useState([]); + + const unscale = useCallback( + (value: number) => { + return value / stageScale; + }, + [stageScale] + ); + + useLayoutEffect(() => { + const gridLineColor = gridLinesColor[colorMode]; + + const { width, height } = stageDimensions; + const { x, y } = stageCoordinates; + + const stageRect = { + x1: 0, + y1: 0, + x2: width, + y2: height, + offset: { + x: unscale(x), + y: unscale(y), + }, + }; + + const gridOffset = { + x: Math.ceil(unscale(x) / 64) * 64, + y: Math.ceil(unscale(y) / 64) * 64, + }; + + const gridRect = { + x1: -gridOffset.x, + y1: -gridOffset.y, + x2: unscale(width) - gridOffset.x + 64, + y2: unscale(height) - gridOffset.y + 64, + }; + + const gridFullRect = { + x1: Math.min(stageRect.x1, gridRect.x1), + y1: Math.min(stageRect.y1, gridRect.y1), + x2: Math.max(stageRect.x2, gridRect.x2), + y2: Math.max(stageRect.y2, gridRect.y2), + }; + + const fullRect = gridFullRect; + + const // find the x & y size of the grid + xSize = fullRect.x2 - fullRect.x1, + ySize = fullRect.y2 - fullRect.y1, + // compute the number of steps required on each axis. + xSteps = Math.round(xSize / 64) + 1, + ySteps = Math.round(ySize / 64) + 1; + + const xLines = _.range(0, xSteps).map((i) => ( + + )); + const yLines = _.range(0, ySteps).map((i) => ( + + )); + + setGridLines(xLines.concat(yLines)); + }, [stageScale, stageCoordinates, stageDimensions, colorMode, unscale]); + + return {gridLines}; +}; + +export default IAICanvasGrid; diff --git a/frontend/src/features/canvas/components/IAICanvasImage.tsx b/frontend/src/features/canvas/components/IAICanvasImage.tsx new file mode 100644 index 0000000000..8229f8552f --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasImage.tsx @@ -0,0 +1,15 @@ +import { Image } from 'react-konva'; +import useImage from 'use-image'; + +type IAICanvasImageProps = { + url: string; + x: number; + y: number; +}; +const IAICanvasImage = (props: IAICanvasImageProps) => { + const { url, x, y } = props; + const [image] = useImage(url); + return ; +}; + +export default IAICanvasImage; diff --git a/frontend/src/features/canvas/components/IAICanvasIntermediateImage.tsx b/frontend/src/features/canvas/components/IAICanvasIntermediateImage.tsx new file mode 100644 index 0000000000..e6e61f4ccd --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasIntermediateImage.tsx @@ -0,0 +1,59 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { RootState, useAppSelector } from 'app/store'; +import { GalleryState } from 'features/gallery/store/gallerySlice'; +import { ImageConfig } from 'konva/lib/shapes/Image'; +import _ from 'lodash'; +import { useEffect, useState } from 'react'; +import { Image as KonvaImage } from 'react-konva'; + +const selector = createSelector( + [(state: RootState) => state.gallery], + (gallery: GalleryState) => { + return gallery.intermediateImage ? gallery.intermediateImage : null; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +type Props = Omit; + +const IAICanvasIntermediateImage = (props: Props) => { + const { ...rest } = props; + const intermediateImage = useAppSelector(selector); + + const [loadedImageElement, setLoadedImageElement] = + useState(null); + + useEffect(() => { + if (!intermediateImage) return; + const tempImage = new Image(); + + tempImage.onload = () => { + setLoadedImageElement(tempImage); + }; + tempImage.src = intermediateImage.url; + }, [intermediateImage]); + + if (!intermediateImage?.boundingBox) return null; + + const { + boundingBox: { x, y, width, height }, + } = intermediateImage; + + return loadedImageElement ? ( + + ) : null; +}; + +export default IAICanvasIntermediateImage; diff --git a/frontend/src/features/canvas/components/IAICanvasMaskCompositer.tsx b/frontend/src/features/canvas/components/IAICanvasMaskCompositer.tsx new file mode 100644 index 0000000000..5da87dc063 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasMaskCompositer.tsx @@ -0,0 +1,175 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import { RectConfig } from 'konva/lib/shapes/Rect'; +import { Rect } from 'react-konva'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +import { rgbaColorToString } from 'features/canvas/util/colorToString'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import Konva from 'konva'; +import { isNumber } from 'lodash'; + +export const canvasMaskCompositerSelector = createSelector( + canvasSelector, + (canvas) => { + const { maskColor, stageCoordinates, stageDimensions, stageScale } = canvas; + + return { + stageCoordinates, + stageDimensions, + stageScale, + maskColorString: rgbaColorToString(maskColor), + }; + } +); + +type IAICanvasMaskCompositerProps = RectConfig; + +const getColoredSVG = (color: string) => { + return `data:image/svg+xml;utf8, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.replaceAll('black', color); +}; + +const IAICanvasMaskCompositer = (props: IAICanvasMaskCompositerProps) => { + const { ...rest } = props; + + const { maskColorString, stageCoordinates, stageDimensions, stageScale } = + useAppSelector(canvasMaskCompositerSelector); + + const [fillPatternImage, setFillPatternImage] = + useState(null); + + const [offset, setOffset] = useState(0); + + const rectRef = useRef(null); + const incrementOffset = useCallback(() => { + setOffset(offset + 1); + setTimeout(incrementOffset, 500); + }, [offset]); + + useEffect(() => { + if (fillPatternImage) return; + const image = new Image(); + + image.onload = () => { + setFillPatternImage(image); + }; + image.src = getColoredSVG(maskColorString); + }, [fillPatternImage, maskColorString]); + + useEffect(() => { + if (!fillPatternImage) return; + fillPatternImage.src = getColoredSVG(maskColorString); + }, [fillPatternImage, maskColorString]); + + useEffect(() => { + const timer = setInterval(() => setOffset((i) => (i + 1) % 5), 50); + return () => clearInterval(timer); + }, []); + + if ( + !fillPatternImage || + !isNumber(stageCoordinates.x) || + !isNumber(stageCoordinates.y) || + !isNumber(stageScale) || + !isNumber(stageDimensions.width) || + !isNumber(stageDimensions.height) + ) + return null; + + return ( + + ); +}; + +export default IAICanvasMaskCompositer; diff --git a/frontend/src/features/canvas/components/IAICanvasMaskLines.tsx b/frontend/src/features/canvas/components/IAICanvasMaskLines.tsx new file mode 100644 index 0000000000..e980c1a2e3 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasMaskLines.tsx @@ -0,0 +1,54 @@ +import { GroupConfig } from 'konva/lib/Group'; +import { Group, Line } from 'react-konva'; +import { useAppSelector } from 'app/store'; +import { createSelector } from '@reduxjs/toolkit'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { isCanvasMaskLine } from '../store/canvasTypes'; +import _ from 'lodash'; + +export const canvasLinesSelector = createSelector( + [canvasSelector], + (canvas) => { + return { objects: canvas.layerState.objects }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +type InpaintingCanvasLinesProps = GroupConfig; + +/** + * Draws the lines which comprise the mask. + * + * Uses globalCompositeOperation to handle the brush and eraser tools. + */ +const IAICanvasLines = (props: InpaintingCanvasLinesProps) => { + const { ...rest } = props; + const { objects } = useAppSelector(canvasLinesSelector); + + return ( + + {objects.filter(isCanvasMaskLine).map((line, i) => ( + 0 + strokeWidth={line.strokeWidth * 2} + tension={0} + lineCap="round" + lineJoin="round" + shadowForStrokeEnabled={false} + listening={false} + globalCompositeOperation={ + line.tool === 'brush' ? 'source-over' : 'destination-out' + } + /> + ))} + + ); +}; + +export default IAICanvasLines; diff --git a/frontend/src/features/canvas/components/IAICanvasObjectRenderer.tsx b/frontend/src/features/canvas/components/IAICanvasObjectRenderer.tsx new file mode 100644 index 0000000000..3e3233d599 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasObjectRenderer.tsx @@ -0,0 +1,105 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import _ from 'lodash'; +import { Group, Line, Rect } from 'react-konva'; +import { + isCanvasBaseImage, + isCanvasBaseLine, + isCanvasEraseRect, + isCanvasFillRect, +} from '../store/canvasTypes'; +import IAICanvasImage from './IAICanvasImage'; +import { rgbaColorToString } from 'features/canvas/util/colorToString'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { + layerState: { objects }, + } = canvas; + return { + objects, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasObjectRenderer = () => { + const { objects } = useAppSelector(selector); + + if (!objects) return null; + + return ( + + {objects.map((obj, i) => { + if (isCanvasBaseImage(obj)) { + return ( + + ); + } else if (isCanvasBaseLine(obj)) { + const line = ( + 0 + strokeWidth={obj.strokeWidth * 2} + tension={0} + lineCap="round" + lineJoin="round" + shadowForStrokeEnabled={false} + listening={false} + globalCompositeOperation={ + obj.tool === 'brush' ? 'source-over' : 'destination-out' + } + /> + ); + if (obj.clip) { + return ( + + {line} + + ); + } else { + return line; + } + } else if (isCanvasFillRect(obj)) { + return ( + + ); + } else if (isCanvasEraseRect(obj)) { + return ( + + ); + } + })} + + ); +}; + +export default IAICanvasObjectRenderer; diff --git a/frontend/src/features/canvas/components/IAICanvasResizer.tsx b/frontend/src/features/canvas/components/IAICanvasResizer.tsx new file mode 100644 index 0000000000..cdeb981e51 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasResizer.tsx @@ -0,0 +1,79 @@ +import { Spinner } from '@chakra-ui/react'; +import { useLayoutEffect, useRef } from 'react'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { + resizeAndScaleCanvas, + resizeCanvas, + setCanvasContainerDimensions, + setDoesCanvasNeedScaling, +} from 'features/canvas/store/canvasSlice'; +import { createSelector } from '@reduxjs/toolkit'; +import { + canvasSelector, + initialCanvasImageSelector, +} from 'features/canvas/store/canvasSelectors'; + +const canvasResizerSelector = createSelector( + canvasSelector, + initialCanvasImageSelector, + activeTabNameSelector, + (canvas, initialCanvasImage, activeTabName) => { + const { doesCanvasNeedScaling, isCanvasInitialized } = canvas; + return { + doesCanvasNeedScaling, + activeTabName, + initialCanvasImage, + isCanvasInitialized, + }; + } +); + +const IAICanvasResizer = () => { + const dispatch = useAppDispatch(); + const { + doesCanvasNeedScaling, + activeTabName, + initialCanvasImage, + isCanvasInitialized, + } = useAppSelector(canvasResizerSelector); + + const ref = useRef(null); + + useLayoutEffect(() => { + window.setTimeout(() => { + if (!ref.current) return; + + const { clientWidth, clientHeight } = ref.current; + + dispatch( + setCanvasContainerDimensions({ + width: clientWidth, + height: clientHeight, + }) + ); + + if (!isCanvasInitialized) { + dispatch(resizeAndScaleCanvas()); + } else { + dispatch(resizeCanvas()); + } + + dispatch(setDoesCanvasNeedScaling(false)); + }, 0); + }, [ + dispatch, + initialCanvasImage, + doesCanvasNeedScaling, + activeTabName, + isCanvasInitialized, + ]); + + return ( +
+ +
+ ); +}; + +export default IAICanvasResizer; diff --git a/frontend/src/features/canvas/components/IAICanvasStagingArea.tsx b/frontend/src/features/canvas/components/IAICanvasStagingArea.tsx new file mode 100644 index 0000000000..0f779f17a8 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasStagingArea.tsx @@ -0,0 +1,88 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import { GroupConfig } from 'konva/lib/Group'; +import _ from 'lodash'; +import { Group, Rect } from 'react-konva'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import IAICanvasImage from './IAICanvasImage'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { + layerState: { + stagingArea: { images, selectedImageIndex }, + }, + shouldShowStagingImage, + shouldShowStagingOutline, + boundingBoxCoordinates: { x, y }, + boundingBoxDimensions: { width, height }, + } = canvas; + + return { + currentStagingAreaImage: + images.length > 0 ? images[selectedImageIndex] : undefined, + isOnFirstImage: selectedImageIndex === 0, + isOnLastImage: selectedImageIndex === images.length - 1, + shouldShowStagingImage, + shouldShowStagingOutline, + x, + y, + width, + height, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +type Props = GroupConfig; + +const IAICanvasStagingArea = (props: Props) => { + const { ...rest } = props; + const { + currentStagingAreaImage, + shouldShowStagingImage, + shouldShowStagingOutline, + x, + y, + width, + height, + } = useAppSelector(selector); + + return ( + + {shouldShowStagingImage && currentStagingAreaImage && ( + + )} + {shouldShowStagingOutline && ( + + + + + )} + + ); +}; + +export default IAICanvasStagingArea; diff --git a/frontend/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx b/frontend/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx new file mode 100644 index 0000000000..89825af7e3 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx @@ -0,0 +1,181 @@ +import { ButtonGroup, Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import _ from 'lodash'; +import { useCallback } from 'react'; +import { + FaArrowLeft, + FaArrowRight, + FaCheck, + FaEye, + FaEyeSlash, + FaPlus, + FaSave, +} from 'react-icons/fa'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { + commitStagingAreaImage, + discardStagedImages, + nextStagingAreaImage, + prevStagingAreaImage, + setShouldShowStagingImage, + setShouldShowStagingOutline, +} from 'features/canvas/store/canvasSlice'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { saveStagingAreaImageToGallery } from 'app/socketio/actions'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { + layerState: { + stagingArea: { images, selectedImageIndex }, + }, + shouldShowStagingOutline, + shouldShowStagingImage, + } = canvas; + + return { + currentStagingAreaImage: + images.length > 0 ? images[selectedImageIndex] : undefined, + isOnFirstImage: selectedImageIndex === 0, + isOnLastImage: selectedImageIndex === images.length - 1, + shouldShowStagingImage, + shouldShowStagingOutline, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasStagingAreaToolbar = () => { + const dispatch = useAppDispatch(); + const { + isOnFirstImage, + isOnLastImage, + currentStagingAreaImage, + shouldShowStagingImage, + } = useAppSelector(selector); + + const handleMouseOver = useCallback(() => { + dispatch(setShouldShowStagingOutline(true)); + }, [dispatch]); + + const handleMouseOut = useCallback(() => { + dispatch(setShouldShowStagingOutline(false)); + }, [dispatch]); + + useHotkeys( + ['left'], + () => { + handlePrevImage(); + }, + { + enabled: () => true, + preventDefault: true, + } + ); + + useHotkeys( + ['right'], + () => { + handleNextImage(); + }, + { + enabled: () => true, + preventDefault: true, + } + ); + + useHotkeys( + ['enter'], + () => { + handleAccept(); + }, + { + enabled: () => true, + preventDefault: true, + } + ); + + const handlePrevImage = () => dispatch(prevStagingAreaImage()); + const handleNextImage = () => dispatch(nextStagingAreaImage()); + const handleAccept = () => dispatch(commitStagingAreaImage()); + + if (!currentStagingAreaImage) return null; + + return ( + + + } + onClick={handlePrevImage} + data-selected={true} + isDisabled={isOnFirstImage} + /> + } + onClick={handleNextImage} + data-selected={true} + isDisabled={isOnLastImage} + /> + } + onClick={handleAccept} + data-selected={true} + /> + : } + onClick={() => + dispatch(setShouldShowStagingImage(!shouldShowStagingImage)) + } + data-selected={true} + /> + } + onClick={() => + dispatch( + saveStagingAreaImageToGallery(currentStagingAreaImage.image.url) + ) + } + data-selected={true} + /> + } + onClick={() => dispatch(discardStagedImages())} + data-selected={true} + style={{ backgroundColor: 'var(--btn-delete-image)' }} + fontSize={20} + /> + + + ); +}; + +export default IAICanvasStagingAreaToolbar; diff --git a/frontend/src/features/canvas/components/IAICanvasStatusText.tsx b/frontend/src/features/canvas/components/IAICanvasStatusText.tsx new file mode 100644 index 0000000000..2263ea3d57 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasStatusText.tsx @@ -0,0 +1,116 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import _ from 'lodash'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import IAICanvasStatusTextCursorPos from './IAICanvasStatusText/IAICanvasStatusTextCursorPos'; +import roundToHundreth from '../util/roundToHundreth'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { + stageDimensions: { width: stageWidth, height: stageHeight }, + stageCoordinates: { x: stageX, y: stageY }, + boundingBoxDimensions: { width: boxWidth, height: boxHeight }, + scaledBoundingBoxDimensions: { + width: scaledBoxWidth, + height: scaledBoxHeight, + }, + boundingBoxCoordinates: { x: boxX, y: boxY }, + stageScale, + shouldShowCanvasDebugInfo, + layer, + boundingBoxScaleMethod, + } = canvas; + + let boundingBoxColor = 'inherit'; + + if ( + (boundingBoxScaleMethod === 'none' && + (boxWidth < 512 || boxHeight < 512)) || + (boundingBoxScaleMethod === 'manual' && + scaledBoxWidth * scaledBoxHeight < 512 * 512) + ) { + boundingBoxColor = 'var(--status-working-color)'; + } + + const activeLayerColor = + layer === 'mask' ? 'var(--status-working-color)' : 'inherit'; + + return { + activeLayerColor, + activeLayerString: layer.charAt(0).toUpperCase() + layer.slice(1), + boundingBoxColor, + boundingBoxCoordinatesString: `(${roundToHundreth( + boxX + )}, ${roundToHundreth(boxY)})`, + boundingBoxDimensionsString: `${boxWidth}×${boxHeight}`, + scaledBoundingBoxDimensionsString: `${scaledBoxWidth}×${scaledBoxHeight}`, + canvasCoordinatesString: `${roundToHundreth(stageX)}×${roundToHundreth( + stageY + )}`, + canvasDimensionsString: `${stageWidth}×${stageHeight}`, + canvasScaleString: Math.round(stageScale * 100), + shouldShowCanvasDebugInfo, + shouldShowBoundingBox: boundingBoxScaleMethod !== 'auto', + shouldShowScaledBoundingBox: boundingBoxScaleMethod !== 'none', + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasStatusText = () => { + const { + activeLayerColor, + activeLayerString, + boundingBoxColor, + boundingBoxCoordinatesString, + boundingBoxDimensionsString, + scaledBoundingBoxDimensionsString, + shouldShowScaledBoundingBox, + canvasCoordinatesString, + canvasDimensionsString, + canvasScaleString, + shouldShowCanvasDebugInfo, + shouldShowBoundingBox, + } = useAppSelector(selector); + + return ( +
+
{`Active Layer: ${activeLayerString}`}
+
{`Canvas Scale: ${canvasScaleString}%`}
+ {shouldShowBoundingBox && ( +
{`Bounding Box: ${boundingBoxDimensionsString}`}
+ )} + {shouldShowScaledBoundingBox && ( +
{`Scaled Bounding Box: ${scaledBoundingBoxDimensionsString}`}
+ )} + {shouldShowCanvasDebugInfo && ( + <> +
{`Bounding Box Position: ${boundingBoxCoordinatesString}`}
+
{`Canvas Dimensions: ${canvasDimensionsString}`}
+
{`Canvas Position: ${canvasCoordinatesString}`}
+ + + )} +
+ ); +}; + +export default IAICanvasStatusText; diff --git a/frontend/src/features/canvas/components/IAICanvasStatusText/IAICanvasStatusTextCursorPos.tsx b/frontend/src/features/canvas/components/IAICanvasStatusText/IAICanvasStatusTextCursorPos.tsx new file mode 100644 index 0000000000..de8e9c3941 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasStatusText/IAICanvasStatusTextCursorPos.tsx @@ -0,0 +1,34 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import React from 'react'; +import _ from 'lodash'; +import roundToHundreth from 'features/canvas/util/roundToHundreth'; + +const cursorPositionSelector = createSelector( + [canvasSelector], + (canvas) => { + const { cursorPosition } = canvas; + + const { cursorX, cursorY } = cursorPosition + ? { cursorX: cursorPosition.x, cursorY: cursorPosition.y } + : { cursorX: -1, cursorY: -1 }; + + return { + cursorCoordinatesString: `(${roundToHundreth(cursorX)}, ${roundToHundreth( + cursorY + )})`, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +export default function IAICanvasStatusTextCursorPos() { + const { cursorCoordinatesString } = useAppSelector(cursorPositionSelector); + + return
{`Cursor Position: ${cursorCoordinatesString}`}
; +} diff --git a/frontend/src/features/canvas/components/IAICanvasToolPreview.tsx b/frontend/src/features/canvas/components/IAICanvasToolPreview.tsx new file mode 100644 index 0000000000..12681d2173 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolPreview.tsx @@ -0,0 +1,208 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { GroupConfig } from 'konva/lib/Group'; +import _ from 'lodash'; +import { Circle, Group } from 'react-konva'; +import { useAppSelector } from 'app/store'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { rgbaColorToString } from 'features/canvas/util/colorToString'; +import { + COLOR_PICKER_SIZE, + COLOR_PICKER_STROKE_RADIUS, +} from '../util/constants'; + +const canvasBrushPreviewSelector = createSelector( + canvasSelector, + (canvas) => { + const { + cursorPosition, + brushSize, + colorPickerColor, + maskColor, + brushColor, + tool, + layer, + shouldShowBrush, + isMovingBoundingBox, + isTransformingBoundingBox, + stageScale, + stageDimensions, + boundingBoxCoordinates, + boundingBoxDimensions, + shouldRestrictStrokesToBox, + } = canvas; + + const clip = shouldRestrictStrokesToBox + ? { + clipX: boundingBoxCoordinates.x, + clipY: boundingBoxCoordinates.y, + clipWidth: boundingBoxDimensions.width, + clipHeight: boundingBoxDimensions.height, + } + : {}; + + // // big brain time; this is the *inverse* of the clip that is needed for shouldRestrictStrokesToBox + // // it took some fiddling to work out, so I am leaving it here in case it is needed for something else... + // const clipFunc = shouldRestrictStrokesToBox + // ? (ctx: SceneContext) => { + // console.log( + // stageCoordinates.x / stageScale, + // stageCoordinates.y / stageScale, + // stageDimensions.height / stageScale, + // stageDimensions.width / stageScale + // ); + // ctx.fillStyle = 'red'; + // ctx.rect( + // -stageCoordinates.x / stageScale, + // -stageCoordinates.y / stageScale, + // stageDimensions.width / stageScale, + // stageCoordinates.y / stageScale + boundingBoxCoordinates.y + // ); + // ctx.rect( + // -stageCoordinates.x / stageScale, + // boundingBoxCoordinates.y + boundingBoxDimensions.height, + // stageDimensions.width / stageScale, + // stageDimensions.height / stageScale + // ); + // ctx.rect( + // -stageCoordinates.x / stageScale, + // -stageCoordinates.y / stageScale, + // stageCoordinates.x / stageScale + boundingBoxCoordinates.x, + // stageDimensions.height / stageScale + // ); + // ctx.rect( + // boundingBoxCoordinates.x + boundingBoxDimensions.width, + // -stageCoordinates.y / stageScale, + // stageDimensions.width / stageScale - + // (boundingBoxCoordinates.x + boundingBoxDimensions.width), + // stageDimensions.height / stageScale + // ); + // } + // : undefined; + + return { + cursorPosition, + brushX: cursorPosition ? cursorPosition.x : stageDimensions.width / 2, + brushY: cursorPosition ? cursorPosition.y : stageDimensions.height / 2, + radius: brushSize / 2, + colorPickerOuterRadius: COLOR_PICKER_SIZE / stageScale, + colorPickerInnerRadius: + (COLOR_PICKER_SIZE - COLOR_PICKER_STROKE_RADIUS + 1) / stageScale, + maskColorString: rgbaColorToString({ ...maskColor, a: 0.5 }), + brushColorString: rgbaColorToString(brushColor), + colorPickerColorString: rgbaColorToString(colorPickerColor), + tool, + layer, + shouldShowBrush, + shouldDrawBrushPreview: + !( + isMovingBoundingBox || + isTransformingBoundingBox || + !cursorPosition + ) && shouldShowBrush, + strokeWidth: 1.5 / stageScale, + dotRadius: 1.5 / stageScale, + clip, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +/** + * Draws a black circle around the canvas brush preview. + */ +const IAICanvasToolPreview = (props: GroupConfig) => { + const { ...rest } = props; + const { + brushX, + brushY, + radius, + maskColorString, + tool, + layer, + shouldDrawBrushPreview, + dotRadius, + strokeWidth, + brushColorString, + colorPickerColorString, + colorPickerInnerRadius, + colorPickerOuterRadius, + clip, + } = useAppSelector(canvasBrushPreviewSelector); + + if (!shouldDrawBrushPreview) return null; + + return ( + + {tool === 'colorPicker' ? ( + <> + + + + ) : ( + <> + + + + + )} + + + + ); +}; + +export default IAICanvasToolPreview; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasBoundingBox.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasBoundingBox.tsx new file mode 100644 index 0000000000..48a45f2b59 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasBoundingBox.tsx @@ -0,0 +1,295 @@ +import { createSelector } from '@reduxjs/toolkit'; +import Konva from 'konva'; +import { KonvaEventObject } from 'konva/lib/Node'; +import { Vector2d } from 'konva/lib/types'; +import _ from 'lodash'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { Group, Rect, Transformer } from 'react-konva'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { + roundDownToMultiple, + roundToMultiple, +} from 'common/util/roundDownToMultiple'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { + setBoundingBoxCoordinates, + setBoundingBoxDimensions, + setIsMouseOverBoundingBox, + setIsMovingBoundingBox, + setIsTransformingBoundingBox, +} from 'features/canvas/store/canvasSlice'; +import { GroupConfig } from 'konva/lib/Group'; + +const boundingBoxPreviewSelector = createSelector( + canvasSelector, + (canvas) => { + const { + boundingBoxCoordinates, + boundingBoxDimensions, + stageScale, + isDrawing, + isTransformingBoundingBox, + isMovingBoundingBox, + tool, + shouldSnapToGrid, + } = canvas; + + return { + boundingBoxCoordinates, + boundingBoxDimensions, + isDrawing, + isMovingBoundingBox, + isTransformingBoundingBox, + stageScale, + shouldSnapToGrid, + tool, + hitStrokeWidth: 20 / stageScale, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +type IAICanvasBoundingBoxPreviewProps = GroupConfig; + +const IAICanvasBoundingBox = (props: IAICanvasBoundingBoxPreviewProps) => { + const { ...rest } = props; + + const dispatch = useAppDispatch(); + const { + boundingBoxCoordinates, + boundingBoxDimensions, + isDrawing, + isMovingBoundingBox, + isTransformingBoundingBox, + stageScale, + shouldSnapToGrid, + tool, + hitStrokeWidth, + } = useAppSelector(boundingBoxPreviewSelector); + + const transformerRef = useRef(null); + const shapeRef = useRef(null); + + const [isMouseOverBoundingBoxOutline, setIsMouseOverBoundingBoxOutline] = + useState(false); + + useEffect(() => { + if (!transformerRef.current || !shapeRef.current) return; + transformerRef.current.nodes([shapeRef.current]); + transformerRef.current.getLayer()?.batchDraw(); + }, []); + + const scaledStep = 64 * stageScale; + + const handleOnDragMove = useCallback( + (e: KonvaEventObject) => { + if (!shouldSnapToGrid) { + dispatch( + setBoundingBoxCoordinates({ + x: Math.floor(e.target.x()), + y: Math.floor(e.target.y()), + }) + ); + return; + } + + const dragX = e.target.x(); + const dragY = e.target.y(); + + const newX = roundToMultiple(dragX, 64); + const newY = roundToMultiple(dragY, 64); + + e.target.x(newX); + e.target.y(newY); + + dispatch( + setBoundingBoxCoordinates({ + x: newX, + y: newY, + }) + ); + }, + [dispatch, shouldSnapToGrid] + ); + + const handleOnTransform = useCallback(() => { + /** + * The Konva Transformer changes the object's anchor point and scale factor, + * not its width and height. We need to un-scale the width and height before + * setting the values. + */ + if (!shapeRef.current) return; + + const rect = shapeRef.current; + + const scaleX = rect.scaleX(); + const scaleY = rect.scaleY(); + + // undo the scaling + const width = Math.round(rect.width() * scaleX); + const height = Math.round(rect.height() * scaleY); + + const x = Math.round(rect.x()); + const y = Math.round(rect.y()); + + dispatch( + setBoundingBoxDimensions({ + width, + height, + }) + ); + + dispatch( + setBoundingBoxCoordinates({ + x: shouldSnapToGrid ? roundDownToMultiple(x, 64) : x, + y: shouldSnapToGrid ? roundDownToMultiple(y, 64) : y, + }) + ); + + // Reset the scale now that the coords/dimensions have been un-scaled + rect.scaleX(1); + rect.scaleY(1); + }, [dispatch, shouldSnapToGrid]); + + const anchorDragBoundFunc = useCallback( + ( + oldPos: Vector2d, // old absolute position of anchor point + newPos: Vector2d, // new absolute position (potentially) of anchor point + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _e: MouseEvent + ) => { + /** + * Konva does not transform with width or height. It transforms the anchor point + * and scale factor. This is then sent to the shape's onTransform listeners. + * + * We need to snap the new dimensions to steps of 64. But because the whole + * stage is scaled, our actual desired step is actually 64 * the stage scale. + * + * Additionally, we need to ensure we offset the position so that we snap to a + * multiple of 64 that is aligned with the grid, and not from the absolute zero + * coordinate. + */ + + // Calculate the offset of the grid. + const offsetX = oldPos.x % scaledStep; + const offsetY = oldPos.y % scaledStep; + + const newCoordinates = { + x: roundDownToMultiple(newPos.x, scaledStep) + offsetX, + y: roundDownToMultiple(newPos.y, scaledStep) + offsetY, + }; + + return newCoordinates; + }, + [scaledStep] + ); + + const handleStartedTransforming = () => { + dispatch(setIsTransformingBoundingBox(true)); + }; + + const handleEndedTransforming = () => { + dispatch(setIsTransformingBoundingBox(false)); + dispatch(setIsMovingBoundingBox(false)); + dispatch(setIsMouseOverBoundingBox(false)); + setIsMouseOverBoundingBoxOutline(false); + }; + + const handleStartedMoving = () => { + dispatch(setIsMovingBoundingBox(true)); + }; + + const handleEndedModifying = () => { + dispatch(setIsTransformingBoundingBox(false)); + dispatch(setIsMovingBoundingBox(false)); + dispatch(setIsMouseOverBoundingBox(false)); + setIsMouseOverBoundingBoxOutline(false); + }; + + const handleMouseOver = () => { + setIsMouseOverBoundingBoxOutline(true); + }; + + const handleMouseOut = () => { + !isTransformingBoundingBox && + !isMovingBoundingBox && + setIsMouseOverBoundingBoxOutline(false); + }; + + const handleMouseEnterBoundingBox = () => { + dispatch(setIsMouseOverBoundingBox(true)); + }; + + const handleMouseLeaveBoundingBox = () => { + dispatch(setIsMouseOverBoundingBox(false)); + }; + + return ( + + + + + + ); +}; + +export default IAICanvasBoundingBox; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx new file mode 100644 index 0000000000..c0ad07afea --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasMaskOptions.tsx @@ -0,0 +1,146 @@ +import { ButtonGroup, Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { + clearMask, + setIsMaskEnabled, + setLayer, + setMaskColor, + setShouldPreserveMaskedArea, +} from 'features/canvas/store/canvasSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import _ from 'lodash'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { FaMask, FaTrash } from 'react-icons/fa'; +import IAIPopover from 'common/components/IAIPopover'; +import IAICheckbox from 'common/components/IAICheckbox'; +import IAIColorPicker from 'common/components/IAIColorPicker'; +import IAIButton from 'common/components/IAIButton'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { rgbaColorToString } from 'features/canvas/util/colorToString'; + +export const selector = createSelector( + [canvasSelector, isStagingSelector], + (canvas, isStaging) => { + const { maskColor, layer, isMaskEnabled, shouldPreserveMaskedArea } = + canvas; + + return { + layer, + maskColor, + maskColorString: rgbaColorToString(maskColor), + isMaskEnabled, + shouldPreserveMaskedArea, + isStaging, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); +const IAICanvasMaskOptions = () => { + const dispatch = useAppDispatch(); + const { + layer, + maskColor, + isMaskEnabled, + shouldPreserveMaskedArea, + isStaging, + } = useAppSelector(selector); + + useHotkeys( + ['q'], + () => { + handleToggleMaskLayer(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [layer] + ); + + useHotkeys( + ['shift+c'], + () => { + handleClearMask(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [] + ); + + useHotkeys( + ['h'], + () => { + handleToggleEnableMask(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [isMaskEnabled] + ); + + const handleToggleMaskLayer = () => { + dispatch(setLayer(layer === 'mask' ? 'base' : 'mask')); + }; + + const handleClearMask = () => dispatch(clearMask()); + + const handleToggleEnableMask = () => + dispatch(setIsMaskEnabled(!isMaskEnabled)); + + return ( + + } + style={ + layer === 'mask' + ? { backgroundColor: 'var(--accent-color)' } + : { backgroundColor: 'var(--btn-base-color)' } + } + isDisabled={isStaging} + /> + + } + > + + + + dispatch(setShouldPreserveMaskedArea(e.target.checked)) + } + /> + dispatch(setMaskColor(newColor))} + /> + } onClick={handleClearMask}> + Clear Mask (Shift+C) + + + + ); +}; + +export default IAICanvasMaskOptions; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx new file mode 100644 index 0000000000..2f743f0334 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx @@ -0,0 +1,59 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { FaRedo } from 'react-icons/fa'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +import _ from 'lodash'; +import { redo } from 'features/canvas/store/canvasSlice'; +import { systemSelector } from 'features/system/store/systemSelectors'; + +const canvasRedoSelector = createSelector( + [canvasSelector, activeTabNameSelector, systemSelector], + (canvas, activeTabName, system) => { + const { futureLayerStates } = canvas; + + return { + canRedo: futureLayerStates.length > 0 && !system.isProcessing, + activeTabName, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +export default function IAICanvasRedoButton() { + const dispatch = useAppDispatch(); + const { canRedo, activeTabName } = useAppSelector(canvasRedoSelector); + + const handleRedo = () => { + dispatch(redo()); + }; + + useHotkeys( + ['meta+shift+z', 'ctrl+shift+z', 'control+y', 'meta+y'], + () => { + handleRedo(); + }, + { + enabled: () => canRedo, + preventDefault: true, + }, + [activeTabName, canRedo] + ); + + return ( + } + onClick={handleRedo} + isDisabled={!canRedo} + /> + ); +} diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx new file mode 100644 index 0000000000..eeafe6512d --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasSettingsButtonPopover.tsx @@ -0,0 +1,154 @@ +import { Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { + setShouldAutoSave, + setShouldCropToBoundingBoxOnSave, + setShouldDarkenOutsideBoundingBox, + setShouldRestrictStrokesToBox, + setShouldShowCanvasDebugInfo, + setShouldShowGrid, + setShouldShowIntermediates, + setShouldSnapToGrid, +} from 'features/canvas/store/canvasSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import _ from 'lodash'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { FaWrench } from 'react-icons/fa'; +import IAIPopover from 'common/components/IAIPopover'; +import IAICheckbox from 'common/components/IAICheckbox'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import EmptyTempFolderButtonModal from 'features/system/components/ClearTempFolderButtonModal'; +import ClearCanvasHistoryButtonModal from '../ClearCanvasHistoryButtonModal'; +import { ChangeEvent } from 'react'; +import { useHotkeys } from 'react-hotkeys-hook'; + +export const canvasControlsSelector = createSelector( + [canvasSelector], + (canvas) => { + const { + shouldAutoSave, + shouldCropToBoundingBoxOnSave, + shouldDarkenOutsideBoundingBox, + shouldShowCanvasDebugInfo, + shouldShowGrid, + shouldShowIntermediates, + shouldSnapToGrid, + shouldRestrictStrokesToBox, + } = canvas; + + return { + shouldAutoSave, + shouldCropToBoundingBoxOnSave, + shouldDarkenOutsideBoundingBox, + shouldShowCanvasDebugInfo, + shouldShowGrid, + shouldShowIntermediates, + shouldSnapToGrid, + shouldRestrictStrokesToBox, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasSettingsButtonPopover = () => { + const dispatch = useAppDispatch(); + const { + shouldAutoSave, + shouldCropToBoundingBoxOnSave, + shouldDarkenOutsideBoundingBox, + shouldShowCanvasDebugInfo, + shouldShowGrid, + shouldShowIntermediates, + shouldSnapToGrid, + shouldRestrictStrokesToBox, + } = useAppSelector(canvasControlsSelector); + + useHotkeys( + ['n'], + () => { + dispatch(setShouldSnapToGrid(!shouldSnapToGrid)); + }, + { + enabled: true, + preventDefault: true, + }, + [shouldSnapToGrid] + ); + + const handleChangeShouldSnapToGrid = (e: ChangeEvent) => + dispatch(setShouldSnapToGrid(e.target.checked)); + + return ( + } + /> + } + > + + + dispatch(setShouldShowIntermediates(e.target.checked)) + } + /> + dispatch(setShouldShowGrid(e.target.checked))} + /> + + + dispatch(setShouldDarkenOutsideBoundingBox(e.target.checked)) + } + /> + dispatch(setShouldAutoSave(e.target.checked))} + /> + + dispatch(setShouldCropToBoundingBoxOnSave(e.target.checked)) + } + /> + + dispatch(setShouldRestrictStrokesToBox(e.target.checked)) + } + /> + + dispatch(setShouldShowCanvasDebugInfo(e.target.checked)) + } + /> + + + + + ); +}; + +export default IAICanvasSettingsButtonPopover; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx new file mode 100644 index 0000000000..280d3e3e45 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx @@ -0,0 +1,259 @@ +import { ButtonGroup, Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { + addEraseRect, + addFillRect, + setBrushColor, + setBrushSize, + setTool, +} from 'features/canvas/store/canvasSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import _ from 'lodash'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { + FaEraser, + FaEyeDropper, + FaFillDrip, + FaPaintBrush, + FaPlus, + FaSlidersH, +} from 'react-icons/fa'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { systemSelector } from 'features/system/store/systemSelectors'; +import { useHotkeys } from 'react-hotkeys-hook'; +import IAIPopover from 'common/components/IAIPopover'; +import IAISlider from 'common/components/IAISlider'; +import IAIColorPicker from 'common/components/IAIColorPicker'; + +export const selector = createSelector( + [canvasSelector, isStagingSelector, systemSelector], + (canvas, isStaging, system) => { + const { isProcessing } = system; + const { tool, brushColor, brushSize } = canvas; + + return { + tool, + isStaging, + isProcessing, + brushColor, + brushSize, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasToolChooserOptions = () => { + const dispatch = useAppDispatch(); + const { tool, brushColor, brushSize, isStaging } = useAppSelector(selector); + + useHotkeys( + ['b'], + () => { + handleSelectBrushTool(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [] + ); + + useHotkeys( + ['e'], + () => { + handleSelectEraserTool(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [tool] + ); + + useHotkeys( + ['c'], + () => { + handleSelectColorPickerTool(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [tool] + ); + + useHotkeys( + ['shift+f'], + () => { + handleFillRect(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + } + ); + + useHotkeys( + ['delete', 'backspace'], + () => { + handleEraseBoundingBox(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + } + ); + + useHotkeys( + ['BracketLeft'], + () => { + dispatch(setBrushSize(Math.max(brushSize - 5, 5))); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [brushSize] + ); + + useHotkeys( + ['BracketRight'], + () => { + dispatch(setBrushSize(Math.min(brushSize + 5, 500))); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [brushSize] + ); + + useHotkeys( + ['shift+BracketLeft'], + () => { + dispatch( + setBrushColor({ + ...brushColor, + a: _.clamp(brushColor.a - 0.05, 0.05, 1), + }) + ); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [brushColor] + ); + + useHotkeys( + ['shift+BracketRight'], + () => { + dispatch( + setBrushColor({ + ...brushColor, + a: _.clamp(brushColor.a + 0.05, 0.05, 1), + }) + ); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [brushColor] + ); + + const handleSelectBrushTool = () => dispatch(setTool('brush')); + const handleSelectEraserTool = () => dispatch(setTool('eraser')); + const handleSelectColorPickerTool = () => dispatch(setTool('colorPicker')); + const handleFillRect = () => dispatch(addFillRect()); + const handleEraseBoundingBox = () => dispatch(addEraseRect()); + + return ( + + } + data-selected={tool === 'brush' && !isStaging} + onClick={handleSelectBrushTool} + isDisabled={isStaging} + /> + } + data-selected={tool === 'eraser' && !isStaging} + isDisabled={isStaging} + onClick={handleSelectEraserTool} + /> + } + isDisabled={isStaging} + onClick={handleFillRect} + /> + } + isDisabled={isStaging} + onClick={handleEraseBoundingBox} + /> + } + data-selected={tool === 'colorPicker' && !isStaging} + isDisabled={isStaging} + onClick={handleSelectColorPickerTool} + /> + } + /> + } + > + + + dispatch(setBrushSize(newSize))} + sliderNumberInputProps={{ max: 500 }} + inputReadOnly={false} + /> + + dispatch(setBrushColor(newColor))} + /> + + + + ); +}; + +export default IAICanvasToolChooserOptions; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx new file mode 100644 index 0000000000..3740b865e4 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx @@ -0,0 +1,310 @@ +import { ButtonGroup } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { + resetCanvas, + resetCanvasView, + resizeAndScaleCanvas, + setIsMaskEnabled, + setLayer, + setTool, +} from 'features/canvas/store/canvasSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import _ from 'lodash'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { + FaArrowsAlt, + FaCopy, + FaCrosshairs, + FaDownload, + FaLayerGroup, + FaSave, + FaTrash, + FaUpload, +} from 'react-icons/fa'; +import IAICanvasUndoButton from './IAICanvasUndoButton'; +import IAICanvasRedoButton from './IAICanvasRedoButton'; +import IAICanvasSettingsButtonPopover from './IAICanvasSettingsButtonPopover'; +import IAICanvasMaskOptions from './IAICanvasMaskOptions'; +import { mergeAndUploadCanvas } from 'features/canvas/store/thunks/mergeAndUploadCanvas'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; +import { systemSelector } from 'features/system/store/systemSelectors'; +import IAICanvasToolChooserOptions from './IAICanvasToolChooserOptions'; +import useImageUploader from 'common/hooks/useImageUploader'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import IAISelect from 'common/components/IAISelect'; +import { + CanvasLayer, + LAYER_NAMES_DICT, +} from 'features/canvas/store/canvasTypes'; +import { ChangeEvent } from 'react'; + +export const selector = createSelector( + [systemSelector, canvasSelector, isStagingSelector], + (system, canvas, isStaging) => { + const { isProcessing } = system; + const { tool, shouldCropToBoundingBoxOnSave, layer, isMaskEnabled } = + canvas; + + return { + isProcessing, + isStaging, + isMaskEnabled, + tool, + layer, + shouldCropToBoundingBoxOnSave, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const IAICanvasOutpaintingControls = () => { + const dispatch = useAppDispatch(); + const { + isProcessing, + isStaging, + isMaskEnabled, + layer, + tool, + shouldCropToBoundingBoxOnSave, + } = useAppSelector(selector); + const canvasBaseLayer = getCanvasBaseLayer(); + + const { openUploader } = useImageUploader(); + + useHotkeys( + ['v'], + () => { + handleSelectMoveTool(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [] + ); + + useHotkeys( + ['r'], + () => { + handleResetCanvasView(); + }, + { + enabled: () => true, + preventDefault: true, + }, + [canvasBaseLayer] + ); + + useHotkeys( + ['shift+m'], + () => { + handleMergeVisible(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [canvasBaseLayer, isProcessing] + ); + + useHotkeys( + ['shift+s'], + () => { + handleSaveToGallery(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [canvasBaseLayer, isProcessing] + ); + + useHotkeys( + ['meta+c', 'ctrl+c'], + () => { + handleCopyImageToClipboard(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [canvasBaseLayer, isProcessing] + ); + + useHotkeys( + ['shift+d'], + () => { + handleDownloadAsImage(); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [canvasBaseLayer, isProcessing] + ); + + const handleSelectMoveTool = () => dispatch(setTool('move')); + + const handleResetCanvasView = () => { + const canvasBaseLayer = getCanvasBaseLayer(); + if (!canvasBaseLayer) return; + const clientRect = canvasBaseLayer.getClientRect({ + skipTransform: true, + }); + dispatch( + resetCanvasView({ + contentRect: clientRect, + }) + ); + }; + + const handleResetCanvas = () => { + dispatch(resetCanvas()); + dispatch(resizeAndScaleCanvas()); + }; + + const handleMergeVisible = () => { + dispatch( + mergeAndUploadCanvas({ + cropVisible: false, + shouldSetAsInitialImage: true, + }) + ); + }; + + const handleSaveToGallery = () => { + dispatch( + mergeAndUploadCanvas({ + cropVisible: shouldCropToBoundingBoxOnSave ? false : true, + cropToBoundingBox: shouldCropToBoundingBoxOnSave, + shouldSaveToGallery: true, + }) + ); + }; + + const handleCopyImageToClipboard = () => { + dispatch( + mergeAndUploadCanvas({ + cropVisible: shouldCropToBoundingBoxOnSave ? false : true, + cropToBoundingBox: shouldCropToBoundingBoxOnSave, + shouldCopy: true, + }) + ); + }; + + const handleDownloadAsImage = () => { + dispatch( + mergeAndUploadCanvas({ + cropVisible: shouldCropToBoundingBoxOnSave ? false : true, + cropToBoundingBox: shouldCropToBoundingBoxOnSave, + shouldDownload: true, + }) + ); + }; + + const handleChangeLayer = (e: ChangeEvent) => { + const newLayer = e.target.value as CanvasLayer; + dispatch(setLayer(newLayer)); + if (newLayer === 'mask' && !isMaskEnabled) { + dispatch(setIsMaskEnabled(true)); + } + }; + + return ( +
+ + + + + + + } + data-selected={tool === 'move' || isStaging} + onClick={handleSelectMoveTool} + /> + } + onClick={handleResetCanvasView} + /> + + + + } + onClick={handleMergeVisible} + isDisabled={isStaging} + /> + } + onClick={handleSaveToGallery} + isDisabled={isStaging} + /> + } + onClick={handleCopyImageToClipboard} + isDisabled={isStaging} + /> + } + onClick={handleDownloadAsImage} + isDisabled={isStaging} + /> + + + + + + + + } + onClick={openUploader} + isDisabled={isStaging} + /> + } + onClick={handleResetCanvas} + style={{ backgroundColor: 'var(--btn-delete-image)' }} + isDisabled={isStaging} + /> + + + + +
+ ); +}; + +export default IAICanvasOutpaintingControls; diff --git a/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx new file mode 100644 index 0000000000..43e24ae680 --- /dev/null +++ b/frontend/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx @@ -0,0 +1,60 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { FaUndo } from 'react-icons/fa'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +import _ from 'lodash'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { undo } from 'features/canvas/store/canvasSlice'; +import { systemSelector } from 'features/system/store/systemSelectors'; + +const canvasUndoSelector = createSelector( + [canvasSelector, activeTabNameSelector, systemSelector], + (canvas, activeTabName, system) => { + const { pastLayerStates } = canvas; + + return { + canUndo: pastLayerStates.length > 0 && !system.isProcessing, + activeTabName, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +export default function IAICanvasUndoButton() { + const dispatch = useAppDispatch(); + + const { canUndo, activeTabName } = useAppSelector(canvasUndoSelector); + + const handleUndo = () => { + dispatch(undo()); + }; + + useHotkeys( + ['meta+z', 'ctrl+z'], + () => { + handleUndo(); + }, + { + enabled: () => canUndo, + preventDefault: true, + }, + [activeTabName, canUndo] + ); + + return ( + } + onClick={handleUndo} + isDisabled={!canUndo} + /> + ); +} diff --git a/frontend/src/features/canvas/hooks/useCanvasDragMove.ts b/frontend/src/features/canvas/hooks/useCanvasDragMove.ts new file mode 100644 index 0000000000..44daf090d9 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasDragMove.ts @@ -0,0 +1,56 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { KonvaEventObject } from 'konva/lib/Node'; +import _ from 'lodash'; +import { useCallback } from 'react'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { + setIsMovingStage, + setStageCoordinates, +} from 'features/canvas/store/canvasSlice'; + +const selector = createSelector( + [canvasSelector, isStagingSelector], + (canvas, isStaging) => { + const { tool, isMovingBoundingBox } = canvas; + return { + tool, + isStaging, + isMovingBoundingBox, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const useCanvasDrag = () => { + const dispatch = useAppDispatch(); + const { tool, isStaging, isMovingBoundingBox } = useAppSelector(selector); + + return { + handleDragStart: useCallback(() => { + if (!((tool === 'move' || isStaging) && !isMovingBoundingBox)) return; + dispatch(setIsMovingStage(true)); + }, [dispatch, isMovingBoundingBox, isStaging, tool]), + + handleDragMove: useCallback( + (e: KonvaEventObject) => { + if (!((tool === 'move' || isStaging) && !isMovingBoundingBox)) return; + + const newCoordinates = { x: e.target.x(), y: e.target.y() }; + + dispatch(setStageCoordinates(newCoordinates)); + }, + [dispatch, isMovingBoundingBox, isStaging, tool] + ), + + handleDragEnd: useCallback(() => { + if (!((tool === 'move' || isStaging) && !isMovingBoundingBox)) return; + dispatch(setIsMovingStage(false)); + }, [dispatch, isMovingBoundingBox, isStaging, tool]), + }; +}; + +export default useCanvasDrag; diff --git a/frontend/src/features/canvas/hooks/useCanvasHotkeys.ts b/frontend/src/features/canvas/hooks/useCanvasHotkeys.ts new file mode 100644 index 0000000000..44f357efc2 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasHotkeys.ts @@ -0,0 +1,107 @@ +import { createSelector } from '@reduxjs/toolkit'; +import _ from 'lodash'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { + resetCanvasInteractionState, + setShouldShowBoundingBox, + setTool, +} from 'features/canvas/store/canvasSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { useRef } from 'react'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { CanvasTool } from '../store/canvasTypes'; +import { getCanvasStage } from '../util/konvaInstanceProvider'; + +const selector = createSelector( + [canvasSelector, activeTabNameSelector, isStagingSelector], + (canvas, activeTabName, isStaging) => { + const { + cursorPosition, + shouldLockBoundingBox, + shouldShowBoundingBox, + tool, + } = canvas; + + return { + activeTabName, + isCursorOnCanvas: Boolean(cursorPosition), + shouldLockBoundingBox, + shouldShowBoundingBox, + tool, + isStaging, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const useInpaintingCanvasHotkeys = () => { + const dispatch = useAppDispatch(); + const { activeTabName, shouldShowBoundingBox, tool, isStaging } = + useAppSelector(selector); + + const previousToolRef = useRef(null); + + const canvasStage = getCanvasStage(); + + useHotkeys( + 'esc', + () => { + dispatch(resetCanvasInteractionState()); + }, + { + enabled: () => true, + preventDefault: true, + } + ); + + useHotkeys( + 'shift+h', + () => { + dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); + }, + { + enabled: () => !isStaging, + preventDefault: true, + }, + [activeTabName, shouldShowBoundingBox] + ); + + useHotkeys( + ['space'], + (e: KeyboardEvent) => { + if (e.repeat) return; + + canvasStage?.container().focus(); + + if (tool !== 'move') { + previousToolRef.current = tool; + dispatch(setTool('move')); + } + + if ( + tool === 'move' && + previousToolRef.current && + previousToolRef.current !== 'move' + ) { + dispatch(setTool(previousToolRef.current)); + previousToolRef.current = 'move'; + } + }, + { + keyup: true, + keydown: true, + preventDefault: true, + }, + [tool, previousToolRef] + ); +}; + +export default useInpaintingCanvasHotkeys; diff --git a/frontend/src/features/canvas/hooks/useCanvasMouseDown.ts b/frontend/src/features/canvas/hooks/useCanvasMouseDown.ts new file mode 100644 index 0000000000..b2d93178f8 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasMouseDown.ts @@ -0,0 +1,69 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import Konva from 'konva'; +import { KonvaEventObject } from 'konva/lib/Node'; +import _ from 'lodash'; +import { MutableRefObject, useCallback } from 'react'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { + addLine, + setIsDrawing, + setIsMovingStage, +} from 'features/canvas/store/canvasSlice'; +import getScaledCursorPosition from '../util/getScaledCursorPosition'; +import useColorPicker from './useColorUnderCursor'; + +const selector = createSelector( + [activeTabNameSelector, canvasSelector, isStagingSelector], + (activeTabName, canvas, isStaging) => { + const { tool } = canvas; + return { + tool, + activeTabName, + isStaging, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const useCanvasMouseDown = (stageRef: MutableRefObject) => { + const dispatch = useAppDispatch(); + const { tool, isStaging } = useAppSelector(selector); + const { commitColorUnderCursor } = useColorPicker(); + + return useCallback( + (e: KonvaEventObject) => { + if (!stageRef.current) return; + + stageRef.current.container().focus(); + + if (tool === 'move' || isStaging) { + dispatch(setIsMovingStage(true)); + return; + } + + if (tool === 'colorPicker') { + commitColorUnderCursor(); + return; + } + + const scaledCursorPosition = getScaledCursorPosition(stageRef.current); + + if (!scaledCursorPosition) return; + + e.evt.preventDefault(); + + dispatch(setIsDrawing(true)); + + // Add a new line starting from the current cursor position. + dispatch(addLine([scaledCursorPosition.x, scaledCursorPosition.y])); + }, + [stageRef, tool, isStaging, dispatch, commitColorUnderCursor] + ); +}; + +export default useCanvasMouseDown; diff --git a/frontend/src/features/canvas/hooks/useCanvasMouseMove.ts b/frontend/src/features/canvas/hooks/useCanvasMouseMove.ts new file mode 100644 index 0000000000..ae42ca90a6 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasMouseMove.ts @@ -0,0 +1,76 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import Konva from 'konva'; +import { Vector2d } from 'konva/lib/types'; +import _ from 'lodash'; +import { MutableRefObject, useCallback } from 'react'; +import { + canvasSelector, + isStagingSelector, +} from 'features/canvas/store/canvasSelectors'; +import { + addPointToCurrentLine, + setCursorPosition, +} from 'features/canvas/store/canvasSlice'; +import getScaledCursorPosition from '../util/getScaledCursorPosition'; +import useColorPicker from './useColorUnderCursor'; + +const selector = createSelector( + [activeTabNameSelector, canvasSelector, isStagingSelector], + (activeTabName, canvas, isStaging) => { + const { tool, isDrawing } = canvas; + return { + tool, + isDrawing, + activeTabName, + isStaging, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const useCanvasMouseMove = ( + stageRef: MutableRefObject, + didMouseMoveRef: MutableRefObject, + lastCursorPositionRef: MutableRefObject +) => { + const dispatch = useAppDispatch(); + const { isDrawing, tool, isStaging } = useAppSelector(selector); + const { updateColorUnderCursor } = useColorPicker(); + + return useCallback(() => { + if (!stageRef.current) return; + + const scaledCursorPosition = getScaledCursorPosition(stageRef.current); + + if (!scaledCursorPosition) return; + + dispatch(setCursorPosition(scaledCursorPosition)); + + lastCursorPositionRef.current = scaledCursorPosition; + + if (tool === 'colorPicker') { + updateColorUnderCursor(); + return; + } + + if (!isDrawing || tool === 'move' || isStaging) return; + + didMouseMoveRef.current = true; + dispatch( + addPointToCurrentLine([scaledCursorPosition.x, scaledCursorPosition.y]) + ); + }, [ + didMouseMoveRef, + dispatch, + isDrawing, + isStaging, + lastCursorPositionRef, + stageRef, + tool, + updateColorUnderCursor, + ]); +}; + +export default useCanvasMouseMove; diff --git a/frontend/src/features/canvas/hooks/useCanvasMouseOut.ts b/frontend/src/features/canvas/hooks/useCanvasMouseOut.ts new file mode 100644 index 0000000000..e038d8db19 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasMouseOut.ts @@ -0,0 +1,13 @@ +import { useAppDispatch } from 'app/store'; +import { useCallback } from 'react'; +import { mouseLeftCanvas } from 'features/canvas/store/canvasSlice'; + +const useCanvasMouseOut = () => { + const dispatch = useAppDispatch(); + + return useCallback(() => { + dispatch(mouseLeftCanvas()); + }, [dispatch]); +}; + +export default useCanvasMouseOut; diff --git a/frontend/src/features/canvas/hooks/useCanvasMouseUp.ts b/frontend/src/features/canvas/hooks/useCanvasMouseUp.ts new file mode 100644 index 0000000000..7b1826b9c0 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasMouseUp.ts @@ -0,0 +1,64 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import Konva from 'konva'; +import _ from 'lodash'; +import { MutableRefObject, useCallback } from 'react'; +import { canvasSelector, isStagingSelector } from 'features/canvas/store/canvasSelectors'; +import { + // addPointToCurrentEraserLine, + addPointToCurrentLine, + setIsDrawing, + setIsMovingStage, +} from 'features/canvas/store/canvasSlice'; +import getScaledCursorPosition from '../util/getScaledCursorPosition'; + +const selector = createSelector( + [activeTabNameSelector, canvasSelector, isStagingSelector], + (activeTabName, canvas, isStaging) => { + const { tool, isDrawing } = canvas; + return { + tool, + isDrawing, + activeTabName, + isStaging, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const useCanvasMouseUp = ( + stageRef: MutableRefObject, + didMouseMoveRef: MutableRefObject +) => { + const dispatch = useAppDispatch(); + const { tool, isDrawing, isStaging } = useAppSelector(selector); + + return useCallback(() => { + if (tool === 'move' || isStaging) { + dispatch(setIsMovingStage(false)); + return; + } + + if (!didMouseMoveRef.current && isDrawing && stageRef.current) { + const scaledCursorPosition = getScaledCursorPosition(stageRef.current); + + if (!scaledCursorPosition) return; + + /** + * Extend the current line. + * In this case, the mouse didn't move, so we append the same point to + * the line's existing points. This allows the line to render as a circle + * centered on that point. + */ + dispatch( + addPointToCurrentLine([scaledCursorPosition.x, scaledCursorPosition.y]) + ); + } else { + didMouseMoveRef.current = false; + } + dispatch(setIsDrawing(false)); + }, [didMouseMoveRef, dispatch, isDrawing, isStaging, stageRef, tool]); +}; + +export default useCanvasMouseUp; diff --git a/frontend/src/features/canvas/hooks/useCanvasZoom.ts b/frontend/src/features/canvas/hooks/useCanvasZoom.ts new file mode 100644 index 0000000000..af3284a0ab --- /dev/null +++ b/frontend/src/features/canvas/hooks/useCanvasZoom.ts @@ -0,0 +1,76 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import Konva from 'konva'; +import { KonvaEventObject } from 'konva/lib/Node'; +import _ from 'lodash'; +import { MutableRefObject, useCallback } from 'react'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { + setStageCoordinates, + setStageScale, +} from 'features/canvas/store/canvasSlice'; +import { + CANVAS_SCALE_BY, + MAX_CANVAS_SCALE, + MIN_CANVAS_SCALE, +} from '../util/constants'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { isMoveStageKeyHeld, stageScale } = canvas; + return { + isMoveStageKeyHeld, + stageScale, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const useCanvasWheel = (stageRef: MutableRefObject) => { + const dispatch = useAppDispatch(); + const { isMoveStageKeyHeld, stageScale } = useAppSelector(selector); + + return useCallback( + (e: KonvaEventObject) => { + // stop default scrolling + if (!stageRef.current || isMoveStageKeyHeld) return; + + e.evt.preventDefault(); + + const cursorPos = stageRef.current.getPointerPosition(); + + if (!cursorPos) return; + + const mousePointTo = { + x: (cursorPos.x - stageRef.current.x()) / stageScale, + y: (cursorPos.y - stageRef.current.y()) / stageScale, + }; + + let delta = e.evt.deltaY; + + // when we zoom on trackpad, e.evt.ctrlKey is true + // in that case lets revert direction + if (e.evt.ctrlKey) { + delta = -delta; + } + + const newScale = _.clamp( + stageScale * CANVAS_SCALE_BY ** delta, + MIN_CANVAS_SCALE, + MAX_CANVAS_SCALE + ); + + const newCoordinates = { + x: cursorPos.x - mousePointTo.x * newScale, + y: cursorPos.y - mousePointTo.y * newScale, + }; + + dispatch(setStageScale(newScale)); + dispatch(setStageCoordinates(newCoordinates)); + }, + [stageRef, isMoveStageKeyHeld, stageScale, dispatch] + ); +}; + +export default useCanvasWheel; diff --git a/frontend/src/features/canvas/hooks/useColorUnderCursor.ts b/frontend/src/features/canvas/hooks/useColorUnderCursor.ts new file mode 100644 index 0000000000..4739070e13 --- /dev/null +++ b/frontend/src/features/canvas/hooks/useColorUnderCursor.ts @@ -0,0 +1,45 @@ +import { useAppDispatch } from 'app/store'; +import Konva from 'konva'; +import _ from 'lodash'; +import { + commitColorPickerColor, + setColorPickerColor, +} from '../store/canvasSlice'; +import { + getCanvasBaseLayer, + getCanvasStage, +} from '../util/konvaInstanceProvider'; + +const useColorPicker = () => { + const dispatch = useAppDispatch(); + const canvasBaseLayer = getCanvasBaseLayer(); + const stage = getCanvasStage(); + + return { + updateColorUnderCursor: () => { + if (!stage || !canvasBaseLayer) return; + + const position = stage.getPointerPosition(); + + if (!position) return; + + const pixelRatio = Konva.pixelRatio; + + const [r, g, b, a] = canvasBaseLayer + .getContext() + .getImageData( + position.x * pixelRatio, + position.y * pixelRatio, + 1, + 1 + ).data; + + dispatch(setColorPickerColor({ r, g, b, a })); + }, + commitColorUnderCursor: () => { + dispatch(commitColorPickerColor()); + }, + }; +}; + +export default useColorPicker; diff --git a/frontend/src/features/canvas/store/canvasSelectors.ts b/frontend/src/features/canvas/store/canvasSelectors.ts new file mode 100644 index 0000000000..a7083b875a --- /dev/null +++ b/frontend/src/features/canvas/store/canvasSelectors.ts @@ -0,0 +1,19 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { RootState } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { systemSelector } from 'features/system/store/systemSelectors'; +import { CanvasImage, CanvasState, isCanvasBaseImage } from './canvasTypes'; + +export const canvasSelector = (state: RootState): CanvasState => state.canvas; + +export const isStagingSelector = createSelector( + [canvasSelector, activeTabNameSelector, systemSelector], + (canvas, activeTabName, system) => + canvas.layerState.stagingArea.images.length > 0 || + (activeTabName === 'unifiedCanvas' && system.isProcessing) +); + +export const initialCanvasImageSelector = ( + state: RootState +): CanvasImage | undefined => + state.canvas.layerState.objects.find(isCanvasBaseImage); diff --git a/frontend/src/features/canvas/store/canvasSlice.ts b/frontend/src/features/canvas/store/canvasSlice.ts new file mode 100644 index 0000000000..31d02d2790 --- /dev/null +++ b/frontend/src/features/canvas/store/canvasSlice.ts @@ -0,0 +1,896 @@ +import type { PayloadAction } from '@reduxjs/toolkit'; +import { createSlice } from '@reduxjs/toolkit'; +import * as InvokeAI from 'app/invokeai'; +import { + roundDownToMultiple, + roundToMultiple, +} from 'common/util/roundDownToMultiple'; +import { IRect, Vector2d } from 'konva/lib/types'; +import _ from 'lodash'; +import { RgbaColor } from 'react-colorful'; +import calculateCoordinates from '../util/calculateCoordinates'; +import calculateScale from '../util/calculateScale'; +import { STAGE_PADDING_PERCENTAGE } from '../util/constants'; +import floorCoordinates from '../util/floorCoordinates'; +import getScaledBoundingBoxDimensions from '../util/getScaledBoundingBoxDimensions'; +import roundDimensionsTo64 from '../util/roundDimensionsTo64'; +import { + BoundingBoxScale, + CanvasImage, + CanvasLayer, + CanvasLayerState, + CanvasBaseLine, + CanvasMaskLine, + CanvasState, + CanvasTool, + Dimensions, + isCanvasAnyLine, + isCanvasBaseImage, + isCanvasMaskLine, +} from './canvasTypes'; + +export const initialLayerState: CanvasLayerState = { + objects: [], + stagingArea: { + images: [], + selectedImageIndex: -1, + }, +}; + +const initialCanvasState: CanvasState = { + boundingBoxCoordinates: { x: 0, y: 0 }, + boundingBoxDimensions: { width: 512, height: 512 }, + boundingBoxPreviewFill: { r: 0, g: 0, b: 0, a: 0.5 }, + boundingBoxScaleMethod: 'auto', + brushColor: { r: 90, g: 90, b: 255, a: 1 }, + brushSize: 50, + canvasContainerDimensions: { width: 0, height: 0 }, + colorPickerColor: { r: 90, g: 90, b: 255, a: 1 }, + cursorPosition: null, + doesCanvasNeedScaling: false, + futureLayerStates: [], + inpaintReplace: 0.1, + isCanvasInitialized: false, + isDrawing: false, + isMaskEnabled: true, + isMouseOverBoundingBox: false, + isMoveBoundingBoxKeyHeld: false, + isMoveStageKeyHeld: false, + isMovingBoundingBox: false, + isMovingStage: false, + isTransformingBoundingBox: false, + layer: 'base', + layerState: initialLayerState, + maskColor: { r: 255, g: 90, b: 90, a: 1 }, + maxHistory: 128, + minimumStageScale: 1, + pastLayerStates: [], + scaledBoundingBoxDimensions: { width: 512, height: 512 }, + shouldAutoSave: false, + shouldCropToBoundingBoxOnSave: false, + shouldDarkenOutsideBoundingBox: false, + shouldLockBoundingBox: false, + shouldPreserveMaskedArea: false, + shouldRestrictStrokesToBox: true, + shouldShowBoundingBox: true, + shouldShowBrush: true, + shouldShowBrushPreview: false, + shouldShowCanvasDebugInfo: false, + shouldShowCheckboardTransparency: false, + shouldShowGrid: true, + shouldShowIntermediates: true, + shouldShowStagingImage: true, + shouldShowStagingOutline: true, + shouldSnapToGrid: true, + shouldUseInpaintReplace: false, + stageCoordinates: { x: 0, y: 0 }, + stageDimensions: { width: 0, height: 0 }, + stageScale: 1, + tool: 'brush', +}; + +export const canvasSlice = createSlice({ + name: 'canvas', + initialState: initialCanvasState, + reducers: { + setTool: (state, action: PayloadAction) => { + const tool = action.payload; + state.tool = action.payload; + if (tool !== 'move') { + state.isTransformingBoundingBox = false; + state.isMouseOverBoundingBox = false; + state.isMovingBoundingBox = false; + state.isMovingStage = false; + } + }, + setLayer: (state, action: PayloadAction) => { + state.layer = action.payload; + }, + toggleTool: (state) => { + const currentTool = state.tool; + if (currentTool !== 'move') { + state.tool = currentTool === 'brush' ? 'eraser' : 'brush'; + } + }, + setMaskColor: (state, action: PayloadAction) => { + state.maskColor = action.payload; + }, + setBrushColor: (state, action: PayloadAction) => { + state.brushColor = action.payload; + }, + setBrushSize: (state, action: PayloadAction) => { + state.brushSize = action.payload; + }, + clearMask: (state) => { + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + state.layerState.objects = state.layerState.objects.filter( + (obj) => !isCanvasMaskLine(obj) + ); + state.futureLayerStates = []; + state.shouldPreserveMaskedArea = false; + }, + toggleShouldInvertMask: (state) => { + state.shouldPreserveMaskedArea = !state.shouldPreserveMaskedArea; + }, + toggleShouldShowMask: (state) => { + state.isMaskEnabled = !state.isMaskEnabled; + }, + setShouldPreserveMaskedArea: (state, action: PayloadAction) => { + state.shouldPreserveMaskedArea = action.payload; + }, + setIsMaskEnabled: (state, action: PayloadAction) => { + state.isMaskEnabled = action.payload; + state.layer = action.payload ? 'mask' : 'base'; + }, + setShouldShowCheckboardTransparency: ( + state, + action: PayloadAction + ) => { + state.shouldShowCheckboardTransparency = action.payload; + }, + setShouldShowBrushPreview: (state, action: PayloadAction) => { + state.shouldShowBrushPreview = action.payload; + }, + setShouldShowBrush: (state, action: PayloadAction) => { + state.shouldShowBrush = action.payload; + }, + setCursorPosition: (state, action: PayloadAction) => { + state.cursorPosition = action.payload; + }, + setInitialCanvasImage: (state, action: PayloadAction) => { + const image = action.payload; + const { stageDimensions } = state; + + const newBoundingBoxDimensions = { + width: roundDownToMultiple(_.clamp(image.width, 64, 512), 64), + height: roundDownToMultiple(_.clamp(image.height, 64, 512), 64), + }; + + const newBoundingBoxCoordinates = { + x: roundToMultiple( + image.width / 2 - newBoundingBoxDimensions.width / 2, + 64 + ), + y: roundToMultiple( + image.height / 2 - newBoundingBoxDimensions.height / 2, + 64 + ), + }; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + newBoundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + + state.boundingBoxDimensions = newBoundingBoxDimensions; + state.boundingBoxCoordinates = newBoundingBoxCoordinates; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + state.layerState = { + ...initialLayerState, + objects: [ + { + kind: 'image', + layer: 'base', + x: 0, + y: 0, + width: image.width, + height: image.height, + image: image, + }, + ], + }; + state.futureLayerStates = []; + + state.isCanvasInitialized = false; + const newScale = calculateScale( + stageDimensions.width, + stageDimensions.height, + image.width, + image.height, + STAGE_PADDING_PERCENTAGE + ); + + const newCoordinates = calculateCoordinates( + stageDimensions.width, + stageDimensions.height, + 0, + 0, + image.width, + image.height, + newScale + ); + state.stageScale = newScale; + state.stageCoordinates = newCoordinates; + state.doesCanvasNeedScaling = true; + }, + setBoundingBoxDimensions: (state, action: PayloadAction) => { + const newDimensions = roundDimensionsTo64(action.payload); + state.boundingBoxDimensions = newDimensions; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions(newDimensions); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + }, + setBoundingBoxCoordinates: (state, action: PayloadAction) => { + state.boundingBoxCoordinates = floorCoordinates(action.payload); + }, + setStageCoordinates: (state, action: PayloadAction) => { + state.stageCoordinates = action.payload; + }, + setBoundingBoxPreviewFill: (state, action: PayloadAction) => { + state.boundingBoxPreviewFill = action.payload; + }, + setDoesCanvasNeedScaling: (state, action: PayloadAction) => { + state.doesCanvasNeedScaling = action.payload; + }, + setStageScale: (state, action: PayloadAction) => { + state.stageScale = action.payload; + }, + setShouldDarkenOutsideBoundingBox: ( + state, + action: PayloadAction + ) => { + state.shouldDarkenOutsideBoundingBox = action.payload; + }, + setIsDrawing: (state, action: PayloadAction) => { + state.isDrawing = action.payload; + }, + clearCanvasHistory: (state) => { + state.pastLayerStates = []; + state.futureLayerStates = []; + }, + setShouldUseInpaintReplace: (state, action: PayloadAction) => { + state.shouldUseInpaintReplace = action.payload; + }, + setInpaintReplace: (state, action: PayloadAction) => { + state.inpaintReplace = action.payload; + }, + setShouldLockBoundingBox: (state, action: PayloadAction) => { + state.shouldLockBoundingBox = action.payload; + }, + toggleShouldLockBoundingBox: (state) => { + state.shouldLockBoundingBox = !state.shouldLockBoundingBox; + }, + setShouldShowBoundingBox: (state, action: PayloadAction) => { + state.shouldShowBoundingBox = action.payload; + }, + setIsTransformingBoundingBox: (state, action: PayloadAction) => { + state.isTransformingBoundingBox = action.payload; + }, + setIsMovingBoundingBox: (state, action: PayloadAction) => { + state.isMovingBoundingBox = action.payload; + }, + setIsMouseOverBoundingBox: (state, action: PayloadAction) => { + state.isMouseOverBoundingBox = action.payload; + }, + setIsMoveBoundingBoxKeyHeld: (state, action: PayloadAction) => { + state.isMoveBoundingBoxKeyHeld = action.payload; + }, + setIsMoveStageKeyHeld: (state, action: PayloadAction) => { + state.isMoveStageKeyHeld = action.payload; + }, + addImageToStagingArea: ( + state, + action: PayloadAction<{ + boundingBox: IRect; + image: InvokeAI.Image; + }> + ) => { + const { boundingBox, image } = action.payload; + + if (!boundingBox || !image) return; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState.stagingArea.images.push({ + kind: 'image', + layer: 'base', + ...boundingBox, + image, + }); + + state.layerState.stagingArea.selectedImageIndex = + state.layerState.stagingArea.images.length - 1; + + state.futureLayerStates = []; + }, + discardStagedImages: (state) => { + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState.stagingArea = { + ...initialLayerState.stagingArea, + }; + + state.futureLayerStates = []; + state.shouldShowStagingOutline = true; + state.shouldShowStagingOutline = true; + }, + addFillRect: (state) => { + const { boundingBoxCoordinates, boundingBoxDimensions, brushColor } = + state; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState.objects.push({ + kind: 'fillRect', + layer: 'base', + ...boundingBoxCoordinates, + ...boundingBoxDimensions, + color: brushColor, + }); + + state.futureLayerStates = []; + }, + addEraseRect: (state) => { + const { boundingBoxCoordinates, boundingBoxDimensions } = state; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState.objects.push({ + kind: 'eraseRect', + layer: 'base', + ...boundingBoxCoordinates, + ...boundingBoxDimensions, + }); + + state.futureLayerStates = []; + }, + addLine: (state, action: PayloadAction) => { + const { tool, layer, brushColor, brushSize, shouldRestrictStrokesToBox } = + state; + + if (tool === 'move' || tool === 'colorPicker') return; + + const newStrokeWidth = brushSize / 2; + + // set & then spread this to only conditionally add the "color" key + const newColor = + layer === 'base' && tool === 'brush' ? { color: brushColor } : {}; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + const newLine: CanvasMaskLine | CanvasBaseLine = { + kind: 'line', + layer, + tool, + strokeWidth: newStrokeWidth, + points: action.payload, + ...newColor, + }; + + if (shouldRestrictStrokesToBox) { + newLine.clip = { + ...state.boundingBoxCoordinates, + ...state.boundingBoxDimensions, + }; + } + + state.layerState.objects.push(newLine); + + state.futureLayerStates = []; + }, + addPointToCurrentLine: (state, action: PayloadAction) => { + const lastLine = state.layerState.objects.findLast(isCanvasAnyLine); + + if (!lastLine) return; + + lastLine.points.push(...action.payload); + }, + undo: (state) => { + const targetState = state.pastLayerStates.pop(); + + if (!targetState) return; + + state.futureLayerStates.unshift(_.cloneDeep(state.layerState)); + + if (state.futureLayerStates.length > state.maxHistory) { + state.futureLayerStates.pop(); + } + + state.layerState = targetState; + }, + redo: (state) => { + const targetState = state.futureLayerStates.shift(); + + if (!targetState) return; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState = targetState; + }, + setShouldShowGrid: (state, action: PayloadAction) => { + state.shouldShowGrid = action.payload; + }, + setIsMovingStage: (state, action: PayloadAction) => { + state.isMovingStage = action.payload; + }, + setShouldSnapToGrid: (state, action: PayloadAction) => { + state.shouldSnapToGrid = action.payload; + }, + setShouldAutoSave: (state, action: PayloadAction) => { + state.shouldAutoSave = action.payload; + }, + setShouldShowIntermediates: (state, action: PayloadAction) => { + state.shouldShowIntermediates = action.payload; + }, + resetCanvas: (state) => { + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + state.layerState = initialLayerState; + state.futureLayerStates = []; + }, + setCanvasContainerDimensions: ( + state, + action: PayloadAction + ) => { + state.canvasContainerDimensions = action.payload; + }, + resizeAndScaleCanvas: (state) => { + const { width: containerWidth, height: containerHeight } = + state.canvasContainerDimensions; + + const initialCanvasImage = + state.layerState.objects.find(isCanvasBaseImage); + + const newStageDimensions = { + width: Math.floor(containerWidth), + height: Math.floor(containerHeight), + }; + + if (!initialCanvasImage) { + const newScale = calculateScale( + newStageDimensions.width, + newStageDimensions.height, + 512, + 512, + STAGE_PADDING_PERCENTAGE + ); + + const newCoordinates = calculateCoordinates( + newStageDimensions.width, + newStageDimensions.height, + 0, + 0, + 512, + 512, + newScale + ); + + const newBoundingBoxDimensions = { width: 512, height: 512 }; + + state.stageScale = newScale; + state.stageCoordinates = newCoordinates; + state.stageDimensions = newStageDimensions; + state.boundingBoxCoordinates = { x: 0, y: 0 }; + state.boundingBoxDimensions = newBoundingBoxDimensions; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + newBoundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + + return; + } + + const { width: imageWidth, height: imageHeight } = initialCanvasImage; + + const padding = 0.95; + + const newScale = calculateScale( + containerWidth, + containerHeight, + imageWidth, + imageHeight, + padding + ); + + const newCoordinates = calculateCoordinates( + newStageDimensions.width, + newStageDimensions.height, + 0, + 0, + imageWidth, + imageHeight, + newScale + ); + + state.minimumStageScale = newScale; + state.stageScale = newScale; + state.stageCoordinates = floorCoordinates(newCoordinates); + state.stageDimensions = newStageDimensions; + + state.isCanvasInitialized = true; + }, + resizeCanvas: (state) => { + const { width: containerWidth, height: containerHeight } = + state.canvasContainerDimensions; + + const newStageDimensions = { + width: Math.floor(containerWidth), + height: Math.floor(containerHeight), + }; + + state.stageDimensions = newStageDimensions; + + if (!state.layerState.objects.find(isCanvasBaseImage)) { + const newScale = calculateScale( + newStageDimensions.width, + newStageDimensions.height, + 512, + 512, + STAGE_PADDING_PERCENTAGE + ); + + const newCoordinates = calculateCoordinates( + newStageDimensions.width, + newStageDimensions.height, + 0, + 0, + 512, + 512, + newScale + ); + + const newBoundingBoxDimensions = { width: 512, height: 512 }; + + state.stageScale = newScale; + + state.stageCoordinates = newCoordinates; + state.boundingBoxCoordinates = { x: 0, y: 0 }; + state.boundingBoxDimensions = newBoundingBoxDimensions; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + newBoundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + } + }, + resetCanvasView: ( + state, + action: PayloadAction<{ + contentRect: IRect; + }> + ) => { + const { contentRect } = action.payload; + const { + stageDimensions: { width: stageWidth, height: stageHeight }, + } = state; + + const { x, y, width, height } = contentRect; + + if (width !== 0 && height !== 0) { + const newScale = calculateScale( + stageWidth, + stageHeight, + width, + height, + STAGE_PADDING_PERCENTAGE + ); + + const newCoordinates = calculateCoordinates( + stageWidth, + stageHeight, + x, + y, + width, + height, + newScale + ); + + state.stageScale = newScale; + state.stageCoordinates = newCoordinates; + } else { + const newScale = calculateScale( + stageWidth, + stageHeight, + 512, + 512, + STAGE_PADDING_PERCENTAGE + ); + + const newCoordinates = calculateCoordinates( + stageWidth, + stageHeight, + 0, + 0, + 512, + 512, + newScale + ); + + const newBoundingBoxDimensions = { width: 512, height: 512 }; + + state.stageScale = newScale; + state.stageCoordinates = newCoordinates; + state.boundingBoxCoordinates = { x: 0, y: 0 }; + state.boundingBoxDimensions = newBoundingBoxDimensions; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + newBoundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + } + }, + nextStagingAreaImage: (state) => { + const currentIndex = state.layerState.stagingArea.selectedImageIndex; + const length = state.layerState.stagingArea.images.length; + + state.layerState.stagingArea.selectedImageIndex = Math.min( + currentIndex + 1, + length - 1 + ); + }, + prevStagingAreaImage: (state) => { + const currentIndex = state.layerState.stagingArea.selectedImageIndex; + + state.layerState.stagingArea.selectedImageIndex = Math.max( + currentIndex - 1, + 0 + ); + }, + commitStagingAreaImage: (state) => { + const { images, selectedImageIndex } = state.layerState.stagingArea; + + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + if (state.pastLayerStates.length > state.maxHistory) { + state.pastLayerStates.shift(); + } + + state.layerState.objects.push({ + ...images[selectedImageIndex], + }); + + state.layerState.stagingArea = { + ...initialLayerState.stagingArea, + }; + + state.futureLayerStates = []; + state.shouldShowStagingOutline = true; + state.shouldShowStagingImage = true; + }, + fitBoundingBoxToStage: (state) => { + const { + boundingBoxDimensions, + boundingBoxCoordinates, + stageDimensions, + stageScale, + } = state; + const scaledStageWidth = stageDimensions.width / stageScale; + const scaledStageHeight = stageDimensions.height / stageScale; + + if ( + boundingBoxCoordinates.x < 0 || + boundingBoxCoordinates.x + boundingBoxDimensions.width > + scaledStageWidth || + boundingBoxCoordinates.y < 0 || + boundingBoxCoordinates.y + boundingBoxDimensions.height > + scaledStageHeight + ) { + const newBoundingBoxDimensions = { + width: roundDownToMultiple(_.clamp(scaledStageWidth, 64, 512), 64), + height: roundDownToMultiple(_.clamp(scaledStageHeight, 64, 512), 64), + }; + + const newBoundingBoxCoordinates = { + x: roundToMultiple( + scaledStageWidth / 2 - newBoundingBoxDimensions.width / 2, + 64 + ), + y: roundToMultiple( + scaledStageHeight / 2 - newBoundingBoxDimensions.height / 2, + 64 + ), + }; + + state.boundingBoxDimensions = newBoundingBoxDimensions; + state.boundingBoxCoordinates = newBoundingBoxCoordinates; + + if (state.boundingBoxScaleMethod === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + newBoundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + } + }, + setBoundingBoxScaleMethod: ( + state, + action: PayloadAction + ) => { + state.boundingBoxScaleMethod = action.payload; + + if (action.payload === 'auto') { + const scaledDimensions = getScaledBoundingBoxDimensions( + state.boundingBoxDimensions + ); + state.scaledBoundingBoxDimensions = scaledDimensions; + } + }, + setScaledBoundingBoxDimensions: ( + state, + action: PayloadAction + ) => { + state.scaledBoundingBoxDimensions = action.payload; + }, + setShouldShowStagingImage: (state, action: PayloadAction) => { + state.shouldShowStagingImage = action.payload; + }, + setShouldShowStagingOutline: (state, action: PayloadAction) => { + state.shouldShowStagingOutline = action.payload; + }, + setShouldShowCanvasDebugInfo: (state, action: PayloadAction) => { + state.shouldShowCanvasDebugInfo = action.payload; + }, + setShouldRestrictStrokesToBox: (state, action: PayloadAction) => { + state.shouldRestrictStrokesToBox = action.payload; + }, + setShouldCropToBoundingBoxOnSave: ( + state, + action: PayloadAction + ) => { + state.shouldCropToBoundingBoxOnSave = action.payload; + }, + setColorPickerColor: (state, action: PayloadAction) => { + state.colorPickerColor = action.payload; + }, + commitColorPickerColor: (state) => { + state.brushColor = { + ...state.colorPickerColor, + a: state.brushColor.a, + }; + state.tool = 'brush'; + }, + setMergedCanvas: (state, action: PayloadAction) => { + state.pastLayerStates.push(_.cloneDeep(state.layerState)); + + state.futureLayerStates = []; + + state.layerState.objects = [action.payload]; + }, + resetCanvasInteractionState: (state) => { + state.cursorPosition = null; + state.isDrawing = false; + state.isMouseOverBoundingBox = false; + state.isMoveBoundingBoxKeyHeld = false; + state.isMoveStageKeyHeld = false; + state.isMovingBoundingBox = false; + state.isMovingStage = false; + state.isTransformingBoundingBox = false; + }, + mouseLeftCanvas: (state) => { + state.cursorPosition = null; + state.isDrawing = false; + state.isMouseOverBoundingBox = false; + state.isMovingBoundingBox = false; + state.isTransformingBoundingBox = false; + }, + }, +}); + +export const { + addEraseRect, + addFillRect, + addImageToStagingArea, + addLine, + addPointToCurrentLine, + clearCanvasHistory, + clearMask, + commitColorPickerColor, + commitStagingAreaImage, + discardStagedImages, + fitBoundingBoxToStage, + mouseLeftCanvas, + nextStagingAreaImage, + prevStagingAreaImage, + redo, + resetCanvas, + resetCanvasInteractionState, + resetCanvasView, + resizeAndScaleCanvas, + resizeCanvas, + setBoundingBoxCoordinates, + setBoundingBoxDimensions, + setBoundingBoxPreviewFill, + setBoundingBoxScaleMethod, + setBrushColor, + setBrushSize, + setCanvasContainerDimensions, + setColorPickerColor, + setCursorPosition, + setDoesCanvasNeedScaling, + setInitialCanvasImage, + setInpaintReplace, + setIsDrawing, + setIsMaskEnabled, + setIsMouseOverBoundingBox, + setIsMoveBoundingBoxKeyHeld, + setIsMoveStageKeyHeld, + setIsMovingBoundingBox, + setIsMovingStage, + setIsTransformingBoundingBox, + setLayer, + setMaskColor, + setMergedCanvas, + setShouldAutoSave, + setShouldCropToBoundingBoxOnSave, + setShouldDarkenOutsideBoundingBox, + setShouldLockBoundingBox, + setShouldPreserveMaskedArea, + setShouldShowBoundingBox, + setShouldShowBrush, + setShouldShowBrushPreview, + setShouldShowCanvasDebugInfo, + setShouldShowCheckboardTransparency, + setShouldShowGrid, + setShouldShowIntermediates, + setShouldShowStagingImage, + setShouldShowStagingOutline, + setShouldSnapToGrid, + setShouldUseInpaintReplace, + setStageCoordinates, + setStageScale, + setTool, + toggleShouldLockBoundingBox, + toggleTool, + undo, + setScaledBoundingBoxDimensions, + setShouldRestrictStrokesToBox, +} = canvasSlice.actions; + +export default canvasSlice.reducer; diff --git a/frontend/src/features/canvas/store/canvasTypes.ts b/frontend/src/features/canvas/store/canvasTypes.ts new file mode 100644 index 0000000000..d2f93b39ef --- /dev/null +++ b/frontend/src/features/canvas/store/canvasTypes.ts @@ -0,0 +1,167 @@ +import * as InvokeAI from 'app/invokeai'; +import { IRect, Vector2d } from 'konva/lib/types'; +import { RgbaColor } from 'react-colorful'; + +export const LAYER_NAMES_DICT = [ + { key: 'Base', value: 'base' }, + { key: 'Mask', value: 'mask' }, +]; + +export const LAYER_NAMES = ['base', 'mask'] as const; + +export type CanvasLayer = typeof LAYER_NAMES[number]; + +export const BOUNDING_BOX_SCALES_DICT = [ + { key: 'Auto', value: 'auto' }, + { key: 'Manual', value: 'manual' }, + { key: 'None', value: 'none' }, +]; + +export const BOUNDING_BOX_SCALES = ['none', 'auto', 'manual'] as const; + +export type BoundingBoxScale = typeof BOUNDING_BOX_SCALES[number]; + +export type CanvasDrawingTool = 'brush' | 'eraser'; + +export type CanvasTool = CanvasDrawingTool | 'move' | 'colorPicker'; + +export type Dimensions = { + width: number; + height: number; +}; + +export type CanvasImage = { + kind: 'image'; + layer: 'base'; + x: number; + y: number; + width: number; + height: number; + image: InvokeAI.Image; +}; + +export type CanvasMaskLine = { + layer: 'mask'; + kind: 'line'; + tool: CanvasDrawingTool; + strokeWidth: number; + points: number[]; + clip?: IRect; +}; + +export type CanvasBaseLine = { + layer: 'base'; + color?: RgbaColor; + kind: 'line'; + tool: CanvasDrawingTool; + strokeWidth: number; + points: number[]; + clip?: IRect; +}; + +export type CanvasFillRect = { + kind: 'fillRect'; + layer: 'base'; + x: number; + y: number; + width: number; + height: number; + color: RgbaColor; +}; + +export type CanvasEraseRect = { + kind: 'eraseRect'; + layer: 'base'; + x: number; + y: number; + width: number; + height: number; +}; + +export type CanvasObject = + | CanvasImage + | CanvasBaseLine + | CanvasMaskLine + | CanvasFillRect + | CanvasEraseRect; + +export type CanvasLayerState = { + objects: CanvasObject[]; + stagingArea: { + images: CanvasImage[]; + selectedImageIndex: number; + }; +}; + +// type guards +export const isCanvasMaskLine = (obj: CanvasObject): obj is CanvasMaskLine => + obj.kind === 'line' && obj.layer === 'mask'; + +export const isCanvasBaseLine = (obj: CanvasObject): obj is CanvasBaseLine => + obj.kind === 'line' && obj.layer === 'base'; + +export const isCanvasBaseImage = (obj: CanvasObject): obj is CanvasImage => + obj.kind === 'image' && obj.layer === 'base'; + +export const isCanvasFillRect = (obj: CanvasObject): obj is CanvasFillRect => + obj.kind === 'fillRect' && obj.layer === 'base'; + +export const isCanvasEraseRect = (obj: CanvasObject): obj is CanvasEraseRect => + obj.kind === 'eraseRect' && obj.layer === 'base'; + +export const isCanvasAnyLine = ( + obj: CanvasObject +): obj is CanvasMaskLine | CanvasBaseLine => obj.kind === 'line'; + +export interface CanvasState { + boundingBoxCoordinates: Vector2d; + boundingBoxDimensions: Dimensions; + boundingBoxPreviewFill: RgbaColor; + boundingBoxScaleMethod: BoundingBoxScale; + brushColor: RgbaColor; + brushSize: number; + canvasContainerDimensions: Dimensions; + colorPickerColor: RgbaColor; + cursorPosition: Vector2d | null; + doesCanvasNeedScaling: boolean; + futureLayerStates: CanvasLayerState[]; + inpaintReplace: number; + intermediateImage?: InvokeAI.Image; + isCanvasInitialized: boolean; + isDrawing: boolean; + isMaskEnabled: boolean; + isMouseOverBoundingBox: boolean; + isMoveBoundingBoxKeyHeld: boolean; + isMoveStageKeyHeld: boolean; + isMovingBoundingBox: boolean; + isMovingStage: boolean; + isTransformingBoundingBox: boolean; + layer: CanvasLayer; + layerState: CanvasLayerState; + maskColor: RgbaColor; + maxHistory: number; + minimumStageScale: number; + pastLayerStates: CanvasLayerState[]; + scaledBoundingBoxDimensions: Dimensions; + shouldAutoSave: boolean; + shouldCropToBoundingBoxOnSave: boolean; + shouldDarkenOutsideBoundingBox: boolean; + shouldLockBoundingBox: boolean; + shouldPreserveMaskedArea: boolean; + shouldRestrictStrokesToBox: boolean; + shouldShowBoundingBox: boolean; + shouldShowBrush: boolean; + shouldShowBrushPreview: boolean; + shouldShowCanvasDebugInfo: boolean; + shouldShowCheckboardTransparency: boolean; + shouldShowGrid: boolean; + shouldShowIntermediates: boolean; + shouldShowStagingImage: boolean; + shouldShowStagingOutline: boolean; + shouldSnapToGrid: boolean; + shouldUseInpaintReplace: boolean; + stageCoordinates: Vector2d; + stageDimensions: Dimensions; + stageScale: number; + tool: CanvasTool; +} diff --git a/frontend/src/features/canvas/store/thunks/mergeAndUploadCanvas.ts b/frontend/src/features/canvas/store/thunks/mergeAndUploadCanvas.ts new file mode 100644 index 0000000000..d04c56fb24 --- /dev/null +++ b/frontend/src/features/canvas/store/thunks/mergeAndUploadCanvas.ts @@ -0,0 +1,171 @@ +import { AnyAction, ThunkAction } from '@reduxjs/toolkit'; +import { RootState } from 'app/store'; +import * as InvokeAI from 'app/invokeai'; +import { v4 as uuidv4 } from 'uuid'; +import layerToDataURL from '../../util/layerToDataURL'; +import downloadFile from '../../util/downloadFile'; +import copyImage from '../../util/copyImage'; +import { getCanvasBaseLayer } from '../../util/konvaInstanceProvider'; +import { + addToast, + setCurrentStatus, + setIsCancelable, + setIsProcessing, + setProcessingIndeterminateTask, +} from 'features/system/store/systemSlice'; +import { addImage } from 'features/gallery/store/gallerySlice'; +import { setMergedCanvas } from '../canvasSlice'; +import { CanvasState } from '../canvasTypes'; + +type MergeAndUploadCanvasConfig = { + cropVisible?: boolean; + cropToBoundingBox?: boolean; + shouldSaveToGallery?: boolean; + shouldDownload?: boolean; + shouldCopy?: boolean; + shouldSetAsInitialImage?: boolean; +}; + +const defaultConfig: MergeAndUploadCanvasConfig = { + cropVisible: false, + cropToBoundingBox: false, + shouldSaveToGallery: false, + shouldDownload: false, + shouldCopy: false, + shouldSetAsInitialImage: true, +}; + +export const mergeAndUploadCanvas = + (config = defaultConfig): ThunkAction => + async (dispatch, getState) => { + const { + cropVisible, + cropToBoundingBox, + shouldSaveToGallery, + shouldDownload, + shouldCopy, + shouldSetAsInitialImage, + } = config; + + dispatch(setProcessingIndeterminateTask('Exporting Image')); + dispatch(setIsCancelable(false)); + + const state = getState() as RootState; + + const { + stageScale, + boundingBoxCoordinates, + boundingBoxDimensions, + stageCoordinates, + } = state.canvas as CanvasState; + + const canvasBaseLayer = getCanvasBaseLayer(); + + if (!canvasBaseLayer) { + dispatch(setIsProcessing(false)); + dispatch(setIsCancelable(true)); + + return; + } + + const { dataURL, boundingBox: originalBoundingBox } = layerToDataURL( + canvasBaseLayer, + stageScale, + stageCoordinates, + cropToBoundingBox + ? { ...boundingBoxCoordinates, ...boundingBoxDimensions } + : undefined + ); + + if (!dataURL) { + dispatch(setIsProcessing(false)); + dispatch(setIsCancelable(true)); + return; + } + + const formData = new FormData(); + + formData.append( + 'data', + JSON.stringify({ + dataURL, + filename: 'merged_canvas.png', + kind: shouldSaveToGallery ? 'result' : 'temp', + cropVisible, + }) + ); + + const response = await fetch(window.location.origin + '/upload', { + method: 'POST', + body: formData, + }); + + const image = (await response.json()) as InvokeAI.ImageUploadResponse; + + const { url, width, height } = image; + + const newImage: InvokeAI.Image = { + uuid: uuidv4(), + category: shouldSaveToGallery ? 'result' : 'user', + ...image, + }; + + if (shouldDownload) { + downloadFile(url); + dispatch( + addToast({ + title: 'Image Download Started', + status: 'success', + duration: 2500, + isClosable: true, + }) + ); + } + + if (shouldCopy) { + copyImage(url, width, height); + dispatch( + addToast({ + title: 'Image Copied', + status: 'success', + duration: 2500, + isClosable: true, + }) + ); + } + + if (shouldSaveToGallery) { + dispatch(addImage({ image: newImage, category: 'result' })); + dispatch( + addToast({ + title: 'Image Saved to Gallery', + status: 'success', + duration: 2500, + isClosable: true, + }) + ); + } + + if (shouldSetAsInitialImage) { + dispatch( + setMergedCanvas({ + kind: 'image', + layer: 'base', + ...originalBoundingBox, + image: newImage, + }) + ); + dispatch( + addToast({ + title: 'Canvas Merged', + status: 'success', + duration: 2500, + isClosable: true, + }) + ); + } + + dispatch(setIsProcessing(false)); + dispatch(setCurrentStatus('Connected')); + dispatch(setIsCancelable(true)); + }; diff --git a/frontend/src/features/canvas/util/calculateCoordinates.ts b/frontend/src/features/canvas/util/calculateCoordinates.ts new file mode 100644 index 0000000000..c05a750979 --- /dev/null +++ b/frontend/src/features/canvas/util/calculateCoordinates.ts @@ -0,0 +1,17 @@ +import { Vector2d } from 'konva/lib/types'; + +const calculateCoordinates = ( + containerWidth: number, + containerHeight: number, + containerX: number, + containerY: number, + contentWidth: number, + contentHeight: number, + scale: number +): Vector2d => { + const x = containerWidth / 2 - (containerX + contentWidth / 2) * scale; + const y = containerHeight / 2 - (containerY + contentHeight / 2) * scale; + return { x, y }; +}; + +export default calculateCoordinates; diff --git a/frontend/src/features/canvas/util/calculateScale.ts b/frontend/src/features/canvas/util/calculateScale.ts new file mode 100644 index 0000000000..954c36869c --- /dev/null +++ b/frontend/src/features/canvas/util/calculateScale.ts @@ -0,0 +1,14 @@ +const calculateScale = ( + containerWidth: number, + containerHeight: number, + contentWidth: number, + contentHeight: number, + padding = 0.95 +): number => { + const scaleX = (containerWidth * padding) / contentWidth; + const scaleY = (containerHeight * padding) / contentHeight; + const scaleFit = Math.min(1, Math.min(scaleX, scaleY)); + return scaleFit; +}; + +export default calculateScale; diff --git a/frontend/src/features/tabs/Inpainting/util/colorToString.ts b/frontend/src/features/canvas/util/colorToString.ts similarity index 100% rename from frontend/src/features/tabs/Inpainting/util/colorToString.ts rename to frontend/src/features/canvas/util/colorToString.ts diff --git a/frontend/src/features/canvas/util/constants.ts b/frontend/src/features/canvas/util/constants.ts new file mode 100644 index 0000000000..2579cc33eb --- /dev/null +++ b/frontend/src/features/canvas/util/constants.ts @@ -0,0 +1,17 @@ +// bounding box anchor size +export const TRANSFORMER_ANCHOR_SIZE = 15; + +// canvas wheel zoom exponential scale factor +export const CANVAS_SCALE_BY = 0.999; + +// minimum (furthest-zoomed-out) scale +export const MIN_CANVAS_SCALE = 0.1; + +// maximum (furthest-zoomed-in) scale +export const MAX_CANVAS_SCALE = 20; + +// padding given to initial image/bounding box when stage view is reset +export const STAGE_PADDING_PERCENTAGE = 0.95; + +export const COLOR_PICKER_SIZE = 30; +export const COLOR_PICKER_STROKE_RADIUS = 10; diff --git a/frontend/src/features/canvas/util/copyImage.ts b/frontend/src/features/canvas/util/copyImage.ts new file mode 100644 index 0000000000..06abbe47fe --- /dev/null +++ b/frontend/src/features/canvas/util/copyImage.ts @@ -0,0 +1,34 @@ +/** + * Copies an image to the clipboard by drawing it to a canvas and then + * calling toBlob() on the canvas. + */ +const copyImage = (url: string, width: number, height: number) => { + const imageElement = document.createElement('img'); + + imageElement.addEventListener('load', () => { + const canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + const context = canvas.getContext('2d'); + + if (!context) return; + + context.drawImage(imageElement, 0, 0); + + canvas.toBlob((blob) => { + blob && + navigator.clipboard.write([ + new ClipboardItem({ + [blob.type]: blob, + }), + ]); + }); + + canvas.remove(); + imageElement.remove(); + }); + + imageElement.src = url; +}; + +export default copyImage; diff --git a/frontend/src/features/canvas/util/downloadFile.ts b/frontend/src/features/canvas/util/downloadFile.ts new file mode 100644 index 0000000000..abb902d019 --- /dev/null +++ b/frontend/src/features/canvas/util/downloadFile.ts @@ -0,0 +1,14 @@ +/** + * Downloads a file, given its URL. + */ +const downloadFile = (url: string) => { + const a = document.createElement('a'); + a.href = url; + a.download = ''; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + a.remove(); +}; + +export default downloadFile; diff --git a/frontend/src/features/canvas/util/floorCoordinates.ts b/frontend/src/features/canvas/util/floorCoordinates.ts new file mode 100644 index 0000000000..aa3c96ddb1 --- /dev/null +++ b/frontend/src/features/canvas/util/floorCoordinates.ts @@ -0,0 +1,10 @@ +import { Vector2d } from 'konva/lib/types'; + +const floorCoordinates = (coord: Vector2d): Vector2d => { + return { + x: Math.floor(coord.x), + y: Math.floor(coord.y), + }; +}; + +export default floorCoordinates; diff --git a/frontend/src/features/canvas/util/generateMask.ts b/frontend/src/features/canvas/util/generateMask.ts new file mode 100644 index 0000000000..7c0c7c08fa --- /dev/null +++ b/frontend/src/features/canvas/util/generateMask.ts @@ -0,0 +1,64 @@ +import Konva from 'konva'; +import { IRect } from 'konva/lib/types'; +import { CanvasMaskLine } from 'features/canvas/store/canvasTypes'; + +/** + * Generating a mask image from InpaintingCanvas.tsx is not as simple + * as calling toDataURL() on the canvas, because the mask may be represented + * by colored lines or transparency, or the user may have inverted the mask + * display. + * + * So we need to regenerate the mask image by creating an offscreen canvas, + * drawing the mask and compositing everything correctly to output a valid + * mask image. + */ +const generateMask = (lines: CanvasMaskLine[], boundingBox: IRect): string => { + // create an offscreen canvas and add the mask to it + const { width, height } = boundingBox; + + const offscreenContainer = document.createElement('div'); + + const stage = new Konva.Stage({ + container: offscreenContainer, + width: width, + height: height, + }); + + const baseLayer = new Konva.Layer(); + const maskLayer = new Konva.Layer(); + + // composite the image onto the mask layer + baseLayer.add( + new Konva.Rect({ + ...boundingBox, + fill: 'white', + }) + ); + + lines.forEach((line) => + maskLayer.add( + new Konva.Line({ + points: line.points, + stroke: 'black', + strokeWidth: line.strokeWidth * 2, + tension: 0, + lineCap: 'round', + lineJoin: 'round', + shadowForStrokeEnabled: false, + globalCompositeOperation: + line.tool === 'brush' ? 'source-over' : 'destination-out', + }) + ) + ); + + stage.add(baseLayer); + stage.add(maskLayer); + + const dataURL = stage.toDataURL({ ...boundingBox }); + + offscreenContainer.remove(); + + return dataURL; +}; + +export default generateMask; diff --git a/frontend/src/features/canvas/util/getScaledBoundingBoxDimensions.ts b/frontend/src/features/canvas/util/getScaledBoundingBoxDimensions.ts new file mode 100644 index 0000000000..de1b8206cc --- /dev/null +++ b/frontend/src/features/canvas/util/getScaledBoundingBoxDimensions.ts @@ -0,0 +1,39 @@ +import { roundToMultiple } from 'common/util/roundDownToMultiple'; +import { Dimensions } from '../store/canvasTypes'; + +const getScaledBoundingBoxDimensions = (dimensions: Dimensions) => { + const { width, height } = dimensions; + + const scaledDimensions = { width, height }; + const targetArea = 512 * 512; + const aspectRatio = width / height; + let currentArea = width * height; + let maxDimension = 448; + while (currentArea < targetArea) { + maxDimension += 64; + if (width === height) { + scaledDimensions.width = 512; + scaledDimensions.height = 512; + break; + } else { + if (aspectRatio > 1) { + scaledDimensions.width = maxDimension; + scaledDimensions.height = roundToMultiple( + maxDimension / aspectRatio, + 64 + ); + } else if (aspectRatio < 1) { + scaledDimensions.height = maxDimension; + scaledDimensions.width = roundToMultiple( + maxDimension * aspectRatio, + 64 + ); + } + currentArea = scaledDimensions.width * scaledDimensions.height; + } + } + + return scaledDimensions; +}; + +export default getScaledBoundingBoxDimensions; diff --git a/frontend/src/features/tabs/Inpainting/util/getScaledCursorPosition.ts b/frontend/src/features/canvas/util/getScaledCursorPosition.ts similarity index 82% rename from frontend/src/features/tabs/Inpainting/util/getScaledCursorPosition.ts rename to frontend/src/features/canvas/util/getScaledCursorPosition.ts index 07487f4ea8..03a4d749bf 100644 --- a/frontend/src/features/tabs/Inpainting/util/getScaledCursorPosition.ts +++ b/frontend/src/features/canvas/util/getScaledCursorPosition.ts @@ -10,8 +10,8 @@ const getScaledCursorPosition = (stage: Stage) => { const scaledCursorPosition = stageTransform.invert().point(pointerPosition); return { - x: Math.floor(scaledCursorPosition.x), - y: Math.floor(scaledCursorPosition.y), + x: scaledCursorPosition.x, + y: scaledCursorPosition.y, }; }; diff --git a/frontend/src/features/canvas/util/konvaInstanceProvider.ts b/frontend/src/features/canvas/util/konvaInstanceProvider.ts new file mode 100644 index 0000000000..4a36fb72ac --- /dev/null +++ b/frontend/src/features/canvas/util/konvaInstanceProvider.ts @@ -0,0 +1,16 @@ +import Konva from 'konva'; + +let canvasBaseLayer: Konva.Layer | null = null; +let canvasStage: Konva.Stage | null = null; + +export const setCanvasBaseLayer = (layer: Konva.Layer) => { + canvasBaseLayer = layer; +}; + +export const getCanvasBaseLayer = () => canvasBaseLayer; + +export const setCanvasStage = (stage: Konva.Stage) => { + canvasStage = stage; +}; + +export const getCanvasStage = () => canvasStage; diff --git a/frontend/src/features/canvas/util/layerToDataURL.ts b/frontend/src/features/canvas/util/layerToDataURL.ts new file mode 100644 index 0000000000..5e92eba5bc --- /dev/null +++ b/frontend/src/features/canvas/util/layerToDataURL.ts @@ -0,0 +1,53 @@ +import Konva from 'konva'; +import { IRect, Vector2d } from 'konva/lib/types'; + +const layerToDataURL = ( + layer: Konva.Layer, + stageScale: number, + stageCoordinates: Vector2d, + boundingBox?: IRect +) => { + const tempScale = layer.scale(); + + const relativeClientRect = layer.getClientRect({ + relativeTo: layer.getParent(), + }); + + // Scale the canvas before getting it as a Blob + layer.scale({ + x: 1 / stageScale, + y: 1 / stageScale, + }); + + const { x, y, width, height } = layer.getClientRect(); + const dataURLBoundingBox = boundingBox + ? { + x: Math.round(boundingBox.x + stageCoordinates.x), + y: Math.round(boundingBox.y + stageCoordinates.y), + width: Math.round(boundingBox.width), + height: Math.round(boundingBox.height), + } + : { + x: Math.round(x), + y: Math.round(y), + width: Math.round(width), + height: Math.round(height), + }; + + const dataURL = layer.toDataURL(dataURLBoundingBox); + + // Unscale the canvas + layer.scale(tempScale); + + return { + dataURL, + boundingBox: { + x: Math.round(relativeClientRect.x), + y: Math.round(relativeClientRect.y), + width: Math.round(width), + height: Math.round(height), + }, + }; +}; + +export default layerToDataURL; diff --git a/frontend/src/features/canvas/util/roundDimensionsTo64.ts b/frontend/src/features/canvas/util/roundDimensionsTo64.ts new file mode 100644 index 0000000000..992d343fc9 --- /dev/null +++ b/frontend/src/features/canvas/util/roundDimensionsTo64.ts @@ -0,0 +1,11 @@ +import { roundToMultiple } from 'common/util/roundDownToMultiple'; +import { Dimensions } from '../store/canvasTypes'; + +const roundDimensionsTo64 = (dimensions: Dimensions): Dimensions => { + return { + width: roundToMultiple(dimensions.width, 64), + height: roundToMultiple(dimensions.height, 64), + }; +}; + +export default roundDimensionsTo64; diff --git a/frontend/src/features/canvas/util/roundToHundreth.ts b/frontend/src/features/canvas/util/roundToHundreth.ts new file mode 100644 index 0000000000..1b05e7f64d --- /dev/null +++ b/frontend/src/features/canvas/util/roundToHundreth.ts @@ -0,0 +1,5 @@ +const roundToHundreth = (val: number): number => { + return Math.round(val * 100) / 100; +}; + +export default roundToHundreth; diff --git a/frontend/src/features/gallery/CurrentImageButtons.scss b/frontend/src/features/gallery/components/CurrentImageButtons.scss similarity index 75% rename from frontend/src/features/gallery/CurrentImageButtons.scss rename to frontend/src/features/gallery/components/CurrentImageButtons.scss index 982fcc4867..a48454bb8c 100644 --- a/frontend/src/features/gallery/CurrentImageButtons.scss +++ b/frontend/src/features/gallery/components/CurrentImageButtons.scss @@ -13,11 +13,18 @@ max-width: 25rem; } + .current-image-send-to-popover { + .invokeai__button { + place-content: start; + } + } + .chakra-popover__popper { z-index: 11; } .delete-image-btn { + background-color: var(--btn-base-color); svg { fill: var(--btn-delete-image); } diff --git a/frontend/src/features/gallery/CurrentImageButtons.tsx b/frontend/src/features/gallery/components/CurrentImageButtons.tsx similarity index 76% rename from frontend/src/features/gallery/CurrentImageButtons.tsx rename to frontend/src/features/gallery/components/CurrentImageButtons.tsx index b95e16dda9..616a2e7e7a 100644 --- a/frontend/src/features/gallery/CurrentImageButtons.tsx +++ b/frontend/src/features/gallery/components/CurrentImageButtons.tsx @@ -1,31 +1,33 @@ import { createSelector } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; -import { useAppDispatch, useAppSelector } from '../../app/store'; -import { RootState } from '../../app/store'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { RootState } from 'app/store'; import { OptionsState, setActiveTab, setAllParameters, setInitialImage, + setIsLightBoxOpen, setPrompt, setSeed, setShouldShowImageDetails, -} from '../options/optionsSlice'; +} from 'features/options/store/optionsSlice'; import DeleteImageModal from './DeleteImageModal'; -import { SystemState } from '../system/systemSlice'; -import IAIButton from '../../common/components/IAIButton'; -import { runESRGAN, runFacetool } from '../../app/socketio/actions'; -import IAIIconButton from '../../common/components/IAIIconButton'; -import UpscaleOptions from '../options/AdvancedOptions/Upscale/UpscaleOptions'; -import FaceRestoreOptions from '../options/AdvancedOptions/FaceRestore/FaceRestoreOptions'; +import { SystemState } from 'features/system/store/systemSlice'; +import IAIButton from 'common/components/IAIButton'; +import { runESRGAN, runFacetool } from 'app/socketio/actions'; +import IAIIconButton from 'common/components/IAIIconButton'; +import UpscaleOptions from 'features/options/components/AdvancedOptions/Upscale/UpscaleOptions'; +import FaceRestoreOptions from 'features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions'; import { useHotkeys } from 'react-hotkeys-hook'; -import { ButtonGroup, Link, useClipboard, useToast } from '@chakra-ui/react'; +import { ButtonGroup, Link, useToast } from '@chakra-ui/react'; import { FaAsterisk, FaCode, FaCopy, FaDownload, + FaExpand, FaExpandArrowsAlt, FaGrinStars, FaQuoteRight, @@ -35,12 +37,12 @@ import { FaTrash, } from 'react-icons/fa'; import { - setImageToInpaint, - setNeedsCache, -} from '../tabs/Inpainting/inpaintingSlice'; -import { GalleryState } from './gallerySlice'; -import { activeTabNameSelector } from '../options/optionsSelectors'; -import IAIPopover from '../../common/components/IAIPopover'; + setDoesCanvasNeedScaling, + setInitialCanvasImage, +} from 'features/canvas/store/canvasSlice'; +import { GalleryState } from 'features/gallery/store/gallerySlice'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import IAIPopover from 'common/components/IAIPopover'; const systemSelector = createSelector( [ @@ -58,8 +60,12 @@ const systemSelector = createSelector( const { isProcessing, isConnected, isGFPGANAvailable, isESRGANAvailable } = system; - const { upscalingLevel, facetoolStrength, shouldShowImageDetails } = - options; + const { + upscalingLevel, + facetoolStrength, + shouldShowImageDetails, + isLightBoxOpen, + } = options; const { intermediateImage, currentImage } = gallery; @@ -74,6 +80,7 @@ const systemSelector = createSelector( currentImage, shouldShowImageDetails, activeTabName, + isLightBoxOpen, }; }, { @@ -99,28 +106,32 @@ const CurrentImageButtons = () => { shouldDisableToolbarButtons, shouldShowImageDetails, currentImage, + isLightBoxOpen, + activeTabName, } = useAppSelector(systemSelector); - const { onCopy } = useClipboard( - currentImage ? window.location.toString() + currentImage.url : '' - ); - const toast = useToast(); const handleClickUseAsInitialImage = () => { if (!currentImage) return; + if (isLightBoxOpen) dispatch(setIsLightBoxOpen(false)); dispatch(setInitialImage(currentImage)); dispatch(setActiveTab('img2img')); }; const handleCopyImageLink = () => { - onCopy(); - toast({ - title: 'Image Link Copied', - status: 'success', - duration: 2500, - isClosable: true, - }); + navigator.clipboard + .writeText( + currentImage ? window.location.toString() + currentImage.url : '' + ) + .then(() => { + toast({ + title: 'Image Link Copied', + status: 'success', + duration: 2500, + isClosable: true, + }); + }); }; useHotkeys( @@ -150,6 +161,11 @@ const CurrentImageButtons = () => { const handleClickUseAllParameters = () => { if (!currentImage) return; currentImage.metadata && dispatch(setAllParameters(currentImage.metadata)); + if (currentImage.metadata?.image.type === 'img2img') { + dispatch(setActiveTab('img2img')); + } else if (currentImage.metadata?.image.type === 'txt2img') { + dispatch(setActiveTab('txt2img')); + } }; useHotkeys( @@ -306,16 +322,19 @@ const CurrentImageButtons = () => { const handleClickShowImageDetails = () => dispatch(setShouldShowImageDetails(!shouldShowImageDetails)); - const handleSendToInpainting = () => { + const handleSendToCanvas = () => { if (!currentImage) return; + if (isLightBoxOpen) dispatch(setIsLightBoxOpen(false)); - dispatch(setImageToInpaint(currentImage)); + dispatch(setInitialCanvasImage(currentImage)); + dispatch(setDoesCanvasNeedScaling(true)); - dispatch(setActiveTab('inpainting')); - dispatch(setNeedsCache(true)); + if (activeTabName !== 'unifiedCanvas') { + dispatch(setActiveTab('unifiedCanvas')); + } toast({ - title: 'Sent to Inpainting', + title: 'Sent to Unified Canvas', status: 'success', duration: 2500, isClosable: true, @@ -339,6 +358,10 @@ const CurrentImageButtons = () => { [currentImage, shouldShowImageDetails] ); + const handleLightBox = () => { + dispatch(setIsLightBoxOpen(!isLightBoxOpen)); + }; + return (
@@ -358,10 +381,10 @@ const CurrentImageButtons = () => { } > - Send to Inpainting + Send to Unified Canvas {
+ } + tooltip={!isLightBoxOpen ? 'Open In Viewer (Z)' : 'Close Viewer (Z)'} + aria-label={ + !isLightBoxOpen ? 'Open In Viewer (Z)' : 'Close Viewer (Z)' + } + data-selected={isLightBoxOpen} + onClick={handleLightBox} + /> } - tooltip="Use Prompt" - aria-label="Use Prompt" + tooltip="Use Prompt (P)" + aria-label="Use Prompt (P)" isDisabled={!currentImage?.metadata?.image?.prompt} onClick={handleClickUsePrompt} /> } - tooltip="Use Seed" - aria-label="Use Seed" + tooltip="Use Seed (S)" + aria-label="Use Seed (S)" isDisabled={!currentImage?.metadata?.image?.seed} onClick={handleClickUseSeed} /> } - tooltip="Use All" - aria-label="Use All" + tooltip="Use All (A)" + aria-label="Use All (A)" isDisabled={ !['txt2img', 'img2img'].includes( currentImage?.metadata?.image?.type @@ -456,13 +488,15 @@ const CurrentImageButtons = () => { - } - tooltip="Details" - aria-label="Details" - data-selected={shouldShowImageDetails} - onClick={handleClickShowImageDetails} - /> + + } + tooltip="Info (I)" + aria-label="Info (I)" + data-selected={shouldShowImageDetails} + onClick={handleClickShowImageDetails} + /> + { tooltip="Delete Image" aria-label="Delete Image" isDisabled={!currentImage || !isConnected || isProcessing} - className="delete-image-btn" + style={{ backgroundColor: 'var(--btn-delete-image)' }} />
diff --git a/frontend/src/features/gallery/CurrentImageDisplay.scss b/frontend/src/features/gallery/components/CurrentImageDisplay.scss similarity index 94% rename from frontend/src/features/gallery/CurrentImageDisplay.scss rename to frontend/src/features/gallery/components/CurrentImageDisplay.scss index 7999ebe06b..498da35ea6 100644 --- a/frontend/src/features/gallery/CurrentImageDisplay.scss +++ b/frontend/src/features/gallery/components/CurrentImageDisplay.scss @@ -1,4 +1,4 @@ -@use '../../styles/Mixins/' as *; +@use '../../../styles/Mixins/' as *; .current-image-area { display: flex; @@ -18,7 +18,6 @@ height: 100%; img { - background-color: var(--img2img-img-bg-color); border-radius: 0.5rem; object-fit: contain; max-width: 100%; diff --git a/frontend/src/features/gallery/CurrentImageDisplay.tsx b/frontend/src/features/gallery/components/CurrentImageDisplay.tsx similarity index 83% rename from frontend/src/features/gallery/CurrentImageDisplay.tsx rename to frontend/src/features/gallery/components/CurrentImageDisplay.tsx index d784096f7c..a5c7816364 100644 --- a/frontend/src/features/gallery/CurrentImageDisplay.tsx +++ b/frontend/src/features/gallery/components/CurrentImageDisplay.tsx @@ -1,12 +1,12 @@ -import { RootState, useAppSelector } from '../../app/store'; +import { RootState, useAppSelector } from 'app/store'; import CurrentImageButtons from './CurrentImageButtons'; import { MdPhoto } from 'react-icons/md'; import CurrentImagePreview from './CurrentImagePreview'; -import { GalleryState } from './gallerySlice'; -import { OptionsState } from '../options/optionsSlice'; +import { GalleryState } from 'features/gallery/store/gallerySlice'; +import { OptionsState } from 'features/options/store/optionsSlice'; import _ from 'lodash'; import { createSelector } from '@reduxjs/toolkit'; -import { activeTabNameSelector } from '../options/optionsSelectors'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; export const currentImageDisplaySelector = createSelector( [ diff --git a/frontend/src/features/gallery/CurrentImagePreview.tsx b/frontend/src/features/gallery/components/CurrentImagePreview.tsx similarity index 89% rename from frontend/src/features/gallery/CurrentImagePreview.tsx rename to frontend/src/features/gallery/components/CurrentImagePreview.tsx index 604a2196c2..cc641b2caf 100644 --- a/frontend/src/features/gallery/CurrentImagePreview.tsx +++ b/frontend/src/features/gallery/components/CurrentImagePreview.tsx @@ -1,16 +1,16 @@ -import { IconButton, Image, Spinner } from '@chakra-ui/react'; +import { IconButton, Image } from '@chakra-ui/react'; import { useState } from 'react'; import { FaAngleLeft, FaAngleRight } from 'react-icons/fa'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; import { GalleryCategory, GalleryState, selectNextImage, selectPrevImage, -} from './gallerySlice'; +} from 'features/gallery/store/gallerySlice'; import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; -import { OptionsState } from '../options/optionsSlice'; +import { OptionsState } from 'features/options/store/optionsSlice'; import ImageMetadataViewer from './ImageMetaDataViewer/ImageMetadataViewer'; export const imagesSelector = createSelector( @@ -30,6 +30,8 @@ export const imagesSelector = createSelector( return { imageToDisplay: intermediateImage ? intermediateImage : currentImage, + isIntermediate: Boolean(intermediateImage), + viewerImageToDisplay: currentImage, currentCategory, isOnFirstImage: currentImageIndex === 0, isOnLastImage: @@ -55,6 +57,7 @@ export default function CurrentImagePreview() { isOnLastImage, shouldShowImageDetails, imageToDisplay, + isIntermediate, } = useAppSelector(imagesSelector); const [shouldShowNextPrevButtons, setShouldShowNextPrevButtons] = @@ -83,6 +86,9 @@ export default function CurrentImagePreview() { src={imageToDisplay.url} width={imageToDisplay.width} height={imageToDisplay.height} + style={{ + imageRendering: isIntermediate ? 'pixelated' : 'initial', + }} /> )} {!shouldShowImageDetails && ( diff --git a/frontend/src/features/gallery/DeleteImageModal.tsx b/frontend/src/features/gallery/components/DeleteImageModal.tsx similarity index 85% rename from frontend/src/features/gallery/DeleteImageModal.tsx rename to frontend/src/features/gallery/components/DeleteImageModal.tsx index 417aa2d393..afc756d4bc 100644 --- a/frontend/src/features/gallery/DeleteImageModal.tsx +++ b/frontend/src/features/gallery/components/DeleteImageModal.tsx @@ -22,11 +22,14 @@ import { SyntheticEvent, useRef, } from 'react'; -import { useAppDispatch, useAppSelector } from '../../app/store'; -import { deleteImage } from '../../app/socketio/actions'; -import { RootState } from '../../app/store'; -import { setShouldConfirmOnDelete, SystemState } from '../system/systemSlice'; -import * as InvokeAI from '../../app/invokeai'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { deleteImage } from 'app/socketio/actions'; +import { RootState } from 'app/store'; +import { + setShouldConfirmOnDelete, + SystemState, +} from 'features/system/store/systemSlice'; +import * as InvokeAI from 'app/invokeai'; import { useHotkeys } from 'react-hotkeys-hook'; import _ from 'lodash'; @@ -80,7 +83,7 @@ const DeleteImageModal = forwardRef( }; useHotkeys( - 'del', + 'delete', () => { shouldConfirmOnDelete ? onOpen() : handleDelete(); }, @@ -105,7 +108,7 @@ const DeleteImageModal = forwardRef( onClose={onClose} > - + Delete image @@ -113,7 +116,8 @@ const DeleteImageModal = forwardRef( - Are you sure? You can't undo this action afterwards. + Are you sure? Deleted images will be sent to the Bin. You + can restore from there if you wish to. @@ -127,7 +131,11 @@ const DeleteImageModal = forwardRef( - - - - ) : ( - <> - } - onClick={() => dispatch(setCurrentCategory('result'))} - /> - } - onClick={() => dispatch(setCurrentCategory('user'))} - /> - - )} - -
-
+ + {shouldShowButtons ? ( + <> + dispatch(setCurrentCategory('result'))} + > + Generations + + dispatch(setCurrentCategory('user'))} + > + Uploads + + + ) : ( + <> + } + onClick={() => dispatch(setCurrentCategory('result'))} + /> + } + onClick={() => dispatch(setCurrentCategory('user'))} + /> + + )} + + +
+
+ ) => + dispatch( + setShouldUseSingleGalleryColumn(e.target.checked) + ) + } + /> +
@@ -494,6 +544,14 @@ export default function ImageGallery() { )} + {isResizing && ( +
+ )}
); diff --git a/frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.scss b/frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.scss similarity index 91% rename from frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.scss rename to frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.scss index ba5e660682..8b59a33579 100644 --- a/frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.scss +++ b/frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .image-metadata-viewer { position: absolute; diff --git a/frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.tsx b/frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.tsx similarity index 87% rename from frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.tsx rename to frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.tsx index 7da28671b4..fdad8541f9 100644 --- a/frontend/src/features/gallery/ImageMetaDataViewer/ImageMetadataViewer.tsx +++ b/frontend/src/features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.tsx @@ -10,8 +10,8 @@ import { import { ExternalLinkIcon } from '@chakra-ui/icons'; import { memo } from 'react'; import { IoArrowUndoCircleOutline } from 'react-icons/io5'; -import { useAppDispatch } from '../../../app/store'; -import * as InvokeAI from '../../../app/invokeai'; +import { useAppDispatch } from 'app/store'; +import * as InvokeAI from 'app/invokeai'; import { setCfgScale, setFacetoolStrength, @@ -33,9 +33,11 @@ import { setWidth, setInitialImage, setShouldShowImageDetails, -} from '../../options/optionsSlice'; -import promptToString from '../../../common/util/promptToString'; -import { seedWeightsToString } from '../../../common/util/seedWeightPairs'; + setThreshold, + setPerlin, +} from 'features/options/store/optionsSlice'; +import promptToString from 'common/util/promptToString'; +import { seedWeightsToString } from 'common/util/seedWeightPairs'; import { FaCopy } from 'react-icons/fa'; import { useHotkeys } from 'react-hotkeys-hook'; @@ -45,6 +47,7 @@ type MetadataItemProps = { onClick?: () => void; value: number | string | boolean; labelPosition?: string; + withCopy?: boolean; }; /** @@ -56,6 +59,7 @@ const MetadataItem = ({ onClick, isLink, labelPosition, + withCopy = false, }: MetadataItemProps) => { return ( @@ -71,6 +75,18 @@ const MetadataItem = ({ /> )} + {withCopy && ( + + } + size={'xs'} + variant={'ghost'} + fontSize={14} + onClick={() => navigator.clipboard.writeText(value.toString())} + /> + + )} {label}: @@ -115,42 +131,54 @@ const ImageMetadataViewer = memo( }); const metadata = image?.metadata?.image || {}; + const dreamPrompt = image?.dreamPrompt; + const { - type, - postprocessing, - sampler, - prompt, - seed, - variations, - steps, cfg_scale, - seamless, - hires_fix, - width, - height, - strength, fit, + height, + hires_fix, init_image_path, mask_image_path, orig_path, + perlin, + postprocessing, + prompt, + sampler, scale, + seamless, + seed, + steps, + strength, + threshold, + type, + variations, + width, } = metadata; - const metadataJSON = JSON.stringify(metadata, null, 2); + const metadataJSON = JSON.stringify(image.metadata, null, 2); return (
File: - - {image.url} + + {image.url.length > 64 + ? image.url.substring(0, 64).concat('...') + : image.url} {Object.keys(metadata).length > 0 ? ( <> {type && } + {image.metadata?.model_weights && ( + + )} {['esrgan', 'gfpgan'].includes(type) && ( )} @@ -190,6 +218,20 @@ const ImageMetadataViewer = memo( onClick={() => dispatch(setSeed(seed))} /> )} + {threshold !== undefined && ( + dispatch(setThreshold(threshold))} + /> + )} + {perlin !== undefined && ( + dispatch(setPerlin(perlin))} + /> + )} {sampler && ( )} + {dreamPrompt && ( + + )} diff --git a/frontend/src/features/gallery/hooks/useGetImageByUuid.ts b/frontend/src/features/gallery/hooks/useGetImageByUuid.ts new file mode 100644 index 0000000000..ecb263ec0a --- /dev/null +++ b/frontend/src/features/gallery/hooks/useGetImageByUuid.ts @@ -0,0 +1,28 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { useAppSelector } from 'app/store'; +import { gallerySelector } from '../store/gallerySliceSelectors'; + +const selector = createSelector(gallerySelector, (gallery) => ({ + resultImages: gallery.categories.result.images, + userImages: gallery.categories.user.images, +})); + +const useGetImageByUuid = () => { + const { resultImages, userImages } = useAppSelector(selector); + + return (uuid: string) => { + const resultImagesResult = resultImages.find( + (image) => image.uuid === uuid + ); + if (resultImagesResult) { + return resultImagesResult; + } + + const userImagesResult = userImages.find((image) => image.uuid === uuid); + if (userImagesResult) { + return userImagesResult; + } + }; +}; + +export default useGetImageByUuid; diff --git a/frontend/src/features/gallery/gallerySlice.ts b/frontend/src/features/gallery/store/gallerySlice.ts similarity index 91% rename from frontend/src/features/gallery/gallerySlice.ts rename to frontend/src/features/gallery/store/gallerySlice.ts index 4d0663a486..932c45210e 100644 --- a/frontend/src/features/gallery/gallerySlice.ts +++ b/frontend/src/features/gallery/store/gallerySlice.ts @@ -1,7 +1,9 @@ import { createSlice } from '@reduxjs/toolkit'; import type { PayloadAction } from '@reduxjs/toolkit'; import _, { clamp } from 'lodash'; -import * as InvokeAI from '../../app/invokeai'; +import * as InvokeAI from 'app/invokeai'; +import { IRect } from 'konva/lib/types'; +import { InvokeTabName } from 'features/tabs/components/InvokeTabs'; export type GalleryCategory = 'user' | 'result'; @@ -23,7 +25,10 @@ export type Gallery = { export interface GalleryState { currentImage?: InvokeAI.Image; currentImageUuid: string; - intermediateImage?: InvokeAI.Image; + intermediateImage?: InvokeAI.Image & { + boundingBox?: IRect; + generationMode?: InvokeTabName; + }; shouldPinGallery: boolean; shouldShowGallery: boolean; galleryScrollPosition: number; @@ -37,6 +42,7 @@ export interface GalleryState { }; currentCategory: GalleryCategory; galleryWidth: number; + shouldUseSingleGalleryColumn: boolean; } const initialState: GalleryState = { @@ -64,6 +70,7 @@ const initialState: GalleryState = { }, }, galleryWidth: 300, + shouldUseSingleGalleryColumn: false, }; export const gallerySlice = createSlice({ @@ -148,7 +155,12 @@ export const gallerySlice = createSlice({ state.intermediateImage = undefined; tempCategory.latest_mtime = mtime; }, - setIntermediateImage: (state, action: PayloadAction) => { + setIntermediateImage: ( + state, + action: PayloadAction< + InvokeAI.Image & { boundingBox?: IRect; generationMode?: InvokeTabName } + > + ) => { state.intermediateImage = action.payload; }, clearIntermediateImage: (state) => { @@ -164,7 +176,7 @@ export const gallerySlice = createSlice({ const currentImageIndex = tempImages.findIndex( (i) => i.uuid === currentImage.uuid ); - if (_.inRange(currentImageIndex, 0, tempImages.length)) { + if (currentImageIndex < tempImages.length - 1) { const newCurrentImage = tempImages[currentImageIndex + 1]; state.currentImage = newCurrentImage; state.currentImageUuid = newCurrentImage.uuid; @@ -181,7 +193,7 @@ export const gallerySlice = createSlice({ const currentImageIndex = tempImages.findIndex( (i) => i.uuid === currentImage.uuid ); - if (_.inRange(currentImageIndex, 1, tempImages.length + 1)) { + if (currentImageIndex > 0) { const newCurrentImage = tempImages[currentImageIndex - 1]; state.currentImage = newCurrentImage; state.currentImageUuid = newCurrentImage.uuid; @@ -253,6 +265,12 @@ export const gallerySlice = createSlice({ setGalleryWidth: (state, action: PayloadAction) => { state.galleryWidth = action.payload; }, + setShouldUseSingleGalleryColumn: ( + state, + action: PayloadAction + ) => { + state.shouldUseSingleGalleryColumn = action.payload; + }, }, }); @@ -274,6 +292,7 @@ export const { setShouldAutoSwitchToNewImages, setCurrentCategory, setGalleryWidth, + setShouldUseSingleGalleryColumn, } = gallerySlice.actions; export default gallerySlice.reducer; diff --git a/frontend/src/features/gallery/gallerySliceSelectors.ts b/frontend/src/features/gallery/store/gallerySliceSelectors.ts similarity index 62% rename from frontend/src/features/gallery/gallerySliceSelectors.ts rename to frontend/src/features/gallery/store/gallerySliceSelectors.ts index d0bbb5af40..a825a29c9c 100644 --- a/frontend/src/features/gallery/gallerySliceSelectors.ts +++ b/frontend/src/features/gallery/store/gallerySliceSelectors.ts @@ -1,18 +1,20 @@ import { createSelector } from '@reduxjs/toolkit'; -import { RootState } from '../../app/store'; -import { activeTabNameSelector } from '../options/optionsSelectors'; -import { OptionsState } from '../options/optionsSlice'; -import { SystemState } from '../system/systemSlice'; +import { RootState } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { OptionsState } from 'features/options/store/optionsSlice'; +import { SystemState } from 'features/system/store/systemSlice'; import { GalleryState } from './gallerySlice'; import _ from 'lodash'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; export const imageGallerySelector = createSelector( [ (state: RootState) => state.gallery, (state: RootState) => state.options, + isStagingSelector, activeTabNameSelector, ], - (gallery: GalleryState, options: OptionsState, activeTabName) => { + (gallery: GalleryState, options: OptionsState, isStaging, activeTabName) => { const { categories, currentCategory, @@ -25,8 +27,11 @@ export const imageGallerySelector = createSelector( shouldHoldGalleryOpen, shouldAutoSwitchToNewImages, galleryWidth, + shouldUseSingleGalleryColumn, } = gallery; + const { isLightBoxOpen } = options; + return { currentImageUuid, shouldPinGallery, @@ -34,7 +39,9 @@ export const imageGallerySelector = createSelector( galleryScrollPosition, galleryImageMinimumWidth, galleryImageObjectFit, - galleryGridTemplateColumns: `repeat(auto-fill, minmax(${galleryImageMinimumWidth}px, auto))`, + galleryGridTemplateColumns: shouldUseSingleGalleryColumn + ? 'auto' + : `repeat(auto-fill, minmax(${galleryImageMinimumWidth}px, auto))`, activeTabName, shouldHoldGalleryOpen, shouldAutoSwitchToNewImages, @@ -43,6 +50,14 @@ export const imageGallerySelector = createSelector( categories[currentCategory].areMoreImagesAvailable, currentCategory, galleryWidth, + isLightBoxOpen, + isStaging, + shouldEnableResize: + isLightBoxOpen || + (activeTabName === 'unifiedCanvas' && shouldPinGallery) + ? false + : true, + shouldUseSingleGalleryColumn, }; }, { @@ -69,7 +84,9 @@ export const hoverableImageSelector = createSelector( mayDeleteImage: system.isConnected && !system.isProcessing, galleryImageObjectFit: gallery.galleryImageObjectFit, galleryImageMinimumWidth: gallery.galleryImageMinimumWidth, + shouldUseSingleGalleryColumn: gallery.shouldUseSingleGalleryColumn, activeTabName, + isLightBoxOpen: options.isLightBoxOpen, }; }, { @@ -78,3 +95,5 @@ export const hoverableImageSelector = createSelector( }, } ); + +export const gallerySelector = (state: RootState) => state.gallery; diff --git a/frontend/src/features/gallery/store/thunks/uploadImage.ts b/frontend/src/features/gallery/store/thunks/uploadImage.ts new file mode 100644 index 0000000000..01595d7da3 --- /dev/null +++ b/frontend/src/features/gallery/store/thunks/uploadImage.ts @@ -0,0 +1,55 @@ +import { AnyAction, ThunkAction } from '@reduxjs/toolkit'; +import { RootState } from 'app/store'; +import * as InvokeAI from 'app/invokeai'; +import { v4 as uuidv4 } from 'uuid'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; +import { setInitialImage } from 'features/options/store/optionsSlice'; +import { addImage } from '../gallerySlice'; + +type UploadImageConfig = { + imageFile: File; +}; + +export const uploadImage = + ( + config: UploadImageConfig + ): ThunkAction => + async (dispatch, getState) => { + const { imageFile } = config; + + const state = getState() as RootState; + + const activeTabName = activeTabNameSelector(state); + + const formData = new FormData(); + + formData.append('file', imageFile, imageFile.name); + formData.append( + 'data', + JSON.stringify({ + kind: 'init', + }) + ); + + const response = await fetch(window.location.origin + '/upload', { + method: 'POST', + body: formData, + }); + + const image = (await response.json()) as InvokeAI.ImageUploadResponse; + console.log(image) + const newImage: InvokeAI.Image = { + uuid: uuidv4(), + category: 'user', + ...image, + }; + + dispatch(addImage({ image: newImage, category: 'user' })); + + if (activeTabName === 'unifiedCanvas') { + dispatch(setInitialCanvasImage(newImage)); + } else if (activeTabName === 'img2img') { + dispatch(setInitialImage(newImage)); + } + }; diff --git a/frontend/src/features/lightbox/components/Lightbox.scss b/frontend/src/features/lightbox/components/Lightbox.scss new file mode 100644 index 0000000000..99df6b0756 --- /dev/null +++ b/frontend/src/features/lightbox/components/Lightbox.scss @@ -0,0 +1,89 @@ +@use '../../../styles/Mixins/' as *; + +.lightbox-container { + width: 100%; + height: 100%; + color: var(--text-color); + overflow: hidden; + position: absolute; + left: 0; + top: 0; + background-color: var(--background-color-secondary); + z-index: 30; + animation: popIn 0.3s ease-in; + + .image-gallery-wrapper { + max-height: 100% !important; + + .image-gallery-container { + max-height: calc(100vh - 5rem); + } + } + + .current-image-options { + z-index: 2; + position: absolute; + top: 1rem; + } + + .image-metadata-viewer { + left: 0; + max-height: 100%; + } +} + +.lightbox-close-btn { + z-index: 3; + position: absolute; + left: 1rem; + top: 1rem; + @include BaseButton; +} + +.lightbox-display-container { + display: flex; + flex-direction: row; +} + +.lightbox-preview-wrapper { + overflow: hidden; + background-color: var(--background-color-secondary); + display: grid; + grid-template-columns: auto max-content; + place-items: center; + width: 100vw; + height: 100vh; + + .current-image-next-prev-buttons { + position: absolute; + } + + .lightbox-image { + grid-area: lightbox-content; + border-radius: 0.5rem; + } + + .lightbox-image-options { + position: absolute; + z-index: 2; + left: 1rem; + top: 4.5rem; + user-select: none; + border-radius: 0.5rem; + + display: flex; + flex-direction: column; + row-gap: 0.5rem; + } +} + +@keyframes popIn { + from { + opacity: 0; + filter: blur(100); + } + to { + opacity: 1; + filter: blur(0); + } +} diff --git a/frontend/src/features/lightbox/components/Lightbox.tsx b/frontend/src/features/lightbox/components/Lightbox.tsx new file mode 100644 index 0000000000..afcdb06db7 --- /dev/null +++ b/frontend/src/features/lightbox/components/Lightbox.tsx @@ -0,0 +1,122 @@ +import { IconButton } from '@chakra-ui/react'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import CurrentImageButtons from 'features/gallery/components/CurrentImageButtons'; +import { imagesSelector } from 'features/gallery/components/CurrentImagePreview'; +import { + selectNextImage, + selectPrevImage, +} from 'features/gallery/store/gallerySlice'; +import ImageGallery from 'features/gallery/components/ImageGallery'; +import ImageMetadataViewer from 'features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer'; +import { setIsLightBoxOpen } from 'features/options/store/optionsSlice'; +import React, { useState } from 'react'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { BiExit } from 'react-icons/bi'; +import { FaAngleLeft, FaAngleRight } from 'react-icons/fa'; +import ReactPanZoom from './ReactPanZoom'; + +export default function Lightbox() { + const dispatch = useAppDispatch(); + const isLightBoxOpen = useAppSelector( + (state: RootState) => state.options.isLightBoxOpen + ); + + const { + viewerImageToDisplay, + shouldShowImageDetails, + isOnFirstImage, + isOnLastImage, + } = useAppSelector(imagesSelector); + + const [shouldShowNextPrevButtons, setShouldShowNextPrevButtons] = + useState(false); + + const handleCurrentImagePreviewMouseOver = () => { + setShouldShowNextPrevButtons(true); + }; + + const handleCurrentImagePreviewMouseOut = () => { + setShouldShowNextPrevButtons(false); + }; + + const handleClickPrevButton = () => { + dispatch(selectPrevImage()); + }; + + const handleClickNextButton = () => { + dispatch(selectNextImage()); + }; + + useHotkeys( + 'Esc', + () => { + if (isLightBoxOpen) dispatch(setIsLightBoxOpen(false)); + }, + [isLightBoxOpen] + ); + + return ( +
+ } + aria-label="Exit Viewer" + className="lightbox-close-btn" + onClick={() => { + dispatch(setIsLightBoxOpen(false)); + }} + fontSize={20} + /> + +
+
+ + {!shouldShowImageDetails && ( +
+
+ {shouldShowNextPrevButtons && !isOnFirstImage && ( + } + variant="unstyled" + onClick={handleClickPrevButton} + /> + )} +
+
+ {shouldShowNextPrevButtons && !isOnLastImage && ( + } + variant="unstyled" + onClick={handleClickNextButton} + /> + )} +
+
+ )} + {viewerImageToDisplay && ( + <> + + {shouldShowImageDetails && ( + + )} + + )} +
+ +
+
+ ); +} diff --git a/frontend/src/features/lightbox/components/ReactPanZoom.tsx b/frontend/src/features/lightbox/components/ReactPanZoom.tsx new file mode 100644 index 0000000000..608cfc8545 --- /dev/null +++ b/frontend/src/features/lightbox/components/ReactPanZoom.tsx @@ -0,0 +1,135 @@ +import IAIIconButton from 'common/components/IAIIconButton'; +import * as React from 'react'; +import { + BiReset, + BiRotateLeft, + BiRotateRight, + BiZoomIn, + BiZoomOut, +} from 'react-icons/bi'; +import { MdFlip } from 'react-icons/md'; +import { TransformWrapper, TransformComponent } from 'react-zoom-pan-pinch'; + +type ReactPanZoomProps = { + image: string; + styleClass?: string; + alt?: string; + ref?: any; +}; + +export default function ReactPanZoom({ + image, + alt, + ref, + styleClass, +}: ReactPanZoomProps) { + const [rotation, setRotation] = React.useState(0); + const [flip, setFlip] = React.useState(false); + + const rotateLeft = () => { + if (rotation === -3) { + setRotation(0); + } else { + setRotation(rotation - 1); + } + }; + + const rotateRight = () => { + if (rotation === 3) { + setRotation(0); + } else { + setRotation(rotation + 1); + } + }; + + const flipImage = () => { + setFlip(!flip); + }; + + return ( + + {({ zoomIn, zoomOut, resetTransform, centerView }) => ( + <> +
+ } + aria-label="Zoom In" + tooltip="Zoom In" + onClick={() => zoomIn()} + fontSize={20} + /> + + } + aria-label="Zoom Out" + tooltip="Zoom Out" + onClick={() => zoomOut()} + fontSize={20} + /> + + } + aria-label="Rotate Left" + tooltip="Rotate Left" + onClick={rotateLeft} + fontSize={20} + /> + + } + aria-label="Rotate Right" + tooltip="Rotate Right" + onClick={rotateRight} + fontSize={20} + /> + + } + aria-label="Flip Image" + tooltip="Flip Image" + onClick={flipImage} + fontSize={20} + /> + + } + aria-label="Reset" + tooltip="Reset" + onClick={() => { + resetTransform(); + setRotation(0); + setFlip(false); + }} + fontSize={20} + /> +
+ + {alt} centerView(1, 0, 'easeOut')} + /> + + + )} +
+ ); +} diff --git a/frontend/src/features/options/AccordionItems/InvokeAccordionItem.tsx b/frontend/src/features/options/AccordionItems/InvokeAccordionItem.tsx deleted file mode 100644 index 30d6f2a5e8..0000000000 --- a/frontend/src/features/options/AccordionItems/InvokeAccordionItem.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { - AccordionButton, - AccordionIcon, - AccordionItem, - AccordionPanel, -} from '@chakra-ui/react'; -import React, { ReactElement } from 'react'; -import { Feature } from '../../../app/features'; -import GuideIcon from '../../../common/components/GuideIcon'; - -export interface InvokeAccordionItemProps { - header: ReactElement; - feature: Feature; - options: ReactElement; -} - -export default function InvokeAccordionItem(props: InvokeAccordionItemProps) { - const { header, feature, options } = props; - - return ( - -

- - {header} - - - -

- - {options} - -
- ); -} diff --git a/frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreHeader.tsx b/frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreHeader.tsx deleted file mode 100644 index 0efe400d22..0000000000 --- a/frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreHeader.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { Flex } from '@chakra-ui/layout'; -import React, { ChangeEvent } from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setShouldRunFacetool } from '../../optionsSlice'; - -export default function FaceRestoreHeader() { - const isGFPGANAvailable = useAppSelector( - (state: RootState) => state.system.isGFPGANAvailable - ); - - const shouldRunFacetool = useAppSelector( - (state: RootState) => state.options.shouldRunFacetool - ); - - const dispatch = useAppDispatch(); - - const handleChangeShouldRunFacetool = (e: ChangeEvent) => - dispatch(setShouldRunFacetool(e.target.checked)); - - return ( - -

Restore Face

- -
- ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDarkenOutside.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDarkenOutside.tsx deleted file mode 100644 index b91f5d5736..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDarkenOutside.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAICheckbox from '../../../../../common/components/IAICheckbox'; -import { setShouldShowBoundingBoxFill } from '../../../../tabs/Inpainting/inpaintingSlice'; - -export default function BoundingBoxDarkenOutside() { - const dispatch = useAppDispatch(); - const shouldShowBoundingBoxFill = useAppSelector( - (state: RootState) => state.inpainting.shouldShowBoundingBoxFill - ); - - const handleChangeShouldShowBoundingBoxFill = () => { - dispatch(setShouldShowBoundingBoxFill(!shouldShowBoundingBoxFill)); - }; - - return ( - - ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDimensionSlider.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDimensionSlider.tsx deleted file mode 100644 index 709a86a80b..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxDimensionSlider.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import React from 'react'; -import IAISlider from '../../../../../common/components/IAISlider'; -import IAINumberInput from '../../../../../common/components/IAINumberInput'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import { BiReset } from 'react-icons/bi'; - -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import { createSelector } from '@reduxjs/toolkit'; -import { - InpaintingState, - setBoundingBoxDimensions, -} from '../../../../tabs/Inpainting/inpaintingSlice'; - -import { roundDownToMultiple } from '../../../../../common/util/roundDownToMultiple'; -import _ from 'lodash'; - -const boundingBoxDimensionsSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { canvasDimensions, boundingBoxDimensions, shouldLockBoundingBox } = - inpainting; - return { - canvasDimensions, - boundingBoxDimensions, - shouldLockBoundingBox, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -type BoundingBoxDimensionSlidersType = { - dimension: 'width' | 'height'; -}; - -export default function BoundingBoxDimensionSlider( - props: BoundingBoxDimensionSlidersType -) { - const { dimension } = props; - const dispatch = useAppDispatch(); - const { shouldLockBoundingBox, canvasDimensions, boundingBoxDimensions } = - useAppSelector(boundingBoxDimensionsSelector); - - const canvasDimension = canvasDimensions[dimension]; - const boundingBoxDimension = boundingBoxDimensions[dimension]; - - const handleBoundingBoxDimension = (v: number) => { - if (dimension == 'width') { - dispatch( - setBoundingBoxDimensions({ - ...boundingBoxDimensions, - width: Math.floor(v), - }) - ); - } - - if (dimension == 'height') { - dispatch( - setBoundingBoxDimensions({ - ...boundingBoxDimensions, - height: Math.floor(v), - }) - ); - } - }; - - const handleResetDimension = () => { - if (dimension == 'width') { - dispatch( - setBoundingBoxDimensions({ - ...boundingBoxDimensions, - width: Math.floor(canvasDimension), - }) - ); - } - if (dimension == 'height') { - dispatch( - setBoundingBoxDimensions({ - ...boundingBoxDimensions, - height: Math.floor(canvasDimension), - }) - ); - } - }; - - return ( -
- - - } - styleClass="inpainting-bounding-box-reset-icon-btn" - isDisabled={ - shouldLockBoundingBox || canvasDimension === boundingBoxDimension - } - /> -
- ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxLock.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxLock.tsx deleted file mode 100644 index adea1f3f54..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxLock.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAICheckbox from '../../../../../common/components/IAICheckbox'; -import { setShouldLockBoundingBox } from '../../../../tabs/Inpainting/inpaintingSlice'; - -export default function BoundingBoxLock() { - const shouldLockBoundingBox = useAppSelector( - (state: RootState) => state.inpainting.shouldLockBoundingBox - ); - const dispatch = useAppDispatch(); - - const handleChangeShouldLockBoundingBox = () => { - dispatch(setShouldLockBoundingBox(!shouldLockBoundingBox)); - }; - return ( - - ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.tsx deleted file mode 100644 index 5038823d85..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import BoundingBoxDarkenOutside from './BoundingBoxDarkenOutside'; -import BoundingBoxDimensionSlider from './BoundingBoxDimensionSlider'; -import BoundingBoxLock from './BoundingBoxLock'; -import BoundingBoxVisibility from './BoundingBoxVisibility'; - -const BoundingBoxSettings = () => { - return ( -
-
-

Inpaint Box

- -
-
- - - - - - -
-
- ); -}; - -export default BoundingBoxSettings; diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxVisibility.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxVisibility.tsx deleted file mode 100644 index ef0a76d166..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxVisibility.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; -import { BiHide, BiShow } from 'react-icons/bi'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import { setShouldShowBoundingBox } from '../../../../tabs/Inpainting/inpaintingSlice'; - -export default function BoundingBoxVisibility() { - const shouldShowBoundingBox = useAppSelector( - (state: RootState) => state.inpainting.shouldShowBoundingBox - ); - const dispatch = useAppDispatch(); - - const handleShowBoundingBox = () => - dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); - return ( - : } - onClick={handleShowBoundingBox} - background={'none'} - padding={0} - /> - ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/ClearBrushHistory.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/ClearBrushHistory.tsx deleted file mode 100644 index fd47f50196..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/ClearBrushHistory.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useToast } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIButton from '../../../../common/components/IAIButton'; -import { - InpaintingState, - setClearBrushHistory, -} from '../../../tabs/Inpainting/inpaintingSlice'; -import _ from 'lodash'; - -const clearBrushHistorySelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { pastLines, futureLines } = inpainting; - return { - mayClearBrushHistory: - futureLines.length > 0 || pastLines.length > 0 ? false : true, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function ClearBrushHistory() { - const dispatch = useAppDispatch(); - const toast = useToast(); - - const { mayClearBrushHistory } = useAppSelector(clearBrushHistorySelector); - - const handleClearBrushHistory = () => { - dispatch(setClearBrushHistory()); - toast({ - title: 'Brush Stroke History Cleared', - status: 'success', - duration: 2500, - isClosable: true, - }); - }; - return ( - - Clear Brush History - - ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/InpaintingSettings.tsx b/frontend/src/features/options/AdvancedOptions/Inpainting/InpaintingSettings.tsx deleted file mode 100644 index 2c9181dfa1..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/InpaintingSettings.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import BoundingBoxSettings from './BoundingBoxSettings/BoundingBoxSettings'; -import InpaintReplace from './InpaintReplace'; -import ClearBrushHistory from './ClearBrushHistory'; - -export default function InpaintingSettings() { - return ( - <> - - - - - ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Output/OutputHeader.tsx b/frontend/src/features/options/AdvancedOptions/Output/OutputHeader.tsx deleted file mode 100644 index 6c8603d9f8..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Output/OutputHeader.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Box } from '@chakra-ui/react'; - -const OutputHeader = () => { - return ( - - Other Options - - ); -}; - -export default OutputHeader; diff --git a/frontend/src/features/options/AdvancedOptions/Seed/SeedHeader.tsx b/frontend/src/features/options/AdvancedOptions/Seed/SeedHeader.tsx deleted file mode 100644 index 9c05b96d68..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Seed/SeedHeader.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Box } from '@chakra-ui/react'; - -const SeedHeader = () => { - return ( - - Seed - - ); -}; - -export default SeedHeader; diff --git a/frontend/src/features/options/AdvancedOptions/Upscale/UpscaleHeader.tsx b/frontend/src/features/options/AdvancedOptions/Upscale/UpscaleHeader.tsx deleted file mode 100644 index 4bb0347f04..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Upscale/UpscaleHeader.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { Flex } from '@chakra-ui/layout'; -import React, { ChangeEvent } from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setShouldRunESRGAN } from '../../optionsSlice'; - -export default function UpscaleHeader() { - const isESRGANAvailable = useAppSelector( - (state: RootState) => state.system.isESRGANAvailable - ); - - const shouldRunESRGAN = useAppSelector( - (state: RootState) => state.options.shouldRunESRGAN - ); - - const dispatch = useAppDispatch(); - const handleChangeShouldRunESRGAN = (e: ChangeEvent) => - dispatch(setShouldRunESRGAN(e.target.checked)); - return ( - -

Upscale

- -
- ); -} diff --git a/frontend/src/features/options/AdvancedOptions/Variations/VariationsHeader.tsx b/frontend/src/features/options/AdvancedOptions/Variations/VariationsHeader.tsx deleted file mode 100644 index ab02fad1f6..0000000000 --- a/frontend/src/features/options/AdvancedOptions/Variations/VariationsHeader.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import React from 'react'; -import GenerateVariations from './GenerateVariations'; - -export default function VariationsHeader() { - return ( - -

Variations

- -
- ); -} diff --git a/frontend/src/features/options/ProcessButtons/InvokeButton.tsx b/frontend/src/features/options/ProcessButtons/InvokeButton.tsx deleted file mode 100644 index e9a61002b4..0000000000 --- a/frontend/src/features/options/ProcessButtons/InvokeButton.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { ListItem, UnorderedList } from '@chakra-ui/react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { FaPlay } from 'react-icons/fa'; -import { readinessSelector } from '../../../app/selectors/readinessSelector'; -import { generateImage } from '../../../app/socketio/actions'; -import { useAppDispatch, useAppSelector } from '../../../app/store'; -import IAIButton, { - IAIButtonProps, -} from '../../../common/components/IAIButton'; -import IAIIconButton, { - IAIIconButtonProps, -} from '../../../common/components/IAIIconButton'; -import IAIPopover from '../../../common/components/IAIPopover'; -import { activeTabNameSelector } from '../optionsSelectors'; - -interface InvokeButton - extends Omit { - iconButton?: boolean; -} - -export default function InvokeButton(props: InvokeButton) { - const { iconButton = false, ...rest } = props; - const dispatch = useAppDispatch(); - const { isReady, reasonsWhyNotReady } = useAppSelector(readinessSelector); - const activeTabName = useAppSelector(activeTabNameSelector); - - const handleClickGenerate = () => { - dispatch(generateImage(activeTabName)); - }; - - useHotkeys( - 'ctrl+enter, cmd+enter', - () => { - if (isReady) { - dispatch(generateImage(activeTabName)); - } - }, - [isReady, activeTabName] - ); - - const buttonComponent = ( -
- {iconButton ? ( - } - isDisabled={!isReady} - onClick={handleClickGenerate} - className="invoke-btn invoke" - tooltip="Invoke" - tooltipProps={{ placement: 'bottom' }} - {...rest} - /> - ) : ( - - Invoke - - )} -
- ); - - return isReady ? ( - buttonComponent - ) : ( - - {reasonsWhyNotReady && ( - - {reasonsWhyNotReady.map((reason, i) => ( - {reason} - ))} - - )} - - ); - - // return isReady ? ( - // buttonComponent - // ) : ( - // - // {reasonsWhyNotReady ? ( - // - // {reasonsWhyNotReady.map((reason, i) => ( - // {reason} - // ))} - // - // ) : ( - // 'test' - // )} - // - // ); -} diff --git a/frontend/src/features/options/AccordionItems/AdvancedSettings.scss b/frontend/src/features/options/components/AccordionItems/AdvancedSettings.scss similarity index 55% rename from frontend/src/features/options/AccordionItems/AdvancedSettings.scss rename to frontend/src/features/options/components/AccordionItems/AdvancedSettings.scss index fd940e8182..59d1535d12 100644 --- a/frontend/src/features/options/AccordionItems/AdvancedSettings.scss +++ b/frontend/src/features/options/components/AccordionItems/AdvancedSettings.scss @@ -1,6 +1,7 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .advanced-settings { + padding-top: 0.5rem; display: grid; row-gap: 0.5rem; } @@ -11,6 +12,7 @@ border: none; border-top: 0px; border-radius: 0.4rem; + background-color: var(--tab-panel-bg); &[aria-expanded='true'] { background-color: var(--tab-hover-color); @@ -21,18 +23,32 @@ .advanced-settings-panel { background-color: var(--tab-panel-bg); border-radius: 0 0 0.4rem 0.4rem; - border: 2px solid var(--tab-hover-color); + padding: 1rem; + + button { + background-color: var(--btn-base-color); + &:hover { + background-color: var(--btn-base-color-hover); + } + + &:disabled { + &:hover { + background-color: var(--btn-base-color); + } + } + } } .advanced-settings-header { border-radius: 0.4rem; + font-weight: bold; &[aria-expanded='true'] { - background-color: var(--tab-color); + background-color: var(--tab-hover-color); border-radius: 0.4rem 0.4rem 0 0; } &:hover { - background-color: var(--tab-hover-color) !important; + background-color: var(--tab-hover-color); } } diff --git a/frontend/src/features/options/components/AccordionItems/InvokeAccordionItem.tsx b/frontend/src/features/options/components/AccordionItems/InvokeAccordionItem.tsx new file mode 100644 index 0000000000..2162b1fa34 --- /dev/null +++ b/frontend/src/features/options/components/AccordionItems/InvokeAccordionItem.tsx @@ -0,0 +1,40 @@ +import { + AccordionButton, + AccordionIcon, + AccordionItem, + AccordionPanel, + Box, + Flex, +} from '@chakra-ui/react'; +import { ReactNode } from 'react'; +import { Feature } from 'app/features'; +import GuideIcon from 'common/components/GuideIcon'; + +export interface InvokeAccordionItemProps { + header: string; + content: ReactNode; + feature?: Feature; + additionalHeaderComponents?: ReactNode; +} + +export default function InvokeAccordionItem(props: InvokeAccordionItemProps) { + const { header, feature, content, additionalHeaderComponents } = props; + + return ( + + + + + {header} + + {additionalHeaderComponents} + {feature && } + + + + + {content} + + + ); +} diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.scss b/frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.scss similarity index 71% rename from frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.scss rename to frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.scss index 5eef7cc47d..b7df91c843 100644 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.scss +++ b/frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.scss @@ -11,20 +11,20 @@ flex-direction: row; justify-content: space-between; padding: 0.5rem 1rem; - border-radius: 0.4rem 0.4rem 0 0; + border-radius: 0.3rem 0.3rem 0 0; align-items: center; button { - width: 0.5rem !important; - height: 1.2rem !important; - background: none !important; + width: 0.5rem; + height: 1.2rem; + background: none; &:hover { - background: none !important; + background: none; } } p { - font-weight: bold; + // font-weight: bold; } } @@ -35,9 +35,9 @@ row-gap: 1rem; .inpainting-bounding-box-reset-icon-btn { - background-color: var(--btn-load-more) !important; + background-color: var(--btn-base-color); &:hover { - background-color: var(--btn-load-more-hover) !important; + background-color: var(--btn-base-color-hover); } } } diff --git a/frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.tsx b/frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.tsx new file mode 100644 index 0000000000..6d35a496f8 --- /dev/null +++ b/frontend/src/features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.tsx @@ -0,0 +1,105 @@ +import { Box, Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAISlider from 'common/components/IAISlider'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { setBoundingBoxDimensions } from 'features/canvas/store/canvasSlice'; +import _ from 'lodash'; + +const selector = createSelector( + canvasSelector, + (canvas) => { + const { boundingBoxDimensions, boundingBoxScaleMethod: boundingBoxScale } = canvas; + return { + boundingBoxDimensions, + boundingBoxScale, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const BoundingBoxSettings = () => { + const dispatch = useAppDispatch(); + const { boundingBoxDimensions } = useAppSelector(selector); + + const handleChangeWidth = (v: number) => { + dispatch( + setBoundingBoxDimensions({ + ...boundingBoxDimensions, + width: Math.floor(v), + }) + ); + }; + + const handleChangeHeight = (v: number) => { + dispatch( + setBoundingBoxDimensions({ + ...boundingBoxDimensions, + height: Math.floor(v), + }) + ); + }; + + const handleResetWidth = () => { + dispatch( + setBoundingBoxDimensions({ + ...boundingBoxDimensions, + width: Math.floor(512), + }) + ); + }; + + const handleResetHeight = () => { + dispatch( + setBoundingBoxDimensions({ + ...boundingBoxDimensions, + height: Math.floor(512), + }) + ); + }; + + return ( + + + + + ); +}; + +export default BoundingBoxSettings; + +export const BoundingBoxSettingsHeader = () => { + return ( + + Bounding Box + + ); +}; diff --git a/frontend/src/features/options/components/AdvancedOptions/Canvas/InfillAndScalingOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Canvas/InfillAndScalingOptions.tsx new file mode 100644 index 0000000000..fcff38ccce --- /dev/null +++ b/frontend/src/features/options/components/AdvancedOptions/Canvas/InfillAndScalingOptions.tsx @@ -0,0 +1,177 @@ +import { Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAISelect from 'common/components/IAISelect'; +import IAISlider from 'common/components/IAISlider'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; +import { + setBoundingBoxScaleMethod, + setScaledBoundingBoxDimensions, +} from 'features/canvas/store/canvasSlice'; +import { + BoundingBoxScale, + BOUNDING_BOX_SCALES_DICT, +} from 'features/canvas/store/canvasTypes'; +import { optionsSelector } from 'features/options/store/optionsSelectors'; +import { + setInfillMethod, + setTileSize, +} from 'features/options/store/optionsSlice'; +import { systemSelector } from 'features/system/store/systemSelectors'; +import _ from 'lodash'; +import { ChangeEvent } from 'react'; +import InpaintReplace from './InpaintReplace'; + +const selector = createSelector( + [optionsSelector, systemSelector, canvasSelector], + (options, system, canvas) => { + const { tileSize, infillMethod } = options; + + const { infill_methods: availableInfillMethods } = system; + + const { + boundingBoxScaleMethod: boundingBoxScale, + scaledBoundingBoxDimensions, + } = canvas; + + return { + boundingBoxScale, + scaledBoundingBoxDimensions, + tileSize, + infillMethod, + availableInfillMethods, + isManual: boundingBoxScale === 'manual', + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const InfillAndScalingOptions = () => { + const dispatch = useAppDispatch(); + const { + tileSize, + infillMethod, + availableInfillMethods, + boundingBoxScale, + isManual, + scaledBoundingBoxDimensions, + } = useAppSelector(selector); + + const handleChangeScaledWidth = (v: number) => { + dispatch( + setScaledBoundingBoxDimensions({ + ...scaledBoundingBoxDimensions, + width: Math.floor(v), + }) + ); + }; + + const handleChangeScaledHeight = (v: number) => { + dispatch( + setScaledBoundingBoxDimensions({ + ...scaledBoundingBoxDimensions, + height: Math.floor(v), + }) + ); + }; + + const handleResetScaledWidth = () => { + dispatch( + setScaledBoundingBoxDimensions({ + ...scaledBoundingBoxDimensions, + width: Math.floor(512), + }) + ); + }; + + const handleResetScaledHeight = () => { + dispatch( + setScaledBoundingBoxDimensions({ + ...scaledBoundingBoxDimensions, + height: Math.floor(512), + }) + ); + }; + + const handleChangeBoundingBoxScaleMethod = ( + e: ChangeEvent + ) => { + dispatch(setBoundingBoxScaleMethod(e.target.value as BoundingBoxScale)); + }; + + return ( + + + + + + dispatch(setInfillMethod(e.target.value))} + /> + { + dispatch(setTileSize(v)); + }} + handleReset={() => { + dispatch(setTileSize(32)); + }} + withInput + withSliderMarks + withReset + /> + + ); +}; + +export default InfillAndScalingOptions; diff --git a/frontend/src/features/options/AdvancedOptions/Inpainting/InpaintReplace.tsx b/frontend/src/features/options/components/AdvancedOptions/Canvas/InpaintReplace.tsx similarity index 53% rename from frontend/src/features/options/AdvancedOptions/Inpainting/InpaintReplace.tsx rename to frontend/src/features/options/components/AdvancedOptions/Canvas/InpaintReplace.tsx index 5333f7b8ab..8ce85a8238 100644 --- a/frontend/src/features/options/AdvancedOptions/Inpainting/InpaintReplace.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Canvas/InpaintReplace.tsx @@ -1,23 +1,20 @@ import React, { ChangeEvent } from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; +import { useAppDispatch, useAppSelector } from '../../../../../app/store'; import _ from 'lodash'; import { createSelector } from '@reduxjs/toolkit'; +import IAISwitch from '../../../../../common/components/IAISwitch'; +import IAISlider from '../../../../../common/components/IAISlider'; +import { Flex } from '@chakra-ui/react'; import { - InpaintingState, setInpaintReplace, setShouldUseInpaintReplace, -} from '../../../tabs/Inpainting/inpaintingSlice'; -import IAISwitch from '../../../../common/components/IAISwitch'; +} from 'features/canvas/store/canvasSlice'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; -const inpaintReplaceSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { inpaintReplace, shouldUseInpaintReplace } = inpainting; +const selector = createSelector( + canvasSelector, + (canvas) => { + const { inpaintReplace, shouldUseInpaintReplace } = canvas; return { inpaintReplace, shouldUseInpaintReplace, @@ -31,33 +28,28 @@ const inpaintReplaceSelector = createSelector( ); export default function InpaintReplace() { - const { inpaintReplace, shouldUseInpaintReplace } = useAppSelector( - inpaintReplaceSelector - ); + const { inpaintReplace, shouldUseInpaintReplace } = useAppSelector(selector); const dispatch = useAppDispatch(); return ( -
- + { dispatch(setInpaintReplace(v)); }} + min={0} + max={1.0} + step={0.05} + isInteger={false} + isSliderDisabled={!shouldUseInpaintReplace} + withSliderMarks + sliderMarkRightOffset={-2} + withReset + handleReset={() => dispatch(setInpaintReplace(1))} + isResetDisabled={!shouldUseInpaintReplace} /> -
+
); } diff --git a/frontend/src/features/options/components/AdvancedOptions/Canvas/SeamCorrectionOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Canvas/SeamCorrectionOptions.tsx new file mode 100644 index 0000000000..d234480532 --- /dev/null +++ b/frontend/src/features/options/components/AdvancedOptions/Canvas/SeamCorrectionOptions.tsx @@ -0,0 +1,110 @@ +import { Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAISlider from 'common/components/IAISlider'; +import { optionsSelector } from 'features/options/store/optionsSelectors'; +import { + setSeamBlur, + setSeamSize, + setSeamSteps, + setSeamStrength, +} from 'features/options/store/optionsSlice'; +import _ from 'lodash'; + +const selector = createSelector( + [optionsSelector], + (options) => { + const { seamSize, seamBlur, seamStrength, seamSteps } = options; + + return { + seamSize, + seamBlur, + seamStrength, + seamSteps, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const SeamCorrectionOptions = () => { + const dispatch = useAppDispatch(); + const { seamSize, seamBlur, seamStrength, seamSteps } = + useAppSelector(selector); + + return ( + + { + dispatch(setSeamSize(v)); + }} + handleReset={() => dispatch(setSeamSize(96))} + withInput + withSliderMarks + withReset + /> + { + dispatch(setSeamBlur(v)); + }} + handleReset={() => { + dispatch(setSeamBlur(16)); + }} + withInput + withSliderMarks + withReset + /> + { + dispatch(setSeamStrength(v)); + }} + handleReset={() => { + dispatch(setSeamStrength(0.7)); + }} + withInput + withSliderMarks + withReset + /> + { + dispatch(setSeamSteps(v)); + }} + handleReset={() => { + dispatch(setSeamSteps(10)); + }} + withInput + withSliderMarks + withReset + /> + + ); +}; + +export default SeamCorrectionOptions; diff --git a/frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx similarity index 85% rename from frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx index 1f8e170a6f..d3f04f3142 100644 --- a/frontend/src/features/options/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions.tsx @@ -1,7 +1,7 @@ import { Flex } from '@chakra-ui/react'; -import { RootState } from '../../../../app/store'; -import { useAppDispatch, useAppSelector } from '../../../../app/store'; +import { RootState } from 'app/store'; +import { useAppDispatch, useAppSelector } from 'app/store'; import { FacetoolType, @@ -9,14 +9,14 @@ import { setCodeformerFidelity, setFacetoolStrength, setFacetoolType, -} from '../../optionsSlice'; +} from 'features/options/store/optionsSlice'; import { createSelector } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; -import { SystemState } from '../../../system/systemSlice'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import IAISelect from '../../../../common/components/IAISelect'; -import { FACETOOL_TYPES } from '../../../../app/constants'; +import { SystemState } from 'features/system/store/systemSlice'; +import IAINumberInput from 'common/components/IAINumberInput'; +import IAISelect from 'common/components/IAISelect'; +import { FACETOOL_TYPES } from 'app/constants'; import { ChangeEvent } from 'react'; const optionsSelector = createSelector( diff --git a/frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreToggle.tsx b/frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreToggle.tsx new file mode 100644 index 0000000000..0867ad0db0 --- /dev/null +++ b/frontend/src/features/options/components/AdvancedOptions/FaceRestore/FaceRestoreToggle.tsx @@ -0,0 +1,27 @@ +import { ChangeEvent } from 'react'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setShouldRunFacetool } from 'features/options/store/optionsSlice'; + +export default function FaceRestoreToggle() { + const isGFPGANAvailable = useAppSelector( + (state: RootState) => state.system.isGFPGANAvailable + ); + + const shouldRunFacetool = useAppSelector( + (state: RootState) => state.options.shouldRunFacetool + ); + + const dispatch = useAppDispatch(); + + const handleChangeShouldRunFacetool = (e: ChangeEvent) => + dispatch(setShouldRunFacetool(e.target.checked)); + + return ( + + ); +} diff --git a/frontend/src/features/options/AdvancedOptions/ImageToImage/ImageFit.tsx b/frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageFit.tsx similarity index 78% rename from frontend/src/features/options/AdvancedOptions/ImageToImage/ImageFit.tsx rename to frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageFit.tsx index eaaa08dff4..25b5618251 100644 --- a/frontend/src/features/options/AdvancedOptions/ImageToImage/ImageFit.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageFit.tsx @@ -3,9 +3,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setShouldFitToWidthHeight } from '../../optionsSlice'; +} from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setShouldFitToWidthHeight } from 'features/options/store/optionsSlice'; export default function ImageFit() { const dispatch = useAppDispatch(); diff --git a/frontend/src/features/options/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx b/frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx similarity index 61% rename from frontend/src/features/options/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx rename to frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx index ea916c5460..792bcdbcbf 100644 --- a/frontend/src/features/options/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/ImageToImage/ImageToImageStrength.tsx @@ -1,11 +1,7 @@ import React from 'react'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import { setImg2imgStrength } from '../../optionsSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISlider from 'common/components/IAISlider'; +import { setImg2imgStrength } from 'features/options/store/optionsSlice'; interface ImageToImageStrengthProps { label?: string; @@ -22,17 +18,25 @@ export default function ImageToImageStrength(props: ImageToImageStrengthProps) { const handleChangeStrength = (v: number) => dispatch(setImg2imgStrength(v)); + const handleImg2ImgStrengthReset = () => { + dispatch(setImg2imgStrength(0.75)); + }; + return ( - ); } diff --git a/frontend/src/features/options/AdvancedOptions/Output/HiresOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Output/HiresOptions.tsx similarity index 82% rename from frontend/src/features/options/AdvancedOptions/Output/HiresOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/Output/HiresOptions.tsx index fc5606d027..d7b76c50dc 100644 --- a/frontend/src/features/options/AdvancedOptions/Output/HiresOptions.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Output/HiresOptions.tsx @@ -4,9 +4,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setHiresFix } from '../../optionsSlice'; +} from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setHiresFix } from 'features/options/store/optionsSlice'; /** * Hires Fix Toggle diff --git a/frontend/src/features/options/AdvancedOptions/Output/OutputOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Output/OutputOptions.tsx similarity index 100% rename from frontend/src/features/options/AdvancedOptions/Output/OutputOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/Output/OutputOptions.tsx diff --git a/frontend/src/features/options/AdvancedOptions/Output/SeamlessOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Output/SeamlessOptions.tsx similarity index 82% rename from frontend/src/features/options/AdvancedOptions/Output/SeamlessOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/Output/SeamlessOptions.tsx index df15292870..22aab225bf 100644 --- a/frontend/src/features/options/AdvancedOptions/Output/SeamlessOptions.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Output/SeamlessOptions.tsx @@ -4,9 +4,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setSeamless } from '../../optionsSlice'; +} from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setSeamless } from 'features/options/store/optionsSlice'; /** * Seamless tiling toggle diff --git a/frontend/src/features/options/AdvancedOptions/Seed/Perlin.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/Perlin.tsx similarity index 76% rename from frontend/src/features/options/AdvancedOptions/Seed/Perlin.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/Perlin.tsx index 4b3df41305..45b6b605ce 100644 --- a/frontend/src/features/options/AdvancedOptions/Seed/Perlin.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Seed/Perlin.tsx @@ -3,9 +3,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import { setPerlin } from '../../optionsSlice'; +} from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setPerlin } from 'features/options/store/optionsSlice'; export default function Perlin() { const dispatch = useAppDispatch(); diff --git a/frontend/src/features/options/AdvancedOptions/Seed/RandomizeSeed.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/RandomizeSeed.tsx similarity index 78% rename from frontend/src/features/options/AdvancedOptions/Seed/RandomizeSeed.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/RandomizeSeed.tsx index 904d82dcc2..d334c624c2 100644 --- a/frontend/src/features/options/AdvancedOptions/Seed/RandomizeSeed.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Seed/RandomizeSeed.tsx @@ -4,9 +4,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setShouldRandomizeSeed } from '../../optionsSlice'; +} from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setShouldRandomizeSeed } from 'features/options/store/optionsSlice'; export default function RandomizeSeed() { const dispatch = useAppDispatch(); diff --git a/frontend/src/features/options/AdvancedOptions/Seed/Seed.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/Seed.tsx similarity index 79% rename from frontend/src/features/options/AdvancedOptions/Seed/Seed.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/Seed.tsx index 3fc33012cc..7f50e6c7b8 100644 --- a/frontend/src/features/options/AdvancedOptions/Seed/Seed.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Seed/Seed.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from '../../../../app/constants'; +import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from 'app/constants'; import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import { setSeed } from '../../optionsSlice'; +} from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setSeed } from 'features/options/store/optionsSlice'; export default function Seed() { const seed = useAppSelector((state: RootState) => state.options.seed); diff --git a/frontend/src/features/options/AdvancedOptions/Seed/SeedOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/SeedOptions.tsx similarity index 100% rename from frontend/src/features/options/AdvancedOptions/Seed/SeedOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/SeedOptions.tsx diff --git a/frontend/src/features/options/AdvancedOptions/Seed/ShuffleSeed.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/ShuffleSeed.tsx similarity index 66% rename from frontend/src/features/options/AdvancedOptions/Seed/ShuffleSeed.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/ShuffleSeed.tsx index d2b235ddd0..59134398dc 100644 --- a/frontend/src/features/options/AdvancedOptions/Seed/ShuffleSeed.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Seed/ShuffleSeed.tsx @@ -1,13 +1,9 @@ import { Button } from '@chakra-ui/react'; import React from 'react'; -import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from '../../../../app/constants'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import randomInt from '../../../../common/util/randomInt'; -import { setSeed } from '../../optionsSlice'; +import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from 'app/constants'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import randomInt from 'common/util/randomInt'; +import { setSeed } from 'features/options/store/optionsSlice'; export default function ShuffleSeed() { const dispatch = useAppDispatch(); diff --git a/frontend/src/features/options/AdvancedOptions/Seed/Threshold.tsx b/frontend/src/features/options/components/AdvancedOptions/Seed/Threshold.tsx similarity index 73% rename from frontend/src/features/options/AdvancedOptions/Seed/Threshold.tsx rename to frontend/src/features/options/components/AdvancedOptions/Seed/Threshold.tsx index 1b0f0e106e..2450bda506 100644 --- a/frontend/src/features/options/AdvancedOptions/Seed/Threshold.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Seed/Threshold.tsx @@ -3,9 +3,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import { setThreshold } from '../../optionsSlice'; +} from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setThreshold } from 'features/options/store/optionsSlice'; export default function Threshold() { const dispatch = useAppDispatch(); @@ -17,7 +17,7 @@ export default function Threshold() { return ( state.options, diff --git a/frontend/src/features/options/components/AdvancedOptions/Upscale/UpscaleToggle.tsx b/frontend/src/features/options/components/AdvancedOptions/Upscale/UpscaleToggle.tsx new file mode 100644 index 0000000000..f0a55776c2 --- /dev/null +++ b/frontend/src/features/options/components/AdvancedOptions/Upscale/UpscaleToggle.tsx @@ -0,0 +1,25 @@ +import { ChangeEvent } from 'react'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setShouldRunESRGAN } from 'features/options/store/optionsSlice'; + +export default function UpscaleToggle() { + const isESRGANAvailable = useAppSelector( + (state: RootState) => state.system.isESRGANAvailable + ); + + const shouldRunESRGAN = useAppSelector( + (state: RootState) => state.options.shouldRunESRGAN + ); + + const dispatch = useAppDispatch(); + const handleChangeShouldRunESRGAN = (e: ChangeEvent) => + dispatch(setShouldRunESRGAN(e.target.checked)); + return ( + + ); +} diff --git a/frontend/src/features/options/AdvancedOptions/Variations/GenerateVariations.tsx b/frontend/src/features/options/components/AdvancedOptions/Variations/GenerateVariations.tsx similarity index 73% rename from frontend/src/features/options/AdvancedOptions/Variations/GenerateVariations.tsx rename to frontend/src/features/options/components/AdvancedOptions/Variations/GenerateVariations.tsx index f17685b0a9..ca5afd53c4 100644 --- a/frontend/src/features/options/AdvancedOptions/Variations/GenerateVariations.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Variations/GenerateVariations.tsx @@ -3,11 +3,11 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAISwitch from '../../../../common/components/IAISwitch'; -import { setShouldGenerateVariations } from '../../optionsSlice'; +} from 'app/store'; +import IAISwitch from 'common/components/IAISwitch'; +import { setShouldGenerateVariations } from 'features/options/store/optionsSlice'; -export default function GenerateVariations() { +export default function GenerateVariationsToggle() { const shouldGenerateVariations = useAppSelector( (state: RootState) => state.options.shouldGenerateVariations ); diff --git a/frontend/src/features/options/AdvancedOptions/Variations/SeedWeights.tsx b/frontend/src/features/options/components/AdvancedOptions/Variations/SeedWeights.tsx similarity index 78% rename from frontend/src/features/options/AdvancedOptions/Variations/SeedWeights.tsx rename to frontend/src/features/options/components/AdvancedOptions/Variations/SeedWeights.tsx index 10e7d754b4..9db25d2d80 100644 --- a/frontend/src/features/options/AdvancedOptions/Variations/SeedWeights.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Variations/SeedWeights.tsx @@ -3,10 +3,10 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAIInput from '../../../../common/components/IAIInput'; -import { validateSeedWeights } from '../../../../common/util/seedWeightPairs'; -import { setSeedWeights } from '../../optionsSlice'; +} from 'app/store'; +import IAIInput from 'common/components/IAIInput'; +import { validateSeedWeights } from 'common/util/seedWeightPairs'; +import { setSeedWeights } from 'features/options/store/optionsSlice'; export default function SeedWeights() { const seedWeights = useAppSelector( diff --git a/frontend/src/features/options/AdvancedOptions/Variations/VariationAmount.tsx b/frontend/src/features/options/components/AdvancedOptions/Variations/VariationAmount.tsx similarity index 82% rename from frontend/src/features/options/AdvancedOptions/Variations/VariationAmount.tsx rename to frontend/src/features/options/components/AdvancedOptions/Variations/VariationAmount.tsx index 24fc81bb3e..78500e8f95 100644 --- a/frontend/src/features/options/AdvancedOptions/Variations/VariationAmount.tsx +++ b/frontend/src/features/options/components/AdvancedOptions/Variations/VariationAmount.tsx @@ -3,9 +3,9 @@ import { RootState, useAppDispatch, useAppSelector, -} from '../../../../app/store'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import { setVariationAmount } from '../../optionsSlice'; +} from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setVariationAmount } from 'features/options/store/optionsSlice'; export default function VariationAmount() { const variationAmount = useAppSelector( diff --git a/frontend/src/features/options/AdvancedOptions/Variations/VariationsOptions.tsx b/frontend/src/features/options/components/AdvancedOptions/Variations/VariationsOptions.tsx similarity index 100% rename from frontend/src/features/options/AdvancedOptions/Variations/VariationsOptions.tsx rename to frontend/src/features/options/components/AdvancedOptions/Variations/VariationsOptions.tsx diff --git a/frontend/src/features/options/MainOptions/MainAdvancedOptionsCheckbox.tsx b/frontend/src/features/options/components/MainOptions/MainAdvancedOptionsCheckbox.tsx similarity index 73% rename from frontend/src/features/options/MainOptions/MainAdvancedOptionsCheckbox.tsx rename to frontend/src/features/options/components/MainOptions/MainAdvancedOptionsCheckbox.tsx index b8b580856e..8e1cc0f2e7 100644 --- a/frontend/src/features/options/MainOptions/MainAdvancedOptionsCheckbox.tsx +++ b/frontend/src/features/options/components/MainOptions/MainAdvancedOptionsCheckbox.tsx @@ -1,7 +1,7 @@ import React, { ChangeEvent } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAICheckbox from '../../../common/components/IAICheckbox'; -import { setShowAdvancedOptions } from '../optionsSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAICheckbox from 'common/components/IAICheckbox'; +import { setShowAdvancedOptions } from 'features/options/store/optionsSlice'; export default function MainAdvancedOptionsCheckbox() { const showAdvancedOptions = useAppSelector( diff --git a/frontend/src/features/options/MainOptions/MainCFGScale.tsx b/frontend/src/features/options/components/MainOptions/MainCFGScale.tsx similarity index 64% rename from frontend/src/features/options/MainOptions/MainCFGScale.tsx rename to frontend/src/features/options/components/MainOptions/MainCFGScale.tsx index 07395c9fb6..7d8cc7db9e 100644 --- a/frontend/src/features/options/MainOptions/MainCFGScale.tsx +++ b/frontend/src/features/options/components/MainOptions/MainCFGScale.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAINumberInput from '../../../common/components/IAINumberInput'; -import { setCfgScale } from '../optionsSlice'; -import { fontSize, inputWidth } from './MainOptions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setCfgScale } from 'features/options/store/optionsSlice'; +import { inputWidth } from './MainOptions'; export default function MainCFGScale() { const dispatch = useAppDispatch(); @@ -15,11 +15,10 @@ export default function MainCFGScale() { label="CFG Scale" step={0.5} min={1.01} - max={30} + max={200} onChange={handleChangeCfgScale} value={cfgScale} width={inputWidth} - fontSize={fontSize} styleClass="main-option-block" textAlign="center" isInteger={false} diff --git a/frontend/src/features/options/MainOptions/MainHeight.tsx b/frontend/src/features/options/components/MainOptions/MainHeight.tsx similarity index 58% rename from frontend/src/features/options/MainOptions/MainHeight.tsx rename to frontend/src/features/options/components/MainOptions/MainHeight.tsx index 78285f7944..3e1ccbffb4 100644 --- a/frontend/src/features/options/MainOptions/MainHeight.tsx +++ b/frontend/src/features/options/components/MainOptions/MainHeight.tsx @@ -1,10 +1,9 @@ import React, { ChangeEvent } from 'react'; -import { HEIGHTS } from '../../../app/constants'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAISelect from '../../../common/components/IAISelect'; -import { activeTabNameSelector } from '../optionsSelectors'; -import { setHeight } from '../optionsSlice'; -import { fontSize } from './MainOptions'; +import { HEIGHTS } from 'app/constants'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISelect from 'common/components/IAISelect'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { setHeight } from 'features/options/store/optionsSlice'; export default function MainHeight() { const height = useAppSelector((state: RootState) => state.options.height); @@ -16,13 +15,12 @@ export default function MainHeight() { return ( ); diff --git a/frontend/src/features/options/MainOptions/MainIterations.tsx b/frontend/src/features/options/components/MainOptions/MainIterations.tsx similarity index 51% rename from frontend/src/features/options/MainOptions/MainIterations.tsx rename to frontend/src/features/options/components/MainOptions/MainIterations.tsx index e244e02f05..c4b12973a7 100644 --- a/frontend/src/features/options/MainOptions/MainIterations.tsx +++ b/frontend/src/features/options/components/MainOptions/MainIterations.tsx @@ -1,20 +1,21 @@ import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; import React from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAINumberInput from '../../../common/components/IAINumberInput'; -import { mayGenerateMultipleImagesSelector } from '../optionsSelectors'; -import { OptionsState, setIterations } from '../optionsSlice'; -import { fontSize, inputWidth } from './MainOptions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { + OptionsState, + setIterations, +} from 'features/options/store/optionsSlice'; +import { inputWidth } from './MainOptions'; const mainIterationsSelector = createSelector( - [(state: RootState) => state.options, mayGenerateMultipleImagesSelector], - (options: OptionsState, mayGenerateMultipleImages) => { + [(state: RootState) => state.options], + (options: OptionsState) => { const { iterations } = options; return { iterations, - mayGenerateMultipleImages, }; }, { @@ -26,9 +27,7 @@ const mainIterationsSelector = createSelector( export default function MainIterations() { const dispatch = useAppDispatch(); - const { iterations, mayGenerateMultipleImages } = useAppSelector( - mainIterationsSelector - ); + const { iterations } = useAppSelector(mainIterationsSelector); const handleChangeIterations = (v: number) => dispatch(setIterations(v)); @@ -38,11 +37,10 @@ export default function MainIterations() { step={1} min={1} max={9999} - isDisabled={!mayGenerateMultipleImages} onChange={handleChangeIterations} value={iterations} width={inputWidth} - fontSize={fontSize} + labelFontSize={0.5} styleClass="main-option-block" textAlign="center" /> diff --git a/frontend/src/features/options/MainOptions/MainOptions.scss b/frontend/src/features/options/components/MainOptions/MainOptions.scss similarity index 68% rename from frontend/src/features/options/MainOptions/MainOptions.scss rename to frontend/src/features/options/components/MainOptions/MainOptions.scss index b9854397a5..488d400918 100644 --- a/frontend/src/features/options/MainOptions/MainOptions.scss +++ b/frontend/src/features/options/components/MainOptions/MainOptions.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .main-options { display: grid; @@ -13,7 +13,7 @@ .main-options-row { display: grid; grid-template-columns: repeat(3, auto); - column-gap: 1rem; + column-gap: 0.5rem; max-width: $options-bar-max-width; } @@ -21,27 +21,22 @@ border-radius: 0.5rem; display: grid !important; grid-template-columns: auto !important; - row-gap: 0.4rem; + row-gap: 0.5rem; .invokeai__number-input-form-label, .invokeai__select-label { - width: 100%; - font-size: 0.9rem !important; font-weight: bold; + font-size: 0.9rem !important; } - .number-input-entry { - padding: 0; - height: 2.4rem; - } - - .iai-select-picker { - height: 2.4rem; - border-radius: 0.3rem; + .invokeai__select-label { + margin: 0; } } .advanced-options-checkbox { - padding: 1rem; + background-color: var(--background-color-secondary); + padding: 0.5rem 1rem; + border-radius: 0.4rem; font-weight: bold; } diff --git a/frontend/src/features/options/MainOptions/MainOptions.tsx b/frontend/src/features/options/components/MainOptions/MainOptions.tsx similarity index 95% rename from frontend/src/features/options/MainOptions/MainOptions.tsx rename to frontend/src/features/options/components/MainOptions/MainOptions.tsx index 092cdea50d..15b92652ec 100644 --- a/frontend/src/features/options/MainOptions/MainOptions.tsx +++ b/frontend/src/features/options/components/MainOptions/MainOptions.tsx @@ -5,7 +5,6 @@ import MainSampler from './MainSampler'; import MainSteps from './MainSteps'; import MainWidth from './MainWidth'; -export const fontSize = '0.9rem'; export const inputWidth = 'auto'; export default function MainOptions() { diff --git a/frontend/src/features/options/MainOptions/MainSampler.tsx b/frontend/src/features/options/components/MainOptions/MainSampler.tsx similarity index 62% rename from frontend/src/features/options/MainOptions/MainSampler.tsx rename to frontend/src/features/options/components/MainOptions/MainSampler.tsx index c6b0ae7dd3..8f45eae430 100644 --- a/frontend/src/features/options/MainOptions/MainSampler.tsx +++ b/frontend/src/features/options/components/MainOptions/MainSampler.tsx @@ -1,9 +1,8 @@ import React, { ChangeEvent } from 'react'; -import { SAMPLERS } from '../../../app/constants'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAISelect from '../../../common/components/IAISelect'; -import { setSampler } from '../optionsSlice'; -import { fontSize } from './MainOptions'; +import { SAMPLERS } from 'app/constants'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISelect from 'common/components/IAISelect'; +import { setSampler } from 'features/options/store/optionsSlice'; export default function MainSampler() { const sampler = useAppSelector((state: RootState) => state.options.sampler); @@ -18,7 +17,6 @@ export default function MainSampler() { value={sampler} onChange={handleChangeSampler} validValues={SAMPLERS} - fontSize={fontSize} styleClass="main-option-block" /> ); diff --git a/frontend/src/features/options/MainOptions/MainSteps.tsx b/frontend/src/features/options/components/MainOptions/MainSteps.tsx similarity index 64% rename from frontend/src/features/options/MainOptions/MainSteps.tsx rename to frontend/src/features/options/components/MainOptions/MainSteps.tsx index 20670fc208..ba9d99df4a 100644 --- a/frontend/src/features/options/MainOptions/MainSteps.tsx +++ b/frontend/src/features/options/components/MainOptions/MainSteps.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAINumberInput from '../../../common/components/IAINumberInput'; -import { setSteps } from '../optionsSlice'; -import { fontSize, inputWidth } from './MainOptions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { setSteps } from 'features/options/store/optionsSlice'; +import { inputWidth } from './MainOptions'; export default function MainSteps() { const dispatch = useAppDispatch(); @@ -19,7 +19,6 @@ export default function MainSteps() { onChange={handleChangeSteps} value={steps} width={inputWidth} - fontSize={fontSize} styleClass="main-option-block" textAlign="center" /> diff --git a/frontend/src/features/options/MainOptions/MainWidth.tsx b/frontend/src/features/options/components/MainOptions/MainWidth.tsx similarity index 58% rename from frontend/src/features/options/MainOptions/MainWidth.tsx rename to frontend/src/features/options/components/MainOptions/MainWidth.tsx index 69841f3954..eeab19a1b0 100644 --- a/frontend/src/features/options/MainOptions/MainWidth.tsx +++ b/frontend/src/features/options/components/MainOptions/MainWidth.tsx @@ -1,10 +1,9 @@ import React, { ChangeEvent } from 'react'; -import { WIDTHS } from '../../../app/constants'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAISelect from '../../../common/components/IAISelect'; -import { activeTabNameSelector } from '../optionsSelectors'; -import { setWidth } from '../optionsSlice'; -import { fontSize } from './MainOptions'; +import { WIDTHS } from 'app/constants'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAISelect from 'common/components/IAISelect'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { setWidth } from 'features/options/store/optionsSlice'; export default function MainWidth() { const width = useAppSelector((state: RootState) => state.options.width); @@ -17,13 +16,12 @@ export default function MainWidth() { return ( ); diff --git a/frontend/src/features/options/OptionsAccordion.tsx b/frontend/src/features/options/components/OptionsAccordion.tsx similarity index 78% rename from frontend/src/features/options/OptionsAccordion.tsx rename to frontend/src/features/options/components/OptionsAccordion.tsx index 9971d017a0..5520ae2297 100644 --- a/frontend/src/features/options/OptionsAccordion.tsx +++ b/frontend/src/features/options/components/OptionsAccordion.tsx @@ -1,6 +1,6 @@ import { Accordion, ExpandedIndex } from '@chakra-ui/react'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; -import { setOpenAccordions } from '../system/systemSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import { setOpenAccordions } from 'features/system/store/systemSlice'; import InvokeAccordionItem, { InvokeAccordionItemProps, } from './AccordionItems/InvokeAccordionItem'; @@ -36,12 +36,15 @@ const OptionsAccordion = (props: OptionAccordionsType) => { const accordionsToRender: ReactElement[] = []; if (accordionInfo) { Object.keys(accordionInfo).forEach((key) => { + const { header, feature, content, additionalHeaderComponents } = + accordionInfo[key]; accordionsToRender.push( ); }); diff --git a/frontend/src/features/options/ProcessButtons/CancelButton.tsx b/frontend/src/features/options/components/ProcessButtons/CancelButton.tsx similarity index 84% rename from frontend/src/features/options/ProcessButtons/CancelButton.tsx rename to frontend/src/features/options/components/ProcessButtons/CancelButton.tsx index 7034a0338f..e7516454a5 100644 --- a/frontend/src/features/options/ProcessButtons/CancelButton.tsx +++ b/frontend/src/features/options/components/ProcessButtons/CancelButton.tsx @@ -1,12 +1,12 @@ import { MdCancel } from 'react-icons/md'; -import { cancelProcessing } from '../../../app/socketio/actions'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; +import { cancelProcessing } from 'app/socketio/actions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; import IAIIconButton, { IAIIconButtonProps, -} from '../../../common/components/IAIIconButton'; +} from 'common/components/IAIIconButton'; import { useHotkeys } from 'react-hotkeys-hook'; import { createSelector } from '@reduxjs/toolkit'; -import { SystemState } from '../../system/systemSlice'; +import { SystemState } from 'features/system/store/systemSlice'; import _ from 'lodash'; const cancelButtonSelector = createSelector( diff --git a/frontend/src/features/options/components/ProcessButtons/InvokeButton.tsx b/frontend/src/features/options/components/ProcessButtons/InvokeButton.tsx new file mode 100644 index 0000000000..30aab9744c --- /dev/null +++ b/frontend/src/features/options/components/ProcessButtons/InvokeButton.tsx @@ -0,0 +1,68 @@ +import { useHotkeys } from 'react-hotkeys-hook'; +import { FaPlay } from 'react-icons/fa'; +import { readinessSelector } from 'app/selectors/readinessSelector'; +import { generateImage } from 'app/socketio/actions'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIButton, { IAIButtonProps } from 'common/components/IAIButton'; +import IAIIconButton, { + IAIIconButtonProps, +} from 'common/components/IAIIconButton'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; + +interface InvokeButton + extends Omit { + iconButton?: boolean; +} + +export default function InvokeButton(props: InvokeButton) { + const { iconButton = false, ...rest } = props; + const dispatch = useAppDispatch(); + const { isReady } = useAppSelector(readinessSelector); + const activeTabName = useAppSelector(activeTabNameSelector); + + const handleClickGenerate = () => { + dispatch(generateImage(activeTabName)); + }; + + useHotkeys( + ['ctrl+enter', 'meta+enter'], + () => { + dispatch(generateImage(activeTabName)); + }, + { + enabled: () => isReady, + preventDefault: true, + enableOnFormTags: ['input', 'textarea', 'select'], + }, + [isReady, activeTabName] + ); + + return ( +
+ {iconButton ? ( + } + isDisabled={!isReady} + onClick={handleClickGenerate} + className="invoke-btn" + tooltip="Invoke" + tooltipProps={{ placement: 'bottom' }} + {...rest} + /> + ) : ( + + Invoke + + )} +
+ ); +} diff --git a/frontend/src/features/options/ProcessButtons/Loopback.tsx b/frontend/src/features/options/components/ProcessButtons/Loopback.tsx similarity index 76% rename from frontend/src/features/options/ProcessButtons/Loopback.tsx rename to frontend/src/features/options/components/ProcessButtons/Loopback.tsx index 6d360f4f25..c574c1ebfe 100644 --- a/frontend/src/features/options/ProcessButtons/Loopback.tsx +++ b/frontend/src/features/options/components/ProcessButtons/Loopback.tsx @@ -1,8 +1,8 @@ import { createSelector } from '@reduxjs/toolkit'; import { FaRecycle } from 'react-icons/fa'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import IAIIconButton from '../../../common/components/IAIIconButton'; -import { OptionsState, setShouldLoopback } from '../optionsSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { OptionsState, setShouldLoopback } from 'features/options/store/optionsSlice'; const loopbackSelector = createSelector( (state: RootState) => state.options, diff --git a/frontend/src/features/options/ProcessButtons/ProcessButtons.scss b/frontend/src/features/options/components/ProcessButtons/ProcessButtons.scss similarity index 70% rename from frontend/src/features/options/ProcessButtons/ProcessButtons.scss rename to frontend/src/features/options/components/ProcessButtons/ProcessButtons.scss index 0c107e0865..658ee08177 100644 --- a/frontend/src/features/options/ProcessButtons/ProcessButtons.scss +++ b/frontend/src/features/options/components/ProcessButtons/ProcessButtons.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .process-buttons { display: flex; @@ -8,14 +8,11 @@ .invoke-btn { flex-grow: 1; width: 100%; - svg { - width: 18px !important; - height: 18px !important; - } + @include Button( $btn-color: var(--accent-color), $btn-color-hover: var(--accent-color-hover), - // $btn-width: 5rem + $icon-size: 16px ); } @@ -23,19 +20,19 @@ @include Button( $btn-color: var(--destructive-color), $btn-color-hover: var(--destructive-color-hover), - // $btn-width: 3rem + $btn-width: 3rem ); } .loopback-btn { &[data-as-checkbox='true'] { - background-color: var(--btn-grey); - border: 3px solid var(--btn-grey); + background-color: var(--btn-btn-base-color); + border: 3px solid var(--btn-btn-base-color); svg { fill: var(--text-color); } &:hover { - background-color: var(--btn-grey); + background-color: var(--btn-btn-base-color); border-color: var(--btn-checkbox-border-hover); svg { fill: var(--text-color); @@ -43,13 +40,13 @@ } &[data-selected='true'] { border-color: var(--accent-color); - background-color: var(--btn-grey); + background-color: var(--btn-btn-base-color); svg { fill: var(--text-color); } &:hover { border-color: var(--accent-color); - background-color: var(--btn-grey); + background-color: var(--btn-btn-base-color); svg { fill: var(--text-color); } diff --git a/frontend/src/features/options/ProcessButtons/ProcessButtons.tsx b/frontend/src/features/options/components/ProcessButtons/ProcessButtons.tsx similarity index 59% rename from frontend/src/features/options/ProcessButtons/ProcessButtons.tsx rename to frontend/src/features/options/components/ProcessButtons/ProcessButtons.tsx index b27e8fe7bb..2cf11a8a60 100644 --- a/frontend/src/features/options/ProcessButtons/ProcessButtons.tsx +++ b/frontend/src/features/options/components/ProcessButtons/ProcessButtons.tsx @@ -1,15 +1,19 @@ import InvokeButton from './InvokeButton'; import CancelButton from './CancelButton'; import LoopbackButton from './Loopback'; +import { useAppSelector } from 'app/store'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; /** * Buttons to start and cancel image generation. */ const ProcessButtons = () => { + const activeTabName = useAppSelector(activeTabNameSelector); + return (
- + {activeTabName === 'img2img' && }
); diff --git a/frontend/src/features/options/PromptInput/PromptInput.scss b/frontend/src/features/options/components/PromptInput/PromptInput.scss similarity index 100% rename from frontend/src/features/options/PromptInput/PromptInput.scss rename to frontend/src/features/options/components/PromptInput/PromptInput.scss diff --git a/frontend/src/features/options/PromptInput/PromptInput.tsx b/frontend/src/features/options/components/PromptInput/PromptInput.tsx similarity index 83% rename from frontend/src/features/options/PromptInput/PromptInput.tsx rename to frontend/src/features/options/components/PromptInput/PromptInput.tsx index 035d085013..429beabe38 100644 --- a/frontend/src/features/options/PromptInput/PromptInput.tsx +++ b/frontend/src/features/options/components/PromptInput/PromptInput.tsx @@ -1,14 +1,14 @@ import { FormControl, Textarea } from '@chakra-ui/react'; import { ChangeEvent, KeyboardEvent, useRef } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import { generateImage } from '../../../app/socketio/actions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import { generateImage } from 'app/socketio/actions'; -import { OptionsState, setPrompt } from '../optionsSlice'; +import { OptionsState, setPrompt } from 'features/options/store/optionsSlice'; import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; import { useHotkeys } from 'react-hotkeys-hook'; -import { activeTabNameSelector } from '../optionsSelectors'; -import { readinessSelector } from '../../../app/selectors/readinessSelector'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { readinessSelector } from 'app/selectors/readinessSelector'; const promptInputSelector = createSelector( [(state: RootState) => state.options, activeTabNameSelector], diff --git a/frontend/src/features/options/optionsSelectors.ts b/frontend/src/features/options/store/optionsSelectors.ts similarity index 78% rename from frontend/src/features/options/optionsSelectors.ts rename to frontend/src/features/options/store/optionsSelectors.ts index 6a1f31c850..00ec3b0c08 100644 --- a/frontend/src/features/options/optionsSelectors.ts +++ b/frontend/src/features/options/store/optionsSelectors.ts @@ -1,7 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; -import { RootState } from '../../app/store'; -import { tabMap } from '../tabs/InvokeTabs'; +import { RootState } from 'app/store'; +import { tabMap } from 'features/tabs/components/InvokeTabs'; import { OptionsState } from './optionsSlice'; export const activeTabNameSelector = createSelector( @@ -27,3 +27,6 @@ export const mayGenerateMultipleImagesSelector = createSelector( }, } ); + +export const optionsSelector = (state: RootState): OptionsState => + state.options; diff --git a/frontend/src/features/options/optionsSlice.ts b/frontend/src/features/options/store/optionsSlice.ts similarity index 86% rename from frontend/src/features/options/optionsSlice.ts rename to frontend/src/features/options/store/optionsSlice.ts index 64f40a0307..c0f813a480 100644 --- a/frontend/src/features/options/optionsSlice.ts +++ b/frontend/src/features/options/store/optionsSlice.ts @@ -1,90 +1,106 @@ import { createSlice } from '@reduxjs/toolkit'; import type { PayloadAction } from '@reduxjs/toolkit'; -import * as InvokeAI from '../../app/invokeai'; -import promptToString from '../../common/util/promptToString'; -import { seedWeightsToString } from '../../common/util/seedWeightPairs'; -import { FACETOOL_TYPES } from '../../app/constants'; -import { InvokeTabName, tabMap } from '../tabs/InvokeTabs'; +import * as InvokeAI from 'app/invokeai'; +import promptToString from 'common/util/promptToString'; +import { seedWeightsToString } from 'common/util/seedWeightPairs'; +import { FACETOOL_TYPES } from 'app/constants'; +import { InvokeTabName, tabMap } from 'features/tabs/components/InvokeTabs'; export type UpscalingLevel = 2 | 4; export type FacetoolType = typeof FACETOOL_TYPES[number]; export interface OptionsState { - prompt: string; - iterations: number; - steps: number; + activeTab: number; cfgScale: number; - height: number; - width: number; - sampler: string; - threshold: number; - perlin: number; - seed: number; - img2imgStrength: number; - facetoolType: FacetoolType; - facetoolStrength: number; codeformerFidelity: number; - upscalingLevel: UpscalingLevel; - upscalingStrength: number; - initialImage?: InvokeAI.Image | string; // can be an Image or url - maskPath: string; - seamless: boolean; + currentTheme: string; + facetoolStrength: number; + facetoolType: FacetoolType; + height: number; hiresFix: boolean; + img2imgStrength: number; + infillMethod: string; + initialImage?: InvokeAI.Image | string; // can be an Image or url + isLightBoxOpen: boolean; + iterations: number; + maskPath: string; + optionsPanelScrollPosition: number; + perlin: number; + prompt: string; + sampler: string; + seamBlur: number; + seamless: boolean; + seamSize: number; + seamSteps: number; + seamStrength: number; + seed: number; + seedWeights: string; shouldFitToWidthHeight: boolean; shouldGenerateVariations: boolean; - variationAmount: number; - seedWeights: string; - shouldRunESRGAN: boolean; - shouldRunFacetool: boolean; - shouldRandomizeSeed: boolean; - showAdvancedOptions: boolean; - activeTab: number; - shouldShowImageDetails: boolean; - showDualDisplay: boolean; - shouldShowOptionsPanel: boolean; - shouldPinOptionsPanel: boolean; - optionsPanelScrollPosition: number; shouldHoldOptionsPanelOpen: boolean; shouldLoopback: boolean; + shouldPinOptionsPanel: boolean; + shouldRandomizeSeed: boolean; + shouldRunESRGAN: boolean; + shouldRunFacetool: boolean; + shouldShowImageDetails: boolean; + shouldShowOptionsPanel: boolean; + showAdvancedOptions: boolean; + showDualDisplay: boolean; + steps: number; + threshold: number; + tileSize: number; + upscalingLevel: UpscalingLevel; + upscalingStrength: number; + variationAmount: number; + width: number; } const initialOptionsState: OptionsState = { - prompt: '', - iterations: 1, - steps: 50, + activeTab: 0, cfgScale: 7.5, - height: 512, - width: 512, - sampler: 'k_lms', - threshold: 0, - perlin: 0, - seed: 0, - seamless: false, - hiresFix: false, - img2imgStrength: 0.75, - maskPath: '', - shouldFitToWidthHeight: true, - shouldGenerateVariations: false, - variationAmount: 0.1, - seedWeights: '', - shouldRunESRGAN: false, - upscalingLevel: 4, - upscalingStrength: 0.75, - shouldRunFacetool: false, + codeformerFidelity: 0.75, + currentTheme: 'dark', facetoolStrength: 0.8, facetoolType: 'gfpgan', - codeformerFidelity: 0.75, - shouldRandomizeSeed: true, - showAdvancedOptions: true, - activeTab: 0, - shouldShowImageDetails: false, - showDualDisplay: true, - shouldShowOptionsPanel: true, - shouldPinOptionsPanel: true, + height: 512, + hiresFix: false, + img2imgStrength: 0.75, + infillMethod: 'patchmatch', + isLightBoxOpen: false, + iterations: 1, + maskPath: '', optionsPanelScrollPosition: 0, + perlin: 0, + prompt: '', + sampler: 'k_lms', + seamBlur: 16, + seamless: false, + seamSize: 96, + seamSteps: 10, + seamStrength: 0.7, + seed: 0, + seedWeights: '', + shouldFitToWidthHeight: true, + shouldGenerateVariations: false, shouldHoldOptionsPanelOpen: false, shouldLoopback: false, + shouldPinOptionsPanel: true, + shouldRandomizeSeed: true, + shouldRunESRGAN: false, + shouldRunFacetool: false, + shouldShowImageDetails: false, + shouldShowOptionsPanel: true, + showAdvancedOptions: true, + showDualDisplay: true, + steps: 50, + threshold: 0, + tileSize: 32, + upscalingLevel: 4, + upscalingStrength: 0.75, + variationAmount: 0.1, + width: 512, }; const initialState: OptionsState = initialOptionsState; @@ -179,6 +195,8 @@ export const optionsSlice = createSlice({ }, setSeedWeights: (state, action: PayloadAction) => { state.seedWeights = action.payload; + state.shouldGenerateVariations = true; + state.variationAmount = 0; }, setAllTextToImageParameters: ( state, @@ -202,6 +220,7 @@ export const optionsSlice = createSlice({ if (variations && variations.length > 0) { state.seedWeights = seedWeightsToString(variations); state.shouldGenerateVariations = true; + state.variationAmount = 0; } else { state.shouldGenerateVariations = false; } @@ -269,6 +288,7 @@ export const optionsSlice = createSlice({ if (variations && variations.length > 0) { state.seedWeights = seedWeightsToString(variations); state.shouldGenerateVariations = true; + state.variationAmount = 0; } else { state.shouldGenerateVariations = false; } @@ -290,6 +310,9 @@ export const optionsSlice = createSlice({ if (typeof hires_fix === 'boolean') state.hiresFix = hires_fix; if (width) state.width = width; if (height) state.height = height; + + state.shouldRunESRGAN = false; + state.shouldRunFacetool = false; }, resetOptionsState: (state) => { return { @@ -349,53 +372,85 @@ export const optionsSlice = createSlice({ setShouldLoopback: (state, action: PayloadAction) => { state.shouldLoopback = action.payload; }, + setCurrentTheme: (state, action: PayloadAction) => { + state.currentTheme = action.payload; + }, + setIsLightBoxOpen: (state, action: PayloadAction) => { + state.isLightBoxOpen = action.payload; + }, + setSeamSize: (state, action: PayloadAction) => { + state.seamSize = action.payload; + }, + setSeamBlur: (state, action: PayloadAction) => { + state.seamBlur = action.payload; + }, + setSeamStrength: (state, action: PayloadAction) => { + state.seamStrength = action.payload; + }, + setSeamSteps: (state, action: PayloadAction) => { + state.seamSteps = action.payload; + }, + setTileSize: (state, action: PayloadAction) => { + state.tileSize = action.payload; + }, + setInfillMethod: (state, action: PayloadAction) => { + state.infillMethod = action.payload; + }, }, }); export const { - setPrompt, - setIterations, - setSteps, + clearInitialImage, + resetOptionsState, + resetSeed, + setActiveTab, + setAllImageToImageParameters, + setAllParameters, + setAllTextToImageParameters, setCfgScale, - setThreshold, - setPerlin, - setHeight, - setWidth, - setSampler, - setSeed, - setSeamless, - setHiresFix, - setImg2imgStrength, + setCodeformerFidelity, + setCurrentTheme, setFacetoolStrength, setFacetoolType, - setCodeformerFidelity, - setUpscalingLevel, - setUpscalingStrength, - setMaskPath, - resetSeed, - resetOptionsState, - setShouldFitToWidthHeight, - setParameter, - setShouldGenerateVariations, - setSeedWeights, - setVariationAmount, - setAllParameters, - setShouldRunFacetool, - setShouldRunESRGAN, - setShouldRandomizeSeed, - setShowAdvancedOptions, - setActiveTab, - setShouldShowImageDetails, - setAllTextToImageParameters, - setAllImageToImageParameters, - setShowDualDisplay, + setHeight, + setHiresFix, + setImg2imgStrength, + setInfillMethod, setInitialImage, - clearInitialImage, - setShouldShowOptionsPanel, - setShouldPinOptionsPanel, + setIsLightBoxOpen, + setIterations, + setMaskPath, setOptionsPanelScrollPosition, + setParameter, + setPerlin, + setPrompt, + setSampler, + setSeamBlur, + setSeamless, + setSeamSize, + setSeamSteps, + setSeamStrength, + setSeed, + setSeedWeights, + setShouldFitToWidthHeight, + setShouldGenerateVariations, setShouldHoldOptionsPanelOpen, setShouldLoopback, + setShouldPinOptionsPanel, + setShouldRandomizeSeed, + setShouldRunESRGAN, + setShouldRunFacetool, + setShouldShowImageDetails, + setShouldShowOptionsPanel, + setShowAdvancedOptions, + setShowDualDisplay, + setSteps, + setThreshold, + setTileSize, + setUpscalingLevel, + setUpscalingStrength, + setVariationAmount, + setWidth, } = optionsSlice.actions; export default optionsSlice.reducer; diff --git a/frontend/src/features/system/components/ClearTempFolderButtonModal.tsx b/frontend/src/features/system/components/ClearTempFolderButtonModal.tsx new file mode 100644 index 0000000000..b093be07e2 --- /dev/null +++ b/frontend/src/features/system/components/ClearTempFolderButtonModal.tsx @@ -0,0 +1,43 @@ +import { emptyTempFolder } from 'app/socketio/actions'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIAlertDialog from 'common/components/IAIAlertDialog'; +import IAIButton from 'common/components/IAIButton'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; +import { + clearCanvasHistory, + resetCanvas, +} from 'features/canvas/store/canvasSlice'; +import { FaTrash } from 'react-icons/fa'; + +const EmptyTempFolderButtonModal = () => { + const isStaging = useAppSelector(isStagingSelector); + const dispatch = useAppDispatch(); + + const acceptCallback = () => { + dispatch(emptyTempFolder()); + dispatch(resetCanvas()); + dispatch(clearCanvasHistory()); + }; + + return ( + } size={'sm'} isDisabled={isStaging}> + Empty Temp Image Folder + + } + > +

+ Emptying the temp image folder also fully resets the Unified Canvas. + This includes all undo/redo history, images in the staging area, and the + canvas base layer. +

+
+

Are you sure you want to empty the temp folder?

+
+ ); +}; +export default EmptyTempFolderButtonModal; diff --git a/frontend/src/features/system/Console.scss b/frontend/src/features/system/components/Console.scss similarity index 65% rename from frontend/src/features/system/Console.scss rename to frontend/src/features/system/components/Console.scss index 0246e33ca3..e043d58d51 100644 --- a/frontend/src/features/system/Console.scss +++ b/frontend/src/features/system/components/Console.scss @@ -37,39 +37,39 @@ } .console-toggle-icon-button { - background: var(--console-icon-button-bg-color) !important; - position: fixed !important; + background: var(--console-icon-button-bg-color); + position: fixed; left: 0.5rem; bottom: 0.5rem; z-index: 10000; &:hover { - background: var(--console-icon-button-bg-color-hover) !important; + background: var(--console-icon-button-bg-color-hover); } &[data-error-seen='true'] { - background: var(--status-bad-color) !important; + background: var(--status-bad-color); &:hover { - background: var(--status-bad-color) !important; + background: var(--status-bad-color); } } } .console-autoscroll-icon-button { - background: var(--console-icon-button-bg-color) !important; - position: fixed !important; + background: var(--console-icon-button-bg-color); + position: fixed; left: 0.5rem; bottom: 3rem; z-index: 10000; &:hover { - background: var(--console-icon-button-bg-color-hover) !important; + background: var(--console-icon-button-bg-color-hover); } &[data-autoscroll-enabled='true'] { - background: var(--accent-color) !important; + background: var(--accent-color); &:hover { - background: var(--accent-color-hover) !important; + background: var(--accent-color-hover); } } } diff --git a/frontend/src/features/system/Console.tsx b/frontend/src/features/system/components/Console.tsx similarity index 97% rename from frontend/src/features/system/Console.tsx rename to frontend/src/features/system/components/Console.tsx index 2916d740f4..312ac44941 100644 --- a/frontend/src/features/system/Console.tsx +++ b/frontend/src/features/system/components/Console.tsx @@ -1,7 +1,7 @@ import { IconButton, Tooltip } from '@chakra-ui/react'; -import { useAppDispatch, useAppSelector } from '../../app/store'; -import { RootState } from '../../app/store'; -import { errorSeen, setShouldShowLogViewer, SystemState } from './systemSlice'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { RootState } from 'app/store'; +import { errorSeen, setShouldShowLogViewer, SystemState } from 'features/system/store/systemSlice'; import { useLayoutEffect, useRef, useState } from 'react'; import { FaAngleDoubleDown, FaCode, FaMinus } from 'react-icons/fa'; import { createSelector } from '@reduxjs/toolkit'; diff --git a/frontend/src/features/system/HotkeysModal/HotkeysModal.scss b/frontend/src/features/system/components/HotkeysModal/HotkeysModal.scss similarity index 84% rename from frontend/src/features/system/HotkeysModal/HotkeysModal.scss rename to frontend/src/features/system/components/HotkeysModal/HotkeysModal.scss index 0a216b5c4b..afb2b1c61e 100644 --- a/frontend/src/features/system/HotkeysModal/HotkeysModal.scss +++ b/frontend/src/features/system/components/HotkeysModal/HotkeysModal.scss @@ -1,11 +1,10 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .hotkeys-modal { - width: 36rem !important; - max-width: 36rem !important; + width: 36rem; + max-width: 36rem; display: grid; padding: 1rem; - background-color: var(--settings-modal-bg) !important; row-gap: 1rem; font-family: Inter; @@ -42,7 +41,7 @@ } button { - border-radius: 0.3rem !important; + border-radius: 0.3rem; &[aria-expanded='true'] { background-color: var(--tab-hover-color); @@ -81,7 +80,7 @@ .hotkey-key { font-size: 0.8rem; font-weight: bold; - border: 2px solid var(--settings-modal-bg); + background-color: var(--background-color-light); padding: 0.2rem 0.5rem; border-radius: 0.3rem; } diff --git a/frontend/src/features/system/HotkeysModal/HotkeysModal.tsx b/frontend/src/features/system/components/HotkeysModal/HotkeysModal.tsx similarity index 69% rename from frontend/src/features/system/HotkeysModal/HotkeysModal.tsx rename to frontend/src/features/system/components/HotkeysModal/HotkeysModal.tsx index 0c36f5fda9..3dc384964e 100644 --- a/frontend/src/features/system/HotkeysModal/HotkeysModal.tsx +++ b/frontend/src/features/system/components/HotkeysModal/HotkeysModal.tsx @@ -49,21 +49,27 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { desc: 'Pin the options panel', hotkey: 'Shift+O', }, + { + title: 'Toggle Viewer', + desc: 'Open and close Image Viewer', + hotkey: 'Z', + }, { title: 'Toggle Gallery', desc: 'Open and close the gallery drawer', hotkey: 'G', }, { - title: 'Change Tabs', - desc: 'Switch to another workspace', - hotkey: '1-6', + title: 'Maximize Workspace', + desc: 'Close panels and maximize work area', + hotkey: 'F', }, { - title: 'Theme Toggle', - desc: 'Switch between dark and light modes', - hotkey: 'Shift+D', + title: 'Change Tabs', + desc: 'Switch to another workspace', + hotkey: '1-5', }, + { title: 'Console Toggle', desc: 'Open and close console', @@ -107,12 +113,12 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { { title: 'Previous Image', desc: 'Display the previous image in gallery', - hotkey: 'Arrow left', + hotkey: 'Arrow Left', }, { title: 'Next Image', desc: 'Display the next image in gallery', - hotkey: 'Arrow right', + hotkey: 'Arrow Right', }, { title: 'Toggle Gallery Pin', @@ -129,63 +135,108 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { desc: 'Decreases gallery thumbnails size', hotkey: 'Shift+Down', }, - { - title: 'Reset Gallery Image Size', - desc: 'Resets image gallery size', - hotkey: 'Shift+R', - }, ]; - const inpaintingHotkeys = [ + const unifiedCanvasHotkeys = [ { title: 'Select Brush', - desc: 'Selects the inpainting brush', + desc: 'Selects the canvas brush', hotkey: 'B', }, { title: 'Select Eraser', - desc: 'Selects the inpainting eraser', + desc: 'Selects the canvas eraser', hotkey: 'E', }, - { - title: 'Quick Toggle Brush/Eraser', - desc: 'Quick toggle between brush and eraser', - hotkey: 'X', - }, { title: 'Decrease Brush Size', - desc: 'Decreases the size of the inpainting brush/eraser', + desc: 'Decreases the size of the canvas brush/eraser', hotkey: '[', }, { title: 'Increase Brush Size', - desc: 'Increases the size of the inpainting brush/eraser', + desc: 'Increases the size of the canvas brush/eraser', hotkey: ']', }, + { + title: 'Decrease Brush Opacity', + desc: 'Decreases the opacity of the canvas brush', + hotkey: 'Shift + [', + }, + { + title: 'Increase Brush Opacity', + desc: 'Increases the opacity of the canvas brush', + hotkey: 'Shift + ]', + }, + { + title: 'Move Tool', + desc: 'Allows canvas navigation', + hotkey: 'V', + }, + { + title: 'Fill Bounding Box', + desc: 'Fills the bounding box with brush color', + hotkey: 'Shift + F', + }, + { + title: 'Erase Bounding Box', + desc: 'Erases the bounding box area', + hotkey: 'Delete / Backspace', + }, + { + title: 'Select Color Picker', + desc: 'Selects the canvas color picker', + hotkey: 'C', + }, + { + title: 'Toggle Snap', + desc: 'Toggles Snap to Grid', + hotkey: 'N', + }, + { + title: 'Quick Toggle Move', + desc: 'Temporarily toggles Move mode', + hotkey: 'Hold Space', + }, + { + title: 'Toggle Layer', + desc: 'Toggles mask/base layer selection', + hotkey: 'Q', + }, + { + title: 'Clear Mask', + desc: 'Clear the entire mask', + hotkey: 'Shift+C', + }, { title: 'Hide Mask', desc: 'Hide and unhide mask', hotkey: 'H', }, { - title: 'Decrease Mask Opacity', - desc: 'Decreases the opacity of the mask', - hotkey: 'Shift+[', + title: 'Show/Hide Bounding Box', + desc: 'Toggle visibility of bounding box', + hotkey: 'Shift+H', }, { - title: 'Increase Mask Opacity', - desc: 'Increases the opacity of the mask', - hotkey: 'Shift+]', - }, - { - title: 'Invert Mask', - desc: 'Invert the mask preview', + title: 'Merge Visible', + desc: 'Merge all visible layers of canvas', hotkey: 'Shift+M', }, { - title: 'Clear Mask', - desc: 'Clear the entire mask', - hotkey: 'Shift+C', + title: 'Save To Gallery', + desc: 'Save current canvas to gallery', + hotkey: 'Shift+S', + }, + { + title: 'Copy to Clipboard', + desc: 'Copy current canvas to clipboard', + hotkey: 'Ctrl+C', + }, + { + title: 'Download Image', + desc: 'Download current canvas', + hotkey: 'Shift+D', }, { title: 'Undo Stroke', @@ -198,19 +249,24 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { hotkey: 'Ctrl+Shift+Z, Ctrl+Y', }, { - title: 'Lock Bounding Box', - desc: 'Locks the bounding box', - hotkey: 'Shift+Q', + title: 'Reset View', + desc: 'Reset Canvas View', + hotkey: 'R', }, { - title: 'Quick Toggle Lock Bounding Box', - desc: 'Hold to toggle locking the bounding box', - hotkey: 'Q', + title: 'Previous Image', + desc: 'Previous Staging Area Image', + hotkey: 'Arrow Left', }, { - title: 'Expand Inpainting Area', - desc: 'Expand your inpainting work area', - hotkey: 'Shift+J', + title: 'Next Image', + desc: 'Next Staging Area Image', + hotkey: 'Arrow Right', + }, + { + title: 'Accept Image', + desc: 'Accept Current Staging Area Image', + hotkey: 'Enter', }, ]; @@ -240,8 +296,8 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { })} - - + +

Keyboard Shorcuts

@@ -278,11 +334,11 @@ export default function HotkeysModal({ children }: HotkeysModalProps) { -

Inpainting Hotkeys

+

Unified Canvas Hotkeys

- {renderHotkeyModalItems(inpaintingHotkeys)} + {renderHotkeyModalItems(unifiedCanvasHotkeys)}
diff --git a/frontend/src/features/system/HotkeysModal/HotkeysModalItem.tsx b/frontend/src/features/system/components/HotkeysModal/HotkeysModalItem.tsx similarity index 100% rename from frontend/src/features/system/HotkeysModal/HotkeysModalItem.tsx rename to frontend/src/features/system/components/HotkeysModal/HotkeysModalItem.tsx diff --git a/frontend/src/features/system/components/Modal.scss b/frontend/src/features/system/components/Modal.scss new file mode 100644 index 0000000000..2a1500d07f --- /dev/null +++ b/frontend/src/features/system/components/Modal.scss @@ -0,0 +1,10 @@ +@use '../../../styles/Mixins/' as *; + +.modal { + background-color: var(--background-color-secondary); + color: var(--text-color); +} + +.modal-close-btn { + @include BaseButton; +} diff --git a/frontend/src/features/system/components/ModelSelect.tsx b/frontend/src/features/system/components/ModelSelect.tsx new file mode 100644 index 0000000000..17974277eb --- /dev/null +++ b/frontend/src/features/system/components/ModelSelect.tsx @@ -0,0 +1,60 @@ +import { Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { requestModelChange } from 'app/socketio/actions'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAISelect from 'common/components/IAISelect'; +import _ from 'lodash'; +import { ChangeEvent } from 'react'; +import { systemSelector } from '../store/systemSelectors'; + +const selector = createSelector( + [systemSelector], + (system) => { + const { isProcessing, model_list } = system; + const models = _.map(model_list, (model, key) => key); + const activeModel = _.reduce( + model_list, + (acc, model, key) => { + if (model.status === 'active') { + acc = key; + } + + return acc; + }, + '' + ); + + return { models, activeModel, isProcessing }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const ModelSelect = () => { + const dispatch = useAppDispatch(); + const { models, activeModel, isProcessing } = useAppSelector(selector); + const handleChangeModel = (e: ChangeEvent) => { + dispatch(requestModelChange(e.target.value)); + }; + + return ( + + + + ); +}; + +export default ModelSelect; diff --git a/frontend/src/features/system/ProgressBar.scss b/frontend/src/features/system/components/ProgressBar.scss similarity index 81% rename from frontend/src/features/system/ProgressBar.scss rename to frontend/src/features/system/components/ProgressBar.scss index dcbcec98b5..47d60764ad 100644 --- a/frontend/src/features/system/ProgressBar.scss +++ b/frontend/src/features/system/components/ProgressBar.scss @@ -1,8 +1,8 @@ -@use '../../styles/Mixins/' as *; +@use '../../../styles/Mixins/' as *; .progress-bar { background-color: var(--root-bg-color); - height: $progress-bar-thickness !important; + height: $progress-bar-thickness; z-index: 99; div { diff --git a/frontend/src/features/system/ProgressBar.tsx b/frontend/src/features/system/components/ProgressBar.tsx similarity index 85% rename from frontend/src/features/system/ProgressBar.tsx rename to frontend/src/features/system/components/ProgressBar.tsx index 9cbfcb8c5d..9aa15c43af 100644 --- a/frontend/src/features/system/ProgressBar.tsx +++ b/frontend/src/features/system/components/ProgressBar.tsx @@ -1,9 +1,9 @@ import { Progress } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { isEqual } from 'lodash'; -import { useAppSelector } from '../../app/store'; -import { RootState } from '../../app/store'; -import { SystemState } from '../system/systemSlice'; +import { useAppSelector } from 'app/store'; +import { RootState } from 'app/store'; +import { SystemState } from 'features/system/store/systemSlice'; const systemSelector = createSelector( (state: RootState) => state.system, diff --git a/frontend/src/features/system/SettingsModal/ModelList.scss b/frontend/src/features/system/components/SettingsModal/ModelList.scss similarity index 84% rename from frontend/src/features/system/SettingsModal/ModelList.scss rename to frontend/src/features/system/components/SettingsModal/ModelList.scss index f7951b0c7e..47e2d593c3 100644 --- a/frontend/src/features/system/SettingsModal/ModelList.scss +++ b/frontend/src/features/system/components/SettingsModal/ModelList.scss @@ -8,7 +8,7 @@ // } // button { -// border-radius: 0.3rem !important; +// border-radius: 0.3rem; // &[aria-expanded='true'] { // // background-color: var(--tab-hover-color); @@ -29,7 +29,7 @@ } div { - border: none !important; + border: none; } .model-list-button { @@ -79,6 +79,13 @@ .model-list-item-load-btn { button { padding: 0.5rem; + background-color: var(--btn-base-color); + color: var(--text-color); + border-radius: 0.2rem; + + &:hover { + background-color: var(--btn-base-color-hover); + } } } } diff --git a/frontend/src/features/system/SettingsModal/ModelList.tsx b/frontend/src/features/system/components/SettingsModal/ModelList.tsx similarity index 90% rename from frontend/src/features/system/SettingsModal/ModelList.tsx rename to frontend/src/features/system/components/SettingsModal/ModelList.tsx index 66fc5129de..3ee5b2e0ad 100644 --- a/frontend/src/features/system/SettingsModal/ModelList.tsx +++ b/frontend/src/features/system/components/SettingsModal/ModelList.tsx @@ -10,10 +10,10 @@ import { } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; -import { ModelStatus } from '../../../app/invokeai'; -import { requestModelChange } from '../../../app/socketio/actions'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import { SystemState } from '../systemSlice'; +import { ModelStatus } from 'app/invokeai'; +import { requestModelChange } from 'app/socketio/actions'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import { SystemState } from 'features/system/store/systemSlice'; type ModelListItemProps = { name: string; diff --git a/frontend/src/features/system/SettingsModal/SettingsModal.scss b/frontend/src/features/system/components/SettingsModal/SettingsModal.scss similarity index 88% rename from frontend/src/features/system/SettingsModal/SettingsModal.scss rename to frontend/src/features/system/components/SettingsModal/SettingsModal.scss index 27adb3025e..53b4766c95 100644 --- a/frontend/src/features/system/SettingsModal/SettingsModal.scss +++ b/frontend/src/features/system/components/SettingsModal/SettingsModal.scss @@ -1,7 +1,6 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .settings-modal { - background-color: var(--settings-modal-bg) !important; max-height: 36rem; font-family: Inter; diff --git a/frontend/src/features/system/SettingsModal/SettingsModal.tsx b/frontend/src/features/system/components/SettingsModal/SettingsModal.tsx similarity index 79% rename from frontend/src/features/system/SettingsModal/SettingsModal.tsx rename to frontend/src/features/system/components/SettingsModal/SettingsModal.tsx index 835f3fe296..289bedfbe4 100644 --- a/frontend/src/features/system/SettingsModal/SettingsModal.tsx +++ b/frontend/src/features/system/components/SettingsModal/SettingsModal.tsx @@ -15,36 +15,43 @@ import { import { createSelector } from '@reduxjs/toolkit'; import _, { isEqual } from 'lodash'; import { ChangeEvent, cloneElement, ReactElement } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import { persistor } from '../../../main'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import { persistor } from 'main'; import { InProgressImageType, + setEnableImageDebugging, setSaveIntermediatesInterval, setShouldConfirmOnDelete, setShouldDisplayGuides, setShouldDisplayInProgressType, - SystemState, -} from '../systemSlice'; +} from 'features/system/store/systemSlice'; import ModelList from './ModelList'; -import { IN_PROGRESS_IMAGE_TYPES } from '../../../app/constants'; -import IAISwitch from '../../../common/components/IAISwitch'; -import IAISelect from '../../../common/components/IAISelect'; -import IAINumberInput from '../../../common/components/IAINumberInput'; +import { IN_PROGRESS_IMAGE_TYPES } from 'app/constants'; +import IAISwitch from 'common/components/IAISwitch'; +import IAISelect from 'common/components/IAISelect'; +import IAINumberInput from 'common/components/IAINumberInput'; +import { systemSelector } from 'features/system/store/systemSelectors'; +import { optionsSelector } from 'features/options/store/optionsSelectors'; -const systemSelector = createSelector( - (state: RootState) => state.system, - (system: SystemState) => { +const selector = createSelector( + [systemSelector, optionsSelector], + (system) => { const { shouldDisplayInProgressType, shouldConfirmOnDelete, shouldDisplayGuides, model_list, + saveIntermediatesInterval, + enableImageDebugging, } = system; + return { shouldDisplayInProgressType, shouldConfirmOnDelete, shouldDisplayGuides, models: _.map(model_list, (_model, key) => key), + saveIntermediatesInterval, + enableImageDebugging, }; }, { @@ -66,10 +73,6 @@ type SettingsModalProps = { const SettingsModal = ({ children }: SettingsModalProps) => { const dispatch = useAppDispatch(); - const saveIntermediatesInterval = useAppSelector( - (state: RootState) => state.system.saveIntermediatesInterval - ); - const steps = useAppSelector((state: RootState) => state.options.steps); const { @@ -88,7 +91,9 @@ const SettingsModal = ({ children }: SettingsModalProps) => { shouldDisplayInProgressType, shouldConfirmOnDelete, shouldDisplayGuides, - } = useAppSelector(systemSelector); + saveIntermediatesInterval, + enableImageDebugging, + } = useAppSelector(selector); /** * Resets localstorage, then opens a secondary modal informing user to @@ -115,9 +120,9 @@ const SettingsModal = ({ children }: SettingsModalProps) => { - + Settings - +
@@ -170,6 +175,18 @@ const SettingsModal = ({ children }: SettingsModalProps) => { />
+
+

Developer

+ ) => + dispatch(setEnableImageDebugging(e.target.checked)) + } + /> +
+
Reset Web UI + diff --git a/frontend/src/features/system/SiteHeader.scss b/frontend/src/features/system/components/SiteHeader.scss similarity index 100% rename from frontend/src/features/system/SiteHeader.scss rename to frontend/src/features/system/components/SiteHeader.scss diff --git a/frontend/src/features/system/SiteHeader.tsx b/frontend/src/features/system/components/SiteHeader.tsx similarity index 76% rename from frontend/src/features/system/SiteHeader.tsx rename to frontend/src/features/system/components/SiteHeader.tsx index 86e916ed3f..863182b593 100644 --- a/frontend/src/features/system/SiteHeader.tsx +++ b/frontend/src/features/system/components/SiteHeader.tsx @@ -1,10 +1,6 @@ -import { Link, useColorMode } from '@chakra-ui/react'; - -import { useHotkeys } from 'react-hotkeys-hook'; +import { Link } from '@chakra-ui/react'; import { - FaSun, - FaMoon, FaGithub, FaDiscord, FaBug, @@ -12,28 +8,20 @@ import { FaWrench, } from 'react-icons/fa'; -import InvokeAILogo from '../../assets/images/logo.png'; -import IAIIconButton from '../../common/components/IAIIconButton'; +import InvokeAILogo from 'assets/images/logo.png'; +import IAIIconButton from 'common/components/IAIIconButton'; import HotkeysModal from './HotkeysModal/HotkeysModal'; import SettingsModal from './SettingsModal/SettingsModal'; import StatusIndicator from './StatusIndicator'; +import ThemeChanger from './ThemeChanger'; +import ModelSelect from './ModelSelect'; /** * Header, includes color mode toggle, settings button, status message. */ const SiteHeader = () => { - const { colorMode, toggleColorMode } = useColorMode(); - - useHotkeys( - 'shift+d', - () => { - toggleColorMode(); - }, - [colorMode, toggleColorMode] - ); - return (
@@ -46,6 +34,8 @@ const SiteHeader = () => {
+ + { /> - : } - /> + state.system, @@ -33,8 +33,6 @@ const StatusIndicator = () => { wasErrorSeen, } = useAppSelector(systemSelector); const dispatch = useAppDispatch(); - // const statusMessageTextColor = - // isConnected && !hasError ? 'green.500' : 'red.500'; let statusStyle; if (isConnected && !hasError) { @@ -84,7 +82,6 @@ const StatusIndicator = () => { cursor={statusIndicatorCursor} onClick={handleClickStatusIndicator} className={`status ${statusStyle}`} - // textColor={statusMessageTextColor} > {statusMessage} diff --git a/frontend/src/features/system/components/ThemeChanger.tsx b/frontend/src/features/system/components/ThemeChanger.tsx new file mode 100644 index 0000000000..6e2d9fcab4 --- /dev/null +++ b/frontend/src/features/system/components/ThemeChanger.tsx @@ -0,0 +1,54 @@ +import { useColorMode, VStack } from '@chakra-ui/react'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import { setCurrentTheme } from 'features/options/store/optionsSlice'; +import IAIPopover from 'common/components/IAIPopover'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { FaCheck, FaPalette } from 'react-icons/fa'; +import IAIButton from 'common/components/IAIButton'; + +const THEMES = ['dark', 'light', 'green']; + +export default function ThemeChanger() { + const { setColorMode } = useColorMode(); + const dispatch = useAppDispatch(); + const currentTheme = useAppSelector( + (state: RootState) => state.options.currentTheme + ); + + const handleChangeTheme = (theme: string) => { + setColorMode(theme); + dispatch(setCurrentTheme(theme)); + }; + + return ( + } + /> + } + > + + {THEMES.map((theme) => ( + : undefined} + size={'sm'} + onClick={() => handleChangeTheme(theme)} + key={theme} + > + {theme.charAt(0).toUpperCase() + theme.slice(1)} + + ))} + + + ); +} diff --git a/frontend/src/features/system/hooks/useToastWatcher.ts b/frontend/src/features/system/hooks/useToastWatcher.ts new file mode 100644 index 0000000000..f5a36681ce --- /dev/null +++ b/frontend/src/features/system/hooks/useToastWatcher.ts @@ -0,0 +1,19 @@ +import { useToast } from '@chakra-ui/react'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { useEffect } from 'react'; +import { toastQueueSelector } from 'features/system/store/systemSelectors'; +import { clearToastQueue } from 'features/system/store/systemSlice'; + +const useToastWatcher = () => { + const dispatch = useAppDispatch(); + const toastQueue = useAppSelector(toastQueueSelector); + const toast = useToast(); + useEffect(() => { + toastQueue.forEach((t) => { + toast(t); + }); + toastQueue.length > 0 && dispatch(clearToastQueue()); + }, [dispatch, toast, toastQueue]); +}; + +export default useToastWatcher; diff --git a/frontend/src/features/system/store/systemSelectors.ts b/frontend/src/features/system/store/systemSelectors.ts new file mode 100644 index 0000000000..9c1322cf92 --- /dev/null +++ b/frontend/src/features/system/store/systemSelectors.ts @@ -0,0 +1,6 @@ +import { RootState } from 'app/store'; +import { SystemState } from './systemSlice'; + +export const systemSelector = (state: RootState): SystemState => state.system; + +export const toastQueueSelector = (state: RootState) => state.system.toastQueue; diff --git a/frontend/src/features/system/systemSlice.ts b/frontend/src/features/system/store/systemSlice.ts similarity index 82% rename from frontend/src/features/system/systemSlice.ts rename to frontend/src/features/system/store/systemSlice.ts index 76ecf82e48..8eecb4efea 100644 --- a/frontend/src/features/system/systemSlice.ts +++ b/frontend/src/features/system/store/systemSlice.ts @@ -1,7 +1,7 @@ import { createSlice } from '@reduxjs/toolkit'; import type { PayloadAction } from '@reduxjs/toolkit'; -import { ExpandedIndex } from '@chakra-ui/react'; -import * as InvokeAI from '../../app/invokeai'; +import { ExpandedIndex, UseToastOptions } from '@chakra-ui/react'; +import * as InvokeAI from 'app/invokeai'; export type LogLevel = 'info' | 'warning' | 'error'; @@ -44,6 +44,8 @@ export interface SystemState wasErrorSeen: boolean; isCancelable: boolean; saveIntermediatesInterval: number; + enableImageDebugging: boolean; + toastQueue: UseToastOptions[]; } const initialSystemState: SystemState = { @@ -57,7 +59,7 @@ const initialSystemState: SystemState = { isESRGANAvailable: true, socketId: '', shouldConfirmOnDelete: true, - openAccordions: [0], + openAccordions: [], currentStep: 0, totalSteps: 0, currentIteration: 0, @@ -70,10 +72,13 @@ const initialSystemState: SystemState = { app_id: '', app_version: '', model_list: {}, + infill_methods: [], hasError: false, wasErrorSeen: true, isCancelable: true, saveIntermediatesInterval: 5, + enableImageDebugging: false, + toastQueue: [], }; export const systemSlice = createSlice({ @@ -173,6 +178,16 @@ export const systemSlice = createSlice({ state.currentStatusHasSteps = false; state.currentStatus = 'Processing canceled'; }, + generationRequested: (state) => { + state.isProcessing = true; + state.isCancelable = true; + state.currentStep = 0; + state.totalSteps = 0; + state.currentIteration = 0; + state.totalIterations = 0; + state.currentStatusHasSteps = false; + state.currentStatus = 'Preparing'; + }, setModelList: ( state, action: PayloadAction> @@ -191,6 +206,20 @@ export const systemSlice = createSlice({ setSaveIntermediatesInterval: (state, action: PayloadAction) => { state.saveIntermediatesInterval = action.payload; }, + setEnableImageDebugging: (state, action: PayloadAction) => { + state.enableImageDebugging = action.payload; + }, + addToast: (state, action: PayloadAction) => { + state.toastQueue.push(action.payload); + }, + clearToastQueue: (state) => { + state.toastQueue = []; + }, + setProcessingIndeterminateTask: (state, action: PayloadAction) => { + state.isProcessing = true; + state.currentStatus = action.payload; + state.currentStatusHasSteps = false; + }, }, }); @@ -214,6 +243,11 @@ export const { setIsCancelable, modelChangeRequested, setSaveIntermediatesInterval, + setEnableImageDebugging, + generationRequested, + addToast, + clearToastQueue, + setProcessingIndeterminateTask, } = systemSlice.actions; export default systemSlice.reducer; diff --git a/frontend/src/features/tabs/FloatingButton.scss b/frontend/src/features/tabs/FloatingButton.scss deleted file mode 100644 index 7e39d884f3..0000000000 --- a/frontend/src/features/tabs/FloatingButton.scss +++ /dev/null @@ -1,52 +0,0 @@ -@use '../../styles/Mixins/' as *; - -.floating-show-hide-button { - position: absolute !important; - top: 50%; - transform: translate(0, -50%); - z-index: 20; - padding: 0; - - &.left { - left: 0; - border-radius: 0 0.5rem 0.5rem 0 !important; - } - - &.right { - right: 0; - border-radius: 0.5rem 0 0 0.5rem !important; - } - - @include Button( - $btn-width: 1rem, - $btn-height: 12rem, - $icon-size: 20px, - $btn-color: var(--btn-grey), - $btn-color-hover: var(--btn-grey-hover) - ); -} - -.show-hide-button-options { - position: absolute !important; - transform: translate(0, -50%); - z-index: 20; - min-width: 2rem !important; - - top: 50%; - left: calc(42px + 2rem); - - border-radius: 0 0.5rem 0.5rem 0 !important; - - display: flex; - flex-direction: column; - row-gap: 0.5rem; - - button { - border-radius: 0 0.3rem 0.3rem 0; - background-color: var(--btn-grey); - - svg { - width: 18px; - } - } -} diff --git a/frontend/src/features/tabs/FloatingGalleryButton.tsx b/frontend/src/features/tabs/FloatingGalleryButton.tsx deleted file mode 100644 index 0f17e2271a..0000000000 --- a/frontend/src/features/tabs/FloatingGalleryButton.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { MdPhotoLibrary } from 'react-icons/md'; -import { useAppDispatch } from '../../app/store'; -import IAIIconButton from '../../common/components/IAIIconButton'; -import { setShouldShowGallery } from '../gallery/gallerySlice'; - -const FloatingGalleryButton = () => { - const dispatch = useAppDispatch(); - - const handleShowGallery = () => { - dispatch(setShouldShowGallery(true)); - }; - - return ( - - - - ); -}; - -export default FloatingGalleryButton; diff --git a/frontend/src/features/tabs/FloatingOptionsPanelButtons.tsx b/frontend/src/features/tabs/FloatingOptionsPanelButtons.tsx deleted file mode 100644 index 82ae0c4bca..0000000000 --- a/frontend/src/features/tabs/FloatingOptionsPanelButtons.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import { IoMdOptions } from 'react-icons/io'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; -import IAIIconButton from '../../common/components/IAIIconButton'; -import { - OptionsState, - setShouldShowOptionsPanel, -} from '../options/optionsSlice'; -import CancelButton from '../options/ProcessButtons/CancelButton'; -import InvokeButton from '../options/ProcessButtons/InvokeButton'; -import _ from 'lodash'; -import LoopbackButton from '../options/ProcessButtons/Loopback'; - -const canInvokeSelector = createSelector( - (state: RootState) => state.options, - - (options: OptionsState) => { - const { shouldPinOptionsPanel, shouldShowOptionsPanel } = options; - return { - shouldShowProcessButtons: - !shouldPinOptionsPanel || !shouldShowOptionsPanel, - }; - }, - { memoizeOptions: { resultEqualityCheck: _.isEqual } } -); - -const FloatingOptionsPanelButtons = () => { - const dispatch = useAppDispatch(); - const { shouldShowProcessButtons } = useAppSelector(canInvokeSelector); - - const handleShowOptionsPanel = () => { - dispatch(setShouldShowOptionsPanel(true)); - }; - - return ( -
- - - - {shouldShowProcessButtons && ( - <> - - - - - )} -
- ); -}; - -export default FloatingOptionsPanelButtons; diff --git a/frontend/src/features/tabs/ImageToImage/ImageToImagePanel.tsx b/frontend/src/features/tabs/ImageToImage/ImageToImagePanel.tsx deleted file mode 100644 index d6e0b3b08e..0000000000 --- a/frontend/src/features/tabs/ImageToImage/ImageToImagePanel.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { Feature } from '../../../app/features'; -import { RootState, useAppSelector } from '../../../app/store'; -import FaceRestoreHeader from '../../options/AdvancedOptions/FaceRestore/FaceRestoreHeader'; -import FaceRestoreOptions from '../../options/AdvancedOptions/FaceRestore/FaceRestoreOptions'; -import ImageFit from '../../options/AdvancedOptions/ImageToImage/ImageFit'; -import ImageToImageStrength from '../../options/AdvancedOptions/ImageToImage/ImageToImageStrength'; -import OutputHeader from '../../options/AdvancedOptions/Output/OutputHeader'; -import OutputOptions from '../../options/AdvancedOptions/Output/OutputOptions'; -import SeedHeader from '../../options/AdvancedOptions/Seed/SeedHeader'; -import SeedOptions from '../../options/AdvancedOptions/Seed/SeedOptions'; -import UpscaleHeader from '../../options/AdvancedOptions/Upscale/UpscaleHeader'; -import UpscaleOptions from '../../options/AdvancedOptions/Upscale/UpscaleOptions'; -import VariationsHeader from '../../options/AdvancedOptions/Variations/VariationsHeader'; -import VariationsOptions from '../../options/AdvancedOptions/Variations/VariationsOptions'; -import MainAdvancedOptionsCheckbox from '../../options/MainOptions/MainAdvancedOptionsCheckbox'; -import MainOptions from '../../options/MainOptions/MainOptions'; -import OptionsAccordion from '../../options/OptionsAccordion'; -import ProcessButtons from '../../options/ProcessButtons/ProcessButtons'; -import PromptInput from '../../options/PromptInput/PromptInput'; -import InvokeOptionsPanel from '../InvokeOptionsPanel'; - -export default function ImageToImagePanel() { - const showAdvancedOptions = useAppSelector( - (state: RootState) => state.options.showAdvancedOptions - ); - - const imageToImageAccordions = { - seed: { - header: , - feature: Feature.SEED, - options: , - }, - variations: { - header: , - feature: Feature.VARIATIONS, - options: , - }, - face_restore: { - header: , - feature: Feature.FACE_CORRECTION, - options: , - }, - upscale: { - header: , - feature: Feature.UPSCALE, - options: , - }, - other: { - header: , - feature: Feature.OTHER, - options: , - }, - }; - - return ( - - - - - - - - {showAdvancedOptions ? ( - - ) : null} - - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingCanvas.tsx b/frontend/src/features/tabs/Inpainting/InpaintingCanvas.tsx deleted file mode 100644 index ee3c4c7d26..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingCanvas.tsx +++ /dev/null @@ -1,309 +0,0 @@ -// lib -import { - MutableRefObject, - useCallback, - useEffect, - useRef, - useState, -} from 'react'; -import Konva from 'konva'; -import { Layer, Stage } from 'react-konva'; -import { Image as KonvaImage } from 'react-konva'; -import { Stage as StageType } from 'konva/lib/Stage'; - -// app -import { useAppDispatch, useAppSelector } from '../../../app/store'; -import { - addLine, - addPointToCurrentLine, - clearImageToInpaint, - setCursorPosition, - setIsDrawing, -} from './inpaintingSlice'; -import { inpaintingCanvasSelector } from './inpaintingSliceSelectors'; - -// component -import InpaintingCanvasLines from './components/InpaintingCanvasLines'; -import InpaintingCanvasBrushPreview from './components/InpaintingCanvasBrushPreview'; -import InpaintingCanvasBrushPreviewOutline from './components/InpaintingCanvasBrushPreviewOutline'; -import Cacher from './components/Cacher'; -import { Vector2d } from 'konva/lib/types'; -import getScaledCursorPosition from './util/getScaledCursorPosition'; -import InpaintingBoundingBoxPreview, { - InpaintingBoundingBoxPreviewOverlay, -} from './components/InpaintingBoundingBoxPreview'; -import { KonvaEventObject } from 'konva/lib/Node'; -import KeyboardEventManager from './KeyboardEventManager'; -import { useToast } from '@chakra-ui/react'; - -// Use a closure allow other components to use these things... not ideal... -export let stageRef: MutableRefObject; -export let maskLayerRef: MutableRefObject; -export let inpaintingImageElementRef: MutableRefObject; - -const InpaintingCanvas = () => { - const dispatch = useAppDispatch(); - - const { - tool, - brushSize, - shouldInvertMask, - shouldShowMask, - shouldShowCheckboardTransparency, - maskColor, - imageToInpaint, - stageScale, - shouldShowBoundingBox, - shouldShowBoundingBoxFill, - isDrawing, - isModifyingBoundingBox, - stageCursor, - } = useAppSelector(inpaintingCanvasSelector); - - const toast = useToast(); - - // set the closure'd refs - stageRef = useRef(null); - maskLayerRef = useRef(null); - inpaintingImageElementRef = useRef(null); - - const lastCursorPosition = useRef({ x: 0, y: 0 }); - - // Use refs for values that do not affect rendering, other values in redux - const didMouseMoveRef = useRef(false); - - // Load the image into this - const [canvasBgImage, setCanvasBgImage] = useState( - null - ); - - // Load the image and set the options panel width & height - useEffect(() => { - if (imageToInpaint) { - const image = new Image(); - image.onload = () => { - inpaintingImageElementRef.current = image; - setCanvasBgImage(image); - }; - image.onerror = () => { - toast({ - title: 'Unable to Load Image', - description: `Image ${imageToInpaint.url} failed to load`, - status: 'error', - isClosable: true, - }); - dispatch(clearImageToInpaint()); - }; - image.src = imageToInpaint.url; - } else { - setCanvasBgImage(null); - } - }, [imageToInpaint, dispatch, stageScale, toast]); - - /** - * - * Canvas onMouseDown - * - */ - const handleMouseDown = useCallback(() => { - if (!stageRef.current) return; - - const scaledCursorPosition = getScaledCursorPosition(stageRef.current); - - if ( - !scaledCursorPosition || - !maskLayerRef.current || - isModifyingBoundingBox - ) - return; - - dispatch(setIsDrawing(true)); - - // Add a new line starting from the current cursor position. - dispatch( - addLine({ - tool, - strokeWidth: brushSize / 2, - points: [scaledCursorPosition.x, scaledCursorPosition.y], - }) - ); - }, [dispatch, brushSize, tool, isModifyingBoundingBox]); - - /** - * - * Canvas onMouseMove - * - */ - const handleMouseMove = useCallback(() => { - if (!stageRef.current) return; - - const scaledCursorPosition = getScaledCursorPosition(stageRef.current); - - if (!scaledCursorPosition) return; - - dispatch(setCursorPosition(scaledCursorPosition)); - - if (!maskLayerRef.current) { - return; - } - - lastCursorPosition.current = scaledCursorPosition; - - if (!isDrawing || isModifyingBoundingBox) return; - - didMouseMoveRef.current = true; - // Extend the current line - dispatch( - addPointToCurrentLine([scaledCursorPosition.x, scaledCursorPosition.y]) - ); - }, [dispatch, isDrawing, isModifyingBoundingBox]); - - /** - * - * Canvas onMouseUp - * - */ - const handleMouseUp = useCallback(() => { - if (!didMouseMoveRef.current && isDrawing && stageRef.current) { - const scaledCursorPosition = getScaledCursorPosition(stageRef.current); - - if ( - !scaledCursorPosition || - !maskLayerRef.current || - isModifyingBoundingBox - ) - return; - - /** - * Extend the current line. - * In this case, the mouse didn't move, so we append the same point to - * the line's existing points. This allows the line to render as a circle - * centered on that point. - */ - dispatch( - addPointToCurrentLine([scaledCursorPosition.x, scaledCursorPosition.y]) - ); - } else { - didMouseMoveRef.current = false; - } - dispatch(setIsDrawing(false)); - }, [dispatch, isDrawing, isModifyingBoundingBox]); - - /** - * - * Canvas onMouseOut - * - */ - const handleMouseOutCanvas = useCallback(() => { - dispatch(setCursorPosition(null)); - dispatch(setIsDrawing(false)); - }, [dispatch]); - - /** - * - * Canvas onMouseEnter - * - */ - const handleMouseEnter = useCallback( - (e: KonvaEventObject) => { - if (e.evt.buttons === 1) { - if (!stageRef.current) return; - - const scaledCursorPosition = getScaledCursorPosition(stageRef.current); - - if ( - !scaledCursorPosition || - !maskLayerRef.current || - isModifyingBoundingBox - ) - return; - - dispatch(setIsDrawing(true)); - - // Add a new line starting from the current cursor position. - dispatch( - addLine({ - tool, - strokeWidth: brushSize / 2, - points: [scaledCursorPosition.x, scaledCursorPosition.y], - }) - ); - } - }, - [dispatch, brushSize, tool, isModifyingBoundingBox] - ); - - return ( -
-
- {canvasBgImage && ( - - {!shouldInvertMask && !shouldShowCheckboardTransparency && ( - - - - )} - {shouldShowMask && ( - <> - - - - - - {shouldInvertMask && ( - - )} - {!shouldInvertMask && shouldShowCheckboardTransparency && ( - - )} - - - {shouldShowBoundingBoxFill && shouldShowBoundingBox && ( - - )} - {shouldShowBoundingBox && } - - - - - )} - - )} - - -
-
- ); -}; - -export default InpaintingCanvas; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingCanvasPlaceholder.tsx b/frontend/src/features/tabs/Inpainting/InpaintingCanvasPlaceholder.tsx deleted file mode 100644 index a0c893e57f..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingCanvasPlaceholder.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Spinner } from '@chakra-ui/react'; -import { useLayoutEffect, useRef } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import { setStageScale } from './inpaintingSlice'; - -const InpaintingCanvasPlaceholder = () => { - const dispatch = useAppDispatch(); - const { needsCache, imageToInpaint } = useAppSelector( - (state: RootState) => state.inpainting - ); - const ref = useRef(null); - - useLayoutEffect(() => { - window.setTimeout(() => { - if (!ref.current || !imageToInpaint) return; - - const width = ref.current.clientWidth; - const height = ref.current.clientHeight; - - const scale = Math.min( - 1, - Math.min(width / imageToInpaint.width, height / imageToInpaint.height) - ); - - dispatch(setStageScale(scale)); - }, 0); - }, [dispatch, imageToInpaint, needsCache]); - - return ( -
- -
- ); -}; - -export default InpaintingCanvasPlaceholder; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.scss b/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.scss deleted file mode 100644 index dc57eea117..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.scss +++ /dev/null @@ -1,29 +0,0 @@ -.inpainting-alerts { - position: absolute; - top: 0; - left: 0; - z-index: 2; - margin: 0.5rem; - - button { - background-color: var(--inpainting-alerts-bg); - - svg { - fill: var(--inpainting-alerts-icon-color); - } - - &[data-selected='true'] { - background-color: var(--inpainting-alerts-bg-active); - svg { - fill: var(--inpainting-alerts-icon-active); - } - } - - &[data-alert='true'] { - background-color: var(--inpainting-alerts-bg-alert); - svg { - fill: var(--inpainting-alerts-icon-alert); - } - } - } -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.tsx b/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.tsx deleted file mode 100644 index 68b5360252..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingCanvasStatusIcons.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import _ from 'lodash'; - -const inpaintingCanvasStatusIconsSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { - shouldShowMask, - shouldInvertMask, - shouldLockBoundingBox, - shouldShowBoundingBox, - boundingBoxDimensions, - } = inpainting; - - return { - shouldShowMask, - shouldInvertMask, - shouldLockBoundingBox, - shouldShowBoundingBox, - isBoundingBoxTooSmall: - boundingBoxDimensions.width < 512 || boundingBoxDimensions.height < 512, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -import { ButtonGroup, IconButton, Tooltip } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { BiHide, BiShow } from 'react-icons/bi'; -import { GiResize } from 'react-icons/gi'; -import { BsBoundingBox } from 'react-icons/bs'; -import { FaLock, FaUnlock } from 'react-icons/fa'; -import { MdInvertColors, MdInvertColorsOff } from 'react-icons/md'; -import { RootState, useAppSelector } from '../../../app/store'; -import { InpaintingState } from './inpaintingSlice'; -import { MouseEvent, useRef, useState } from 'react'; - -const InpaintingCanvasStatusIcons = () => { - const { - shouldShowMask, - shouldInvertMask, - shouldLockBoundingBox, - shouldShowBoundingBox, - isBoundingBoxTooSmall, - } = useAppSelector(inpaintingCanvasStatusIconsSelector); - - const [shouldAcceptPointerEvents, setShouldAcceptPointerEvents] = - useState(false); - const timeoutRef = useRef(0); - - const handleMouseOver = () => { - if (!shouldAcceptPointerEvents) { - timeoutRef.current = window.setTimeout( - () => setShouldAcceptPointerEvents(true), - 1000 - ); - } - }; - - const handleMouseOut = () => { - if (!shouldAcceptPointerEvents) { - setShouldAcceptPointerEvents(false); - window.clearTimeout(timeoutRef.current); - } - }; - - return ( -
- - - : } - /> - - : } - /> - : } - /> - } - /> - } - /> - -
- ); -}; - -export default InpaintingCanvasStatusIcons; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls.tsx deleted file mode 100644 index 67e09e445c..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import InpaintingBrushControl from './InpaintingControls/InpaintingBrushControl'; -import InpaintingEraserControl from './InpaintingControls/InpaintingEraserControl'; -import InpaintingUndoControl from './InpaintingControls/InpaintingUndoControl'; -import InpaintingRedoControl from './InpaintingControls/InpaintingRedoControl'; -import { ButtonGroup } from '@chakra-ui/react'; -import InpaintingMaskClear from './InpaintingControls/InpaintingMaskControls/InpaintingMaskClear'; -import InpaintingMaskVisibilityControl from './InpaintingControls/InpaintingMaskControls/InpaintingMaskVisibilityControl'; -import InpaintingMaskInvertControl from './InpaintingControls/InpaintingMaskControls/InpaintingMaskInvertControl'; -import InpaintingLockBoundingBoxControl from './InpaintingControls/InpaintingLockBoundingBoxControl'; -import InpaintingShowHideBoundingBoxControl from './InpaintingControls/InpaintingShowHideBoundingBoxControl'; -import ImageUploaderIconButton from '../../../common/components/ImageUploaderIconButton'; - -const InpaintingControls = () => { - return ( -
- - - - - - - - - - - - - - - - - - - - -
- ); -}; - -export default InpaintingControls; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingBrushControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingBrushControl.tsx deleted file mode 100644 index 995c6a3b1f..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingBrushControl.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { FaPaintBrush } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import IAINumberInput from '../../../../common/components/IAINumberInput'; -import IAIPopover from '../../../../common/components/IAIPopover'; -import IAISlider from '../../../../common/components/IAISlider'; -import { activeTabNameSelector } from '../../../options/optionsSelectors'; - -import { - InpaintingState, - setBrushSize, - setShouldShowBrushPreview, - setTool, -} from '../inpaintingSlice'; - -import _ from 'lodash'; -import InpaintingMaskColorPicker from './InpaintingMaskControls/InpaintingMaskColorPicker'; - -const inpaintingBrushSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { tool, brushSize, shouldShowMask } = inpainting; - - return { - tool, - brushSize, - shouldShowMask, - activeTabName, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingBrushControl() { - const dispatch = useAppDispatch(); - const { tool, brushSize, shouldShowMask, activeTabName } = useAppSelector( - inpaintingBrushSelector - ); - - const handleSelectBrushTool = () => dispatch(setTool('brush')); - - const handleShowBrushPreview = () => { - dispatch(setShouldShowBrushPreview(true)); - }; - - const handleHideBrushPreview = () => { - dispatch(setShouldShowBrushPreview(false)); - }; - - const handleChangeBrushSize = (v: number) => { - dispatch(setShouldShowBrushPreview(true)); - dispatch(setBrushSize(v)); - }; - - // Hotkeys - - // Decrease brush size - useHotkeys( - '[', - (e: KeyboardEvent) => { - e.preventDefault(); - if (brushSize - 5 > 0) { - handleChangeBrushSize(brushSize - 5); - } else { - handleChangeBrushSize(1); - } - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask, brushSize] - ); - - // Increase brush size - useHotkeys( - ']', - (e: KeyboardEvent) => { - e.preventDefault(); - handleChangeBrushSize(brushSize + 5); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask, brushSize] - ); - - // Set tool to brush - useHotkeys( - 'b', - (e: KeyboardEvent) => { - e.preventDefault(); - handleSelectBrushTool(); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask] - ); - - return ( - } - onClick={handleSelectBrushTool} - data-selected={tool === 'brush'} - isDisabled={!shouldShowMask} - /> - } - > -
- - - -
-
- ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingClearImageControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingClearImageControl.tsx deleted file mode 100644 index 224a87a6dc..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingClearImageControl.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; -import { FaTrash } from 'react-icons/fa'; -import { useAppDispatch } from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { clearImageToInpaint } from '../inpaintingSlice'; - -export default function InpaintingClearImageControl() { - const dispatch = useAppDispatch(); - - const handleClearImage = () => { - dispatch(clearImageToInpaint()); - }; - - return ( - } - onClick={handleClearImage} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingEraserControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingEraserControl.tsx deleted file mode 100644 index ce98017fe3..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingEraserControl.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { FaEraser } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { InpaintingState, setTool } from '../inpaintingSlice'; - -import _ from 'lodash'; -import { activeTabNameSelector } from '../../../options/optionsSelectors'; - -const inpaintingEraserSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { tool, shouldShowMask } = inpainting; - - return { - tool, - shouldShowMask, - activeTabName, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingEraserControl() { - const { tool, shouldShowMask, activeTabName } = useAppSelector( - inpaintingEraserSelector - ); - const dispatch = useAppDispatch(); - - const handleSelectEraserTool = () => dispatch(setTool('eraser')); - - // Hotkeys - // Set tool to eraser - useHotkeys( - 'e', - (e: KeyboardEvent) => { - e.preventDefault(); - if (activeTabName !== 'inpainting' || !shouldShowMask) return; - handleSelectEraserTool(); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask] - ); - - return ( - } - onClick={handleSelectEraserTool} - data-selected={tool === 'eraser'} - isDisabled={!shouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingLockBoundingBoxControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingLockBoundingBoxControl.tsx deleted file mode 100644 index 15710be39a..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingLockBoundingBoxControl.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { FaLock, FaUnlock } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { setShouldLockBoundingBox } from '../inpaintingSlice'; - -const InpaintingLockBoundingBoxControl = () => { - const dispatch = useAppDispatch(); - const shouldLockBoundingBox = useAppSelector( - (state: RootState) => state.inpainting.shouldLockBoundingBox - ); - - return ( - : } - data-selected={shouldLockBoundingBox} - onClick={() => { - dispatch(setShouldLockBoundingBox(!shouldLockBoundingBox)); - }} - /> - ); -}; - -export default InpaintingLockBoundingBoxControl; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControl.tsx deleted file mode 100644 index 1bd750dcaf..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControl.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import React, { useState } from 'react'; -import { FaMask } from 'react-icons/fa'; - -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import IAIPopover from '../../../../common/components/IAIPopover'; - -import InpaintingMaskVisibilityControl from './InpaintingMaskControls/InpaintingMaskVisibilityControl'; -import InpaintingMaskInvertControl from './InpaintingMaskControls/InpaintingMaskInvertControl'; -import InpaintingMaskColorPicker from './InpaintingMaskControls/InpaintingMaskColorPicker'; - -export default function InpaintingMaskControl() { - const [maskOptionsOpen, setMaskOptionsOpen] = useState(false); - - return ( - <> - setMaskOptionsOpen(true)} - onClose={() => setMaskOptionsOpen(false)} - triggerComponent={ - } - cursor={'pointer'} - data-selected={maskOptionsOpen} - /> - } - > -
- - - -
-
- - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskClear.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskClear.tsx deleted file mode 100644 index ea03f3cb6a..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskClear.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { FaPlus } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import { activeTabNameSelector } from '../../../../options/optionsSelectors'; -import { clearMask, InpaintingState } from '../../inpaintingSlice'; - -import _ from 'lodash'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { useToast } from '@chakra-ui/react'; - -const inpaintingMaskClearSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { shouldShowMask, lines } = inpainting; - - return { shouldShowMask, activeTabName, isMaskEmpty: lines.length === 0 }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingMaskClear() { - const { shouldShowMask, activeTabName, isMaskEmpty } = useAppSelector( - inpaintingMaskClearSelector - ); - - const dispatch = useAppDispatch(); - const toast = useToast(); - - const handleClearMask = () => { - dispatch(clearMask()); - }; - - // Clear mask - useHotkeys( - 'shift+c', - (e: KeyboardEvent) => { - e.preventDefault(); - handleClearMask(); - toast({ - title: 'Mask Cleared', - status: 'success', - duration: 2500, - isClosable: true, - }); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask && !isMaskEmpty, - }, - [activeTabName, isMaskEmpty, shouldShowMask] - ); - return ( - } - onClick={handleClearMask} - isDisabled={isMaskEmpty || !shouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskColorPicker.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskColorPicker.tsx deleted file mode 100644 index e3f58b810d..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskColorPicker.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import React from 'react'; -import { RgbaColor } from 'react-colorful'; -import { FaPalette } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAIColorPicker from '../../../../../common/components/IAIColorPicker'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import IAIPopover from '../../../../../common/components/IAIPopover'; -import { InpaintingState, setMaskColor } from '../../inpaintingSlice'; - -import _ from 'lodash'; -import { createSelector } from '@reduxjs/toolkit'; -import { activeTabNameSelector } from '../../../../options/optionsSelectors'; -import { useHotkeys } from 'react-hotkeys-hook'; - -const inpaintingMaskColorPickerSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { shouldShowMask, maskColor } = inpainting; - - return { shouldShowMask, maskColor, activeTabName }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingMaskColorPicker() { - const { shouldShowMask, maskColor, activeTabName } = useAppSelector( - inpaintingMaskColorPickerSelector - ); - const dispatch = useAppDispatch(); - const handleChangeMaskColor = (newColor: RgbaColor) => { - dispatch(setMaskColor(newColor)); - }; - - // Hotkeys - // Decrease mask opacity - useHotkeys( - 'shift+[', - (e: KeyboardEvent) => { - e.preventDefault(); - handleChangeMaskColor({ - ...maskColor, - a: Math.max(maskColor.a - 0.05, 0), - }); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask, maskColor.a] - ); - - // Increase mask opacity - useHotkeys( - 'shift+]', - (e: KeyboardEvent) => { - e.preventDefault(); - handleChangeMaskColor({ - ...maskColor, - a: Math.min(maskColor.a + 0.05, 100), - }); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask, maskColor.a] - ); - - return ( - } - isDisabled={!shouldShowMask} - cursor={'pointer'} - /> - } - > - - - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskInvertControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskInvertControl.tsx deleted file mode 100644 index 3842079c33..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskInvertControl.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { MdInvertColors, MdInvertColorsOff } from 'react-icons/md'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import { InpaintingState, setShouldInvertMask } from '../../inpaintingSlice'; - -import _ from 'lodash'; -import { activeTabNameSelector } from '../../../../options/optionsSelectors'; -import { useHotkeys } from 'react-hotkeys-hook'; - -const inpaintingMaskInvertSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { shouldShowMask, shouldInvertMask } = inpainting; - - return { shouldInvertMask, shouldShowMask, activeTabName }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingMaskInvertControl() { - const { shouldInvertMask, shouldShowMask, activeTabName } = useAppSelector( - inpaintingMaskInvertSelector - ); - const dispatch = useAppDispatch(); - - const handleToggleShouldInvertMask = () => - dispatch(setShouldInvertMask(!shouldInvertMask)); - - // Invert mask - useHotkeys( - 'shift+m', - (e: KeyboardEvent) => { - e.preventDefault(); - handleToggleShouldInvertMask(); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldInvertMask, shouldShowMask] - ); - - return ( - - ) : ( - - ) - } - onClick={handleToggleShouldInvertMask} - isDisabled={!shouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskVisibilityControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskVisibilityControl.tsx deleted file mode 100644 index 82e66ea629..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingMaskControls/InpaintingMaskVisibilityControl.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { BiHide, BiShow } from 'react-icons/bi'; -import { createSelector } from 'reselect'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../../app/store'; -import IAIIconButton from '../../../../../common/components/IAIIconButton'; -import { activeTabNameSelector } from '../../../../options/optionsSelectors'; -import { InpaintingState, setShouldShowMask } from '../../inpaintingSlice'; - -import _ from 'lodash'; - -const inpaintingMaskVisibilitySelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { shouldShowMask } = inpainting; - - return { shouldShowMask, activeTabName }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingMaskVisibilityControl() { - const dispatch = useAppDispatch(); - - const { shouldShowMask, activeTabName } = useAppSelector( - inpaintingMaskVisibilitySelector - ); - - const handleToggleShouldShowMask = () => - dispatch(setShouldShowMask(!shouldShowMask)); - // Hotkeys - // Show/hide mask - useHotkeys( - 'h', - (e: KeyboardEvent) => { - e.preventDefault(); - handleToggleShouldShowMask(); - }, - { - enabled: activeTabName === 'inpainting', - }, - [activeTabName, shouldShowMask] - ); - return ( - : } - onClick={handleToggleShouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingRedoControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingRedoControl.tsx deleted file mode 100644 index c97ceb89bf..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingRedoControl.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { FaRedo } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { activeTabNameSelector } from '../../../options/optionsSelectors'; -import { InpaintingState, redo } from '../inpaintingSlice'; - -import _ from 'lodash'; - -const inpaintingRedoSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { futureLines, shouldShowMask } = inpainting; - - return { - canRedo: futureLines.length > 0, - shouldShowMask, - activeTabName, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingRedoControl() { - const dispatch = useAppDispatch(); - const { canRedo, shouldShowMask, activeTabName } = useAppSelector( - inpaintingRedoSelector - ); - - const handleRedo = () => dispatch(redo()); - - // Hotkeys - - // Redo - useHotkeys( - 'cmd+shift+z, control+shift+z, control+y, cmd+y', - (e: KeyboardEvent) => { - e.preventDefault(); - handleRedo(); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask && canRedo, - }, - [activeTabName, shouldShowMask, canRedo] - ); - - return ( - } - onClick={handleRedo} - isDisabled={!canRedo || !shouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingShowHideBoundingBoxControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingShowHideBoundingBoxControl.tsx deleted file mode 100644 index a91d83d864..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingShowHideBoundingBoxControl.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { FaVectorSquare } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { setShouldShowBoundingBox } from '../inpaintingSlice'; - -const InpaintingShowHideBoundingBoxControl = () => { - const dispatch = useAppDispatch(); - const shouldShowBoundingBox = useAppSelector( - (state: RootState) => state.inpainting.shouldShowBoundingBox - ); - - return ( - } - data-alert={!shouldShowBoundingBox} - onClick={() => { - dispatch(setShouldShowBoundingBox(!shouldShowBoundingBox)); - }} - /> - ); -}; - -export default InpaintingShowHideBoundingBoxControl; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingSplitLayoutControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingSplitLayoutControl.tsx deleted file mode 100644 index 3f2bcceed4..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingSplitLayoutControl.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { VscSplitHorizontal } from 'react-icons/vsc'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { setShowDualDisplay } from '../../../options/optionsSlice'; -import { setNeedsCache } from '../inpaintingSlice'; - -export default function InpaintingSplitLayoutControl() { - const dispatch = useAppDispatch(); - const showDualDisplay = useAppSelector( - (state: RootState) => state.options.showDualDisplay - ); - - const handleDualDisplay = () => { - dispatch(setShowDualDisplay(!showDualDisplay)); - dispatch(setNeedsCache(true)); - }; - - // Hotkeys - // Toggle split view - useHotkeys( - 'shift+j', - () => { - handleDualDisplay(); - }, - [showDualDisplay] - ); - - return ( - } - data-selected={showDualDisplay} - onClick={handleDualDisplay} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingUndoControl.tsx b/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingUndoControl.tsx deleted file mode 100644 index 4721487da6..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingControls/InpaintingUndoControl.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import React from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { FaUndo } from 'react-icons/fa'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import IAIIconButton from '../../../../common/components/IAIIconButton'; -import { InpaintingState, undo } from '../inpaintingSlice'; - -import _ from 'lodash'; -import { activeTabNameSelector } from '../../../options/optionsSelectors'; - -const inpaintingUndoSelector = createSelector( - [(state: RootState) => state.inpainting, activeTabNameSelector], - (inpainting: InpaintingState, activeTabName) => { - const { pastLines, shouldShowMask } = inpainting; - - return { - canUndo: pastLines.length > 0, - shouldShowMask, - activeTabName, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export default function InpaintingUndoControl() { - const dispatch = useAppDispatch(); - - const { canUndo, shouldShowMask, activeTabName } = useAppSelector( - inpaintingUndoSelector - ); - - const handleUndo = () => dispatch(undo()); - - // Hotkeys - // Undo - useHotkeys( - 'cmd+z, control+z', - (e: KeyboardEvent) => { - e.preventDefault(); - handleUndo(); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask && canUndo, - }, - [activeTabName, shouldShowMask, canUndo] - ); - - return ( - } - onClick={handleUndo} - isDisabled={!canUndo || !shouldShowMask} - /> - ); -} diff --git a/frontend/src/features/tabs/Inpainting/InpaintingDisplay.tsx b/frontend/src/features/tabs/Inpainting/InpaintingDisplay.tsx deleted file mode 100644 index 3f58002721..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingDisplay.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import _ from 'lodash'; -import { useLayoutEffect } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import ImageUploadButton from '../../../common/components/ImageUploaderButton'; -import CurrentImageDisplay from '../../gallery/CurrentImageDisplay'; -import { OptionsState } from '../../options/optionsSlice'; -import InpaintingCanvas from './InpaintingCanvas'; -import InpaintingCanvasPlaceholder from './InpaintingCanvasPlaceholder'; -import InpaintingControls from './InpaintingControls'; -import { InpaintingState, setNeedsCache } from './inpaintingSlice'; - -const inpaintingDisplaySelector = createSelector( - [(state: RootState) => state.inpainting, (state: RootState) => state.options], - (inpainting: InpaintingState, options: OptionsState) => { - const { needsCache, imageToInpaint } = inpainting; - const { showDualDisplay } = options; - return { - needsCache, - showDualDisplay, - imageToInpaint, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -const InpaintingDisplay = () => { - const dispatch = useAppDispatch(); - const { showDualDisplay, needsCache, imageToInpaint } = useAppSelector( - inpaintingDisplaySelector - ); - - useLayoutEffect(() => { - const resizeCallback = _.debounce(() => dispatch(setNeedsCache(true)), 250); - window.addEventListener('resize', resizeCallback); - return () => window.removeEventListener('resize', resizeCallback); - }, [dispatch]); - - const inpaintingComponent = imageToInpaint ? ( -
- -
- {needsCache ? : } -
-
- ) : ( - - ); - - return ( -
-
{inpaintingComponent}
- {showDualDisplay && ( -
- -
- )} -
- ); -}; - -export default InpaintingDisplay; diff --git a/frontend/src/features/tabs/Inpainting/InpaintingPanel.tsx b/frontend/src/features/tabs/Inpainting/InpaintingPanel.tsx deleted file mode 100644 index 7bdc226dd5..0000000000 --- a/frontend/src/features/tabs/Inpainting/InpaintingPanel.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { Feature } from '../../../app/features'; -import { RootState, useAppSelector } from '../../../app/store'; -import FaceRestoreHeader from '../../options/AdvancedOptions/FaceRestore/FaceRestoreHeader'; -import FaceRestoreOptions from '../../options/AdvancedOptions/FaceRestore/FaceRestoreOptions'; -import ImageToImageStrength from '../../options/AdvancedOptions/ImageToImage/ImageToImageStrength'; -import InpaintingSettings from '../../options/AdvancedOptions/Inpainting/InpaintingSettings'; -import SeedHeader from '../../options/AdvancedOptions/Seed/SeedHeader'; -import SeedOptions from '../../options/AdvancedOptions/Seed/SeedOptions'; -import UpscaleHeader from '../../options/AdvancedOptions/Upscale/UpscaleHeader'; -import UpscaleOptions from '../../options/AdvancedOptions/Upscale/UpscaleOptions'; -import VariationsHeader from '../../options/AdvancedOptions/Variations/VariationsHeader'; -import VariationsOptions from '../../options/AdvancedOptions/Variations/VariationsOptions'; -import MainAdvancedOptionsCheckbox from '../../options/MainOptions/MainAdvancedOptionsCheckbox'; -import MainOptions from '../../options/MainOptions/MainOptions'; -import OptionsAccordion from '../../options/OptionsAccordion'; -import ProcessButtons from '../../options/ProcessButtons/ProcessButtons'; -import PromptInput from '../../options/PromptInput/PromptInput'; -import InvokeOptionsPanel from '../InvokeOptionsPanel'; - -export default function InpaintingPanel() { - const showAdvancedOptions = useAppSelector( - (state: RootState) => state.options.showAdvancedOptions - ); - - const imageToImageAccordions = { - seed: { - header: , - feature: Feature.SEED, - options: , - }, - variations: { - header: , - feature: Feature.VARIATIONS, - options: , - }, - face_restore: { - header: , - feature: Feature.FACE_CORRECTION, - options: , - }, - upscale: { - header: , - feature: Feature.UPSCALE, - options: , - }, - }; - - return ( - - - - - - - - {showAdvancedOptions ? ( - - ) : null} - - ); -} diff --git a/frontend/src/features/tabs/Inpainting/KeyboardEventManager.tsx b/frontend/src/features/tabs/Inpainting/KeyboardEventManager.tsx deleted file mode 100644 index a00b996847..0000000000 --- a/frontend/src/features/tabs/Inpainting/KeyboardEventManager.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import _ from 'lodash'; -import { useEffect, useRef } from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import { activeTabNameSelector } from '../../options/optionsSelectors'; -import { OptionsState } from '../../options/optionsSlice'; -import { - InpaintingState, - setIsSpacebarHeld, - setShouldLockBoundingBox, - toggleShouldLockBoundingBox, - toggleTool, -} from './inpaintingSlice'; - -const keyboardEventManagerSelector = createSelector( - [ - (state: RootState) => state.options, - (state: RootState) => state.inpainting, - activeTabNameSelector, - ], - (options: OptionsState, inpainting: InpaintingState, activeTabName) => { - const { - shouldShowMask, - cursorPosition, - shouldLockBoundingBox, - shouldShowBoundingBox, - } = inpainting; - return { - activeTabName, - shouldShowMask, - isCursorOnCanvas: Boolean(cursorPosition), - shouldLockBoundingBox, - shouldShowBoundingBox, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -const KeyboardEventManager = () => { - const dispatch = useAppDispatch(); - const { - shouldShowMask, - activeTabName, - isCursorOnCanvas, - shouldLockBoundingBox, - shouldShowBoundingBox, - } = useAppSelector(keyboardEventManagerSelector); - - const wasLastEventOverCanvas = useRef(false); - const lastEvent = useRef(null); - - // Toggle lock bounding box - useHotkeys( - 'shift+q', - (e: KeyboardEvent) => { - e.preventDefault(); - dispatch(toggleShouldLockBoundingBox()); - }, - { - enabled: activeTabName === 'inpainting' && shouldShowMask, - }, - [activeTabName, shouldShowMask] - ); - - // Manages hold-style keyboard shortcuts - useEffect(() => { - const listener = (e: KeyboardEvent) => { - if ( - !['x', 'q'].includes(e.key) || - activeTabName !== 'inpainting' || - !shouldShowMask - ) { - return; - } - - // cursor is NOT over canvas - if (!isCursorOnCanvas) { - if (!lastEvent.current) { - lastEvent.current = e; - } - - wasLastEventOverCanvas.current = false; - return; - } - e.stopPropagation(); - e.preventDefault(); - if (e.repeat) return; - // cursor is over canvas, we can preventDefault now - - // if this is the first event - if (!lastEvent.current) { - wasLastEventOverCanvas.current = true; - lastEvent.current = e; - } - - if (!wasLastEventOverCanvas.current && e.type === 'keyup') { - wasLastEventOverCanvas.current = true; - lastEvent.current = e; - return; - } - - switch (e.key) { - case 'x': { - dispatch(toggleTool()); - break; - } - case 'q': { - if (!shouldShowMask || !shouldShowBoundingBox) break; - dispatch(setIsSpacebarHeld(e.type === 'keydown')); - dispatch(setShouldLockBoundingBox(e.type !== 'keydown')); - break; - } - } - - lastEvent.current = e; - wasLastEventOverCanvas.current = true; - }; - - document.addEventListener('keydown', listener); - document.addEventListener('keyup', listener); - - return () => { - document.removeEventListener('keydown', listener); - document.removeEventListener('keyup', listener); - }; - }, [ - dispatch, - activeTabName, - shouldShowMask, - isCursorOnCanvas, - shouldLockBoundingBox, - shouldShowBoundingBox, - ]); - - return null; -}; - -export default KeyboardEventManager; diff --git a/frontend/src/features/tabs/Inpainting/components/Cacher.tsx b/frontend/src/features/tabs/Inpainting/components/Cacher.tsx deleted file mode 100644 index 7a6d96c3c9..0000000000 --- a/frontend/src/features/tabs/Inpainting/components/Cacher.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { useEffect, useLayoutEffect } from 'react'; -import { RootState, useAppSelector } from '../../../../app/store'; -import { maskLayerRef } from '../InpaintingCanvas'; - -/** - * Konva's cache() method basically rasterizes an object/canvas. - * This is needed to rasterize the mask, before setting the opacity. - * If we do not cache the maskLayer, the brush strokes will have opacity - * set individually. - * - * This logical component simply uses useLayoutEffect() to synchronously - * cache the mask layer every time something that changes how it should draw - * is changed. - */ -const Cacher = () => { - const { - tool, - lines, - cursorPosition, - brushSize, - canvasDimensions: { width, height }, - maskColor, - shouldInvertMask, - shouldShowMask, - shouldShowBrushPreview, - shouldShowCheckboardTransparency, - imageToInpaint, - shouldShowBrush, - shouldShowBoundingBoxFill, - shouldLockBoundingBox, - stageScale, - pastLines, - futureLines, - needsCache, - isDrawing, - isTransformingBoundingBox, - isMovingBoundingBox, - shouldShowBoundingBox, - } = useAppSelector((state: RootState) => state.inpainting); - - useLayoutEffect(() => { - if (!maskLayerRef.current) return; - maskLayerRef.current.cache({ - x: 0, - y: 0, - width, - height, - }); - }, [ - lines, - cursorPosition, - width, - height, - tool, - brushSize, - maskColor, - shouldInvertMask, - shouldShowMask, - shouldShowBrushPreview, - shouldShowCheckboardTransparency, - imageToInpaint, - shouldShowBrush, - shouldShowBoundingBoxFill, - shouldShowBoundingBox, - shouldLockBoundingBox, - stageScale, - pastLines, - futureLines, - needsCache, - isDrawing, - isTransformingBoundingBox, - isMovingBoundingBox, - ]); - - /** - * Hack to cache the mask layer after the canvas is ready. - */ - useEffect(() => { - const intervalId = window.setTimeout(() => { - if (!maskLayerRef.current) return; - maskLayerRef.current.cache({ - x: 0, - y: 0, - width, - height, - }); - }, 0); - - return () => { - window.clearTimeout(intervalId); - }; - }); - - return null; -}; - -export default Cacher; diff --git a/frontend/src/features/tabs/Inpainting/components/InpaintingBoundingBoxPreview.tsx b/frontend/src/features/tabs/Inpainting/components/InpaintingBoundingBoxPreview.tsx deleted file mode 100644 index df0d09ed65..0000000000 --- a/frontend/src/features/tabs/Inpainting/components/InpaintingBoundingBoxPreview.tsx +++ /dev/null @@ -1,374 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import Konva from 'konva'; -import { Context } from 'konva/lib/Context'; -import { KonvaEventObject } from 'konva/lib/Node'; -import { Box } from 'konva/lib/shapes/Transformer'; -import { Vector2d } from 'konva/lib/types'; -import _ from 'lodash'; -import { useCallback, useEffect, useRef } from 'react'; -import { Group, Rect, Transformer } from 'react-konva'; -import { - RootState, - useAppDispatch, - useAppSelector, -} from '../../../../app/store'; -import { roundToMultiple } from '../../../../common/util/roundDownToMultiple'; -import { - InpaintingState, - setBoundingBoxCoordinate, - setBoundingBoxDimensions, - setIsMouseOverBoundingBox, - setIsMovingBoundingBox, - setIsTransformingBoundingBox, -} from '../inpaintingSlice'; -import { rgbaColorToString } from '../util/colorToString'; -import { - DASH_WIDTH, - // MARCHING_ANTS_SPEED, -} from '../util/constants'; - -const boundingBoxPreviewSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { - boundingBoxCoordinate, - boundingBoxDimensions, - boundingBoxPreviewFill, - canvasDimensions, - stageScale, - imageToInpaint, - shouldLockBoundingBox, - isDrawing, - isTransformingBoundingBox, - isMovingBoundingBox, - isMouseOverBoundingBox, - isSpacebarHeld, - } = inpainting; - return { - boundingBoxCoordinate, - boundingBoxDimensions, - boundingBoxPreviewFillString: rgbaColorToString(boundingBoxPreviewFill), - canvasDimensions, - stageScale, - imageToInpaint, - dash: DASH_WIDTH / stageScale, // scale dash lengths - strokeWidth: 1 / stageScale, // scale stroke thickness - shouldLockBoundingBox, - isDrawing, - isTransformingBoundingBox, - isMouseOverBoundingBox, - isMovingBoundingBox, - isSpacebarHeld, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -/** - * Shades the area around the mask. - */ -export const InpaintingBoundingBoxPreviewOverlay = () => { - const { - boundingBoxCoordinate, - boundingBoxDimensions, - boundingBoxPreviewFillString, - canvasDimensions, - } = useAppSelector(boundingBoxPreviewSelector); - - return ( - - - - - ); -}; - -const InpaintingBoundingBoxPreview = () => { - const dispatch = useAppDispatch(); - const { - boundingBoxCoordinate, - boundingBoxDimensions, - stageScale, - imageToInpaint, - shouldLockBoundingBox, - isDrawing, - isTransformingBoundingBox, - isMovingBoundingBox, - isMouseOverBoundingBox, - isSpacebarHeld, - } = useAppSelector(boundingBoxPreviewSelector); - - const transformerRef = useRef(null); - const shapeRef = useRef(null); - - useEffect(() => { - if (!transformerRef.current || !shapeRef.current) return; - transformerRef.current.nodes([shapeRef.current]); - transformerRef.current.getLayer()?.batchDraw(); - }, [shouldLockBoundingBox]); - - const scaledStep = 64 * stageScale; - - const handleOnDragMove = useCallback( - (e: KonvaEventObject) => { - dispatch( - setBoundingBoxCoordinate({ - x: Math.floor(e.target.x()), - y: Math.floor(e.target.y()), - }) - ); - }, - [dispatch] - ); - - const dragBoundFunc = useCallback( - (position: Vector2d) => { - if (!imageToInpaint) return boundingBoxCoordinate; - - const { x, y } = position; - - const maxX = imageToInpaint.width - boundingBoxDimensions.width; - const maxY = imageToInpaint.height - boundingBoxDimensions.height; - - const clampedX = Math.floor(_.clamp(x, 0, maxX * stageScale)); - const clampedY = Math.floor(_.clamp(y, 0, maxY * stageScale)); - - return { x: clampedX, y: clampedY }; - }, - [boundingBoxCoordinate, boundingBoxDimensions, imageToInpaint, stageScale] - ); - - const handleOnTransform = useCallback(() => { - /** - * The Konva Transformer changes the object's anchor point and scale factor, - * not its width and height. We need to un-scale the width and height before - * setting the values. - */ - if (!shapeRef.current) return; - - const rect = shapeRef.current; - - const scaleX = rect.scaleX(); - const scaleY = rect.scaleY(); - - // undo the scaling - const width = Math.round(rect.width() * scaleX); - const height = Math.round(rect.height() * scaleY); - - const x = Math.round(rect.x()); - const y = Math.round(rect.y()); - - dispatch( - setBoundingBoxDimensions({ - width, - height, - }) - ); - - dispatch( - setBoundingBoxCoordinate({ - x, - y, - }) - ); - - // Reset the scale now that the coords/dimensions have been un-scaled - rect.scaleX(1); - rect.scaleY(1); - }, [dispatch]); - - const anchorDragBoundFunc = useCallback( - ( - oldPos: Vector2d, // old absolute position of anchor point - newPos: Vector2d, // new absolute position (potentially) of anchor point - // eslint-disable-next-line @typescript-eslint/no-unused-vars - _e: MouseEvent - ) => { - /** - * Konva does not transform with width or height. It transforms the anchor point - * and scale factor. This is then sent to the shape's onTransform listeners. - * - * We need to snap the new width to steps of 64 without also snapping the - * coordinates of the bounding box to steps of 64. But because the whole - * stage is scaled, our actual desired step is actually 64 * the stage scale. - */ - - // Difference of the old coords from the nearest multiple the scaled step - const offsetX = oldPos.x % scaledStep; - const offsetY = oldPos.y % scaledStep; - - // Round new position to the nearest multiple of the scaled step - const closestX = roundToMultiple(newPos.x, scaledStep) + offsetX; - const closestY = roundToMultiple(newPos.y, scaledStep) + offsetY; - - // the difference between the old coord and new - const diffX = Math.abs(newPos.x - closestX); - const diffY = Math.abs(newPos.y - closestY); - - // if the difference is less than the scaled step, we want to snap - const didSnapX = diffX < scaledStep; - const didSnapY = diffY < scaledStep; - - // We may not change anything, stash the old position - let newCoordinate = { ...oldPos }; - - // Set the new coords based on what snapped - if (didSnapX && !didSnapY) { - newCoordinate = { - x: closestX, - y: oldPos.y, - }; - } else if (!didSnapX && didSnapY) { - newCoordinate = { - x: oldPos.x, - y: closestY, - }; - } else if (didSnapX && didSnapY) { - newCoordinate = { - x: closestX, - y: closestY, - }; - } - - return newCoordinate; - }, - [scaledStep] - ); - - const boundBoxFunc = useCallback( - (oldBoundBox: Box, newBoundBox: Box) => { - /** - * The transformer uses this callback to limit valid transformations. - * Unlike anchorDragBoundFunc, it does get a width and height, so - * the logic to constrain the size of the bounding box is very simple. - */ - if (!imageToInpaint) return oldBoundBox; - - if ( - newBoundBox.width + newBoundBox.x > imageToInpaint.width * stageScale || - newBoundBox.height + newBoundBox.y > - imageToInpaint.height * stageScale || - newBoundBox.x < 0 || - newBoundBox.y < 0 - ) { - return oldBoundBox; - } - - return newBoundBox; - }, - [imageToInpaint, stageScale] - ); - - const handleStartedTransforming = (e: KonvaEventObject) => { - e.cancelBubble = true; - e.evt.stopImmediatePropagation(); - console.log("Started transform") - dispatch(setIsTransformingBoundingBox(true)); - }; - - const handleEndedTransforming = (e: KonvaEventObject) => { - dispatch(setIsTransformingBoundingBox(false)); - dispatch(setIsMouseOverBoundingBox(false)); - }; - - const handleStartedMoving = (e: KonvaEventObject) => { - e.cancelBubble = true; - e.evt.stopImmediatePropagation(); - dispatch(setIsMovingBoundingBox(true)); - }; - - const handleEndedModifying = (e: KonvaEventObject) => { - dispatch(setIsTransformingBoundingBox(false)); - dispatch(setIsMovingBoundingBox(false)); - dispatch(setIsMouseOverBoundingBox(false)); - }; - - const spacebarHeldHitFunc = (context: Context, shape: Konva.Shape) => { - context.rect(0, 0, imageToInpaint?.width, imageToInpaint?.height); - context.fillShape(shape); - }; - - return ( - <> - { - dispatch(setIsMouseOverBoundingBox(true)); - }} - onMouseOut={() => { - !isTransformingBoundingBox && - !isMovingBoundingBox && - dispatch(setIsMouseOverBoundingBox(false)); - }} - onMouseDown={handleStartedMoving} - onMouseUp={handleEndedModifying} - draggable={true} - onDragMove={handleOnDragMove} - dragBoundFunc={dragBoundFunc} - onTransform={handleOnTransform} - onDragEnd={handleEndedModifying} - onTransformEnd={handleEndedTransforming} - /> - { - dispatch(setIsMouseOverBoundingBox(true)); - }} - onMouseOut={() => { - !isTransformingBoundingBox && - !isMovingBoundingBox && - dispatch(setIsMouseOverBoundingBox(false)); - }} - /> - - ); -}; - -export default InpaintingBoundingBoxPreview; diff --git a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreview.tsx b/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreview.tsx deleted file mode 100644 index 42beadd2b7..0000000000 --- a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreview.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import _ from 'lodash'; -import { Circle } from 'react-konva'; -import { RootState, useAppSelector } from '../../../../app/store'; -import { InpaintingState } from '../inpaintingSlice'; -import { rgbaColorToRgbString } from '../util/colorToString'; - -const inpaintingCanvasBrushPreviewSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { - cursorPosition, - canvasDimensions: { width, height }, - brushSize, - maskColor, - tool, - shouldShowBrush, - isMovingBoundingBox, - isTransformingBoundingBox, - } = inpainting; - - return { - cursorPosition, - width, - height, - brushSize, - maskColorString: rgbaColorToRgbString(maskColor), - tool, - shouldShowBrush, - shouldDrawBrushPreview: - !( - isMovingBoundingBox || - isTransformingBoundingBox || - !cursorPosition - ) && shouldShowBrush, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -/** - * Draws a black circle around the canvas brush preview. - */ -const InpaintingCanvasBrushPreview = () => { - const { - cursorPosition, - width, - height, - brushSize, - maskColorString, - tool, - shouldDrawBrushPreview, - } = useAppSelector(inpaintingCanvasBrushPreviewSelector); - - if (!shouldDrawBrushPreview) return null; - - return ( - - ); -}; - -export default InpaintingCanvasBrushPreview; diff --git a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreviewOutline.tsx b/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreviewOutline.tsx deleted file mode 100644 index 3a99d696ae..0000000000 --- a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasBrushPreviewOutline.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import _ from 'lodash'; -import { Circle } from 'react-konva'; -import { RootState, useAppSelector } from '../../../../app/store'; -import { InpaintingState } from '../inpaintingSlice'; - -const inpaintingCanvasBrushPrevieOutlineSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { - cursorPosition, - canvasDimensions: { width, height }, - brushSize, - tool, - shouldShowBrush, - isMovingBoundingBox, - isTransformingBoundingBox, - stageScale, - } = inpainting; - - return { - cursorPosition, - width, - height, - brushSize, - tool, - strokeWidth: 1 / stageScale, // scale stroke thickness - radius: 1 / stageScale, // scale stroke thickness - shouldDrawBrushPreview: - !( - isMovingBoundingBox || - isTransformingBoundingBox || - !cursorPosition - ) && shouldShowBrush, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -/** - * Draws the canvas brush preview outline. - */ -const InpaintingCanvasBrushPreviewOutline = () => { - const { - cursorPosition, - width, - height, - brushSize, - shouldDrawBrushPreview, - strokeWidth, - radius, - } = useAppSelector(inpaintingCanvasBrushPrevieOutlineSelector); - - if (!shouldDrawBrushPreview) return null; - return ( - <> - - - - ); -}; -export default InpaintingCanvasBrushPreviewOutline; diff --git a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasLines.tsx b/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasLines.tsx deleted file mode 100644 index d9cc41038d..0000000000 --- a/frontend/src/features/tabs/Inpainting/components/InpaintingCanvasLines.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Line } from 'react-konva'; -import { useAppSelector } from '../../../../app/store'; -import { inpaintingCanvasLinesSelector } from '../inpaintingSliceSelectors'; - -/** - * Draws the lines which comprise the mask. - * - * Uses globalCompositeOperation to handle the brush and eraser tools. - */ -const InpaintingCanvasLines = () => { - const { lines, maskColorString } = useAppSelector( - inpaintingCanvasLinesSelector - ); - - return ( - <> - {lines.map((line, i) => ( - - ))} - - ); -}; - -export default InpaintingCanvasLines; diff --git a/frontend/src/features/tabs/Inpainting/hooks/_useInpaintingHotkeys.ts b/frontend/src/features/tabs/Inpainting/hooks/_useInpaintingHotkeys.ts deleted file mode 100644 index af7f380fef..0000000000 --- a/frontend/src/features/tabs/Inpainting/hooks/_useInpaintingHotkeys.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { useToast } from '@chakra-ui/react'; -import { useHotkeys } from 'react-hotkeys-hook'; - -type UseInpaintingHotkeysConfig = { - activeTab: string; - brushSize: number; - handleChangeBrushSize: (newBrushSize: number) => void; - handleSelectEraserTool: () => void; - handleSelectBrushTool: () => void; - canUndo: boolean; - handleUndo: () => void; - canRedo: boolean; - handleRedo: () => void; - canClearMask: boolean; - handleClearMask: () => void; -}; - -const useInpaintingHotkeys = (config: UseInpaintingHotkeysConfig) => { - const { - activeTab, - brushSize, - handleChangeBrushSize, - handleSelectEraserTool, - handleSelectBrushTool, - canUndo, - handleUndo, - canRedo, - handleRedo, - canClearMask, - handleClearMask, - } = config; - - const toast = useToast(); - // Hotkeys - useHotkeys( - '[', - () => { - if (activeTab === 'inpainting' && brushSize - 5 > 0) { - handleChangeBrushSize(brushSize - 5); - } else { - handleChangeBrushSize(1); - } - }, - [brushSize] - ); - - useHotkeys( - ']', - () => { - if (activeTab === 'inpainting') { - handleChangeBrushSize(brushSize + 5); - } - }, - [brushSize] - ); - - useHotkeys('e', () => { - if (activeTab === 'inpainting') { - handleSelectEraserTool(); - } - }); - - useHotkeys('b', () => { - if (activeTab === 'inpainting') { - handleSelectBrushTool(); - } - }); - - useHotkeys( - 'cmd+z', - () => { - if (activeTab === 'inpainting' && canUndo) { - handleUndo(); - } - }, - [canUndo] - ); - - useHotkeys( - 'control+z', - () => { - if (activeTab === 'inpainting' && canUndo) { - handleUndo(); - } - }, - [canUndo] - ); - - useHotkeys( - 'cmd+shift+z', - () => { - if (activeTab === 'inpainting' && canRedo) { - handleRedo(); - } - }, - [canRedo] - ); - - useHotkeys( - 'control+shift+z', - () => { - if (activeTab === 'inpainting' && canRedo) { - handleRedo(); - } - }, - [canRedo] - ); - - useHotkeys( - 'control+y', - () => { - if (activeTab === 'inpainting' && canRedo) { - handleRedo(); - } - }, - [canRedo] - ); - - useHotkeys( - 'cmd+y', - () => { - if (activeTab === 'inpainting' && canRedo) { - handleRedo(); - } - }, - [canRedo] - ); - - useHotkeys( - 'c', - () => { - if (activeTab === 'inpainting' && canClearMask) { - handleClearMask(); - toast({ - title: 'Mask Cleared', - status: 'success', - duration: 2500, - isClosable: true, - }); - } - }, - [canClearMask] - ); -}; - -export default useInpaintingHotkeys; diff --git a/frontend/src/features/tabs/Inpainting/index.tsx b/frontend/src/features/tabs/Inpainting/index.tsx deleted file mode 100644 index 4b63c43412..0000000000 --- a/frontend/src/features/tabs/Inpainting/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import InpaintingPanel from './InpaintingPanel'; -import InpaintingDisplay from './InpaintingDisplay'; -import InvokeWorkarea from '../InvokeWorkarea'; - -export default function InpaintingWorkarea() { - return ( - } - styleClass="inpainting-workarea-overrides" - > - - - ); -} diff --git a/frontend/src/features/tabs/Inpainting/inpaintingSlice.ts b/frontend/src/features/tabs/Inpainting/inpaintingSlice.ts deleted file mode 100644 index dee72de7d9..0000000000 --- a/frontend/src/features/tabs/Inpainting/inpaintingSlice.ts +++ /dev/null @@ -1,383 +0,0 @@ -import { createSlice } from '@reduxjs/toolkit'; -import type { PayloadAction } from '@reduxjs/toolkit'; -import { Vector2d } from 'konva/lib/types'; -import { RgbaColor } from 'react-colorful'; -import * as InvokeAI from '../../../app/invokeai'; -import _ from 'lodash'; -import { roundDownToMultiple } from '../../../common/util/roundDownToMultiple'; - -export type InpaintingTool = 'brush' | 'eraser'; - -export type MaskLine = { - tool: InpaintingTool; - strokeWidth: number; - points: number[]; -}; - -export type MaskCircle = { - tool: InpaintingTool; - radius: number; - x: number; - y: number; -}; - -export type Dimensions = { - width: number; - height: number; -}; - -export type BoundingBoxPreviewType = 'overlay' | 'ants' | 'marchingAnts'; - -export interface InpaintingState { - tool: 'brush' | 'eraser'; - brushSize: number; - maskColor: RgbaColor; - cursorPosition: Vector2d | null; - canvasDimensions: Dimensions; - boundingBoxDimensions: Dimensions; - boundingBoxCoordinate: Vector2d; - boundingBoxPreviewFill: RgbaColor; - shouldShowBoundingBox: boolean; - shouldShowBoundingBoxFill: boolean; - lines: MaskLine[]; - pastLines: MaskLine[][]; - futureLines: MaskLine[][]; - shouldShowMask: boolean; - shouldInvertMask: boolean; - shouldShowCheckboardTransparency: boolean; - shouldShowBrush: boolean; - shouldShowBrushPreview: boolean; - imageToInpaint?: InvokeAI.Image; - needsCache: boolean; - stageScale: number; - isDrawing: boolean; - isTransformingBoundingBox: boolean; - isMouseOverBoundingBox: boolean; - isMovingBoundingBox: boolean; - shouldUseInpaintReplace: boolean; - inpaintReplace: number; - shouldLockBoundingBox: boolean; - isSpacebarHeld: boolean; -} - -const initialInpaintingState: InpaintingState = { - tool: 'brush', - brushSize: 50, - maskColor: { r: 255, g: 90, b: 90, a: 0.5 }, - canvasDimensions: { width: 0, height: 0 }, - boundingBoxDimensions: { width: 512, height: 512 }, - boundingBoxCoordinate: { x: 0, y: 0 }, - boundingBoxPreviewFill: { r: 0, g: 0, b: 0, a: 0.5 }, - shouldShowBoundingBox: true, - shouldShowBoundingBoxFill: true, - cursorPosition: null, - lines: [], - pastLines: [], - futureLines: [], - shouldShowMask: true, - shouldInvertMask: false, - shouldShowCheckboardTransparency: false, - shouldShowBrush: true, - shouldShowBrushPreview: false, - needsCache: false, - isDrawing: false, - isTransformingBoundingBox: false, - isMouseOverBoundingBox: false, - isMovingBoundingBox: false, - stageScale: 1, - shouldUseInpaintReplace: false, - inpaintReplace: 0.1, - shouldLockBoundingBox: true, - isSpacebarHeld: false, -}; - -const initialState: InpaintingState = initialInpaintingState; - -export const inpaintingSlice = createSlice({ - name: 'inpainting', - initialState, - reducers: { - setTool: (state, action: PayloadAction) => { - state.tool = action.payload; - }, - toggleTool: (state) => { - state.tool = state.tool === 'brush' ? 'eraser' : 'brush'; - }, - setBrushSize: (state, action: PayloadAction) => { - state.brushSize = action.payload; - }, - addLine: (state, action: PayloadAction) => { - state.pastLines.push(state.lines); - state.lines.push(action.payload); - state.futureLines = []; - }, - addPointToCurrentLine: (state, action: PayloadAction) => { - state.lines[state.lines.length - 1].points.push(...action.payload); - }, - undo: (state) => { - if (state.pastLines.length === 0) return; - const newLines = state.pastLines.pop(); - if (!newLines) return; - state.futureLines.unshift(state.lines); - state.lines = newLines; - }, - redo: (state) => { - if (state.futureLines.length === 0) return; - const newLines = state.futureLines.shift(); - if (!newLines) return; - state.pastLines.push(state.lines); - state.lines = newLines; - }, - clearMask: (state) => { - state.pastLines.push(state.lines); - state.lines = []; - state.futureLines = []; - state.shouldInvertMask = false; - }, - toggleShouldInvertMask: (state) => { - state.shouldInvertMask = !state.shouldInvertMask; - }, - toggleShouldShowMask: (state) => { - state.shouldShowMask = !state.shouldShowMask; - }, - setShouldInvertMask: (state, action: PayloadAction) => { - state.shouldInvertMask = action.payload; - }, - setShouldShowMask: (state, action: PayloadAction) => { - state.shouldShowMask = action.payload; - if (!action.payload) { - state.shouldInvertMask = false; - } - }, - setShouldShowCheckboardTransparency: ( - state, - action: PayloadAction - ) => { - state.shouldShowCheckboardTransparency = action.payload; - }, - setShouldShowBrushPreview: (state, action: PayloadAction) => { - state.shouldShowBrushPreview = action.payload; - }, - setShouldShowBrush: (state, action: PayloadAction) => { - state.shouldShowBrush = action.payload; - }, - setMaskColor: (state, action: PayloadAction) => { - state.maskColor = action.payload; - }, - setCursorPosition: (state, action: PayloadAction) => { - state.cursorPosition = action.payload; - }, - clearImageToInpaint: (state) => { - state.imageToInpaint = undefined; - }, - setImageToInpaint: (state, action: PayloadAction) => { - const { width: imageWidth, height: imageHeight } = action.payload; - const { width, height } = state.boundingBoxDimensions; - const { x, y } = state.boundingBoxCoordinate; - - const newCoordinates: Vector2d = { x, y }; - const newDimensions: Dimensions = { width, height }; - - if (width + x > imageWidth) { - // Bounding box at least needs to be translated - if (width > imageWidth) { - // Bounding box also needs to be resized - newDimensions.width = roundDownToMultiple(imageWidth, 64); - } - newCoordinates.x = imageWidth - newDimensions.width; - } - - if (height + y > imageHeight) { - // Bounding box at least needs to be translated - if (height > imageHeight) { - // Bounding box also needs to be resized - newDimensions.height = roundDownToMultiple(imageHeight, 64); - } - newCoordinates.y = imageHeight - newDimensions.height; - } - - state.boundingBoxDimensions = newDimensions; - state.boundingBoxCoordinate = newCoordinates; - - state.canvasDimensions = { - width: imageWidth, - height: imageHeight, - }; - - state.imageToInpaint = action.payload; - state.needsCache = true; - }, - setCanvasDimensions: (state, action: PayloadAction) => { - state.canvasDimensions = action.payload; - - const { width: canvasWidth, height: canvasHeight } = action.payload; - - const { width: boundingBoxWidth, height: boundingBoxHeight } = - state.boundingBoxDimensions; - - const newBoundingBoxWidth = roundDownToMultiple( - _.clamp(boundingBoxWidth, 64, canvasWidth), - 64 - ); - const newBoundingBoxHeight = roundDownToMultiple( - _.clamp(boundingBoxHeight, 64, canvasHeight), - 64 - ); - - state.boundingBoxDimensions = { - width: newBoundingBoxWidth, - height: newBoundingBoxHeight, - }; - }, - setBoundingBoxDimensions: (state, action: PayloadAction) => { - state.boundingBoxDimensions = action.payload; - const { width: boundingBoxWidth, height: boundingBoxHeight } = - action.payload; - const { x: boundingBoxX, y: boundingBoxY } = state.boundingBoxCoordinate; - const { width: canvasWidth, height: canvasHeight } = - state.canvasDimensions; - - const roundedCanvasWidth = roundDownToMultiple(canvasWidth, 64); - const roundedCanvasHeight = roundDownToMultiple(canvasHeight, 64); - - const roundedBoundingBoxWidth = roundDownToMultiple(boundingBoxWidth, 64); - const roundedBoundingBoxHeight = roundDownToMultiple( - boundingBoxHeight, - 64 - ); - - const overflowX = boundingBoxX + boundingBoxWidth - canvasWidth; - const overflowY = boundingBoxY + boundingBoxHeight - canvasHeight; - - const newBoundingBoxWidth = _.clamp( - roundedBoundingBoxWidth, - 64, - roundedCanvasWidth - ); - - const newBoundingBoxHeight = _.clamp( - roundedBoundingBoxHeight, - 64, - roundedCanvasHeight - ); - - const overflowCorrectedX = - overflowX > 0 ? boundingBoxX - overflowX : boundingBoxX; - - const overflowCorrectedY = - overflowY > 0 ? boundingBoxY - overflowY : boundingBoxY; - - const clampedX = _.clamp( - overflowCorrectedX, - 0, - roundedCanvasWidth - newBoundingBoxWidth - ); - - const clampedY = _.clamp( - overflowCorrectedY, - 0, - roundedCanvasHeight - newBoundingBoxHeight - ); - - state.boundingBoxDimensions = { - width: newBoundingBoxWidth, - height: newBoundingBoxHeight, - }; - - state.boundingBoxCoordinate = { - x: clampedX, - y: clampedY, - }; - }, - setBoundingBoxCoordinate: (state, action: PayloadAction) => { - state.boundingBoxCoordinate = action.payload; - }, - setBoundingBoxPreviewFill: (state, action: PayloadAction) => { - state.boundingBoxPreviewFill = action.payload; - }, - setNeedsCache: (state, action: PayloadAction) => { - state.needsCache = action.payload; - }, - setStageScale: (state, action: PayloadAction) => { - state.stageScale = action.payload; - state.needsCache = false; - }, - setShouldShowBoundingBoxFill: (state, action: PayloadAction) => { - state.shouldShowBoundingBoxFill = action.payload; - }, - setIsDrawing: (state, action: PayloadAction) => { - state.isDrawing = action.payload; - }, - setClearBrushHistory: (state) => { - state.pastLines = []; - state.futureLines = []; - }, - setShouldUseInpaintReplace: (state, action: PayloadAction) => { - state.shouldUseInpaintReplace = action.payload; - }, - setInpaintReplace: (state, action: PayloadAction) => { - state.inpaintReplace = action.payload; - }, - setShouldLockBoundingBox: (state, action: PayloadAction) => { - state.shouldLockBoundingBox = action.payload; - }, - toggleShouldLockBoundingBox: (state) => { - state.shouldLockBoundingBox = !state.shouldLockBoundingBox; - }, - setShouldShowBoundingBox: (state, action: PayloadAction) => { - state.shouldShowBoundingBox = action.payload; - }, - setIsTransformingBoundingBox: (state, action: PayloadAction) => { - state.isTransformingBoundingBox = action.payload; - }, - setIsMovingBoundingBox: (state, action: PayloadAction) => { - state.isMovingBoundingBox = action.payload; - }, - setIsMouseOverBoundingBox: (state, action: PayloadAction) => { - state.isMouseOverBoundingBox = action.payload; - }, - setIsSpacebarHeld: (state, action: PayloadAction) => { - state.isSpacebarHeld = action.payload; - }, - }, -}); - -export const { - setTool, - setBrushSize, - addLine, - addPointToCurrentLine, - setShouldInvertMask, - setShouldShowMask, - setShouldShowCheckboardTransparency, - setShouldShowBrushPreview, - setMaskColor, - clearMask, - clearImageToInpaint, - undo, - redo, - setCursorPosition, - setCanvasDimensions, - setImageToInpaint, - setBoundingBoxDimensions, - setBoundingBoxCoordinate, - setBoundingBoxPreviewFill, - setNeedsCache, - setStageScale, - toggleTool, - setShouldShowBoundingBox, - setShouldShowBoundingBoxFill, - setIsDrawing, - setShouldShowBrush, - setClearBrushHistory, - setShouldUseInpaintReplace, - setInpaintReplace, - setShouldLockBoundingBox, - toggleShouldLockBoundingBox, - setIsMovingBoundingBox, - setIsTransformingBoundingBox, - setIsMouseOverBoundingBox, - setIsSpacebarHeld, -} = inpaintingSlice.actions; - -export default inpaintingSlice.reducer; diff --git a/frontend/src/features/tabs/Inpainting/inpaintingSliceSelectors.ts b/frontend/src/features/tabs/Inpainting/inpaintingSliceSelectors.ts deleted file mode 100644 index 3d7022d018..0000000000 --- a/frontend/src/features/tabs/Inpainting/inpaintingSliceSelectors.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import _ from 'lodash'; -import { RootState } from '../../../app/store'; -import { activeTabNameSelector } from '../../options/optionsSelectors'; -import { OptionsState } from '../../options/optionsSlice'; -import { InpaintingState } from './inpaintingSlice'; -import { rgbaColorToRgbString } from './util/colorToString'; - -export const inpaintingCanvasLinesSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { lines, maskColor } = inpainting; - return { - lines, - maskColorString: rgbaColorToRgbString(maskColor), - }; - } -); - -export const inpaintingControlsSelector = createSelector( - [ - (state: RootState) => state.inpainting, - (state: RootState) => state.options, - activeTabNameSelector, - ], - (inpainting: InpaintingState, options: OptionsState, activeTabName) => { - const { - tool, - brushSize, - maskColor, - shouldInvertMask, - shouldShowMask, - shouldShowCheckboardTransparency, - lines, - pastLines, - futureLines, - shouldShowBoundingBoxFill, - } = inpainting; - - const { showDualDisplay } = options; - - return { - tool, - brushSize, - maskColor, - shouldInvertMask, - shouldShowMask, - shouldShowCheckboardTransparency, - canUndo: pastLines.length > 0, - canRedo: futureLines.length > 0, - isMaskEmpty: lines.length === 0, - activeTabName, - showDualDisplay, - shouldShowBoundingBoxFill, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: _.isEqual, - }, - } -); - -export const inpaintingCanvasSelector = createSelector( - (state: RootState) => state.inpainting, - (inpainting: InpaintingState) => { - const { - tool, - brushSize, - maskColor, - shouldInvertMask, - shouldShowMask, - shouldShowCheckboardTransparency, - imageToInpaint, - stageScale, - shouldShowBoundingBox, - shouldShowBoundingBoxFill, - isDrawing, - shouldLockBoundingBox, - boundingBoxDimensions, - isTransformingBoundingBox, - isMouseOverBoundingBox, - isMovingBoundingBox, - } = inpainting; - - let stageCursor: string | undefined = ''; - - if (isTransformingBoundingBox) { - stageCursor = undefined; - } else if (isMovingBoundingBox || isMouseOverBoundingBox) { - stageCursor = 'move'; - } else if (shouldShowMask) { - stageCursor = 'none'; - } else { - stageCursor = 'default'; - } - - return { - tool, - brushSize, - shouldInvertMask, - shouldShowMask, - shouldShowCheckboardTransparency, - maskColor, - imageToInpaint, - stageScale, - shouldShowBoundingBox, - shouldShowBoundingBoxFill, - isDrawing, - shouldLockBoundingBox, - boundingBoxDimensions, - isTransformingBoundingBox, - isModifyingBoundingBox: isTransformingBoundingBox || isMovingBoundingBox, - stageCursor, - isMouseOverBoundingBox, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: (a, b) => { - const { imageToInpaint: a_imageToInpaint, ...a_rest } = a; - const { imageToInpaint: b_imageToInpaint, ...b_rest } = b; - return ( - _.isEqual(a_rest, b_rest) && a_imageToInpaint == b_imageToInpaint - ); - }, - }, - } -); diff --git a/frontend/src/features/tabs/Inpainting/util/constants.ts b/frontend/src/features/tabs/Inpainting/util/constants.ts deleted file mode 100644 index 85fc3eb97c..0000000000 --- a/frontend/src/features/tabs/Inpainting/util/constants.ts +++ /dev/null @@ -1,10 +0,0 @@ -// widths of ants-style bounding box outline -export const DASH_WIDTH = 4; - -// speed of marching ants (lower is faster) -export const MARCHING_ANTS_SPEED = 30; - -// bounding box anchor size -export const TRANSFORMER_ANCHOR_SIZE = 15; - - diff --git a/frontend/src/features/tabs/Inpainting/util/generateMask.ts b/frontend/src/features/tabs/Inpainting/util/generateMask.ts deleted file mode 100644 index 11e4cc2f00..0000000000 --- a/frontend/src/features/tabs/Inpainting/util/generateMask.ts +++ /dev/null @@ -1,109 +0,0 @@ -import Konva from 'konva'; -import { IRect } from 'konva/lib/types'; -import { MaskLine } from '../inpaintingSlice'; - -/** - * Re-draws the mask canvas onto a new Konva stage. - */ -export const generateMaskCanvas = ( - image: HTMLImageElement, - lines: MaskLine[] -): { - stage: Konva.Stage; - layer: Konva.Layer; -} => { - const { width, height } = image; - - const offscreenContainer = document.createElement('div'); - - const stage = new Konva.Stage({ - container: offscreenContainer, - width: width, - height: height, - }); - - const layer = new Konva.Layer(); - - stage.add(layer); - - lines.forEach((line) => - layer.add( - new Konva.Line({ - points: line.points, - stroke: 'rgb(0,0,0)', - strokeWidth: line.strokeWidth * 2, - tension: 0, - lineCap: 'round', - lineJoin: 'round', - shadowForStrokeEnabled: false, - globalCompositeOperation: - line.tool === 'brush' ? 'source-over' : 'destination-out', - }) - ) - ); - - layer.draw(); - - offscreenContainer.remove(); - - return { stage, layer }; -}; - -/** - * Check if the bounding box region has only fully transparent pixels. - */ -export const checkIsRegionEmpty = ( - stage: Konva.Stage, - boundingBox: IRect -): boolean => { - const imageData = stage - .toCanvas() - .getContext('2d') - ?.getImageData( - boundingBox.x, - boundingBox.y, - boundingBox.width, - boundingBox.height - ); - - if (!imageData) { - throw new Error('Unable to get image data from generated canvas'); - } - - const pixelBuffer = new Uint32Array(imageData.data.buffer); - - return !pixelBuffer.some((color) => color !== 0); -}; - -/** - * Generating a mask image from InpaintingCanvas.tsx is not as simple - * as calling toDataURL() on the canvas, because the mask may be represented - * by colored lines or transparency, or the user may have inverted the mask - * display. - * - * So we need to regenerate the mask image by creating an offscreen canvas, - * drawing the mask and compositing everything correctly to output a valid - * mask image. - */ -const generateMask = ( - image: HTMLImageElement, - lines: MaskLine[], - boundingBox: IRect -): { maskDataURL: string; isMaskEmpty: boolean } => { - // create an offscreen canvas and add the mask to it - const { stage, layer } = generateMaskCanvas(image, lines); - - // check if the mask layer is empty - const isMaskEmpty = checkIsRegionEmpty(stage, boundingBox); - - // composite the image onto the mask layer - layer.add( - new Konva.Image({ image: image, globalCompositeOperation: 'source-out' }) - ); - - const maskDataURL = stage.toDataURL({ ...boundingBox }); - - return { maskDataURL, isMaskEmpty }; -}; - -export default generateMask; diff --git a/frontend/src/features/tabs/InvokeWorkarea.tsx b/frontend/src/features/tabs/InvokeWorkarea.tsx deleted file mode 100644 index d79f413720..0000000000 --- a/frontend/src/features/tabs/InvokeWorkarea.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { Tooltip } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { ReactNode } from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { VscSplitHorizontal } from 'react-icons/vsc'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; -import ImageGallery from '../gallery/ImageGallery'; -import { activeTabNameSelector } from '../options/optionsSelectors'; -import { OptionsState, setShowDualDisplay } from '../options/optionsSlice'; - -const workareaSelector = createSelector( - [(state: RootState) => state.options, activeTabNameSelector], - (options: OptionsState, activeTabName) => { - const { showDualDisplay, shouldPinOptionsPanel } = options; - return { showDualDisplay, shouldPinOptionsPanel, activeTabName }; - } -); - -type InvokeWorkareaProps = { - optionsPanel: ReactNode; - children: ReactNode; - styleClass?: string; -}; - -const InvokeWorkarea = (props: InvokeWorkareaProps) => { - const dispatch = useAppDispatch(); - const { optionsPanel, children, styleClass } = props; - const { showDualDisplay, activeTabName } = useAppSelector(workareaSelector); - - const handleDualDisplay = () => { - dispatch(setShowDualDisplay(!showDualDisplay)); - }; - - // Hotkeys - // Toggle split view - useHotkeys( - 'shift+j', - () => { - handleDualDisplay(); - }, - { - enabled: activeTabName === 'inpainting', - }, - [showDualDisplay] - ); - - return ( -
-
- {optionsPanel} -
- {children} - {activeTabName === 'inpainting' && ( - -
- -
-
- )} -
- -
-
- ); -}; - -export default InvokeWorkarea; diff --git a/frontend/src/features/tabs/TextToImage/TextToImagePanel.tsx b/frontend/src/features/tabs/TextToImage/TextToImagePanel.tsx deleted file mode 100644 index 58ed61525c..0000000000 --- a/frontend/src/features/tabs/TextToImage/TextToImagePanel.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { Feature } from '../../../app/features'; -import { RootState, useAppSelector } from '../../../app/store'; -import FaceRestoreHeader from '../../options/AdvancedOptions/FaceRestore/FaceRestoreHeader'; -import FaceRestoreOptions from '../../options/AdvancedOptions/FaceRestore/FaceRestoreOptions'; -import OutputHeader from '../../options/AdvancedOptions/Output/OutputHeader'; -import OutputOptions from '../../options/AdvancedOptions/Output/OutputOptions'; -import SeedHeader from '../../options/AdvancedOptions/Seed/SeedHeader'; -import SeedOptions from '../../options/AdvancedOptions/Seed/SeedOptions'; -import UpscaleHeader from '../../options/AdvancedOptions/Upscale/UpscaleHeader'; -import UpscaleOptions from '../../options/AdvancedOptions/Upscale/UpscaleOptions'; -import VariationsHeader from '../../options/AdvancedOptions/Variations/VariationsHeader'; -import VariationsOptions from '../../options/AdvancedOptions/Variations/VariationsOptions'; -import MainAdvancedOptionsCheckbox from '../../options/MainOptions/MainAdvancedOptionsCheckbox'; -import MainOptions from '../../options/MainOptions/MainOptions'; -import OptionsAccordion from '../../options/OptionsAccordion'; -import ProcessButtons from '../../options/ProcessButtons/ProcessButtons'; -import PromptInput from '../../options/PromptInput/PromptInput'; -import InvokeOptionsPanel from '../InvokeOptionsPanel'; - -export default function TextToImagePanel() { - const showAdvancedOptions = useAppSelector( - (state: RootState) => state.options.showAdvancedOptions - ); - - const textToImageAccordions = { - seed: { - header: , - feature: Feature.SEED, - options: , - }, - variations: { - header: , - feature: Feature.VARIATIONS, - options: , - }, - face_restore: { - header: , - feature: Feature.FACE_CORRECTION, - options: , - }, - upscale: { - header: , - feature: Feature.UPSCALE, - options: , - }, - other: { - header: , - feature: Feature.OTHER, - options: , - }, - }; - - return ( - - - - - - {showAdvancedOptions ? ( - - ) : null} - - ); -} diff --git a/frontend/src/features/tabs/components/FloatingButton.scss b/frontend/src/features/tabs/components/FloatingButton.scss new file mode 100644 index 0000000000..0208f30a7f --- /dev/null +++ b/frontend/src/features/tabs/components/FloatingButton.scss @@ -0,0 +1,55 @@ +@use '../../../styles/Mixins/' as *; + +.floating-show-hide-button { + position: absolute; + top: 50%; + transform: translate(0, -50%); + z-index: 20; + padding: 0; + background-color: red !important; + + &.left { + left: 0; + border-radius: 0 0.5rem 0.5rem 0; + } + + &.right { + right: 0; + border-radius: 0.5rem 0 0 0.5rem; + } + + @include Button( + $btn-width: 2rem, + $btn-height: 12rem, + $icon-size: 20px, + $btn-color: var(--btn-btn-base-color), + $btn-color-hover: var(--btn-btn-base-color-hover) + ); +} + +.show-hide-button-options { + position: absolute; + transform: translate(0, -50%); + z-index: 20; + min-width: 2rem; + + top: 50%; + left: calc(42px + 2rem); + + border-radius: 0 0.5rem 0.5rem 0; + + display: flex; + flex-direction: column; + row-gap: 0.5rem; + + button { + border-radius: 0 0.3rem 0.3rem 0; + } +} + +.show-hide-button-gallery { + padding-left: 0.75rem; + padding-right: 0.75rem; + background-color: var(--background-color) !important; + // filter: drop-shadow(0.5rem 0px 1rem var(--floating-button-drop-shadow-color)); +} diff --git a/frontend/src/features/tabs/components/FloatingGalleryButton.tsx b/frontend/src/features/tabs/components/FloatingGalleryButton.tsx new file mode 100644 index 0000000000..1f68739783 --- /dev/null +++ b/frontend/src/features/tabs/components/FloatingGalleryButton.tsx @@ -0,0 +1,56 @@ +import { MdPhotoLibrary } from 'react-icons/md'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { setShouldShowGallery } from 'features/gallery/store/gallerySlice'; +import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { floatingSelector } from './FloatingOptionsPanelButtons'; +import { setShouldShowOptionsPanel } from 'features/options/store/optionsSlice'; + +const FloatingGalleryButton = () => { + const dispatch = useAppDispatch(); + const { + shouldShowGallery, + shouldShowGalleryButton, + shouldPinGallery, + shouldShowOptionsPanel, + shouldPinOptionsPanel, + } = useAppSelector(floatingSelector); + + const handleShowGallery = () => { + dispatch(setShouldShowGallery(true)); + if (shouldPinGallery) { + dispatch(setDoesCanvasNeedScaling(true)); + } + }; + + useHotkeys( + 'f', + () => { + if (shouldShowGallery || shouldShowOptionsPanel) { + dispatch(setShouldShowOptionsPanel(false)); + dispatch(setShouldShowGallery(false)); + } else { + dispatch(setShouldShowOptionsPanel(true)); + dispatch(setShouldShowGallery(true)); + } + if (shouldPinGallery || shouldPinOptionsPanel) + setTimeout(() => dispatch(setDoesCanvasNeedScaling(true)), 400); + }, + [shouldShowGallery, shouldShowOptionsPanel] + ); + + return shouldShowGalleryButton ? ( + + + + ) : null; +}; + +export default FloatingGalleryButton; diff --git a/frontend/src/features/tabs/components/FloatingOptionsPanelButtons.tsx b/frontend/src/features/tabs/components/FloatingOptionsPanelButtons.tsx new file mode 100644 index 0000000000..f29abeb38d --- /dev/null +++ b/frontend/src/features/tabs/components/FloatingOptionsPanelButtons.tsx @@ -0,0 +1,114 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { + OptionsState, + setShouldShowOptionsPanel, +} from 'features/options/store/optionsSlice'; +import CancelButton from 'features/options/components/ProcessButtons/CancelButton'; +import InvokeButton from 'features/options/components/ProcessButtons/InvokeButton'; +import _ from 'lodash'; +import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice'; +import { FaSlidersH } from 'react-icons/fa'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { useHotkeys } from 'react-hotkeys-hook'; +import { + GalleryState, + setShouldShowGallery, +} from 'features/gallery/store/gallerySlice'; + +export const floatingSelector = createSelector( + [ + (state: RootState) => state.options, + (state: RootState) => state.gallery, + activeTabNameSelector, + ], + (options: OptionsState, gallery: GalleryState, activeTabName) => { + const { + shouldPinOptionsPanel, + shouldShowOptionsPanel, + shouldHoldOptionsPanelOpen, + } = options; + + const { shouldShowGallery, shouldPinGallery, shouldHoldGalleryOpen } = + gallery; + + const shouldShowOptionsPanelButton = + !( + shouldShowOptionsPanel || + (shouldHoldOptionsPanelOpen && !shouldPinOptionsPanel) + ) && ['txt2img', 'img2img', 'unifiedCanvas'].includes(activeTabName); + + const shouldShowGalleryButton = + !(shouldShowGallery || (shouldHoldGalleryOpen && !shouldPinGallery)) && + ['txt2img', 'img2img', 'unifiedCanvas'].includes(activeTabName); + + return { + shouldPinOptionsPanel, + shouldShowProcessButtons: + !shouldPinOptionsPanel || !shouldShowOptionsPanel, + shouldShowOptionsPanelButton, + shouldShowOptionsPanel, + shouldShowGallery, + shouldPinGallery, + shouldShowGalleryButton, + }; + }, + { memoizeOptions: { resultEqualityCheck: _.isEqual } } +); + +const FloatingOptionsPanelButtons = () => { + const dispatch = useAppDispatch(); + const { + shouldShowOptionsPanel, + shouldShowOptionsPanelButton, + shouldShowProcessButtons, + shouldPinOptionsPanel, + shouldShowGallery, + shouldPinGallery, + } = useAppSelector(floatingSelector); + + const handleShowOptionsPanel = () => { + dispatch(setShouldShowOptionsPanel(true)); + if (shouldPinOptionsPanel) { + setTimeout(() => dispatch(setDoesCanvasNeedScaling(true)), 400); + } + }; + + useHotkeys( + 'f', + () => { + if (shouldShowGallery || shouldShowOptionsPanel) { + dispatch(setShouldShowOptionsPanel(false)); + dispatch(setShouldShowGallery(false)); + } else { + dispatch(setShouldShowOptionsPanel(true)); + dispatch(setShouldShowGallery(true)); + } + if (shouldPinGallery || shouldPinOptionsPanel) + setTimeout(() => dispatch(setDoesCanvasNeedScaling(true)), 400); + }, + [shouldShowGallery, shouldShowOptionsPanel] + ); + + return shouldShowOptionsPanelButton ? ( +
+ + + + {shouldShowProcessButtons && ( + <> + + + + )} +
+ ) : null; +}; + +export default FloatingOptionsPanelButtons; diff --git a/frontend/src/features/tabs/ImageToImage/ImageToImage.scss b/frontend/src/features/tabs/components/ImageToImage/ImageToImage.scss similarity index 76% rename from frontend/src/features/tabs/ImageToImage/ImageToImage.scss rename to frontend/src/features/tabs/components/ImageToImage/ImageToImage.scss index ecc488f3d3..edb307941b 100644 --- a/frontend/src/features/tabs/ImageToImage/ImageToImage.scss +++ b/frontend/src/features/tabs/components/ImageToImage/ImageToImage.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .image-to-image-area { display: flex; @@ -9,11 +9,12 @@ } .image-to-image-strength-main-option { - display: grid; - grid-template-columns: none !important; + display: flex; + row-gap: 0.5rem !important; - .number-input-entry { - padding: 0 1rem; + .invokeai__slider-component-label { + color: var(--text-color-secondary); + font-size: 0.9rem !important; } } diff --git a/frontend/src/features/tabs/ImageToImage/ImageToImageDisplay.tsx b/frontend/src/features/tabs/components/ImageToImage/ImageToImageDisplay.tsx similarity index 78% rename from frontend/src/features/tabs/ImageToImage/ImageToImageDisplay.tsx rename to frontend/src/features/tabs/components/ImageToImage/ImageToImageDisplay.tsx index aa217069aa..90de5fe459 100644 --- a/frontend/src/features/tabs/ImageToImage/ImageToImageDisplay.tsx +++ b/frontend/src/features/tabs/components/ImageToImage/ImageToImageDisplay.tsx @@ -1,6 +1,6 @@ -import { RootState, useAppSelector } from '../../../app/store'; -import ImageUploadButton from '../../../common/components/ImageUploaderButton'; -import CurrentImageDisplay from '../../gallery/CurrentImageDisplay'; +import { RootState, useAppSelector } from 'app/store'; +import ImageUploadButton from 'common/components/ImageUploaderButton'; +import CurrentImageDisplay from 'features/gallery/components/CurrentImageDisplay'; import InitImagePreview from './InitImagePreview'; const ImageToImageDisplay = () => { diff --git a/frontend/src/features/tabs/components/ImageToImage/ImageToImagePanel.tsx b/frontend/src/features/tabs/components/ImageToImage/ImageToImagePanel.tsx new file mode 100644 index 0000000000..3b85b1fbee --- /dev/null +++ b/frontend/src/features/tabs/components/ImageToImage/ImageToImagePanel.tsx @@ -0,0 +1,63 @@ +import { Feature } from 'app/features'; +import FaceRestoreOptions from 'features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions'; +import FaceRestoreToggle from 'features/options/components/AdvancedOptions/FaceRestore/FaceRestoreToggle'; +import ImageFit from 'features/options/components/AdvancedOptions/ImageToImage/ImageFit'; +import ImageToImageStrength from 'features/options/components/AdvancedOptions/ImageToImage/ImageToImageStrength'; +import OutputOptions from 'features/options/components/AdvancedOptions/Output/OutputOptions'; +import SeedOptions from 'features/options/components/AdvancedOptions/Seed/SeedOptions'; +import UpscaleOptions from 'features/options/components/AdvancedOptions/Upscale/UpscaleOptions'; +import UpscaleToggle from 'features/options/components/AdvancedOptions/Upscale/UpscaleToggle'; +import GenerateVariationsToggle from 'features/options/components/AdvancedOptions/Variations/GenerateVariations'; +import VariationsOptions from 'features/options/components/AdvancedOptions/Variations/VariationsOptions'; +import MainOptions from 'features/options/components/MainOptions/MainOptions'; +import OptionsAccordion from 'features/options/components/OptionsAccordion'; +import ProcessButtons from 'features/options/components/ProcessButtons/ProcessButtons'; +import PromptInput from 'features/options/components/PromptInput/PromptInput'; +import InvokeOptionsPanel from 'features/tabs/components/InvokeOptionsPanel'; + +export default function ImageToImagePanel() { + const imageToImageAccordions = { + seed: { + header: 'Seed', + feature: Feature.SEED, + content: , + }, + variations: { + header: 'Variations', + feature: Feature.VARIATIONS, + content: , + additionalHeaderComponents: , + }, + face_restore: { + header: 'Face Restoration', + feature: Feature.FACE_CORRECTION, + content: , + additionalHeaderComponents: , + }, + upscale: { + header: 'Upscaling', + feature: Feature.UPSCALE, + content: , + additionalHeaderComponents: , + }, + other: { + header: 'Other Options', + feature: Feature.OTHER, + content: , + }, + }; + + return ( + + + + + + + + + ); +} diff --git a/frontend/src/features/tabs/ImageToImage/InitImagePreview.tsx b/frontend/src/features/tabs/components/ImageToImage/InitImagePreview.tsx similarity index 83% rename from frontend/src/features/tabs/ImageToImage/InitImagePreview.tsx rename to frontend/src/features/tabs/components/ImageToImage/InitImagePreview.tsx index 5b2b8b4eb1..25cc602f7d 100644 --- a/frontend/src/features/tabs/ImageToImage/InitImagePreview.tsx +++ b/frontend/src/features/tabs/components/ImageToImage/InitImagePreview.tsx @@ -1,8 +1,7 @@ import { Image, useToast } from '@chakra-ui/react'; -import { SyntheticEvent } from 'react'; -import { RootState, useAppDispatch, useAppSelector } from '../../../app/store'; -import ImageUploaderIconButton from '../../../common/components/ImageUploaderIconButton'; -import { clearInitialImage } from '../../options/optionsSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import ImageUploaderIconButton from 'common/components/ImageUploaderIconButton'; +import { clearInitialImage } from 'features/options/store/optionsSlice'; export default function InitImagePreview() { const initialImage = useAppSelector( diff --git a/frontend/src/features/tabs/ImageToImage/InitialImageOverlay.tsx b/frontend/src/features/tabs/components/ImageToImage/InitialImageOverlay.tsx similarity index 87% rename from frontend/src/features/tabs/ImageToImage/InitialImageOverlay.tsx rename to frontend/src/features/tabs/components/ImageToImage/InitialImageOverlay.tsx index 0c342821cf..90f4f64709 100644 --- a/frontend/src/features/tabs/ImageToImage/InitialImageOverlay.tsx +++ b/frontend/src/features/tabs/components/ImageToImage/InitialImageOverlay.tsx @@ -1,6 +1,6 @@ import { Image } from '@chakra-ui/react'; import React from 'react'; -import { RootState, useAppSelector } from '../../../app/store'; +import { RootState, useAppSelector } from 'app/store'; export default function InitialImageOverlay() { const initialImage = useAppSelector( diff --git a/frontend/src/features/tabs/ImageToImage/index.tsx b/frontend/src/features/tabs/components/ImageToImage/index.tsx similarity index 81% rename from frontend/src/features/tabs/ImageToImage/index.tsx rename to frontend/src/features/tabs/components/ImageToImage/index.tsx index 5363c95f06..e1f4747176 100644 --- a/frontend/src/features/tabs/ImageToImage/index.tsx +++ b/frontend/src/features/tabs/components/ImageToImage/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import ImageToImagePanel from './ImageToImagePanel'; import ImageToImageDisplay from './ImageToImageDisplay'; -import InvokeWorkarea from '../InvokeWorkarea'; +import InvokeWorkarea from 'features/tabs/components/InvokeWorkarea'; export default function ImageToImageWorkarea() { return ( diff --git a/frontend/src/features/tabs/InvokeOptionsPanel.scss b/frontend/src/features/tabs/components/InvokeOptionsPanel.scss similarity index 94% rename from frontend/src/features/tabs/InvokeOptionsPanel.scss rename to frontend/src/features/tabs/components/InvokeOptionsPanel.scss index 5a50c5f79d..b5be76a96d 100644 --- a/frontend/src/features/tabs/InvokeOptionsPanel.scss +++ b/frontend/src/features/tabs/components/InvokeOptionsPanel.scss @@ -1,4 +1,4 @@ -@use '../../styles/Mixins/' as *; +@use '../../../styles/Mixins/' as *; .options-panel-wrapper-enter { transform: translateX(-150%); @@ -35,7 +35,7 @@ row-gap: 1rem; height: 100%; @include HideScrollbar; - background-color: var(--background-color) !important; + background-color: var(--background-color); } &[data-pinned='false'] { diff --git a/frontend/src/features/tabs/InvokeOptionsPanel.tsx b/frontend/src/features/tabs/components/InvokeOptionsPanel.tsx similarity index 77% rename from frontend/src/features/tabs/InvokeOptionsPanel.tsx rename to frontend/src/features/tabs/components/InvokeOptionsPanel.tsx index 5a60a93e18..0656ae717b 100644 --- a/frontend/src/features/tabs/InvokeOptionsPanel.tsx +++ b/frontend/src/features/tabs/components/InvokeOptionsPanel.tsx @@ -1,21 +1,20 @@ import { Tooltip } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import _ from 'lodash'; -import { MouseEvent, ReactNode, useCallback, useRef } from 'react'; +import React, { ReactNode, useCallback, useEffect, useRef } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { BsPinAngle, BsPinAngleFill } from 'react-icons/bs'; import { CSSTransition } from 'react-transition-group'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; -import useClickOutsideWatcher from '../../common/hooks/useClickOutsideWatcher'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; import { OptionsState, setOptionsPanelScrollPosition, setShouldHoldOptionsPanelOpen, setShouldPinOptionsPanel, setShouldShowOptionsPanel, -} from '../options/optionsSlice'; -import { setNeedsCache } from './Inpainting/inpaintingSlice'; -import InvokeAILogo from '../../assets/images/logo.png'; +} from 'features/options/store/optionsSlice'; +import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice'; +import InvokeAILogo from 'assets/images/logo.png'; type Props = { children: ReactNode }; @@ -63,16 +62,21 @@ const InvokeOptionsPanel = (props: Props) => { 'o', () => { dispatch(setShouldShowOptionsPanel(!shouldShowOptionsPanel)); + shouldPinOptionsPanel && + setTimeout(() => dispatch(setDoesCanvasNeedScaling(true)), 400); }, - [shouldShowOptionsPanel] + [shouldShowOptionsPanel, shouldPinOptionsPanel] ); useHotkeys( 'esc', () => { - if (shouldPinOptionsPanel) return; dispatch(setShouldShowOptionsPanel(false)); }, + { + enabled: () => !shouldPinOptionsPanel, + preventDefault: true, + }, [shouldPinOptionsPanel] ); @@ -80,6 +84,7 @@ const InvokeOptionsPanel = (props: Props) => { 'shift+o', () => { handleClickPinOptionsPanel(); + dispatch(setDoesCanvasNeedScaling(true)); }, [shouldPinOptionsPanel] ); @@ -95,15 +100,8 @@ const InvokeOptionsPanel = (props: Props) => { ); dispatch(setShouldShowOptionsPanel(false)); dispatch(setShouldHoldOptionsPanelOpen(false)); - // dispatch(setNeedsCache(true)); }, [dispatch, shouldPinOptionsPanel]); - useClickOutsideWatcher( - optionsPanelRef, - handleCloseOptionsPanel, - !shouldPinOptionsPanel - ); - const setCloseOptionsPanelTimer = () => { timeoutIdRef.current = window.setTimeout( () => handleCloseOptionsPanel(), @@ -117,9 +115,24 @@ const InvokeOptionsPanel = (props: Props) => { const handleClickPinOptionsPanel = () => { dispatch(setShouldPinOptionsPanel(!shouldPinOptionsPanel)); - dispatch(setNeedsCache(true)); + dispatch(setDoesCanvasNeedScaling(true)); }; + useEffect(() => { + function handleClickOutside(e: MouseEvent) { + if ( + optionsPanelRef.current && + !optionsPanelRef.current.contains(e.target as Node) + ) { + handleCloseOptionsPanel(); + } + } + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [handleCloseOptionsPanel]); + return ( { onMouseOver={ !shouldPinOptionsPanel ? cancelCloseOptionsPanelTimer : undefined } + style={{ + borderRight: !shouldPinOptionsPanel + ? '0.3rem solid var(--tab-list-text-inactive)' + : '', + }} >
) => { + onMouseLeave={(e: React.MouseEvent) => { if (e.target !== optionsPanelContainerRef.current) { cancelCloseOptionsPanelTimer(); } else { diff --git a/frontend/src/features/tabs/InvokeTabs.scss b/frontend/src/features/tabs/components/InvokeTabs.scss similarity index 92% rename from frontend/src/features/tabs/InvokeTabs.scss rename to frontend/src/features/tabs/components/InvokeTabs.scss index da837a20ee..2a0212bd1f 100644 --- a/frontend/src/features/tabs/InvokeTabs.scss +++ b/frontend/src/features/tabs/components/InvokeTabs.scss @@ -1,7 +1,7 @@ -@use '../../styles/Mixins/' as *; +@use '../../../styles/Mixins/' as *; .app-tabs { - display: grid !important; + display: grid; grid-template-columns: min-content auto; column-gap: 1rem; // height: 100%; diff --git a/frontend/src/features/tabs/InvokeTabs.tsx b/frontend/src/features/tabs/components/InvokeTabs.tsx similarity index 64% rename from frontend/src/features/tabs/InvokeTabs.tsx rename to frontend/src/features/tabs/components/InvokeTabs.tsx index 8cbd0df124..8d6204edc1 100644 --- a/frontend/src/features/tabs/InvokeTabs.tsx +++ b/frontend/src/features/tabs/components/InvokeTabs.tsx @@ -2,21 +2,24 @@ import { Tab, TabPanel, TabPanels, Tabs, Tooltip } from '@chakra-ui/react'; import _ from 'lodash'; import React, { ReactElement } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; -import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; -import NodesWIP from '../../common/components/WorkInProgress/NodesWIP'; -import OutpaintingWIP from '../../common/components/WorkInProgress/OutpaintingWIP'; -import { PostProcessingWIP } from '../../common/components/WorkInProgress/PostProcessingWIP'; -import ImageToImageIcon from '../../common/icons/ImageToImageIcon'; -import InpaintIcon from '../../common/icons/InpaintIcon'; -import NodesIcon from '../../common/icons/NodesIcon'; -import OutpaintIcon from '../../common/icons/OutpaintIcon'; -import PostprocessingIcon from '../../common/icons/PostprocessingIcon'; -import TextToImageIcon from '../../common/icons/TextToImageIcon'; -import { setActiveTab } from '../options/optionsSlice'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import NodesWIP from 'common/components/WorkInProgress/NodesWIP'; +import { PostProcessingWIP } from 'common/components/WorkInProgress/PostProcessingWIP'; +import ImageToImageIcon from 'common/icons/ImageToImageIcon'; +import NodesIcon from 'common/icons/NodesIcon'; +import PostprocessingIcon from 'common/icons/PostprocessingIcon'; +import TextToImageIcon from 'common/icons/TextToImageIcon'; +import { + setActiveTab, + setIsLightBoxOpen, +} from 'features/options/store/optionsSlice'; import ImageToImageWorkarea from './ImageToImage'; -import InpaintingWorkarea from './Inpainting'; -import { setNeedsCache } from './Inpainting/inpaintingSlice'; import TextToImageWorkarea from './TextToImage'; +import Lightbox from 'features/lightbox/components/Lightbox'; +import UnifiedCanvasWorkarea from './UnifiedCanvas/UnifiedCanvasWorkarea'; +import UnifiedCanvasIcon from 'common/icons/UnifiedCanvasIcon'; +import TrainingWIP from 'common/components/WorkInProgress/Training'; +import TrainingIcon from 'common/icons/TrainingIcon'; export const tabDict = { txt2img: { @@ -29,15 +32,10 @@ export const tabDict = { workarea: , tooltip: 'Image To Image', }, - inpainting: { - title: , - workarea: , - tooltip: 'Inpainting', - }, - outpainting: { - title: , - workarea: , - tooltip: 'Outpainting', + unifiedCanvas: { + title: , + workarea: , + tooltip: 'Unified Canvas', }, nodes: { title: , @@ -49,6 +47,11 @@ export const tabDict = { workarea: , tooltip: 'Post Processing', }, + training: { + title: , + workarea: , + tooltip: 'Training', + }, }; // Array where index maps to the key of tabDict @@ -62,6 +65,10 @@ export default function InvokeTabs() { const activeTab = useAppSelector( (state: RootState) => state.options.activeTab ); + const isLightBoxOpen = useAppSelector( + (state: RootState) => state.options.isLightBoxOpen + ); + const dispatch = useAppDispatch(); useHotkeys('1', () => { @@ -74,7 +81,6 @@ export default function InvokeTabs() { useHotkeys('3', () => { dispatch(setActiveTab(2)); - dispatch(setNeedsCache(true)); }); useHotkeys('4', () => { @@ -89,6 +95,15 @@ export default function InvokeTabs() { dispatch(setActiveTab(5)); }); + // Lightbox Hotkey + useHotkeys( + 'z', + () => { + dispatch(setIsLightBoxOpen(!isLightBoxOpen)); + }, + [isLightBoxOpen] + ); + const renderTabs = () => { const tabsToRender: ReactElement[] = []; Object.keys(tabDict).forEach((key) => { @@ -127,11 +142,12 @@ export default function InvokeTabs() { index={activeTab} onChange={(index: number) => { dispatch(setActiveTab(index)); - dispatch(setNeedsCache(true)); }} >
{renderTabs()}
- {renderTabPanels()} + + {isLightBoxOpen ? : renderTabPanels()} + ); } diff --git a/frontend/src/features/tabs/InvokeWorkarea.scss b/frontend/src/features/tabs/components/InvokeWorkarea.scss similarity index 85% rename from frontend/src/features/tabs/InvokeWorkarea.scss rename to frontend/src/features/tabs/components/InvokeWorkarea.scss index 38ccdc34f8..a3821d9a77 100644 --- a/frontend/src/features/tabs/InvokeWorkarea.scss +++ b/frontend/src/features/tabs/components/InvokeWorkarea.scss @@ -1,4 +1,4 @@ -@use '../../styles/Mixins/' as *; +@use '../../../styles/Mixins/' as *; .workarea-wrapper { position: relative; @@ -22,6 +22,12 @@ grid-template-columns: 1fr 1fr; background-color: var(--background-color-secondary); border-radius: 0.5rem; + .workarea-split-view-left { + padding-right: 0.5rem; + } + .workarea-split-view-right { + padding-left: 0.5rem; + } } .workarea-single-view { @@ -42,12 +48,6 @@ border-radius: 0.5rem; padding: 1rem; } - .workarea-split-view-left { - padding-right: 0.5rem; - } - .workarea-split-view-right { - padding-left: 0.5rem; - } } } .workarea-split-button { @@ -56,7 +56,7 @@ padding: 0.5rem; top: 0; right: 0; - z-index: 20; + // z-index: 20; &[data-selected='true'] { top: 0; diff --git a/frontend/src/features/tabs/components/InvokeWorkarea.tsx b/frontend/src/features/tabs/components/InvokeWorkarea.tsx new file mode 100644 index 0000000000..aa21282669 --- /dev/null +++ b/frontend/src/features/tabs/components/InvokeWorkarea.tsx @@ -0,0 +1,101 @@ +import { Tooltip } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { DragEvent, ReactNode } from 'react'; +import { VscSplitHorizontal } from 'react-icons/vsc'; +import { RootState, useAppDispatch, useAppSelector } from 'app/store'; +import ImageGallery from 'features/gallery/components/ImageGallery'; +import { activeTabNameSelector } from 'features/options/store/optionsSelectors'; +import { + OptionsState, + setInitialImage, + setShowDualDisplay, +} from 'features/options/store/optionsSlice'; +import { + setDoesCanvasNeedScaling, + setInitialCanvasImage, +} from 'features/canvas/store/canvasSlice'; +import _ from 'lodash'; +import useGetImageByUuid from 'features/gallery/hooks/useGetImageByUuid'; + +const workareaSelector = createSelector( + [(state: RootState) => state.options, activeTabNameSelector], + (options: OptionsState, activeTabName) => { + const { showDualDisplay, shouldPinOptionsPanel, isLightBoxOpen } = options; + return { + showDualDisplay, + shouldPinOptionsPanel, + isLightBoxOpen, + shouldShowDualDisplayButton: ['inpainting'].includes(activeTabName), + activeTabName, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +type InvokeWorkareaProps = { + optionsPanel: ReactNode; + children: ReactNode; + styleClass?: string; +}; + +const InvokeWorkarea = (props: InvokeWorkareaProps) => { + const dispatch = useAppDispatch(); + const { optionsPanel, children, styleClass } = props; + const { + activeTabName, + showDualDisplay, + isLightBoxOpen, + shouldShowDualDisplayButton, + } = useAppSelector(workareaSelector); + + const getImageByUuid = useGetImageByUuid(); + + const handleDualDisplay = () => { + dispatch(setShowDualDisplay(!showDualDisplay)); + dispatch(setDoesCanvasNeedScaling(true)); + }; + + const handleDrop = (e: DragEvent) => { + const uuid = e.dataTransfer.getData('invokeai/imageUuid'); + const image = getImageByUuid(uuid); + if (!image) return; + if (activeTabName === 'img2img') { + dispatch(setInitialImage(image)); + } else if (activeTabName === 'unifiedCanvas') { + dispatch(setInitialCanvasImage(image)); + } + }; + + return ( +
+
+ {optionsPanel} +
+ {children} + {shouldShowDualDisplayButton && ( + +
+ +
+
+ )} +
+ {!isLightBoxOpen && } +
+
+ ); +}; + +export default InvokeWorkarea; diff --git a/frontend/src/features/tabs/TextToImage/TextToImage.scss b/frontend/src/features/tabs/components/TextToImage/TextToImage.scss similarity index 59% rename from frontend/src/features/tabs/TextToImage/TextToImage.scss rename to frontend/src/features/tabs/components/TextToImage/TextToImage.scss index b4100d6d91..65cfb8a2bc 100644 --- a/frontend/src/features/tabs/TextToImage/TextToImage.scss +++ b/frontend/src/features/tabs/components/TextToImage/TextToImage.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .text-to-image-area { padding: 1rem; diff --git a/frontend/src/features/tabs/TextToImage/TextToImageDisplay.tsx b/frontend/src/features/tabs/components/TextToImage/TextToImageDisplay.tsx similarity index 73% rename from frontend/src/features/tabs/TextToImage/TextToImageDisplay.tsx rename to frontend/src/features/tabs/components/TextToImage/TextToImageDisplay.tsx index 4ea9736f35..36cd60fd36 100644 --- a/frontend/src/features/tabs/TextToImage/TextToImageDisplay.tsx +++ b/frontend/src/features/tabs/components/TextToImage/TextToImageDisplay.tsx @@ -1,4 +1,4 @@ -import CurrentImageDisplay from '../../gallery/CurrentImageDisplay'; +import CurrentImageDisplay from 'features/gallery/components/CurrentImageDisplay'; const TextToImageDisplay = () => { return ( diff --git a/frontend/src/features/tabs/components/TextToImage/TextToImagePanel.tsx b/frontend/src/features/tabs/components/TextToImage/TextToImagePanel.tsx new file mode 100644 index 0000000000..162bce32b1 --- /dev/null +++ b/frontend/src/features/tabs/components/TextToImage/TextToImagePanel.tsx @@ -0,0 +1,56 @@ +import { Feature } from 'app/features'; +import FaceRestoreOptions from 'features/options/components/AdvancedOptions/FaceRestore/FaceRestoreOptions'; +import FaceRestoreToggle from 'features/options/components/AdvancedOptions/FaceRestore/FaceRestoreToggle'; +import OutputOptions from 'features/options/components/AdvancedOptions/Output/OutputOptions'; +import SeedOptions from 'features/options/components/AdvancedOptions/Seed/SeedOptions'; +import UpscaleOptions from 'features/options/components/AdvancedOptions/Upscale/UpscaleOptions'; +import UpscaleToggle from 'features/options/components/AdvancedOptions/Upscale/UpscaleToggle'; +import GenerateVariationsToggle from 'features/options/components/AdvancedOptions/Variations/GenerateVariations'; +import VariationsOptions from 'features/options/components/AdvancedOptions/Variations/VariationsOptions'; +import MainOptions from 'features/options/components/MainOptions/MainOptions'; +import OptionsAccordion from 'features/options/components/OptionsAccordion'; +import ProcessButtons from 'features/options/components/ProcessButtons/ProcessButtons'; +import PromptInput from 'features/options/components/PromptInput/PromptInput'; +import InvokeOptionsPanel from 'features/tabs/components/InvokeOptionsPanel'; + +export default function TextToImagePanel() { + const textToImageAccordions = { + seed: { + header: 'Seed', + feature: Feature.SEED, + content: , + }, + variations: { + header: 'Variations', + feature: Feature.VARIATIONS, + content: , + additionalHeaderComponents: , + }, + face_restore: { + header: 'Face Restoration', + feature: Feature.FACE_CORRECTION, + content: , + additionalHeaderComponents: , + }, + upscale: { + header: 'Upscaling', + feature: Feature.UPSCALE, + content: , + additionalHeaderComponents: , + }, + other: { + header: 'Other Options', + feature: Feature.OTHER, + content: , + }, + }; + + return ( + + + + + + + ); +} diff --git a/frontend/src/features/tabs/TextToImage/index.tsx b/frontend/src/features/tabs/components/TextToImage/index.tsx similarity index 80% rename from frontend/src/features/tabs/TextToImage/index.tsx rename to frontend/src/features/tabs/components/TextToImage/index.tsx index 7aaceca833..c5b599e84a 100644 --- a/frontend/src/features/tabs/TextToImage/index.tsx +++ b/frontend/src/features/tabs/components/TextToImage/index.tsx @@ -1,5 +1,5 @@ import TextToImagePanel from './TextToImagePanel'; -import InvokeWorkarea from '../InvokeWorkarea'; +import InvokeWorkarea from 'features/tabs/components/InvokeWorkarea'; import TextToImageDisplay from './TextToImageDisplay'; export default function TextToImageWorkarea() { diff --git a/frontend/src/features/tabs/Inpainting/Inpainting.scss b/frontend/src/features/tabs/components/UnifiedCanvas/CanvasWorkarea.scss similarity index 71% rename from frontend/src/features/tabs/Inpainting/Inpainting.scss rename to frontend/src/features/tabs/components/UnifiedCanvas/CanvasWorkarea.scss index de5871a080..dbeced2f02 100644 --- a/frontend/src/features/tabs/Inpainting/Inpainting.scss +++ b/frontend/src/features/tabs/components/UnifiedCanvas/CanvasWorkarea.scss @@ -1,4 +1,4 @@ -@use '../../../styles/Mixins/' as *; +@use '../../../../styles/Mixins/' as *; .inpainting-main-area { display: flex; @@ -30,7 +30,7 @@ } .inpainting-color-picker { - margin-left: 1rem !important; + margin-left: 1rem; } .inpainting-brush-options { @@ -44,6 +44,7 @@ display: flex; flex-direction: column; align-items: center; + justify-content: center; row-gap: 1rem; width: 100%; height: 100%; @@ -69,8 +70,13 @@ } .inpainting-canvas-stage { + outline: none; border-radius: 0.5rem; + box-shadow: 0px 0px 0px 1px var(--border-color-light); + overflow: hidden; + canvas { + outline: none; border-radius: 0.5rem; } } @@ -80,3 +86,19 @@ .inpainting-options-btn { min-height: 2rem; } + +.canvas-status-text { + position: absolute; + top: 0; + left: 0; + background-color: var(--background-color); + opacity: 0.65; + display: flex; + flex-direction: column; + font-size: 0.8rem; + padding: 0.25rem; + min-width: 12rem; + border-radius: 0.25rem; + margin: 0.25rem; + pointer-events: none; +} diff --git a/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasDisplay.tsx b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasDisplay.tsx new file mode 100644 index 0000000000..8b845a4bb3 --- /dev/null +++ b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasDisplay.tsx @@ -0,0 +1,58 @@ +import { createSelector } from '@reduxjs/toolkit'; +// import IAICanvas from 'features/canvas/components/IAICanvas'; +import IAICanvasResizer from 'features/canvas/components/IAICanvasResizer'; +import _ from 'lodash'; +import { useLayoutEffect } from 'react'; +import { useAppDispatch, useAppSelector } from 'app/store'; +import { setDoesCanvasNeedScaling } from 'features/canvas/store/canvasSlice'; +import IAICanvas from 'features/canvas/components/IAICanvas'; +import IAICanvasOutpaintingControls from 'features/canvas/components/IAICanvasToolbar/IAICanvasToolbar'; +import { canvasSelector } from 'features/canvas/store/canvasSelectors'; + +const selector = createSelector( + [canvasSelector], + (canvas) => { + const { doesCanvasNeedScaling } = canvas; + return { + doesCanvasNeedScaling, + }; + }, + { + memoizeOptions: { + resultEqualityCheck: _.isEqual, + }, + } +); + +const UnifiedCanvasDisplay = () => { + const dispatch = useAppDispatch(); + + const { doesCanvasNeedScaling } = useAppSelector(selector); + + useLayoutEffect(() => { + dispatch(setDoesCanvasNeedScaling(true)); + + const resizeCallback = _.debounce(() => { + dispatch(setDoesCanvasNeedScaling(true)); + }, 250); + + window.addEventListener('resize', resizeCallback); + + return () => window.removeEventListener('resize', resizeCallback); + }, [dispatch]); + + return ( +
+
+
+ +
+ {doesCanvasNeedScaling ? : } +
+
+
+
+ ); +}; + +export default UnifiedCanvasDisplay; diff --git a/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasPanel.tsx b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasPanel.tsx new file mode 100644 index 0000000000..e600f33509 --- /dev/null +++ b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasPanel.tsx @@ -0,0 +1,58 @@ +// import { Feature } from 'app/features'; +import { Feature } from 'app/features'; +import ImageToImageStrength from 'features/options/components/AdvancedOptions/ImageToImage/ImageToImageStrength'; +import SeamCorrectionOptions from 'features/options/components/AdvancedOptions/Canvas/SeamCorrectionOptions'; +import SeedOptions from 'features/options/components/AdvancedOptions/Seed/SeedOptions'; +import GenerateVariationsToggle from 'features/options/components/AdvancedOptions/Variations/GenerateVariations'; +import VariationsOptions from 'features/options/components/AdvancedOptions/Variations/VariationsOptions'; +import MainOptions from 'features/options/components/MainOptions/MainOptions'; +import OptionsAccordion from 'features/options/components/OptionsAccordion'; +import ProcessButtons from 'features/options/components/ProcessButtons/ProcessButtons'; +import PromptInput from 'features/options/components/PromptInput/PromptInput'; +import InvokeOptionsPanel from 'features/tabs/components/InvokeOptionsPanel'; +import BoundingBoxSettings from 'features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings'; +import InfillAndScalingOptions from 'features/options/components/AdvancedOptions/Canvas/InfillAndScalingOptions'; + +export default function UnifiedCanvasPanel() { + const unifiedCanvasAccordions = { + boundingBox: { + header: 'Bounding Box', + feature: Feature.BOUNDING_BOX, + content: , + }, + seamCorrection: { + header: 'Seam Correction', + feature: Feature.SEAM_CORRECTION, + content: , + }, + infillAndScaling: { + header: 'Infill and Scaling', + feature: Feature.INFILL_AND_SCALING, + content: , + }, + seed: { + header: 'Seed', + feature: Feature.SEED, + content: , + }, + variations: { + header: 'Variations', + feature: Feature.VARIATIONS, + content: , + additionalHeaderComponents: , + }, + }; + + return ( + + + + + + + + ); +} diff --git a/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasWorkarea.tsx b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasWorkarea.tsx new file mode 100644 index 0000000000..45f0d026d1 --- /dev/null +++ b/frontend/src/features/tabs/components/UnifiedCanvas/UnifiedCanvasWorkarea.tsx @@ -0,0 +1,14 @@ +import UnifiedCanvasPanel from './UnifiedCanvasPanel'; +import UnifiedCanvasDisplay from './UnifiedCanvasDisplay'; +import InvokeWorkarea from 'features/tabs/components/InvokeWorkarea'; + +export default function UnifiedCanvasWorkarea() { + return ( + } + styleClass="inpainting-workarea-overrides" + > + + + ); +} diff --git a/frontend/src/global.d.ts b/frontend/src/global.d.ts new file mode 100644 index 0000000000..a0b48d49bb --- /dev/null +++ b/frontend/src/global.d.ts @@ -0,0 +1,39 @@ +export {}; + +declare global { + // Manual implementation of https://github.com/microsoft/TypeScript/issues/48829 + + interface Array { + /** + * Returns the value of the last element in the array where predicate is true, and undefined + * otherwise. + * @param predicate findLast calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, findLast + * immediately returns that element value. Otherwise, findLast returns undefined. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLast( + predicate: (this: void, value: T, index: number, obj: T[]) => value is S, + thisArg?: any + ): S | undefined; + findLast( + predicate: (value: T, index: number, obj: T[]) => unknown, + thisArg?: any + ): T | undefined; + + /** + * Returns the index of the last element in the array where predicate is true, and -1 + * otherwise. + * @param predicate findLastIndex calls predicate once for each element of the array, in descending + * order, until it finds one where predicate returns true. If such an element is found, + * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1. + * @param thisArg If provided, it will be used as the this value for each invocation of + * predicate. If it is not provided, undefined is used instead. + */ + findLastIndex( + predicate: (value: T, index: number, obj: T[]) => unknown, + thisArg?: any + ): number; + } +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 2036ed99bc..02350c73bd 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,6 +1,8 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; -import { ChakraProvider, ColorModeScript } from '@chakra-ui/react'; +import { ChakraProvider } from '@chakra-ui/react'; +import { CacheProvider } from '@emotion/react'; +import createCache from '@emotion/cache'; import { store } from './app/store'; import { Provider } from 'react-redux'; import { PersistGate } from 'redux-persist/integration/react'; @@ -8,10 +10,14 @@ import { persistStore } from 'redux-persist'; export const persistor = persistStore(store); -import { theme } from './app/theme'; import Loading from './Loading'; import App from './app/App'; +export const emotionCache = createCache({ + key: 'invokeai-style-cache', + prepend: true, +}); + // Custom Styling import './styles/index.scss'; @@ -19,10 +25,11 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( } persistor={persistor}> - - - - + + + + + diff --git a/frontend/src/styles/Mixins/Buttons.scss b/frontend/src/styles/Mixins/Buttons.scss index 511937d0af..93772d4ef8 100644 --- a/frontend/src/styles/Mixins/Buttons.scss +++ b/frontend/src/styles/Mixins/Buttons.scss @@ -1,6 +1,6 @@ @mixin Button( - $btn-color: rgb(45, 45, 55), - $btn-color-hover: rgb(65, 65, 75), + $btn-color: rgb(45, 49, 53), + $btn-color-hover: rgb(65, 69, 73), $btn-width: 100%, $btn-height: 100%, $icon-size: 20px @@ -10,13 +10,13 @@ background-color: $btn-color !important; &:hover { - background-color: $btn-color-hover !important; + background-color: $btn-color-hover; } &:disabled { - background-color: rgb(45, 45, 55) !important; + background-color: var(--btn-base-color); &:hover { - background-color: rgb(45, 45, 55) !important; + background-color: var(--btn-base-color); } } @@ -26,3 +26,15 @@ color: var(--btn-svg-color); } } + +@mixin BaseButton { + background-color: var(--btn-base-color); + &:hover { + background-color: var(--btn-base-color-hover); + } + &:disabled { + &:hover { + background-color: var(--btn-base-color); + } + } +} diff --git a/frontend/src/styles/_Colors_Dark.scss b/frontend/src/styles/Themes/_Colors_Dark.scss similarity index 71% rename from frontend/src/styles/_Colors_Dark.scss rename to frontend/src/styles/Themes/_Colors_Dark.scss index fdecb027bb..32ee0e963c 100644 --- a/frontend/src/styles/_Colors_Dark.scss +++ b/frontend/src/styles/Themes/_Colors_Dark.scss @@ -2,27 +2,31 @@ // General Colors --white: rgb(255, 255, 255); + // Accent Colors + --accent-color-dim: rgb(57, 25, 153); + --accent-color: rgb(80, 40, 200); + --accent-color-bright: rgb(104, 60, 230); + --accent-color-hover: var(--accent-color-bright); + // App Colors --root-bg-color: rgb(10, 10, 10); - --background-color: rgb(20, 20, 26); + --background-color: rgb(26, 26, 32); + --background-color-light: rgb(40, 44, 48); --background-color-secondary: rgb(16, 16, 22); --text-color: rgb(255, 255, 255); --text-color-secondary: rgb(160, 162, 188); - --subtext-color: rgb(24, 24, 34); --subtext-color-bright: rgb(48, 48, 64); --border-color: rgb(30, 30, 46); --border-color-light: rgb(60, 60, 76); + --svg-color: rgb(255, 255, 255); + --invalid: rgb(255, 75, 75); --invalid-secondary: rgb(120, 5, 5); - --accent-color-dim: rgb(57, 25, 153); - --accent-color: rgb(80, 40, 200); - --accent-color-hover: rgb(104, 60, 230); - --destructive-color: rgb(185, 55, 55); --destructive-color-hover: rgb(255, 75, 75); @@ -33,42 +37,45 @@ --border-color-invalid: rgb(255, 80, 50); --box-shadow-color-invalid: rgb(210, 30, 10); - --svg-color: rgb(24, 24, 34); - - // Progress Bar Color - --progress-bar-color: rgb(100, 50, 245); - - // Prompt Box Colors - --prompt-bg-color: rgb(10, 10, 10); + // Tabs + --tab-color: rgb(30, 32, 42); + --tab-hover-color: rgb(46, 48, 58); + --tab-panel-bg: rgb(36, 38, 48); + --tab-list-bg: var(--accent-color); + --tab-list-text: rgb(202, 204, 216); + --tab-list-text-inactive: rgb(92, 94, 114); // Button Colors - --btn-svg-color: rgb(255, 255, 255); - - --btn-grey: rgb(30, 32, 42); - --btn-grey-hover: rgb(46, 48, 68); + --btn-base-color: rgb(30, 32, 42); + --btn-base-color-hover: rgb(46, 48, 68); --btn-load-more: rgb(30, 32, 42); --btn-load-more-hover: rgb(54, 56, 66); - --btn-delete-image: rgb(238, 107, 107); + --btn-svg-color: rgb(255, 255, 255); + --btn-delete-image: rgb(182, 46, 46); // IAI Button Colors --btn-checkbox-border-hover: rgb(46, 48, 68); + // Progress Bar Color + --progress-bar-color: var(--accent-color); + + // Prompt Box Colors + --prompt-bg-color: rgb(10, 10, 10); + // Switch --switch-bg-color: rgb(100, 102, 110); - --switch-bg-active-color: rgb(80, 40, 200); + --switch-bg-active-color: var(--accent-color); + + // Slider + --slider-color: var(--accent-color-bright); + + // Slider + --slider-color: rgb(151, 113, 255); // Resizable - --resizeable-handle-border-color: rgb(80, 82, 112); - - // Tabs - --tab-color: rgb(30, 32, 42); - --tab-hover-color: rgb(36, 38, 48); - --tab-list-bg: var(--accent-color); - --tab-list-text: rgb(202, 204, 216); - --tab-list-text-inactive: rgb(92, 94, 114); - --tab-panel-bg: rgb(20, 22, 28); + --resizeable-handle-border-color: var(--accent-color); // Metadata Viewer --metadata-bg-color: rgba(0, 0, 0, 0.7); @@ -86,11 +93,12 @@ --settings-modal-bg: rgb(30, 32, 42); // Input - --input-checkbox-bg: rgb(90, 90, 120); - --input-checkbox-checked-bg: rgb(80, 40, 200); + --input-checkbox-bg: rgb(60, 64, 68); + --input-checkbox-checked-bg: var(--accent-color); --input-checkbox-checked-tick: rgb(0, 0, 0); - --input-border-color: rgb(140, 110, 255); - --input-box-shadow-color: rgb(80, 30, 210); + + --input-border-color: var(--accent-color-bright); + --input-box-shadow-color: var(--accent-color); // Console --error-level-info: rgb(200, 202, 224); @@ -111,13 +119,16 @@ --context-menu-bg-color-hover: rgb(30, 32, 42); // Shadows - --floating-button-drop-shadow: drop-shadow(0 0 1rem rgba(140, 101, 255, 0.5)); + --floating-button-drop-shadow-color: var(--accent-color); // Canvas --inpainting-alerts-bg: rgba(20, 20, 26, 0.75); --inpainting-alerts-icon-color: rgb(255, 255, 255); - --inpainting-alerts-bg-active: rgb(80, 40, 200); + --inpainting-alerts-bg-active: var(--accent-color); --inpainting-alerts-icon-active: rgb(255, 255, 255); --inpainting-alerts-bg-alert: var(--invalid); --inpainting-alerts-icon-alert: rgb(255, 255, 255); + + // Checkerboard + --checkboard-dots-color: rgb(35, 35, 39); } diff --git a/frontend/src/styles/Themes/_Colors_Green.scss b/frontend/src/styles/Themes/_Colors_Green.scss new file mode 100644 index 0000000000..3fc4bfbcea --- /dev/null +++ b/frontend/src/styles/Themes/_Colors_Green.scss @@ -0,0 +1,132 @@ +[data-theme='green'] { + // General Colors + --white: rgb(255, 255, 255); + + // Accent Colors + --accent-color-dim: rgb(10, 60, 40); + --accent-color: rgb(20, 110, 70); + --accent-color-bright: rgb(30, 180, 100); + --accent-color-hover: var(--accent-color-bright); + + // App Colors + --root-bg-color: rgb(10, 10, 14); + --background-color: rgb(30, 32, 37); + --background-color-light: rgb(40, 44, 48); + --background-color-secondary: rgb(22, 24, 28); + + --text-color: rgb(255, 255, 255); + --text-color-secondary: rgb(160, 164, 168); + --subtext-color: rgb(24, 24, 28); + --subtext-color-bright: rgb(68, 72, 76); + + --border-color: rgb(40, 44, 48); + --border-color-light: rgb(60, 60, 64); + + --svg-color: rgb(220, 224, 228); + + --invalid: rgb(255, 75, 75); + --invalid-secondary: rgb(120, 5, 5); + + --destructive-color: rgb(185, 55, 55); + --destructive-color-hover: rgb(255, 75, 75); + + --warning-color: rgb(200, 88, 40); + --warning-color-hover: rgb(230, 117, 60); + + // Error status colors + --border-color-invalid: rgb(255, 80, 50); + --box-shadow-color-invalid: rgb(210, 30, 10); + + // Tabs + --tab-color: rgb(40, 44, 48); + --tab-hover-color: rgb(48, 52, 56); //done + --tab-panel-bg: rgb(36, 40, 44); + --tab-list-bg: var(--accent-color); + --tab-list-text: rgb(202, 204, 206); + --tab-list-text-inactive: rgb(92, 94, 96); //done + + // Button Colors + --btn-base-color: rgb(40, 44, 48); + --btn-base-color-hover: rgb(56, 60, 64); + + --btn-load-more: rgb(30, 32, 42); + --btn-load-more-hover: rgb(54, 56, 66); + + --btn-svg-color: rgb(255, 255, 255); + + --btn-delete-image: rgb(182, 46, 46); + + // IAI Button Colors + --btn-checkbox-border-hover: rgb(46, 48, 68); + + // Progress Bar Color + --progress-bar-color: var(--accent-color); + + // Prompt Box Colors + --prompt-bg-color: rgb(10, 10, 14); + + // Switch + --switch-bg-color: rgb(100, 102, 110); + --switch-bg-active-color: var(--accent-color); + + // Slider + --slider-color: var(--accent-color-bright); + + // Resizable + --resizeable-handle-border-color: var(--accent-color); + + // Metadata Viewer + --metadata-bg-color: rgba(0, 0, 0, 0.7); + --metadata-json-bg-color: rgba(255, 255, 255, 0.1); + + // Status Message + --status-good-color: rgb(125, 255, 100); + --status-good-glow: rgb(40, 215, 40); + --status-working-color: rgb(255, 175, 55); + --status-working-glow: rgb(255, 160, 55); + --status-bad-color: rgb(255, 90, 90); + --status-bad-glow: rgb(255, 40, 40); + + // Settings Modal + --settings-modal-bg: rgb(30, 32, 42); + + // Input + --input-checkbox-bg: rgb(60, 64, 68); + --input-checkbox-checked-bg: var(--accent-color); + --input-checkbox-checked-tick: rgb(0, 0, 0); + + --input-border-color: var(--accent-color-bright); + --input-box-shadow-color: var(--accent-color); + + // Console + --error-level-info: rgb(200, 202, 224); + --error-level-warning: rgb(255, 225, 105); + --error-level-error: rgb(255, 81, 46); + --console-bg-color: rgb(30, 30, 36); + --console-icon-button-bg-color: rgb(50, 53, 64); + --console-icon-button-bg-color-hover: rgb(70, 73, 84); + + // Img2Img + --img2img-img-bg-color: rgb(30, 32, 42); + + // Gallery + + // Context Menus + --context-menu-bg-color: rgb(46, 48, 58); + --context-menu-box-shadow: none; + --context-menu-bg-color-hover: rgb(30, 32, 42); + + // Shadows + --floating-button-drop-shadow-color: var(--accent-color); + + // Canvas + --inpainting-alerts-bg: rgba(20, 20, 26, 0.75); + --inpainting-alerts-icon-color: rgb(255, 255, 255); + --inpainting-alerts-bg-active: var(--accent-color); + --inpainting-alerts-icon-active: rgb(255, 255, 255); + --inpainting-alerts-bg-alert: var(--invalid); + --inpainting-alerts-icon-alert: rgb(255, 255, 255); + + //Checkerboard + --checkboard-dots-color: rgb(35, 35, 39); +} diff --git a/frontend/src/styles/_Colors_Light.scss b/frontend/src/styles/Themes/_Colors_Light.scss similarity index 83% rename from frontend/src/styles/_Colors_Light.scss rename to frontend/src/styles/Themes/_Colors_Light.scss index f46513a297..1849cd5540 100644 --- a/frontend/src/styles/_Colors_Light.scss +++ b/frontend/src/styles/Themes/_Colors_Light.scss @@ -2,27 +2,31 @@ // General Colors --white: rgb(255, 255, 255); + // Accent Colors + --accent-color-dim: rgb(186, 146, 0); + --accent-color: rgb(235, 185, 5); + --accent-color-bright: rgb(255, 200, 0); + --accent-color-hover: var(--accent-color-bright); + // App Colors --root-bg-color: rgb(255, 255, 255); --background-color: rgb(220, 222, 224); - --background-color-secondary: rgb(204, 206, 208); + --background-color-light: rgb(250, 252, 254); + --background-color-secondary: rgb(208, 210, 212); --text-color: rgb(0, 0, 0); --text-color-secondary: rgb(40, 40, 40); - --subtext-color: rgb(24, 24, 34); --subtext-color-bright: rgb(142, 144, 146); --border-color: rgb(200, 200, 200); --border-color-light: rgb(147, 147, 147); + --svg-color: rgb(50, 50, 50); + --invalid: rgb(255, 75, 75); --invalid-secondary: rgb(120, 5, 5); - --accent-color-dim: rgb(186, 146, 0); - --accent-color: rgb(235, 185, 5); - --accent-color-hover: rgb(255, 200, 0); - --destructive-color: rgb(237, 51, 51); --destructive-color-hover: rgb(255, 55, 55); @@ -33,43 +37,41 @@ --border-color-invalid: rgb(255, 80, 50); --box-shadow-color-invalid: none; - --svg-color: rgb(186, 188, 190); - - // Progress Bar Color - --progress-bar-color: rgb(235, 185, 5); - - // Prompt Box Colors - --prompt-bg-color: rgb(225, 227, 229); + // Tabs + --tab-color: rgb(202, 204, 206); + --tab-hover-color: rgb(196, 198, 200); + --tab-panel-bg: rgb(206, 208, 210); + --tab-list-bg: rgb(235, 185, 5); + --tab-list-text: rgb(0, 0, 0); + --tab-list-text-inactive: rgb(106, 108, 110); // Button Colors - --btn-svg-color: rgb(0, 0, 0); - - --btn-grey: rgb(220, 222, 224); - --btn-grey-hover: rgb(230, 232, 234); + --btn-base-color: rgb(184, 186, 188); + --btn-base-color-hover: rgb(230, 232, 234); --btn-load-more: rgb(202, 204, 206); --btn-load-more-hover: rgb(178, 180, 182); + --btn-svg-color: rgb(0, 0, 0); --btn-delete-image: rgb(213, 49, 49); // IAI Button Colors --btn-checkbox-border-hover: rgb(176, 178, 182); + // Progress Bar Color + --progress-bar-color: rgb(235, 185, 5); + // Prompt Box Colors + --prompt-bg-color: rgb(225, 227, 229); // Switch --switch-bg-color: rgb(178, 180, 182); --switch-bg-active-color: rgb(235, 185, 5); + // Slider + --slider-color: rgb(0, 0, 0); + // Resizable --resizeable-handle-border-color: rgb(160, 162, 164); - // Tabs - --tab-color: rgb(202, 204, 206); - --tab-hover-color: rgb(206, 208, 210); - --tab-list-bg: rgb(235, 185, 5); - --tab-list-text: rgb(0, 0, 0); - --tab-list-text-inactive: rgb(106, 108, 110); - --tab-panel-bg: rgb(214, 216, 218); - // Metadata Viewer --metadata-bg-color: rgba(230, 230, 230, 0.9); --metadata-json-bg-color: rgba(0, 0, 0, 0.1); @@ -86,7 +88,7 @@ --settings-modal-bg: rgb(202, 204, 206); // Input - --input-checkbox-bg: rgb(90, 90, 120); + --input-checkbox-bg: rgb(167, 167, 171); --input-checkbox-checked-bg: rgb(235, 185, 5); --input-checkbox-checked-tick: rgb(0, 0, 0); --input-border-color: rgb(0, 0, 0); @@ -112,7 +114,7 @@ --context-menu-bg-color-hover: var(--background-color-secondary); // Shadows - --floating-button-drop-shadow: drop-shadow(0 0 1rem rgba(0, 0, 0, 0.3)); + --floating-button-drop-shadow-color: rgba(0, 0, 0, 0.7); // Canvas --inpainting-alerts-bg: rgba(220, 222, 224, 0.75); @@ -121,4 +123,7 @@ --inpainting-alerts-icon-active: rgb(0, 0, 0); --inpainting-alerts-bg-alert: var(--invalid); --inpainting-alerts-icon-alert: rgb(0, 0, 0); + + // Checkerboard + --checkboard-dots-color: rgb(160, 160, 172); } diff --git a/frontend/src/styles/_Misc.scss b/frontend/src/styles/_Misc.scss index d75046d008..4c09d8d73c 100644 --- a/frontend/src/styles/_Misc.scss +++ b/frontend/src/styles/_Misc.scss @@ -1,13 +1,16 @@ -.checkerboard { - background-position: 0px 0px, 10px 10px; - background-size: 20px 20px; - background-image: linear-gradient( - 45deg, - #eee 25%, - transparent 25%, - transparent 75%, - #eee 75%, - #eee 100% - ), - linear-gradient(45deg, #eee 25%, white 25%, white 75%, #eee 75%, #eee 100%); -} +// .checkerboard { +// background-position: 0px 0px, 10px 10px; +// // background-size: 20px 20px; +// // background-image: linear-gradient( +// // 45deg, +// // #eee 25%, +// // transparent 25%, +// // transparent 75%, +// // #eee 75%, +// // #eee 100% +// // ), +// // linear-gradient(45deg, #eee 25%, white 25%, white 75%, #eee 75%, #eee 100%); +// background: radial-gradient(var(--checkboard-dots-color) 3px, transparent 1px), +// var(--background-color-secondary); +// background-size: 64px 64px; +// } diff --git a/frontend/src/styles/index.scss b/frontend/src/styles/index.scss index de0f57020d..250a7ece3e 100644 --- a/frontend/src/styles/index.scss +++ b/frontend/src/styles/index.scss @@ -1,47 +1,52 @@ // General Imports -@use 'Colors_Dark'; -@use 'Colors_Light'; @use 'Fonts'; @use 'Animations'; @use 'Misc'; +// Themes +@use './Themes/Colors_Dark'; +@use './Themes/Colors_Light'; +@use './Themes/Colors_Green'; + // Component Styles //app @use '../app/App.scss'; //system -@use '../features/system/SiteHeader.scss'; -@use '../features/system/StatusIndicator.scss'; -@use '../features/system/SettingsModal/SettingsModal.scss'; -@use '../features/system/SettingsModal/ModelList.scss'; -@use '../features/system/HotkeysModal/HotkeysModal.scss'; -@use '../features/system/Console.scss'; +@use '../features/system/components/SiteHeader.scss'; +@use '../features/system/components/StatusIndicator.scss'; +@use '../features/system/components/SettingsModal/SettingsModal.scss'; +@use '../features/system/components/SettingsModal/ModelList.scss'; +@use '../features/system/components/HotkeysModal/HotkeysModal.scss'; +@use '../features/system/components/Console.scss'; // options -@use '../features/options/PromptInput/PromptInput.scss'; -@use '../features/options/ProcessButtons/ProcessButtons.scss'; -@use '../features/options/MainOptions/MainOptions.scss'; -@use '../features/options/AccordionItems/AdvancedSettings.scss'; -@use '../features/options/AdvancedOptions/Upscale/UpscaleOptions.scss'; -@use '../features/options/AdvancedOptions/Inpainting/BoundingBoxSettings/BoundingBoxSettings.scss'; -@use '../features/system/ProgressBar.scss'; +@use '../features/options/components/PromptInput/PromptInput.scss'; +@use '../features/options/components/ProcessButtons/ProcessButtons.scss'; +@use '../features/options/components/MainOptions/MainOptions.scss'; +@use '../features/options/components/AccordionItems/AdvancedSettings.scss'; +@use '../features/options/components/AdvancedOptions/Upscale/UpscaleOptions.scss'; +@use '../features/options/components/AdvancedOptions/Canvas/BoundingBoxSettings/BoundingBoxSettings.scss'; +@use '../features/system/components/ProgressBar.scss'; // gallery -@use '../features/gallery/CurrentImageDisplay.scss'; -@use '../features/gallery/CurrentImageButtons.scss'; -@use '../features/gallery/ImageGallery.scss'; -@use '../features/gallery/HoverableImage.scss'; -@use '../features/gallery/ImageMetaDataViewer/ImageMetadataViewer.scss'; +@use '../features/gallery/components/CurrentImageDisplay.scss'; +@use '../features/gallery/components/CurrentImageButtons.scss'; +@use '../features/gallery/components/ImageGallery.scss'; +@use '../features/gallery/components/HoverableImage.scss'; +@use '../features/gallery/components/ImageMetaDataViewer/ImageMetadataViewer.scss'; + +// Lightbox +@use '../features/lightbox/components/Lightbox.scss'; // Tabs -@use '../features/tabs/InvokeTabs.scss'; -@use '../features/tabs/InvokeWorkarea.scss'; -@use '../features/tabs/InvokeOptionsPanel.scss'; -@use '../features/tabs/TextToImage/TextToImage.scss'; -@use '../features/tabs/ImageToImage/ImageToImage.scss'; -@use '../features/tabs/FloatingButton.scss'; -@use '../features/tabs/Inpainting/Inpainting.scss'; -@use '../features/tabs/Inpainting/InpaintingCanvasStatusIcons.scss'; +@use '../features/tabs/components/InvokeTabs.scss'; +@use '../features/tabs/components/InvokeWorkarea.scss'; +@use '../features/tabs/components/InvokeOptionsPanel.scss'; +@use '../features/tabs/components/TextToImage/TextToImage.scss'; +@use '../features/tabs/components/ImageToImage/ImageToImage.scss'; +@use '../features/tabs/components/FloatingButton.scss'; +@use '../features/tabs/components/UnifiedCanvas/CanvasWorkarea.scss'; // Component Shared @use '../common/components/IAINumberInput.scss'; @@ -59,11 +64,12 @@ @use '../common/components/GuidePopover.scss'; // Component Shared - Radix UI -// @use '../common/components/radix-ui/IAISlider.scss'; -// @use '../common/components/radix-ui/IAITooltip.scss'; +// @use 'common/components/radix-ui/IAISlider.scss'; +// @use 'common/components/radix-ui/IAITooltip.scss'; // Shared Styles @use './Mixins/' as *; +@use '../features/system/components/Modal.scss'; *, *::before, diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index a9619a8f91..2a75e16e88 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -14,6 +14,7 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, + "baseUrl": "src", "jsx": "react-jsx" }, "include": ["src", "index.d.ts"], diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json index 9d31e2aed9..a375708f74 100644 --- a/frontend/tsconfig.node.json +++ b/frontend/tsconfig.node.json @@ -3,7 +3,8 @@ "composite": true, "module": "ESNext", "moduleResolution": "Node", - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, + "baseUrl": "src" }, "include": ["vite.config.ts"] } diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index d8a8dcca62..548ba17314 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,12 +1,13 @@ import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import eslint from 'vite-plugin-eslint'; +import tsconfigPaths from 'vite-tsconfig-paths'; // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const common = { base: '', - plugins: [react(), eslint()], + plugins: [react(), eslint(), tsconfigPaths()], server: { // Proxy HTTP requests to the flask server proxy: { @@ -15,6 +16,11 @@ export default defineConfig(({ mode }) => { changeOrigin: true, rewrite: (path) => path.replace(/^\/outputs/, ''), }, + '/upload': { + target: 'http://127.0.0.1:9090/upload', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/upload/, ''), + }, '/flaskwebgui-keep-server-alive': { target: 'http://127.0.0.1:9090/flaskwebgui-keep-server-alive', changeOrigin: true, diff --git a/frontend/yarn.lock b/frontend/yarn.lock index dae528a306..293b6a4c7d 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -4,7 +4,7 @@ "@ampproject/remapping@^2.1.0": version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: "@jridgewell/gen-mapping" "^0.1.0" @@ -12,54 +12,54 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.0.tgz#9b61938c5f688212c7b9ae363a819df7d29d4093" - integrity sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" + integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== "@babel/core@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f" - integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" + integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.19.6" - "@babel/helper-compilation-targets" "^7.19.3" - "@babel/helper-module-transforms" "^7.19.6" - "@babel/helpers" "^7.19.4" - "@babel/parser" "^7.19.6" + "@babel/generator" "^7.20.2" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-module-transforms" "^7.20.2" + "@babel/helpers" "^7.20.1" + "@babel/parser" "^7.20.2" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.19.6", "@babel/generator@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.0.tgz#0bfc5379e0efb05ca6092091261fcdf7ec36249d" - integrity sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w== +"@babel/generator@^7.20.1", "@babel/generator@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.2.tgz#c2e89e22613a039285c1e7b749e2cd0b30b9a481" + integrity sha512-SD75PMIK6i9H8G/tfGvB4KKl4Nw6Ssos9nGgYwxbgyTP0iX/Z55DveoH86rmUB/YHTQQ+ZC0F7xxaY8l2OF44Q== dependencies: - "@babel/types" "^7.20.0" + "@babel/types" "^7.20.2" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.19.3": +"@babel/helper-compilation-targets@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a" integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ== @@ -71,12 +71,12 @@ "@babel/helper-environment-visitor@^7.18.9": version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-function-name@^7.19.0": version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== dependencies: "@babel/template" "^7.18.10" @@ -84,47 +84,47 @@ "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.19.6": - version "7.19.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f" - integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw== +"@babel/helper-module-transforms@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712" + integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.19.4" + "@babel/helper-simple-access" "^7.20.2" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-validator-identifier" "^7.19.1" "@babel/template" "^7.18.10" - "@babel/traverse" "^7.19.6" - "@babel/types" "^7.19.4" + "@babel/traverse" "^7.20.1" + "@babel/types" "^7.20.2" "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz" - integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== -"@babel/helper-simple-access@^7.19.4": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7" - integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg== +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== dependencies: - "@babel/types" "^7.19.4" + "@babel/types" "^7.20.2" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" @@ -141,49 +141,49 @@ "@babel/helper-validator-option@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== -"@babel/helpers@^7.19.4": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.0.tgz#27c8ffa8cc32a2ed3762fba48886e7654dbcf77f" - integrity sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ== +"@babel/helpers@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9" + integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg== dependencies: "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.0" + "@babel/traverse" "^7.20.1" "@babel/types" "^7.20.0" "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046" - integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg== +"@babel/parser@^7.18.10", "@babel/parser@^7.20.1", "@babel/parser@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.2.tgz#9aeb9b92f64412b5f81064d46f6a1ac0881337f4" + integrity sha512-afk318kh2uKbo7BEj2QtEi8HVCGrwHUffrYDy7dgVcSa2j9lY3LDjPzcyGdpX7xgm35aWqvciZJ4WKmdF/SxYg== "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" "@babel/plugin-transform-react-jsx-self@^7.18.6": version "7.18.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -207,797 +207,811 @@ "@babel/types" "^7.19.0" "@babel/runtime@^7.0.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" - integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== dependencies: regenerator-runtime "^0.13.10" "@babel/template@^7.18.10": version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.18.10" "@babel/types" "^7.18.10" -"@babel/traverse@^7.19.6", "@babel/traverse@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.0.tgz#538c4c6ce6255f5666eba02252a7b59fc2d5ed98" - integrity sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ== +"@babel/traverse@^7.20.1": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8" + integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.0" + "@babel/generator" "^7.20.1" "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.0" + "@babel/parser" "^7.20.1" "@babel/types" "^7.20.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.0.tgz#52c94cf8a7e24e89d2a194c25c35b17a64871479" - integrity sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg== +"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842" + integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog== dependencies: "@babel/helper-string-parser" "^7.19.4" "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@chakra-ui/accordion@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.2.tgz#f9d384b80f68a92689fa7ad4e43bd8944e6945c6" - integrity sha512-Jf7A6I0eIGk34zO5TiTW8orJOFQb5A/D1ekNYbaukNccoUPKJg/xdQ/b00oIR6LT93nJxggkoP/vszfmmTHuFg== +"@chakra-ui/accordion@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.1.3.tgz#98c5426fe32d06a2f7b600161e0f81d02c4c3bb0" + integrity sha512-OAJSbF0UHBipi6ySBlTZM1vZi5Uoe+1UyYTBId1CxRPYHHgm3n9xAYjOtiA+TrT63aZbKwNV2KBshmGSMnNPGQ== dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.11" + "@chakra-ui/descendant" "3.0.11" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/transition" "2.0.12" -"@chakra-ui/alert@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.0.11.tgz#d792b0684ae7810befa3874af5bdd4aa115513a2" - integrity sha512-n40KHU3j1H6EbIdgptjEad92V7Fpv7YD++ZBjy2g1h4w9ay9nw4kGHib3gaIkBupLf52CfLqySEc8w0taoIlXQ== +"@chakra-ui/alert@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.0.12.tgz#6784a1ae9158fa0bdb5df79dbfe8ea691686c70e" + integrity sha512-L2h2EeLH0x6+FDG8liu/EuDGAkI3Cgym6aXJdhaJDY3Q18o7lATrkU5Nb7jAf3sHKMwTW5X0YzAOtFiwjpALGA== dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/spinner" "2.0.10" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/spinner" "2.0.11" -"@chakra-ui/anatomy@2.0.7": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.0.7.tgz#33e60c7c4d6e5f949f6f8308249dc571f84ead1e" - integrity sha512-vzcB2gcsGCxhrKbldQQV6LnBPys4eSSsH2UA2mLsT+J3WlXw0aodZw0eE/nH7yLxe4zaQ4Gnc0KjkFW4EWNKSg== - -"@chakra-ui/avatar@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.0.tgz#58b5e650f7e4b3ab229f50e6a102c54b6eb4b23a" - integrity sha512-mpAkfr/JG+BNBw2WvU55CSRFYKeFBUyAQAu3YulznLzi2U3e7k3IA0J8ofbrDYlSH/9KqkDuuSrxqGZgct+Nug== - dependencies: - "@chakra-ui/image" "2.0.11" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/breadcrumb@2.1.0": +"@chakra-ui/anatomy@2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.0.tgz#530ded99f931cfcb9f4bd4d951bc82b0a4e102ac" - integrity sha512-khBR579SLDEo6Wuo3tETRY6m0yJD/WCvSR7Res2g1B6OJgc9OQGM7yIMu4OdLUTwfXsCnlHTDoSQPUxFOVAMIQ== - dependencies: - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.1.0.tgz#8aeb9b753f0412f262743adf68519dfa85120b3e" + integrity sha512-E3jMPGqKuGTbt7mKtc8g/MOOenw2c4wqRC1vOypyFgmC8wsewdY+DJJNENF3atXAK7p5VMBKQfZ7ipNlHnDAwA== -"@chakra-ui/breakpoint-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.4.tgz#6231eff8b20f4e3cbb4eb7c86d05c927679d905b" - integrity sha512-SUUEYnA/FCIKYDHMuEXcnBMwet+6RAAjQ+CqGD1hlwKPTfh7EK9fS8FoVAJa9KpRKAc/AawzPkgwvorzPj8NSg== - -"@chakra-ui/button@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.11.tgz#98e0aa1e35ea7e193bb50f9a4b5d0ea23202ace8" - integrity sha512-J6iMRITqxTxa0JexHUY9c7BXUrTZtSkl3jZ2hxiFybB4MQL8J2wZ24O846B6M+WTYqy7XVuHRuVURnH4czWesw== +"@chakra-ui/avatar@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.2.1.tgz#3946d8c3b1d49dc425aa80f22d2f53661395e394" + integrity sha512-sgiogfLM8vas8QJTt7AJI4XxNXYdViCWj+xYJwyOwUN93dWKImqqx3O2ihCXoXTIqQWg1rcEgoJ5CxCg6rQaQQ== dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/spinner" "2.0.10" + "@chakra-ui/image" "2.0.12" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" -"@chakra-ui/checkbox@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.2.tgz#494d7090ac11a0a43d05b7849aff6085f7a91045" - integrity sha512-Y6Zbkkk5VNoe0RzqU6F+rKlFVPlubz1KIgYcb7CCNHGOM97dLtRm78eAvJ+7Xmpitr+7zZ4hJLLjfAz+e1X7rA== +"@chakra-ui/breadcrumb@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.1.1.tgz#e8a682a4909cf8ee5771f7b287524df2be383b8a" + integrity sha512-OSa+F9qJ1xmF0zVxC1GU46OWbbhGf0kurHioSB729d+tRw/OMzmqrrfCJ7KVUUN8NEnTZXT5FIgokMvHGEt+Hg== dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/visually-hidden" "2.0.11" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + +"@chakra-ui/breakpoint-utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.5.tgz#55b571038b66e9f6d41633c102ea904c679dac5c" + integrity sha512-8uhrckMwoR/powlAhxiFZPM0s8vn0B2yEyEaRcwpy5NmRAJSTEotC2WkSyQl/Cjysx9scredumB5g+fBX7IqGQ== + +"@chakra-ui/button@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.0.12.tgz#17acba9997de005cf6ad0cd6a9821e11358bb537" + integrity sha512-SRW44nz3Jcbl0XkwCxqn1GE7cT/cqKALBMCnBxM5zXJqzMfYjuQHdtJA2AzX/WB3qKab1GJK4rXCV37h4l3Q3Q== + dependencies: + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/spinner" "2.0.11" + +"@chakra-ui/card@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.1.1.tgz#b981a68d81d0f6447eb0d4d3fdcd7846bab2111f" + integrity sha512-vvmfuNn6gkfv6bGcXQe6kvWHspziPZgYnnffiEjPaZYtaf98WRszpjyPbFv0oQR/2H1RSE1oaTqa/J1rHrzw3A== + dependencies: + "@chakra-ui/react-context" "2.0.5" + +"@chakra-ui/checkbox@2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.2.4.tgz#e8cff67382165085c45b2618b74cee9da0355c04" + integrity sha512-yNuUFFBuFu9Sih8DlqOn+SLj2RtpVGebePkwUqSRQygMfveFYuWYWt1sbrFYyt0KmIBq0OkucUMy4OnkErUOHQ== + dependencies: + "@chakra-ui/form-control" "2.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + "@chakra-ui/react-use-update-effect" "2.0.5" + "@chakra-ui/visually-hidden" "2.0.13" "@zag-js/focus-visible" "0.1.0" -"@chakra-ui/clickable@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.10.tgz#e89b7b3eaf9364753f6205e36fd5128b26a617d8" - integrity sha512-G6JdR6yAMlXpfjOJ70W2FL7aUwNuomiMFtkneeTpk7Q42bJ5iGHfYlbZEx5nJd8iB+UluXVM4xlhMv2MyytjGw== - dependencies: - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/close-button@2.0.11": +"@chakra-ui/clickable@2.0.11": version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.11.tgz#8b0679da42738229014d3807885d05fac0fdf448" - integrity sha512-9WF/nwwK9BldS89WQ5PtXK2nFS4r8QOgKls2BOwXfE+rGmOUZtOsu8ne/drXRjgkiBRETR6CxdyUjm7EPzXllw== + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.0.11.tgz#d0afcdb40ed1b1ceeabb4ac3e9f2f51fd3cbdac7" + integrity sha512-5Y2dl5cxNgOxHbjxyxsL6Vdze4wUUvwsMCCW3kXwgz2OUI2y5UsBZNcvhNJx3RchJEd0fylMKiKoKmnZMHN2aw== dependencies: - "@chakra-ui/icon" "3.0.11" + "@chakra-ui/react-use-merge-refs" "2.0.5" -"@chakra-ui/color-mode@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.9.tgz#d3a6f9ba9eee15d9e14cc96484e25d44cef1dbc1" - integrity sha512-0kx0I+AQon8oS23/X+qMtnhsv/1BUulyJvU56p3Uh8CRaBfgJ7Ly9CerShoUL+5kadu6hN1M9oty4cugaCwv2w== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/control-box@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.10.tgz#e8a849c9f0fa085da78ee15dda7e13e1734b983d" - integrity sha512-sHmZanFLEv4IDATl19ZTxq8Bi8PtjfvnsN6xF4k7JGSYUnk1YXUf1coyW7WKdcsczOASrMikfsLc3iEVAzx4Ng== - -"@chakra-ui/counter@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.10.tgz#861f00db021235892dfe0407e739a259f1c233b2" - integrity sha512-MZK8UKUZp4nFMd+GlV/cq0NIARS7UdlubTuCx+wockw9j2JI5OHzsyK0XiWuJiq5psegSTzpbtT99QfAUm3Yiw== - dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/css-reset@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.0.8.tgz#093ce6b166b37f2dd14e63f246635c463a59c106" - integrity sha512-VuDD1rk1pFc+dItk4yUcstyoC9D2B35hatHDBtlPMqTczFAzpbgVJJYgEHANatXGfulM5SdckmYEIJ3Tac1Rtg== - -"@chakra-ui/descendant@3.0.10": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.10.tgz#e54c95270896c451f61b57d31719ee042f4e1827" - integrity sha512-MHH0Qdm0fGllGP2xgx4WOycmrpctyyEdGw6zxcfs2VqZNlrwmjG3Yb9eVY+Q7UmEv5rwAq6qRn7BhQxgSPn3Cg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" - -"@chakra-ui/dom-utils@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.3.tgz#8a5498b107d3a42662f3502f7b8965cb73bf6a33" - integrity sha512-aeGlRmTxcv0cvW44DyeZHru1i68ZDQsXpfX2dnG1I1yBlT6GlVx1xYjCULis9mjhgvd2O3NfcYPRTkjNWTDUbA== - -"@chakra-ui/editable@2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.13.tgz#4e6ff480956ae2dcacf4ba2a15019336486bd613" - integrity sha512-GM3n8t3/TOFFcDOWF/tuKsnqn66isZLsU+FkMRY2o0E8XjLBGjCKuXInPW5SRBqhje7EHC+kwViLE780PfwXbw== - dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" - -"@chakra-ui/event-utils@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.5.tgz#23de21e319d1a70863953402d64cb4b0e6ce322f" - integrity sha512-VXoOAIsM0PFKDlhm+EZxkWlUXd5UFTb/LTux3y3A+S9G5fDxLRvpiLWByPUgTFTCDFcgTCF+YnQtdWJB4DLyxg== - -"@chakra-ui/focus-lock@2.0.12": +"@chakra-ui/close-button@2.0.12": version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.12.tgz#11c0301a326249efe269c2dd0f54b11a67a04321" - integrity sha512-NvIP59A11ZNbxXZ3qwxSiQ5npjABkpSbTIjK0uZ9bZm5LMfepRnuuA19VsVlq31/BYV9nHFAy6xzIuG+Qf9xMA== + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.0.12.tgz#a981fd96abc8bfe6b50428aba5d46b80ef0ce798" + integrity sha512-34rOJ+NDdkhaP1CI0bP5jmE4KCmvgaxxuI5Ano52XHRnFad4ghqqSZ0oae7RqNMcxRK4YNX8JYtj6xdQsfc6kA== dependencies: - "@chakra-ui/dom-utils" "2.0.3" + "@chakra-ui/icon" "3.0.12" + +"@chakra-ui/color-mode@2.1.10": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.1.10.tgz#8d446550af80cf01a2ccd7470861cb0180112049" + integrity sha512-aUPouOUPn7IPm1v00/9AIkRuNrkCwJlbjVL1kJzLzxijYjbHvEHPxntITt+JWjtXPT8xdOq6mexLYCOGA67JwQ== + dependencies: + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + +"@chakra-ui/control-box@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.0.11.tgz#b2deec368fc83f6675964785f823e4c0c1f5d4ac" + integrity sha512-UJb4vqq+/FPuwTCuaPeHa2lwtk6u7eFvLuwDCST2e/sBWGJC1R+1/Il5pHccnWs09FWxyZ9v/Oxkg/CG3jZR4Q== + +"@chakra-ui/counter@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.0.11.tgz#b49aa76423e5f4a4a8e717750c190fa5050a3dca" + integrity sha512-1YRt/jom+m3iWw9J9trcM6rAHDvD4lwThiO9raxUK7BRsYUhnPZvsMpcXU1Moax218C4rRpbI9KfPLaig0m1xQ== + dependencies: + "@chakra-ui/number-utils" "2.0.5" + "@chakra-ui/react-use-callback-ref" "2.0.5" + +"@chakra-ui/css-reset@2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.0.10.tgz#cb6cd97ee38f8069789f08c31a828bf3a7e339ea" + integrity sha512-FwHOfw2P4ckbpSahDZef2KoxcvHPUg09jlicWdp24/MjdsOO5PAB/apm2UBvQflY4WAJyOqYaOdnXFlR6nF4cQ== + +"@chakra-ui/descendant@3.0.11": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.0.11.tgz#cb8bca7b6e8915afc58cdb1444530a2d1b03efd3" + integrity sha512-sNLI6NS6uUgrvYS6Imhoc1YlI6bck6pfxMBJcnXVSfdIjD6XjCmeY2YgzrtDS+o+J8bB3YJeIAG/vsVy5USE5Q== + dependencies: + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.5" + +"@chakra-ui/dom-utils@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.0.4.tgz#367fffecbd287e16836e093d4030dc6e3785d402" + integrity sha512-P936+WKinz5fgHzfwiUQjE/t7NC8bU89Tceim4tbn8CIm/9b+CsHX64eNw4vyJqRwt78TXQK7aGBIbS18R0q5Q== + +"@chakra-ui/editable@2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-2.0.15.tgz#bef548de7b35e4107e04aeeb0747e448af4a36fd" + integrity sha512-Xb/hxMhguZmmGrdAosRAIRy70n7RSxoDWULojV+22ysWvqO8X+TkkwnF36XQX7c/V7F/yY0UqOXZWqdeoNqWPw== + dependencies: + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + "@chakra-ui/react-use-update-effect" "2.0.5" + "@chakra-ui/shared-utils" "2.0.3" + +"@chakra-ui/event-utils@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.6.tgz#5e04d68ea070ef52ce212c2a99be9afcc015cfaf" + integrity sha512-ZIoqUbgJ5TcCbZRchMv4n7rOl1JL04doMebED88LO5mux36iVP9er/nnOY4Oke1bANKKURMrQf5VTT9hoYeA7A== + +"@chakra-ui/focus-lock@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.0.13.tgz#19d6ca35555965a9aaa241b991a67bbc875ee53d" + integrity sha512-AVSJt+3Ukia/m9TCZZgyWvTY7pw88jArivWVJ2gySGYYIs6z/FJMnlwbCVldV2afS0g3cYaii7aARb/WrlG34Q== + dependencies: + "@chakra-ui/dom-utils" "2.0.4" react-focus-lock "^2.9.1" -"@chakra-ui/form-control@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.11.tgz#fbfdddb02d1b5d2c67ffdc721c434ff16693e4bd" - integrity sha512-MVhIe0xY4Zn06IXRXFmS9tCa93snppK1SdUQb1P99Ipo424RrL5ykzLnJ8CAkQrhoVP3sxF7z3eOSzk8/iRfow== +"@chakra-ui/form-control@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.0.12.tgz#8c8d7e90ed2bfc8ed06bde6b566de808b31cdd94" + integrity sha512-rSnAStY0qodnxiiL9MkS7wMBls+aG9yevq/yIuuETC42XfBNndKu7MLHFEKFIpAMuZvNocJtB+sP8qpe8jLolg== dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" -"@chakra-ui/hooks@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.1.0.tgz#a8df3692e407c2fed8cc551c8ce7f3fcd0ea9864" - integrity sha512-4H6BDITq/YrStW99LXurgPkcz4qHSVy9V/QWXCvt1pCuiDTqNztiW4r508H3ApAOsL9NEbyXcM/zWYD7r5VDjA== +"@chakra-ui/hooks@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.1.2.tgz#1e413f6624e97b854569e8a19846c9162a4ec153" + integrity sha512-/vDBOqqnho9q++lay0ZcvnH8VuE0wT2OkZj+qDwFwjiHAtGPVxHCSpu9KC8BIHME5TlWjyO6riVyUCb2e2ip6w== dependencies: - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/utils" "2.0.11" + "@chakra-ui/react-utils" "2.0.9" + "@chakra-ui/utils" "2.0.12" compute-scroll-into-view "1.0.14" copy-to-clipboard "3.3.1" -"@chakra-ui/icon@3.0.11": - version "3.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.11.tgz#a51dda24bed2f2ed77b4136ada8f22d3249c9870" - integrity sha512-RG4jf/XmBdaxOYI5J5QstEtTCPoVlmrQ/XiWhvN0LTgAnmZIqVwFl3Uw+satArdStHAs0GmJZg/E/soFTWuFmw== +"@chakra-ui/icon@3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.0.12.tgz#04f5b38591c4ff1cc922c14f814ce6b5d67525d9" + integrity sha512-VbUqgMcoZ26P1MtZdUqlxAKYDi1Bt8sSPNRID8QOwWfqyRYrbzabORVhKR3gpi6GaINjm7KRHIXHarj3u6EWdA== dependencies: - "@chakra-ui/shared-utils" "2.0.2" + "@chakra-ui/shared-utils" "2.0.3" "@chakra-ui/icons@^2.0.10": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-2.0.11.tgz#3faf53c499c7c61c65b6e5ff4b0933f48b9ba416" - integrity sha512-WjxrFMt9hHpuZlnBh4fhtGOkIVlwYwHNmwq4sJGxYWlg8UnEhVJMoOojheJDy/d3Gp9+ApetlK3vt8fV/rZamg== - dependencies: - "@chakra-ui/icon" "3.0.11" - -"@chakra-ui/image@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.11.tgz#eb880ecd2fce47f22ef50bbbba66cbb027c0304c" - integrity sha512-S6NqAprPcbHnck/J+2wg06r9SSol62v5A01O8Kke2PnAyjalMcS+6P59lDRO7wvPqsdxq4PPbSTZP6Dww2CvcA== - dependencies: - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/input@2.0.12": version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.12.tgz#332db53a831daea4d76e1de6d3b4462fd50ae167" - integrity sha512-lJ5necu+Wt698HdCTC7L/ErA2nNVJAra7+knPe0qMR+AizGEL7LKCV/bdQe7eggjvKsDGD4alJIEczUvm3JVUQ== + resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-2.0.12.tgz#5b4dd53512c2543c0617d4b348bf7bd1d9284e4a" + integrity sha512-lZyB96Yic5qM3gWp/QlQuD8WyS+V+19mjNxFW7IVmcn7fm+bLsnPrVPv2Qmpcs6/d4jsUyc1broyuyM+Urtg8Q== dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" + "@chakra-ui/icon" "3.0.12" -"@chakra-ui/layout@2.1.9": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.9.tgz#3e9cc7b5915e033907367e40fc97d218efa5f777" - integrity sha512-ztsavtirtdtjxdqIkGR6fVcrffHp6hs1twRFO/dK14FGXrX3Nn9mi3J1fr1ITBHJq6y5B3yFEj0LHN2fO8dYyw== +"@chakra-ui/image@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.0.12.tgz#e90b1d2a5f87fff90b1ef86ca75bfe6b44ac545d" + integrity sha512-uclFhs0+wq2qujGu8Wk4eEWITA3iZZQTitGiFSEkO9Ws5VUH+Gqtn3mUilH0orubrI5srJsXAmjVTuVwge1KJQ== dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/object-utils" "2.0.4" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/shared-utils" "2.0.2" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" -"@chakra-ui/lazy-utils@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.2.tgz#d85f9afc60c2434ba76376fd4b23a7a0a1341e14" - integrity sha512-MTxutBJZvqNNqrrS0722cI7qrnGu0yUQpIebmTxYwI+F3cOnPEKf5Ni+hrA8hKcw4XJhSY4npAPPYu1zJbOV4w== - -"@chakra-ui/live-region@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.10.tgz#d33a784c85feed7ba96e2579553ca1d20c965171" - integrity sha512-eQ2ZIreR/plzi/KGszDYTi1TvIyGEBcPiWP52BQOS7xwpzb1vsoR1FgFAIELxAGJvKnMUs+9qVogfyRBX8PdOg== - -"@chakra-ui/media-query@3.2.7": - version "3.2.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.7.tgz#ece5b2181136145305bf5e6ec82c696ef1d59a77" - integrity sha512-hbgm6JCe0kYU3PAhxASYYDopFQI26cW9kZnbp+5tRL1fykkVWNMPwoGC8FEZPur9JjXp7aoL6H4Jk7nrxY/XWw== +"@chakra-ui/input@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.0.13.tgz#6d445bccfb9e59eada70e9a8e47fecda7bfe03a4" + integrity sha512-28K033kg+9SpU0/HCvcAcY42JQPTpSR7ytcZV+6i/MBvGR72Dsf4JJQuQIcAtEW1lH0l/OpbY6ozhaoRW5NhdQ== dependencies: - "@chakra-ui/breakpoint-utils" "2.0.4" - "@chakra-ui/react-env" "2.0.10" + "@chakra-ui/form-control" "2.0.12" + "@chakra-ui/object-utils" "2.0.5" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/shared-utils" "2.0.3" -"@chakra-ui/menu@2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.2.tgz#bbe39e1efdb408ba8e6616e0ec290417474f9454" - integrity sha512-6Z7ecXjp6BtZ1ExbFggfxsAj1hwtcathXekmCTxHpXOD+BdjAC/13+oLclwXeuBO85aoTmQrQ2ovfTkO31bzRQ== +"@chakra-ui/layout@2.1.10": + version "2.1.10" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.1.10.tgz#fa9b177ecc32c674ba2208e52faa57ae877bbdb5" + integrity sha512-9WlbZGIg0TMIwnxuCuZfkE7HJUInL5qRWgw9I3U960/4GYZRrlcxx8I1ZuHNww0FdItNrlnYLXEfXP77uU779w== dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-outside-click" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/transition" "2.0.11" + "@chakra-ui/breakpoint-utils" "2.0.5" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/object-utils" "2.0.5" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/shared-utils" "2.0.3" -"@chakra-ui/modal@2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.2.tgz#bf3ef2673a8641a5c851faceb7811e0c0f323517" - integrity sha512-cCYuqLZO4QqFUI1H+uEqixDk6UiCP3yC+sxkhFTXHIApSG9Z44v5np7BVTd6LKdmAN8pAWcc8Oxf14RvD6LWLw== +"@chakra-ui/lazy-utils@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.3.tgz#5ba459a2541ad0c98cd98b20a8054664c129e9b4" + integrity sha512-SQ5I5rJrcHpVUcEftHLOh8UyeY+06R8Gv3k2RjcpvM6mb2Gktlz/4xl2GcUh3LWydgGQDW/7Rse5rQhKWgzmcg== + +"@chakra-ui/live-region@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.0.11.tgz#1008c5b629aa4120e5158be53f13d8d34bc2d71a" + integrity sha512-ltObaKQekP75GCCbN+vt1/mGABSCaRdQELmotHTBc5AioA3iyCDHH69ev+frzEwLvKFqo+RomAdAAgqBIMJ02Q== + +"@chakra-ui/media-query@3.2.8": + version "3.2.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.2.8.tgz#7d5feccb7ac52891426c060dd2ed1df37420956d" + integrity sha512-djmEg/eJ5Qrjn7SArTqjsvlwF6mNeMuiawrTwnU+0EKq9Pq/wVSb7VaIhxdQYJLA/DbRhE/KPMogw1LNVKa4Rw== dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/focus-lock" "2.0.12" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/transition" "2.0.11" + "@chakra-ui/breakpoint-utils" "2.0.5" + "@chakra-ui/react-env" "2.0.11" + +"@chakra-ui/menu@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.1.4.tgz#821d246ecbf4c734f8ab93ad399c22a7b5e0fa1a" + integrity sha512-7kEM5dCSBMXig3iyvsSxzYi/7zkmaf843zoxb7QTB7sRB97wrCxIE8yy1/73YTzxOP3zdAyITPcxNJ/bkiVptQ== + dependencies: + "@chakra-ui/clickable" "2.0.11" + "@chakra-ui/descendant" "3.0.11" + "@chakra-ui/lazy-utils" "2.0.3" + "@chakra-ui/popper" "3.0.9" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-animation-state" "2.0.6" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-disclosure" "2.0.6" + "@chakra-ui/react-use-focus-effect" "2.0.7" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-outside-click" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.5" + "@chakra-ui/transition" "2.0.12" + +"@chakra-ui/modal@2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.2.3.tgz#b99ba69cd3fcf1a9ca12f0ae9cea7136b1338726" + integrity sha512-fSpnFiI3rlif5ynyO3P8A1S/97B/SOFUrIuNaJnhKSgiu7VtklPjiPWHCw5Y+ktEvagDXEmkpztcfMBPTY0wIA== + dependencies: + "@chakra-ui/close-button" "2.0.12" + "@chakra-ui/focus-lock" "2.0.13" + "@chakra-ui/portal" "2.0.11" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/transition" "2.0.12" aria-hidden "^1.1.1" react-remove-scroll "^2.5.4" -"@chakra-ui/number-input@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.12.tgz#90a8408e6abb2d021793888ef2119d01761d7614" - integrity sha512-3owLjl01sCYpTd3xbq//fJo9QJ0Q3PVYSx9JeOzlXnnTW8ws+yHPrqQzPe7G+tO4yOYynWuUT+NJ9oyCeAJIxA== +"@chakra-ui/number-input@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.0.13.tgz#4dd3abae17e74749a3d52cfc3a7718e6cc18042a" + integrity sha512-Kn6PKLkGl+5hrMoeaGGN19qVHHJB79G4c0rfkWPjDWKsgpbCwHQctLJwrkxuwGAn1iWzw4WL31lsb+o6ZRQHbA== dependencies: - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-interval" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" + "@chakra-ui/counter" "2.0.11" + "@chakra-ui/form-control" "2.0.12" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" + "@chakra-ui/react-use-event-listener" "2.0.5" + "@chakra-ui/react-use-interval" "2.0.3" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + "@chakra-ui/react-use-update-effect" "2.0.5" -"@chakra-ui/number-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.4.tgz#0331be05956f2c03125c073d35655e261e267cd4" - integrity sha512-MdYd29GboBoKaXY9jhbY0Wl+0NxG1t/fa32ZSIbU6VrfMsZuAMl4NEJsz7Xvhy50fummLdKn5J6HFS7o5iyIgw== +"@chakra-ui/number-utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.5.tgz#c7595fc919fca7c43fe172bfd6c5197c653ee572" + integrity sha512-Thhohnlqze0i5HBJO9xkfOPq1rv3ji/hNPf2xh1fh4hxrNzdm3HCkz0c6lyRQwGuVoeltEHysYZLH/uWLFTCSQ== -"@chakra-ui/object-utils@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.0.4.tgz#d890ce285103a5e9b993f016a4fb38307aa55ac0" - integrity sha512-sY98L4v2wcjpwRX8GCXqT+WzpL0i5FHVxT1Okxw0360T2tGnZt7toAwpMfIOR3dzkemP9LfXMCyBmWR5Hi2zpQ== +"@chakra-ui/object-utils@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.0.5.tgz#231602066ddb96ae91dcc7da243b97ad46972398" + integrity sha512-/rIMoYI3c2uLtFIrnTFOPRAI8StUuu335WszqKM0KAW1lwG9H6uSbxqlpZT1Pxi/VQqZKfheGiMQOx5lfTmM/A== -"@chakra-ui/pin-input@2.0.15": - version "2.0.15" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.15.tgz#08e65c5e8468cef6192634a53859169b51c2c4a7" - integrity sha512-Ha8siSZm9gyjHHBK8ejwhKT6+75U12I/hNiYFvl2JHhc+Uh8tdi7+N+9SILO5vqbIv9kb+WGitvZ67I0cHjSfw== +"@chakra-ui/pin-input@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.0.16.tgz#d31a6e2bce85aa2d1351ccb4cd9bf7a5134d3fb9" + integrity sha512-51cioNYpBSgi9/jq6CrzoDvo8fpMwFXu3SaFRbKO47s9Dz/OAW0MpjyabTfSpwOv0xKZE+ayrYGJopCzZSWXPg== dependencies: - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/descendant" "3.0.11" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.5" -"@chakra-ui/popover@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.1.tgz#1b5e05e334ba5f9bce4bc5bcabfb92563393fc84" - integrity sha512-j09NsesfT+eaYITkITYJXDlRcPoOeQUM80neJZKOBgul2iHkVsEoii8dwS5Ip5ONeu4ane1b6zEOlYvYj2SrkA== +"@chakra-ui/popover@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.1.3.tgz#8769ed50db2c2188faf6725c248004a1f73f2725" + integrity sha512-3CbeXjpCYnKyq5Z2IqUyfXZYpi5GzmPQZqzS2/kuJwgTuSjtuQovX0QI7oNE4zv4r6yEABW/kVrI7pn0/Tet1Q== dependencies: - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-animation-state" "2.0.5" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-focus-effect" "2.0.5" - "@chakra-ui/react-use-focus-on-pointer-down" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/close-button" "2.0.12" + "@chakra-ui/lazy-utils" "2.0.3" + "@chakra-ui/popper" "3.0.9" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-animation-state" "2.0.6" + "@chakra-ui/react-use-disclosure" "2.0.6" + "@chakra-ui/react-use-focus-effect" "2.0.7" + "@chakra-ui/react-use-focus-on-pointer-down" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" -"@chakra-ui/popper@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.8.tgz#89b6984aee405316974dbb70ba451f85832bf44e" - integrity sha512-246eUwuCRsLpTPxn5T8D8T9/6ODqmmz6pRRJAjGnLlUB0gNHgjisBn0UDBic5Gbxcg0sqKvxOMY3uurbW5lXTA== +"@chakra-ui/popper@3.0.9": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.0.9.tgz#5e810e67573c99cbb6fe79869ab76340359e857a" + integrity sha512-xtQ1SXxKyDFY3jWNXxr6xdiGQ8mCI5jaw+c2CWKp/bb8FnASXEFLWIlmWx8zxkE1BbPMszWHnaGF8uCBRjmQMA== dependencies: - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" "@popperjs/core" "^2.9.3" -"@chakra-ui/portal@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.10.tgz#8ac21131cb0666a0bf6565468b3f7e799ef3bc8d" - integrity sha512-VRYvVAggIuqIZ3IQ6XZ1b5ujjjOUgPk9PPdc9jssUngZa7RG+5NXNhgoM8a5TsXv6aPEolBOlDNWuxzRQ4RSSg== +"@chakra-ui/portal@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.0.11.tgz#7a6b3ebc621bb28b46550fcfb36b94926d0111a5" + integrity sha512-Css61i4WKzKO8ou1aGjBzcsXMy9LnfnpkOFfvaNCpUUNEd6c47z6+FhZNq7Gc38PGNjSfMLAd4LmH+H0ZanYIA== dependencies: - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" -"@chakra-ui/progress@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.0.12.tgz#7ce57fe2822d1741c26e82960ca02c667a265a05" - integrity sha512-9qtZimZosTliI7siAZkLeCVdCpXCTxmSETCudHcCUsC+FtcFacmA65+We8qij1nOIqmsbm+NYU6PP89TU2n4Hg== +"@chakra-ui/progress@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.1.1.tgz#b94399af12e9324737f9e690201f78546572ac59" + integrity sha512-ddAXaYGNObGqH1stRAYxkdospf6J4CDOhB0uyw9BeHRSsYkCUQWkUBd/melJuZeGHEH2ItF9T7FZ4JhcepP3GA== dependencies: - "@chakra-ui/react-context" "2.0.4" + "@chakra-ui/react-context" "2.0.5" -"@chakra-ui/provider@2.0.20": - version "2.0.20" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.0.20.tgz#2f3f73f6142f4d2b2a5a8ad6dbd777a3fc4390ce" - integrity sha512-mNNfsgm05G4x1VzvHVR9+PNEiuxNnn9xUKDuEwoaO7+IHCMzCRMtPbSJjwmv0xvHUGB9+JChjPpZI5RuHQziJQ== +"@chakra-ui/provider@2.0.23": + version "2.0.23" + resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.0.23.tgz#da00642637a8c72be724acb7e17d5fe57547a0de" + integrity sha512-oYrvBivTsmBZ7NOyvctOmj+p2dDbRioe0S77S51G9iS+aGTh37W10HgaT0zyrDuZQVARoF9RUyOB5T6vuqwdCQ== dependencies: - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/system" "2.3.0" - "@chakra-ui/utils" "2.0.11" + "@chakra-ui/css-reset" "2.0.10" + "@chakra-ui/portal" "2.0.11" + "@chakra-ui/react-env" "2.0.11" + "@chakra-ui/system" "2.3.3" + "@chakra-ui/utils" "2.0.12" -"@chakra-ui/radio@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.12.tgz#d89eb463df0247a0e634cff1fb9ca755bcbab825" - integrity sha512-871hqAGQaufxyUzPP3aautPBIRZQmpi3fw5XPZ6SbY62dV61M4sjcttd46HfCf5SrAonoOADFQLMGQafznjhaA== +"@chakra-ui/radio@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.0.13.tgz#3f6dec6886c4d046e7567e1bb929f32e8091c5b7" + integrity sha512-P8mbdCZY9RG5034o1Tvy1/p573cHWDyzYuG8DtdEydiP6KGwaFza16/5N0slLY1BQwClIRmImLLw4vI+76J8XA== dependencies: - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/form-control" "2.0.12" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-merge-refs" "2.0.5" "@zag-js/focus-visible" "0.1.0" -"@chakra-ui/react-children-utils@2.0.3": +"@chakra-ui/react-children-utils@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.4.tgz#6e4284297a8a9b4e6f5f955b099bb6c2c6bbf8b9" + integrity sha512-qsKUEfK/AhDbMexWo5JhmdlkxLg5WEw2dFh4XorvU1/dTYsRfP6cjFfO8zE+X3F0ZFNsgKz6rbN5oU349GLEFw== + +"@chakra-ui/react-context@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.5.tgz#c434013ecc46c780539791d756dafdfc7c64320e" + integrity sha512-WYS0VBl5Q3/kNShQ26BP+Q0OGMeTQWco3hSiJWvO2wYLY7N1BLq6dKs8vyKHZfpwKh2YL2bQeAObi+vSkXp6tQ== + +"@chakra-ui/react-env@2.0.11": + version "2.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-2.0.11.tgz#d9d65fb695de7aff15e1d0e97d57bb7bedce5fa2" + integrity sha512-rPwUHReSWh7rbCw0HePa8Pvc+Q82fUFvVjHTIbXKnE6d+01cCE7j4f1NLeRD9pStKPI6sIZm9xTGvOCzl8F8iw== + +"@chakra-ui/react-types@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.4.tgz#b88152cbd2c04e51a422986185e2a4ba9b645fb7" + integrity sha512-kYhuSStw9pIJXrmQB7/J1u90bst31pEx9r25pyDG/rekk8E9JuqBR+z+UWODTFx00V2rtWCcJS5rPbONgvWX0A== + +"@chakra-ui/react-use-animation-state@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.6.tgz#2a324d3c67015a542ed589f899672d681889e1e7" + integrity sha512-M2kUzZkSBgDpfvnffh3kTsMIM3Dvn+CTMqy9zfY97NL4P3LAWL1MuFtKdlKfQ8hs/QpwS/ew8CTmCtaywn4sKg== + dependencies: + "@chakra-ui/dom-utils" "2.0.4" + "@chakra-ui/react-use-event-listener" "2.0.5" + +"@chakra-ui/react-use-callback-ref@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.5.tgz#862430dfbab8e1f0b8e04476e5e25469bd044ec9" + integrity sha512-vKnXleD2PzB0nGabY35fRtklMid4z7cecbMG0fkasNNsgWmrQcXJOuEKUUVCynL6FBU6gBnpKFi5Aqj6x+K4tw== + +"@chakra-ui/react-use-controllable-state@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.6.tgz#ec62aff9b9c00324a0a4c9a4523824a9ad5ef9aa" + integrity sha512-7WuKrhQkpSRoiI5PKBvuIsO46IIP0wsRQgXtStSaIXv+FIvIJl9cxQXTbmZ5q1Ds641QdAUKx4+6v0K/zoZEHg== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.5" + +"@chakra-ui/react-use-disclosure@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.6.tgz#db707ee119db829e9b21ff1c05e867938f1e27ba" + integrity sha512-4UPePL+OcCY37KZ585iLjg8i6J0sjpLm7iZG3PUwmb97oKHVHq6DpmWIM0VfSjcT6AbSqyGcd5BXZQBgwt8HWQ== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.5" + +"@chakra-ui/react-use-event-listener@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.5.tgz#949aa99878b25b23709452d3c80a1570c99747cc" + integrity sha512-etLBphMigxy/cm7Yg22y29gQ8u/K3PniR5ADZX7WVX61Cgsa8ciCqjTE9sTtlJQWAQySbWxt9+mjlT5zaf+6Zw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.5" + +"@chakra-ui/react-use-focus-effect@2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.7.tgz#bd03290cac32e0de6a71ce987f939a5e697bca04" + integrity sha512-wI8OUNwfbkusajLac8QtjfSyNmsNu1D5pANmnSHIntHhui6Jwv75Pxx7RgmBEnfBEpleBndhR9E75iCjPLhZ/A== + dependencies: + "@chakra-ui/dom-utils" "2.0.4" + "@chakra-ui/react-use-event-listener" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + "@chakra-ui/react-use-update-effect" "2.0.5" + +"@chakra-ui/react-use-focus-on-pointer-down@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.4.tgz#aeba543c451ac1b0138093234e71d334044daf84" + integrity sha512-L3YKouIi77QbXH9mSLGEFzJbJDhyrPlcRcuu+TSC7mYaK9E+3Ap+RVSAVxj+CfQz7hCWpikPecKDuspIPWlyuA== + dependencies: + "@chakra-ui/react-use-event-listener" "2.0.5" + +"@chakra-ui/react-use-interval@2.0.3": version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.3.tgz#406b984c653befd6c99636fcefb55bd01d436a7d" - integrity sha512-tPQjLEEuAw/DYLRw0cNs/g8tcdhZ3r21Sr9dTAzoyvfk0vbZ24gCXRElltW2GZLiFA63mAidzhPmc+yQF3Wtgg== + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.3.tgz#d5c7bce117fb25edb54e3e2c666e900618bb5bb2" + integrity sha512-Orbij5c5QkL4NuFyU4mfY/nyRckNBgoGe9ic8574VVNJIXfassevZk0WB+lvqBn5XZeLf2Tj+OGJrg4j4H9wzw== + dependencies: + "@chakra-ui/react-use-callback-ref" "2.0.5" -"@chakra-ui/react-context@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.0.4.tgz#1b6ab260d44d9073c95b975b7d1643f011e65e02" - integrity sha512-eBITFkf7fLSiMZrSdhweK4fYr41WUNMEeIEOP2dCWolE7WgKxNYaYleC+iRGY0GeXkFM2KYywUtixjJe29NuVA== - -"@chakra-ui/react-env@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-2.0.10.tgz#2eaa4ba64a14ecd2d279c32d5edfef7a6b5de3e8" - integrity sha512-3Yab5EbFcCGYzEsoijy4eA3354Z/JoXyk9chYIuW7Uwd+K6g/R8C0mUSAHeTmfp6Fix9kzDgerO5MWNM87b8cA== - -"@chakra-ui/react-types@2.0.3": +"@chakra-ui/react-use-latest-ref@2.0.3": version "2.0.3" - resolved "https://registry.npmjs.org/@chakra-ui/react-types/-/react-types-2.0.3.tgz" - integrity sha512-1mJYOQldFTALE0Wr3j6tk/MYvgQIp6CKkJulNzZrI8QN+ox/bJOh8OVP4vhwqvfigdLTui0g0k8M9h+j2ub/Mw== + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.3.tgz#27cf703858e65ecb5a0eef26215c794ad2a5353d" + integrity sha512-exNSQD4rPclDSmNwtcChUCJ4NuC2UJ4amyNGBqwSjyaK5jNHk2kkM7rZ6I0I8ul+26lvrXlSuhyv6c2PFwbFQQ== -"@chakra-ui/react-use-animation-state@2.0.5": +"@chakra-ui/react-use-merge-refs@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.0.5.tgz#f022baf0103c35aa494227b041422e7d2401b0d4" - integrity sha512-8gZIqZpMS5yTGlC+IqYoSrV13joiAYoeI0YR2t68WuDagcZ459OrjE57+gF04NLxfdV7eUgwqnpuv7IOLbJX/A== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.5.tgz#13181e1a43219c6a04a01f84de0188df042ee92e" + integrity sha512-uc+MozBZ8asaUpO8SWcK6D4svRPACN63jv5uosUkXJR+05jQJkUofkfQbf2HeGVbrWCr0XZsftLIm4Mt/QMoVw== -"@chakra-ui/react-use-callback-ref@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.0.4.tgz#5099ef1df4413af42e434945f541de99394ec96f" - integrity sha512-he7EQfwMA4mwiDDKvX7cHIJaboCqf7UD3KYHGUcIjsF4dSc2Y8X5Ze4w+hmVZoJWIe4DWUzb3ili2SUm8eTgPg== - -"@chakra-ui/react-use-controllable-state@2.0.5": +"@chakra-ui/react-use-outside-click@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.0.5.tgz#5ef9f600ae134a2a37fe080fd6231bbed83544bb" - integrity sha512-JrZZpMX24CUyfDuyqDczw9Z9IMvjH8ujETHK0Zu4M0SIsX/q4EqOwwngUFL03I2gx/O38HfSdeX8hMu4zbTAGA== + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.5.tgz#6a9896d2c2d35f3c301c3bb62bed1bf5290d1e60" + integrity sha512-WmtXUeVaMtxP9aUGGG+GQaDeUn/Bvf8TI3EU5mE1+TtqLHxyA9wtvQurynrogvpilLaBADwn/JeBeqs2wHpvqA== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" -"@chakra-ui/react-use-disclosure@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.0.5.tgz#bb52340f0e7d614cc95819bd21cffd050783f96c" - integrity sha512-kPLB9oxImASRhAbKfvfc03/lbAJbsXndEVRzd+nvvL+QZm2RRfnel3k6OIkWvGFOXXYOPE2+slLe8ZPwbTGg9g== +"@chakra-ui/react-use-pan-event@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.6.tgz#e489d61672e6f473b7fd362d816e2e27ed3b2af6" + integrity sha512-Vtgl3c+Mj4hdehFRFIgruQVXctwnG1590Ein1FiU8sVnlqO6bpug6Z+B14xBa+F+X0aK+DxnhkJFyWI93Pks2g== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-event-listener@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.0.4.tgz#3f893def57a7b10db6c355740dd1e82cd3216259" - integrity sha512-VqmalfKWMO8D21XuZO19WUtcP5xhbHXKzkggApTChZUN02UC5TC4pe0pYbDygoeUuNBhY+9lJKHeS08vYsljRg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-focus-effect@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.0.5.tgz#b554277c38e84468b019e08a73579e9700e1003a" - integrity sha512-sbe1QnsXXfjukM+laxbKnT0UnMpHe/7kTzEPG/BYM6/ZDUUmrC1Nz+8l+3H/52iWIaruikDBdif/Xd37Yvu3Kg== - dependencies: - "@chakra-ui/dom-utils" "2.0.3" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" - -"@chakra-ui/react-use-focus-on-pointer-down@2.0.3": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.0.3.tgz#8b605063c9e707a18b021fbcaed8919c8660d1ed" - integrity sha512-8cKmpv26JnblexNaekWxEDI7M+MZnJcp1PJUz6lByjfQ1m4YjFr1cdbdhG4moaqzzYs7vTmO/qL8KVq8ZLUwyQ== - dependencies: - "@chakra-ui/react-use-event-listener" "2.0.4" - -"@chakra-ui/react-use-interval@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.0.2.tgz#6d1d5d5b5c5604ee2ea47f1e140e6eaf6e885df5" - integrity sha512-5U1c0pEB5n0Yri0E4RdFXWx2RVBZBBhD8Uu49dM33jkIguCbIPmZ+YgVry5DDzCHyz4RgDg4yZKOPK0PI8lEUg== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-latest-ref@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.0.2.tgz#4895d3ae2dc93a660ed86aaec7021b729830d3d2" - integrity sha512-Ra/NMV+DSQ3n0AdKsyIqdgnFzls5UntabtIRfDXLrqmJ4tI0a1tDdop2qop0Ue87AcqD9P1KtQue4KPx7wCElw== - -"@chakra-ui/react-use-merge-refs@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.0.4.tgz#c23f10fda1d3a6327a48708a8a7ad4b62ba918d3" - integrity sha512-aoWvtE5tDQNaLCiNUI6WV+MA2zVcCLR5mHSCISmowlTXyXOqOU5Fo9ZoUftzrmgCJpDu5x1jfUOivxuHUueb0g== - -"@chakra-ui/react-use-outside-click@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.0.4.tgz#977d873cfedec615c8e3acd48fca7b094b464b6e" - integrity sha512-uerJKS8dqg2kHs1xozA5vcCqW0UInuwrfCPb+rDWBTpu7aEqxABMw9W3e4gfOABrAjhKz2I0a/bu2i8zbVwdLw== - dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" - -"@chakra-ui/react-use-pan-event@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.0.5.tgz#9269d4b798d1447e18b00ee0b28fa52c5c8efb26" - integrity sha512-nhE3b85++EEmBD2v6m46TLoA4LehSCZ349P8kvEjw/RC0K6XDOZndaBucIeAlnpEENSSUpczFfMSOLxSHdu0oA== - dependencies: - "@chakra-ui/event-utils" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" + "@chakra-ui/event-utils" "2.0.6" + "@chakra-ui/react-use-latest-ref" "2.0.3" framesync "5.3.0" -"@chakra-ui/react-use-previous@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.2.tgz#1091ae8abc2082ab504e3742f8b1d75409ae7b27" - integrity sha512-ap/teLRPKopaHYD80fnf0TR/NpTWHJO5VdKg6sPyF1y5ediYLAzPT1G2OqMCj4QfJsYDctioT142URDYe0Nn7w== +"@chakra-ui/react-use-previous@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.0.3.tgz#9da3d53fd75f1c3da902bd6af71dcb1a7be37f31" + integrity sha512-A2ODOa0rm2HM4aqXfxxI0zPLcn5Q7iBEjRyfIQhb+EH+d2OFuj3L2slVoIpp6e/km3Xzv2d+u/WbjgTzdQ3d0w== -"@chakra-ui/react-use-safe-layout-effect@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.2.tgz#31088eeb4b2a6910251683ddb15fb855d6127adf" - integrity sha512-gl5HDq9RVeDJiT8udtpx12KRV8JPLJHDIUX8f/yZcKpXow0C7FFGg5Yy5I9397NQog5ZjKMuOg+AUq9TLJxsyQ== +"@chakra-ui/react-use-safe-layout-effect@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.0.3.tgz#bf63ac8c94460aa1b20b6b601a0ea873556ffb1b" + integrity sha512-dlTvQURzmdfyBbNdydgO4Wy2/HV8aJN8LszTtyb5vRZsyaslDM/ftcxo8E8QjHwRLD/V1Epb/A8731QfimfVaQ== -"@chakra-ui/react-use-size@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.4.tgz#3634782f8dab6aa2a37699188afa89251cbae8f3" - integrity sha512-W6rgTLuoSC4ovZtqYco8cG+yBadH3bhlg92T5lgpKDakSDr0mXcZdbGx6g0AOkgxXm0V1jWNGO1743wudtF7ew== +"@chakra-ui/react-use-size@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.0.5.tgz#4bbffb64f97dcfe1d7edeb0f03bb1d5fbc48df64" + integrity sha512-4arAApdiXk5uv5ZeFKltEUCs5h3yD9dp6gTIaXbAdq+/ENK3jMWTwlqzNbJtCyhwoOFrblLSdBrssBMIsNQfZQ== dependencies: "@zag-js/element-size" "0.1.0" -"@chakra-ui/react-use-timeout@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.2.tgz#f1378de0d5e01f7aee60d5b9ec3205e1fc7d2fc4" - integrity sha512-n6zb3OmxtDmRMxYkDgILqKh15aDOa8jNLHBlqHzmlL6mEGNKmMFPW9j/KvpAqSgKjUTDRnnXcpneprTMKy/yrw== +"@chakra-ui/react-use-timeout@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.0.3.tgz#16ca397dbca55a64811575884cb81a348d86d4e2" + integrity sha512-rBBUkZSQq3nJQ8fuMkgZNY2Sgg4vKiKNp05GxAwlT7TitOfVZyoTriqQpqz296bWlmkICTZxlqCWfE5fWpsTsg== dependencies: - "@chakra-ui/react-use-callback-ref" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" -"@chakra-ui/react-use-update-effect@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.4.tgz#522bc58b943fffe540a91f7a096d42e4a91b9748" - integrity sha512-F/I9LVnGAQyvww+x7tQb47wCwjhMYjpxtM1dTg1U3oCEXY0yF1Ts3NJLUAlsr3nAW6epJIwWx61niC7KWpam1w== +"@chakra-ui/react-use-update-effect@2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.0.5.tgz#aede8f13f2b3de254b4ffa3b8cec1b70bd2876c5" + integrity sha512-y9tCMr1yuDl8ATYdh64Gv8kge5xE1DMykqPDZw++OoBsTaWr3rx40wblA8NIWuSyJe5ErtKP2OeglvJkYhryJQ== -"@chakra-ui/react-utils@2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.8.tgz#1db4e920386f4afbf44fe9dd8aaaf6f22eefb371" - integrity sha512-OSHHBKZlJWTi2NZcPnBx1PyZvLQY+n5RPBtcri7/89EDdAwz2NdEhp2Dz1yQRctOSCF1kB/rnCYDP1U0oRk9RQ== +"@chakra-ui/react-utils@2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.9.tgz#5cdf0bc8dee57c15f15ace04fbba574ec8aa6ecc" + integrity sha512-nlwPBVlQmcl1PiLzZWyrT3FSnt3vKSkBMzQ0EF4SJWA/nOIqTvmffb5DCzCqPzgQaE/Da1Xgus+JufFGM8GLCQ== dependencies: - "@chakra-ui/utils" "2.0.11" + "@chakra-ui/utils" "2.0.12" "@chakra-ui/react@^2.3.1": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.3.6.tgz#a6d3e092cab433fcd9cf8e9876756818c4261df6" - integrity sha512-xo43UU+yMqRGHZLU4fSgzojeRl5stlIfT+GLbT9CUVEm0HMJCt2m8RsNPBvGOMzANdC+bzwSiOm+MNzQBi9IBQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.4.1.tgz#3f3db03e3aa7bcb0bee76427824b3437a9509166" + integrity sha512-qZVRrQi5JRIc44EaeOaXvXt6EdWhkQjhFFL8hyH0RH6cSFlotmmzCHBT5N1jC6nqXFn5OOxOWMD9FIVsbI56hQ== dependencies: - "@chakra-ui/accordion" "2.1.2" - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/avatar" "2.2.0" - "@chakra-ui/breadcrumb" "2.1.0" - "@chakra-ui/button" "2.0.11" - "@chakra-ui/checkbox" "2.2.2" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/control-box" "2.0.10" - "@chakra-ui/counter" "2.0.10" - "@chakra-ui/css-reset" "2.0.8" - "@chakra-ui/editable" "2.0.13" - "@chakra-ui/form-control" "2.0.11" - "@chakra-ui/hooks" "2.1.0" - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/image" "2.0.11" - "@chakra-ui/input" "2.0.12" - "@chakra-ui/layout" "2.1.9" - "@chakra-ui/live-region" "2.0.10" - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/menu" "2.1.2" - "@chakra-ui/modal" "2.2.2" - "@chakra-ui/number-input" "2.0.12" - "@chakra-ui/pin-input" "2.0.15" - "@chakra-ui/popover" "2.1.1" - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/progress" "2.0.12" - "@chakra-ui/provider" "2.0.20" - "@chakra-ui/radio" "2.0.12" - "@chakra-ui/react-env" "2.0.10" - "@chakra-ui/select" "2.0.12" - "@chakra-ui/skeleton" "2.0.17" - "@chakra-ui/slider" "2.0.12" - "@chakra-ui/spinner" "2.0.10" - "@chakra-ui/stat" "2.0.11" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/switch" "2.0.14" - "@chakra-ui/system" "2.3.0" - "@chakra-ui/table" "2.0.11" - "@chakra-ui/tabs" "2.1.4" - "@chakra-ui/tag" "2.0.11" - "@chakra-ui/textarea" "2.0.12" - "@chakra-ui/theme" "2.1.14" - "@chakra-ui/theme-utils" "2.0.1" - "@chakra-ui/toast" "4.0.0" - "@chakra-ui/tooltip" "2.2.0" - "@chakra-ui/transition" "2.0.11" - "@chakra-ui/utils" "2.0.11" - "@chakra-ui/visually-hidden" "2.0.11" + "@chakra-ui/accordion" "2.1.3" + "@chakra-ui/alert" "2.0.12" + "@chakra-ui/avatar" "2.2.1" + "@chakra-ui/breadcrumb" "2.1.1" + "@chakra-ui/button" "2.0.12" + "@chakra-ui/card" "2.1.1" + "@chakra-ui/checkbox" "2.2.4" + "@chakra-ui/close-button" "2.0.12" + "@chakra-ui/control-box" "2.0.11" + "@chakra-ui/counter" "2.0.11" + "@chakra-ui/css-reset" "2.0.10" + "@chakra-ui/editable" "2.0.15" + "@chakra-ui/form-control" "2.0.12" + "@chakra-ui/hooks" "2.1.2" + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/image" "2.0.12" + "@chakra-ui/input" "2.0.13" + "@chakra-ui/layout" "2.1.10" + "@chakra-ui/live-region" "2.0.11" + "@chakra-ui/media-query" "3.2.8" + "@chakra-ui/menu" "2.1.4" + "@chakra-ui/modal" "2.2.3" + "@chakra-ui/number-input" "2.0.13" + "@chakra-ui/pin-input" "2.0.16" + "@chakra-ui/popover" "2.1.3" + "@chakra-ui/popper" "3.0.9" + "@chakra-ui/portal" "2.0.11" + "@chakra-ui/progress" "2.1.1" + "@chakra-ui/provider" "2.0.23" + "@chakra-ui/radio" "2.0.13" + "@chakra-ui/react-env" "2.0.11" + "@chakra-ui/select" "2.0.13" + "@chakra-ui/skeleton" "2.0.18" + "@chakra-ui/slider" "2.0.13" + "@chakra-ui/spinner" "2.0.11" + "@chakra-ui/stat" "2.0.12" + "@chakra-ui/styled-system" "2.3.5" + "@chakra-ui/switch" "2.0.16" + "@chakra-ui/system" "2.3.3" + "@chakra-ui/table" "2.0.12" + "@chakra-ui/tabs" "2.1.5" + "@chakra-ui/tag" "2.0.12" + "@chakra-ui/textarea" "2.0.13" + "@chakra-ui/theme" "2.2.1" + "@chakra-ui/theme-utils" "2.0.4" + "@chakra-ui/toast" "4.0.3" + "@chakra-ui/tooltip" "2.2.1" + "@chakra-ui/transition" "2.0.12" + "@chakra-ui/utils" "2.0.12" + "@chakra-ui/visually-hidden" "2.0.13" -"@chakra-ui/select@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.12.tgz#9b485e6a28c9aa468bc1c0d8a78aabd985b0c370" - integrity sha512-NCDMb0w48GYCHmazVSQ7/ysEpbnri+Up6n+v7yytf6g43TPRkikvK5CsVgLnAEj0lIdCJhWXTcZer5wG5KOEgA== +"@chakra-ui/select@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.0.13.tgz#60a7302f44e49fc22d251bbcdbae24ec64f5cc4c" + integrity sha512-5MHqD2OlnLdPt8FQVxfgMJZKOTdcbu3cMFGCS2X9XCxJQkQa4kPfXq3N6BRh5L5XFI+uRsmk6aYJoawZiwNJPg== dependencies: - "@chakra-ui/form-control" "2.0.11" + "@chakra-ui/form-control" "2.0.12" -"@chakra-ui/shared-utils@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.2.tgz#1df08133194c12ac4df9302604ec37784c2bb026" - integrity sha512-wC58Fh6wCnFFQyiebVZ0NI7PFW9+Vch0QE6qN7iR+bLseOzQY9miYuzPJ1kMYiFd6QTOmPJkI39M3wHqrPYiOg== +"@chakra-ui/shared-utils@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.3.tgz#97cbc11282e381ebd9f581c603088f9d60ead451" + integrity sha512-pCU+SUGdXzjAuUiUT8mriekL3tJVfNdwSTIaNeip7k/SWDzivrKGMwAFBxd3XVTDevtVusndkO4GJuQ3yILzDg== -"@chakra-ui/skeleton@2.0.17": - version "2.0.17" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.17.tgz#737e08f771980f5b73060dc6c940691e7759d044" - integrity sha512-dL7viXEKDEzmAJGbHMj+QbGl9PAd0VWztEcWcz5wOGfmAcJllA0lVh6NmG/yqLb6iXPCX4Y1Y0Yurm459TEYWg== +"@chakra-ui/skeleton@2.0.18": + version "2.0.18" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.0.18.tgz#a2af241f0b1b692db4d10b90a887107a5e401c7d" + integrity sha512-qjcD8BgVx4kL8Lmb8EvmmDGM2ICl6CqhVE2LShJrgG7PDM6Rt6rYM617kqLurLYZjbJUiwgf9VXWifS0IpT31Q== dependencies: - "@chakra-ui/media-query" "3.2.7" - "@chakra-ui/react-use-previous" "2.0.2" + "@chakra-ui/media-query" "3.2.8" + "@chakra-ui/react-use-previous" "2.0.3" -"@chakra-ui/slider@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.12.tgz#42fc5fe385c507276da29f4aa49a6408ee853978" - integrity sha512-Cna04J7e4+F3tJNb7tRNfPP+koicbDsKJBp+f1NpR32JbRzIfrf2Vdr4hfD5/uOfC4RGxnVInNZzZLGBelLtLw== +"@chakra-ui/slider@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.0.13.tgz#5c64bb8346f5310688845fa72363b1a35bc1560b" + integrity sha512-MypqZrKFNFPH8p0d2g2DQacl5ylUQKlGKeBu099ZCmT687U2Su3cq1wOGNGnD6VZvtwDYMKXn7kXPSMW06aBcg== dependencies: - "@chakra-ui/number-utils" "2.0.4" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-callback-ref" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-latest-ref" "2.0.2" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-pan-event" "2.0.5" - "@chakra-ui/react-use-size" "2.0.4" - "@chakra-ui/react-use-update-effect" "2.0.4" + "@chakra-ui/number-utils" "2.0.5" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-callback-ref" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-latest-ref" "2.0.3" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-pan-event" "2.0.6" + "@chakra-ui/react-use-size" "2.0.5" + "@chakra-ui/react-use-update-effect" "2.0.5" -"@chakra-ui/spinner@2.0.10": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.10.tgz#f8b1b6f1c8f45e3aeab44d5ab1f1debc71e52573" - integrity sha512-SwId1xPaaFAaEYrR9eHkQHAuB66CbxwjWaQonEjeEUSh9ecxkd5WbXlsQSyf2hVRIqXJg0m3HIYblcKUsQt9Rw== - -"@chakra-ui/stat@2.0.11": +"@chakra-ui/spinner@2.0.11": version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.11.tgz#0c052aee68486a892e09e802bb569dc984e31eae" - integrity sha512-ZPFK2fKufDSHD8bp/KhO3jLgW/b3PzdG4zV+7iTO7OYjxm5pkBfBAeMqfXGx4cl51rtWUKzsY0HV4vLLjcSjHw== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.0.11.tgz#a5dd76b6cb0f3524d9b90b73fa4acfb6adc69f33" + integrity sha512-piO2ghWdJzQy/+89mDza7xLhPnW7pA+ADNbgCb1vmriInWedS41IBKe+pSPz4IidjCbFu7xwKE0AerFIbrocCA== -"@chakra-ui/styled-system@2.3.4": - version "2.3.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.3.4.tgz#6022c5a675b54a69b1d3c2d3e60258901dc7b82a" - integrity sha512-Lozbedu+GBj4EbHB/eGv475SFDLApsIEN9gNKiZJBJAE1HIhHn3Seh1iZQSrHC/Beq+D5cQq3Z+yPn3bXtFU7w== +"@chakra-ui/stat@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.0.12.tgz#bca87fb83c9bf2c365e8697f33f228721d9a6b28" + integrity sha512-3MTt4nA46AvlIuE6OP2O1Nna9+vcIZD1E9G4QLKwPoJ5pDHKcY4Y0t4oDdbawykthyj2fIBko7FiMIHTaAOjqg== + dependencies: + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + +"@chakra-ui/styled-system@2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.3.5.tgz#88f1530d77c30285c6aa7c561d4bd770bebd705c" + integrity sha512-Xj78vEq/R+1OVx36tJnAb/vLtX6DD9k/yxj3lCigl3q5Qjr6aglPBjqHdfFbGaQeB0Gt4ABPyxUDO3sAhdxC4w== dependencies: csstype "^3.0.11" lodash.mergewith "4.6.2" -"@chakra-ui/switch@2.0.14": - version "2.0.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.14.tgz#62372355bf73c19896b39fb7e75c132333c5a882" - integrity sha512-6lzhCkJq7vbD3yGaorGLp0ZZU4ewdKwAu0e62qR8TfYZwbcbpkXbBKloIHbA2XKOduISzS2WYqjmoP6jSKIxrA== +"@chakra-ui/switch@2.0.16": + version "2.0.16" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.0.16.tgz#b8d1275d723d384a22fe8900fc2913a808b8ceaa" + integrity sha512-uLGjXHaxjCvf97jrwTuYtHSAzep/Mb8hSr/D1BRlBNz6E0kHGRaKANl/pAZAK1z7ZzvyYokK65Wpce2GQ4U/dQ== dependencies: - "@chakra-ui/checkbox" "2.2.2" + "@chakra-ui/checkbox" "2.2.4" -"@chakra-ui/system@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.3.0.tgz#b7ba122872d4d48806fbf994f1187680ae2296a6" - integrity sha512-BxikahglBI0uU8FE3anEorDTU5oKTUuBIEKVcQrEVnrbNuRJEy1OVYyCNXfqW3MpruRO9ypYV2bWt02AZZWEaQ== +"@chakra-ui/system@2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.3.3.tgz#1557f573a3394e375411631b0836f0e79c9f68f9" + integrity sha512-nOEXC08d4PiK/4QwSV4tnci2SoWjDHEVSveWW9qoRRr1iZUbQffpwYyJY4pBpPJE7CsA2w3GXK7NdMFRwPtamQ== dependencies: - "@chakra-ui/color-mode" "2.1.9" - "@chakra-ui/react-utils" "2.0.8" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme-utils" "2.0.1" - "@chakra-ui/utils" "2.0.11" + "@chakra-ui/color-mode" "2.1.10" + "@chakra-ui/react-utils" "2.0.9" + "@chakra-ui/styled-system" "2.3.5" + "@chakra-ui/theme-utils" "2.0.4" + "@chakra-ui/utils" "2.0.12" react-fast-compare "3.2.0" -"@chakra-ui/table@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.11.tgz#9bd25d5383c94982b89e792675bc1d1f667f81f3" - integrity sha512-zQTiqPKEgjdeO/PG0FByn0fH4sPF7dLJF+YszrIzDc6wvpD96iY6MYLeV+CSelbH1g0/uibcJ10PSaFStfGUZg== - dependencies: - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/tabs@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.4.tgz#38d9748ce2cfa583a123c0f695ea1cbce1a6bd42" - integrity sha512-/CQGj1lC9lvruT5BCYZH6Ok64W4CDSysDXuR2XPZXIih9kVOdXQEMXxG8+3vc63WqTBjHuURtZI0g8ouOy84ew== - dependencies: - "@chakra-ui/clickable" "2.0.10" - "@chakra-ui/descendant" "3.0.10" - "@chakra-ui/lazy-utils" "2.0.2" - "@chakra-ui/react-children-utils" "2.0.3" - "@chakra-ui/react-context" "2.0.4" - "@chakra-ui/react-use-controllable-state" "2.0.5" - "@chakra-ui/react-use-merge-refs" "2.0.4" - "@chakra-ui/react-use-safe-layout-effect" "2.0.2" - -"@chakra-ui/tag@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-2.0.11.tgz#14702adf5d1456dbbb84ea7a4b314953b92c323f" - integrity sha512-iJJcX+4hl+6Se/8eCRzG+xxDwZfiYgc4Ly/8s93M0uW2GLb+ybbfSE2DjeKSyk3mQVeGzuxGkBfDHH2c2v26ew== - dependencies: - "@chakra-ui/icon" "3.0.11" - "@chakra-ui/react-context" "2.0.4" - -"@chakra-ui/textarea@2.0.12": +"@chakra-ui/table@2.0.12": version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.12.tgz#469c1d64cb855b3b534dcd7fcc1d927e60da8da1" - integrity sha512-msR9YMynRXwZIqR6DgjQ2MogA/cW1syBx/R0v3es+9Zx8zlbuKdoLhYqajHteCup8dUzTeIH2Vs2vAwgq4wu5A== + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.0.12.tgz#387653cf660318b13086b6497aca2b671deb055a" + integrity sha512-TSxzpfrOoB+9LTdNTMnaQC6OTsp36TlCRxJ1+1nAiCmlk+m+FiNzTQsmBalDDhc29rm+6AdRsxSPsjGWB8YVwg== dependencies: - "@chakra-ui/form-control" "2.0.11" + "@chakra-ui/react-context" "2.0.5" -"@chakra-ui/theme-tools@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.12.tgz#b29d9fb626d35e3b00f532c64f95ea261d8f6997" - integrity sha512-mnMlKSmXkCjHUJsKWmJbgBTGF2vnLaMLv1ihkBn5eQcCubMQrBLTiMAEFl5pZdzuHItU6QdnLGA10smcXbNl0g== +"@chakra-ui/tabs@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-2.1.5.tgz#827b0e71eb173c09c31dcbbe05fc1146f4267229" + integrity sha512-XmnKDclAJe0FoW4tdC8AlnZpPN5fcj92l4r2sqiL9WyYVEM71hDxZueETIph/GTtfMelG7Z8e5vBHP4rh1RT5g== dependencies: - "@chakra-ui/anatomy" "2.0.7" + "@chakra-ui/clickable" "2.0.11" + "@chakra-ui/descendant" "3.0.11" + "@chakra-ui/lazy-utils" "2.0.3" + "@chakra-ui/react-children-utils" "2.0.4" + "@chakra-ui/react-context" "2.0.5" + "@chakra-ui/react-use-controllable-state" "2.0.6" + "@chakra-ui/react-use-merge-refs" "2.0.5" + "@chakra-ui/react-use-safe-layout-effect" "2.0.3" + +"@chakra-ui/tag@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-2.0.12.tgz#8f8e838efc1c9c504c92bbfd36f2435e8cdcfa6d" + integrity sha512-LmPnE6aFF0pfscgYRKZbkWvG7detszwNdcmalQJdp2C8E/xuqi9Vj9RWU/bmRyWHJN+8R603mvPVWj5oN0rarA== + dependencies: + "@chakra-ui/icon" "3.0.12" + "@chakra-ui/react-context" "2.0.5" + +"@chakra-ui/textarea@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.0.13.tgz#ff32e3ad61880b13514df1c6f6b62176e8f91823" + integrity sha512-tMiBGimVB+Z8T+yAQ4E45ECmCix0Eisuukf4wUBOpdSRWaArpAoA4RuA34z7OoMbNa3fxEVcvnd2apX1InBtsQ== + dependencies: + "@chakra-ui/form-control" "2.0.12" + +"@chakra-ui/theme-tools@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.0.13.tgz#cde5503b4044832ab659904281e8a260deae73bb" + integrity sha512-Dvai4lljtrs9f2aha3b9yajmxroNaVGNvkKkwh77dRW2jcNNBXepkGWfNLXVkP68Yydz5O+Lt5DKvETrEho9cQ== + dependencies: + "@chakra-ui/anatomy" "2.1.0" "@ctrl/tinycolor" "^3.4.0" -"@chakra-ui/theme-utils@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.1.tgz#a3dc99331ba943e155dd683fe25ce302e3084db0" - integrity sha512-NDwzgTPxm+v3PAJlSSU1MORHLMqO9vsRJ+ObELD5wpvE9aEyRziN/AZSoK2oLwCQMPEiU7R99K5ij1E6ptMt7w== +"@chakra-ui/theme-utils@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.4.tgz#7357dd03734bc74d3a8be09db19d6b73c8f34075" + integrity sha512-vrYuZxzc31c1bevfJRCk4j68dUw4Bxt6QAm3RZcUQyvTnS6q5FhMz+R1X6vS3+IfIhSscZFxwRQSp/TpyY4Vtw== dependencies: - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme" "2.1.14" + "@chakra-ui/styled-system" "2.3.5" + "@chakra-ui/theme" "2.2.1" lodash.mergewith "4.6.2" -"@chakra-ui/theme@2.1.14": - version "2.1.14" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-2.1.14.tgz#4726d65a65515f8ee96b5f2a725d0d17804ddfc9" - integrity sha512-6EYJCQlrjSjNAJvZmw1un50F8+sQDFsdwu/7UzWe+TeANpKlz4ZcHbh0gkl3PD62lGis+ehITUwqRm8htvDOjw== +"@chakra-ui/theme@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-2.2.1.tgz#83f5e484640bf8d97075f9fa3ca41f02c5caf3f7" + integrity sha512-6qEJMfnTjB5vGoY1kO/fDarK0Ivrb77UzDw8rY0aTHbjLJkOVxtd7d2H7m8xufh6gecCI5HuXqq8I297pLYm+w== dependencies: - "@chakra-ui/anatomy" "2.0.7" - "@chakra-ui/theme-tools" "2.0.12" + "@chakra-ui/anatomy" "2.1.0" + "@chakra-ui/theme-tools" "2.0.13" -"@chakra-ui/toast@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-4.0.0.tgz#797c34c4ecfcad7c6899c1cda221af0ff04d5d0b" - integrity sha512-abeeloJac5T9WK2IN76fEM5FSRH+erNXln2HqDf5wLBn33avSBXWyTiUL8riVSUqto0lrIn6FuK/MmKo0DH4og== +"@chakra-ui/toast@4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-4.0.3.tgz#7304228663495d39fd4bd72ffc320f5a279265ac" + integrity sha512-n6kShxGrHikrJO1vC5cPFbvz5LjG56NhVch3tmyk2g2yrJ87zbNGQqQ2BlLuJcEVFDu3tu+wC1qHdXs8WU4bjg== dependencies: - "@chakra-ui/alert" "2.0.11" - "@chakra-ui/close-button" "2.0.11" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-use-timeout" "2.0.2" - "@chakra-ui/react-use-update-effect" "2.0.4" - "@chakra-ui/styled-system" "2.3.4" - "@chakra-ui/theme" "2.1.14" + "@chakra-ui/alert" "2.0.12" + "@chakra-ui/close-button" "2.0.12" + "@chakra-ui/portal" "2.0.11" + "@chakra-ui/react-use-timeout" "2.0.3" + "@chakra-ui/react-use-update-effect" "2.0.5" + "@chakra-ui/styled-system" "2.3.5" + "@chakra-ui/theme" "2.2.1" -"@chakra-ui/tooltip@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.0.tgz#24e005f831cddf1c0e41dd246ed2771a97b8637c" - integrity sha512-oB97aQJBW+U3rRIt1ct7NaDRMnbW16JQ5ZBCl3BzN1VJWO3djiNuscpjVdZSceb+FdGSFo+GoDozp1ZwqdfFeQ== +"@chakra-ui/tooltip@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.2.1.tgz#ee08a7759f2b88bdc5d73b4e459bee3256ba5bcb" + integrity sha512-X/VIYgegx1Ab6m0PSI/iISo/hRAe4Xv+hOwinIxIUUkLS8EOtBvq4RhlB6ieFn8jAAPDzPKJW6QFqz8ecJdUiw== dependencies: - "@chakra-ui/popper" "3.0.8" - "@chakra-ui/portal" "2.0.10" - "@chakra-ui/react-types" "2.0.3" - "@chakra-ui/react-use-disclosure" "2.0.5" - "@chakra-ui/react-use-event-listener" "2.0.4" - "@chakra-ui/react-use-merge-refs" "2.0.4" + "@chakra-ui/popper" "3.0.9" + "@chakra-ui/portal" "2.0.11" + "@chakra-ui/react-types" "2.0.4" + "@chakra-ui/react-use-disclosure" "2.0.6" + "@chakra-ui/react-use-event-listener" "2.0.5" + "@chakra-ui/react-use-merge-refs" "2.0.5" -"@chakra-ui/transition@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.11.tgz#b2cfeb2150871c635cb9d03d9b525481dbe56f56" - integrity sha512-O0grc162LARPurjz1R+J+zr4AAKsVwN5+gaqLfZLMWg6TpvczJhwEA2fLCNAdkC/gomere390bJsy52xfUacUw== +"@chakra-ui/transition@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.0.12.tgz#876c6ed24e442a720a8570490a93cb1f87008700" + integrity sha512-ff6eU+m08ccYfCkk0hKfY/XlmGxCrfbBgsKgV4mirZ4SKUL1GVye8CYuHwWQlBJo+8s0yIpsTNxAuX4n/cW9/w== -"@chakra-ui/utils@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.11.tgz#8e773f900a8356bd10c48b59151a781dba1c7b70" - integrity sha512-4ZQdK6tbOuTrUCsAQBHWo7tw5/Q6pBV93ZbVpats61cSWMFGv32AIQw9/hA4un2zDeSWN9ZMVLNjAY2Dq/KQOA== +"@chakra-ui/utils@2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.12.tgz#5ab8a4529fca68d9f8c6722004f6a5129b0b75e9" + integrity sha512-1Z1MgsrfMQhNejSdrPJk8v5J4gCefHo+1wBmPPHTz5bGEbAAbZ13aXAfXy8w0eFy0Nvnawn0EHW7Oynp/MdH+Q== dependencies: "@types/lodash.mergewith" "4.6.6" css-box-model "1.2.1" framesync "5.3.0" lodash.mergewith "4.6.2" -"@chakra-ui/visually-hidden@2.0.11": - version "2.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.11.tgz#b2eb236e803451b39cdfcce3c5ab52e773c066a3" - integrity sha512-e+5amYvnsmEQdiWH4XMyvrtGTdwz//+48vwj5CsNWWcselzkwqodmciy5rIrT71/SCQDOtmgnL7ZWAUOffxfsQ== +"@chakra-ui/visually-hidden@2.0.13": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.0.13.tgz#6553467d93f206d17716bcbe6e895a84eef87472" + integrity sha512-sDEeeEjLfID333EC46NdCbhK2HyMXlpl5HzcJjuwWIpyVz4E1gKQ9hlwpq6grijvmzeSywQ5D3tTwUrvZck4KQ== "@ctrl/tinycolor@^3.4.0": version "3.4.1" - resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== +"@cush/relative@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@cush/relative/-/relative-1.0.0.tgz#8cd1769bf9bde3bb27dac356b1bc94af40f6cc16" + integrity sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA== + "@emotion/babel-plugin@^11.10.5": version "11.10.5" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c" @@ -1029,19 +1043,19 @@ "@emotion/hash@^0.9.0": version "0.9.0" - resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== "@emotion/is-prop-valid@^0.8.2": version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== dependencies: "@emotion/memoize" "0.7.4" "@emotion/is-prop-valid@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== dependencies: "@emotion/memoize" "^0.8.0" @@ -1053,7 +1067,7 @@ "@emotion/memoize@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== "@emotion/react@^11.10.4": @@ -1100,33 +1114,33 @@ "@emotion/unitless@^0.8.0": version "0.8.0" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== "@emotion/use-insertion-effect-with-fallbacks@^1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz#ffadaec35dbb7885bd54de3fa267ab2f860294df" integrity sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A== "@emotion/utils@^1.2.0": version "1.2.0" - resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== "@emotion/weak-memoize@^0.3.0": version "0.3.0" - resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== -"@esbuild/android-arm@0.15.12": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.12.tgz#e548b10a5e55b9e10537a049ebf0bc72c453b769" - integrity sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA== +"@esbuild/android-arm@0.15.15": + version "0.15.15" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.15.tgz#35b3cc0f9e69cb53932d44f60b99dd440335d2f0" + integrity sha512-JJjZjJi2eBL01QJuWjfCdZxcIgot+VoK6Fq7eKF9w4YHm9hwl7nhBR1o2Wnt/WcANk5l9SkpvrldW1PLuXxcbw== -"@esbuild/linux-loong64@0.15.12": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz#475b33a2631a3d8ca8aa95ee127f9a61d95bf9c1" - integrity sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw== +"@esbuild/linux-loong64@0.15.15": + version "0.15.15" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.15.tgz#32c65517a09320b62530867345222fde7794fbe1" + integrity sha512-lhz6UNPMDXUhtXSulw8XlFAtSYO26WmHQnCi2Lg2p+/TMiJKNLtZCYUxV4wG6rZMzXmr8InGpNwk+DLT2Hm0PA== "@eslint/eslintrc@^1.3.3": version "1.3.3" @@ -1145,19 +1159,19 @@ "@floating-ui/core@^0.7.3": version "0.7.3" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-0.7.3.tgz" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86" integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg== "@floating-ui/dom@^0.5.3": version "0.5.4" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.5.4.tgz" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1" integrity sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg== dependencies: "@floating-ui/core" "^0.7.3" "@floating-ui/react-dom@0.7.2": version "0.7.2" - resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864" integrity sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg== dependencies: "@floating-ui/dom" "^0.5.3" @@ -1174,17 +1188,17 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== dependencies: "@jridgewell/set-array" "^1.0.0" @@ -1192,7 +1206,7 @@ "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -1206,7 +1220,7 @@ "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": @@ -1224,7 +1238,7 @@ "@motionone/animation@^10.13.1": version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/animation/-/animation-10.14.0.tgz" + resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.14.0.tgz#2f2a3517183bb58d82e389aac777fe0850079de6" integrity sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ== dependencies: "@motionone/easing" "^10.14.0" @@ -1234,7 +1248,7 @@ "@motionone/dom@10.13.1": version "10.13.1" - resolved "https://registry.npmjs.org/@motionone/dom/-/dom-10.13.1.tgz" + resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.13.1.tgz#fc29ea5d12538f21b211b3168e502cfc07a24882" integrity sha512-zjfX+AGMIt/fIqd/SL1Lj93S6AiJsEA3oc5M9VkUr+Gz+juRmYN1vfvZd6MvEkSqEjwPQgcjN7rGZHrDB9APfQ== dependencies: "@motionone/animation" "^10.13.1" @@ -1246,7 +1260,7 @@ "@motionone/easing@^10.14.0": version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/easing/-/easing-10.14.0.tgz" + resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.14.0.tgz#d8154b7f71491414f3cdee23bd3838d763fffd00" integrity sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA== dependencies: "@motionone/utils" "^10.14.0" @@ -1254,7 +1268,7 @@ "@motionone/generators@^10.13.1": version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/generators/-/generators-10.14.0.tgz" + resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.14.0.tgz#e05d9dd56da78a4b92db99185848a0f3db62242d" integrity sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg== dependencies: "@motionone/types" "^10.14.0" @@ -1263,12 +1277,12 @@ "@motionone/types@^10.13.0", "@motionone/types@^10.14.0": version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/types/-/types-10.14.0.tgz" + resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.14.0.tgz#148c34f3270b175397e49c3058b33fab405c21e3" integrity sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ== "@motionone/utils@^10.13.1", "@motionone/utils@^10.14.0": version "10.14.0" - resolved "https://registry.npmjs.org/@motionone/utils/-/utils-10.14.0.tgz" + resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.14.0.tgz#a19a3464ed35b08506747b062d035c7bc9bbe708" integrity sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw== dependencies: "@motionone/types" "^10.14.0" @@ -1277,7 +1291,7 @@ "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" @@ -1285,7 +1299,7 @@ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": @@ -1298,26 +1312,26 @@ "@popperjs/core@^2.9.3": version "2.11.6" - resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== "@radix-ui/number@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b" integrity sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/primitive@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-arrow@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz#5246adf79e97f89e819af68da51ddcf349ecf1c4" integrity sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA== dependencies: "@babel/runtime" "^7.13.10" @@ -1325,7 +1339,7 @@ "@radix-ui/react-collection@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.1.tgz#259506f97c6703b36291826768d3c1337edd1de5" integrity sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g== dependencies: "@babel/runtime" "^7.13.10" @@ -1336,14 +1350,14 @@ "@radix-ui/react-compose-refs@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-context-menu@^2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.0.1.tgz#aee7c81bac9983b3748284bf3925dd63796c90b4" integrity sha512-7DuhU4xDcUk3AMJUlb5tHHOvJZ1GF4+snDIpjtWGlTvO0VktNKgbvBuGLlirdkYoUSI0mJXwOUcUXQapgIyefw== dependencies: "@babel/runtime" "^7.13.10" @@ -1356,21 +1370,21 @@ "@radix-ui/react-context@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-direction@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-dismissable-layer@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz#f04d1061bddf00b1ca304148516b9ddc62e45fb2" integrity sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg== dependencies: "@babel/runtime" "^7.13.10" @@ -1382,14 +1396,14 @@ "@radix-ui/react-focus-guards@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa" integrity sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-focus-scope@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz#faea8c25f537c5a5c38c50914b63722db0e7f951" integrity sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ== dependencies: "@babel/runtime" "^7.13.10" @@ -1399,7 +1413,7 @@ "@radix-ui/react-id@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e" integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw== dependencies: "@babel/runtime" "^7.13.10" @@ -1407,7 +1421,7 @@ "@radix-ui/react-menu@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.0.1.tgz#44ebfd45d8482db678b935c0b9d1102d683372d8" integrity sha512-I5FFZQxCl2fHoJ7R0m5/oWA9EX8/ttH4AbgneoCH7DAXQioFeb0XMAYnOVSp1GgJZ1Nx/mohxNQSeTMcaF1YPw== dependencies: "@babel/runtime" "^7.13.10" @@ -1432,7 +1446,7 @@ "@radix-ui/react-popper@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.0.1.tgz#9fa8a6a493404afa225866a5cd75af23d141baa0" integrity sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw== dependencies: "@babel/runtime" "^7.13.10" @@ -1448,7 +1462,7 @@ "@radix-ui/react-portal@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.1.tgz#169c5a50719c2bb0079cf4c91a27aa6d37e5dd33" integrity sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig== dependencies: "@babel/runtime" "^7.13.10" @@ -1456,7 +1470,7 @@ "@radix-ui/react-presence@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== dependencies: "@babel/runtime" "^7.13.10" @@ -1465,7 +1479,7 @@ "@radix-ui/react-primitive@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== dependencies: "@babel/runtime" "^7.13.10" @@ -1473,7 +1487,7 @@ "@radix-ui/react-roving-focus@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.1.tgz#475621f63aee43faa183a5270f35d49e530de3d7" integrity sha512-TB76u5TIxKpqMpUAuYH2VqMhHYKa+4Vs1NHygo/llLvlffN6mLVsFhz0AnSFlSBAvTBYVHYAkHAyEt7x1gPJOA== dependencies: "@babel/runtime" "^7.13.10" @@ -1489,7 +1503,7 @@ "@radix-ui/react-slider@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.1.0.tgz#b3fdaca27619150e9e6067ad9f979a4535f68d5e" integrity sha512-5H/QB4xD3GF9UfoSCVLBx2JjlXamMcmTyL6gr4kkd/MiAGaYB0W7Exi4MQa0tJApBFJe+KmS5InKCI56p2kmjA== dependencies: "@babel/runtime" "^7.13.10" @@ -1507,7 +1521,7 @@ "@radix-ui/react-slot@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== dependencies: "@babel/runtime" "^7.13.10" @@ -1515,7 +1529,7 @@ "@radix-ui/react-tooltip@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.0.2.tgz#8e10b075767f785bf013146fdc954ac6885efda3" integrity sha512-11gUlok2rv5mu+KBtxniOKKNKjqC/uTbgFHWoQdbF46vMV+zjDaBvCtVDK9+MTddlpmlisGPGvvojX7Qm0yr+g== dependencies: "@babel/runtime" "^7.13.10" @@ -1534,14 +1548,14 @@ "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-controllable-state@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f" integrity sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg== dependencies: "@babel/runtime" "^7.13.10" @@ -1549,7 +1563,7 @@ "@radix-ui/react-use-escape-keydown@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz#09ab6455ab240b4f0a61faf06d4e5132c4d639f6" integrity sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA== dependencies: "@babel/runtime" "^7.13.10" @@ -1557,21 +1571,21 @@ "@radix-ui/react-use-layout-effect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-previous@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.0.0.tgz#e48a69c3a7d8078a967084038df66d0d181c56ac" integrity sha512-RG2K8z/K7InnOKpq6YLDmT49HGjNmrK+fr82UCVKT2sW0GYfVnYp4wZWBooT/EYfQ5faA9uIjvsuMMhH61rheg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-rect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz#b040cc88a4906b78696cd3a32b075ed5b1423b3e" integrity sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew== dependencies: "@babel/runtime" "^7.13.10" @@ -1579,7 +1593,7 @@ "@radix-ui/react-use-size@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz#a0b455ac826749419f6354dc733e2ca465054771" integrity sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg== dependencies: "@babel/runtime" "^7.13.10" @@ -1587,7 +1601,7 @@ "@radix-ui/react-visually-hidden@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.1.tgz#9a4ac4fc97ae8d72a10e727f16b3121b5f0aa469" integrity sha512-K1hJcCMfWfiYUibRqf3V8r5Drpyf7rh44jnrwAbdvI5iCCijilBBeyQv9SKidYNZIopMdCyR9FnIjkHxHN0FcQ== dependencies: "@babel/runtime" "^7.13.10" @@ -1595,24 +1609,24 @@ "@radix-ui/rect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.0.tgz#0dc8e6a829ea2828d53cbc94b81793ba6383bf3c" integrity sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg== dependencies: "@babel/runtime" "^7.13.10" "@reduxjs/toolkit@^1.8.5": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.6.tgz#147fb7957befcdb75bc9c1230db63628e30e4332" - integrity sha512-4Ia/Loc6WLmdSOzi7k5ff7dLK8CgG2b8aqpLsCAJhazAzGdp//YBUSaj0ceW6a3kDBDNRrq5CRwyCS0wBiL1ig== + version "1.9.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.0.tgz#76b264fcea677d256b18f86cc77e00743a9e02b0" + integrity sha512-ak11IrjYcUXRqlhNPwnz6AcvA2ynJTu8PzDbbqQw4a3xR4KZtgiqbNblQD+10CRbfK4+5C79SOyxnT9dhBqFnA== dependencies: - immer "^9.0.7" - redux "^4.1.2" - redux-thunk "^2.4.1" - reselect "^4.1.5" + immer "^9.0.16" + redux "^4.2.0" + redux-thunk "^2.4.2" + reselect "^4.1.7" "@rollup/pluginutils@^4.2.1": version "4.2.1" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== dependencies: estree-walker "^2.0.1" @@ -1620,40 +1634,40 @@ "@socket.io/component-emitter@~3.1.0": version "3.1.0" - resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== "@types/cookie@^0.4.1": version "0.4.1" - resolved "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": version "2.8.12" - resolved "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== "@types/dateformat@^5.0.0": version "5.0.0" - resolved "https://registry.npmjs.org/@types/dateformat/-/dateformat-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-5.0.0.tgz#17ce64b0318f3f36d1c830c58a7a915445f1f93d" integrity sha512-SZg4JdHIWHQGEokbYGZSDvo5wA4TLYPXaqhigs/wH+REDOejcJzgH+qyY+HtEUtWOZxEUkbhbdYPqQDiEgrXeA== "@types/eslint@^8.4.5": - version "8.4.9" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.9.tgz#f7371980148697f4b582b086630319b55324b5aa" - integrity sha512-jFCSo4wJzlHQLCpceUhUnXdrPuCNOjGFMQ8Eg6JXxlz3QaCKOb7eGi2cephQdM4XTYsNej69P9JDJ1zqNIbncQ== + version "8.4.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb" + integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": version "1.0.0" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/hoist-non-react-statics@^3.3.1": version "3.3.1" - resolved "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== dependencies: "@types/react" "*" @@ -1661,61 +1675,61 @@ "@types/json-schema@*", "@types/json-schema@^7.0.9": version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/lodash.mergewith@4.6.6": version "4.6.6" - resolved "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz" + resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10" integrity sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg== dependencies: "@types/lodash" "*" "@types/lodash@*": - version "4.14.186" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" - integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== + version "4.14.189" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.189.tgz#975ff8c38da5ae58b751127b19ad5e44b5b7f6d2" + integrity sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA== "@types/node@>=10.0.0": - version "18.11.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.8.tgz#16d222a58d4363a2a359656dd20b28414de5d265" - integrity sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A== + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prop-types@*": version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/react-dom@^18.0.6": - version "18.0.8" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.8.tgz#d2606d855186cd42cc1b11e63a71c39525441685" - integrity sha512-C3GYO0HLaOkk9dDAz3Dl4sbe4AKUGTCfFIZsz3n/82dPNN8Du533HzKatDxeUYWu24wJgMP1xICqkWk1YOLOIw== + version "18.0.9" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.9.tgz#ffee5e4bfc2a2f8774b15496474f8e7fe8d0b504" + integrity sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg== dependencies: "@types/react" "*" "@types/react-reconciler@^0.28.0": version "0.28.0" - resolved "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.0.tgz" + resolved "https://registry.yarnpkg.com/@types/react-reconciler/-/react-reconciler-0.28.0.tgz#513acbed173140e958c909041ca14eb40412077f" integrity sha512-5cjk9ottZAj7eaTsqzPUIlrVbh3hBAO2YaEL1rkjHKB3xNAId7oU8GhzvAX+gfmlfoxTwJnBjPxEHyxkEA1Ffg== dependencies: "@types/react" "*" "@types/react-transition-group@^4.4.5": version "4.4.5" - resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.17": - version "18.0.24" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.24.tgz#2f79ed5b27f08d05107aab45c17919754cc44c20" - integrity sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q== + version "18.0.25" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.25.tgz#8b1dcd7e56fe7315535a4af25435e0bb55c8ae44" + integrity sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -1723,7 +1737,7 @@ "@types/scheduler@*": version "0.16.2" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/semver@^7.3.12": @@ -1733,22 +1747,22 @@ "@types/use-sync-external-store@^0.0.3": version "0.0.3" - resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== "@types/uuid@^8.3.4": version "8.3.4" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@typescript-eslint/eslint-plugin@^5.36.2": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.0.tgz#36a8c0c379870127059889a9cc7e05c260d2aaa5" - integrity sha512-5TJh2AgL6+wpL8H/GTSjNb4WrjKoR2rqvFxR/DDTqYNk6uXn8BJMEcncLSpMbf/XV1aS0jAjYwn98uvVCiAywQ== + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz#105788f299050c917eb85c4d9fd04b089e3740de" + integrity sha512-j5ULd7FmmekcyWeArx+i8x7sdRHzAtXTkmDPthE4amxZOWKFK7bomoJ4r7PJ8K7PoMzD16U8MmuZFAonr1ERvw== dependencies: - "@typescript-eslint/scope-manager" "5.42.0" - "@typescript-eslint/type-utils" "5.42.0" - "@typescript-eslint/utils" "5.42.0" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/type-utils" "5.44.0" + "@typescript-eslint/utils" "5.44.0" debug "^4.3.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" @@ -1757,71 +1771,71 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^5.36.2": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.42.0.tgz#be0ffbe279e1320e3d15e2ef0ad19262f59e9240" - integrity sha512-Ixh9qrOTDRctFg3yIwrLkgf33AHyEIn6lhyf5cCfwwiGtkWhNpVKlEZApi3inGQR/barWnY7qY8FbGKBO7p3JA== + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.44.0.tgz#99e2c710a2252191e7a79113264f438338b846ad" + integrity sha512-H7LCqbZnKqkkgQHaKLGC6KUjt3pjJDx8ETDqmwncyb6PuoigYajyAwBGz08VU/l86dZWZgI4zm5k2VaKqayYyA== dependencies: - "@typescript-eslint/scope-manager" "5.42.0" - "@typescript-eslint/types" "5.42.0" - "@typescript-eslint/typescript-estree" "5.42.0" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/typescript-estree" "5.44.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.42.0.tgz#e1f2bb26d3b2a508421ee2e3ceea5396b192f5ef" - integrity sha512-l5/3IBHLH0Bv04y+H+zlcLiEMEMjWGaCX6WyHE5Uk2YkSGAMlgdUPsT/ywTSKgu9D1dmmKMYgYZijObfA39Wow== +"@typescript-eslint/scope-manager@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz#988c3f34b45b3474eb9ff0674c18309dedfc3e04" + integrity sha512-2pKml57KusI0LAhgLKae9kwWeITZ7IsZs77YxyNyIVOwQ1kToyXRaJLl+uDEXzMN5hnobKUOo2gKntK9H1YL8g== dependencies: - "@typescript-eslint/types" "5.42.0" - "@typescript-eslint/visitor-keys" "5.42.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/visitor-keys" "5.44.0" -"@typescript-eslint/type-utils@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.42.0.tgz#4206d7192d4fe903ddf99d09b41d4ac31b0b7dca" - integrity sha512-HW14TXC45dFVZxnVW8rnUGnvYyRC0E/vxXShFCthcC9VhVTmjqOmtqj6H5rm9Zxv+ORxKA/1aLGD7vmlLsdlOg== +"@typescript-eslint/type-utils@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz#bc5a6e8a0269850714a870c9268c038150dfb3c7" + integrity sha512-A1u0Yo5wZxkXPQ7/noGkRhV4J9opcymcr31XQtOzcc5nO/IHN2E2TPMECKWYpM3e6olWEM63fq/BaL1wEYnt/w== dependencies: - "@typescript-eslint/typescript-estree" "5.42.0" - "@typescript-eslint/utils" "5.42.0" + "@typescript-eslint/typescript-estree" "5.44.0" + "@typescript-eslint/utils" "5.44.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.42.0.tgz#5aeff9b5eced48f27d5b8139339bf1ef805bad7a" - integrity sha512-t4lzO9ZOAUcHY6bXQYRuu+3SSYdD9TS8ooApZft4WARt4/f2Cj/YpvbTe8A4GuhT4bNW72goDMOy7SW71mZwGw== +"@typescript-eslint/types@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.44.0.tgz#f3f0b89aaff78f097a2927fe5688c07e786a0241" + integrity sha512-Tp+zDnHmGk4qKR1l+Y1rBvpjpm5tGXX339eAlRBDg+kgZkz9Bw+pqi4dyseOZMsGuSH69fYfPJCBKBrbPCxYFQ== -"@typescript-eslint/typescript-estree@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.0.tgz#2592d24bb5f89bf54a63384ff3494870f95b3fd8" - integrity sha512-2O3vSq794x3kZGtV7i4SCWZWCwjEtkWfVqX4m5fbUBomOsEOyd6OAD1qU2lbvV5S8tgy/luJnOYluNyYVeOTTg== +"@typescript-eslint/typescript-estree@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz#0461b386203e8d383bb1268b1ed1da9bc905b045" + integrity sha512-M6Jr+RM7M5zeRj2maSfsZK2660HKAJawv4Ud0xT+yauyvgrsHu276VtXlKDFnEmhG+nVEd0fYZNXGoAgxwDWJw== dependencies: - "@typescript-eslint/types" "5.42.0" - "@typescript-eslint/visitor-keys" "5.42.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/visitor-keys" "5.44.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.42.0.tgz#f06bd43b9a9a06ed8f29600273240e84a53f2f15" - integrity sha512-JZ++3+h1vbeG1NUECXQZE3hg0kias9kOtcQr3+JVQ3whnjvKuMyktJAAIj6743OeNPnGBmjj7KEmiDL7qsdnCQ== +"@typescript-eslint/utils@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.44.0.tgz#d733da4d79d6c30f1a68b531cdda1e0c1f00d52d" + integrity sha512-fMzA8LLQ189gaBjS0MZszw5HBdZgVwxVFShCO3QN+ws3GlPkcy9YuS3U4wkT6su0w+Byjq3mS3uamy9HE4Yfjw== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.42.0" - "@typescript-eslint/types" "5.42.0" - "@typescript-eslint/typescript-estree" "5.42.0" + "@typescript-eslint/scope-manager" "5.44.0" + "@typescript-eslint/types" "5.44.0" + "@typescript-eslint/typescript-estree" "5.44.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.42.0": - version "5.42.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.0.tgz#ee8d62d486f41cfe646632fab790fbf0c1db5bb0" - integrity sha512-QHbu5Hf/2lOEOwy+IUw0GoSCuAzByTAWWrOTKzTzsotiUnWFpuKnXcAhC9YztAf2EElQ0VvIK+pHJUPkM0q7jg== +"@typescript-eslint/visitor-keys@5.44.0": + version "5.44.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz#10740dc28902bb903d12ee3a005cc3a70207d433" + integrity sha512-a48tLG8/4m62gPFbJ27FxwCOqPKxsb8KC3HkmYoq2As/4YyjQl1jDbRr1s63+g4FS/iIehjmN3L5UjmKva1HzQ== dependencies: - "@typescript-eslint/types" "5.42.0" + "@typescript-eslint/types" "5.44.0" eslint-visitor-keys "^3.3.0" "@vitejs/plugin-react@^2.0.1": @@ -1837,19 +1851,24 @@ magic-string "^0.26.7" react-refresh "^0.14.0" +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + "@zag-js/element-size@0.1.0": version "0.1.0" - resolved "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.1.0.tgz#dfdb3f66a70328d0c3149aae29b8f99c10590c22" integrity sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ== "@zag-js/focus-visible@0.1.0": version "0.1.0" - resolved "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.1.0.tgz#9777bbaff8316d0b3a14a9095631e1494f69dbc7" integrity sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg== accepts@~1.3.4: version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -1857,7 +1876,7 @@ accepts@~1.3.4: acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^8.8.0: @@ -1867,12 +1886,12 @@ acorn@^8.8.0: add@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/add/-/add-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -1882,56 +1901,61 @@ ajv@^6.10.0, ajv@^6.12.4: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== aria-hidden@^1.1.1: - version "1.2.1" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.1.tgz" - integrity sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A== + version "1.2.2" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.2.tgz#8c4f7cc88d73ca42114106fdf6f47e68d31475b8" + integrity sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA== dependencies: tslib "^2.0.0" array-union@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== attr-accept@^2.2.2: version "2.2.2" - resolved "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== babel-plugin-macros@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: "@babel/runtime" "^7.12.5" @@ -1940,22 +1964,22 @@ babel-plugin-macros@^3.1.0: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64id@2.0.0, base64id@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1963,14 +1987,14 @@ brace-expansion@^1.1.7: braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" browserslist@^4.21.3: version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: caniuse-lite "^1.0.30001400" @@ -1980,26 +2004,26 @@ browserslist@^4.21.3: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== caniuse-lite@^1.0.30001400: - version "1.0.30001427" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz#d3a749f74be7ae0671fbec3a4eea18576e8ad646" - integrity sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ== + version "1.0.30001430" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001430.tgz#638a8ae00b5a8a97e66ff43733b2701f81b101fa" + integrity sha512-IB1BXTZKPDVPM7cnV4iaKaHxckvdr/3xtctB3f7Hmenx3qYBhGtTZ//7EllK66aKXW98Lx0+7Yr0kxBtIt3tzg== chalk@^2.0.0: version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -2007,7 +2031,7 @@ chalk@^4.0.0: "chokidar@>=3.0.0 <4.0.0": version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -2020,38 +2044,48 @@ chalk@^4.0.0: optionalDependencies: fsevents "~2.3.2" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + compute-scroll-into-view@1.0.14: version "1.0.14" - resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== convert-source-map@^1.5.0, convert-source-map@^1.7.0: @@ -2061,19 +2095,19 @@ convert-source-map@^1.5.0, convert-source-map@^1.7.0: cookie@~0.4.1: version "0.4.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== copy-to-clipboard@3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== dependencies: toggle-selection "^1.0.6" cors@~2.8.5: version "2.8.5" - resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: object-assign "^4" @@ -2081,7 +2115,7 @@ cors@~2.8.5: cosmiconfig@^7.0.0: version "7.0.1" - resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" @@ -2090,9 +2124,20 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -2101,55 +2146,55 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: css-box-model@1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== dependencies: tiny-invariant "^1.0.6" csstype@^3.0.11, csstype@^3.0.2: version "3.1.1" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== dateformat@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/dateformat/-/dateformat-5.0.3.tgz" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-5.0.3.tgz#fe2223eff3cc70ce716931cb3038b59a9280696e" integrity sha512-Kvr6HmPXUMerlLcLF+Pwq3K7apHpYmGDVqrxcDasBg86UcKeTSNWbEzU8bwdXnxnR44FtMhJAxI4Bov6Y/KUfA== debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" deep-is@^0.1.3: version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== detect-node-es@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-helpers@^5.0.1: version "5.2.1" - resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" @@ -2157,7 +2202,7 @@ dom-helpers@^5.0.1: duplexer@~0.1.1: version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== electron-to-chromium@^1.4.251: @@ -2178,13 +2223,13 @@ engine.io-client@~6.2.3: engine.io-parser@~5.0.3: version "5.0.4" - resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== -engine.io@~6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz" - integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== +engine.io@~6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.1.tgz#e3f7826ebc4140db9bbaa9021ad6b1efb175878f" + integrity sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -2199,169 +2244,169 @@ engine.io@~6.2.0: error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -esbuild-android-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz#5e8151d5f0a748c71a7fbea8cee844ccf008e6fc" - integrity sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q== +esbuild-android-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.15.tgz#fd959b034dd761d14e13dda6214b6948841ff4ff" + integrity sha512-F+WjjQxO+JQOva3tJWNdVjouFMLK6R6i5gjDvgUthLYJnIZJsp1HlF523k73hELY20WPyEO8xcz7aaYBVkeg5Q== -esbuild-android-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz#5ee72a6baa444bc96ffcb472a3ba4aba2cc80666" - integrity sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA== +esbuild-android-arm64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.15.tgz#9733b71cf0229b4356f106a455b2cfdf7884aa59" + integrity sha512-attlyhD6Y22jNyQ0fIIQ7mnPvDWKw7k6FKnsXlBvQE6s3z6s6cuEHcSgoirquQc7TmZgVCK5fD/2uxmRN+ZpcQ== -esbuild-darwin-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz#70047007e093fa1b3ba7ef86f9b3fa63db51fe25" - integrity sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q== +esbuild-darwin-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.15.tgz#fc3482fdf5e798dbc0b8b2fe13287d257a45efc6" + integrity sha512-ohZtF8W1SHJ4JWldsPVdk8st0r9ExbAOSrBOh5L+Mq47i696GVwv1ab/KlmbUoikSTNoXEhDzVpxUR/WIO19FQ== -esbuild-darwin-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz#41c951f23d9a70539bcca552bae6e5196696ae04" - integrity sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw== +esbuild-darwin-arm64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.15.tgz#e922ec387c00fa84d664e14b5722fe13613f4adc" + integrity sha512-P8jOZ5zshCNIuGn+9KehKs/cq5uIniC+BeCykvdVhx/rBXSxmtj3CUIKZz4sDCuESMbitK54drf/2QX9QHG5Ag== -esbuild-freebsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz#a761b5afd12bbedb7d56c612e9cfa4d2711f33f0" - integrity sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw== +esbuild-freebsd-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.15.tgz#69a42d79137d7d3ea718414c432bc10e8bb97c68" + integrity sha512-KkTg+AmDXz1IvA9S1gt8dE24C8Thx0X5oM0KGF322DuP+P3evwTL9YyusHAWNsh4qLsR80nvBr/EIYs29VSwuA== -esbuild-freebsd-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz#6b0839d4d58deabc6cbd96276eb8cbf94f7f335e" - integrity sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g== +esbuild-freebsd-arm64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.15.tgz#63b6d0dd492f7394f8d07a0e2b931151eb9d60c4" + integrity sha512-FUcML0DRsuyqCMfAC+HoeAqvWxMeq0qXvclZZ/lt2kLU6XBnDA5uKTLUd379WYEyVD4KKFctqWd9tTuk8C/96g== -esbuild-linux-32@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz#bd50bfe22514d434d97d5150977496e2631345b4" - integrity sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA== +esbuild-linux-32@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.15.tgz#7f295795fd7e61ea57d1135f717424a6771a7472" + integrity sha512-q28Qn5pZgHNqug02aTkzw5sW9OklSo96b5nm17Mq0pDXrdTBcQ+M6Q9A1B+dalFeynunwh/pvfrNucjzwDXj+Q== -esbuild-linux-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz#074bb2b194bf658245f8490f29c01ffcdfa8c931" - integrity sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA== +esbuild-linux-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.15.tgz#11a430a86403b0411ca0a355b891f1cb8c4c4ec6" + integrity sha512-217KPmWMirkf8liO+fj2qrPwbIbhNTGNVtvqI1TnOWJgcMjUWvd677Gq3fTzXEjilkx2yWypVnTswM2KbXgoAg== -esbuild-linux-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz#3bf789c4396dc032875a122988efd6f3733f28f5" - integrity sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ== +esbuild-linux-arm64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.15.tgz#b65f9a2c60e8e5b62f6cfd392cd0410f22e8c390" + integrity sha512-/ltmNFs0FivZkYsTzAsXIfLQX38lFnwJTWCJts0IbCqWZQe+jjj0vYBNbI0kmXLb3y5NljiM5USVAO1NVkdh2g== -esbuild-linux-arm@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz#b91b5a8d470053f6c2c9c8a5e67ec10a71fe4a67" - integrity sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A== +esbuild-linux-arm@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.15.tgz#c8e13e45a0a6f0cb145ce13ae26ce1d2551d9bcc" + integrity sha512-RYVW9o2yN8yM7SB1yaWr378CwrjvGCyGybX3SdzPHpikUHkME2AP55Ma20uNwkNyY2eSYFX9D55kDrfQmQBR4w== -esbuild-linux-mips64le@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz#2fb54099ada3c950a7536dfcba46172c61e580e2" - integrity sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A== +esbuild-linux-mips64le@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.15.tgz#d4c24d47e43966fcac748c90621be7edd53456c0" + integrity sha512-PksEPb321/28GFFxtvL33yVPfnMZihxkEv5zME2zapXGp7fA1X2jYeiTUK+9tJ/EGgcNWuwvtawPxJG7Mmn86A== -esbuild-linux-ppc64le@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz#9e3b8c09825fb27886249dfb3142a750df29a1b7" - integrity sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg== +esbuild-linux-ppc64le@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.15.tgz#2eba53fe2282438ceca5471bdb57ba2e00216ed6" + integrity sha512-ek8gJBEIhcpGI327eAZigBOHl58QqrJrYYIZBWQCnH3UnXoeWMrMZLeeZL8BI2XMBhP+sQ6ERctD5X+ajL/AIA== -esbuild-linux-riscv64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz#923d0f5b6e12ee0d1fe116b08e4ae4478fe40693" - integrity sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA== +esbuild-linux-riscv64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.15.tgz#1afa8dfe55a6c312f1904ee608b81417205f5027" + integrity sha512-H5ilTZb33/GnUBrZMNJtBk7/OXzDHDXjIzoLXHSutwwsLxSNaLxzAaMoDGDd/keZoS+GDBqNVxdCkpuiRW4OSw== -esbuild-linux-s390x@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz#3b1620220482b96266a0c6d9d471d451a1eab86f" - integrity sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww== +esbuild-linux-s390x@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.15.tgz#1f7b3c4429c8ca99920ba6bf356ccc5b38fabd34" + integrity sha512-jKaLUg78mua3rrtrkpv4Or2dNTJU7bgHN4bEjT4OX4GR7nLBSA9dfJezQouTxMmIW7opwEC5/iR9mpC18utnxQ== -esbuild-netbsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz#276730f80da646859b1af5a740e7802d8cd73e42" - integrity sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w== +esbuild-netbsd-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.15.tgz#d72c7155686c938c1aff126209b689c22823347c" + integrity sha512-aOvmF/UkjFuW6F36HbIlImJTTx45KUCHJndtKo+KdP8Dhq3mgLRKW9+6Ircpm8bX/RcS3zZMMmaBLkvGY06Gvw== -esbuild-openbsd-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz#bd0eea1dd2ca0722ed489d88c26714034429f8ae" - integrity sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw== +esbuild-openbsd-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.15.tgz#761bd87ecab97386948eaf667a065cb0ecaa0f76" + integrity sha512-HFFX+WYedx1w2yJ1VyR1Dfo8zyYGQZf1cA69bLdrHzu9svj6KH6ZLK0k3A1/LFPhcEY9idSOhsB2UyU0tHPxgQ== -esbuild-sunos-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz#5e56bf9eef3b2d92360d6d29dcde7722acbecc9e" - integrity sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg== +esbuild-sunos-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.15.tgz#07e04cbf9747f281a967d09230a158a1be5b530c" + integrity sha512-jOPBudffG4HN8yJXcK9rib/ZTFoTA5pvIKbRrt3IKAGMq1EpBi4xoVoSRrq/0d4OgZLaQbmkHp8RO9eZIn5atA== -esbuild-windows-32@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz#a4f1a301c1a2fa7701fcd4b91ef9d2620cf293d0" - integrity sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw== +esbuild-windows-32@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.15.tgz#130d1982cc41fb67461e9f8a65c6ebd13a1f35bb" + integrity sha512-MDkJ3QkjnCetKF0fKxCyYNBnOq6dmidcwstBVeMtXSgGYTy8XSwBeIE4+HuKiSsG6I/mXEb++px3IGSmTN0XiA== -esbuild-windows-64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz#bc2b467541744d653be4fe64eaa9b0dbbf8e07f6" - integrity sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA== +esbuild-windows-64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.15.tgz#638bdf495c109c1882e8b0529cb8e2fea11383fb" + integrity sha512-xaAUIB2qllE888SsMU3j9nrqyLbkqqkpQyWVkfwSil6BBPgcPk3zOFitTTncEKCLTQy3XV9RuH7PDj3aJDljWA== -esbuild-windows-arm64@0.15.12: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz#9a7266404334a86be800957eaee9aef94c3df328" - integrity sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA== +esbuild-windows-arm64@0.15.15: + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.15.tgz#5a277ce10de999d2a6465fc92a8c2a2d207ebd31" + integrity sha512-ttuoCYCIJAFx4UUKKWYnFdrVpoXa3+3WWkXVI6s09U+YjhnyM5h96ewTq/WgQj9LFSIlABQvadHSOQyAVjW5xQ== esbuild@^0.15.9: - version "0.15.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.12.tgz#6c8e22d6d3b7430d165c33848298d3fc9a1f251c" - integrity sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng== + version "0.15.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.15.tgz#503b70bdc18d72d8fc2962ed3ab9219249e58bbe" + integrity sha512-TEw/lwK4Zzld9x3FedV6jy8onOUHqcEX3ADFk4k+gzPUwrxn8nWV62tH0udo8jOtjFodlEfc4ypsqX3e+WWO6w== optionalDependencies: - "@esbuild/android-arm" "0.15.12" - "@esbuild/linux-loong64" "0.15.12" - esbuild-android-64 "0.15.12" - esbuild-android-arm64 "0.15.12" - esbuild-darwin-64 "0.15.12" - esbuild-darwin-arm64 "0.15.12" - esbuild-freebsd-64 "0.15.12" - esbuild-freebsd-arm64 "0.15.12" - esbuild-linux-32 "0.15.12" - esbuild-linux-64 "0.15.12" - esbuild-linux-arm "0.15.12" - esbuild-linux-arm64 "0.15.12" - esbuild-linux-mips64le "0.15.12" - esbuild-linux-ppc64le "0.15.12" - esbuild-linux-riscv64 "0.15.12" - esbuild-linux-s390x "0.15.12" - esbuild-netbsd-64 "0.15.12" - esbuild-openbsd-64 "0.15.12" - esbuild-sunos-64 "0.15.12" - esbuild-windows-32 "0.15.12" - esbuild-windows-64 "0.15.12" - esbuild-windows-arm64 "0.15.12" + "@esbuild/android-arm" "0.15.15" + "@esbuild/linux-loong64" "0.15.15" + esbuild-android-64 "0.15.15" + esbuild-android-arm64 "0.15.15" + esbuild-darwin-64 "0.15.15" + esbuild-darwin-arm64 "0.15.15" + esbuild-freebsd-64 "0.15.15" + esbuild-freebsd-arm64 "0.15.15" + esbuild-linux-32 "0.15.15" + esbuild-linux-64 "0.15.15" + esbuild-linux-arm "0.15.15" + esbuild-linux-arm64 "0.15.15" + esbuild-linux-mips64le "0.15.15" + esbuild-linux-ppc64le "0.15.15" + esbuild-linux-riscv64 "0.15.15" + esbuild-linux-s390x "0.15.15" + esbuild-netbsd-64 "0.15.15" + esbuild-openbsd-64 "0.15.15" + esbuild-sunos-64 "0.15.15" + esbuild-windows-32 "0.15.15" + esbuild-windows-64 "0.15.15" + esbuild-windows-arm64 "0.15.15" escalade@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== eslint-plugin-prettier@^4.2.1: version "4.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-react-hooks@^4.6.0: version "4.6.0" - resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -2369,7 +2414,7 @@ eslint-scope@^5.1.1: eslint-scope@^7.1.1: version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: esrecurse "^4.3.0" @@ -2377,25 +2422,25 @@ eslint-scope@^7.1.1: eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== eslint@^8.23.0: - version "8.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.26.0.tgz#2bcc8836e6c424c4ac26a5674a70d44d84f2181d" - integrity sha512-kzJkpaw1Bfwheq4VXUezFriD1GxszX6dUekM7Z3aC2o4hju+tsR/XyTC3RcoSD7jmy9VkPU3+N6YjVU2e96Oyg== + version "8.28.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.28.0.tgz#81a680732634677cc890134bcdd9fdfea8e63d6e" + integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ== dependencies: "@eslint/eslintrc" "^1.3.3" "@humanwhocodes/config-array" "^0.11.6" @@ -2438,9 +2483,9 @@ eslint@^8.23.0: text-table "^0.2.0" espree@^9.4.0: - version "9.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" - integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" @@ -2448,41 +2493,41 @@ espree@^9.4.0: esquery@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== event-stream@=3.3.4: version "3.3.4" - resolved "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== dependencies: duplexer "~0.1.1" @@ -2495,17 +2540,17 @@ event-stream@=3.3.4: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^3.2.9: version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -2516,58 +2561,65 @@ fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fastq@^1.6.0: version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-selector@^0.6.0: version "0.6.0" - resolved "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.6.0.tgz#fa0a8d9007b829504db4d07dd4de0310b65287dc" integrity sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw== dependencies: tslib "^2.4.0" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-root@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== find-up@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" path-exists "^4.0.0" +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -2575,7 +2627,7 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== focus-lock@^0.11.2: @@ -2586,9 +2638,9 @@ focus-lock@^0.11.2: tslib "^2.0.3" framer-motion@^7.2.1: - version "7.6.2" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-7.6.2.tgz#7fb93ebfeda27c8c2cff1895ca7a417229e81bf7" - integrity sha512-YRr+KaC+1MlLx7iArVyjZRpc0QXI7H0XIOJrdol+dF1+WLQJwS2sP04KGq808BG+byD36UAmAt4YqObE5YFLtw== + version "7.6.9" + resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-7.6.9.tgz#d2c8ca8b97580aa00f7c6e2b616da241bd2ce8e6" + integrity sha512-byPSPOqKApmVUvbtvmFCyL09dqBNLUwkXRQMeTsawtF6YpiB54yCVzk+9YXAnoswMSgsB7CQaA6ls7e8QL+C+g== dependencies: "@motionone/dom" "10.13.1" framesync "6.1.2" @@ -2601,36 +2653,45 @@ framer-motion@^7.2.1: framesync@5.3.0: version "5.3.0" - resolved "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz" + resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b" integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== dependencies: tslib "^2.1.0" framesync@6.1.2: version "6.1.2" - resolved "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz" + resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27" integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g== dependencies: tslib "2.4.0" from@~0: version "0.1.7" - resolved "https://registry.npmjs.org/from/-/from-0.1.7.tgz" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gensync@^1.0.0-beta.2: @@ -2640,12 +2701,12 @@ gensync@^1.0.0-beta.2: get-nonce@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" @@ -2657,9 +2718,26 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob-regex@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/glob-regex/-/glob-regex-0.3.2.tgz#27348f2f60648ec32a4a53137090b9fb934f3425" + integrity sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw== + +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.1.3: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -2671,19 +2749,19 @@ glob@^7.1.3: globals@^11.1.0: version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.15.0: - version "13.17.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + version "13.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc" + integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A== dependencies: type-fest "^0.20.2" globby@^11.1.0: version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -2693,63 +2771,68 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hey-listen@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== dependencies: react-is "^16.7.0" -hotkeys-js@3.9.4: - version "3.9.4" - resolved "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.9.4.tgz" - integrity sha512-2zuLt85Ta+gIyvs4N88pCYskNrxf1TFv3LR9t5mdAZIX8BcgQQ48F2opUptvHa6m8zsy5v/a0i9mWzTrlNWU0Q== - ignore@^5.2.0: version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -immer@^9.0.7: +immer@^9.0.16: version "9.0.16" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198" integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== immutable@^4.0.0: version "4.1.0" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -2757,12 +2840,12 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -2770,28 +2853,35 @@ inflight@^1.0.4: inherits@2: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== invariant@^2.2.4: version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-core-module@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -2799,21 +2889,26 @@ is-core-module@^2.9.0: dependencies: has "^1.0.3" +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-path-inside@^3.0.3: @@ -2821,6 +2916,13 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -2828,61 +2930,75 @@ isexe@^2.0.0: its-fine@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/its-fine/-/its-fine-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/its-fine/-/its-fine-1.0.6.tgz#087b14d71137816dab676d8b57c35a6cd5d2b021" integrity sha512-VZJZPwVT2kxe5KQv+TxCjojfLiUIut8zXDNLTxcM7gJ/xQ/bSPk5M0neZ+j3myy45KKkltY1mm1jyJgx3Fxsdg== dependencies: "@types/react-reconciler" "^0.28.0" js-sdsl@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" - integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" + integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + konva@^8.3.13: - version "8.3.13" - resolved "https://registry.npmjs.org/konva/-/konva-8.3.13.tgz" - integrity sha512-O5VxHfRfTj4PscTglQH1NimS8+CC5hQYLeB8YQstu8MN/i2L8GjA1T9d7xxzITF2TD5+xcIs5ei7en3cztbNXg== + version "8.3.14" + resolved "https://registry.yarnpkg.com/konva/-/konva-8.3.14.tgz#691ecb6f4568c58818359af369f03e7438ea3640" + integrity sha512-6I/TZppgY3Frs//AvZ87YVQLFxLywitb8wLS3qMM+Ih9e4QcB5Yy8br6eq7DdUzxPdbsYTz1FQBHzNxs08M1Tw== levn@^0.4.1: version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -2890,41 +3006,41 @@ levn@^0.4.1: lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.mergewith@4.6.2: version "4.6.2" - resolved "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== -lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" @@ -2938,17 +3054,17 @@ magic-string@^0.26.7: map-stream@~0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4: +micromatch@^4.0.2, micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -2956,31 +3072,45 @@ micromatch@^4.0.4: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== + ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nanoid@^3.3.4: version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== natural-compare-lite@^1.4.0: @@ -2995,39 +3125,52 @@ natural-compare@^1.4.0: negotiator@0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + node-cleanup@^2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== node-releases@^2.0.6: version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -object-assign@^4, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== once@^1.3.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + optionator@^0.9.1: version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -3037,30 +3180,35 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-json@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -3068,51 +3216,81 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +patch-package@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.0.tgz#feb058db56f0005da59cfa316488321de585e88a" + integrity sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^1.10.2" + path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== pause-stream@0.0.11: version "0.0.11" - resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== dependencies: through "~2.3" picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pirates@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + popmotion@11.0.5: version "11.0.5" - resolved "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz" + resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-11.0.5.tgz#8e3e014421a0ffa30ecd722564fd2558954e1f7d" integrity sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA== dependencies: framesync "6.1.2" @@ -3121,29 +3299,34 @@ popmotion@11.0.5: tslib "2.4.0" postcss@^8.4.18: - version "8.4.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.18.tgz#6d50046ea7d3d66a85e0e782074e7203bc7fbca2" - integrity sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA== + version "8.4.19" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc" + integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA== dependencies: nanoid "^3.3.4" picocolors "^1.0.0" source-map-js "^1.0.2" +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -3152,41 +3335,41 @@ prop-types@^15.6.2, prop-types@^15.8.1: ps-tree@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== dependencies: event-stream "=3.3.4" punycode@^2.1.0: version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== re-resizable@^6.9.9: version "6.9.9" - resolved "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.9.tgz" + resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.9.tgz#99e8b31c67a62115dc9c5394b7e55892265be216" integrity sha512-l+MBlKZffv/SicxDySKEEh42hR6m5bAHfNu3Tvxks2c4Ah+ldnWjfnVRwxo/nxF27SsUsxDS0raAzFuJNKABXA== react-clientside-effect@^1.2.6: version "1.2.6" - resolved "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz#29f9b14e944a376b03fb650eed2a754dd128ea3a" integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== dependencies: "@babel/runtime" "^7.12.13" react-colorful@^5.6.1: version "5.6.1" - resolved "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz" + resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.6.1.tgz#7dc2aed2d7c72fac89694e834d179e32f3da563b" integrity sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw== react-dom@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -3203,13 +3386,13 @@ react-dropzone@^14.2.2: react-fast-compare@3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== react-focus-lock@^2.9.1: - version "2.9.1" - resolved "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.9.1.tgz" - integrity sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg== + version "2.9.2" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.9.2.tgz#a57dfd7c493e5a030d87f161c96ffd082bd920f2" + integrity sha512-5JfrsOKyA5Zn3h958mk7bAcfphr24jPoMoznJ8vaJF6fUrPQ8zrtEd3ILLOK8P5jvGxdMd96OxWNjDzATfR2qw== dependencies: "@babel/runtime" "^7.0.0" focus-lock "^0.11.2" @@ -3218,12 +3401,12 @@ react-focus-lock@^2.9.1: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" -react-hotkeys-hook@^3.4.7: - version "3.4.7" - resolved "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.4.7.tgz" - integrity sha512-+bbPmhPAl6ns9VkXkNNyxlmCAIyDAcWbB76O4I0ntr3uWCRuIQf/aRLartUahe9chVMPj+OEzzfk3CQSjclUEQ== +react-hotkeys-hook@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-4.0.2.tgz#f56905a07ae975d297b86d8a7bbc434b597749f4" + integrity sha512-4UVC0jpvgfBqfrfbeEJHm/Jh+MKRTqX/z0BZR6kc51wYMf9IXaNUbLna/7z6vphGESmHJbiU/9TvvHJeMZTIOA== dependencies: - hotkeys-js "3.9.4" + lodash "4.17.21" react-icons@^4.4.0: version "4.6.0" @@ -3232,17 +3415,25 @@ react-icons@^4.4.0: react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^18.0.0: version "18.2.0" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-konva@^18.2.3: +react-konva-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/react-konva-utils/-/react-konva-utils-0.3.0.tgz#d9099ad1a767286b24fb1b08377af2dfa5c9f176" + integrity sha512-yH5FVpDGQ8gHeClyHY533M4oSLjEfYuvn+Z29zXm9osjhuulhtJrh5k+wtyY6QSC0MG0ioqE0cjiudGl1WGB9A== + dependencies: + react-konva "^18.0.0-0" + use-image "^1.0.12" + +react-konva@^18.0.0-0, react-konva@^18.2.3: version "18.2.3" - resolved "https://registry.npmjs.org/react-konva/-/react-konva-18.2.3.tgz" + resolved "https://registry.yarnpkg.com/react-konva/-/react-konva-18.2.3.tgz#75c658fca493bdf515b38f2a8d544fa7a9c754c4" integrity sha512-OPxjBTgaEGU9pt/VJSVM7QNXYHEZ5CkulX+4fTTvbaH+Wh+vMLbXmH3yjWw4kT/5Qi6t0UQKHPPmirCv8/9sdg== dependencies: its-fine "^1.0.6" @@ -3251,16 +3442,16 @@ react-konva@^18.2.3: react-reconciler@~0.29.0: version "0.29.0" - resolved "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.29.0.tgz#ee769bd362915076753f3845822f2d1046603de7" integrity sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q== dependencies: loose-envify "^1.1.0" scheduler "^0.23.0" react-redux@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.4.tgz#80c31dffa8af9526967c4267022ae1525ff0e36a" - integrity sha512-yMfQ7mX6bWuicz2fids6cR1YT59VTuT8MKyyE310wJQlINKENCeT1UcPdEiX6znI5tF8zXyJ/VYvDgeGuaaNwQ== + version "8.0.5" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd" + integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw== dependencies: "@babel/runtime" "^7.12.1" "@types/hoist-non-react-statics" "^3.3.1" @@ -3271,7 +3462,7 @@ react-redux@^8.0.2: react-refresh@^0.14.0: version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== react-remove-scroll-bar@^2.3.3: @@ -3284,7 +3475,7 @@ react-remove-scroll-bar@^2.3.3: react-remove-scroll@2.5.5, react-remove-scroll@^2.5.4: version "2.5.5" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77" integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== dependencies: react-remove-scroll-bar "^2.3.3" @@ -3295,7 +3486,7 @@ react-remove-scroll@2.5.5, react-remove-scroll@^2.5.4: react-style-singleton@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== dependencies: get-nonce "^1.0.0" @@ -3304,7 +3495,7 @@ react-style-singleton@^2.2.1: react-transition-group@^4.4.5: version "4.4.5" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" @@ -3312,60 +3503,81 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" +react-zoom-pan-pinch@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.1.3.tgz#3b84594200343136c0d4397c33fec38dc0ee06ad" + integrity sha512-a5AChOWhjo0RmxsNZXGQIlNh3e3nLU6m4V6M+6dlbPNk5d+MtMxgKWyA5zpR06Lp3OZkZVF9nR8JeWSvKwck9g== + react@^18.2.0: version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" +recrawl-sync@^2.0.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recrawl-sync/-/recrawl-sync-2.2.3.tgz#757adcdaae4799466dde5b8ee52122ff9636dfb1" + integrity sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ== + dependencies: + "@cush/relative" "^1.0.0" + glob-regex "^0.3.0" + slash "^3.0.0" + sucrase "^3.20.3" + tslib "^1.9.3" + +redux-deep-persist@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/redux-deep-persist/-/redux-deep-persist-1.0.6.tgz#f7f0d15c76463a9c9f31269ea8e612ca7c058980" + integrity sha512-WL/u8MxJGsm0fpywW4zSOWOY3caGi1xx04aYz9UP7QXcqzStVq7fKFf/9g4JYAZ3YRPvukZw0m6O+vt4hTDn9g== + redux-persist@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== -redux-thunk@^2.4.1: - version "2.4.1" - resolved "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz" - integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q== +redux-thunk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.2.tgz#b9d05d11994b99f7a91ea223e8b04cf0afa5ef3b" + integrity sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q== -redux@^4.1.2: +redux@^4.2.0: version "4.2.0" - resolved "https://registry.npmjs.org/redux/-/redux-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" regenerator-runtime@^0.13.10: - version "0.13.10" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" - integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regexpp@^3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -reselect@^4.1.5: - version "4.1.6" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.6.tgz" - integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== +reselect@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.7.tgz#56480d9ff3d3188970ee2b76527bd94a95567a42" + integrity sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A== resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve@^1.19.0, resolve@^1.22.1: version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: is-core-module "^2.9.0" @@ -3374,12 +3586,19 @@ resolve@^1.19.0, resolve@^1.22.1: reusify@^1.0.4: version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" @@ -3399,9 +3618,9 @@ run-parallel@^1.1.9: queue-microtask "^1.2.2" sass@^1.55.0: - version "1.55.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.55.0.tgz#0c4d3c293cfe8f8a2e8d3b666e1cf1bff8065d1c" - integrity sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A== + version "1.56.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.56.1.tgz#94d3910cd468fd075fa87f5bb17437a0b617d8a7" + integrity sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -3409,14 +3628,19 @@ sass@^1.55.0: scheduler@^0.23.0: version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" +semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^6.3.0: version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.7: @@ -3426,107 +3650,129 @@ semver@^7.3.7: dependencies: lru-cache "^6.0.0" +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== socket.io-adapter@~2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== socket.io-client@^4.5.2: - version "4.5.3" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.3.tgz#bed69209d001465b2fea650d2e95c1e82768ab5e" - integrity sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A== + version "4.5.4" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.4.tgz#d3cde8a06a6250041ba7390f08d2468ccebc5ac9" + integrity sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" engine.io-client "~6.2.3" - socket.io-parser "~4.2.0" + socket.io-parser "~4.2.1" -socket.io-parser@~4.2.0: +socket.io-parser@~4.2.1: version "4.2.1" - resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== dependencies: "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" socket.io@^4.5.2: - version "4.5.3" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.3.tgz#44dffea48d7f5aa41df4a66377c386b953bc521c" - integrity sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg== + version "4.5.4" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.4.tgz#a4513f06e87451c17013b8d13fdfaf8da5a86a90" + integrity sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ== dependencies: accepts "~1.3.4" base64id "~2.0.0" debug "~4.3.2" - engine.io "~6.2.0" + engine.io "~6.2.1" socket.io-adapter "~2.4.0" - socket.io-parser "~4.2.0" + socket.io-parser "~4.2.1" "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map@^0.5.7: version "0.5.7" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== split@0.3: version "0.3.3" - resolved "https://registry.npmjs.org/split/-/split-0.3.3.tgz" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== dependencies: through "2" stream-combiner@~0.0.4: version "0.0.4" - resolved "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== dependencies: duplexer "~0.1.1" string-argv@^0.1.1: version "0.1.2" - resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.1.2.tgz#c5b7bc03fb2b11983ba3a72333dd0559e77e4738" integrity sha512-mBqPGEOMNJKXRo7z0keX0wlAhbBAjilUdPW13nN0PecVryZxdHIeM7TqbsSUA7VYuS00HGC6mojP7DlQzfa9ZA== strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== style-value-types@5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-5.1.2.tgz#6be66b237bd546048a764883528072ed95713b62" integrity sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q== dependencies: hey-listen "^1.0.8" @@ -3537,33 +3783,59 @@ stylis@4.1.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7" integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA== +sucrase@^3.20.3: + version "3.29.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.29.0.tgz#3207c5bc1b980fdae1e539df3f8a8a518236da7d" + integrity sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== text-table@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + through@2, through@~2.3, through@~2.3.1: version "2.3.8" - resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== tiny-invariant@^1.0.6: @@ -3571,26 +3843,38 @@ tiny-invariant@^1.0.6: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toggle-selection@^1.0.6: version "1.0.6" - resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + tsc-watch@^5.0.3: version "5.0.3" - resolved "https://registry.npmjs.org/tsc-watch/-/tsc-watch-5.0.3.tgz" + resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-5.0.3.tgz#4d0b2bda8f2677c8f9ed36e001c1a86c31701145" integrity sha512-Hz2UawwELMSLOf0xHvAFc7anLeMw62cMVXr1flYmhRuOhOyOljwmb1l/O60ZwRyy1k7N1iC1mrn1QYM2zITfuw== dependencies: cross-spawn "^7.0.3" @@ -3599,12 +3883,21 @@ tsc-watch@^5.0.3: string-argv "^0.1.1" strip-ansi "^6.0.0" +tsconfig-paths@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.1.0.tgz#f8ef7d467f08ae3a695335bf1ece088c5538d2c1" + integrity sha512-AHx4Euop/dXFC+Vx589alFba8QItjF+8hf8LtmuiCwHyI4rHXQtOOENaM8kvYf5fR0dRChy3wzWIZ9WbB7FWow== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@2.4.0: version "2.4.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^1.8.1: +tslib@^1.8.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -3623,20 +3916,25 @@ tsutils@^3.21.0: type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== typescript@^4.6.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== update-browserslist-db@^1.0.9: version "1.0.10" @@ -3648,26 +3946,31 @@ update-browserslist-db@^1.0.9: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" use-callback-ref@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== dependencies: tslib "^2.0.0" +use-image@^1.0.12, use-image@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/use-image/-/use-image-1.1.0.tgz#dc244c34506d3cf3a8177c1f0bbfb158b9beefe5" + integrity sha512-+cBHRR/44ZyMUS873O0vbVylgMM0AbdTunEplAWXvIQ2p69h2sIo2Qq74zeUsq6AMo+27e5lERQvXzd1crGiMg== + use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-sidecar@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== dependencies: detect-node-es "^1.1.0" @@ -3675,32 +3978,42 @@ use-sidecar@^1.1.2: use-sync-external-store@^1.0.0: version "1.2.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== uuid@^9.0.0: version "9.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== vary@^1: version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vite-plugin-eslint@^1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz" + resolved "https://registry.yarnpkg.com/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz#0381b8272e7f0fd8b663311b64f7608d55d8b04c" integrity sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang== dependencies: "@rollup/pluginutils" "^4.2.1" "@types/eslint" "^8.4.5" rollup "^2.77.2" +vite-tsconfig-paths@^3.5.2: + version "3.6.0" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-3.6.0.tgz#9e6363051b2caaf7c7cec6f9f85ad71feee77920" + integrity sha512-UfsPYonxLqPD633X8cWcPFVuYzx/CMNHAjZTasYwX69sXpa4gNmQkR0XCjj82h7zhLGdTWagMjC1qfb9S+zv0A== + dependencies: + debug "^4.1.1" + globrex "^0.1.2" + recrawl-sync "^2.0.3" + tsconfig-paths "^4.0.0" + vite@^3.0.7: - version "3.2.2" - resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.2.tgz#280762bfaf47bcea1d12698427331c0009ac7c1f" - integrity sha512-pLrhatFFOWO9kS19bQ658CnRYzv0WLbsPih6R+iFeEEhDOuYgYCX2rztUViMz/uy/V8cLCJvLFeiOK7RJEzHcw== + version "3.2.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-3.2.4.tgz#d8c7892dd4268064e04fffbe7d866207dd24166e" + integrity sha512-Z2X6SRAffOUYTa+sLy3NQ7nlHFU100xwanq1WDwqaiFiCe+25zdxP1TfCS5ojPV2oDDcXudHIoPnI1Z/66B7Yw== dependencies: esbuild "^0.15.9" postcss "^8.4.18" @@ -3709,49 +4022,56 @@ vite@^3.0.7: optionalDependencies: fsevents "~2.3.2" +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" word-wrap@^1.2.3: version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@~8.2.3: version "8.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba" integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== xmlhttprequest-ssl@~2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67" integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.0: +yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yarn@^1.22.19: version "1.22.19" - resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.19.tgz" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/installer/install.bat b/installer/install.bat index 7d6c7c43de..9f6934e128 100644 --- a/installer/install.bat +++ b/installer/install.bat @@ -10,16 +10,21 @@ @rem This enables a user to install this project without manually installing git or Python +set "no_cache_dir=--no-cache-dir" +if "%1" == "use-cache" ( + set "no_cache_dir=" +) + echo ***** Installing InvokeAI.. ***** - -set PATH=c:\windows\system32 - +echo "USING development BRANCH. REMEMBER TO CHANGE TO main BEFORE RELEASE" @rem Config set INSTALL_ENV_DIR=%cd%\installer_files\env @rem https://mamba.readthedocs.io/en/latest/installation.html set MICROMAMBA_DOWNLOAD_URL=https://github.com/cmdr2/stable-diffusion-ui/releases/download/v1.1/micromamba.exe set RELEASE_URL=https://github.com/invoke-ai/InvokeAI -set RELEASE_SOURCEBALL=/archive/refs/heads/main.tar.gz +#set RELEASE_SOURCEBALL=/archive/refs/heads/main.tar.gz +# RELEASE_SOURCEBALL=/archive/refs/heads/test-installer.tar.gz +RELEASE_SOURCEBALL=/archive/refs/heads/development.tar.gz set PYTHON_BUILD_STANDALONE_URL=https://github.com/indygreg/python-build-standalone/releases/download set PYTHON_BUILD_STANDALONE=20221002/cpython-3.10.7+20221002-x86_64-pc-windows-msvc-shared-install_only.tar.gz @@ -65,7 +70,8 @@ set PATH=%INSTALL_ENV_DIR%\Library\bin;%PATH% @rem Download/unpack/clean up InvokeAI release sourceball set err_msg=----- InvokeAI source download failed ----- -curl -L %RELEASE_URL%/%RELEASE_SOURCEBALL% --output InvokeAI.tgz +echo Trying to download "%RELEASE_URL%%RELEASE_SOURCEBALL%" +curl -L %RELEASE_URL%%RELEASE_SOURCEBALL% --output InvokeAI.tgz if %errorlevel% neq 0 goto err_exit set err_msg=----- InvokeAI source unpack failed ----- @@ -103,11 +109,8 @@ echo ***** Unpacked python-build-standalone ***** @rem create venv set err_msg=----- problem creating venv ----- .\python\python -E -s -m venv .venv -@rem In reality, the following is ALL that 'activate.bat' does, -@rem aside from setting the prompt, which we don't care about -set PYTHONPATH= -set PATH=.venv\Scripts;%PATH% if %errorlevel% neq 0 goto err_exit +call .venv\Scripts\activate.bat echo ***** Created Python virtual environment ***** @@ -118,43 +121,40 @@ echo We're running under if %errorlevel% neq 0 goto err_exit set err_msg=----- pip update failed ----- -.venv\Scripts\python -m pip install --no-cache-dir --no-warn-script-location --upgrade pip +.venv\Scripts\python -m pip install %no_cache_dir% --no-warn-script-location --upgrade pip wheel if %errorlevel% neq 0 goto err_exit -echo ***** Updated pip ***** +echo ***** Updated pip and wheel ***** set err_msg=----- requirements file copy failed ----- copy installer\py3.10-windows-x86_64-cuda-reqs.txt requirements.txt if %errorlevel% neq 0 goto err_exit set err_msg=----- main pip install failed ----- -.venv\Scripts\python -m pip install --no-cache-dir --no-warn-script-location -r requirements.txt -if %errorlevel% neq 0 goto err_exit - -set err_msg=----- clipseg install failed ----- -.venv\Scripts\python -m pip install --no-cache-dir --no-warn-script-location git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg -if %errorlevel% neq 0 goto err_exit - -set err_msg=----- InvokeAI setup failed ----- -.venv\Scripts\python -m pip install --no-cache-dir --no-warn-script-location -e . +.venv\Scripts\python -m pip install %no_cache_dir% --no-warn-script-location -r requirements.txt if %errorlevel% neq 0 goto err_exit echo ***** Installed Python dependencies ***** -@rem preload the models -call .venv\Scripts\python scripts\preload_models.py -set err_msg=----- model download clone failed ----- +set err_msg=----- InvokeAI setup failed ----- +.venv\Scripts\python -m pip install %no_cache_dir% --no-warn-script-location -e . if %errorlevel% neq 0 goto err_exit -echo ***** Finished downloading models ***** - -echo ***** Installing invoke.bat ****** copy installer\invoke.bat .\invoke.bat -echo All done! Execute the file invoke.bat in this directory to start InvokeAI +echo ***** Installed invoke launcher script ****** @rem more cleanup rd /s /q installer installer_files +@rem preload the models +call .venv\Scripts\python scripts\configure_invokeai.py +set err_msg=----- model download clone failed ----- +if %errorlevel% neq 0 goto err_exit +deactivate + +echo ***** Finished downloading models ***** + +echo All done! Execute the file invoke.bat in this directory to start InvokeAI pause exit diff --git a/installer/install.sh b/installer/install.sh old mode 100755 new mode 100644 index ab6174538f..8e1e9185b3 --- a/installer/install.sh +++ b/installer/install.sh @@ -22,6 +22,15 @@ function _err_exit { # This enables a user to install this project without manually installing git or Python +export no_cache_dir="--no-cache-dir" +if [ $# -ge 1 ]; then + if [ "$1" = "use-cache" ]; then + export no_cache_dir="" + fi +fi + +echo "$no_cache_dir" + echo -e "\n***** Installing InvokeAI... *****\n" @@ -29,7 +38,7 @@ OS_NAME=$(uname -s) case "${OS_NAME}" in Linux*) OS_NAME="linux";; Darwin*) OS_NAME="darwin";; - *) echo -e "\n----- Unknown OS: $OS_NAME! This script runs only on Linux or MacOS -----\n" && exit + *) echo -e "\n----- Unknown OS: $OS_NAME! This script runs only on Linux or macOS -----\n" && exit esac OS_ARCH=$(uname -m) @@ -71,10 +80,13 @@ if [ "$OS_NAME" == "darwin" ] && [ "$OS_ARCH" == "arm64" ]; then fi # config +echo "USING development BRANCH. REMEMBER TO CHANGE TO main BEFORE RELEASE" INSTALL_ENV_DIR="$(pwd)/installer_files/env" MICROMAMBA_DOWNLOAD_URL="https://micro.mamba.pm/api/micromamba/${MAMBA_OS_NAME}-${MAMBA_ARCH}/latest" RELEASE_URL=https://github.com/invoke-ai/InvokeAI -RELEASE_SOURCEBALL=/archive/refs/heads/main.tar.gz +# RELEASE_SOURCEBALL=/archive/refs/heads/main.tar.gz +# RELEASE_SOURCEBALL=/archive/refs/heads/test-installer.tar.gz +RELEASE_SOURCEBALL=/archive/refs/heads/development.tar.gz PYTHON_BUILD_STANDALONE_URL=https://github.com/indygreg/python-build-standalone/releases/download if [ "$OS_NAME" == "darwin" ]; then PYTHON_BUILD_STANDALONE=20221002/cpython-3.10.7+20221002-${PY_ARCH}-apple-darwin-install_only.tar.gz @@ -93,20 +105,20 @@ if [ "$PACKAGES_TO_INSTALL" != "" ]; then curl -L "$MICROMAMBA_DOWNLOAD_URL" | tar -xvjO bin/micromamba > micromamba - chmod u+x "micromamba" + chmod u+x ./micromamba # test the mamba binary echo -e "\n***** Micromamba version: *****\n" - "micromamba" --version + ./micromamba --version # create the installer env if [ ! -e "$INSTALL_ENV_DIR" ]; then - "micromamba" create -y --prefix "$INSTALL_ENV_DIR" + ./micromamba create -y --prefix "$INSTALL_ENV_DIR" fi echo -e "\n***** Packages to install:$PACKAGES_TO_INSTALL *****\n" - "micromamba" install -y --prefix "$INSTALL_ENV_DIR" -c conda-forge $PACKAGES_TO_INSTALL + ./micromamba install -y --prefix "$INSTALL_ENV_DIR" -c conda-forge "$PACKAGES_TO_INSTALL" if [ ! -e "$INSTALL_ENV_DIR" ]; then echo -e "\n----- There was a problem while initializing micromamba. Cannot continue. -----\n" @@ -154,12 +166,22 @@ echo -e "\n***** Unpacked python-build-standalone *****\n" # create venv _err_msg="\n----- problem creating venv -----\n" + +if [ "$OS_NAME" == "darwin" ]; then + # patch sysconfig so that extensions can build properly + # adapted from https://github.com/cashapp/hermit-packages/commit/fcba384663892f4d9cfb35e8639ff7a28166ee43 + PYTHON_INSTALL_DIR="$(pwd)/python" + SYSCONFIG="$(echo python/lib/python*/_sysconfigdata_*.py)" + TMPFILE="$(mktemp)" + chmod +w "${SYSCONFIG}" + cp "${SYSCONFIG}" "${TMPFILE}" + sed "s,'/install,'${PYTHON_INSTALL_DIR},g" "${TMPFILE}" > "${SYSCONFIG}" + rm -f "${TMPFILE}" +fi + ./python/bin/python3 -E -s -m venv .venv _err_exit $? _err_msg -# In reality, the following is ALL that 'activate.bat' does, -# aside from setting the prompt, which we don't care about -export PYTHONPATH= -export PATH=.venv/bin:$PATH +source .venv/bin/activate echo -e "\n***** Created Python virtual environment *****\n" @@ -170,42 +192,41 @@ echo -e "We're running under" _err_exit $? _err_msg _err_msg="\n----- pip update failed -----\n" -.venv/bin/python3 -m pip install --no-cache-dir --no-warn-script-location --upgrade pip +.venv/bin/python3 -m pip install "$no_cache_dir" --no-warn-script-location --upgrade pip wheel _err_exit $? _err_msg -echo -e "\n***** Updated pip *****\n" +echo -e "\n***** Updated pip and wheel *****\n" _err_msg="\n----- requirements file copy failed -----\n" cp installer/py3.10-${OS_NAME}-"${OS_ARCH}"-${CD}-reqs.txt requirements.txt _err_exit $? _err_msg _err_msg="\n----- main pip install failed -----\n" -.venv/bin/python3 -m pip install --no-cache-dir --no-warn-script-location -r requirements.txt -_err_exit $? _err_msg - -_err_msg="\n----- clipseg install failed -----\n" -.venv/bin/python3 -m pip install --no-cache-dir --no-warn-script-location git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg -_err_exit $? _err_msg - -_err_msg="\n----- InvokeAI setup failed -----\n" -.venv/bin/python3 -m pip install --no-cache-dir --no-warn-script-location -e . +.venv/bin/python3 -m pip install "$no_cache_dir" --no-warn-script-location -r requirements.txt _err_exit $? _err_msg echo -e "\n***** Installed Python dependencies *****\n" -# preload the models -.venv/bin/python3 scripts/preload_models.py -_err_msg="\n----- model download clone failed -----\n" +_err_msg="\n----- InvokeAI setup failed -----\n" +.venv/bin/python3 -m pip install "$no_cache_dir" --no-warn-script-location -e . _err_exit $? _err_msg -echo -e "\n***** Finished downloading models *****\n" +echo -e "\n***** Installed InvokeAI *****\n" -echo -e "\n***** Installing invoke.sh ******\n" cp installer/invoke.sh . +echo -e "\n***** Installed invoke launcher script ******\n" # more cleanup rm -rf installer/ installer_files/ +# preload the models +.venv/bin/python3 scripts/configure_invokeai.py +_err_msg="\n----- model download clone failed -----\n" +_err_exit $? _err_msg +deactivate + +echo -e "\n***** Finished downloading models *****\n" + echo "All done! Run the command './invoke.sh' to start InvokeAI." read -p "Press any key to exit..." exit diff --git a/installer/invoke.bat b/installer/invoke.bat index c00975fd3b..0f9fb5b26a 100644 --- a/installer/invoke.bat +++ b/installer/invoke.bat @@ -1,27 +1,35 @@ @echo off -set PATH=c:\windows\system32 -set PATH=.venv\Scripts;%PATH% +call .venv\Scripts\activate.bat echo Do you want to generate images using the echo 1. command-line echo 2. browser-based UI +echo OR echo 3. open the developer console -set /P restore="Please enter 1, 2 or 3: " -IF /I "%restore%" == "1" ( - echo Starting the InvokeAI command-line.. +set /p choice="Please enter 1, 2 or 3: " +if /i "%choice%" == "1" ( + echo Starting the InvokeAI command-line. .venv\Scripts\python scripts\invoke.py -) ELSE IF /I "%restore%" == "2" ( - echo Starting the InvokeAI browser-based UI.. +) else if /i "%choice%" == "2" ( + echo Starting the InvokeAI browser-based UI. .venv\Scripts\python scripts\invoke.py --web -) ELSE IF /I "%restore%" == "3" ( +) else if /i "%choice%" == "3" ( echo Developer Console - call where python - call python --version - - cmd /k -) ELSE ( + echo Python command is: + where python + echo Python version is: + python --version + echo ************************* + echo You are now in the system shell, with the local InvokeAI Python virtual environment activated, + echo so that you can troubleshoot this InvokeAI installation as necessary. + echo ************************* + echo *** Type `exit` to quit this shell and deactivate the Python virtual environment *** + call cmd /k +) else ( echo Invalid selection pause exit /b ) + +deactivate diff --git a/installer/invoke.sh b/installer/invoke.sh index 58f342d471..13ac27e533 100755 --- a/installer/invoke.sh +++ b/installer/invoke.sh @@ -1,24 +1,41 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh -set -euo pipefail -IFS=$'\n\t' +set -eu -PATH=.venv/scripts:$PATH +. .venv/bin/activate -if [ "$0" != "bash" ]; then - echo "Do you want to generate images using the" - echo "1. command-line" - echo "2. browser-based UI" - echo "3. open the developer console" - read -p "Please enter 1, 2, or 3: " yn - case $yn in - 1 ) printf "\nStarting the InvokeAI command-line..\n"; .venv/bin/python scripts/invoke.py;; - 2 ) printf "\nStarting the InvokeAI browser-based UI..\n"; .venv/bin/python scripts/invoke.py --web;; - 3 ) printf "\nDeveloper Console:\n"; file_name=$(basename "${BASH_SOURCE[0]}"); bash --init-file "$file_name";; - * ) echo "Invalid selection"; exit;; - esac -else # in developer console - python --version - echo "Press ^D to exit" - export PS1="(InvokeAI) \u@\h \w> " -fi +echo "Do you want to generate images using the" +echo "1. command-line" +echo "2. browser-based UI" +echo "OR" +echo "3. open the developer console" +echo "Please enter 1, 2, or 3:" +read choice + +case $choice in + 1) + printf "\nStarting the InvokeAI command-line..\n"; + .venv/bin/python scripts/invoke.py; + ;; + 2) + printf "\nStarting the InvokeAI browser-based UI..\n"; + .venv/bin/python scripts/invoke.py --web; + ;; + 3) + printf "\nDeveloper Console:\n"; + printf "Python command is:\n\t"; + which python; + printf "Python version is:\n\t"; + python --version; + echo "*************************" + echo "You are now in your user shell ($SHELL) with the local InvokeAI Python virtual environment activated,"; + echo "so that you can troubleshoot this InvokeAI installation as necessary."; + printf "*************************\n" + echo "*** Type \`exit\` to quit this shell and deactivate the Python virtual environment *** "; + /usr/bin/env "$SHELL"; + ;; + *) + echo "Invalid selection"; + exit + ;; +esac diff --git a/installer/py3.10-darwin-arm64-mps-reqs.txt b/installer/py3.10-darwin-arm64-mps-reqs.txt index 116f67ded1..e36aeab19f 100644 --- a/installer/py3.10-darwin-arm64-mps-reqs.txt +++ b/installer/py3.10-darwin-arm64-mps-reqs.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with python 3.10 # To update, run: # -# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-darwin-arm64-mps-reqs.txt requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-darwin-arm64-mps-reps.txt installer/requirements.in # --extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https @@ -13,10 +13,12 @@ absl-py==1.3.0 \ # via # tb-nightly # tensorboard -accelerate==0.13.2 \ - --hash=sha256:dd6f08b010077f252dda5a7699d87b02885335c456770939c536e65ff07ed760 \ - --hash=sha256:e22180d7094e4c1bfb05a2b078297c222f6b4fa595fde8916946c3f377cdf019 - # via k-diffusion +accelerate==0.14.0 \ + --hash=sha256:31c5bcc40564ef849b5bc1c4424a43ccaf9e26413b7df89c2e36bf81f070fd44 \ + --hash=sha256:b15d562c0889d0cf441b01faa025dfc29b163d061b6cc7d489c2c83b0a55ffab + # via + # -r installer/requirements.in + # k-diffusion addict==2.4.0 \ --hash=sha256:249bb56bbfd3cdc2a004ea0ff4c2b6ddc84d53bc2194761636eb314d5cfa5dfc \ --hash=sha256:b3b2210e0e067a281f5646c8c5db92e99b7231ea8b0eb5f74dbdf9e259d4e494 @@ -110,14 +112,14 @@ aiohttp==3.8.3 \ --hash=sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b \ --hash=sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca # via fsspec -aiosignal==1.2.0 \ - --hash=sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a \ - --hash=sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2 +aiosignal==1.3.1 \ + --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ + --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 # via aiohttp albumentations==1.3.0 \ --hash=sha256:294165d87d03bc8323e484927f0a5c1a3c64b0e7b9c32a979582a6c93c363bdf \ --hash=sha256:be1af36832c8893314f2a5550e8ac19801e04770734c1b70fa3c996b41f37bed - # via -r requirements.in + # via -r installer/requirements.in altair==4.2.0 \ --hash=sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a \ --hash=sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026 @@ -180,13 +182,12 @@ click==8.1.3 \ # wandb clip @ https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip \ --hash=sha256:b5842c25da441d6c581b53a5c60e0c2127ebafe0f746f8e15561a006c6c3be6a - # via -r requirements.in -colorama==0.4.6 \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 # via - # click - # tqdm + # -r installer/requirements.in + # clipseg +clipseg @ https://github.com/invoke-ai/clipseg/archive/1f754751c85d7d4255fa681f4491ff5711c1c288.zip \ + --hash=sha256:14f43ed42f90be3fe57f06de483cb8be0f67f87a6f62a011339d45a39f4b4189 + # via -r installer/requirements.in commonmark==0.9.1 \ --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \ --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9 @@ -270,10 +271,10 @@ decorator==5.1.1 \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 # via validators -diffusers==0.7.2 \ - --hash=sha256:4a5f8b3a5fbd936bba7d459611cb35ec62875030367be32b232f9e19543e25a9 \ - --hash=sha256:fb814ffd150cc6f470380b8c6a521181a77beb2f44134d2aad2e4cd8aa2ced0e - # via -r requirements.in +diffusers==0.9.0 \ + --hash=sha256:719fd830a41bed0c26ce2a75013dd425ed21bbb6b52242f15df2a17120846d66 \ + --hash=sha256:a9cdbfa5465a3009f41d70d6256d03f9d90c414ec3640304c84165332ecb7a6d + # via -r installer/requirements.in dnspython==2.2.1 \ --hash=sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e \ --hash=sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f @@ -282,18 +283,18 @@ docker-pycreds==0.4.0 \ --hash=sha256:6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4 \ --hash=sha256:7266112468627868005106ec19cd0d722702d2b7d5912a28e19b826c3d37af49 # via wandb -einops==0.5.0 \ - --hash=sha256:055de7eeb3cb9e9710ef3085a811090c6b52e809b7044e8785824ed185f486d1 \ - --hash=sha256:8b7a83cffc1ea88e306df099b7cbb9c3ba5003bd84d05ae44be5655864abb8d3 +einops==0.6.0 \ + --hash=sha256:6f6c78739316a2e3ccbce8052310497e69da092935e4173f2e76ec4e3a336a35 \ + --hash=sha256:c7b187a5dc725f079860ec2d330c1820448948622d826273345a8dd8d5f695bd # via k-diffusion entrypoints==0.4 \ --hash=sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4 \ --hash=sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f # via altair -eventlet==0.33.1 \ - --hash=sha256:a085922698e5029f820cf311a648ac324d73cec0e4792877609d978a4b5bbf31 \ - --hash=sha256:afbe17f06a58491e9aebd7a4a03e70b0b63fd4cf76d8307bae07f280479b1515 - # via -r requirements.in +eventlet==0.33.2 \ + --hash=sha256:82c382c2a2c712f1a8320378a9120ac9589d9f1131c36a63780f0b8504afa5bc \ + --hash=sha256:96039b9389dbb4431b1c0a6e42ea1326628cc7ad63a6280b02947f111d3d8e04 + # via -r installer/requirements.in facexlib==0.2.5 \ --hash=sha256:31e20cc4ed5d63562d380e4564bae14ac0d5d1899a079bad87621e13564567e4 \ --hash=sha256:cc7ceb56c5424319c47223cf75eef6828c34c66082707c6eb35b95d39779f02d @@ -310,6 +311,9 @@ filelock==3.8.0 \ filterpy==1.4.5 \ --hash=sha256:4f2a4d39e4ea601b9ab42b2db08b5918a9538c168cff1c6895ae26646f3d73b1 # via facexlib +fire==0.4.0 \ + --hash=sha256:c5e2b8763699d1142393a46d0e3e790c5eb2f0706082df8f647878842c216a62 + # via lightning-utilities flask==2.2.2 \ --hash=sha256:642c450d19c4ad482f96729bd2a8f6d32554aa1e231f4f6b4e7e5264b16cca2b \ --hash=sha256:b9c46cc36662a7949f34b52d8ec7bb59c0d74ba08ba6cb9ce9adc1d8676d9526 @@ -319,85 +323,100 @@ flask==2.2.2 \ flask-cors==3.0.10 \ --hash=sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438 \ --hash=sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de - # via -r requirements.in -flask-socketio==5.3.1 \ - --hash=sha256:fd0ed0fc1341671d92d5f5b2f5503916deb7aa7e2940e6636cfa2c087c828bf9 \ - --hash=sha256:ff0c721f20bff1e2cfba77948727a8db48f187e89a72fe50c34478ce6efb3353 - # via -r requirements.in -flaskwebgui==0.3.7 \ - --hash=sha256:4a69955308eaa8bb256ba04a994dc8f58a48dcd6f9599694ab1bcd9f43d88a5d \ - --hash=sha256:535974ce2672dcc74787c254de24cceed4101be75d96952dae82014dd57f061e - # via -r requirements.in + # via -r installer/requirements.in +flask-socketio==5.3.2 \ + --hash=sha256:04093e3ca144467f9731c376796aff105d182ac4cccfcb056d05d567a675f306 \ + --hash=sha256:11d1d78b8805cda351b27828a110b88c74a573be62b07f7f5a519fb67fae0a58 + # via -r installer/requirements.in +flaskwebgui==1.0.3 \ + --hash=sha256:0b7ce0010250d779e154dcdd4de0011754ee900f343ff7c5891e536ab61685fa \ + --hash=sha256:786d46dc1be65e6bb46b5aa4a0eb3af7d531769cb756fb7a442a64d3595ee72a + # via -r installer/requirements.in fonttools==4.38.0 \ --hash=sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1 \ --hash=sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb # via matplotlib -frozenlist==1.3.1 \ - --hash=sha256:022178b277cb9277d7d3b3f2762d294f15e85cd2534047e68a118c2bb0058f3e \ - --hash=sha256:086ca1ac0a40e722d6833d4ce74f5bf1aba2c77cbfdc0cd83722ffea6da52a04 \ - --hash=sha256:0bc75692fb3770cf2b5856a6c2c9de967ca744863c5e89595df64e252e4b3944 \ - --hash=sha256:0dde791b9b97f189874d654c55c24bf7b6782343e14909c84beebd28b7217845 \ - --hash=sha256:12607804084d2244a7bd4685c9d0dca5df17a6a926d4f1967aa7978b1028f89f \ - --hash=sha256:19127f8dcbc157ccb14c30e6f00392f372ddb64a6ffa7106b26ff2196477ee9f \ - --hash=sha256:1b51eb355e7f813bcda00276b0114c4172872dc5fb30e3fea059b9367c18fbcb \ - --hash=sha256:1e1cf7bc8cbbe6ce3881863671bac258b7d6bfc3706c600008925fb799a256e2 \ - --hash=sha256:219a9676e2eae91cb5cc695a78b4cb43d8123e4160441d2b6ce8d2c70c60e2f3 \ - --hash=sha256:2743bb63095ef306041c8f8ea22bd6e4d91adabf41887b1ad7886c4c1eb43d5f \ - --hash=sha256:2af6f7a4e93f5d08ee3f9152bce41a6015b5cf87546cb63872cc19b45476e98a \ - --hash=sha256:31b44f1feb3630146cffe56344704b730c33e042ffc78d21f2125a6a91168131 \ - --hash=sha256:31bf9539284f39ff9398deabf5561c2b0da5bb475590b4e13dd8b268d7a3c5c1 \ - --hash=sha256:35c3d79b81908579beb1fb4e7fcd802b7b4921f1b66055af2578ff7734711cfa \ - --hash=sha256:3a735e4211a04ccfa3f4833547acdf5d2f863bfeb01cfd3edaffbc251f15cec8 \ - --hash=sha256:42719a8bd3792744c9b523674b752091a7962d0d2d117f0b417a3eba97d1164b \ - --hash=sha256:49459f193324fbd6413e8e03bd65789e5198a9fa3095e03f3620dee2f2dabff2 \ - --hash=sha256:4c0c99e31491a1d92cde8648f2e7ccad0e9abb181f6ac3ddb9fc48b63301808e \ - --hash=sha256:52137f0aea43e1993264a5180c467a08a3e372ca9d378244c2d86133f948b26b \ - --hash=sha256:526d5f20e954d103b1d47232e3839f3453c02077b74203e43407b962ab131e7b \ - --hash=sha256:53b2b45052e7149ee8b96067793db8ecc1ae1111f2f96fe1f88ea5ad5fd92d10 \ - --hash=sha256:572ce381e9fe027ad5e055f143763637dcbac2542cfe27f1d688846baeef5170 \ - --hash=sha256:58fb94a01414cddcdc6839807db77ae8057d02ddafc94a42faee6004e46c9ba8 \ - --hash=sha256:5e77a8bd41e54b05e4fb2708dc6ce28ee70325f8c6f50f3df86a44ecb1d7a19b \ - --hash=sha256:5f271c93f001748fc26ddea409241312a75e13466b06c94798d1a341cf0e6989 \ - --hash=sha256:5f63c308f82a7954bf8263a6e6de0adc67c48a8b484fab18ff87f349af356efd \ - --hash=sha256:61d7857950a3139bce035ad0b0945f839532987dfb4c06cfe160254f4d19df03 \ - --hash=sha256:61e8cb51fba9f1f33887e22488bad1e28dd8325b72425f04517a4d285a04c519 \ - --hash=sha256:625d8472c67f2d96f9a4302a947f92a7adbc1e20bedb6aff8dbc8ff039ca6189 \ - --hash=sha256:6e19add867cebfb249b4e7beac382d33215d6d54476bb6be46b01f8cafb4878b \ - --hash=sha256:717470bfafbb9d9be624da7780c4296aa7935294bd43a075139c3d55659038ca \ - --hash=sha256:74140933d45271c1a1283f708c35187f94e1256079b3c43f0c2267f9db5845ff \ - --hash=sha256:74e6b2b456f21fc93ce1aff2b9728049f1464428ee2c9752a4b4f61e98c4db96 \ - --hash=sha256:9494122bf39da6422b0972c4579e248867b6b1b50c9b05df7e04a3f30b9a413d \ - --hash=sha256:94e680aeedc7fd3b892b6fa8395b7b7cc4b344046c065ed4e7a1e390084e8cb5 \ - --hash=sha256:97d9e00f3ac7c18e685320601f91468ec06c58acc185d18bb8e511f196c8d4b2 \ - --hash=sha256:9c6ef8014b842f01f5d2b55315f1af5cbfde284eb184075c189fd657c2fd8204 \ - --hash=sha256:a027f8f723d07c3f21963caa7d585dcc9b089335565dabe9c814b5f70c52705a \ - --hash=sha256:a718b427ff781c4f4e975525edb092ee2cdef6a9e7bc49e15063b088961806f8 \ - --hash=sha256:ab386503f53bbbc64d1ad4b6865bf001414930841a870fc97f1546d4d133f141 \ - --hash=sha256:ab6fa8c7871877810e1b4e9392c187a60611fbf0226a9e0b11b7b92f5ac72792 \ - --hash=sha256:b47d64cdd973aede3dd71a9364742c542587db214e63b7529fbb487ed67cddd9 \ - --hash=sha256:b499c6abe62a7a8d023e2c4b2834fce78a6115856ae95522f2f974139814538c \ - --hash=sha256:bbb1a71b1784e68870800b1bc9f3313918edc63dbb8f29fbd2e767ce5821696c \ - --hash=sha256:c3b31180b82c519b8926e629bf9f19952c743e089c41380ddca5db556817b221 \ - --hash=sha256:c56c299602c70bc1bb5d1e75f7d8c007ca40c9d7aebaf6e4ba52925d88ef826d \ - --hash=sha256:c92deb5d9acce226a501b77307b3b60b264ca21862bd7d3e0c1f3594022f01bc \ - --hash=sha256:cc2f3e368ee5242a2cbe28323a866656006382872c40869b49b265add546703f \ - --hash=sha256:d82bed73544e91fb081ab93e3725e45dd8515c675c0e9926b4e1f420a93a6ab9 \ - --hash=sha256:da1cdfa96425cbe51f8afa43e392366ed0b36ce398f08b60de6b97e3ed4affef \ - --hash=sha256:da5ba7b59d954f1f214d352308d1d86994d713b13edd4b24a556bcc43d2ddbc3 \ - --hash=sha256:e0c8c803f2f8db7217898d11657cb6042b9b0553a997c4a0601f48a691480fab \ - --hash=sha256:ee4c5120ddf7d4dd1eaf079af3af7102b56d919fa13ad55600a4e0ebe532779b \ - --hash=sha256:eee0c5ecb58296580fc495ac99b003f64f82a74f9576a244d04978a7e97166db \ - --hash=sha256:f5abc8b4d0c5b556ed8cd41490b606fe99293175a82b98e652c3f2711b452988 \ - --hash=sha256:f810e764617b0748b49a731ffaa525d9bb36ff38332411704c2400125af859a6 \ - --hash=sha256:f89139662cc4e65a4813f4babb9ca9544e42bddb823d2ec434e18dad582543bc \ - --hash=sha256:fa47319a10e0a076709644a0efbcaab9e91902c8bd8ef74c6adb19d320f69b83 \ - --hash=sha256:fabb953ab913dadc1ff9dcc3a7a7d3dc6a92efab3a0373989b8063347f8705be +frozenlist==1.3.3 \ + --hash=sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c \ + --hash=sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f \ + --hash=sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a \ + --hash=sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784 \ + --hash=sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27 \ + --hash=sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d \ + --hash=sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3 \ + --hash=sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678 \ + --hash=sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a \ + --hash=sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483 \ + --hash=sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8 \ + --hash=sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf \ + --hash=sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99 \ + --hash=sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c \ + --hash=sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48 \ + --hash=sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5 \ + --hash=sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56 \ + --hash=sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e \ + --hash=sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1 \ + --hash=sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401 \ + --hash=sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4 \ + --hash=sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e \ + --hash=sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649 \ + --hash=sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a \ + --hash=sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d \ + --hash=sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0 \ + --hash=sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6 \ + --hash=sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d \ + --hash=sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b \ + --hash=sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6 \ + --hash=sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf \ + --hash=sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef \ + --hash=sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7 \ + --hash=sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842 \ + --hash=sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba \ + --hash=sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420 \ + --hash=sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b \ + --hash=sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d \ + --hash=sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332 \ + --hash=sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936 \ + --hash=sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816 \ + --hash=sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91 \ + --hash=sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420 \ + --hash=sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448 \ + --hash=sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411 \ + --hash=sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4 \ + --hash=sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32 \ + --hash=sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b \ + --hash=sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0 \ + --hash=sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530 \ + --hash=sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669 \ + --hash=sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7 \ + --hash=sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1 \ + --hash=sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5 \ + --hash=sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce \ + --hash=sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4 \ + --hash=sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e \ + --hash=sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2 \ + --hash=sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d \ + --hash=sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9 \ + --hash=sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642 \ + --hash=sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0 \ + --hash=sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703 \ + --hash=sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb \ + --hash=sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1 \ + --hash=sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13 \ + --hash=sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab \ + --hash=sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38 \ + --hash=sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb \ + --hash=sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb \ + --hash=sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81 \ + --hash=sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8 \ + --hash=sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd \ + --hash=sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4 # via # aiohttp # aiosignal -fsspec[http]==2022.10.0 \ - --hash=sha256:6b7c6ab3b476cdf17efcfeccde7fca28ef5a48f73a71010aaceec5fc15bf9ebf \ - --hash=sha256:cb6092474e90487a51de768170f3afa50ca8982c26150a59072b16433879ff1d +fsspec[http]==2022.11.0 \ + --hash=sha256:259d5fd5c8e756ff2ea72f42e7613c32667dc2049a4ac3d84364a7ca034acb8b \ + --hash=sha256:d6e462003e3dcdcb8c7aa84c73a228f8227e72453cd22570e2363e8844edfe7b # via pytorch-lightning ftfy==6.1.1 \ --hash=sha256:0ffd33fce16b54cccaec78d6ec73d95ad370e5df5a25255c8966a6147bd667ca \ @@ -411,15 +430,15 @@ future==0.18.2 \ getpass-asterisk==1.0.1 \ --hash=sha256:20d45cafda0066d761961e0919728526baf7bb5151fbf48a7d5ea4034127d857 \ --hash=sha256:7cc357a924cf62fa4e15b73cb4e5e30685c9084e464ffdc3fd9000a2b54ea9e9 - # via -r requirements.in + # via -r installer/requirements.in gfpgan @ https://github.com/TencentARC/GFPGAN/archive/2eac2033893ca7f427f4035d80fe95b92649ac56.zip \ --hash=sha256:79e6d71c8f1df7c7ccb0ac6b9a2ccb615ad5cde818c8b6f285a8711c05aebf85 # via - # -r requirements.in + # -r installer/requirements.in # realesrgan -gitdb==4.0.9 \ - --hash=sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd \ - --hash=sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa +gitdb==4.0.10 \ + --hash=sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a \ + --hash=sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7 # via gitpython gitpython==3.1.29 \ --hash=sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f \ @@ -427,9 +446,9 @@ gitpython==3.1.29 \ # via # streamlit # wandb -google-auth==2.14.0 \ - --hash=sha256:1ad5b0e6eba5f69645971abb3d2c197537d5914070a8c6d30299dfdb07c5c700 \ - --hash=sha256:cf24817855d874ede2efd071aa22125445f555de1685b739a9782fcf408c2a3d +google-auth==2.14.1 \ + --hash=sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d \ + --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 # via # google-auth-oauthlib # tb-nightly @@ -440,120 +459,129 @@ google-auth-oauthlib==0.4.6 \ # via # tb-nightly # tensorboard -greenlet==2.0.0.post0 \ - --hash=sha256:00ebdaf0fa51c284fd2172837d751731a15971e0c20d1a9163cfbdf620ce8b49 \ - --hash=sha256:029ca674b3a7e8427db8f5c65d5ed4e24a7417af2a415a5958598aefd71980c4 \ - --hash=sha256:02bdb1e373b275bd705c43b249426e776c4f8a8ff2afaf8ec5ea0dde487d8a14 \ - --hash=sha256:08dc04f49ed1ea5e6772bb5e8cf2a77d1b1744566f4eca471a55b35af1278b31 \ - --hash=sha256:08f44e938d142271b954405afb6570e0be48a9f556b6bf4d42d2e3ae6a251fad \ - --hash=sha256:0a5c03e2a68ec2ff1cba74ceaed899ec8cd353285f4f985c30c8cfbef9d3a3be \ - --hash=sha256:0fee3240093b745efc857392f09379514ad84db4ca324514594bbdf6380016c8 \ - --hash=sha256:118e708dd7bc88beaeeaa5a8601a7743b8835b7bbaf7c8f23ffa78f8bc8faf28 \ - --hash=sha256:13d492a807a5c7334b5931e9b6d9b181991ccc6a40555a7b177f189feff59b4b \ - --hash=sha256:1cac9e9895aeff26434325404558783ee54f4ff3aec8daa56b8706796f7b01a0 \ - --hash=sha256:2146d15429b4eeb412428737594acb5660a5bc0fdd1488d8a2a74a5ee32391fa \ - --hash=sha256:21ee1ae26d072b195edea764218623f6c15eba4ae06816908f33c82e0af018d3 \ - --hash=sha256:22eca421e3f2f3c18f4f54c0ff525aa9d397c6f116fce9ebd37b420174dbc027 \ - --hash=sha256:2bab49783858cf724fff6868395cbeb81d1188cba23616b53e79de0beda29f42 \ - --hash=sha256:2fbdec204ca40b3d0c0992a19c1ba627441c17983ac4ffc45baec7f5f53e20ca \ - --hash=sha256:30ce47525f9a1515566429ac7de6b1ae76d32c3ccede256e3517a1a6419cf659 \ - --hash=sha256:335dcf676d5e4122e4006c16ae11eda2467af5461b949c265ce120b6b959ffe2 \ - --hash=sha256:3407b843b05da71fef0f1dd666059c08ad0e0f4afc3b9c93c998a2e53fac95e5 \ - --hash=sha256:35827f98fd0d768862b8f15777e6dbb03fe6ac6e7bd1bee3f3ded4536f350347 \ - --hash=sha256:3a22e5988f9d66b3e9ae9583bf9d8ef792b09f23afeb78707e6a4f47ab57cc5e \ - --hash=sha256:3c3327da2bdab61078e42e695307465c425671a5a9251e6c29ee130d51943f28 \ - --hash=sha256:3ca723dfc2789c1fb991809822811896b198ecf0909dbccea4a07170d18c3e1b \ - --hash=sha256:46156ae88ee71c37b6c4f7af63fff5d3ab8f45ef72e1a660bcf6386c1647f106 \ - --hash=sha256:4bbe2d074292e3646704371eb640ee52c386d633ed72ff223dadcd3fe8ecd8f9 \ - --hash=sha256:4c4310f0e42154995d92810f27b44ab7116a4a696feb0ff141ae2de59196efd7 \ - --hash=sha256:4cfa629de5b2dea27c81b334c4536463e9a49ac0877e2008a276d58d4c72868a \ - --hash=sha256:4e144ab0de56b4d2a2cf0d2fb9d568b59fce49aab3e129badf17c12b0252047d \ - --hash=sha256:4ea67f303cec384b148774667c7e3cf02311e7026fc02bdcdcd206dfe4ea4fc9 \ - --hash=sha256:538c9e8f65a32413ace426f8117ef019021adf8175f7c491fed65f5fe2083e0c \ - --hash=sha256:56565ac9ab4ff3dd473bfe959e0bf2a5062aabb89b7c94cabb417beb162c9fff \ - --hash=sha256:5e22485256bb1c60bbcc6f8509b1a11042358a2462d5ecdb9a82dc472d2fdd60 \ - --hash=sha256:602a69c24f1a9755dd1760b3b31bdfc495c4613260c876a01b7e6d5eb9bcae1b \ - --hash=sha256:6393ec3cecda53b20241e88bc33d87cbd8126cc10870fc69fa16ca2e20a5ac1b \ - --hash=sha256:6442bbfb047dc1e47658954b72e1589f2bc4e12e67d51bbad0059a626180daa1 \ - --hash=sha256:666d2a0b269a68cd4fe0976544ab97970c5334d35d0e47ae9be1723f734d8204 \ - --hash=sha256:697cfbfc19815c40213badcfe5f076418e0f9100cd25a66f513f32c1026b8bf4 \ - --hash=sha256:6a1a6745c5dce202aa3f29a1736c53cf2179e9c3b280dc62cea9cb8c69977c83 \ - --hash=sha256:6fc73fc8dd81d9efa842a55033b6b4cb233b134a0270e127c6874d053ef2049b \ - --hash=sha256:7e9e0d4c5c618b0442396715ffe6c2f84a60d593dad7e0184388aed36d568a65 \ - --hash=sha256:81fdcf7c0c2df46a99ca421a552c4370117851c5e4dbd6cb53d569b896d62322 \ - --hash=sha256:8b26932be686f3582df039d79fe96f7ca13d63b39468162f816f9ff29584b9a4 \ - --hash=sha256:8b7e5191b974fb66fcbac1818ba494d3512da9cf6eaef7acd952f9862eaaa20c \ - --hash=sha256:8c80e9c41a83d8c90399af8c7dcdeae0c03c48b40b9d0ab84457533d5d7882bf \ - --hash=sha256:9f2f110b9cc325f6543e0e3f4ab8008c272a59052f9464047c29d4be4511ce05 \ - --hash=sha256:a339e510a079dc8372e39ce1c7629414db51966235c9670c58d529def79243a2 \ - --hash=sha256:ad9abc3e4d2370cecb524421cc5c8a664006aa11d5c1cb3c9250e3bf65ab546e \ - --hash=sha256:b043782c8f6cccc8fae3a16db397eca1d36a41b0706cbf6f514aea1e1a260bab \ - --hash=sha256:b31de27313abbb567c528ed123380fcf18a5dfd03134570dfd12227e21ac1184 \ - --hash=sha256:b75e5644cc353328cd57ec8dafaaf5f81b2c3ecf7c4b278b907e99ad53ba7839 \ - --hash=sha256:b8cfc8fc944bd7b704691bc28225a2635e377e92dc413459845868d3f7724982 \ - --hash=sha256:c2055c52260808d87622293b57df1c68aeb12ddd8a0cfc0223fb57a5f629e202 \ - --hash=sha256:c416106b3b8e905b6ab0e84ec90047a6401021aa023f9aa93978e57cd8f8189f \ - --hash=sha256:d0e210e17a6181a3fd3f8dce957043a4e74177ffa9f295514984b2b633940dce \ - --hash=sha256:d9453135e48cd631e3e9f06d9da9100d17c9f662e4a6d8b552c29be6c834a6b9 \ - --hash=sha256:dd0198006278291d9469309d655093df1f5e5107c0261e242b5f390baee32199 \ - --hash=sha256:e1781bda1e787d3ad33788cc3be47f6e47a9581676d02670c15ee36c9460adfe \ - --hash=sha256:e56a5a9f303e3ac011ba445a6d84f05d08666bf8db094afafcec5228622c30f5 \ - --hash=sha256:e93ae35f0fd3caf75e58c76a1cab71e6ece169aaa1b281782ef9efde0a6b83f2 \ - --hash=sha256:eb36b6570646227a63eda03916f1cc6f3744ee96d28f7a0a5629c59267a8055f \ - --hash=sha256:f8c425a130e04d5404edaf6f5906e5ab12f3aa1168a1828aba6dfadac5910469 +greenlet==2.0.1 \ + --hash=sha256:0109af1138afbfb8ae647e31a2b1ab030f58b21dd8528c27beaeb0093b7938a9 \ + --hash=sha256:0459d94f73265744fee4c2d5ec44c6f34aa8a31017e6e9de770f7bcf29710be9 \ + --hash=sha256:04957dc96669be041e0c260964cfef4c77287f07c40452e61abe19d647505581 \ + --hash=sha256:0722c9be0797f544a3ed212569ca3fe3d9d1a1b13942d10dd6f0e8601e484d26 \ + --hash=sha256:097e3dae69321e9100202fc62977f687454cd0ea147d0fd5a766e57450c569fd \ + --hash=sha256:0b493db84d124805865adc587532ebad30efa68f79ad68f11b336e0a51ec86c2 \ + --hash=sha256:13ba6e8e326e2116c954074c994da14954982ba2795aebb881c07ac5d093a58a \ + --hash=sha256:13ebf93c343dd8bd010cd98e617cb4c1c1f352a0cf2524c82d3814154116aa82 \ + --hash=sha256:1407fe45246632d0ffb7a3f4a520ba4e6051fc2cbd61ba1f806900c27f47706a \ + --hash=sha256:1bf633a50cc93ed17e494015897361010fc08700d92676c87931d3ea464123ce \ + --hash=sha256:2d0bac0385d2b43a7bd1d651621a4e0f1380abc63d6fb1012213a401cbd5bf8f \ + --hash=sha256:3001d00eba6bbf084ae60ec7f4bb8ed375748f53aeaefaf2a37d9f0370558524 \ + --hash=sha256:356e4519d4dfa766d50ecc498544b44c0249b6de66426041d7f8b751de4d6b48 \ + --hash=sha256:38255a3f1e8942573b067510f9611fc9e38196077b0c8eb7a8c795e105f9ce77 \ + --hash=sha256:3d75b8d013086b08e801fbbb896f7d5c9e6ccd44f13a9241d2bf7c0df9eda928 \ + --hash=sha256:41b825d65f31e394b523c84db84f9383a2f7eefc13d987f308f4663794d2687e \ + --hash=sha256:42e602564460da0e8ee67cb6d7236363ee5e131aa15943b6670e44e5c2ed0f67 \ + --hash=sha256:4aeaebcd91d9fee9aa768c1b39cb12214b30bf36d2b7370505a9f2165fedd8d9 \ + --hash=sha256:4c8b1c43e75c42a6cafcc71defa9e01ead39ae80bd733a2608b297412beede68 \ + --hash=sha256:4d37990425b4687ade27810e3b1a1c37825d242ebc275066cfee8cb6b8829ccd \ + --hash=sha256:4f09b0010e55bec3239278f642a8a506b91034f03a4fb28289a7d448a67f1515 \ + --hash=sha256:505138d4fa69462447a562a7c2ef723c6025ba12ac04478bc1ce2fcc279a2db5 \ + --hash=sha256:5067920de254f1a2dee8d3d9d7e4e03718e8fd2d2d9db962c8c9fa781ae82a39 \ + --hash=sha256:56961cfca7da2fdd178f95ca407fa330c64f33289e1804b592a77d5593d9bd94 \ + --hash=sha256:5a8e05057fab2a365c81abc696cb753da7549d20266e8511eb6c9d9f72fe3e92 \ + --hash=sha256:659f167f419a4609bc0516fb18ea69ed39dbb25594934bd2dd4d0401660e8a1e \ + --hash=sha256:662e8f7cad915ba75d8017b3e601afc01ef20deeeabf281bd00369de196d7726 \ + --hash=sha256:6f61d71bbc9b4a3de768371b210d906726535d6ca43506737682caa754b956cd \ + --hash=sha256:72b00a8e7c25dcea5946692a2485b1a0c0661ed93ecfedfa9b6687bd89a24ef5 \ + --hash=sha256:811e1d37d60b47cb8126e0a929b58c046251f28117cb16fcd371eed61f66b764 \ + --hash=sha256:81b0ea3715bf6a848d6f7149d25bf018fd24554a4be01fcbbe3fdc78e890b955 \ + --hash=sha256:88c8d517e78acdf7df8a2134a3c4b964415b575d2840a2746ddb1cc6175f8608 \ + --hash=sha256:8dca09dedf1bd8684767bc736cc20c97c29bc0c04c413e3276e0962cd7aeb148 \ + --hash=sha256:974a39bdb8c90a85982cdb78a103a32e0b1be986d411303064b28a80611f6e51 \ + --hash=sha256:9e112e03d37987d7b90c1e98ba5e1b59e1645226d78d73282f45b326f7bddcb9 \ + --hash=sha256:9e9744c657d896c7b580455e739899e492a4a452e2dd4d2b3e459f6b244a638d \ + --hash=sha256:9ed358312e63bf683b9ef22c8e442ef6c5c02973f0c2a939ec1d7b50c974015c \ + --hash=sha256:9f2c221eecb7ead00b8e3ddb913c67f75cba078fd1d326053225a3f59d850d72 \ + --hash=sha256:a20d33124935d27b80e6fdacbd34205732660e0a1d35d8b10b3328179a2b51a1 \ + --hash=sha256:a4c0757db9bd08470ff8277791795e70d0bf035a011a528ee9a5ce9454b6cba2 \ + --hash=sha256:afe07421c969e259e9403c3bb658968702bc3b78ec0b6fde3ae1e73440529c23 \ + --hash=sha256:b1992ba9d4780d9af9726bbcef6a1db12d9ab1ccc35e5773685a24b7fb2758eb \ + --hash=sha256:b23d2a46d53210b498e5b701a1913697671988f4bf8e10f935433f6e7c332fb6 \ + --hash=sha256:b5e83e4de81dcc9425598d9469a624826a0b1211380ac444c7c791d4a2137c19 \ + --hash=sha256:be35822f35f99dcc48152c9839d0171a06186f2d71ef76dc57fa556cc9bf6b45 \ + --hash=sha256:be9e0fb2ada7e5124f5282d6381903183ecc73ea019568d6d63d33f25b2a9000 \ + --hash=sha256:c140e7eb5ce47249668056edf3b7e9900c6a2e22fb0eaf0513f18a1b2c14e1da \ + --hash=sha256:c6a08799e9e88052221adca55741bf106ec7ea0710bca635c208b751f0d5b617 \ + --hash=sha256:cb242fc2cda5a307a7698c93173d3627a2a90d00507bccf5bc228851e8304963 \ + --hash=sha256:cce1e90dd302f45716a7715517c6aa0468af0bf38e814ad4eab58e88fc09f7f7 \ + --hash=sha256:cd4ccc364cf75d1422e66e247e52a93da6a9b73cefa8cad696f3cbbb75af179d \ + --hash=sha256:d21681f09e297a5adaa73060737e3aa1279a13ecdcfcc6ef66c292cb25125b2d \ + --hash=sha256:d38ffd0e81ba8ef347d2be0772e899c289b59ff150ebbbbe05dc61b1246eb4e0 \ + --hash=sha256:d566b82e92ff2e09dd6342df7e0eb4ff6275a3f08db284888dcd98134dbd4243 \ + --hash=sha256:d5b0ff9878333823226d270417f24f4d06f235cb3e54d1103b71ea537a6a86ce \ + --hash=sha256:d6ee1aa7ab36475035eb48c01efae87d37936a8173fc4d7b10bb02c2d75dd8f6 \ + --hash=sha256:db38f80540083ea33bdab614a9d28bcec4b54daa5aff1668d7827a9fc769ae0a \ + --hash=sha256:ea688d11707d30e212e0110a1aac7f7f3f542a259235d396f88be68b649e47d1 \ + --hash=sha256:f6327b6907b4cb72f650a5b7b1be23a2aab395017aa6f1adb13069d66360eb3f \ + --hash=sha256:fb412b7db83fe56847df9c47b6fe3f13911b06339c2aa02dcc09dce8bbf582cd # via eventlet -grpcio==1.50.0 \ - --hash=sha256:05f7c248e440f538aaad13eee78ef35f0541e73498dd6f832fe284542ac4b298 \ - --hash=sha256:080b66253f29e1646ac53ef288c12944b131a2829488ac3bac8f52abb4413c0d \ - --hash=sha256:12b479839a5e753580b5e6053571de14006157f2ef9b71f38c56dc9b23b95ad6 \ - --hash=sha256:156f8009e36780fab48c979c5605eda646065d4695deea4cfcbcfdd06627ddb6 \ - --hash=sha256:15f9e6d7f564e8f0776770e6ef32dac172c6f9960c478616c366862933fa08b4 \ - --hash=sha256:177afaa7dba3ab5bfc211a71b90da1b887d441df33732e94e26860b3321434d9 \ - --hash=sha256:1a4cd8cb09d1bc70b3ea37802be484c5ae5a576108bad14728f2516279165dd7 \ - --hash=sha256:1d8d02dbb616c0a9260ce587eb751c9c7dc689bc39efa6a88cc4fa3e9c138a7b \ - --hash=sha256:2b71916fa8f9eb2abd93151fafe12e18cebb302686b924bd4ec39266211da525 \ - --hash=sha256:2d9fd6e38b16c4d286a01e1776fdf6c7a4123d99ae8d6b3f0b4a03a34bf6ce45 \ - --hash=sha256:3b611b3de3dfd2c47549ca01abfa9bbb95937eb0ea546ea1d762a335739887be \ - --hash=sha256:3e4244c09cc1b65c286d709658c061f12c61c814be0b7030a2d9966ff02611e0 \ - --hash=sha256:40838061e24f960b853d7bce85086c8e1b81c6342b1f4c47ff0edd44bbae2722 \ - --hash=sha256:4b123fbb7a777a2fedec684ca0b723d85e1d2379b6032a9a9b7851829ed3ca9a \ - --hash=sha256:531f8b46f3d3db91d9ef285191825d108090856b3bc86a75b7c3930f16ce432f \ - --hash=sha256:67dd41a31f6fc5c7db097a5c14a3fa588af54736ffc174af4411d34c4f306f68 \ - --hash=sha256:7489dbb901f4fdf7aec8d3753eadd40839c9085967737606d2c35b43074eea24 \ - --hash=sha256:8d4c8e73bf20fb53fe5a7318e768b9734cf122fe671fcce75654b98ba12dfb75 \ - --hash=sha256:8e69aa4e9b7f065f01d3fdcecbe0397895a772d99954bb82eefbb1682d274518 \ - --hash=sha256:8e8999a097ad89b30d584c034929f7c0be280cd7851ac23e9067111167dcbf55 \ - --hash=sha256:906f4d1beb83b3496be91684c47a5d870ee628715227d5d7c54b04a8de802974 \ - --hash=sha256:92d7635d1059d40d2ec29c8bf5ec58900120b3ce5150ef7414119430a4b2dd5c \ - --hash=sha256:931e746d0f75b2a5cff0a1197d21827a3a2f400c06bace036762110f19d3d507 \ - --hash=sha256:95ce51f7a09491fb3da8cf3935005bff19983b77c4e9437ef77235d787b06842 \ - --hash=sha256:9eea18a878cffc804506d39c6682d71f6b42ec1c151d21865a95fae743fda500 \ - --hash=sha256:a23d47f2fc7111869f0ff547f771733661ff2818562b04b9ed674fa208e261f4 \ - --hash=sha256:a4c23e54f58e016761b576976da6a34d876420b993f45f66a2bfb00363ecc1f9 \ - --hash=sha256:a50a1be449b9e238b9bd43d3857d40edf65df9416dea988929891d92a9f8a778 \ - --hash=sha256:ab5d0e3590f0a16cb88de4a3fa78d10eb66a84ca80901eb2c17c1d2c308c230f \ - --hash=sha256:ae23daa7eda93c1c49a9ecc316e027ceb99adbad750fbd3a56fa9e4a2ffd5ae0 \ - --hash=sha256:af98d49e56605a2912cf330b4627e5286243242706c3a9fa0bcec6e6f68646fc \ - --hash=sha256:b2f77a90ba7b85bfb31329f8eab9d9540da2cf8a302128fb1241d7ea239a5469 \ - --hash=sha256:baab51dcc4f2aecabf4ed1e2f57bceab240987c8b03533f1cef90890e6502067 \ - --hash=sha256:ca8a2254ab88482936ce941485c1c20cdeaef0efa71a61dbad171ab6758ec998 \ - --hash=sha256:cb11464f480e6103c59d558a3875bd84eed6723f0921290325ebe97262ae1347 \ - --hash=sha256:ce8513aee0af9c159319692bfbf488b718d1793d764798c3d5cff827a09e25ef \ - --hash=sha256:cf151f97f5f381163912e8952eb5b3afe89dec9ed723d1561d59cabf1e219a35 \ - --hash=sha256:d144ad10eeca4c1d1ce930faa105899f86f5d99cecfe0d7224f3c4c76265c15e \ - --hash=sha256:d534d169673dd5e6e12fb57cc67664c2641361e1a0885545495e65a7b761b0f4 \ - --hash=sha256:d75061367a69808ab2e84c960e9dce54749bcc1e44ad3f85deee3a6c75b4ede9 \ - --hash=sha256:d84d04dec64cc4ed726d07c5d17b73c343c8ddcd6b59c7199c801d6bbb9d9ed1 \ - --hash=sha256:de411d2b030134b642c092e986d21aefb9d26a28bf5a18c47dd08ded411a3bc5 \ - --hash=sha256:e07fe0d7ae395897981d16be61f0db9791f482f03fee7d1851fe20ddb4f69c03 \ - --hash=sha256:ea8ccf95e4c7e20419b7827aa5b6da6f02720270686ac63bd3493a651830235c \ - --hash=sha256:f7025930039a011ed7d7e7ef95a1cb5f516e23c5a6ecc7947259b67bea8e06ca +grpcio==1.46.5 \ + --hash=sha256:039027b14027645b7d32ce4166ca62aed679de16b81a95c661cad6d76c2543a2 \ + --hash=sha256:090ae525d05302f13fae099008c63b9a0256b481ff8a85d763017f55d2c9dc20 \ + --hash=sha256:09325ec5645ba9c5b642afd5258bcbc66c043ce425844d649635a6f80be8d743 \ + --hash=sha256:0f573313fbf97151cfa646179cf93d76183c49b8af29ee07b94288d671da3d48 \ + --hash=sha256:13172219a55d93b585a5b0b665e1759a9ccdf1d6bdb04cb794b93dc9c9b97a44 \ + --hash=sha256:1722d44b6a1b16becd61a481ffe2cb77ac42257b742fe12819e07ce292fdc737 \ + --hash=sha256:19aca9ee6b32420bc7f35564565c50f735b8de5efe86de3e34e01369f23af6ad \ + --hash=sha256:2131d0837292ae3c10f6d3df106117a8eb5c02bc49ea262d2e594037867f3975 \ + --hash=sha256:25306b148c98aa1d6334553e4f5c1fc6618162eefcc6d83a84c2dc8322352efd \ + --hash=sha256:2b743906a9380412e5787a7a18226d97416613927836f09f6d85cfb2b86ab16e \ + --hash=sha256:33af11f6a7c37037b32e2453d0363003236c28aceeb728d1c51c3409904c827d \ + --hash=sha256:340539cf0a830ca05f0e28de3f2573307df88ea9565885ffe253ce0f8c4c30d2 \ + --hash=sha256:34851656cb37d9ac4d9b06b90a5eb5a64c6fc28f151d0036a73d6ed664d45c0e \ + --hash=sha256:37d70b81a5bb24689dd5d5d7e35447d058008c821d5a4424909a3cf96c619521 \ + --hash=sha256:38b6a7d4bd2f7154be5b84e20403b8f3d107e01f47c98bb6a33e9deaa25946af \ + --hash=sha256:435ff0eb9061012ec9a5fd1c8a588cdc05853fbe332620b99551b3a78c3ebd78 \ + --hash=sha256:455275d14b166f57a4d1ab764831b7de079bbc344bdbc0bb54ae468b0e1a6d02 \ + --hash=sha256:570d605169ecf1df64b32514c5c790941c289194b7f4b94b17a9fc7318897072 \ + --hash=sha256:5808d63e91158bfffc103fdb383745f4005e34b6c1b0321686adfa322691f3da \ + --hash=sha256:5c5cd3a1f5c0f234f25a449b36b821625c24b94723dfc32081db2dc6f5d56cba \ + --hash=sha256:62c42406c30fb478bc1bf319ba59353375344183968f7865afd2e549bff7b674 \ + --hash=sha256:6eb79441d2b1712f3884988e9d1e301134136328a3ab5bc8298423b0de451020 \ + --hash=sha256:811749aab82c20886c217c8e2316b90840488a20e12bd93c66e26d06781b5240 \ + --hash=sha256:858bd1057a25412189ddd7076d54dc49856b70d94870769cab5504e05409fe9f \ + --hash=sha256:859a17c771241a390d558749fe397a63259a7f463da803cb298ad22350c0f1f5 \ + --hash=sha256:8eda5b87a1e84f2a9838cf62837d54fa1cf9188c9656690ef2bc0d5cab68159a \ + --hash=sha256:96880d2dfd620749ebb6edfb87f227edc63f42da70bc8c966a2003bf45983f44 \ + --hash=sha256:a63d3970c773b07022ff73dbdb0d995ec1ad7fb03cc8470b0432708f6f6346ad \ + --hash=sha256:afab0cf759bef6edd3373f3084ea1666be7c4c7cde019dff9400869f8bf13e81 \ + --hash=sha256:b2f4e669c0b3b49499536f7885c6b08d3482c3e3beaa682945f271b1dd8e8235 \ + --hash=sha256:b90d15aa25693ab429530c6a869b7328fd0c1d72d5920c4abaeff0d642f670e8 \ + --hash=sha256:c5eb1ac6b8bbdf77372a270a255eaa3304c61d3170652e110c3319dc905bcecc \ + --hash=sha256:c64429d0fcf358474f51a190bc9a912281bd4da3e830149cf8781d329411d63b \ + --hash=sha256:c98abd5a937f616b4abedff9baddc6f206af8012be2a0216cacbca0397002292 \ + --hash=sha256:cd23fac1f25ca3e60fe308010eef4f87b51ece63d83d1f73c0da12160fc8b838 \ + --hash=sha256:ceac8b4e1d1cbbb048ee98464fae2bdff2900a444231144443754eb010d501c2 \ + --hash=sha256:cf7de724b267b66fb45d9da9936fb6e205cd6d4f20e840ede3a0bf6977ebdd07 \ + --hash=sha256:d20a6960248e1c021878d9258d2de334221ab13d273bf5d6711a087860e1c61b \ + --hash=sha256:d44d87cf7407266d5f1b9f30808066ec507f292d94a805559c5761a6ceca2bcd \ + --hash=sha256:d618e0b9ff1e3309cc55c4a82994085cc0ac74a21520a30d2ae43d45934896ad \ + --hash=sha256:d9e1cdd3cf68bea66cda5355d0e5926f68ef267cd92ce6fe555abe130e8dab63 \ + --hash=sha256:dc73592adda618ac74616e759fc121a2f91cb270e2e95b16f5ca95039a288d93 \ + --hash=sha256:dce155741e985c0669c3f581adbf199aa01659a1c3a13f56e1f15e4b8e98af47 \ + --hash=sha256:e15798216706f00b4353639ccc497e3e6f1269cef3f8941595df5c7a0d13e0bf \ + --hash=sha256:e55f1758567a004d061e78754669e74407fc54373696de7b6f02be3196439ca3 \ + --hash=sha256:ed6927e0219d860c89c0e19c5b757aee41a6bfbec38fc9176689bccf1dbbdd4e \ + --hash=sha256:f0369573d2b3ac60036091e09e5b0bef68f4b272be0922de51a03613cc25b132 \ + --hash=sha256:f084fa3083b9eff883ffaadb583f662a7a164a502149edb52f591b47747bce01 \ + --hash=sha256:f1fdb434e53fa099abfd16d20b0dceec9ea82cb29be12ab95dae27723a2684ca \ + --hash=sha256:f32e26db44beec813ab08de10be6b71a37370845093ddd0eaf644ea116190b53 \ + --hash=sha256:f4107d903514ddff94c47e1ad53314adb5b7fe8047ca78f17a4d9ca5d80c415a \ + --hash=sha256:f8876fa61e8a2c61eb6707021c486a8f3984a5cf9c3f30f733e38d5f5d8d6f32 \ + --hash=sha256:fc04e33c2db43de852508920cc9982173c30989499f7abd621109ec2342f8710 \ + --hash=sha256:ff76d6ef1cc018f20544cfbc47c552751bfa6a85d9150edbd459265f6a27ee99 # via # tb-nightly # tensorboard -huggingface-hub==0.10.1 \ - --hash=sha256:5c188d5b16bec4b78449f8681f9975ff9d321c16046cc29bcf0d7e464ff29276 \ - --hash=sha256:dc3b0e9a663fe6cad6a8522055c02a9d8673dbd527223288e2442bc028c253db +huggingface-hub==0.11.1 \ + --hash=sha256:11eed7aab4fa4d1fb532f2aea3379ef4998d9f6bc24a330834dfedd3dac7f441 \ + --hash=sha256:8b9ebf9bbb1782f6f0419ec490973a6487c6c4ed84293a8a325d34c4f898f53f # via # diffusers # transformers @@ -563,9 +591,9 @@ idna==2.10 \ # via # requests # yarl -imageio==2.22.3 \ - --hash=sha256:63f007b7f2a082306e36922b3fd529a7aa305d2b78f46195bab8e22bbfe866e9 \ - --hash=sha256:a4b88f9f3d428b8c0ceeb7e297df8c346a642bb7e3111743eb85717d60b26f6f +imageio==2.22.4 \ + --hash=sha256:0fae027addf02bc89c73a56cc157ad84557f8b8b84aa19b4cb706fefca2d88ff \ + --hash=sha256:bb173f8af27e4921f59539c4d45068fcedb892e58261fce8253f31c9a0ff9ccf # via # scikit-image # test-tube @@ -576,10 +604,10 @@ imageio-ffmpeg==0.4.7 \ --hash=sha256:7a08838f97f363e37ca41821b864fd3fdc99ab1fe2421040c78eb5f56a9e723e \ --hash=sha256:8e724d12dfe83e2a6eb39619e820243ca96c81c47c2648e66e05f7ee24e14312 \ --hash=sha256:fc60686ef03c2d0f842901b206223c30051a6a120384458761390104470846fd - # via -r requirements.in -importlib-metadata==5.0.0 \ - --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ - --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 + # via -r installer/requirements.in +importlib-metadata==5.1.0 \ + --hash=sha256:d5059f9f1e8e41f80e9c56c2ee58811450c31984dfa625329ffd7c0dad88a73b \ + --hash=sha256:d84d17e21670ec07990e1044a99efe8d615d860fd176fc29ef5c306068fda313 # via # diffusers # streamlit @@ -601,15 +629,15 @@ joblib==1.2.0 \ jsonmerge==1.9.0 \ --hash=sha256:a2d1f80021c5c1d70a49e31f862b5f068f9db066080d8561e80654de74a3584d # via k-diffusion -jsonschema==4.17.0 \ - --hash=sha256:5bfcf2bca16a087ade17e02b282d34af7ccd749ef76241e7f9bd7c0cb8a9424d \ - --hash=sha256:f660066c3966db7d6daeaea8a75e0b68237a48e51cf49882087757bb59916248 +jsonschema==4.17.1 \ + --hash=sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3 \ + --hash=sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7 # via # altair # jsonmerge k-diffusion @ https://github.com/invoke-ai/k-diffusion/archive/7f16b2c33411f26b3eae78d10648d625cb0c1095.zip \ --hash=sha256:c3f2c84036aa98c3abf4552fafab04df5ca472aa639982795e05bb1db43ce5e4 - # via -r requirements.in + # via -r installer/requirements.in kiwisolver==1.4.4 \ --hash=sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b \ --hash=sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166 \ @@ -684,6 +712,10 @@ kornia==0.6.8 \ --hash=sha256:0985e02453c0ab4f030e8d22a3a7554dab312ffa8f8a54ec872190e6f0b58c56 \ --hash=sha256:0d6d69330b4fd24da742337b8134da0ce01b4d7da66770db5498d58e8b4a0832 # via k-diffusion +lightning-utilities==0.3.0 \ + --hash=sha256:1ae9bdd8f1be3c81b1ac4820f6eeddcbafcc2505c57a5940054466f4763bc22d \ + --hash=sha256:d769ab9b76ebdee3243d1051d509aafee57d7947734ddc22977deef8a6427f2f + # via pytorch-lightning llvmlite==0.39.1 \ --hash=sha256:03aee0ccd81735696474dc4f8b6be60774892a2929d6c05d093d17392c237f32 \ --hash=sha256:1578f5000fdce513712e99543c50e93758a954297575610f48cb1fd71b27c08a \ @@ -837,7 +869,9 @@ matplotlib==3.6.2 \ --hash=sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4 \ --hash=sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0 \ --hash=sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec - # via filterpy + # via + # clipseg + # filterpy multidict==6.0.2 \ --hash=sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60 \ --hash=sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c \ @@ -935,41 +969,42 @@ numba==0.56.4 \ --hash=sha256:fbfb45e7b297749029cb28694abf437a78695a100e7c2033983d69f0ba2698d4 \ --hash=sha256:fcdf84ba3ed8124eb7234adfbb8792f311991cbf8aed1cad4b1b1a7ee08380c1 # via facexlib -numpy==1.23.4 \ - --hash=sha256:0fe563fc8ed9dc4474cbf70742673fc4391d70f4363f917599a7fa99f042d5a8 \ - --hash=sha256:12ac457b63ec8ded85d85c1e17d85efd3c2b0967ca39560b307a35a6703a4735 \ - --hash=sha256:2341f4ab6dba0834b685cce16dad5f9b6606ea8a00e6da154f5dbded70fdc4dd \ - --hash=sha256:296d17aed51161dbad3c67ed6d164e51fcd18dbcd5dd4f9d0a9c6055dce30810 \ - --hash=sha256:488a66cb667359534bc70028d653ba1cf307bae88eab5929cd707c761ff037db \ - --hash=sha256:4d52914c88b4930dafb6c48ba5115a96cbab40f45740239d9f4159c4ba779962 \ - --hash=sha256:5e13030f8793e9ee42f9c7d5777465a560eb78fa7e11b1c053427f2ccab90c79 \ - --hash=sha256:61be02e3bf810b60ab74e81d6d0d36246dbfb644a462458bb53b595791251911 \ - --hash=sha256:7607b598217745cc40f751da38ffd03512d33ec06f3523fb0b5f82e09f6f676d \ - --hash=sha256:7a70a7d3ce4c0e9284e92285cba91a4a3f5214d87ee0e95928f3614a256a1488 \ - --hash=sha256:7ab46e4e7ec63c8a5e6dbf5c1b9e1c92ba23a7ebecc86c336cb7bf3bd2fb10e5 \ - --hash=sha256:8981d9b5619569899666170c7c9748920f4a5005bf79c72c07d08c8a035757b0 \ - --hash=sha256:8c053d7557a8f022ec823196d242464b6955a7e7e5015b719e76003f63f82d0f \ - --hash=sha256:926db372bc4ac1edf81cfb6c59e2a881606b409ddc0d0920b988174b2e2a767f \ - --hash=sha256:95d79ada05005f6f4f337d3bb9de8a7774f259341c70bc88047a1f7b96a4bcb2 \ - --hash=sha256:95de7dc7dc47a312f6feddd3da2500826defdccbc41608d0031276a24181a2c0 \ - --hash=sha256:a0882323e0ca4245eb0a3d0a74f88ce581cc33aedcfa396e415e5bba7bf05f68 \ - --hash=sha256:a8365b942f9c1a7d0f0dc974747d99dd0a0cdfc5949a33119caf05cb314682d3 \ - --hash=sha256:a8aae2fb3180940011b4862b2dd3756616841c53db9734b27bb93813cd79fce6 \ - --hash=sha256:c237129f0e732885c9a6076a537e974160482eab8f10db6292e92154d4c67d71 \ - --hash=sha256:c67b833dbccefe97cdd3f52798d430b9d3430396af7cdb2a0c32954c3ef73894 \ - --hash=sha256:ce03305dd694c4873b9429274fd41fc7eb4e0e4dea07e0af97a933b079a5814f \ - --hash=sha256:d331afac87c92373826af83d2b2b435f57b17a5c74e6268b79355b970626e329 \ - --hash=sha256:dada341ebb79619fe00a291185bba370c9803b1e1d7051610e01ed809ef3a4ba \ - --hash=sha256:ed2cc92af0efad20198638c69bb0fc2870a58dabfba6eb722c933b48556c686c \ - --hash=sha256:f260da502d7441a45695199b4e7fd8ca87db659ba1c78f2bbf31f934fe76ae0e \ - --hash=sha256:f2f390aa4da44454db40a1f0201401f9036e8d578a25f01a6e237cea238337ef \ - --hash=sha256:f76025acc8e2114bb664294a07ede0727aa75d63a06d2fae96bf29a81747e4a7 +numpy==1.23.5 \ + --hash=sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d \ + --hash=sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07 \ + --hash=sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df \ + --hash=sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9 \ + --hash=sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d \ + --hash=sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a \ + --hash=sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719 \ + --hash=sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2 \ + --hash=sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280 \ + --hash=sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa \ + --hash=sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387 \ + --hash=sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1 \ + --hash=sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43 \ + --hash=sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f \ + --hash=sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398 \ + --hash=sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63 \ + --hash=sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de \ + --hash=sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8 \ + --hash=sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481 \ + --hash=sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0 \ + --hash=sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d \ + --hash=sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e \ + --hash=sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96 \ + --hash=sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb \ + --hash=sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6 \ + --hash=sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d \ + --hash=sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a \ + --hash=sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135 # via # accelerate # albumentations # altair # basicsr # clean-fid + # clipseg # contourpy # diffusers # facexlib @@ -983,6 +1018,7 @@ numpy==1.23.4 \ # pandas # pyarrow # pydeck + # pypatchmatch # pytorch-lightning # pywavelets # qudida @@ -994,6 +1030,7 @@ numpy==1.23.4 \ # taming-transformers-rom1504 # tb-nightly # tensorboard + # tensorboardx # test-tube # tifffile # torch-fidelity @@ -1018,6 +1055,7 @@ opencv-python==4.6.0.66 \ --hash=sha256:f482e78de6e7b0b060ff994ffd859bddc3f7f382bb2019ef157b0ea8ca8712f5 # via # basicsr + # clipseg # facexlib # gfpgan # realesrgan @@ -1045,34 +1083,34 @@ packaging==21.3 \ # streamlit # torchmetrics # transformers -pandas==1.5.1 \ - --hash=sha256:04e51b01d5192499390c0015630975f57836cc95c7411415b499b599b05c0c96 \ - --hash=sha256:05c527c64ee02a47a24031c880ee0ded05af0623163494173204c5b72ddce658 \ - --hash=sha256:0a78e05ec09731c5b3bd7a9805927ea631fe6f6cb06f0e7c63191a9a778d52b4 \ - --hash=sha256:17da7035d9e6f9ea9cdc3a513161f8739b8f8489d31dc932bc5a29a27243f93d \ - --hash=sha256:249cec5f2a5b22096440bd85c33106b6102e0672204abd2d5c014106459804ee \ - --hash=sha256:2c25e5c16ee5c0feb6cf9d982b869eec94a22ddfda9aa2fbed00842cbb697624 \ - --hash=sha256:32e3d9f65606b3f6e76555bfd1d0b68d94aff0929d82010b791b6254bf5a4b96 \ - --hash=sha256:36aa1f8f680d7584e9b572c3203b20d22d697c31b71189322f16811d4ecfecd3 \ - --hash=sha256:5b0c970e2215572197b42f1cff58a908d734503ea54b326412c70d4692256391 \ - --hash=sha256:5cee0c74e93ed4f9d39007e439debcaadc519d7ea5c0afc3d590a3a7b2edf060 \ - --hash=sha256:669c8605dba6c798c1863157aefde959c1796671ffb342b80fcb80a4c0bc4c26 \ - --hash=sha256:66a1ad667b56e679e06ba73bb88c7309b3f48a4c279bd3afea29f65a766e9036 \ - --hash=sha256:683779e5728ac9138406c59a11e09cd98c7d2c12f0a5fc2b9c5eecdbb4a00075 \ - --hash=sha256:6bb391659a747cf4f181a227c3e64b6d197100d53da98dcd766cc158bdd9ec68 \ - --hash=sha256:81f0674fa50b38b6793cd84fae5d67f58f74c2d974d2cb4e476d26eee33343d0 \ - --hash=sha256:927e59c694e039c75d7023465d311277a1fc29ed7236b5746e9dddf180393113 \ - --hash=sha256:932d2d7d3cab44cfa275601c982f30c2d874722ef6396bb539e41e4dc4618ed4 \ - --hash=sha256:a52419d9ba5906db516109660b114faf791136c94c1a636ed6b29cbfff9187ee \ - --hash=sha256:b156a971bc451c68c9e1f97567c94fd44155f073e3bceb1b0d195fd98ed12048 \ - --hash=sha256:bcf1a82b770b8f8c1e495b19a20d8296f875a796c4fe6e91da5ef107f18c5ecb \ - --hash=sha256:cb2a9cf1150302d69bb99861c5cddc9c25aceacb0a4ef5299785d0f5389a3209 \ - --hash=sha256:d8c709f4700573deb2036d240d140934df7e852520f4a584b2a8d5443b71f54d \ - --hash=sha256:db45b94885000981522fb92349e6b76f5aee0924cc5315881239c7859883117d \ - --hash=sha256:ddf46b940ef815af4e542697eaf071f0531449407a7607dd731bf23d156e20a7 \ - --hash=sha256:e675f8fe9aa6c418dc8d3aac0087b5294c1a4527f1eacf9fe5ea671685285454 \ - --hash=sha256:eb7e8cf2cf11a2580088009b43de84cabbf6f5dae94ceb489f28dba01a17cb77 \ - --hash=sha256:f340331a3f411910adfb4bbe46c2ed5872d9e473a783d7f14ecf49bc0869c594 +pandas==1.5.2 \ + --hash=sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883 \ + --hash=sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028 \ + --hash=sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b \ + --hash=sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824 \ + --hash=sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe \ + --hash=sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e \ + --hash=sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261 \ + --hash=sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b \ + --hash=sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f \ + --hash=sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5 \ + --hash=sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0 \ + --hash=sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a \ + --hash=sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc \ + --hash=sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39 \ + --hash=sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5 \ + --hash=sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702 \ + --hash=sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f \ + --hash=sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3 \ + --hash=sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519 \ + --hash=sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f \ + --hash=sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc \ + --hash=sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72 \ + --hash=sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb \ + --hash=sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789 \ + --hash=sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090 \ + --hash=sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273 \ + --hash=sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2 # via # altair # streamlit @@ -1080,6 +1118,10 @@ pandas==1.5.1 \ pathtools==0.1.2 \ --hash=sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 # via wandb +picklescan==0.0.5 \ + --hash=sha256:368cf1b9a075bc1b6460ad82b694f260532b836c82f99d13846cd36e1bbe7f9a \ + --hash=sha256:57153eca04d5df5009f2cdd595aef261b8a6f27e03046a1c84f672aa6869c592 + # via -r installer/requirements.in pillow==9.3.0 \ --hash=sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040 \ --hash=sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8 \ @@ -1150,6 +1192,7 @@ pillow==9.3.0 \ # imageio # k-diffusion # matplotlib + # pypatchmatch # realesrgan # scikit-image # streamlit @@ -1158,100 +1201,82 @@ pillow==9.3.0 \ promise==2.3 \ --hash=sha256:dfd18337c523ba4b6a58801c164c1904a9d4d1b1747c7d5dbf45b693a49d93d0 # via wandb -protobuf==3.19.6 \ - --hash=sha256:010be24d5a44be7b0613750ab40bc8b8cedc796db468eae6c779b395f50d1fa1 \ - --hash=sha256:0469bc66160180165e4e29de7f445e57a34ab68f49357392c5b2f54c656ab25e \ - --hash=sha256:0c0714b025ec057b5a7600cb66ce7c693815f897cfda6d6efb58201c472e3437 \ - --hash=sha256:11478547958c2dfea921920617eb457bc26867b0d1aa065ab05f35080c5d9eb6 \ - --hash=sha256:14082457dc02be946f60b15aad35e9f5c69e738f80ebbc0900a19bc83734a5a4 \ - --hash=sha256:2b2d2913bcda0e0ec9a784d194bc490f5dc3d9d71d322d070b11a0ade32ff6ba \ - --hash=sha256:30a15015d86b9c3b8d6bf78d5b8c7749f2512c29f168ca259c9d7727604d0e39 \ - --hash=sha256:30f5370d50295b246eaa0296533403961f7e64b03ea12265d6dfce3a391d8992 \ - --hash=sha256:347b393d4dd06fb93a77620781e11c058b3b0a5289262f094379ada2920a3730 \ - --hash=sha256:4bc98de3cdccfb5cd769620d5785b92c662b6bfad03a202b83799b6ed3fa1fa7 \ - --hash=sha256:5057c64052a1f1dd7d4450e9aac25af6bf36cfbfb3a1cd89d16393a036c49157 \ - --hash=sha256:559670e006e3173308c9254d63facb2c03865818f22204037ab76f7a0ff70b5f \ - --hash=sha256:5a0d7539a1b1fb7e76bf5faa0b44b30f812758e989e59c40f77a7dab320e79b9 \ - --hash=sha256:5f5540d57a43042389e87661c6eaa50f47c19c6176e8cf1c4f287aeefeccb5c4 \ - --hash=sha256:7a552af4dc34793803f4e735aabe97ffc45962dfd3a237bdde242bff5a3de684 \ - --hash=sha256:84a04134866861b11556a82dd91ea6daf1f4925746b992f277b84013a7cc1229 \ - --hash=sha256:878b4cd080a21ddda6ac6d1e163403ec6eea2e206cf225982ae04567d39be7b0 \ - --hash=sha256:90b0d02163c4e67279ddb6dc25e063db0130fc299aefabb5d481053509fae5c8 \ - --hash=sha256:91d5f1e139ff92c37e0ff07f391101df77e55ebb97f46bbc1535298d72019462 \ - --hash=sha256:a8ce5ae0de28b51dff886fb922012dad885e66176663950cb2344c0439ecb473 \ - --hash=sha256:aa3b82ca1f24ab5326dcf4ea00fcbda703e986b22f3d27541654f749564d778b \ - --hash=sha256:bb6776bd18f01ffe9920e78e03a8676530a5d6c5911934c6a1ac6eb78973ecb6 \ - --hash=sha256:bbf5cea5048272e1c60d235c7bd12ce1b14b8a16e76917f371c718bd3005f045 \ - --hash=sha256:c0ccd3f940fe7f3b35a261b1dd1b4fc850c8fde9f74207015431f174be5976b3 \ - --hash=sha256:d0b635cefebd7a8a0f92020562dead912f81f401af7e71f16bf9506ff3bdbb38 +protobuf==3.20.1 \ + --hash=sha256:06059eb6953ff01e56a25cd02cca1a9649a75a7e65397b5b9b4e929ed71d10cf \ + --hash=sha256:097c5d8a9808302fb0da7e20edf0b8d4703274d140fd25c5edabddcde43e081f \ + --hash=sha256:284f86a6207c897542d7e956eb243a36bb8f9564c1742b253462386e96c6b78f \ + --hash=sha256:32ca378605b41fd180dfe4e14d3226386d8d1b002ab31c969c366549e66a2bb7 \ + --hash=sha256:3cc797c9d15d7689ed507b165cd05913acb992d78b379f6014e013f9ecb20996 \ + --hash=sha256:62f1b5c4cd6c5402b4e2d63804ba49a327e0c386c99b1675c8a0fefda23b2067 \ + --hash=sha256:69ccfdf3657ba59569c64295b7d51325f91af586f8d5793b734260dfe2e94e2c \ + --hash=sha256:6f50601512a3d23625d8a85b1638d914a0970f17920ff39cec63aaef80a93fb7 \ + --hash=sha256:7403941f6d0992d40161aa8bb23e12575637008a5a02283a930addc0508982f9 \ + --hash=sha256:755f3aee41354ae395e104d62119cb223339a8f3276a0cd009ffabfcdd46bb0c \ + --hash=sha256:77053d28427a29987ca9caf7b72ccafee011257561259faba8dd308fda9a8739 \ + --hash=sha256:7e371f10abe57cee5021797126c93479f59fccc9693dafd6bd5633ab67808a91 \ + --hash=sha256:9016d01c91e8e625141d24ec1b20fed584703e527d28512aa8c8707f105a683c \ + --hash=sha256:9be73ad47579abc26c12024239d3540e6b765182a91dbc88e23658ab71767153 \ + --hash=sha256:adc31566d027f45efe3f44eeb5b1f329da43891634d61c75a5944e9be6dd42c9 \ + --hash=sha256:adfc6cf69c7f8c50fd24c793964eef18f0ac321315439d94945820612849c388 \ + --hash=sha256:af0ebadc74e281a517141daad9d0f2c5d93ab78e9d455113719a45a49da9db4e \ + --hash=sha256:cb29edb9eab15742d791e1025dd7b6a8f6fcb53802ad2f6e3adcb102051063ab \ + --hash=sha256:cd68be2559e2a3b84f517fb029ee611546f7812b1fdd0aa2ecc9bc6ec0e4fdde \ + --hash=sha256:cdee09140e1cd184ba9324ec1df410e7147242b94b5f8b0c64fc89e38a8ba531 \ + --hash=sha256:db977c4ca738dd9ce508557d4fce0f5aebd105e158c725beec86feb1f6bc20d8 \ + --hash=sha256:dd5789b2948ca702c17027c84c2accb552fc30f4622a98ab5c51fcfe8c50d3e7 \ + --hash=sha256:e250a42f15bf9d5b09fe1b293bdba2801cd520a9f5ea2d7fb7536d4441811d20 \ + --hash=sha256:ff8d8fa42675249bb456f5db06c00de6c2f4c27a065955917b28c4f15978b9c3 # via # streamlit # tb-nightly # tensorboard + # tensorboardx # wandb -psutil==5.9.3 \ - --hash=sha256:07d880053c6461c9b89cd5d4808f3b8336665fa3acdefd6777662c5ed73a851a \ - --hash=sha256:12500d761ac091f2426567f19f95fd3f15a197d96befb44a5c1e3cbe6db5752c \ - --hash=sha256:1b540599481c73408f6b392cdffef5b01e8ff7a2ac8caae0a91b8222e88e8f1e \ - --hash=sha256:35feafe232d1aaf35d51bd42790cbccb882456f9f18cdc411532902370d660df \ - --hash=sha256:3a7826e68b0cf4ce2c1ee385d64eab7d70e3133171376cac53d7c1790357ec8f \ - --hash=sha256:46907fa62acaac364fff0b8a9da7b360265d217e4fdeaca0a2397a6883dffba2 \ - --hash=sha256:4bd4854f0c83aa84a5a40d3b5d0eb1f3c128f4146371e03baed4589fe4f3c931 \ - --hash=sha256:538fcf6ae856b5e12d13d7da25ad67f02113c96f5989e6ad44422cb5994ca7fc \ - --hash=sha256:547ebb02031fdada635452250ff39942db8310b5c4a8102dfe9384ee5791e650 \ - --hash=sha256:5e8b50241dd3c2ed498507f87a6602825073c07f3b7e9560c58411c14fe1e1c9 \ - --hash=sha256:5fa88e3d5d0b480602553d362c4b33a63e0c40bfea7312a7bf78799e01e0810b \ - --hash=sha256:68fa227c32240c52982cb931801c5707a7f96dd8927f9102d6c7771ea1ff5698 \ - --hash=sha256:6ced1ad823ecfa7d3ce26fe8aa4996e2e53fb49b7fed8ad81c80958501ec0619 \ - --hash=sha256:71b1206e7909792d16933a0d2c1c7f04ae196186c51ba8567abae1d041f06dcb \ - --hash=sha256:767ef4fa33acda16703725c0473a91e1832d296c37c63896c7153ba81698f1ab \ - --hash=sha256:7ccfcdfea4fc4b0a02ca2c31de7fcd186beb9cff8207800e14ab66f79c773af6 \ - --hash=sha256:7e4939ff75149b67aef77980409f156f0082fa36accc475d45c705bb00c6c16a \ - --hash=sha256:828c9dc9478b34ab96be75c81942d8df0c2bb49edbb481f597314d92b6441d89 \ - --hash=sha256:8a4e07611997acf178ad13b842377e3d8e9d0a5bac43ece9bfc22a96735d9a4f \ - --hash=sha256:941a6c2c591da455d760121b44097781bc970be40e0e43081b9139da485ad5b7 \ - --hash=sha256:9a4af6ed1094f867834f5f07acd1250605a0874169a5fcadbcec864aec2496a6 \ - --hash=sha256:9ec296f565191f89c48f33d9544d8d82b0d2af7dd7d2d4e6319f27a818f8d1cc \ - --hash=sha256:9ec95df684583b5596c82bb380c53a603bb051cf019d5c849c47e117c5064395 \ - --hash=sha256:a04a1836894c8279e5e0a0127c0db8e198ca133d28be8a2a72b4db16f6cf99c1 \ - --hash=sha256:a3d81165b8474087bb90ec4f333a638ccfd1d69d34a9b4a1a7eaac06648f9fbe \ - --hash=sha256:b4a247cd3feaae39bb6085fcebf35b3b8ecd9b022db796d89c8f05067ca28e71 \ - --hash=sha256:ba38cf9984d5462b506e239cf4bc24e84ead4b1d71a3be35e66dad0d13ded7c1 \ - --hash=sha256:beb57d8a1ca0ae0eb3d08ccaceb77e1a6d93606f0e1754f0d60a6ebd5c288837 \ - --hash=sha256:d266cd05bd4a95ca1c2b9b5aac50d249cf7c94a542f47e0b22928ddf8b80d1ef \ - --hash=sha256:d8c3cc6bb76492133474e130a12351a325336c01c96a24aae731abf5a47fe088 \ - --hash=sha256:db8e62016add2235cc87fb7ea000ede9e4ca0aa1f221b40cef049d02d5d2593d \ - --hash=sha256:e7507f6c7b0262d3e7b0eeda15045bf5881f4ada70473b87bc7b7c93b992a7d7 \ - --hash=sha256:ed15edb14f52925869250b1375f0ff58ca5c4fa8adefe4883cfb0737d32f5c02 \ - --hash=sha256:f57d63a2b5beaf797b87024d018772439f9d3103a395627b77d17a8d72009543 \ - --hash=sha256:fa5e32c7d9b60b2528108ade2929b115167fe98d59f89555574715054f50fa31 \ - --hash=sha256:fe79b4ad4836e3da6c4650cb85a663b3a51aef22e1a829c384e18fae87e5e727 +psutil==5.9.4 \ + --hash=sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff \ + --hash=sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1 \ + --hash=sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62 \ + --hash=sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549 \ + --hash=sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08 \ + --hash=sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7 \ + --hash=sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e \ + --hash=sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe \ + --hash=sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24 \ + --hash=sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad \ + --hash=sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94 \ + --hash=sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8 \ + --hash=sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7 \ + --hash=sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4 # via # accelerate + # flaskwebgui # wandb -pyarrow==10.0.0 \ - --hash=sha256:10e031794d019425d34406edffe7e32157359e9455f9edb97a1732f8dabf802f \ - --hash=sha256:25f51dca780fc22cfd7ac30f6bdfe70eb99145aee9acfda987f2c49955d66ed9 \ - --hash=sha256:2d326a9d47ac237d81b8c4337e9d30a0b361835b536fc7ea53991455ce761fbd \ - --hash=sha256:3d2694f08c8d4482d14e3798ff036dbd81ae6b1c47948f52515e1aa90fbec3f0 \ - --hash=sha256:4051664d354b14939b5da35cfa77821ade594bc1cf56dd2032b3068c96697d74 \ - --hash=sha256:511735040b83f2993f78d7fb615e7b88253d75f41500e87e587c40156ff88120 \ - --hash=sha256:65d4a312f3ced318423704355acaccc7f7bdfe242472e59bdd54aa0f8837adf8 \ - --hash=sha256:68ccb82c04c0f7abf7a95541d5e9d9d94290fc66a2d36d3f6ea0777f40c15654 \ - --hash=sha256:69b8a1fd99201178799b02f18498633847109b701856ec762f314352a431b7d0 \ - --hash=sha256:758284e1ebd3f2a9abb30544bfec28d151a398bb7c0f2578cbca5ee5b000364a \ - --hash=sha256:7be7f42f713068293308c989a4a3a2de03b70199bdbe753901c6595ff8640c64 \ - --hash=sha256:7ce026274cd5d9934cd3694e89edecde4e036018bbc6cb735fd33b9e967e7d47 \ - --hash=sha256:7e6b837cc44cd62a0e280c8fc4de94ebce503d6d1190e6e94157ab49a8bea67b \ - --hash=sha256:b153b05765393557716e3729cf988442b3ae4f5567364ded40d58c07feed27c2 \ - --hash=sha256:b3e3148468d3eed3779d68241f1d13ed4ee7cca4c6dbc7c07e5062b93ad4da33 \ - --hash=sha256:b45f969ed924282e9d4ede38f3430630d809c36dbff65452cabce03141943d28 \ - --hash=sha256:b9f63ceb8346aac0bcb487fafe9faca642ad448ca649fcf66a027c6e120cbc12 \ - --hash=sha256:c79300e1a3e23f2bf4defcf0d70ff5ea25ef6ebf6f121d8670ee14bb662bb7ca \ - --hash=sha256:d45a59e2f47826544c0ca70bc0f7ed8ffa5ad23f93b0458230c7e983bcad1acf \ - --hash=sha256:e4c6da9f9e1ff96781ee1478f7cc0860e66c23584887b8e297c4b9905c3c9066 \ - --hash=sha256:f329951d56b3b943c353f7b27c894e02367a7efbb9fef7979c6b24e02dbfcf55 \ - --hash=sha256:f76157d9579571c865860e5fd004537c03e21139db76692d96fd8a186adab1f2 +pyarrow==10.0.1 \ + --hash=sha256:0ec7587d759153f452d5263dbc8b1af318c4609b607be2bd5127dcda6708cdb1 \ + --hash=sha256:1765a18205eb1e02ccdedb66049b0ec148c2a0cb52ed1fb3aac322dfc086a6ee \ + --hash=sha256:1a14f57a5f472ce8234f2964cd5184cccaa8df7e04568c64edc33b23eb285dd5 \ + --hash=sha256:254017ca43c45c5098b7f2a00e995e1f8346b0fb0be225f042838323bb55283c \ + --hash=sha256:42ba7c5347ce665338f2bc64685d74855900200dac81a972d49fe127e8132f75 \ + --hash=sha256:443eb9409b0cf78df10ced326490e1a300205a458fbeb0767b6b31ab3ebae6b2 \ + --hash=sha256:61f4c37d82fe00d855d0ab522c685262bdeafd3fbcb5fe596fe15025fbc7341b \ + --hash=sha256:668e00e3b19f183394388a687d29c443eb000fb3fe25599c9b4762a0afd37775 \ + --hash=sha256:6f7a7dbe2f7f65ac1d0bd3163f756deb478a9e9afc2269557ed75b1b25ab3610 \ + --hash=sha256:70acca1ece4322705652f48db65145b5028f2c01c7e426c5d16a30ba5d739c24 \ + --hash=sha256:7b4ede715c004b6fc535de63ef79fa29740b4080639a5ff1ea9ca84e9282f349 \ + --hash=sha256:94fb4a0c12a2ac1ed8e7e2aa52aade833772cf2d3de9dde685401b22cec30002 \ + --hash=sha256:abb57334f2c57979a49b7be2792c31c23430ca02d24becd0b511cbe7b6b08649 \ + --hash=sha256:b069602eb1fc09f1adec0a7bdd7897f4d25575611dfa43543c8b8a75d99d6874 \ + --hash=sha256:b1fc226d28c7783b52a84d03a66573d5a22e63f8a24b841d5fc68caeed6784d4 \ + --hash=sha256:ba71e6fc348c92477586424566110d332f60d9a35cb85278f42e3473bc1373da \ + --hash=sha256:bf26f809926a9d74e02d76593026f0aaeac48a65b64f1bb17eed9964bfe7ae1a \ + --hash=sha256:cb627673cb98708ef00864e2e243f51ba7b4c1b9f07a1d821f98043eccd3f585 \ + --hash=sha256:d1bc6e4d5d6f69e0861d5d7f6cf4d061cf1069cb9d490040129877acf16d4c2a \ + --hash=sha256:db0c5986bf0808927f49640582d2032a07aa49828f14e51f362075f03747d198 \ + --hash=sha256:e00174764a8b4e9d8d5909b6d19ee0c217a6cf0232c5682e31fdfbd5a9f0ae52 \ + --hash=sha256:e141a65705ac98fa52a9113fe574fdaf87fe0316cde2dffe6b94841d3c61544c \ + --hash=sha256:e3fe5049d2e9ca661d8e43fab6ad5a4c571af12d20a57dffc392a014caebef65 \ + --hash=sha256:efa59933b20183c1c13efc34bd91efc6b2997377c4c6ad9272da92d224e3beb1 \ + --hash=sha256:f2d00aa481becf57098e85d99e34a25dba5a9ade2f44eb0b7d80c80f2984fc03 # via streamlit pyasn1==0.4.8 \ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ @@ -1267,10 +1292,6 @@ pydeck==0.8.0 \ --hash=sha256:07edde833f7cfcef6749124351195aa7dcd24663d4909fd7898dbd0b6fbc01ec \ --hash=sha256:a8fa7757c6f24bba033af39db3147cb020eef44012ba7e60d954de187f9ed4d5 # via streamlit -pydeprecate==0.3.2 \ - --hash=sha256:d481116cc5d7f6c473e7c4be820efdd9b90a16b594b350276e9e66a6cb5bdd29 \ - --hash=sha256:ed86b68ed837e6465245904a3de2f59bf9eef78ac7a2502ee280533d04802457 - # via pytorch-lightning pygments==2.13.0 \ --hash=sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1 \ --hash=sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42 @@ -1285,10 +1306,13 @@ pyparsing==3.0.9 \ # via # matplotlib # packaging +pypatchmatch @ https://github.com/invoke-ai/PyPatchMatch/archive/129863937a8ab37f6bbcec327c994c0f932abdbc.zip \ + --hash=sha256:4ad6ec95379e7d122d494ff76633cc7cf9b71330d5efda147fceba81e3dc6cd2 + # via -r installer/requirements.in pyreadline3==3.4.1 \ --hash=sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae \ --hash=sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb - # via -r requirements.in + # via -r installer/requirements.in pyrsistent==0.19.2 \ --hash=sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed \ --hash=sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb \ @@ -1328,9 +1352,9 @@ python-socketio==5.7.2 \ --hash=sha256:92395062d9db3c13d30e7cdedaa0e1330bba78505645db695415f9a3c628d097 \ --hash=sha256:d9a9f047e6fdd306c852fbac36516f4b495c2096f8ad9ceb8803b8e5ff5622e3 # via flask-socketio -pytorch-lightning==1.7.7 \ - --hash=sha256:27c2dd01a18db2415168e3fa3775ccb5a1fa1e2961a50439ad9365507fe9d4ae \ - --hash=sha256:4438b8284d7f7fdb06cf3566a7b5b6f102ac8971cf7bb6d3f1b1de64628241f3 +pytorch-lightning==1.8.3.post1 \ + --hash=sha256:2b04cdb876f4e8749161510712b22081dab8db3e6548530608680a415844b6e3 \ + --hash=sha256:4a1804d55c3aa675a2dd21ee17282cad0bc703dfeace70e75dc956f1faf31411 # via taming-transformers-rom1504 pytz==2022.6 \ --hash=sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427 \ @@ -1425,7 +1449,7 @@ qudida==0.0.4 \ realesrgan==0.3.0 \ --hash=sha256:0d36da96ab9f447071606e91f502ccdfb08f80cc82ee4f8caf720c7745ccec7e \ --hash=sha256:59336c16c30dd5130eff350dd27424acb9b7281d18a6810130e265606c9a6088 - # via -r requirements.in + # via -r installer/requirements.in regex==2022.10.31 \ --hash=sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad \ --hash=sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4 \ @@ -1631,6 +1655,7 @@ scipy==1.9.3 \ # albumentations # basicsr # clean-fid + # clipseg # facexlib # filterpy # gfpgan @@ -1646,10 +1671,10 @@ semver==2.13.0 \ send2trash==1.8.0 \ --hash=sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d \ --hash=sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08 - # via -r requirements.in -sentry-sdk==1.10.1 \ - --hash=sha256:06c0fa9ccfdc80d7e3b5d2021978d6eb9351fa49db9b5847cf4d1f2a473414ad \ - --hash=sha256:105faf7bd7b7fa25653404619ee261527266b14103fe1389e0ce077bd23a9691 + # via -r installer/requirements.in +sentry-sdk==1.11.1 \ + --hash=sha256:675f6279b6bb1fea09fd61751061f9a90dca3b5929ef631dd50dc8b3aeb245e9 \ + --hash=sha256:8b4ff696c0bdcceb3f70bbb87a57ba84fd3168b1332d493fcd16c137f709578c # via wandb setproctitle==1.3.2 \ --hash=sha256:1c5d5dad7c28bdd1ec4187d818e43796f58a845aa892bb4481587010dc4d362b \ @@ -1713,9 +1738,9 @@ setproctitle==1.3.2 \ --hash=sha256:fed18e44711c5af4b681c2b3b18f85e6f0f1b2370a28854c645d636d5305ccd8 \ --hash=sha256:ffc61a388a5834a97953d6444a2888c24a05f2e333f9ed49f977a87bb1ad4761 # via wandb -shortuuid==1.0.9 \ - --hash=sha256:459f12fa1acc34ff213b1371467c0325169645a31ed989e268872339af7563d5 \ - --hash=sha256:b2bb9eb7773170e253bb7ba25971023acb473517a8b76803d9618668cb1dd46f +shortuuid==1.0.11 \ + --hash=sha256:27ea8f28b1bd0bf8f15057a3ece57275d2059d2b0bb02854f02189962c13b6aa \ + --hash=sha256:fc75f2615914815a8e4cb1501b3a513745cb66ef0fd5fc6fb9f8c3fa3481f789 # via wandb six==1.16.0 \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ @@ -1723,6 +1748,7 @@ six==1.16.0 \ # via # docker-pycreds # eventlet + # fire # flask-cors # google-auth # grpcio @@ -1734,24 +1760,22 @@ smmap==5.0.0 \ --hash=sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94 \ --hash=sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936 # via gitdb -streamlit==1.14.0 \ - --hash=sha256:62556d873567e1b3427bcd118a57ee6946619f363bd6bba38df2d1f8225ecba0 \ - --hash=sha256:e078b8143d150ba721bdb9194218e311c5fe1d6d4156473a2dea6cc848a6c9fc - # via -r requirements.in +streamlit==1.15.1 \ + --hash=sha256:2ec65c29b6390ff5d8288dac20fa3a4a343ac8f0755de3dc922b468a4d6ea6cc \ + --hash=sha256:ac8b24fa26dd5dfcd1954a340315c0b36c868c7de688259099dfd909524f1d8d + # via -r installer/requirements.in taming-transformers-rom1504==0.0.6 \ --hash=sha256:051b5804c58caa247bcd51d17ddb525b4d5f892a29d42dc460f40e3e9e34e5d8 \ --hash=sha256:73fe5fc1108accee4236ee6976e0987ab236afad0af06cb9f037641a908d2c32 - # via -r requirements.in -tb-nightly==2.11.0a20221106 \ - --hash=sha256:8940457ee42db92f01da8bcdbbea1a476735eda559dde5976f5728919960af4a + # via -r installer/requirements.in +tb-nightly==2.12.0a20221129 \ + --hash=sha256:038152911686887f5987c3c0ce132cbd8c355ac32fd4a7779c0f7afcfb8b2d4f # via # basicsr # gfpgan -tensorboard==2.10.1 \ - --hash=sha256:fb9222c1750e2fa35ef170d998a1e229f626eeced3004494a8849c88c15d8c1c - # via - # pytorch-lightning - # test-tube +tensorboard==2.11.0 \ + --hash=sha256:a0e592ee87962e17af3f0dce7faae3fbbd239030159e9e625cce810b7e35c53d + # via test-tube tensorboard-data-server==0.6.1 \ --hash=sha256:809fe9887682d35c1f7d1f54f0f40f98bb1f771b14265b453ca051e2ce58fca7 \ --hash=sha256:d8237580755e58eff68d1f3abefb5b1e39ae5c8b127cc40920f9c4fb33f4b98a \ @@ -1764,9 +1788,17 @@ tensorboard-plugin-wit==1.8.1 \ # via # tb-nightly # tensorboard +tensorboardx==2.5.1 \ + --hash=sha256:8808133ccca673cd04076f6f2a85cf2d39bb2d0393a0f20d0f9cbb06d472b57e \ + --hash=sha256:ea85a3446f22ce8a917fe4fa4d8a7a96222ef84ac835267d038c34bb99f6d61b + # via pytorch-lightning +termcolor==2.1.1 \ + --hash=sha256:67cee2009adc6449c650f6bcf3bdeed00c8ba53a8cda5362733c53e0a39fb70b \ + --hash=sha256:fa852e957f97252205e105dd55bbc23b419a70fec0085708fc0515e399f304fd + # via fire test-tube==0.7.5 \ --hash=sha256:1379c33eb8cde3e9b36610f87da0f16c2e06496b1cfebac473df4e7be2faa124 - # via -r requirements.in + # via -r installer/requirements.in threadpoolctl==3.1.0 \ --hash=sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b \ --hash=sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380 @@ -1775,38 +1807,43 @@ tifffile==2022.10.10 \ --hash=sha256:50b61ba943b866d191295bc38a00191c9fdab23ece063544c7f1a264e3f6aa8e \ --hash=sha256:87f3aee8a0d06b74655269a105de75c1958a24653e1930d523eb516100043503 # via scikit-image -tokenizers==0.13.1 \ - --hash=sha256:0a3412830ad66a643723d6b0fc3202e64e9e299bd9c9eda04b2914b5b1e0ddb0 \ - --hash=sha256:126bcb18a77cf65961ece04f54bd10ef3713412195e543d9d3eda2f0e4fd677c \ - --hash=sha256:16434c61c5eb72f6692b9bc52052b07ca92d3eba9dd72a1bc371890e1bdc3f07 \ - --hash=sha256:1d4acfdb6e7ef974677bb8445462db7fed240185fdc0f5b061db357d4ef8d85d \ - --hash=sha256:3333d1cee5c8f47c96362ea0abc1f81c77c9b92c6c3d11cbf1d01985f0d5cf1d \ - --hash=sha256:3acf3cae4c4739fc9ec49fa0e6cce224c1aa0fabc8f8d1358fd7de5c7d49cdca \ - --hash=sha256:3ba43b3f6f6b41c97c1d041785342cd72ba142999f6c4605d628e8e937398f20 \ - --hash=sha256:3c69a8389fd88bc32115e99db70f63bef577ba5c54f40a632580038a49612856 \ - --hash=sha256:3de653a551cc616a442a123da21706cb3a3163cf6919973f978f0921eee1bdf0 \ - --hash=sha256:4b3be8af87b357340b9b049d28067287b5e5e296e3120b6e4875d3b8469b67e6 \ - --hash=sha256:680bc0e357b7da6d0d01634bffbd002e866fdaccde303e1d1af58f32464cf308 \ - --hash=sha256:70de69681a264a5808d39f4bb6331be9a4dec51fd48cd1b959a94da76c4939cc \ - --hash=sha256:73198cda6e1d991c583ed798514863e16763aa600eb7aa6df7722373290575b2 \ - --hash=sha256:80864f456f715829f901ad5bb85af97e9ae52fc902270944804f6476ab8c6699 \ - --hash=sha256:80b9552295fdce0a2513dcb795a3f8591eca1a8dcf8afe0de3214209e6924ad1 \ - --hash=sha256:84fa41b58a8d3b7363ecdf3397d4b38f345fcf7d4dd14565b4360e7bffc9cae0 \ - --hash=sha256:890d2139100b5c8ac6d585438d5e145ede1d7b32b4090a6c078db6db0ef1daea \ - --hash=sha256:8b3f97041f7716998e474d3c7ffd19ac6941f117616696aef2b5ba927bf091e3 \ - --hash=sha256:910479e92d5fbdf91e8106b4c658fd43d418893d7cfd5fb11983c54a1ff53869 \ - --hash=sha256:96a1beef1e64d44597627f4e29d794047a66ad4d7474d93daf5a0ee27928e012 \ - --hash=sha256:98bef54cf51ac335fda1408112df7ff3e584107633bd9066616033e12b0bd519 \ - --hash=sha256:afcb1bd6d9ed59d5c8e633765589cab12f98aae09804f156b5965b4463b8b8e3 \ - --hash=sha256:b72dec85488af3e1e8d58fb4b86b5dbe5171c176002b5e098ea6d52a70004bb5 \ - --hash=sha256:c3109ba62bea56c68c7c2a976250b040afee61b5f86fc791f17afaa2a09fce94 \ - --hash=sha256:c73b9e6c107e980e65077b89c54311d8d645f6a9efdde82990777fa43c0a8cae \ - --hash=sha256:d8fca8b492a4697b0182e0c40b164cb0c44a9669d9c98033fec2f88174605eb0 \ - --hash=sha256:db6872294339bf35c158219fc65bad939ba87d14c936ae7a33a3ca2d1532c5b1 \ - --hash=sha256:e1a90bc97f53600f52e902f3ae097424de712d8ae0e42d957efc7ed908573a20 \ - --hash=sha256:f75f476fe183c03c515a0f0f5d195cb05d93fcdc76e31fe3c9753d01f3ee990b \ - --hash=sha256:fd17b14f84bec0b171869abd17ca0d9bfc564aa1e7f3451f44da526949a911c1 \ - --hash=sha256:fea71780b66f8c278ebae7221c8959404cf7343b8d2f4b7308aa668cf6f02364 +tokenizers==0.13.2 \ + --hash=sha256:0901a5c6538d2d2dc752c6b4bde7dab170fddce559ec75662cfad03b3187c8f6 \ + --hash=sha256:0b4cb2c60c094f31ea652f6cf9f349aae815f9243b860610c29a69ed0d7a88f8 \ + --hash=sha256:16756e6ab264b162f99c0c0a8d3d521328f428b33374c5ee161c0ebec42bf3c0 \ + --hash=sha256:238e879d1a0f4fddc2ce5b2d00f219125df08f8532e5f1f2ba9ad42f02b7da59 \ + --hash=sha256:3606528c07cda0566cff6cbfbda2b167f923661be595feac95701ffcdcbdbb21 \ + --hash=sha256:3ba9baa76b5a3eefa78b6cc351315a216232fd727ee5e3ce0f7c6885d9fb531b \ + --hash=sha256:41291d0160946084cbd53c8ec3d029df3dc2af2673d46b25ff1a7f31a9d55d51 \ + --hash=sha256:47ef745dbf9f49281e900e9e72915356d69de3a4e4d8a475bda26bfdb5047736 \ + --hash=sha256:486d637b413fddada845a10a45c74825d73d3725da42ccd8796ccd7a1c07a024 \ + --hash=sha256:4d3bc9f7d7f4c1aa84bb6b8d642a60272c8a2c987669e9bb0ac26daf0c6a9fc8 \ + --hash=sha256:61507a9953f6e7dc3c972cbc57ba94c80c8f7f686fbc0876afe70ea2b8cc8b04 \ + --hash=sha256:66c892d85385b202893ac6bc47b13390909e205280e5df89a41086cfec76fedb \ + --hash=sha256:6969e5ea7ccb909ce7d6d4dfd009115dc72799b0362a2ea353267168667408c4 \ + --hash=sha256:7892325f9ca1cc5fca0333d5bfd96a19044ce9b092ce2df625652109a3de16b8 \ + --hash=sha256:79189e7f706c74dbc6b753450757af172240916d6a12ed4526af5cc6d3ceca26 \ + --hash=sha256:80a57501b61ec4f94fb7ce109e2b4a1a090352618efde87253b4ede6d458b605 \ + --hash=sha256:92f040c4d938ea64683526b45dfc81c580e3b35aaebe847e7eec374961231734 \ + --hash=sha256:93714958d4ebe5362d3de7a6bd73dc86c36b5af5941ebef6c325ac900fa58865 \ + --hash=sha256:96cedf83864bcc15a3ffd088a6f81a8a8f55b8b188eabd7a7f2a4469477036df \ + --hash=sha256:a51b93932daba12ed07060935978a6779593a59709deab04a0d10e6fd5c29e60 \ + --hash=sha256:a537061ee18ba104b7f3daa735060c39db3a22c8a9595845c55b6c01d36c5e87 \ + --hash=sha256:a689654fc745135cce4eea3b15e29c372c3e0b01717c6978b563de5c38af9811 \ + --hash=sha256:a6f36b1b499233bb4443b5e57e20630c5e02fba61109632f5e00dab970440157 \ + --hash=sha256:a739d4d973d422e1073989769723f3b6ad8b11e59e635a63de99aea4b2208188 \ + --hash=sha256:b10db6e4b036c78212c6763cb56411566edcf2668c910baa1939afd50095ce48 \ + --hash=sha256:b3e306b0941ad35087ae7083919a5c410a6b672be0343609d79a1171a364ce79 \ + --hash=sha256:b47d6212e7dd05784d7330b3b1e5a170809fa30e2b333ca5c93fba1463dec2b7 \ + --hash=sha256:bc6983282ee74d638a4b6d149e5dadd8bc7ff1d0d6de663d69f099e0c6bddbeb \ + --hash=sha256:c09f4fa620e879debdd1ec299bb81e3c961fd8f64f0e460e64df0818d29d845c \ + --hash=sha256:c82fb87b1cbfa984d8f05b2b3c3c73e428b216c1d4f0e286d0a3b27f521b32eb \ + --hash=sha256:cac01fc0b868e4d0a3aa7c5c53396da0a0a63136e81475d32fcf5c348fcb2866 \ + --hash=sha256:ce298605a833ac7f81b8062d3102a42dcd9fa890493e8f756112c346339fe5c5 \ + --hash=sha256:da521bfa94df6a08a6254bb8214ea04854bb9044d61063ae2529361688b5440a \ + --hash=sha256:eda77de40a0262690c666134baf19ec5c4f5b8bde213055911d9f5a718c506e1 \ + --hash=sha256:efbf189fb9cf29bd29e98c0437bdb9809f9de686a1e6c10e0b954410e9ca2142 \ + --hash=sha256:f9525375582fd1912ac3caa2f727d36c86ff8c0c6de45ae1aaff90f87f33b907 # via transformers toml==0.10.2 \ --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ @@ -1816,29 +1853,29 @@ toolz==0.12.0 \ --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 # via altair -torch==1.13.0 \ - --hash=sha256:0fdd38c96230947b1ed870fed4a560252f8d23c3a2bf4dab9d2d42b18f2e67c8 \ - --hash=sha256:220325d0f4e69ee9edf00c04208244ef7cf22ebce083815ce272c7491f0603f5 \ - --hash=sha256:43db0723fc66ad6486f86dc4890c497937f7cd27429f28f73fb7e4d74b7482e2 \ - --hash=sha256:47fe6228386bff6d74319a2ffe9d4ed943e6e85473d78e80502518c607d644d2 \ - --hash=sha256:49a949b8136b32b2ec0724cbf4c6678b54e974b7d68f19f1231eea21cde5c23b \ - --hash=sha256:4a378f5091307381abfb30eb821174e12986f39b1cf7c4522bf99155256819eb \ - --hash=sha256:635dbb99d981a6483ca533b3dc7be18ef08dd9e1e96fb0bb0e6a99d79e85a130 \ - --hash=sha256:6c227c16626e4ce766cca5351cc62a2358a11e8e466410a298487b9dff159eb1 \ - --hash=sha256:857c7d5b1624c5fd979f66d2b074765733dba3f5e1cc97b7d6909155a2aae3ce \ - --hash=sha256:9197ec216833b836b67e4d68e513d31fb38d9789d7cd998a08fba5b499c38454 \ - --hash=sha256:922a4910613b310fbeb87707f00cb76fec328eb60cc1349ed2173e7c9b6edcd8 \ - --hash=sha256:9ac382cedaf2f70afea41380ad8e7c06acef6b5b7e2aef3971cdad666ca6e185 \ - --hash=sha256:bb33a911460475d1594a8c8cb73f58c08293211760796d99cae8c2509b86d7f1 \ - --hash=sha256:cd1e67db6575e1b173a626077a54e4911133178557aac50683db03a34e2b636a \ - --hash=sha256:d2d2753519415d154de4d3e64d2eaaeefdba6b6fd7d69d5ffaef595988117700 \ - --hash=sha256:e20df14d874b024851c58e8bb3846249cb120e677f7463f60c986e3661f88680 \ - --hash=sha256:e643ac8d086706e82f77b5d4dfcf145a9dd37b69e03e64177fc23821754d2ed7 \ - --hash=sha256:ef934a21da6f6a516d0a9c712a80d09c56128abdc6af8dc151bee5199b4c3b4e \ - --hash=sha256:f01a9ae0d4b69d2fc4145e8beab45b7877342dddbd4838a7d3c11ca7f6680745 \ - --hash=sha256:f68edfea71ade3862039ba66bcedf954190a2db03b0c41a9b79afd72210abd97 \ - --hash=sha256:fa768432ce4b8ffa29184c79a3376ab3de4a57b302cdf3c026a6be4c5a8ab75b +torch==1.12.1 ; platform_system == "Darwin" \ + --hash=sha256:03e31c37711db2cd201e02de5826de875529e45a55631d317aadce2f1ed45aa8 \ + --hash=sha256:0b44601ec56f7dd44ad8afc00846051162ef9c26a8579dda0a02194327f2d55e \ + --hash=sha256:42e115dab26f60c29e298559dbec88444175528b729ae994ec4c65d56fe267dd \ + --hash=sha256:42f639501928caabb9d1d55ddd17f07cd694de146686c24489ab8c615c2871f2 \ + --hash=sha256:4e1b9c14cf13fd2ab8d769529050629a0e68a6fc5cb8e84b4a3cc1dd8c4fe541 \ + --hash=sha256:68104e4715a55c4bb29a85c6a8d57d820e0757da363be1ba680fa8cc5be17b52 \ + --hash=sha256:69fe2cae7c39ccadd65a123793d30e0db881f1c1927945519c5c17323131437e \ + --hash=sha256:6cf6f54b43c0c30335428195589bd00e764a6d27f3b9ba637aaa8c11aaf93073 \ + --hash=sha256:743784ccea0dc8f2a3fe6a536bec8c4763bd82c1352f314937cb4008d4805de1 \ + --hash=sha256:8a34a2fbbaa07c921e1b203f59d3d6e00ed379f2b384445773bd14e328a5b6c8 \ + --hash=sha256:976c3f997cea38ee91a0dd3c3a42322785414748d1761ef926b789dfa97c6134 \ + --hash=sha256:9b356aea223772cd754edb4d9ecf2a025909b8615a7668ac7d5130f86e7ec421 \ + --hash=sha256:9c038662db894a23e49e385df13d47b2a777ffd56d9bcd5b832593fab0a7e286 \ + --hash=sha256:a8320ba9ad87e80ca5a6a016e46ada4d1ba0c54626e135d99b2129a4541c509d \ + --hash=sha256:b5dbcca369800ce99ba7ae6dee3466607a66958afca3b740690d88168752abcf \ + --hash=sha256:bfec2843daa654f04fda23ba823af03e7b6f7650a873cdb726752d0e3718dada \ + --hash=sha256:cd26d8c5640c3a28c526d41ccdca14cf1cbca0d0f2e14e8263a7ac17194ab1d2 \ + --hash=sha256:e9c8f4a311ac29fc7e8e955cfb7733deb5dbe1bdaabf5d4af2765695824b7e0d \ + --hash=sha256:f00c721f489089dc6364a01fd84906348fe02243d0af737f944fddb36003400d \ + --hash=sha256:f3b52a634e62821e747e872084ab32fbcb01b7fa7dbb7471b6218279f02a178a # via + # -r installer/requirements.in # accelerate # basicsr # clean-fid @@ -1858,37 +1895,37 @@ torch==1.13.0 \ torch-fidelity==0.3.0 \ --hash=sha256:3d3e33db98919759cc4f3f24cb27e1e74bdc7c905d90a780630e4e1c18492b66 \ --hash=sha256:d01284825595feb7dc3eae3dc9a0d8ced02be764813a3483f109bc142b52a1d3 - # via -r requirements.in + # via -r installer/requirements.in torchdiffeq==0.2.3 \ --hash=sha256:b5b01ec1294a2d8d5f77e567bf17c5de1237c0573cb94deefa88326f0e18c338 \ --hash=sha256:fe75f434b9090ac0c27702e02bed21472b0f87035be6581f51edc5d4013ea31a # via k-diffusion -torchmetrics==0.10.2 \ - --hash=sha256:43757d82266969906fc74b6e80766fcb2a0d52d6c3d09e3b7c98cf3b733fd20c \ - --hash=sha256:daa29d96bff5cff04d80eec5b9f5076993d6ac9c2d2163e88b6b31f8d38f7c25 +torchmetrics==0.10.3 \ + --hash=sha256:9e6ab66175f2dc13e246c37485b2c27c77931dfe47fc2b81c76217b8efdc1e57 \ + --hash=sha256:b12cf92897545e24a825b0d168888c0f3052700c2901e2d4f7d90b252bc4a343 # via pytorch-lightning -torchvision==0.13.1 ; platform_system == "Darwin" \ - --hash=sha256:0298bae3b09ac361866088434008d82b99d6458fe8888c8df90720ef4b347d44 \ - --hash=sha256:08f592ea61836ebeceb5c97f4d7a813b9d7dc651bbf7ce4401563ccfae6a21fc \ - --hash=sha256:099874088df104d54d8008f2a28539ca0117b512daed8bf3c2bbfa2b7ccb187a \ - --hash=sha256:0e77706cc90462653620e336bb90daf03d7bf1b88c3a9a3037df8d111823a56e \ - --hash=sha256:19286a733c69dcbd417b86793df807bd227db5786ed787c17297741a9b0d0fc7 \ - --hash=sha256:3567fb3def829229ec217c1e38f08c5128ff7fb65854cac17ebac358ff7aa309 \ - --hash=sha256:4d8bf321c4380854ef04613935fdd415dce29d1088a7ff99e06e113f0efe9203 \ - --hash=sha256:5e631241bee3661de64f83616656224af2e3512eb2580da7c08e08b8c965a8ac \ - --hash=sha256:7552e80fa222252b8b217a951c85e172a710ea4cad0ae0c06fbb67addece7871 \ - --hash=sha256:7cb789ceefe6dcd0dc8eeda37bfc45efb7cf34770eac9533861d51ca508eb5b3 \ - --hash=sha256:83e9e2457f23110fd53b0177e1bc621518d6ea2108f570e853b768ce36b7c679 \ - --hash=sha256:87c137f343197769a51333076e66bfcd576301d2cd8614b06657187c71b06c4f \ - --hash=sha256:899eec0b9f3b99b96d6f85b9aa58c002db41c672437677b553015b9135b3be7e \ - --hash=sha256:8e4d02e4d8a203e0c09c10dfb478214c224d080d31efc0dbf36d9c4051f7f3c6 \ - --hash=sha256:b167934a5943242da7b1e59318f911d2d253feeca0d13ad5d832b58eed943401 \ - --hash=sha256:c5ed609c8bc88c575226400b2232e0309094477c82af38952e0373edef0003fd \ - --hash=sha256:e9a563894f9fa40692e24d1aa58c3ef040450017cfed3598ff9637f404f3fe3b \ - --hash=sha256:ef5fe3ec1848123cd0ec74c07658192b3147dcd38e507308c790d5943e87b88c \ - --hash=sha256:f230a1a40ed70d51e463ce43df243ec520902f8725de2502e485efc5eea9d864 +torchvision==0.13.0 ; platform_system == "Darwin" \ + --hash=sha256:01e9e7b2e7724e66561e8d98f900985d80191e977c5c0b3f33ed31800ba0210c \ + --hash=sha256:0e28740bd5695076f7c449af650fc474d6566722d446461c2ceebf9c9599b37f \ + --hash=sha256:1b703701f0b99f307ad925b1abda2b3d5bdbf30643ff02102b6aeeb8840ae278 \ + --hash=sha256:1e2049f1207631d42d743205f663f1d2235796565be3f18b0339d479626faf30 \ + --hash=sha256:253eb0c67bf88cef4a79ec69058c3e94f9fde28b9e3699ad1afc0b3ed50f8075 \ + --hash=sha256:42d95ab197d090efc5669fec02fbc603d05c859e50ca2c60180d1a113aa9b3e2 \ + --hash=sha256:5c31e9b3004142dbfdf32adc4cf2d4fd709b820833e9786f839ae3a91ff65ef0 \ + --hash=sha256:61d5093a50b7923a4e5bf9e0271001c29e01abec2348b7dd93370a0a9d15836c \ + --hash=sha256:667cac55afb13cda7d362466e7eba3119e529b210e55507d231bead09aca5e1f \ + --hash=sha256:6c4c35428c758adc485ff8f239b5ed68c1b6c26efa261a52e431cab0f7f22aec \ + --hash=sha256:83a4d9d50787d1e886c94486b63b15978391f6cf1892fce6a93132c09b14e128 \ + --hash=sha256:a20662c11dc14fd4eff102ceb946a7ee80b9f98303bb52435cc903f2c4c1fe10 \ + --hash=sha256:acb72a40e5dc0cd454d28514dbdd589a5057afd9bb5c785b87a54718b999bfa1 \ + --hash=sha256:ad458146aca15f652f9b0c227bebd5403602c7341f15f68f20ec119fa8e8f4a5 \ + --hash=sha256:ada295dbfe55017b02acfab960a997387f5addbadd28ee5e575e24f692992ce4 \ + --hash=sha256:b620a43df4131ad09f5761c415a016a9ea95aaf8ec8c91d030fb59bad591094a \ + --hash=sha256:b7a2c9aebc7ef265777fe7e82577364288d98cf6b8cf0a63bb2621df78a7af1a \ + --hash=sha256:c2278a189663087bb8e65915062aa7a25b8f8e5a3cfaa5879fe277e23e4bbf40 \ + --hash=sha256:df16abf31e7a5fce8db1f781bf1e4f20c8bc730c7c3f657e946cc5820c04e465 # via - # -r requirements.in + # -r installer/requirements.in # basicsr # clean-fid # clip @@ -1930,7 +1967,7 @@ tqdm==4.64.1 \ transformers==4.24.0 \ --hash=sha256:486f353a8e594002e48be0e2aba723d96eda839e63bfe274702a4b5eda85559b \ --hash=sha256:b7ab50039ef9bf817eff14ab974f306fd20a72350bdc9df3a858fd009419322e - # via -r requirements.in + # via -r installer/requirements.in typing-extensions==4.4.0 \ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e @@ -1944,16 +1981,14 @@ typing-extensions==4.4.0 \ tzdata==2022.6 \ --hash=sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342 \ --hash=sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae - # via - # pytz-deprecation-shim - # tzlocal + # via pytz-deprecation-shim tzlocal==4.2 \ --hash=sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745 \ --hash=sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7 # via streamlit -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 +urllib3==1.26.13 \ + --hash=sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc \ + --hash=sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8 # via # requests # sentry-sdk @@ -1976,16 +2011,12 @@ werkzeug==2.2.2 \ # flask # tb-nightly # tensorboard -wheel==0.38.2 \ - --hash=sha256:3d492ef22379a156ec923d2a77051cedfd4df4b667864e9e41ba83f0b70b7149 \ - --hash=sha256:7a5a3095dceca97a3cac869b8fef4e89b83fafde21b6688f47b6fda7600eb441 +wheel==0.38.4 \ + --hash=sha256:965f5259b566725405b05e7cf774052044b1ed30119b5d586b2703aafe8719ac \ + --hash=sha256:b60533f3f5d530e971d6737ca6d58681ee434818fab630c83a734bb10c083ce8 # via # tb-nightly # tensorboard -whichcraft==0.6.1 \ - --hash=sha256:acdbb91b63d6a15efbd6430d1d7b2d36e44a71697e93e19b7ded477afd9fce87 \ - --hash=sha256:deda9266fbb22b8c64fd3ee45c050d61139cd87419765f588e37c8d23e236dd9 - # via flaskwebgui yapf==0.32.0 \ --hash=sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32 \ --hash=sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b @@ -2053,15 +2084,15 @@ yarl==1.8.1 \ --hash=sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28 \ --hash=sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b # via aiohttp -zipp==3.10.0 \ - --hash=sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1 \ - --hash=sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8 +zipp==3.11.0 \ + --hash=sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa \ + --hash=sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -setuptools==65.5.1 \ - --hash=sha256:d0b9a8433464d5800cbe05094acf5c6d52a91bfac9b52bcfc4d41382be5d5d31 \ - --hash=sha256:e197a19aa8ec9722928f2206f8de752def0e4c9fc6953527360d1c36d94ddb2f +setuptools==65.6.3 \ + --hash=sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54 \ + --hash=sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75 # via # numba # tb-nightly diff --git a/installer/py3.10-darwin-x86_64-cpu-reqs.txt b/installer/py3.10-darwin-x86_64-cpu-reqs.txt index 2b3d061213..d6b152940c 100644 --- a/installer/py3.10-darwin-x86_64-cpu-reqs.txt +++ b/installer/py3.10-darwin-x86_64-cpu-reqs.txt @@ -2,9 +2,9 @@ # This file is autogenerated by pip-compile with python 3.10 # To update, run: # -# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-darwin-x86_64-cpu-reqs.txt requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-darwin-x86_64-cpu-reqs.txt installer/requirements.in # ---extra-index-url https://download.pytorch.org/whl/cu116 +--extra-index-url https://download.pytorch.org/whl/torch_stable.html --trusted-host https absl-py==1.3.0 \ @@ -13,10 +13,12 @@ absl-py==1.3.0 \ # via # tb-nightly # tensorboard -accelerate==0.13.2 \ - --hash=sha256:dd6f08b010077f252dda5a7699d87b02885335c456770939c536e65ff07ed760 \ - --hash=sha256:e22180d7094e4c1bfb05a2b078297c222f6b4fa595fde8916946c3f377cdf019 - # via k-diffusion +accelerate==0.14.0 \ + --hash=sha256:31c5bcc40564ef849b5bc1c4424a43ccaf9e26413b7df89c2e36bf81f070fd44 \ + --hash=sha256:b15d562c0889d0cf441b01faa025dfc29b163d061b6cc7d489c2c83b0a55ffab + # via + # -r installer/requirements.in + # k-diffusion addict==2.4.0 \ --hash=sha256:249bb56bbfd3cdc2a004ea0ff4c2b6ddc84d53bc2194761636eb314d5cfa5dfc \ --hash=sha256:b3b2210e0e067a281f5646c8c5db92e99b7231ea8b0eb5f74dbdf9e259d4e494 @@ -117,7 +119,7 @@ aiosignal==1.2.0 \ albumentations==1.3.0 \ --hash=sha256:294165d87d03bc8323e484927f0a5c1a3c64b0e7b9c32a979582a6c93c363bdf \ --hash=sha256:be1af36832c8893314f2a5550e8ac19801e04770734c1b70fa3c996b41f37bed - # via -r requirements.in + # via -r installer/requirements.in altair==4.2.0 \ --hash=sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a \ --hash=sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026 @@ -180,13 +182,12 @@ click==8.1.3 \ # wandb clip @ https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip \ --hash=sha256:b5842c25da441d6c581b53a5c60e0c2127ebafe0f746f8e15561a006c6c3be6a - # via -r requirements.in -colorama==0.4.6 \ - --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ - --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 # via - # click - # tqdm + # -r installer/requirements.in + # clipseg +clipseg @ https://github.com/invoke-ai/clipseg/archive/1f754751c85d7d4255fa681f4491ff5711c1c288.zip \ + --hash=sha256:14f43ed42f90be3fe57f06de483cb8be0f67f87a6f62a011339d45a39f4b4189 + # via -r installer/requirements.in commonmark==0.9.1 \ --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \ --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9 @@ -273,7 +274,7 @@ decorator==5.1.1 \ diffusers==0.7.2 \ --hash=sha256:4a5f8b3a5fbd936bba7d459611cb35ec62875030367be32b232f9e19543e25a9 \ --hash=sha256:fb814ffd150cc6f470380b8c6a521181a77beb2f44134d2aad2e4cd8aa2ced0e - # via -r requirements.in + # via -r installer/requirements.in dnspython==2.2.1 \ --hash=sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e \ --hash=sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f @@ -293,7 +294,7 @@ entrypoints==0.4 \ eventlet==0.33.1 \ --hash=sha256:a085922698e5029f820cf311a648ac324d73cec0e4792877609d978a4b5bbf31 \ --hash=sha256:afbe17f06a58491e9aebd7a4a03e70b0b63fd4cf76d8307bae07f280479b1515 - # via -r requirements.in + # via -r installer/requirements.in facexlib==0.2.5 \ --hash=sha256:31e20cc4ed5d63562d380e4564bae14ac0d5d1899a079bad87621e13564567e4 \ --hash=sha256:cc7ceb56c5424319c47223cf75eef6828c34c66082707c6eb35b95d39779f02d @@ -319,15 +320,15 @@ flask==2.2.2 \ flask-cors==3.0.10 \ --hash=sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438 \ --hash=sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de - # via -r requirements.in + # via -r installer/requirements.in flask-socketio==5.3.1 \ --hash=sha256:fd0ed0fc1341671d92d5f5b2f5503916deb7aa7e2940e6636cfa2c087c828bf9 \ --hash=sha256:ff0c721f20bff1e2cfba77948727a8db48f187e89a72fe50c34478ce6efb3353 - # via -r requirements.in + # via -r installer/requirements.in flaskwebgui==0.3.7 \ --hash=sha256:4a69955308eaa8bb256ba04a994dc8f58a48dcd6f9599694ab1bcd9f43d88a5d \ --hash=sha256:535974ce2672dcc74787c254de24cceed4101be75d96952dae82014dd57f061e - # via -r requirements.in + # via -r installer/requirements.in fonttools==4.38.0 \ --hash=sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1 \ --hash=sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb @@ -411,11 +412,11 @@ future==0.18.2 \ getpass-asterisk==1.0.1 \ --hash=sha256:20d45cafda0066d761961e0919728526baf7bb5151fbf48a7d5ea4034127d857 \ --hash=sha256:7cc357a924cf62fa4e15b73cb4e5e30685c9084e464ffdc3fd9000a2b54ea9e9 - # via -r requirements.in + # via -r installer/requirements.in gfpgan @ https://github.com/TencentARC/GFPGAN/archive/2eac2033893ca7f427f4035d80fe95b92649ac56.zip \ --hash=sha256:79e6d71c8f1df7c7ccb0ac6b9a2ccb615ad5cde818c8b6f285a8711c05aebf85 # via - # -r requirements.in + # -r installer/requirements.in # realesrgan gitdb==4.0.9 \ --hash=sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd \ @@ -576,7 +577,7 @@ imageio-ffmpeg==0.4.7 \ --hash=sha256:7a08838f97f363e37ca41821b864fd3fdc99ab1fe2421040c78eb5f56a9e723e \ --hash=sha256:8e724d12dfe83e2a6eb39619e820243ca96c81c47c2648e66e05f7ee24e14312 \ --hash=sha256:fc60686ef03c2d0f842901b206223c30051a6a120384458761390104470846fd - # via -r requirements.in + # via -r installer/requirements.in importlib-metadata==5.0.0 \ --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 @@ -609,7 +610,7 @@ jsonschema==4.17.0 \ # jsonmerge k-diffusion @ https://github.com/invoke-ai/k-diffusion/archive/7f16b2c33411f26b3eae78d10648d625cb0c1095.zip \ --hash=sha256:c3f2c84036aa98c3abf4552fafab04df5ca472aa639982795e05bb1db43ce5e4 - # via -r requirements.in + # via -r installer/requirements.in kiwisolver==1.4.4 \ --hash=sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b \ --hash=sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166 \ @@ -837,7 +838,9 @@ matplotlib==3.6.2 \ --hash=sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4 \ --hash=sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0 \ --hash=sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec - # via filterpy + # via + # clipseg + # filterpy multidict==6.0.2 \ --hash=sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60 \ --hash=sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c \ @@ -970,6 +973,7 @@ numpy==1.23.4 \ # altair # basicsr # clean-fid + # clipseg # contourpy # diffusers # facexlib @@ -983,6 +987,7 @@ numpy==1.23.4 \ # pandas # pyarrow # pydeck + # pypatchmatch # pytorch-lightning # pywavelets # qudida @@ -1018,6 +1023,7 @@ opencv-python==4.6.0.66 \ --hash=sha256:f482e78de6e7b0b060ff994ffd859bddc3f7f382bb2019ef157b0ea8ca8712f5 # via # basicsr + # clipseg # facexlib # gfpgan # realesrgan @@ -1080,6 +1086,10 @@ pandas==1.5.1 \ pathtools==0.1.2 \ --hash=sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 # via wandb +picklescan==0.0.5 \ + --hash=sha256:368cf1b9a075bc1b6460ad82b694f260532b836c82f99d13846cd36e1bbe7f9a \ + --hash=sha256:57153eca04d5df5009f2cdd595aef261b8a6f27e03046a1c84f672aa6869c592 + # via -r installer/requirements.in pillow==9.3.0 \ --hash=sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040 \ --hash=sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8 \ @@ -1150,6 +1160,7 @@ pillow==9.3.0 \ # imageio # k-diffusion # matplotlib + # pypatchmatch # realesrgan # scikit-image # streamlit @@ -1285,10 +1296,13 @@ pyparsing==3.0.9 \ # via # matplotlib # packaging +pypatchmatch @ https://github.com/invoke-ai/PyPatchMatch/archive/129863937a8ab37f6bbcec327c994c0f932abdbc.zip \ + --hash=sha256:4ad6ec95379e7d122d494ff76633cc7cf9b71330d5efda147fceba81e3dc6cd2 + # via -r installer/requirements.in pyreadline3==3.4.1 \ --hash=sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae \ --hash=sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb - # via -r requirements.in + # via -r installer/requirements.in pyrsistent==0.19.2 \ --hash=sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed \ --hash=sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb \ @@ -1425,7 +1439,7 @@ qudida==0.0.4 \ realesrgan==0.3.0 \ --hash=sha256:0d36da96ab9f447071606e91f502ccdfb08f80cc82ee4f8caf720c7745ccec7e \ --hash=sha256:59336c16c30dd5130eff350dd27424acb9b7281d18a6810130e265606c9a6088 - # via -r requirements.in + # via -r installer/requirements.in regex==2022.10.31 \ --hash=sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad \ --hash=sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4 \ @@ -1631,6 +1645,7 @@ scipy==1.9.3 \ # albumentations # basicsr # clean-fid + # clipseg # facexlib # filterpy # gfpgan @@ -1646,7 +1661,7 @@ semver==2.13.0 \ send2trash==1.8.0 \ --hash=sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d \ --hash=sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08 - # via -r requirements.in + # via -r installer/requirements.in sentry-sdk==1.10.1 \ --hash=sha256:06c0fa9ccfdc80d7e3b5d2021978d6eb9351fa49db9b5847cf4d1f2a473414ad \ --hash=sha256:105faf7bd7b7fa25653404619ee261527266b14103fe1389e0ce077bd23a9691 @@ -1737,11 +1752,11 @@ smmap==5.0.0 \ streamlit==1.14.0 \ --hash=sha256:62556d873567e1b3427bcd118a57ee6946619f363bd6bba38df2d1f8225ecba0 \ --hash=sha256:e078b8143d150ba721bdb9194218e311c5fe1d6d4156473a2dea6cc848a6c9fc - # via -r requirements.in + # via -r installer/requirements.in taming-transformers-rom1504==0.0.6 \ --hash=sha256:051b5804c58caa247bcd51d17ddb525b4d5f892a29d42dc460f40e3e9e34e5d8 \ --hash=sha256:73fe5fc1108accee4236ee6976e0987ab236afad0af06cb9f037641a908d2c32 - # via -r requirements.in + # via -r installer/requirements.in tb-nightly==2.11.0a20221106 \ --hash=sha256:8940457ee42db92f01da8bcdbbea1a476735eda559dde5976f5728919960af4a # via @@ -1766,7 +1781,7 @@ tensorboard-plugin-wit==1.8.1 \ # tensorboard test-tube==0.7.5 \ --hash=sha256:1379c33eb8cde3e9b36610f87da0f16c2e06496b1cfebac473df4e7be2faa124 - # via -r requirements.in + # via -r installer/requirements.in threadpoolctl==3.1.0 \ --hash=sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b \ --hash=sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380 @@ -1816,29 +1831,29 @@ toolz==0.12.0 \ --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 # via altair -torch==1.13.0 \ - --hash=sha256:0fdd38c96230947b1ed870fed4a560252f8d23c3a2bf4dab9d2d42b18f2e67c8 \ - --hash=sha256:220325d0f4e69ee9edf00c04208244ef7cf22ebce083815ce272c7491f0603f5 \ - --hash=sha256:43db0723fc66ad6486f86dc4890c497937f7cd27429f28f73fb7e4d74b7482e2 \ - --hash=sha256:47fe6228386bff6d74319a2ffe9d4ed943e6e85473d78e80502518c607d644d2 \ - --hash=sha256:49a949b8136b32b2ec0724cbf4c6678b54e974b7d68f19f1231eea21cde5c23b \ - --hash=sha256:4a378f5091307381abfb30eb821174e12986f39b1cf7c4522bf99155256819eb \ - --hash=sha256:635dbb99d981a6483ca533b3dc7be18ef08dd9e1e96fb0bb0e6a99d79e85a130 \ - --hash=sha256:6c227c16626e4ce766cca5351cc62a2358a11e8e466410a298487b9dff159eb1 \ - --hash=sha256:857c7d5b1624c5fd979f66d2b074765733dba3f5e1cc97b7d6909155a2aae3ce \ - --hash=sha256:9197ec216833b836b67e4d68e513d31fb38d9789d7cd998a08fba5b499c38454 \ - --hash=sha256:922a4910613b310fbeb87707f00cb76fec328eb60cc1349ed2173e7c9b6edcd8 \ - --hash=sha256:9ac382cedaf2f70afea41380ad8e7c06acef6b5b7e2aef3971cdad666ca6e185 \ - --hash=sha256:bb33a911460475d1594a8c8cb73f58c08293211760796d99cae8c2509b86d7f1 \ - --hash=sha256:cd1e67db6575e1b173a626077a54e4911133178557aac50683db03a34e2b636a \ - --hash=sha256:d2d2753519415d154de4d3e64d2eaaeefdba6b6fd7d69d5ffaef595988117700 \ - --hash=sha256:e20df14d874b024851c58e8bb3846249cb120e677f7463f60c986e3661f88680 \ - --hash=sha256:e643ac8d086706e82f77b5d4dfcf145a9dd37b69e03e64177fc23821754d2ed7 \ - --hash=sha256:ef934a21da6f6a516d0a9c712a80d09c56128abdc6af8dc151bee5199b4c3b4e \ - --hash=sha256:f01a9ae0d4b69d2fc4145e8beab45b7877342dddbd4838a7d3c11ca7f6680745 \ - --hash=sha256:f68edfea71ade3862039ba66bcedf954190a2db03b0c41a9b79afd72210abd97 \ - --hash=sha256:fa768432ce4b8ffa29184c79a3376ab3de4a57b302cdf3c026a6be4c5a8ab75b +torch==1.12.1 ; platform_system == "Darwin" \ + --hash=sha256:03e31c37711db2cd201e02de5826de875529e45a55631d317aadce2f1ed45aa8 \ + --hash=sha256:0b44601ec56f7dd44ad8afc00846051162ef9c26a8579dda0a02194327f2d55e \ + --hash=sha256:42e115dab26f60c29e298559dbec88444175528b729ae994ec4c65d56fe267dd \ + --hash=sha256:42f639501928caabb9d1d55ddd17f07cd694de146686c24489ab8c615c2871f2 \ + --hash=sha256:4e1b9c14cf13fd2ab8d769529050629a0e68a6fc5cb8e84b4a3cc1dd8c4fe541 \ + --hash=sha256:68104e4715a55c4bb29a85c6a8d57d820e0757da363be1ba680fa8cc5be17b52 \ + --hash=sha256:69fe2cae7c39ccadd65a123793d30e0db881f1c1927945519c5c17323131437e \ + --hash=sha256:6cf6f54b43c0c30335428195589bd00e764a6d27f3b9ba637aaa8c11aaf93073 \ + --hash=sha256:743784ccea0dc8f2a3fe6a536bec8c4763bd82c1352f314937cb4008d4805de1 \ + --hash=sha256:8a34a2fbbaa07c921e1b203f59d3d6e00ed379f2b384445773bd14e328a5b6c8 \ + --hash=sha256:976c3f997cea38ee91a0dd3c3a42322785414748d1761ef926b789dfa97c6134 \ + --hash=sha256:9b356aea223772cd754edb4d9ecf2a025909b8615a7668ac7d5130f86e7ec421 \ + --hash=sha256:9c038662db894a23e49e385df13d47b2a777ffd56d9bcd5b832593fab0a7e286 \ + --hash=sha256:a8320ba9ad87e80ca5a6a016e46ada4d1ba0c54626e135d99b2129a4541c509d \ + --hash=sha256:b5dbcca369800ce99ba7ae6dee3466607a66958afca3b740690d88168752abcf \ + --hash=sha256:bfec2843daa654f04fda23ba823af03e7b6f7650a873cdb726752d0e3718dada \ + --hash=sha256:cd26d8c5640c3a28c526d41ccdca14cf1cbca0d0f2e14e8263a7ac17194ab1d2 \ + --hash=sha256:e9c8f4a311ac29fc7e8e955cfb7733deb5dbe1bdaabf5d4af2765695824b7e0d \ + --hash=sha256:f00c721f489089dc6364a01fd84906348fe02243d0af737f944fddb36003400d \ + --hash=sha256:f3b52a634e62821e747e872084ab32fbcb01b7fa7dbb7471b6218279f02a178a # via + # -r installer/requirements.in # accelerate # basicsr # clean-fid @@ -1858,7 +1873,7 @@ torch==1.13.0 \ torch-fidelity==0.3.0 \ --hash=sha256:3d3e33db98919759cc4f3f24cb27e1e74bdc7c905d90a780630e4e1c18492b66 \ --hash=sha256:d01284825595feb7dc3eae3dc9a0d8ced02be764813a3483f109bc142b52a1d3 - # via -r requirements.in + # via -r installer/requirements.in torchdiffeq==0.2.3 \ --hash=sha256:b5b01ec1294a2d8d5f77e567bf17c5de1237c0573cb94deefa88326f0e18c338 \ --hash=sha256:fe75f434b9090ac0c27702e02bed21472b0f87035be6581f51edc5d4013ea31a @@ -1888,7 +1903,7 @@ torchvision==0.13.1 ; platform_system == "Darwin" \ --hash=sha256:ef5fe3ec1848123cd0ec74c07658192b3147dcd38e507308c790d5943e87b88c \ --hash=sha256:f230a1a40ed70d51e463ce43df243ec520902f8725de2502e485efc5eea9d864 # via - # -r requirements.in + # -r installer/requirements.in # basicsr # clean-fid # clip @@ -1930,7 +1945,7 @@ tqdm==4.64.1 \ transformers==4.24.0 \ --hash=sha256:486f353a8e594002e48be0e2aba723d96eda839e63bfe274702a4b5eda85559b \ --hash=sha256:b7ab50039ef9bf817eff14ab974f306fd20a72350bdc9df3a858fd009419322e - # via -r requirements.in + # via -r installer/requirements.in typing-extensions==4.4.0 \ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e @@ -1944,9 +1959,7 @@ typing-extensions==4.4.0 \ tzdata==2022.6 \ --hash=sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342 \ --hash=sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae - # via - # pytz-deprecation-shim - # tzlocal + # via pytz-deprecation-shim tzlocal==4.2 \ --hash=sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745 \ --hash=sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7 diff --git a/installer/py3.10-linux-x86_64-cuda-reqs.txt b/installer/py3.10-linux-x86_64-cuda-reqs.txt index acb31ffa3f..ffb95426fc 100644 --- a/installer/py3.10-linux-x86_64-cuda-reqs.txt +++ b/installer/py3.10-linux-x86_64-cuda-reqs.txt @@ -1,8 +1,8 @@ # -# This file is autogenerated by pip-compile with python 3.10 +# This file is autogenerated by pip-compile with python 3.9 # To update, run: # -# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-linux-x86_64-cuda-reqs.txt requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-linux-x86_64-cuda-reqs.txt installer/requirements.in # --extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https @@ -13,10 +13,12 @@ absl-py==1.3.0 \ # via # tb-nightly # tensorboard -accelerate==0.13.2 \ - --hash=sha256:dd6f08b010077f252dda5a7699d87b02885335c456770939c536e65ff07ed760 \ - --hash=sha256:e22180d7094e4c1bfb05a2b078297c222f6b4fa595fde8916946c3f377cdf019 - # via k-diffusion +accelerate==0.14.0 \ + --hash=sha256:31c5bcc40564ef849b5bc1c4424a43ccaf9e26413b7df89c2e36bf81f070fd44 \ + --hash=sha256:b15d562c0889d0cf441b01faa025dfc29b163d061b6cc7d489c2c83b0a55ffab + # via + # -r installer/requirements.in + # k-diffusion addict==2.4.0 \ --hash=sha256:249bb56bbfd3cdc2a004ea0ff4c2b6ddc84d53bc2194761636eb314d5cfa5dfc \ --hash=sha256:b3b2210e0e067a281f5646c8c5db92e99b7231ea8b0eb5f74dbdf9e259d4e494 @@ -117,7 +119,7 @@ aiosignal==1.2.0 \ albumentations==1.3.0 \ --hash=sha256:294165d87d03bc8323e484927f0a5c1a3c64b0e7b9c32a979582a6c93c363bdf \ --hash=sha256:be1af36832c8893314f2a5550e8ac19801e04770734c1b70fa3c996b41f37bed - # via -r requirements.in + # via -r installer/requirements.in altair==4.2.0 \ --hash=sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a \ --hash=sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026 @@ -180,7 +182,12 @@ click==8.1.3 \ # wandb clip @ https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip \ --hash=sha256:b5842c25da441d6c581b53a5c60e0c2127ebafe0f746f8e15561a006c6c3be6a - # via -r requirements.in + # via + # -r installer/requirements.in + # clipseg +clipseg @ https://github.com/invoke-ai/clipseg/archive/1f754751c85d7d4255fa681f4491ff5711c1c288.zip \ + --hash=sha256:14f43ed42f90be3fe57f06de483cb8be0f67f87a6f62a011339d45a39f4b4189 + # via -r installer/requirements.in commonmark==0.9.1 \ --hash=sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60 \ --hash=sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9 @@ -267,7 +274,7 @@ decorator==5.1.1 \ diffusers==0.7.2 \ --hash=sha256:4a5f8b3a5fbd936bba7d459611cb35ec62875030367be32b232f9e19543e25a9 \ --hash=sha256:fb814ffd150cc6f470380b8c6a521181a77beb2f44134d2aad2e4cd8aa2ced0e - # via -r requirements.in + # via -r installer/requirements.in dnspython==2.2.1 \ --hash=sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e \ --hash=sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f @@ -287,7 +294,7 @@ entrypoints==0.4 \ eventlet==0.33.1 \ --hash=sha256:a085922698e5029f820cf311a648ac324d73cec0e4792877609d978a4b5bbf31 \ --hash=sha256:afbe17f06a58491e9aebd7a4a03e70b0b63fd4cf76d8307bae07f280479b1515 - # via -r requirements.in + # via -r installer/requirements.in facexlib==0.2.5 \ --hash=sha256:31e20cc4ed5d63562d380e4564bae14ac0d5d1899a079bad87621e13564567e4 \ --hash=sha256:cc7ceb56c5424319c47223cf75eef6828c34c66082707c6eb35b95d39779f02d @@ -313,15 +320,15 @@ flask==2.2.2 \ flask-cors==3.0.10 \ --hash=sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438 \ --hash=sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de - # via -r requirements.in + # via -r installer/requirements.in flask-socketio==5.3.1 \ --hash=sha256:fd0ed0fc1341671d92d5f5b2f5503916deb7aa7e2940e6636cfa2c087c828bf9 \ --hash=sha256:ff0c721f20bff1e2cfba77948727a8db48f187e89a72fe50c34478ce6efb3353 - # via -r requirements.in + # via -r installer/requirements.in flaskwebgui==0.3.7 \ --hash=sha256:4a69955308eaa8bb256ba04a994dc8f58a48dcd6f9599694ab1bcd9f43d88a5d \ --hash=sha256:535974ce2672dcc74787c254de24cceed4101be75d96952dae82014dd57f061e - # via -r requirements.in + # via -r installer/requirements.in fonttools==4.38.0 \ --hash=sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1 \ --hash=sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb @@ -405,11 +412,11 @@ future==0.18.2 \ getpass-asterisk==1.0.1 \ --hash=sha256:20d45cafda0066d761961e0919728526baf7bb5151fbf48a7d5ea4034127d857 \ --hash=sha256:7cc357a924cf62fa4e15b73cb4e5e30685c9084e464ffdc3fd9000a2b54ea9e9 - # via -r requirements.in + # via -r installer/requirements.in gfpgan @ https://github.com/TencentARC/GFPGAN/archive/2eac2033893ca7f427f4035d80fe95b92649ac56.zip \ --hash=sha256:79e6d71c8f1df7c7ccb0ac6b9a2ccb615ad5cde818c8b6f285a8711c05aebf85 # via - # -r requirements.in + # -r installer/requirements.in # realesrgan gitdb==4.0.9 \ --hash=sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd \ @@ -570,12 +577,14 @@ imageio-ffmpeg==0.4.7 \ --hash=sha256:7a08838f97f363e37ca41821b864fd3fdc99ab1fe2421040c78eb5f56a9e723e \ --hash=sha256:8e724d12dfe83e2a6eb39619e820243ca96c81c47c2648e66e05f7ee24e14312 \ --hash=sha256:fc60686ef03c2d0f842901b206223c30051a6a120384458761390104470846fd - # via -r requirements.in + # via -r installer/requirements.in importlib-metadata==5.0.0 \ --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 # via # diffusers + # flask + # markdown # streamlit itsdangerous==2.1.2 \ --hash=sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44 \ @@ -603,7 +612,7 @@ jsonschema==4.17.0 \ # jsonmerge k-diffusion @ https://github.com/invoke-ai/k-diffusion/archive/7f16b2c33411f26b3eae78d10648d625cb0c1095.zip \ --hash=sha256:c3f2c84036aa98c3abf4552fafab04df5ca472aa639982795e05bb1db43ce5e4 - # via -r requirements.in + # via -r installer/requirements.in kiwisolver==1.4.4 \ --hash=sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b \ --hash=sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166 \ @@ -831,7 +840,9 @@ matplotlib==3.6.2 \ --hash=sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4 \ --hash=sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0 \ --hash=sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec - # via filterpy + # via + # clipseg + # filterpy multidict==6.0.2 \ --hash=sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60 \ --hash=sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c \ @@ -964,6 +975,7 @@ numpy==1.23.4 \ # altair # basicsr # clean-fid + # clipseg # contourpy # diffusers # facexlib @@ -977,6 +989,7 @@ numpy==1.23.4 \ # pandas # pyarrow # pydeck + # pypatchmatch # pytorch-lightning # pywavelets # qudida @@ -1012,6 +1025,7 @@ opencv-python==4.6.0.66 \ --hash=sha256:f482e78de6e7b0b060ff994ffd859bddc3f7f382bb2019ef157b0ea8ca8712f5 # via # basicsr + # clipseg # facexlib # gfpgan # realesrgan @@ -1074,6 +1088,10 @@ pandas==1.5.1 \ pathtools==0.1.2 \ --hash=sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 # via wandb +picklescan==0.0.5 \ + --hash=sha256:368cf1b9a075bc1b6460ad82b694f260532b836c82f99d13846cd36e1bbe7f9a \ + --hash=sha256:57153eca04d5df5009f2cdd595aef261b8a6f27e03046a1c84f672aa6869c592 + # via -r installer/requirements.in pillow==9.3.0 \ --hash=sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040 \ --hash=sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8 \ @@ -1144,6 +1162,7 @@ pillow==9.3.0 \ # imageio # k-diffusion # matplotlib + # pypatchmatch # realesrgan # scikit-image # streamlit @@ -1279,10 +1298,13 @@ pyparsing==3.0.9 \ # via # matplotlib # packaging +pypatchmatch @ https://github.com/invoke-ai/PyPatchMatch/archive/129863937a8ab37f6bbcec327c994c0f932abdbc.zip \ + --hash=sha256:4ad6ec95379e7d122d494ff76633cc7cf9b71330d5efda147fceba81e3dc6cd2 + # via -r installer/requirements.in pyreadline3==3.4.1 \ --hash=sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae \ --hash=sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb - # via -r requirements.in + # via -r installer/requirements.in pyrsistent==0.19.2 \ --hash=sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed \ --hash=sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb \ @@ -1419,7 +1441,7 @@ qudida==0.0.4 \ realesrgan==0.3.0 \ --hash=sha256:0d36da96ab9f447071606e91f502ccdfb08f80cc82ee4f8caf720c7745ccec7e \ --hash=sha256:59336c16c30dd5130eff350dd27424acb9b7281d18a6810130e265606c9a6088 - # via -r requirements.in + # via -r installer/requirements.in regex==2022.10.31 \ --hash=sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad \ --hash=sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4 \ @@ -1625,6 +1647,7 @@ scipy==1.9.3 \ # albumentations # basicsr # clean-fid + # clipseg # facexlib # filterpy # gfpgan @@ -1640,7 +1663,7 @@ semver==2.13.0 \ send2trash==1.8.0 \ --hash=sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d \ --hash=sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08 - # via -r requirements.in + # via -r installer/requirements.in sentry-sdk==1.10.1 \ --hash=sha256:06c0fa9ccfdc80d7e3b5d2021978d6eb9351fa49db9b5847cf4d1f2a473414ad \ --hash=sha256:105faf7bd7b7fa25653404619ee261527266b14103fe1389e0ce077bd23a9691 @@ -1731,11 +1754,11 @@ smmap==5.0.0 \ streamlit==1.14.0 \ --hash=sha256:62556d873567e1b3427bcd118a57ee6946619f363bd6bba38df2d1f8225ecba0 \ --hash=sha256:e078b8143d150ba721bdb9194218e311c5fe1d6d4156473a2dea6cc848a6c9fc - # via -r requirements.in + # via -r installer/requirements.in taming-transformers-rom1504==0.0.6 \ --hash=sha256:051b5804c58caa247bcd51d17ddb525b4d5f892a29d42dc460f40e3e9e34e5d8 \ --hash=sha256:73fe5fc1108accee4236ee6976e0987ab236afad0af06cb9f037641a908d2c32 - # via -r requirements.in + # via -r installer/requirements.in tb-nightly==2.11.0a20221106 \ --hash=sha256:8940457ee42db92f01da8bcdbbea1a476735eda559dde5976f5728919960af4a # via @@ -1760,7 +1783,7 @@ tensorboard-plugin-wit==1.8.1 \ # tensorboard test-tube==0.7.5 \ --hash=sha256:1379c33eb8cde3e9b36610f87da0f16c2e06496b1cfebac473df4e7be2faa124 - # via -r requirements.in + # via -r installer/requirements.in threadpoolctl==3.1.0 \ --hash=sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b \ --hash=sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380 @@ -1810,16 +1833,17 @@ toolz==0.12.0 \ --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 # via altair -torch==1.12.1+cu116 \ - --hash=sha256:7725420dabebfcaf44984edce3283eea91f98f0f7d5874bc68c7a164bd8126e3 \ - --hash=sha256:832effad8b21109700323a5aa137a2e4bdea711dac3d8491ff542f798dab0101 \ - --hash=sha256:84f031e4ee25d95368d7531aa58e79da9808d3fa53b4b363ea03a2450b6fd0af \ - --hash=sha256:b6bc31244aa2818929fbb30c483c221df471e9d856e805c5a1ff72b131ae9e7b \ - --hash=sha256:b8e8906e770bcad12e67c269e1bcdd7661a8abd96519a4ba643e86440bbcc1bf \ - --hash=sha256:bca5a77071d7eb901beb775648b125e6d9279f231d1f23e56530b5a189df8975 \ - --hash=sha256:dda312901220895087cc83d3665464a3dc171d04460c61c31af463efbfb54896 \ - --hash=sha256:fc9b4786ec54be67eaa8b0c7c9999e2f4ae2b89a1c18e41de1515a190440c691 +torch==1.12.0+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ + --hash=sha256:1d9557d1e871794a31a71c40dec8589d6c3347f3f2953a8dd74cfd58e1ecb52e \ + --hash=sha256:72538e4505087668a4642f861578dfed470fae5da20b1758b0f34e4a070d6b21 \ + --hash=sha256:74f5b137190a6face6859d630f129289e7fae6a4d9a747430b3b5d5c6297a3ae \ + --hash=sha256:7665e906995328746c6f70016ee90cafe50cbf434b6ef576e1de2678929ee63e \ + --hash=sha256:7ee1899e9afe5f5e35ba46bc70e17735d2c02cedede1fa69a288cc680b5ab3db \ + --hash=sha256:97d63afcb6358071737f8325aa933e9db2f30cd2f068591d27d4ea72f3cabad2 \ + --hash=sha256:aa43d7b54b86f723f17c5c44df1078c59a6149fc4d42fbef08aafab9d61451c9 \ + --hash=sha256:f772be831447dd01ebd26cbedf619e668d1b269d69bf6b4ff46b1378362bff26 # via + # -r installer/requirements.in # accelerate # basicsr # clean-fid @@ -1839,7 +1863,7 @@ torch==1.12.1+cu116 \ torch-fidelity==0.3.0 \ --hash=sha256:3d3e33db98919759cc4f3f24cb27e1e74bdc7c905d90a780630e4e1c18492b66 \ --hash=sha256:d01284825595feb7dc3eae3dc9a0d8ced02be764813a3483f109bc142b52a1d3 - # via -r requirements.in + # via -r installer/requirements.in torchdiffeq==0.2.3 \ --hash=sha256:b5b01ec1294a2d8d5f77e567bf17c5de1237c0573cb94deefa88326f0e18c338 \ --hash=sha256:fe75f434b9090ac0c27702e02bed21472b0f87035be6581f51edc5d4013ea31a @@ -1848,17 +1872,17 @@ torchmetrics==0.10.2 \ --hash=sha256:43757d82266969906fc74b6e80766fcb2a0d52d6c3d09e3b7c98cf3b733fd20c \ --hash=sha256:daa29d96bff5cff04d80eec5b9f5076993d6ac9c2d2163e88b6b31f8d38f7c25 # via pytorch-lightning -torchvision==0.13.1+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ - --hash=sha256:0c9a2b605ac30fcf475d60f79ba378af0073a22de585453f8c3dd6c1452ab9bc \ - --hash=sha256:75986abe572138258eb9795cb4cd73f40b2bdf8374fefa1af6ff6bb0dbc972c6 \ - --hash=sha256:8a4c395bb72cf51eb4318c6861c9a5ea490d48ec36a3d767220ef182445449cb \ - --hash=sha256:92e4685c6010b6b1c228ebb5fe93105d0a71e5b586483a942e04529a43e0bb42 \ - --hash=sha256:9ec5654c56a22fe420dc0af0ff5cd31105f583fdb0240043ff26a7cfed7e05fb \ - --hash=sha256:ba8b7d3c33f63feb29c7dd8c0db68b735d0c9d924ff4e84121b4b20b17cec7a5 \ - --hash=sha256:c3ceb2b3f456f0c984af71ef55f8637f178a29dc3e13a66fbb010ceead2891e1 \ - --hash=sha256:dcf32f6d998493e76ec21a38bbb856b7402295cf7a67fb09ce5bde7e7e725756 +torchvision==0.13.0+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ + --hash=sha256:1696feadf1921c8fa1549bad774221293298288ebedaa14e44bc3e57e964a369 \ + --hash=sha256:572544b108eaf12638f3dca0f496a453c4b8d8256bcc8333d5355df641c0380c \ + --hash=sha256:76dbe71be271e2f246d556a8201c6f73a431851045d866c51bd945521817b892 \ + --hash=sha256:90b9461f57e1219ca900bfd9e85548b840ec56d57ec331b7a7eb871113b34c0a \ + --hash=sha256:941a8c958f2fe9184ce522567f4a471b52dd306891870e979fe6569062432258 \ + --hash=sha256:9ce27c87a8581d00dcef416ec75f8eca9c225d8c36b81150a1f2a60eb70155dc \ + --hash=sha256:cb6bf0117b8f4b601baeae54e8a6bb5c4942b054835ba997f438ddcb7adcfb90 \ + --hash=sha256:d1a3c124645e3460b3e50b54eb89a2575a5036bfa618f15dc4f5d635c716069d # via - # -r requirements.in + # -r installer/requirements.in # basicsr # clean-fid # clip @@ -1900,7 +1924,7 @@ tqdm==4.64.1 \ transformers==4.24.0 \ --hash=sha256:486f353a8e594002e48be0e2aba723d96eda839e63bfe274702a4b5eda85559b \ --hash=sha256:b7ab50039ef9bf817eff14ab974f306fd20a72350bdc9df3a858fd009419322e - # via -r requirements.in + # via -r installer/requirements.in typing-extensions==4.4.0 \ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e @@ -1914,9 +1938,7 @@ typing-extensions==4.4.0 \ tzdata==2022.6 \ --hash=sha256:04a680bdc5b15750c39c12a448885a51134a27ec9af83667663f0b3a1bf3f342 \ --hash=sha256:91f11db4503385928c15598c98573e3af07e7229181bee5375bd30f1695ddcae - # via - # pytz-deprecation-shim - # tzlocal + # via pytz-deprecation-shim tzlocal==4.2 \ --hash=sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745 \ --hash=sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7 diff --git a/installer/py3.10-windows-x86_64-cuda-reqs.txt b/installer/py3.10-windows-x86_64-cuda-reqs.txt index 9945bcc3dd..7d1e10c4f8 100644 --- a/installer/py3.10-windows-x86_64-cuda-reqs.txt +++ b/installer/py3.10-windows-x86_64-cuda-reqs.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile with python 3.10 # To update, run: # -# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-windows-x86_64-cuda-reqs.txt requirements.in +# pip-compile --allow-unsafe --generate-hashes --output-file=installer/py3.10-windows-x86_64-cuda-reqs.txt installer/requirements.in # --extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https @@ -13,10 +13,12 @@ absl-py==1.3.0 \ # via # tb-nightly # tensorboard -accelerate==0.13.2 \ - --hash=sha256:dd6f08b010077f252dda5a7699d87b02885335c456770939c536e65ff07ed760 \ - --hash=sha256:e22180d7094e4c1bfb05a2b078297c222f6b4fa595fde8916946c3f377cdf019 - # via k-diffusion +accelerate==0.14.0 \ + --hash=sha256:31c5bcc40564ef849b5bc1c4424a43ccaf9e26413b7df89c2e36bf81f070fd44 \ + --hash=sha256:b15d562c0889d0cf441b01faa025dfc29b163d061b6cc7d489c2c83b0a55ffab + # via + # -r installer/requirements.in + # k-diffusion addict==2.4.0 \ --hash=sha256:249bb56bbfd3cdc2a004ea0ff4c2b6ddc84d53bc2194761636eb314d5cfa5dfc \ --hash=sha256:b3b2210e0e067a281f5646c8c5db92e99b7231ea8b0eb5f74dbdf9e259d4e494 @@ -117,7 +119,7 @@ aiosignal==1.2.0 \ albumentations==1.3.0 \ --hash=sha256:294165d87d03bc8323e484927f0a5c1a3c64b0e7b9c32a979582a6c93c363bdf \ --hash=sha256:be1af36832c8893314f2a5550e8ac19801e04770734c1b70fa3c996b41f37bed - # via -r requirements.in + # via -r installer/requirements.in altair==4.2.0 \ --hash=sha256:0c724848ae53410c13fa28be2b3b9a9dcb7b5caa1a70f7f217bd663bb419935a \ --hash=sha256:d87d9372e63b48cd96b2a6415f0cf9457f50162ab79dc7a31cd7e024dd840026 @@ -180,7 +182,12 @@ click==8.1.3 \ # wandb clip @ https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip \ --hash=sha256:b5842c25da441d6c581b53a5c60e0c2127ebafe0f746f8e15561a006c6c3be6a - # via -r requirements.in + # via + # -r installer/requirements.in + # clipseg +clipseg @ https://github.com/invoke-ai/clipseg/archive/1f754751c85d7d4255fa681f4491ff5711c1c288.zip \ + --hash=sha256:14f43ed42f90be3fe57f06de483cb8be0f67f87a6f62a011339d45a39f4b4189 + # via -r installer/requirements.in colorama==0.4.6 \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 @@ -273,7 +280,7 @@ decorator==5.1.1 \ diffusers==0.7.2 \ --hash=sha256:4a5f8b3a5fbd936bba7d459611cb35ec62875030367be32b232f9e19543e25a9 \ --hash=sha256:fb814ffd150cc6f470380b8c6a521181a77beb2f44134d2aad2e4cd8aa2ced0e - # via -r requirements.in + # via -r installer/requirements.in dnspython==2.2.1 \ --hash=sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e \ --hash=sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f @@ -293,7 +300,7 @@ entrypoints==0.4 \ eventlet==0.33.1 \ --hash=sha256:a085922698e5029f820cf311a648ac324d73cec0e4792877609d978a4b5bbf31 \ --hash=sha256:afbe17f06a58491e9aebd7a4a03e70b0b63fd4cf76d8307bae07f280479b1515 - # via -r requirements.in + # via -r installer/requirements.in facexlib==0.2.5 \ --hash=sha256:31e20cc4ed5d63562d380e4564bae14ac0d5d1899a079bad87621e13564567e4 \ --hash=sha256:cc7ceb56c5424319c47223cf75eef6828c34c66082707c6eb35b95d39779f02d @@ -319,15 +326,15 @@ flask==2.2.2 \ flask-cors==3.0.10 \ --hash=sha256:74efc975af1194fc7891ff5cd85b0f7478be4f7f59fe158102e91abb72bb4438 \ --hash=sha256:b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de - # via -r requirements.in + # via -r installer/requirements.in flask-socketio==5.3.1 \ --hash=sha256:fd0ed0fc1341671d92d5f5b2f5503916deb7aa7e2940e6636cfa2c087c828bf9 \ --hash=sha256:ff0c721f20bff1e2cfba77948727a8db48f187e89a72fe50c34478ce6efb3353 - # via -r requirements.in + # via -r installer/requirements.in flaskwebgui==0.3.7 \ --hash=sha256:4a69955308eaa8bb256ba04a994dc8f58a48dcd6f9599694ab1bcd9f43d88a5d \ --hash=sha256:535974ce2672dcc74787c254de24cceed4101be75d96952dae82014dd57f061e - # via -r requirements.in + # via -r installer/requirements.in fonttools==4.38.0 \ --hash=sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1 \ --hash=sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb @@ -411,11 +418,11 @@ future==0.18.2 \ getpass-asterisk==1.0.1 \ --hash=sha256:20d45cafda0066d761961e0919728526baf7bb5151fbf48a7d5ea4034127d857 \ --hash=sha256:7cc357a924cf62fa4e15b73cb4e5e30685c9084e464ffdc3fd9000a2b54ea9e9 - # via -r requirements.in + # via -r installer/requirements.in gfpgan @ https://github.com/TencentARC/GFPGAN/archive/2eac2033893ca7f427f4035d80fe95b92649ac56.zip \ --hash=sha256:79e6d71c8f1df7c7ccb0ac6b9a2ccb615ad5cde818c8b6f285a8711c05aebf85 # via - # -r requirements.in + # -r installer/requirements.in # realesrgan gitdb==4.0.9 \ --hash=sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd \ @@ -576,7 +583,7 @@ imageio-ffmpeg==0.4.7 \ --hash=sha256:7a08838f97f363e37ca41821b864fd3fdc99ab1fe2421040c78eb5f56a9e723e \ --hash=sha256:8e724d12dfe83e2a6eb39619e820243ca96c81c47c2648e66e05f7ee24e14312 \ --hash=sha256:fc60686ef03c2d0f842901b206223c30051a6a120384458761390104470846fd - # via -r requirements.in + # via -r installer/requirements.in importlib-metadata==5.0.0 \ --hash=sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab \ --hash=sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43 @@ -609,7 +616,7 @@ jsonschema==4.17.0 \ # jsonmerge k-diffusion @ https://github.com/invoke-ai/k-diffusion/archive/7f16b2c33411f26b3eae78d10648d625cb0c1095.zip \ --hash=sha256:c3f2c84036aa98c3abf4552fafab04df5ca472aa639982795e05bb1db43ce5e4 - # via -r requirements.in + # via -r installer/requirements.in kiwisolver==1.4.4 \ --hash=sha256:02f79693ec433cb4b5f51694e8477ae83b3205768a6fb48ffba60549080e295b \ --hash=sha256:03baab2d6b4a54ddbb43bba1a3a2d1627e82d205c5cf8f4c924dc49284b87166 \ @@ -837,7 +844,9 @@ matplotlib==3.6.2 \ --hash=sha256:ec9be0f4826cdb3a3a517509dcc5f87f370251b76362051ab59e42b6b765f8c4 \ --hash=sha256:f04f97797df35e442ed09f529ad1235d1f1c0f30878e2fe09a2676b71a8801e0 \ --hash=sha256:f41e57ad63d336fe50d3a67bb8eaa26c09f6dda6a59f76777a99b8ccd8e26aec - # via filterpy + # via + # clipseg + # filterpy multidict==6.0.2 \ --hash=sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60 \ --hash=sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c \ @@ -970,6 +979,7 @@ numpy==1.23.4 \ # altair # basicsr # clean-fid + # clipseg # contourpy # diffusers # facexlib @@ -983,6 +993,7 @@ numpy==1.23.4 \ # pandas # pyarrow # pydeck + # pypatchmatch # pytorch-lightning # pywavelets # qudida @@ -1018,6 +1029,7 @@ opencv-python==4.6.0.66 \ --hash=sha256:f482e78de6e7b0b060ff994ffd859bddc3f7f382bb2019ef157b0ea8ca8712f5 # via # basicsr + # clipseg # facexlib # gfpgan # realesrgan @@ -1080,6 +1092,10 @@ pandas==1.5.1 \ pathtools==0.1.2 \ --hash=sha256:7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0 # via wandb +picklescan==0.0.5 \ + --hash=sha256:368cf1b9a075bc1b6460ad82b694f260532b836c82f99d13846cd36e1bbe7f9a \ + --hash=sha256:57153eca04d5df5009f2cdd595aef261b8a6f27e03046a1c84f672aa6869c592 + # via -r installer/requirements.in pillow==9.3.0 \ --hash=sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040 \ --hash=sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8 \ @@ -1150,6 +1166,7 @@ pillow==9.3.0 \ # imageio # k-diffusion # matplotlib + # pypatchmatch # realesrgan # scikit-image # streamlit @@ -1285,10 +1302,13 @@ pyparsing==3.0.9 \ # via # matplotlib # packaging +pypatchmatch @ https://github.com/invoke-ai/PyPatchMatch/archive/129863937a8ab37f6bbcec327c994c0f932abdbc.zip \ + --hash=sha256:4ad6ec95379e7d122d494ff76633cc7cf9b71330d5efda147fceba81e3dc6cd2 + # via -r installer/requirements.in pyreadline3==3.4.1 \ --hash=sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae \ --hash=sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb - # via -r requirements.in + # via -r installer/requirements.in pyrsistent==0.19.2 \ --hash=sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed \ --hash=sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb \ @@ -1425,7 +1445,7 @@ qudida==0.0.4 \ realesrgan==0.3.0 \ --hash=sha256:0d36da96ab9f447071606e91f502ccdfb08f80cc82ee4f8caf720c7745ccec7e \ --hash=sha256:59336c16c30dd5130eff350dd27424acb9b7281d18a6810130e265606c9a6088 - # via -r requirements.in + # via -r installer/requirements.in regex==2022.10.31 \ --hash=sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad \ --hash=sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4 \ @@ -1631,6 +1651,7 @@ scipy==1.9.3 \ # albumentations # basicsr # clean-fid + # clipseg # facexlib # filterpy # gfpgan @@ -1646,7 +1667,7 @@ semver==2.13.0 \ send2trash==1.8.0 \ --hash=sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d \ --hash=sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08 - # via -r requirements.in + # via -r installer/requirements.in sentry-sdk==1.10.1 \ --hash=sha256:06c0fa9ccfdc80d7e3b5d2021978d6eb9351fa49db9b5847cf4d1f2a473414ad \ --hash=sha256:105faf7bd7b7fa25653404619ee261527266b14103fe1389e0ce077bd23a9691 @@ -1737,11 +1758,11 @@ smmap==5.0.0 \ streamlit==1.14.0 \ --hash=sha256:62556d873567e1b3427bcd118a57ee6946619f363bd6bba38df2d1f8225ecba0 \ --hash=sha256:e078b8143d150ba721bdb9194218e311c5fe1d6d4156473a2dea6cc848a6c9fc - # via -r requirements.in + # via -r installer/requirements.in taming-transformers-rom1504==0.0.6 \ --hash=sha256:051b5804c58caa247bcd51d17ddb525b4d5f892a29d42dc460f40e3e9e34e5d8 \ --hash=sha256:73fe5fc1108accee4236ee6976e0987ab236afad0af06cb9f037641a908d2c32 - # via -r requirements.in + # via -r installer/requirements.in tb-nightly==2.11.0a20221106 \ --hash=sha256:8940457ee42db92f01da8bcdbbea1a476735eda559dde5976f5728919960af4a # via @@ -1766,7 +1787,7 @@ tensorboard-plugin-wit==1.8.1 \ # tensorboard test-tube==0.7.5 \ --hash=sha256:1379c33eb8cde3e9b36610f87da0f16c2e06496b1cfebac473df4e7be2faa124 - # via -r requirements.in + # via -r installer/requirements.in threadpoolctl==3.1.0 \ --hash=sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b \ --hash=sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380 @@ -1816,16 +1837,17 @@ toolz==0.12.0 \ --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 # via altair -torch==1.12.1+cu116 \ - --hash=sha256:7725420dabebfcaf44984edce3283eea91f98f0f7d5874bc68c7a164bd8126e3 \ - --hash=sha256:832effad8b21109700323a5aa137a2e4bdea711dac3d8491ff542f798dab0101 \ - --hash=sha256:84f031e4ee25d95368d7531aa58e79da9808d3fa53b4b363ea03a2450b6fd0af \ - --hash=sha256:b6bc31244aa2818929fbb30c483c221df471e9d856e805c5a1ff72b131ae9e7b \ - --hash=sha256:b8e8906e770bcad12e67c269e1bcdd7661a8abd96519a4ba643e86440bbcc1bf \ - --hash=sha256:bca5a77071d7eb901beb775648b125e6d9279f231d1f23e56530b5a189df8975 \ - --hash=sha256:dda312901220895087cc83d3665464a3dc171d04460c61c31af463efbfb54896 \ - --hash=sha256:fc9b4786ec54be67eaa8b0c7c9999e2f4ae2b89a1c18e41de1515a190440c691 +torch==1.12.0+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ + --hash=sha256:1d9557d1e871794a31a71c40dec8589d6c3347f3f2953a8dd74cfd58e1ecb52e \ + --hash=sha256:72538e4505087668a4642f861578dfed470fae5da20b1758b0f34e4a070d6b21 \ + --hash=sha256:74f5b137190a6face6859d630f129289e7fae6a4d9a747430b3b5d5c6297a3ae \ + --hash=sha256:7665e906995328746c6f70016ee90cafe50cbf434b6ef576e1de2678929ee63e \ + --hash=sha256:7ee1899e9afe5f5e35ba46bc70e17735d2c02cedede1fa69a288cc680b5ab3db \ + --hash=sha256:97d63afcb6358071737f8325aa933e9db2f30cd2f068591d27d4ea72f3cabad2 \ + --hash=sha256:aa43d7b54b86f723f17c5c44df1078c59a6149fc4d42fbef08aafab9d61451c9 \ + --hash=sha256:f772be831447dd01ebd26cbedf619e668d1b269d69bf6b4ff46b1378362bff26 # via + # -r installer/requirements.in # accelerate # basicsr # clean-fid @@ -1845,7 +1867,7 @@ torch==1.12.1+cu116 \ torch-fidelity==0.3.0 \ --hash=sha256:3d3e33db98919759cc4f3f24cb27e1e74bdc7c905d90a780630e4e1c18492b66 \ --hash=sha256:d01284825595feb7dc3eae3dc9a0d8ced02be764813a3483f109bc142b52a1d3 - # via -r requirements.in + # via -r installer/requirements.in torchdiffeq==0.2.3 \ --hash=sha256:b5b01ec1294a2d8d5f77e567bf17c5de1237c0573cb94deefa88326f0e18c338 \ --hash=sha256:fe75f434b9090ac0c27702e02bed21472b0f87035be6581f51edc5d4013ea31a @@ -1854,17 +1876,17 @@ torchmetrics==0.10.2 \ --hash=sha256:43757d82266969906fc74b6e80766fcb2a0d52d6c3d09e3b7c98cf3b733fd20c \ --hash=sha256:daa29d96bff5cff04d80eec5b9f5076993d6ac9c2d2163e88b6b31f8d38f7c25 # via pytorch-lightning -torchvision==0.13.1+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ - --hash=sha256:0c9a2b605ac30fcf475d60f79ba378af0073a22de585453f8c3dd6c1452ab9bc \ - --hash=sha256:75986abe572138258eb9795cb4cd73f40b2bdf8374fefa1af6ff6bb0dbc972c6 \ - --hash=sha256:8a4c395bb72cf51eb4318c6861c9a5ea490d48ec36a3d767220ef182445449cb \ - --hash=sha256:92e4685c6010b6b1c228ebb5fe93105d0a71e5b586483a942e04529a43e0bb42 \ - --hash=sha256:9ec5654c56a22fe420dc0af0ff5cd31105f583fdb0240043ff26a7cfed7e05fb \ - --hash=sha256:ba8b7d3c33f63feb29c7dd8c0db68b735d0c9d924ff4e84121b4b20b17cec7a5 \ - --hash=sha256:c3ceb2b3f456f0c984af71ef55f8637f178a29dc3e13a66fbb010ceead2891e1 \ - --hash=sha256:dcf32f6d998493e76ec21a38bbb856b7402295cf7a67fb09ce5bde7e7e725756 +torchvision==0.13.0+cu116 ; platform_system == "Linux" or platform_system == "Windows" \ + --hash=sha256:1696feadf1921c8fa1549bad774221293298288ebedaa14e44bc3e57e964a369 \ + --hash=sha256:572544b108eaf12638f3dca0f496a453c4b8d8256bcc8333d5355df641c0380c \ + --hash=sha256:76dbe71be271e2f246d556a8201c6f73a431851045d866c51bd945521817b892 \ + --hash=sha256:90b9461f57e1219ca900bfd9e85548b840ec56d57ec331b7a7eb871113b34c0a \ + --hash=sha256:941a8c958f2fe9184ce522567f4a471b52dd306891870e979fe6569062432258 \ + --hash=sha256:9ce27c87a8581d00dcef416ec75f8eca9c225d8c36b81150a1f2a60eb70155dc \ + --hash=sha256:cb6bf0117b8f4b601baeae54e8a6bb5c4942b054835ba997f438ddcb7adcfb90 \ + --hash=sha256:d1a3c124645e3460b3e50b54eb89a2575a5036bfa618f15dc4f5d635c716069d # via - # -r requirements.in + # -r installer/requirements.in # basicsr # clean-fid # clip @@ -1906,7 +1928,7 @@ tqdm==4.64.1 \ transformers==4.24.0 \ --hash=sha256:486f353a8e594002e48be0e2aba723d96eda839e63bfe274702a4b5eda85559b \ --hash=sha256:b7ab50039ef9bf817eff14ab974f306fd20a72350bdc9df3a858fd009419322e - # via -r requirements.in + # via -r installer/requirements.in typing-extensions==4.4.0 \ --hash=sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa \ --hash=sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e diff --git a/installer/requirements.in b/installer/requirements.in index 71967f1cf2..86f6be4434 100644 --- a/installer/requirements.in +++ b/installer/requirements.in @@ -1,6 +1,7 @@ --prefer-binary ---extra-index-url https://download.pytorch.org/whl/cu116 +--extra-index-url https://download.pytorch.org/whl/torch_stable.html --trusted-host https://download.pytorch.org +accelerate~=0.14 albumentations diffusers eventlet @@ -16,9 +17,14 @@ streamlit taming-transformers-rom1504 test-tube torch-fidelity +torch==1.12.1 ; platform_system == 'Darwin' +torch==1.12.0+cu116 ; platform_system == 'Linux' or platform_system == 'Windows' torchvision==0.13.1 ; platform_system == 'Darwin' -torchvision==0.13.1+cu116 ; platform_system == 'Linux' or platform_system == 'Windows' +torchvision==0.13.0+cu116 ; platform_system == 'Linux' or platform_system == 'Windows' transformers +picklescan https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip +https://github.com/invoke-ai/clipseg/archive/1f754751c85d7d4255fa681f4491ff5711c1c288.zip https://github.com/TencentARC/GFPGAN/archive/2eac2033893ca7f427f4035d80fe95b92649ac56.zip https://github.com/invoke-ai/k-diffusion/archive/7f16b2c33411f26b3eae78d10648d625cb0c1095.zip +https://github.com/invoke-ai/PyPatchMatch/archive/129863937a8ab37f6bbcec327c994c0f932abdbc.zip diff --git a/ldm/__init__.py b/ldm/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ldm/generate.py b/ldm/generate.py index 9aebe314f3..8d68314f38 100644 --- a/ldm/generate.py +++ b/ldm/generate.py @@ -27,6 +27,7 @@ from pytorch_lightning import seed_everything, logging from ldm.invoke.prompt_parser import PromptParser from ldm.util import instantiate_from_config +from ldm.invoke.globals import Globals from ldm.models.diffusion.ddim import DDIMSampler from ldm.models.diffusion.plms import PLMSSampler from ldm.models.diffusion.ksampler import KSampler @@ -38,6 +39,7 @@ from ldm.invoke.conditioning import get_uc_and_c_and_ec from ldm.invoke.model_cache import ModelCache from ldm.invoke.seamless import configure_model_padding from ldm.invoke.txt2mask import Txt2Mask, SegmentedGrayscale +from ldm.invoke.concepts_lib import Concepts def fix_func(orig): if hasattr(torch.backends, 'mps') and torch.backends.mps.is_available(): @@ -118,7 +120,7 @@ gr = Generate( safety_checker:bool = activate safety checker [False] # this value is sticky and maintained between generation calls - sampler_name:str = ['ddim', 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms', 'plms'] // k_lms + sampler_name:str = ['ddim', 'k_dpm_2_a', 'k_dpm_2', 'k_dpmpp_2', 'k_dpmpp_2_a', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms', 'plms'] // k_lms # these are deprecated - use conf and model instead weights = path to model weights ('models/ldm/stable-diffusion-v1/model.ckpt') @@ -220,8 +222,15 @@ class Generate: from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker from transformers import AutoFeatureExtractor safety_model_id = "CompVis/stable-diffusion-safety-checker" - self.safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id, local_files_only=True) - self.safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id, local_files_only=True) + safety_model_path = os.path.join(Globals.root,'models',safety_model_id) + self.safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id, + local_files_only=True, + cache_dir=safety_model_path, + ) + self.safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id, + local_files_only=True, + cache_dir=safety_model_path, + ) self.safety_checker.to(self.device) except Exception: print('** An error was encountered while installing the safety checker:') @@ -255,6 +264,8 @@ class Generate: ), 'call to img2img() must include the init_img argument' return self.prompt2png(prompt, outdir, **kwargs) + from ldm.invoke.generator.inpaint import infill_methods + def prompt2image( self, # these are common @@ -288,8 +299,9 @@ class Generate: strength = None, init_color = None, # these are specific to embiggen (which also relies on img2img args) - embiggen = None, - embiggen_tiles = None, + embiggen = None, + embiggen_tiles = None, + embiggen_strength = None, # these are specific to GFPGAN/ESRGAN gfpgan_strength= 0, facetool = None, @@ -314,7 +326,10 @@ class Generate: seam_strength: float = 0.7, seam_steps: int = 10, tile_size: int = 32, + infill_method = infill_methods[0], # The infill method to use force_outpaint: bool = False, + enable_image_debugging = False, + **args, ): # eat up additional cruft """ @@ -344,6 +359,7 @@ class Generate: perlin // optional 0-1 value to add a percentage of perlin noise to the initial noise embiggen // scale factor relative to the size of the --init_img (-I), followed by ESRGAN upscaling strength (0-1.0), followed by minimum amount of overlap between tiles as a decimal ratio (0 - 1.0) or number of pixels embiggen_tiles // list of tiles by number in order to process and replace onto the image e.g. `0 2 4` + embiggen_strength // strength for embiggen. 0.0 preserves image exactly, 1.0 replaces it completely To use the step callback, define a function that receives two arguments: - Image GPU data @@ -420,6 +436,9 @@ class Generate: self.sampler_name = sampler_name self._set_sampler() + # apply the concepts library to the prompt + prompt = self.concept_lib().replace_concepts_with_triggers(prompt, lambda concepts: self.load_concepts(concepts)) + # bit of a hack to change the cached sampler's karras threshold to # whatever the user asked for if karras_max is not None and isinstance(self.sampler,KSampler): @@ -452,7 +471,7 @@ class Generate: ) # TODO: Hacky selection of operation to perform. Needs to be refactored. - generator = self.select_generator(init_image, mask_image, embiggen, hires_fix) + generator = self.select_generator(init_image, mask_image, embiggen, hires_fix, force_outpaint) generator.set_variation( self.seed, variation_amount, with_variations @@ -485,6 +504,7 @@ class Generate: perlin=perlin, embiggen=embiggen, embiggen_tiles=embiggen_tiles, + embiggen_strength=embiggen_strength, inpaint_replace=inpaint_replace, mask_blur_radius=mask_blur_radius, safety_checker=checker, @@ -493,9 +513,11 @@ class Generate: seam_strength = seam_strength, seam_steps = seam_steps, tile_size = tile_size, + infill_method = infill_method, force_outpaint = force_outpaint, - inpaint_width = inpaint_width, - inpaint_height = inpaint_height + inpaint_height = inpaint_height, + inpaint_width = inpaint_width, + enable_image_debugging = enable_image_debugging, ) if init_color: @@ -633,7 +655,7 @@ class Generate: elif tool == 'embiggen': # fetch the metadata from the image generator = self.select_generator(embiggen=True) - opt.strength = 0.40 + opt.strength = opt.embiggen_strength or 0.40 print(f'>> Setting img2img strength to {opt.strength} for happy embiggening') generator.generate( prompt, @@ -649,6 +671,7 @@ class Generate: height = opt.height, embiggen = opt.embiggen, embiggen_tiles = opt.embiggen_tiles, + embiggen_strength = opt.embiggen_strength, image_callback = callback, ) elif tool == 'outpaint': @@ -820,6 +843,7 @@ class Generate: model_data = cache.get_model(model_name) if model_data is None: # restore previous model_data = cache.get_model(self.model_name) + model_name = self.model_name # addresses Issue #1547 self.model = model_data['model'] self.width = model_data['width'] @@ -839,6 +863,12 @@ class Generate: self.model_name = model_name return self.model + def load_concepts(self,concepts:list[str]): + self.model.embedding_manager.load_concepts(concepts, self.precision=='float32' or self.precision=='autocast') + + def concept_lib(self)->Concepts: + return self.model.embedding_manager.concepts_library + def correct_colors(self, image_list, reference_image_path, @@ -909,7 +939,7 @@ class Generate: r[0] = image def apply_textmask(self, image_path:str, prompt:str, callback, threshold:float=0.5): - assert os.path.exists(image_path), '** "{image_path}" not found. Please enter the name of an existing image file to mask **' + assert os.path.exists(image_path), f'** "{image_path}" not found. Please enter the name of an existing image file to mask **' basename,_ = os.path.splitext(os.path.basename(image_path)) if self.txt2mask is None: self.txt2mask = Txt2Mask(device = self.device, refined=True) @@ -944,6 +974,10 @@ class Generate: self.sampler = KSampler(self.model, 'dpm_2_ancestral', device=self.device) elif self.sampler_name == 'k_dpm_2': self.sampler = KSampler(self.model, 'dpm_2', device=self.device) + elif self.sampler_name == 'k_dpmpp_2_a': + self.sampler = KSampler(self.model, 'dpmpp_2s_ancestral', device=self.device) + elif self.sampler_name == 'k_dpmpp_2': + self.sampler = KSampler(self.model, 'dpmpp_2m', device=self.device) elif self.sampler_name == 'k_euler_a': self.sampler = KSampler(self.model, 'euler_ancestral', device=self.device) elif self.sampler_name == 'k_euler': @@ -1072,14 +1106,8 @@ class Generate: print( f'>> image will be resized to fit inside a box {w}x{h} in size.' ) - if image.width > image.height: - h = None # by setting h to none, we tell InitImageResizer to fit into the width and calculate height - elif image.height > image.width: - w = None # ditto for w - else: - pass # note that InitImageResizer does the multiple of 64 truncation internally - image = InitImageResizer(image).resize(w, h) + image = InitImageResizer(image).resize(width=w, height=h) print( f'>> after adjusting image dimensions to be multiples of 64, init image is {image.width}x{image.height}' ) diff --git a/ldm/invoke/CLI.py b/ldm/invoke/CLI.py new file mode 100644 index 0000000000..f05ccbb1ca --- /dev/null +++ b/ldm/invoke/CLI.py @@ -0,0 +1,945 @@ +import os +import re +import sys +import shlex +import copy +import warnings +import time +import traceback +import yaml + +from ldm.invoke.globals import Globals +from ldm.invoke.prompt_parser import PromptParser +from ldm.invoke.readline import get_completer, Completer +from ldm.invoke.args import Args, metadata_dumps, metadata_from_png, dream_cmd_from_png +from ldm.invoke.pngwriter import PngWriter, retrieve_metadata, write_metadata +from ldm.invoke.image_util import make_grid +from ldm.invoke.log import write_log +from ldm.invoke.concepts_lib import Concepts +from omegaconf import OmegaConf +from pathlib import Path +import pyparsing + +# global used in multiple functions (fix) +infile = None + +def main(): + """Initialize command-line parsers and the diffusion model""" + global infile + print('* Initializing, be patient...') + + opt = Args() + args = opt.parse_args() + if not args: + sys.exit(-1) + + if args.laion400m: + print('--laion400m flag has been deprecated. Please use --model laion400m instead.') + sys.exit(-1) + if args.weights: + print('--weights argument has been deprecated. Please edit ./configs/models.yaml, and select the weights using --model instead.') + sys.exit(-1) + if args.max_loaded_models is not None: + if args.max_loaded_models <= 0: + print('--max_loaded_models must be >= 1; using 1') + args.max_loaded_models = 1 + + # alert - setting globals here + Globals.root = os.path.expanduser(args.root_dir or os.environ.get('INVOKEAI_ROOT') or os.path.abspath('.')) + Globals.try_patchmatch = args.patchmatch + + print(f'>> InvokeAI runtime directory is "{Globals.root}"') + + # loading here to avoid long delays on startup + from ldm.generate import Generate + + # these two lines prevent a horrible warning message from appearing + # when the frozen CLIP tokenizer is imported + import transformers + transformers.logging.set_verbosity_error() + + # Loading Face Restoration and ESRGAN Modules + gfpgan,codeformer,esrgan = load_face_restoration(opt) + + # normalize the config directory relative to root + if not os.path.isabs(opt.conf): + opt.conf = os.path.normpath(os.path.join(Globals.root,opt.conf)) + + if opt.embeddings: + if not os.path.isabs(opt.embedding_path): + embedding_path = os.path.normpath(os.path.join(Globals.root,opt.embedding_path)) + else: + embedding_path = None + + # load the infile as a list of lines + if opt.infile: + try: + if os.path.isfile(opt.infile): + infile = open(opt.infile, 'r', encoding='utf-8') + elif opt.infile == '-': # stdin + infile = sys.stdin + else: + raise FileNotFoundError(f'{opt.infile} not found.') + except (FileNotFoundError, IOError) as e: + print(f'{e}. Aborting.') + sys.exit(-1) + + # creating a Generate object: + try: + gen = Generate( + conf = opt.conf, + model = opt.model, + sampler_name = opt.sampler_name, + embedding_path = embedding_path, + full_precision = opt.full_precision, + precision = opt.precision, + gfpgan=gfpgan, + codeformer=codeformer, + esrgan=esrgan, + free_gpu_mem=opt.free_gpu_mem, + safety_checker=opt.safety_checker, + max_loaded_models=opt.max_loaded_models, + ) + except (FileNotFoundError, TypeError, AssertionError): + emergency_model_reconfigure() + sys.exit(-1) + except (IOError, KeyError) as e: + print(f'{e}. Aborting.') + sys.exit(-1) + + if opt.seamless: + print(">> changed to seamless tiling mode") + + # preload the model + try: + gen.load_model() + except AssertionError: + emergency_model_reconfigure() + sys.exit(-1) + + # web server loops forever + if opt.web or opt.gui: + invoke_ai_web_server_loop(gen, gfpgan, codeformer, esrgan) + sys.exit(0) + + if not infile: + print( + "\n* Initialization done! Awaiting your command (-h for help, 'q' to quit)" + ) + + try: + main_loop(gen, opt) + except KeyboardInterrupt: + print("\ngoodbye!") + +# TODO: main_loop() has gotten busy. Needs to be refactored. +def main_loop(gen, opt): + """prompt/read/execute loop""" + global infile + done = False + doneAfterInFile = infile is not None + path_filter = re.compile(r'[<>:"/\\|?*]') + last_results = list() + model_config = OmegaConf.load(opt.conf) + + # The readline completer reads history from the .dream_history file located in the + # output directory specified at the time of script launch. We do not currently support + # changing the history file midstream when the output directory is changed. + completer = get_completer(opt, models=list(model_config.keys())) + set_default_output_dir(opt, completer) + add_embedding_terms(gen, completer) + output_cntr = completer.get_current_history_length()+1 + + # os.pathconf is not available on Windows + if hasattr(os, 'pathconf'): + path_max = os.pathconf(opt.outdir, 'PC_PATH_MAX') + name_max = os.pathconf(opt.outdir, 'PC_NAME_MAX') + else: + path_max = 260 + name_max = 255 + + while not done: + + operation = 'generate' + + try: + command = get_next_command(infile) + except EOFError: + done = infile is None or doneAfterInFile + infile = None + continue + + # skip empty lines + if not command.strip(): + continue + + if command.startswith(('#', '//')): + continue + + if len(command.strip()) == 1 and command.startswith('q'): + done = True + break + + if not command.startswith('!history'): + completer.add_history(command) + + if command.startswith('!'): + command, operation = do_command(command, gen, opt, completer) + + if operation is None: + continue + + if opt.parse_cmd(command) is None: + continue + + if opt.init_img: + try: + if not opt.prompt: + oldargs = metadata_from_png(opt.init_img) + opt.prompt = oldargs.prompt + print(f'>> Retrieved old prompt "{opt.prompt}" from {opt.init_img}') + except (OSError, AttributeError, KeyError): + pass + + if len(opt.prompt) == 0: + opt.prompt = '' + + # width and height are set by model if not specified + if not opt.width: + opt.width = gen.width + if not opt.height: + opt.height = gen.height + + # retrieve previous value of init image if requested + if opt.init_img is not None and re.match('^-\\d+$', opt.init_img): + try: + opt.init_img = last_results[int(opt.init_img)][0] + print(f'>> Reusing previous image {opt.init_img}') + except IndexError: + print( + f'>> No previous initial image at position {opt.init_img} found') + opt.init_img = None + continue + + # the outdir can change with each command, so we adjust it here + set_default_output_dir(opt,completer) + + # try to relativize pathnames + for attr in ('init_img','init_mask','init_color'): + if getattr(opt,attr) and not os.path.exists(getattr(opt,attr)): + basename = getattr(opt,attr) + path = os.path.join(opt.outdir,basename) + setattr(opt,attr,path) + + # retrieve previous value of seed if requested + # Exception: for postprocess operations negative seed values + # mean "discard the original seed and generate a new one" + # (this is a non-obvious hack and needs to be reworked) + if opt.seed is not None and opt.seed < 0 and operation != 'postprocess': + try: + opt.seed = last_results[opt.seed][1] + print(f'>> Reusing previous seed {opt.seed}') + except IndexError: + print(f'>> No previous seed at position {opt.seed} found') + opt.seed = None + continue + + if opt.strength is None: + opt.strength = 0.75 if opt.out_direction is None else 0.83 + + if opt.with_variations is not None: + opt.with_variations = split_variations(opt.with_variations) + + if opt.prompt_as_dir and operation == 'generate': + # sanitize the prompt to a valid folder name + subdir = path_filter.sub('_', opt.prompt)[:name_max].rstrip(' .') + + # truncate path to maximum allowed length + # 39 is the length of '######.##########.##########-##.png', plus two separators and a NUL + subdir = subdir[:(path_max - 39 - len(os.path.abspath(opt.outdir)))] + current_outdir = os.path.join(opt.outdir, subdir) + + print('Writing files to directory: "' + current_outdir + '"') + + # make sure the output directory exists + if not os.path.exists(current_outdir): + os.makedirs(current_outdir) + else: + if not os.path.exists(opt.outdir): + os.makedirs(opt.outdir) + current_outdir = opt.outdir + + # Here is where the images are actually generated! + last_results = [] + try: + file_writer = PngWriter(current_outdir) + results = [] # list of filename, prompt pairs + grid_images = dict() # seed -> Image, only used if `opt.grid` + prior_variations = opt.with_variations or [] + prefix = file_writer.unique_prefix() + step_callback = make_step_callback(gen, opt, prefix) if opt.save_intermediates > 0 else None + + def image_writer(image, seed, upscaled=False, first_seed=None, use_prefix=None): + # note the seed is the seed of the current image + # the first_seed is the original seed that noise is added to + # when the -v switch is used to generate variations + nonlocal prior_variations + nonlocal prefix + + path = None + if opt.grid: + grid_images[seed] = image + + elif operation == 'mask': + filename = f'{prefix}.{use_prefix}.{seed}.png' + tm = opt.text_mask[0] + th = opt.text_mask[1] if len(opt.text_mask)>1 else 0.5 + formatted_dream_prompt = f'!mask {opt.input_file_path} -tm {tm} {th}' + path = file_writer.save_image_and_prompt_to_png( + image = image, + dream_prompt = formatted_dream_prompt, + metadata = {}, + name = filename, + compress_level = opt.png_compression, + ) + results.append([path, formatted_dream_prompt]) + + else: + if use_prefix is not None: + prefix = use_prefix + postprocessed = upscaled if upscaled else operation=='postprocess' + opt.prompt = gen.concept_lib().replace_triggers_with_concepts(opt.prompt) # to avoid the problem of non-unique concept triggers + filename, formatted_dream_prompt = prepare_image_metadata( + opt, + prefix, + seed, + operation, + prior_variations, + postprocessed, + first_seed + ) + path = file_writer.save_image_and_prompt_to_png( + image = image, + dream_prompt = formatted_dream_prompt, + metadata = metadata_dumps( + opt, + seeds = [seed if opt.variation_amount==0 and len(prior_variations)==0 else first_seed], + model_hash = gen.model_hash, + ), + name = filename, + compress_level = opt.png_compression, + ) + + # update rfc metadata + if operation == 'postprocess': + tool = re.match('postprocess:(\w+)',opt.last_operation).groups()[0] + add_postprocessing_to_metadata( + opt, + opt.input_file_path, + filename, + tool, + formatted_dream_prompt, + ) + + if (not postprocessed) or opt.save_original: + # only append to results if we didn't overwrite an earlier output + results.append([path, formatted_dream_prompt]) + + # so that the seed autocompletes (on linux|mac when -S or --seed specified + if completer and operation == 'generate': + completer.add_seed(seed) + completer.add_seed(first_seed) + last_results.append([path, seed]) + + if operation == 'generate': + catch_ctrl_c = infile is None # if running interactively, we catch keyboard interrupts + opt.last_operation='generate' + try: + gen.prompt2image( + image_callback=image_writer, + step_callback=step_callback, + catch_interrupts=catch_ctrl_c, + **vars(opt) + ) + except (PromptParser.ParsingException, pyparsing.ParseException) as e: + print('** An error occurred while processing your prompt **') + print(f'** {str(e)} **') + elif operation == 'postprocess': + print(f'>> fixing {opt.prompt}') + opt.last_operation = do_postprocess(gen,opt,image_writer) + + elif operation == 'mask': + print(f'>> generating masks from {opt.prompt}') + do_textmask(gen, opt, image_writer) + + if opt.grid and len(grid_images) > 0: + grid_img = make_grid(list(grid_images.values())) + grid_seeds = list(grid_images.keys()) + first_seed = last_results[0][1] + filename = f'{prefix}.{first_seed}.png' + formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed,grid=True,iterations=len(grid_images)) + formatted_dream_prompt += f' # {grid_seeds}' + metadata = metadata_dumps( + opt, + seeds = grid_seeds, + model_hash = gen.model_hash + ) + path = file_writer.save_image_and_prompt_to_png( + image = grid_img, + dream_prompt = formatted_dream_prompt, + metadata = metadata, + name = filename + ) + results = [[path, formatted_dream_prompt]] + + except AssertionError as e: + print(e) + continue + + except OSError as e: + print(e) + continue + + print('Outputs:') + log_path = os.path.join(current_outdir, 'invoke_log') + output_cntr = write_log(results, log_path ,('txt', 'md'), output_cntr) + print() + + print('goodbye!') + +# TO DO: remove repetitive code and the awkward command.replace() trope +# Just do a simple parse of the command! +def do_command(command:str, gen, opt:Args, completer) -> tuple: + global infile + operation = 'generate' # default operation, alternative is 'postprocess' + + if command.startswith('!dream'): # in case a stored prompt still contains the !dream command + command = command.replace('!dream ','',1) + + elif command.startswith('!fix'): + command = command.replace('!fix ','',1) + operation = 'postprocess' + + elif command.startswith('!mask'): + command = command.replace('!mask ','',1) + operation = 'mask' + + elif command.startswith('!switch'): + model_name = command.replace('!switch ','',1) + gen.set_model(model_name) + add_embedding_terms(gen, completer) + completer.add_history(command) + operation = None + + elif command.startswith('!models'): + gen.model_cache.print_models() + completer.add_history(command) + operation = None + + elif command.startswith('!import'): + path = shlex.split(command) + if len(path) < 2: + print('** please provide a path to a .ckpt or .vae model file') + elif not os.path.exists(path[1]): + print(f'** {path[1]}: file not found') + else: + add_weights_to_config(path[1], gen, opt, completer) + completer.add_history(command) + operation = None + + elif command.startswith('!edit'): + path = shlex.split(command) + if len(path) < 2: + print('** please provide the name of a model') + else: + edit_config(path[1], gen, opt, completer) + completer.add_history(command) + operation = None + + elif command.startswith('!del'): + path = shlex.split(command) + if len(path) < 2: + print('** please provide the name of a model') + else: + del_config(path[1], gen, opt, completer) + completer.add_history(command) + operation = None + + elif command.startswith('!fetch'): + file_path = command.replace('!fetch','',1).strip() + retrieve_dream_command(opt,file_path,completer) + completer.add_history(command) + operation = None + + elif command.startswith('!replay'): + file_path = command.replace('!replay','',1).strip() + if infile is None and os.path.isfile(file_path): + infile = open(file_path, 'r', encoding='utf-8') + completer.add_history(command) + operation = None + + elif command.startswith('!history'): + completer.show_history() + operation = None + + elif command.startswith('!search'): + search_str = command.replace('!search','',1).strip() + completer.show_history(search_str) + operation = None + + elif command.startswith('!clear'): + completer.clear_history() + operation = None + + elif re.match('^!(\d+)',command): + command_no = re.match('^!(\d+)',command).groups()[0] + command = completer.get_line(int(command_no)) + completer.set_line(command) + operation = None + + else: # not a recognized command, so give the --help text + command = '-h' + return command, operation + +def set_default_output_dir(opt:Args, completer:Completer): + ''' + If opt.outdir is relative, we add the root directory to it + normalize the outdir relative to root and make sure it exists. + ''' + if not os.path.isabs(opt.outdir): + opt.outdir=os.path.normpath(os.path.join(Globals.root,opt.outdir)) + if not os.path.exists(opt.outdir): + os.makedirs(opt.outdir) + completer.set_default_dir(opt.outdir) + + +def add_weights_to_config(model_path:str, gen, opt, completer): + print(f'>> Model import in process. Please enter the values needed to configure this model:') + print() + + new_config = {} + new_config['weights'] = model_path + + done = False + while not done: + model_name = input('Short name for this model: ') + if not re.match('^[\w._-]+$',model_name): + print('** model name must contain only words, digits and the characters [._-] **') + else: + done = True + new_config['description'] = input('Description of this model: ') + + completer.complete_extensions(('.yaml','.yml')) + completer.linebuffer = 'configs/stable-diffusion/v1-inference.yaml' + + done = False + while not done: + new_config['config'] = input('Configuration file for this model: ') + done = os.path.exists(new_config['config']) + + done = False + completer.complete_extensions(('.vae.pt','.vae','.ckpt')) + while not done: + vae = input('VAE autoencoder file for this model [None]: ') + if os.path.exists(vae): + new_config['vae'] = vae + done = True + else: + done = len(vae)==0 + + completer.complete_extensions(None) + + for field in ('width','height'): + done = False + while not done: + try: + completer.linebuffer = '512' + value = int(input(f'Default image {field}: ')) + assert value >= 64 and value <= 2048 + new_config[field] = value + done = True + except: + print('** Please enter a valid integer between 64 and 2048') + + make_default = input('Make this the default model? [n] ') in ('y','Y') + + if write_config_file(opt.conf, gen, model_name, new_config, make_default=make_default): + completer.add_model(model_name) + +def del_config(model_name:str, gen, opt, completer): + current_model = gen.model_name + if model_name == current_model: + print("** Can't delete active model. !switch to another model first. **") + return + gen.model_cache.del_model(model_name) + gen.model_cache.commit(opt.conf) + print(f'** {model_name} deleted') + completer.del_model(model_name) + +def edit_config(model_name:str, gen, opt, completer): + config = gen.model_cache.config + + if model_name not in config: + print(f'** Unknown model {model_name}') + return + + print(f'\n>> Editing model {model_name} from configuration file {opt.conf}') + + conf = config[model_name] + new_config = {} + completer.complete_extensions(('.yaml','.yml','.ckpt','.vae.pt')) + for field in ('description', 'weights', 'vae', 'config', 'width','height'): + completer.linebuffer = str(conf[field]) if field in conf else '' + new_value = input(f'{field}: ') + new_config[field] = int(new_value) if field in ('width','height') else new_value + make_default = input('Make this the default model? [n] ') in ('y','Y') + completer.complete_extensions(None) + write_config_file(opt.conf, gen, model_name, new_config, clobber=True, make_default=make_default) + +def write_config_file(conf_path, gen, model_name, new_config, clobber=False, make_default=False): + current_model = gen.model_name + + op = 'modify' if clobber else 'import' + print('\n>> New configuration:') + if make_default: + new_config['default'] = True + print(yaml.dump({model_name:new_config})) + if input(f'OK to {op} [n]? ') not in ('y','Y'): + return False + + try: + print('>> Verifying that new model loads...') + gen.model_cache.add_model(model_name, new_config, clobber) + assert gen.set_model(model_name) is not None, 'model failed to load' + except AssertionError as e: + print(f'** aborting **') + gen.model_cache.del_model(model_name) + return False + + if make_default: + print('making this default') + gen.model_cache.set_default_model(model_name) + + gen.model_cache.commit(conf_path) + + do_switch = input(f'Keep model loaded? [y]') + if len(do_switch)==0 or do_switch[0] in ('y','Y'): + pass + else: + gen.set_model(current_model) + return True + +def do_textmask(gen, opt, callback): + image_path = opt.prompt + if not os.path.exists(image_path): + image_path = os.path.join(opt.outdir,image_path) + assert os.path.exists(image_path), '** "{opt.prompt}" not found. Please enter the name of an existing image file to mask **' + assert opt.text_mask is not None and len(opt.text_mask) >= 1, '** Please provide a text mask with -tm **' + opt.input_file_path = image_path + tm = opt.text_mask[0] + threshold = float(opt.text_mask[1]) if len(opt.text_mask) > 1 else 0.5 + gen.apply_textmask( + image_path = image_path, + prompt = tm, + threshold = threshold, + callback = callback, + ) + +def do_postprocess (gen, opt, callback): + file_path = opt.prompt # treat the prompt as the file pathname + if opt.new_prompt is not None: + opt.prompt = opt.new_prompt + else: + opt.prompt = None + + if os.path.dirname(file_path) == '': #basename given + file_path = os.path.join(opt.outdir,file_path) + + opt.input_file_path = file_path + + tool=None + if opt.facetool_strength > 0: + tool = opt.facetool + elif opt.embiggen: + tool = 'embiggen' + elif opt.upscale: + tool = 'upscale' + elif opt.out_direction: + tool = 'outpaint' + elif opt.outcrop: + tool = 'outcrop' + opt.save_original = True # do not overwrite old image! + opt.last_operation = f'postprocess:{tool}' + try: + gen.apply_postprocessor( + image_path = file_path, + tool = tool, + facetool_strength = opt.facetool_strength, + codeformer_fidelity = opt.codeformer_fidelity, + save_original = opt.save_original, + upscale = opt.upscale, + out_direction = opt.out_direction, + outcrop = opt.outcrop, + callback = callback, + opt = opt, + ) + except OSError: + print(traceback.format_exc(), file=sys.stderr) + print(f'** {file_path}: file could not be read') + return + except (KeyError, AttributeError): + print(traceback.format_exc(), file=sys.stderr) + return + return opt.last_operation + +def add_postprocessing_to_metadata(opt,original_file,new_file,tool,command): + original_file = original_file if os.path.exists(original_file) else os.path.join(opt.outdir,original_file) + new_file = new_file if os.path.exists(new_file) else os.path.join(opt.outdir,new_file) + try: + meta = retrieve_metadata(original_file)['sd-metadata'] + except AttributeError: + try: + meta = retrieve_metadata(new_file)['sd-metadata'] + except AttributeError: + meta = {} + + if 'image' not in meta: + meta = metadata_dumps(opt,seeds=[opt.seed])['image'] + meta['image'] = {} + img_data = meta.get('image') + pp = img_data.get('postprocessing',[]) or [] + pp.append( + { + 'tool':tool, + 'dream_command':command, + } + ) + meta['image']['postprocessing'] = pp + write_metadata(new_file,meta) + +def prepare_image_metadata( + opt, + prefix, + seed, + operation='generate', + prior_variations=[], + postprocessed=False, + first_seed=None +): + + if postprocessed and opt.save_original: + filename = choose_postprocess_name(opt,prefix,seed) + else: + wildcards = dict(opt.__dict__) + wildcards['prefix'] = prefix + wildcards['seed'] = seed + try: + filename = opt.fnformat.format(**wildcards) + except KeyError as e: + print(f'** The filename format contains an unknown key \'{e.args[0]}\'. Will use \'{{prefix}}.{{seed}}.png\' instead') + filename = f'{prefix}.{seed}.png' + except IndexError as e: + print(f'** The filename format is broken or complete. Will use \'{{prefix}}.{{seed}}.png\' instead') + filename = f'{prefix}.{seed}.png' + + if opt.variation_amount > 0: + first_seed = first_seed or seed + this_variation = [[seed, opt.variation_amount]] + opt.with_variations = prior_variations + this_variation + formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed) + elif len(prior_variations) > 0: + formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed) + elif operation == 'postprocess': + formatted_dream_prompt = '!fix '+opt.dream_prompt_str(seed=seed,prompt=opt.input_file_path) + else: + formatted_dream_prompt = opt.dream_prompt_str(seed=seed) + return filename,formatted_dream_prompt + +def choose_postprocess_name(opt,prefix,seed) -> str: + match = re.search('postprocess:(\w+)',opt.last_operation) + if match: + modifier = match.group(1) # will look like "gfpgan", "upscale", "outpaint" or "embiggen" + else: + modifier = 'postprocessed' + + counter = 0 + filename = None + available = False + while not available: + if counter == 0: + filename = f'{prefix}.{seed}.{modifier}.png' + else: + filename = f'{prefix}.{seed}.{modifier}-{counter:02d}.png' + available = not os.path.exists(os.path.join(opt.outdir,filename)) + counter += 1 + return filename + +def get_next_command(infile=None) -> str: # command string + if infile is None: + command = input('invoke> ') + else: + command = infile.readline() + if not command: + raise EOFError + else: + command = command.strip() + if len(command)>0: + print(f'#{command}') + return command + +def invoke_ai_web_server_loop(gen, gfpgan, codeformer, esrgan): + print('\n* --web was specified, starting web server...') + from backend.invoke_ai_web_server import InvokeAIWebServer + # Change working directory to the stable-diffusion directory + os.chdir( + os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) + ) + + invoke_ai_web_server = InvokeAIWebServer(generate=gen, gfpgan=gfpgan, codeformer=codeformer, esrgan=esrgan) + + try: + invoke_ai_web_server.run() + except KeyboardInterrupt: + pass + +def add_embedding_terms(gen,completer): + ''' + Called after setting the model, updates the autocompleter with + any terms loaded by the embedding manager. + ''' + completer.add_embedding_terms(gen.model.embedding_manager.list_terms()) + +def split_variations(variations_string) -> list: + # shotgun parsing, woo + parts = [] + broken = False # python doesn't have labeled loops... + for part in variations_string.split(','): + seed_and_weight = part.split(':') + if len(seed_and_weight) != 2: + print(f'** Could not parse with_variation part "{part}"') + broken = True + break + try: + seed = int(seed_and_weight[0]) + weight = float(seed_and_weight[1]) + except ValueError: + print(f'** Could not parse with_variation part "{part}"') + broken = True + break + parts.append([seed, weight]) + if broken: + return None + elif len(parts) == 0: + return None + else: + return parts + +def load_face_restoration(opt): + try: + gfpgan, codeformer, esrgan = None, None, None + if opt.restore or opt.esrgan: + from ldm.invoke.restoration import Restoration + restoration = Restoration() + if opt.restore: + gfpgan, codeformer = restoration.load_face_restore_models(opt.gfpgan_model_path) + else: + print('>> Face restoration disabled') + if opt.esrgan: + esrgan = restoration.load_esrgan(opt.esrgan_bg_tile) + else: + print('>> Upscaling disabled') + else: + print('>> Face restoration and upscaling disabled') + except (ModuleNotFoundError, ImportError): + print(traceback.format_exc(), file=sys.stderr) + print('>> You may need to install the ESRGAN and/or GFPGAN modules') + return gfpgan,codeformer,esrgan + +def make_step_callback(gen, opt, prefix): + destination = os.path.join(opt.outdir,'intermediates',prefix) + os.makedirs(destination,exist_ok=True) + print(f'>> Intermediate images will be written into {destination}') + def callback(img, step): + if step % opt.save_intermediates == 0 or step == opt.steps-1: + filename = os.path.join(destination,f'{step:04}.png') + image = gen.sample_to_image(img) + image.save(filename,'PNG') + return callback + +def retrieve_dream_command(opt,command,completer): + ''' + Given a full or partial path to a previously-generated image file, + will retrieve and format the dream command used to generate the image, + and pop it into the readline buffer (linux, Mac), or print out a comment + for cut-and-paste (windows) + + Given a wildcard path to a folder with image png files, + will retrieve and format the dream command used to generate the images, + and save them to a file commands.txt for further processing + ''' + if len(command) == 0: + return + + tokens = command.split() + dir,basename = os.path.split(tokens[0]) + if len(dir) == 0: + path = os.path.join(opt.outdir,basename) + else: + path = tokens[0] + + if len(tokens) > 1: + return write_commands(opt, path, tokens[1]) + + cmd = '' + try: + cmd = dream_cmd_from_png(path) + except OSError: + print(f'## {tokens[0]}: file could not be read') + except (KeyError, AttributeError, IndexError): + print(f'## {tokens[0]}: file has no metadata') + except: + print(f'## {tokens[0]}: file could not be processed') + if len(cmd)>0: + completer.set_line(cmd) + +def write_commands(opt, file_path:str, outfilepath:str): + dir,basename = os.path.split(file_path) + try: + paths = sorted(list(Path(dir).glob(basename))) + except ValueError: + print(f'## "{basename}": unacceptable pattern') + return + + commands = [] + cmd = None + for path in paths: + try: + cmd = dream_cmd_from_png(path) + except (KeyError, AttributeError, IndexError): + print(f'## {path}: file has no metadata') + except: + print(f'## {path}: file could not be processed') + if cmd: + commands.append(f'# {path}') + commands.append(cmd) + if len(commands)>0: + dir,basename = os.path.split(outfilepath) + if len(dir)==0: + outfilepath = os.path.join(opt.outdir,basename) + with open(outfilepath, 'w', encoding='utf-8') as f: + f.write('\n'.join(commands)) + print(f'>> File {outfilepath} with commands created') + +def emergency_model_reconfigure(): + print() + print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!') + print(' You appear to have a missing or misconfigured model file(s). ') + print(' The script will now exit and run configure_invokeai.py to help fix the problem.') + print(' After reconfiguration is done, please relaunch invoke.py. ') + print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!') + print('configure_invokeai is launching....\n') + + sys.argv = ['configure_invokeai','--interactive'] + import configure_invokeai + configure_invokeai.main() + diff --git a/ldm/invoke/__init__.py b/ldm/invoke/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ldm/invoke/args.py b/ldm/invoke/args.py index 72b785171e..e746e5bab3 100644 --- a/ldm/invoke/args.py +++ b/ldm/invoke/args.py @@ -92,13 +92,17 @@ import shlex import copy import base64 import functools +import warnings import ldm.invoke.pngwriter +from ldm.invoke.globals import Globals from ldm.invoke.prompt_parser import split_weighted_subprompts SAMPLER_CHOICES = [ 'ddim', 'k_dpm_2_a', 'k_dpm_2', + 'k_dpmpp_2_a', + 'k_dpmpp_2', 'k_euler_a', 'k_euler', 'k_heun', @@ -115,8 +119,7 @@ PRECISION_CHOICES = [ # is there a way to pick this up during git commits? APP_ID = 'invoke-ai/InvokeAI' -APP_VERSION = 'v2.1.2' -INITFILE = os.path.expanduser('~/.invokeai') +APP_VERSION = 'v2.2.0' class ArgFormatter(argparse.RawTextHelpFormatter): # use defined argument order to display usage @@ -169,11 +172,14 @@ class Args(object): '''Parse the shell switches and store.''' try: sysargs = sys.argv[1:] - if os.path.exists(INITFILE): - print(f'>> Initialization file {INITFILE} found. Loading...') - sysargs.insert(0,f'@{INITFILE}') + initfile = os.path.expanduser(Globals.initfile) + if os.path.exists(initfile): + print(f'>> Initialization file {initfile} found. Loading...') + sysargs.insert(0,f'@{initfile}') else: - print(f'>> Initialization file {INITFILE} not found. Applying default settings...') + from ldm.invoke.CLI import emergency_model_reconfigure + emergency_model_reconfigure() + sys.exit(-1) self._arg_switches = self._arg_parser.parse_args(sysargs) return self._arg_switches except Exception as e: @@ -286,6 +292,8 @@ class Args(object): switches.append(f'--embiggen {" ".join([str(u) for u in a["embiggen"]])}') if a['embiggen_tiles']: switches.append(f'--embiggen_tiles {" ".join([str(u) for u in a["embiggen_tiles"]])}') + if a['embiggen_strength']: + switches.append(f'--embiggen_strength {a["embiggen_strength"]}') # outpainting parameters if a['out_direction']: @@ -363,6 +371,17 @@ class Args(object): new_dict[k] = value2 if value2 is not None else value1 return new_dict + def _create_init_file(self,initfile:str): + with open(initfile, mode='w', encoding='utf-8') as f: + f.write('''# InvokeAI initialization file +# Put frequently-used startup commands here, one or more per line +# Examples: +# --web --host=0.0.0.0 +# --steps 20 +# -Ak_euler_a -C10.0 +''' + ) + def _create_arg_parser(self): ''' This defines all the arguments used on the command line when you launch @@ -389,6 +408,11 @@ class Args(object): deprecated_group.add_argument('--laion400m') deprecated_group.add_argument('--weights') # deprecated + model_group.add_argument( + '--root_dir', + default=None, + help='Path to directory containing "models", "outputs" and "configs". If not present will try to read from ~/.invokeai and then from environment variable INVOKEAI_ROOT. Defaults to the current directory as a last resort.', + ) model_group.add_argument( '--config', '-c', @@ -439,9 +463,18 @@ class Args(object): default='auto', ) model_group.add_argument( + '--nsfw_checker' '--safety_checker', - action='store_true', - help='Check for and blur potentially NSFW images', + action=argparse.BooleanOptionalAction, + dest='safety_checker', + default=False, + help='Check for and blur potentially NSFW images. Use --no-nsfw_checker to disable.', + ) + model_group.add_argument( + '--patchmatch', + action=argparse.BooleanOptionalAction, + default=True, + help='Load the patchmatch extension for outpainting. Use --no-patchmatch to disable.', ) file_group.add_argument( '--from_file', @@ -526,9 +559,23 @@ class Args(object): help='generate a grid' ) render_group.add_argument( + '--embedding_directory', '--embedding_path', + dest='embedding_path', + default='embeddings', type=str, - help='Path to a pre-trained embedding manager checkpoint - can only be set on command line', + help='Path to a directory containing .bin and/or .pt files, or a single .bin/.pt file. You may use subdirectories. (default is ROOTDIR/embeddings)' + ) + render_group.add_argument( + '--embeddings', + action=argparse.BooleanOptionalAction, + default=True, + help='Enable embedding directory (default). Use --no-embeddings to disable.', + ) + render_group.add_argument( + '--enable_image_debugging', + action='store_true', + help='Generates debugging image to display' ) # Restoration related args postprocessing_group.add_argument( @@ -590,6 +637,18 @@ class Args(object): default='9090', help='Web server: Port to listen on' ) + web_server_group.add_argument( + '--certfile', + type=str, + default=None, + help='Web server: Path to certificate file to use for SSL. Use together with --keyfile' + ) + web_server_group.add_argument( + '--keyfile', + type=str, + default=None, + help='Web server: Path to private key file to use for SSL. Use together with --certfile' + ) web_server_group.add_argument( '--gui', dest='gui', @@ -915,6 +974,13 @@ class Args(object): help='For embiggen, provide list of tiles to process and replace onto the image e.g. `1 3 5`.', default=None, ) + postprocessing_group.add_argument( + '--embiggen_strength', + '-embiggen_strength', + type=float, + help='The strength of the embiggen img2img step, defaults to 0.4', + default=None, + ) special_effects_group.add_argument( '--seamless', action='store_true', @@ -1065,7 +1131,7 @@ def metadata_from_png(png_file_path) -> Args: returns a single Args object, not multiple. ''' args_list = args_from_png(png_file_path) - return args_list[0] + return args_list[0] if len(args_list)>0 else Args() # empty args def dream_cmd_from_png(png_file_path): opt = metadata_from_png(png_file_path) diff --git a/ldm/invoke/concepts_lib.py b/ldm/invoke/concepts_lib.py new file mode 100644 index 0000000000..3b6d9e9bad --- /dev/null +++ b/ldm/invoke/concepts_lib.py @@ -0,0 +1,164 @@ +""" +Query and install embeddings from the HuggingFace SD Concepts Library +at https://huggingface.co/sd-concepts-library. + +The interface is through the Concepts() object. +""" +import os +import re +import traceback +from typing import Callable +from urllib import request, error as ul_error +from huggingface_hub import HfFolder, hf_hub_url, ModelSearchArguments, ModelFilter, HfApi +from ldm.invoke.globals import Globals + +class Concepts(object): + def __init__(self, root=None): + ''' + Initialize the Concepts object. May optionally pass a root directory. + ''' + self.root = root or Globals.root + self.hf_api = HfApi() + self.concept_list = None + self.concepts_loaded = dict() + self.triggers = dict() # concept name to trigger phrase + self.concept_names = dict() # trigger phrase to concept name + self.match_trigger = re.compile('(<[\w\- >]+>)') # trigger is slightly less restrictive than HF concept name + self.match_concept = re.compile('<([\w\-]+)>') # HF concept name can only contain A-Za-z0-9_- + + def list_concepts(self)->list: + ''' + Return a list of all the concepts by name, without the 'sd-concepts-library' part. + ''' + if self.concept_list is not None: + return self.concept_list + try: + models = self.hf_api.list_models(filter=ModelFilter(model_name='sd-concepts-library/')) + self.concept_list = [a.id.split('/')[1] for a in models] + except Exception as e: + print(' ** WARNING: Hugging Face textual inversion concepts libraries could not be loaded. The error was {str(e)}.') + print(' ** You may load .bin and .pt file(s) manually using the --embedding_directory argument.') + return self.concept_list + + def get_concept_model_path(self, concept_name:str)->str: + ''' + Returns the path to the 'learned_embeds.bin' file in + the named concept. Returns None if invalid or cannot + be downloaded. + ''' + return self.get_concept_file(concept_name.lower(),'learned_embeds.bin') + + def concept_to_trigger(self, concept_name:str)->str: + ''' + Given a concept name returns its trigger by looking in the + "token_identifier.txt" file. + ''' + if concept_name in self.triggers: + return self.triggers[concept_name] + file = self.get_concept_file(concept_name, 'token_identifier.txt', local_only=True) + if not file: + return None + with open(file,'r') as f: + trigger = f.readline() + trigger = trigger.strip() + self.triggers[concept_name] = trigger + self.concept_names[trigger] = concept_name + return trigger + + def trigger_to_concept(self, trigger:str)->str: + ''' + Given a trigger phrase, maps it to the concept library name. + Only works if concept_to_trigger() has previously been called + on this library. There needs to be a persistent database for + this. + ''' + concept = self.concept_names.get(trigger,None) + return f'<{concept}>' if concept else f'{trigger}' + + def replace_triggers_with_concepts(self, prompt:str)->str: + ''' + Given a prompt string that contains tags, replace these + tags with the concept name. The reason for this is so that the + concept names get stored in the prompt metadata. There is no + controlling of colliding triggers in the SD library, so it is + better to store the concept name (unique) than the concept trigger + (not necessarily unique!) + ''' + triggers = self.match_trigger.findall(prompt) + if not triggers: + return prompt + + def do_replace(match)->str: + return self.trigger_to_concept(match.group(1)) or f'<{match.group(1)}>' + return self.match_trigger.sub(do_replace, prompt) + + def replace_concepts_with_triggers(self, prompt:str, load_concepts_callback: Callable[[list], any])->str: + ''' + Given a prompt string that contains `` tags, replace + these tags with the appropriate trigger. + + If any `` tags are found, `load_concepts_callback()` is called with a list + of `concepts_name` strings. + ''' + concepts = self.match_concept.findall(prompt) + if not concepts: + return prompt + load_concepts_callback(concepts) + + def do_replace(match)->str: + return self.concept_to_trigger(match.group(1)) or f'<{match.group(1)}>' + return self.match_concept.sub(do_replace, prompt) + + def get_concept_file(self, concept_name:str, file_name:str='learned_embeds.bin' , local_only:bool=False)->str: + if not self.concept_is_downloaded(concept_name) and not local_only: + self.download_concept(concept_name) + path = os.path.join(self._concept_path(concept_name), file_name) + return path if os.path.exists(path) else None + + def concept_is_downloaded(self, concept_name)->bool: + concept_directory = self._concept_path(concept_name) + return os.path.exists(concept_directory) + + def download_concept(self,concept_name)->bool: + repo_id = self._concept_id(concept_name) + dest = self._concept_path(concept_name) + + access_token = HfFolder.get_token() + header = [("Authorization", f'Bearer {access_token}')] if access_token else [] + opener = request.build_opener() + opener.addheaders = header + request.install_opener(opener) + + os.makedirs(dest, exist_ok=True) + succeeded = True + + bytes = 0 + def tally_download_size(chunk, size, total): + nonlocal bytes + if chunk==0: + bytes += total + + print(f'>> Downloading {repo_id}...',end='') + try: + for file in ('README.md','learned_embeds.bin','token_identifier.txt','type_of_concept.txt'): + url = hf_hub_url(repo_id, file) + request.urlretrieve(url, os.path.join(dest,file),reporthook=tally_download_size) + except ul_error.HTTPError as e: + if e.code==404: + print(f'This concept is not known to the Hugging Face library. Generation will continue without the concept.') + else: + print(f'Failed to download {concept_name}/{file} ({str(e)}. Generation will continue without the concept.)') + os.rmdir(dest) + return False + except ul_error.URLError as e: + print(f'ERROR: {str(e)}. This may reflect a network issue. Generation will continue without the concept.') + os.rmdir(dest) + return False + print('...{:.2f}Kb'.format(bytes/1024)) + return succeeded + + def _concept_id(self, concept_name:str)->str: + return f'sd-concepts-library/{concept_name}' + + def _concept_path(self, concept_name:str)->str: + return os.path.join(self.root,'models','sd-concepts-library',concept_name) diff --git a/ldm/invoke/conditioning.py b/ldm/invoke/conditioning.py index ba0dd84275..54092578a1 100644 --- a/ldm/invoke/conditioning.py +++ b/ldm/invoke/conditioning.py @@ -14,7 +14,7 @@ import torch from .prompt_parser import PromptParser, Blend, FlattenedPrompt, \ CrossAttentionControlledFragment, CrossAttentionControlSubstitute, Fragment, log_tokenization -from ..models.diffusion.cross_attention_control import CrossAttentionControl +from ..models.diffusion import cross_attention_control from ..models.diffusion.shared_invokeai_diffusion import InvokeAIDiffuserComponent from ..modules.encoders.modules import WeightedFrozenCLIPEmbedder @@ -47,9 +47,12 @@ def get_uc_and_c_and_ec(prompt_string_uncleaned, model, log_tokens=False, skip_n parsed_prompt = pp.parse_conjunction(prompt_string_cleaned).prompts[0] parsed_negative_prompt: FlattenedPrompt = pp.parse_conjunction(unconditioned_words).prompts[0] + if log_tokens: + print(f">> Parsed prompt to {parsed_prompt}") + print(f">> Parsed negative prompt to {parsed_negative_prompt}") conditioning = None - cac_args:CrossAttentionControl.Arguments = None + cac_args:cross_attention_control.Arguments = None if type(parsed_prompt) is Blend: blend: Blend = parsed_prompt @@ -120,7 +123,7 @@ def get_uc_and_c_and_ec(prompt_string_uncleaned, model, log_tokens=False, skip_n conditioning = original_embeddings edited_conditioning = edited_embeddings #print('>> got edit_opcodes', edit_opcodes, 'options', edit_options) - cac_args = CrossAttentionControl.Arguments( + cac_args = cross_attention_control.Arguments( edited_conditioning = edited_conditioning, edit_opcodes = edit_opcodes, edit_options = edit_options diff --git a/ldm/invoke/generator/base.py b/ldm/invoke/generator/base.py index 003ac1b466..ba3172e9dc 100644 --- a/ldm/invoke/generator/base.py +++ b/ldm/invoke/generator/base.py @@ -6,9 +6,11 @@ import torch import numpy as np import random import os +import os.path as osp import traceback from tqdm import tqdm, trange -from PIL import Image, ImageFilter +from PIL import Image, ImageFilter, ImageChops +import cv2 as cv from einops import rearrange, repeat from pytorch_lightning import seed_everything from ldm.invoke.devices import choose_autocast @@ -31,6 +33,7 @@ class Generator(): self.with_variations = [] self.use_mps_noise = False self.free_gpu_mem = None + self.caution_img = None # this is going to be overridden in img2img.py, txt2img.py and inpaint.py def get_make_image(self,prompt,**kwargs): @@ -118,6 +121,58 @@ class Generator(): # write an approximate RGB image from latent samples for a single step to PNG + def repaste_and_color_correct(self, result: Image.Image, init_image: Image.Image, init_mask: Image.Image, mask_blur_radius: int = 8) -> Image.Image: + if init_image is None or init_mask is None: + return result + + # Get the original alpha channel of the mask if there is one. + # Otherwise it is some other black/white image format ('1', 'L' or 'RGB') + pil_init_mask = init_mask.getchannel('A') if init_mask.mode == 'RGBA' else init_mask.convert('L') + pil_init_image = init_image.convert('RGBA') # Add an alpha channel if one doesn't exist + + # Build an image with only visible pixels from source to use as reference for color-matching. + init_rgb_pixels = np.asarray(init_image.convert('RGB'), dtype=np.uint8) + init_a_pixels = np.asarray(pil_init_image.getchannel('A'), dtype=np.uint8) + init_mask_pixels = np.asarray(pil_init_mask, dtype=np.uint8) + + # Get numpy version of result + np_image = np.asarray(result, dtype=np.uint8) + + # Mask and calculate mean and standard deviation + mask_pixels = init_a_pixels * init_mask_pixels > 0 + np_init_rgb_pixels_masked = init_rgb_pixels[mask_pixels, :] + np_image_masked = np_image[mask_pixels, :] + + if np_init_rgb_pixels_masked.size > 0: + init_means = np_init_rgb_pixels_masked.mean(axis=0) + init_std = np_init_rgb_pixels_masked.std(axis=0) + gen_means = np_image_masked.mean(axis=0) + gen_std = np_image_masked.std(axis=0) + + # Color correct + np_matched_result = np_image.copy() + np_matched_result[:,:,:] = (((np_matched_result[:,:,:].astype(np.float32) - gen_means[None,None,:]) / gen_std[None,None,:]) * init_std[None,None,:] + init_means[None,None,:]).clip(0, 255).astype(np.uint8) + matched_result = Image.fromarray(np_matched_result, mode='RGB') + else: + matched_result = Image.fromarray(np_image, mode='RGB') + + # Blur the mask out (into init image) by specified amount + if mask_blur_radius > 0: + nm = np.asarray(pil_init_mask, dtype=np.uint8) + nmd = cv.erode(nm, kernel=np.ones((3,3), dtype=np.uint8), iterations=int(mask_blur_radius / 2)) + pmd = Image.fromarray(nmd, mode='L') + blurred_init_mask = pmd.filter(ImageFilter.BoxBlur(mask_blur_radius)) + else: + blurred_init_mask = pil_init_mask + + multiplied_blurred_init_mask = ImageChops.multiply(blurred_init_mask, self.pil_image.split()[-1]) + + # Paste original on color-corrected generation (using blurred mask) + matched_result.paste(init_image, (0,0), mask = multiplied_blurred_init_mask) + return matched_result + + + def sample_to_lowres_estimated_image(self,samples): # origingally adapted from code by @erucipe and @keturn here: # https://discuss.huggingface.co/t/decoding-latents-to-rgb-without-upscaling/23204/7 @@ -237,13 +292,29 @@ class Generator(): def blur(self,input): blurry = input.filter(filter=ImageFilter.GaussianBlur(radius=32)) try: - caution = Image.open(CAUTION_IMG) - caution = caution.resize((caution.width // 2, caution.height //2)) - blurry.paste(caution,(0,0),caution) + caution = self.get_caution_img() + if caution: + blurry.paste(caution,(0,0),caution) except FileNotFoundError: pass return blurry + def get_caution_img(self): + if self.caution_img: + return self.caution_img + # Find the caution image. If we are installed in the package directory it will + # be six levels up. If we are in the repo directory it will be three levels up. + for dots in ('../../..','../../../../../..'): + caution_path = osp.join(osp.dirname(__file__),dots,CAUTION_IMG) + if osp.exists(caution_path): + path = caution_path + break + if not path: + return + caution = Image.open(path) + self.caution_img = caution.resize((caution.width // 2, caution.height //2)) + return self.caution_img + # this is a handy routine for debugging use. Given a generated sample, # convert it into a PNG image and store it at the indicated path def save_sample(self, sample, filepath): diff --git a/ldm/invoke/generator/inpaint.py b/ldm/invoke/generator/inpaint.py index d1f79b934f..7798ed00c5 100644 --- a/ldm/invoke/generator/inpaint.py +++ b/ldm/invoke/generator/inpaint.py @@ -8,7 +8,7 @@ import torchvision.transforms as T import numpy as np import cv2 as cv import PIL -from PIL import Image, ImageFilter, ImageOps +from PIL import Image, ImageFilter, ImageOps, ImageChops from skimage.exposure.histogram_matching import match_histograms from einops import rearrange, repeat from ldm.invoke.devices import choose_autocast @@ -16,6 +16,23 @@ from ldm.invoke.generator.img2img import Img2Img from ldm.models.diffusion.ddim import DDIMSampler from ldm.models.diffusion.ksampler import KSampler from ldm.invoke.generator.base import downsampling +from ldm.util import debug_image +from ldm.invoke.globals import Globals + +infill_methods: list[str] = list() + +if Globals.try_patchmatch: + from patchmatch import patch_match + if patch_match.patchmatch_available: + print('>> Patchmatch initialized') + infill_methods.append('patchmatch') + else: + print('>> Patchmatch not loaded, please see https://github.com/invoke-ai/InvokeAI/blob/patchmatch-install-docs/docs/installation/INSTALL_PATCHMATCH.md') +else: + print('>> Patchmatch loading disabled') + +infill_methods.append('tile') + class Inpaint(Img2Img): def __init__(self, model, precision): @@ -42,6 +59,19 @@ class Inpaint(Img2Img): writeable=False ) + def infill_patchmatch(self, im: Image.Image) -> Image: + if im.mode != 'RGBA': + return im + + # Skip patchmatch if patchmatch isn't available + if not patch_match.patchmatch_available: + return im + + # Patchmatch (note, we may want to expose patch_size? Increasing it significantly impacts performance though) + im_patched_np = patch_match.inpaint(im.convert('RGB'), ImageOps.invert(im.split()[-1]), patch_size = 3) + im_patched = Image.fromarray(im_patched_np, mode = 'RGB') + return im_patched + def tile_fill_missing(self, im: Image.Image, tile_size: int = 16, seed: int = None) -> Image: # Only fill if there's an alpha layer if im.mode != 'RGBA': @@ -115,7 +145,8 @@ class Inpaint(Img2Img): seam_blur: int, prompt,sampler,steps,cfg_scale,ddim_eta, conditioning,strength, - noise + noise, + step_callback ) -> Image.Image: hard_mask = self.pil_image.split()[-1].copy() mask = self.mask_edge(hard_mask, seam_size, seam_blur) @@ -131,10 +162,15 @@ class Inpaint(Img2Img): mask_image = mask.convert('RGB'), # Code currently requires an RGB mask strength = strength, mask_blur_radius = 0, - seam_size = 0 + seam_size = 0, + step_callback = step_callback, + inpaint_width = im.width, + inpaint_height = im.height ) - result = make_image(noise) + seam_noise = self.get_noise(im.width, im.height) + + result = make_image(seam_noise) return result @@ -150,7 +186,8 @@ class Inpaint(Img2Img): seam_steps: int = 10, tile_size: int = 32, step_callback=None, - inpaint_replace=False, + inpaint_replace=False, enable_image_debugging=False, + infill_method = infill_methods[0], # The infill method to use inpaint_width=None, inpaint_height=None, **kwargs): @@ -160,35 +197,46 @@ class Inpaint(Img2Img): the time you call it. kwargs are 'init_latent' and 'strength' """ + self.enable_image_debugging = enable_image_debugging + self.inpaint_width = inpaint_width self.inpaint_height = inpaint_height if isinstance(init_image, PIL.Image.Image): - self.pil_image = init_image + self.pil_image = init_image.copy() - # Fill missing areas of original image - init_filled = self.tile_fill_missing( - self.pil_image.copy(), - seed = self.seed if (self.seed is not None - and self.seed >= 0) else self.new_seed(), - tile_size = tile_size - ) + # Do infill + if infill_method == 'patchmatch' and patch_match.patchmatch_available: + init_filled = self.infill_patchmatch(self.pil_image.copy()) + else: # if infill_method == 'tile': # Only two methods right now, so always use 'tile' if not patchmatch + init_filled = self.tile_fill_missing( + self.pil_image.copy(), + seed = self.seed, + tile_size = tile_size + ) init_filled.paste(init_image, (0,0), init_image.split()[-1]) # Resize if requested for inpainting if inpaint_width and inpaint_height: init_filled = init_filled.resize((inpaint_width, inpaint_height)) + debug_image(init_filled, "init_filled", debug_status=self.enable_image_debugging) + # Create init tensor init_image = self._image_to_tensor(init_filled.convert('RGB')) if isinstance(mask_image, PIL.Image.Image): + self.pil_mask = mask_image.copy() + debug_image(mask_image, "mask_image BEFORE multiply with pil_image", debug_status=self.enable_image_debugging) + + mask_image = ImageChops.multiply(mask_image, self.pil_image.split()[-1].convert('RGB')) self.pil_mask = mask_image # Resize if requested for inpainting if inpaint_width and inpaint_height: mask_image = mask_image.resize((inpaint_width, inpaint_height)) + debug_image(mask_image, "mask_image AFTER multiply with pil_image", debug_status=self.enable_image_debugging) mask_image = mask_image.resize( ( mask_image.width // downsampling, @@ -259,6 +307,9 @@ class Inpaint(Img2Img): # Seam paint if this is our first pass (seam_size set to 0 during seam painting) if seam_size > 0: + old_image = self.pil_image or init_image + old_mask = self.pil_mask or mask_image + result = self.seam_paint( result, seam_size, @@ -270,58 +321,31 @@ class Inpaint(Img2Img): ddim_eta, conditioning, seam_strength, - x_T) + x_T, + step_callback) + + # Restore original settings + self.get_make_image(prompt,sampler,steps,cfg_scale,ddim_eta, + conditioning, + old_image, + old_mask, + strength, + mask_blur_radius, seam_size, seam_blur, seam_strength, + seam_steps, tile_size, step_callback, + inpaint_replace, enable_image_debugging, + inpaint_width = inpaint_width, + inpaint_height = inpaint_height, + infill_method = infill_method, + **kwargs) return result return make_image - def color_correct(self, image: Image.Image, base_image: Image.Image, mask: Image.Image, mask_blur_radius: int) -> Image.Image: - # Get the original alpha channel of the mask if there is one. - # Otherwise it is some other black/white image format ('1', 'L' or 'RGB') - pil_init_mask = mask.getchannel('A') if mask.mode == 'RGBA' else mask.convert('L') - pil_init_image = base_image.convert('RGBA') # Add an alpha channel if one doesn't exist - - # Build an image with only visible pixels from source to use as reference for color-matching. - init_rgb_pixels = np.asarray(base_image.convert('RGB'), dtype=np.uint8) - init_a_pixels = np.asarray(pil_init_image.getchannel('A'), dtype=np.uint8) - init_mask_pixels = np.asarray(pil_init_mask, dtype=np.uint8) - - # Get numpy version of result - np_image = np.asarray(image, dtype=np.uint8) - - # Mask and calculate mean and standard deviation - mask_pixels = init_a_pixels * init_mask_pixels > 0 - np_init_rgb_pixels_masked = init_rgb_pixels[mask_pixels, :] - np_image_masked = np_image[mask_pixels, :] - - init_means = np_init_rgb_pixels_masked.mean(axis=0) - init_std = np_init_rgb_pixels_masked.std(axis=0) - gen_means = np_image_masked.mean(axis=0) - gen_std = np_image_masked.std(axis=0) - - # Color correct - np_matched_result = np_image.copy() - np_matched_result[:,:,:] = (((np_matched_result[:,:,:].astype(np.float32) - gen_means[None,None,:]) / gen_std[None,None,:]) * init_std[None,None,:] + init_means[None,None,:]).clip(0, 255).astype(np.uint8) - matched_result = Image.fromarray(np_matched_result, mode='RGB') - - # Blur the mask out (into init image) by specified amount - if mask_blur_radius > 0: - nm = np.asarray(pil_init_mask, dtype=np.uint8) - nmd = cv.erode(nm, kernel=np.ones((3,3), dtype=np.uint8), iterations=int(mask_blur_radius / 2)) - pmd = Image.fromarray(nmd, mode='L') - blurred_init_mask = pmd.filter(ImageFilter.BoxBlur(mask_blur_radius)) - else: - blurred_init_mask = pil_init_mask - - # Paste original on color-corrected generation (using blurred mask) - matched_result.paste(base_image, (0,0), mask = blurred_init_mask) - return matched_result - - def sample_to_image(self, samples)->Image.Image: gen_result = super().sample_to_image(samples).convert('RGB') + debug_image(gen_result, "gen_result", debug_status=self.enable_image_debugging) # Resize if necessary if self.inpaint_width and self.inpaint_height: @@ -330,6 +354,7 @@ class Inpaint(Img2Img): if self.pil_image is None or self.pil_mask is None: return gen_result - corrected_result = self.color_correct(gen_result, self.pil_image, self.pil_mask, self.mask_blur_radius) + corrected_result = super().repaste_and_color_correct(gen_result, self.pil_image, self.pil_mask, self.mask_blur_radius) + debug_image(corrected_result, "corrected_result", debug_status=self.enable_image_debugging) return corrected_result diff --git a/ldm/invoke/generator/omnibus.py b/ldm/invoke/generator/omnibus.py index e8426a9205..277e897021 100644 --- a/ldm/invoke/generator/omnibus.py +++ b/ldm/invoke/generator/omnibus.py @@ -3,7 +3,7 @@ import torch import numpy as np from einops import repeat -from PIL import Image, ImageOps +from PIL import Image, ImageOps, ImageChops from ldm.invoke.devices import choose_autocast from ldm.invoke.generator.base import downsampling from ldm.invoke.generator.img2img import Img2Img @@ -12,6 +12,8 @@ from ldm.invoke.generator.txt2img import Txt2Img class Omnibus(Img2Img,Txt2Img): def __init__(self, model, precision): super().__init__(model, precision) + self.pil_mask = None + self.pil_image = None def get_make_image( self, @@ -29,6 +31,7 @@ class Omnibus(Img2Img,Txt2Img): step_callback=None, threshold=0.0, perlin=0.0, + mask_blur_radius: int = 8, **kwargs): """ Returns a function returning an image derived from the prompt and the initial image @@ -42,12 +45,18 @@ class Omnibus(Img2Img,Txt2Img): ) if isinstance(init_image, Image.Image): + self.pil_image = init_image if init_image.mode != 'RGB': init_image = init_image.convert('RGB') init_image = self._image_to_tensor(init_image) if isinstance(mask_image, Image.Image): - mask_image = self._image_to_tensor(ImageOps.invert(mask_image).convert('L'),normalize=False) + self.pil_mask = mask_image + + mask_image = ImageChops.multiply(mask_image.convert('L'), self.pil_image.split()[-1]) + mask_image = self._image_to_tensor(ImageOps.invert(mask_image), normalize=False) + + self.mask_blur_radius = mask_blur_radius t_enc = steps @@ -151,3 +160,14 @@ class Omnibus(Img2Img,Txt2Img): height = self.init_latent.shape[2] width = self.init_latent.shape[3] return Txt2Img.get_noise(self,width,height) + + + def sample_to_image(self, samples)->Image.Image: + gen_result = super().sample_to_image(samples).convert('RGB') + + if self.pil_image is None or self.pil_mask is None: + return gen_result + + corrected_result = super(Img2Img, self).repaste_and_color_correct(gen_result, self.pil_image, self.pil_mask, self.mask_blur_radius) + + return corrected_result diff --git a/ldm/invoke/globals.py b/ldm/invoke/globals.py new file mode 100644 index 0000000000..9989fe82f5 --- /dev/null +++ b/ldm/invoke/globals.py @@ -0,0 +1,24 @@ +''' +ldm.invoke.globals defines a small number of global variables that would +otherwise have to be passed through long and complex call chains. + +It defines a Namespace object named "Globals" that contains +the attributes: + + - root - the root directory under which "models" and "outputs" can be found +''' + +import os +from argparse import Namespace + +Globals = Namespace() + +# This is usually overwritten by the command line and/or environment variables +Globals.root = '.' + +# Where to look for the initialization file +Globals.initfile = os.path.expanduser('~/.invokeai') + +# Awkward workaround to disable attempted loading of pypatchmatch +# which is causing CI tests to error out. +Globals.try_patchmatch = True diff --git a/ldm/invoke/image_util.py b/ldm/invoke/image_util.py index 2ec7b55834..46cdf41184 100644 --- a/ldm/invoke/image_util.py +++ b/ldm/invoke/image_util.py @@ -31,10 +31,10 @@ class InitImageResizer(): elif not width: # width missing width = int(height*ar) - # rw and rh are the resizing width and height for the image - # they maintain the aspect ratio, but may not completelyl fill up - # the requested destination size - (rw,rh) = (width,int(width/ar)) if im.width>=im.height else (int(height*ar),height) + w_scale = width/im.width + h_scale = height/im.height + scale = min(w_scale,h_scale) + (rw,rh) = (int(scale*im.width),int(scale*im.height)) #round everything to multiples of 64 width,height,rw,rh = map( diff --git a/ldm/invoke/model_cache.py b/ldm/invoke/model_cache.py index 27e4adc0be..7d1654718a 100644 --- a/ldm/invoke/model_cache.py +++ b/ldm/invoke/model_cache.py @@ -12,13 +12,17 @@ import time import gc import hashlib import psutil +import sys import transformers import traceback -import os -from sys import getrefcount +import textwrap +import contextlib +from typing import Union from omegaconf import OmegaConf from omegaconf.errors import ConfigAttributeError -from ldm.util import instantiate_from_config +from ldm.util import instantiate_from_config, ask_user +from ldm.invoke.globals import Globals +from picklescan.scanner import scan_file_path DEFAULT_MAX_MODELS=2 @@ -70,20 +74,24 @@ class ModelCache(object): width = self.models[model_name]['width'] height = self.models[model_name]['height'] hash = self.models[model_name]['hash'] + else: # we're about to load a new model, so potentially offload the least recently used one try: requested_model, width, height, hash = self._load_model(model_name) - self.models[model_name] = {} - self.models[model_name]['model'] = requested_model - self.models[model_name]['width'] = width - self.models[model_name]['height'] = height - self.models[model_name]['hash'] = hash + self.models[model_name] = { + 'model': requested_model, + 'width': width, + 'height': height, + 'hash': hash, + } + except Exception as e: print(f'** model {model_name} could not be loaded: {str(e)}') print(traceback.format_exc()) + assert self.current_model,'** FATAL: no current model to restore to' print(f'** restoring {self.current_model}') self.get_model(self.current_model) - return None + return self.current_model = model_name self._push_newest_model(model_name) @@ -100,22 +108,20 @@ class ModelCache(object): if none is defined. ''' for model_name in self.config: - if self.config[model_name].get('default',False): + if self.config[model_name].get('default'): return model_name - return None - def set_default_model(self,model_name:str): + def set_default_model(self,model_name:str) -> None: ''' Set the default model. The change will not take effect until you call model_cache.commit() ''' - print(f'DEBUG: before set_default_model()\n{OmegaConf.to_yaml(self.config)}') assert model_name in self.models,f"unknown model '{model_name}'" + config = self.config for model in config: config[model].pop('default',None) config[model_name]['default'] = True - print(f'DEBUG: after set_default_model():\n{OmegaConf.to_yaml(self.config)}') def list_models(self) -> dict: ''' @@ -125,24 +131,27 @@ class ModelCache(object): }, model_name2: { etc } ''' - result = {} + models = {} for name in self.config: try: description = self.config[name].description except ConfigAttributeError: description = '' + if self.current_model == name: status = 'active' elif name in self.models: status = 'cached' else: status = 'not loaded' - result[name]={} - result[name]['status']=status - result[name]['description']=description - return result - - def print_models(self): + + models[name]={ + 'status' : status, + 'description' : description + } + return models + + def print_models(self) -> None: ''' Print a table of models, their descriptions, and load status ''' @@ -150,11 +159,10 @@ class ModelCache(object): for name in models: line = f'{name:25s} {models[name]["status"]:>10s} {models[name]["description"]}' if models[name]['status'] == 'active': - print(f'\033[1m{line}\033[0m') - else: - print(line) + line = f'\033[1m{line}\033[0m' + print(line) - def del_model(self, model_name:str) ->bool: + def del_model(self, model_name:str) -> None: ''' Delete the named model. ''' @@ -162,9 +170,8 @@ class ModelCache(object): del omega[model_name] if model_name in self.stack: self.stack.remove(model_name) - return True - def add_model(self, model_name:str, model_attributes:dict, clobber=False) ->True: + def add_model(self, model_name:str, model_attributes:dict, clobber=False) -> None: ''' Update the named model with a dictionary of attributes. Will fail with an assertion error if the name already exists. Pass clobber=True to overwrite. @@ -173,11 +180,10 @@ class ModelCache(object): attributes are incorrect or the model name is missing. ''' omega = self.config - # check that all the required fields are present for field in ('description','weights','height','width','config'): assert field in model_attributes, f'required field {field} is missing' - assert (clobber or model_name not in omega), f'attempt to overwrite existing model definition "{model_name}"' + config = omega[model_name] if model_name in omega else {} for field in model_attributes: config[field] = model_attributes[field] @@ -185,21 +191,24 @@ class ModelCache(object): omega[model_name] = config if clobber: self._invalidate_cached_model(model_name) - return True def _load_model(self, model_name:str): """Load and initialize the model from configuration variables passed at object creation time""" if model_name not in self.config: print(f'"{model_name}" is not a known model name. Please check your models.yaml file') - return None mconfig = self.config[model_name] config = mconfig.config weights = mconfig.weights - vae = mconfig.get('vae',None) + vae = mconfig.get('vae') width = mconfig.width height = mconfig.height + if not os.path.isabs(weights): + weights = os.path.normpath(os.path.join(Globals.root,weights)) + # scan model + self.scan_model(model_name, weights) + print(f'>> Loading {model_name} from {weights}') # for usage statistics @@ -210,15 +219,17 @@ class ModelCache(object): tic = time.time() # this does the work - c = OmegaConf.load(config) + if not os.path.isabs(config): + config = os.path.join(Globals.root,config) + omega_config = OmegaConf.load(config) with open(weights,'rb') as f: weight_bytes = f.read() model_hash = self._cached_sha256(weights,weight_bytes) - pl_sd = torch.load(io.BytesIO(weight_bytes), map_location='cpu') + sd = torch.load(io.BytesIO(weight_bytes), map_location='cpu') del weight_bytes - sd = pl_sd['state_dict'] - model = instantiate_from_config(c.model) - m, u = model.load_state_dict(sd, strict=False) + sd = sd['state_dict'] + model = instantiate_from_config(omega_config.model) + model.load_state_dict(sd, strict=False) if self.precision == 'float16': print(' | Using faster float16 precision') @@ -228,6 +239,8 @@ class ModelCache(object): # look and load a matching vae file. Code borrowed from AUTOMATIC1111 modules/sd_models.py if vae: + if not os.path.isabs(vae): + vae = os.path.normpath(os.path.join(Globals.root,vae)) if os.path.exists(vae): print(f' | Loading VAE weights from: {vae}') vae_ckpt = torch.load(vae, map_location="cpu") @@ -242,13 +255,14 @@ class ModelCache(object): model.eval() - for m in model.modules(): - if isinstance(m, (torch.nn.Conv2d, torch.nn.ConvTranspose2d)): - m._orig_padding_mode = m.padding_mode + for module in model.modules(): + if isinstance(module, (torch.nn.Conv2d, torch.nn.ConvTranspose2d)): + module._orig_padding_mode = module.padding_mode # usage statistics toc = time.time() print(f'>> Model loaded in', '%4.2fs' % (toc - tic)) + if self._has_cuda(): print( '>> Max VRAM used to load the model:', @@ -256,27 +270,47 @@ class ModelCache(object): '\n>> Current VRAM usage:' '%4.2fG' % (torch.cuda.memory_allocated() / 1e9), ) + return model, width, height, model_hash - def offload_model(self, model_name:str): + def offload_model(self, model_name:str) -> None: ''' Offload the indicated model to CPU. Will call _make_cache_room() to free space if needed. ''' - if model_name not in self.models: return - message = f'>> Offloading {model_name} to CPU' - print(message) + print(f'>> Offloading {model_name} to CPU') model = self.models[model_name]['model'] self.models[model_name]['model'] = self._model_to_cpu(model) gc.collect() if self._has_cuda(): torch.cuda.empty_cache() + + def scan_model(self, model_name, checkpoint): + # scan model + print(f'>> Scanning Model: {model_name}') + scan_result = scan_file_path(checkpoint) + if scan_result.infected_files != 0: + if scan_result.infected_files == 1: + print(f'\n### Issues Found In Model: {scan_result.issues_count}') + print('### WARNING: The model you are trying to load seems to be infected.') + print('### For your safety, InvokeAI will not load this model.') + print('### Please use checkpoints from trusted sources.') + print("### Exiting InvokeAI") + sys.exit() + else: + print('\n### WARNING: InvokeAI was unable to scan the model you are using.') + model_safe_check_fail = ask_user('Do you want to to continue loading the model?', ['y', 'n']) + if model_safe_check_fail.lower() != 'y': + print("### Exiting InvokeAI") + sys.exit() + else: + print('>> Model Scanned. OK!!') - def _make_cache_room(self): + def _make_cache_room(self) -> None: num_loaded_models = len(self.models) if num_loaded_models >= self.max_loaded_models: least_recent_model = self._pop_oldest_model() @@ -285,11 +319,11 @@ class ModelCache(object): del self.models[least_recent_model] gc.collect() - def print_vram_usage(self): + def print_vram_usage(self) -> None: if self._has_cuda: - print ('>> Current VRAM usage: ','%4.2fG' % (torch.cuda.memory_allocated() / 1e9)) + print('>> Current VRAM usage: ','%4.2fG' % (torch.cuda.memory_allocated() / 1e9)) - def commit(self,config_file_path:str): + def commit(self,config_file_path:str) -> None: ''' Write current configuration out to the indicated file. ''' @@ -300,20 +334,21 @@ class ModelCache(object): outfile.write(yaml_str) os.replace(tmpfile,config_file_path) - def preamble(self): + def preamble(self) -> str: ''' Returns the preamble for the config file. ''' - return '''# This file describes the alternative machine learning models -# available to InvokeAI script. -# -# To add a new model, follow the examples below. Each -# model requires a model config file, a weights file, -# and the width and height of the images it -# was trained on. -''' + return textwrap.dedent('''\ + # This file describes the alternative machine learning models + # available to InvokeAI script. + # + # To add a new model, follow the examples below. Each + # model requires a model config file, a weights file, + # and the width and height of the images it + # was trained on. + ''') - def _invalidate_cached_model(self,model_name:str): + def _invalidate_cached_model(self,model_name:str) -> None: self.offload_model(model_name) if model_name in self.stack: self.stack.remove(model_name) @@ -345,29 +380,29 @@ class ModelCache(object): ''' return self.stack.pop(0) - def _push_newest_model(self,model_name:str): + def _push_newest_model(self,model_name:str) -> None: ''' Maintain a simple FIFO. First element is always the least recent, and last element is always the most recent. ''' - try: + with contextlib.suppress(ValueError): self.stack.remove(model_name) - except ValueError: - pass self.stack.append(model_name) - def _has_cuda(self): + def _has_cuda(self) -> bool: return self.device.type == 'cuda' - def _cached_sha256(self,path,data): + def _cached_sha256(self,path,data) -> Union[str, bytes]: dirname = os.path.dirname(path) basename = os.path.basename(path) base, _ = os.path.splitext(basename) hashpath = os.path.join(dirname,base+'.sha256') + if os.path.exists(hashpath) and os.path.getmtime(path) <= os.path.getmtime(hashpath): with open(hashpath) as f: hash = f.read() return hash + print(f'>> Calculating sha256 hash of weights file') tic = time.time() sha = hashlib.sha256() @@ -375,6 +410,7 @@ class ModelCache(object): hash = sha.hexdigest() toc = time.time() print(f'>> sha256 = {hash}','(%4.2fs)' % (toc - tic)) + with open(hashpath,'w') as f: f.write(hash) return hash diff --git a/ldm/invoke/prompt_parser.py b/ldm/invoke/prompt_parser.py index 42c83188aa..3e26dcca89 100644 --- a/ldm/invoke/prompt_parser.py +++ b/ldm/invoke/prompt_parser.py @@ -646,13 +646,13 @@ def split_weighted_subprompts(text, skip_normalize=False)->list: # usually tokens have '' to indicate end-of-word, # but for readability it has been replaced with ' ' def log_tokenization(text, model, display_label=None): - tokens = model.cond_stage_model.tokenizer._tokenize(text) + tokens = model.cond_stage_model.tokenizer.tokenize(text) tokenized = "" discarded = "" usedTokens = 0 totalTokens = len(tokens) for i in range(0, totalTokens): - token = tokens[i].replace('', 'x` ') + token = tokens[i].replace('', ' ') # alternate color s = (usedTokens % 6) + 1 if i < model.cond_stage_model.max_length: diff --git a/ldm/invoke/readline.py b/ldm/invoke/readline.py index 4e95e9b063..330f1fb2a4 100644 --- a/ldm/invoke/readline.py +++ b/ldm/invoke/readline.py @@ -12,12 +12,15 @@ import os import re import atexit from ldm.invoke.args import Args +from ldm.invoke.concepts_lib import Concepts +from ldm.invoke.globals import Globals # ---------------readline utilities--------------------- try: import readline readline_available = True -except (ImportError,ModuleNotFoundError): +except (ImportError,ModuleNotFoundError) as e: + print(f'** An error occurred when loading the readline module: {str(e)}') readline_available = False IMG_EXTENSIONS = ('.png','.jpg','.jpeg','.PNG','.JPG','.JPEG','.gif','.GIF') @@ -83,6 +86,7 @@ IMG_FILE_COMMANDS=( '--init_color[=\s]', '--embedding_path[=\s]', ) + path_regexp = '(' + '|'.join(IMG_PATH_COMMANDS+IMG_FILE_COMMANDS) + ')\s*\S*$' weight_regexp = '(' + '|'.join(WEIGHT_COMMANDS) + ')\s*\S*$' text_regexp = '(' + '|'.join(TEXT_PATH_COMMANDS) + ')\s*\S*$' @@ -97,6 +101,7 @@ class Completer(object): self.linebuffer = None self.auto_history_active = True self.extensions = None + self.concepts = Concepts().list_concepts() return def complete(self, text, state): @@ -121,12 +126,20 @@ class Completer(object): elif re.search('(-S\s*|--seed[=\s])\d*$',buffer): self.matches= self._seed_completions(text,state) + elif re.search('<[\w-]*$',buffer): + self.matches= self._concept_completions(text,state) + # looking for a model elif re.match('^'+'|'.join(MODEL_COMMANDS),buffer): self.matches= self._model_completions(text, state) elif re.search(weight_regexp,buffer): - self.matches = self._path_completions(text, state, WEIGHT_EXTENSIONS) + self.matches = self._path_completions( + text, + state, + WEIGHT_EXTENSIONS, + default_dir=Globals.root, + ) elif re.search(text_regexp,buffer): self.matches = self._path_completions(text, state, TEXT_EXTENSIONS) @@ -187,6 +200,9 @@ class Completer(object): def set_default_dir(self, path): self.default_dir=path + def set_options(self,options): + self.options = options + def get_line(self,index): try: line = self.get_history_item(index) @@ -253,6 +269,22 @@ class Completer(object): matches.sort() return matches + def add_embedding_terms(self, terms:list[str]): + self.concepts = Concepts().list_concepts() + self.concepts.extend(terms) + + def _concept_completions(self, text, state): + partial = text[1:] # this removes the leading '<' + if len(partial) == 0: + return self.concepts # whole dump - think if user wants this! + + matches = list() + for concept in self.concepts: + if concept.startswith(partial): + matches.append(f'<{concept}>') + matches.sort() + return matches + def _model_completions(self, text, state): m = re.search('(!switch\s+)(\w*)',text) if m: @@ -274,7 +306,7 @@ class Completer(object): readline.redisplay() self.linebuffer = None - def _path_completions(self, text, state, extensions, shortcut_ok=True): + def _path_completions(self, text, state, extensions, shortcut_ok=True, default_dir:str=''): # separate the switch from the partial path match = re.search('^(-\w|--\w+=?)(.*)',text) if match is None: @@ -282,8 +314,8 @@ class Completer(object): partial_path = text else: switch,partial_path = match.groups() - partial_path = partial_path.lstrip() + partial_path = partial_path.lstrip() matches = list() path = os.path.expanduser(partial_path) @@ -293,7 +325,7 @@ class Completer(object): elif os.path.dirname(path) != '': dir = os.path.dirname(path) else: - dir = '' + dir = default_dir if os.path.exists(default_dir) else '' path= os.path.join(dir,path) dir_list = os.listdir(dir or '.') @@ -308,7 +340,7 @@ class Completer(object): if not (node.endswith(extensions) or os.path.isdir(full_path)): continue - if not full_path.startswith(path): + if path and not full_path.startswith(path): continue if switch is None: @@ -348,6 +380,21 @@ class DummyCompleter(Completer): def set_line(self,line): print(f'# {line}') +def generic_completer(commands:list)->Completer: + if readline_available: + completer = Completer(commands,[]) + readline.set_completer(completer.complete) + readline.set_pre_input_hook(completer._pre_input_hook) + readline.set_completer_delims(' ') + readline.parse_and_bind('tab: complete') + readline.parse_and_bind('set print-completions-horizontally off') + readline.parse_and_bind('set page-completions on') + readline.parse_and_bind('set skip-completed-text on') + readline.parse_and_bind('set show-all-if-ambiguous on') + else: + completer = DummyCompleter(commands) + return completer + def get_completer(opt:Args, models=[])->Completer: if readline_available: completer = Completer(COMMANDS,models) @@ -375,6 +422,10 @@ def get_completer(opt:Args, models=[])->Completer: readline.set_history_length(1000) except FileNotFoundError: pass + except OSError: # file likely corrupted + newname = f'{histfile}.old' + print(f'## Your history file {histfile} couldn\'t be loaded and may be corrupted. Renaming it to {newname}') + os.replace(histfile,newname) atexit.register(readline.write_history_file, histfile) else: diff --git a/ldm/invoke/restoration/codeformer.py b/ldm/invoke/restoration/codeformer.py index 325f1b1d94..2620e0e8af 100644 --- a/ldm/invoke/restoration/codeformer.py +++ b/ldm/invoke/restoration/codeformer.py @@ -3,13 +3,18 @@ import torch import numpy as np import warnings import sys +from ldm.invoke.globals import Globals pretrained_model_url = 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth' class CodeFormerRestoration(): def __init__(self, - codeformer_dir='ldm/invoke/restoration/codeformer', - codeformer_model_path='weights/codeformer.pth') -> None: + codeformer_dir='models/codeformer', + codeformer_model_path='codeformer.pth') -> None: + + if not os.path.isabs(codeformer_dir): + codeformer_dir = os.path.join(Globals.root, codeformer_dir) + self.model_path = os.path.join(codeformer_dir, codeformer_model_path) self.codeformer_model_exists = os.path.isfile(self.model_path) @@ -33,9 +38,20 @@ class CodeFormerRestoration(): cf_class = CodeFormer - cf = cf_class(dim_embd=512, codebook_size=1024, n_head=8, n_layers=9, connect_list=['32', '64', '128', '256']).to(device) - - checkpoint_path = load_file_from_url(url=pretrained_model_url, model_dir=os.path.abspath('ldm/invoke/restoration/codeformer/weights'), progress=True) + cf = cf_class( + dim_embd=512, + codebook_size=1024, + n_head=8, + n_layers=9, + connect_list=['32', '64', '128', '256'] + ).to(device) + + # note that this file should already be downloaded and cached at + # this point + checkpoint_path = load_file_from_url(url=pretrained_model_url, + model_dir=os.path.abspath(os.path.dirname(self.model_path)), + progress=True + ) checkpoint = torch.load(checkpoint_path)['params_ema'] cf.load_state_dict(checkpoint) cf.eval() diff --git a/ldm/invoke/restoration/gfpgan.py b/ldm/invoke/restoration/gfpgan.py index 037b4eed5b..6e23afa909 100644 --- a/ldm/invoke/restoration/gfpgan.py +++ b/ldm/invoke/restoration/gfpgan.py @@ -3,6 +3,7 @@ import warnings import os import sys import numpy as np +from ldm.invoke.globals import Globals from PIL import Image @@ -10,18 +11,21 @@ from PIL import Image class GFPGAN(): def __init__( self, - gfpgan_model_path='./models/gfpgan/GFPGANv1.4.pth') -> None: - - self.model_path = os.path.join(gfpgan_model_path) + gfpgan_model_path='models/gfpgan/GFPGANv1.4.pth' + ) -> None: + + if not os.path.isabs(gfpgan_model_path): + gfpgan_model_path=os.path.abspath(os.path.join(Globals.root,gfpgan_model_path)) + self.model_path = gfpgan_model_path self.gfpgan_model_exists = os.path.isfile(self.model_path) - + if not self.gfpgan_model_exists: print('## NOT FOUND: GFPGAN model not found at ' + self.model_path) return None - + def model_exists(self): return os.path.isfile(self.model_path) - + def process(self, image, strength: float, seed: str = None): if seed is not None: print(f'>> GFPGAN - Restoring Faces for image seed:{seed}') diff --git a/ldm/invoke/restoration/outcrop.py b/ldm/invoke/restoration/outcrop.py index 2587bb5776..f0138c79cf 100644 --- a/ldm/invoke/restoration/outcrop.py +++ b/ldm/invoke/restoration/outcrop.py @@ -28,7 +28,7 @@ class Outcrop(object): self.generate._set_sampler() def wrapped_callback(img,seed,**kwargs): - preferred_seed = orig_opt.seed if orig_opt.seed >= 0 else seed + preferred_seed = orig_opt.seed if orig_opt.seed is not None and orig_opt.seed >= 0 else seed image_callback(img,preferred_seed,use_prefix=prefix,**kwargs) result= self.generate.prompt2image( diff --git a/ldm/invoke/restoration/realesrgan.py b/ldm/invoke/restoration/realesrgan.py index 4b83fcbb10..0a45eec69e 100644 --- a/ldm/invoke/restoration/realesrgan.py +++ b/ldm/invoke/restoration/realesrgan.py @@ -1,9 +1,11 @@ import torch import warnings import numpy as np +import os +from ldm.invoke.globals import Globals from PIL import Image - +from PIL.Image import Image as ImageType class ESRGAN(): def __init__(self, bg_tile_size=400) -> None: @@ -24,7 +26,7 @@ class ESRGAN(): from realesrgan import RealESRGANer model = SRVGGNetCompact(num_in_ch=3, num_out_ch=3, num_feat=64, num_conv=32, upscale=4, act_type='prelu') - model_path = 'https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth' + model_path = os.path.join(Globals.root,'models/realesrgan/realesr-general-x4v3.pth') scale = 4 bg_upsampler = RealESRGANer( @@ -39,7 +41,7 @@ class ESRGAN(): return bg_upsampler - def process(self, image, strength: float, seed: str = None, upsampler_scale: int = 2): + def process(self, image: ImageType, strength: float, seed: str = None, upsampler_scale: int = 2): with warnings.catch_warnings(): warnings.filterwarnings('ignore', category=DeprecationWarning) warnings.filterwarnings('ignore', category=UserWarning) @@ -60,7 +62,9 @@ class ESRGAN(): print( f'>> Real-ESRGAN Upscaling seed:{seed} : scale:{upsampler_scale}x' ) - + # ESRGAN outputs images with partial transparency if given RGBA images; convert to RGB + image = image.convert("RGB") + # REALSRGAN expects a BGR np array; make array and flip channels bgr_image_array = np.array(image, dtype=np.uint8)[...,::-1] diff --git a/ldm/invoke/server.py b/ldm/invoke/server.py index 4fe8303960..370e7a7c66 100644 --- a/ldm/invoke/server.py +++ b/ldm/invoke/server.py @@ -30,6 +30,7 @@ def build_opt(post_data, seed, gfpgan_model_exists): # however, this code is here against that eventuality setattr(opt, 'embiggen', None) setattr(opt, 'embiggen_tiles', None) + setattr(opt, 'embiggen_strength', None) setattr(opt, 'facetool_strength', float(post_data['facetool_strength']) if gfpgan_model_exists else 0) setattr(opt, 'upscale', [int(post_data['upscale_level']), float(post_data['upscale_strength'])] if post_data['upscale_level'] != '' else None) diff --git a/ldm/invoke/txt2mask.py b/ldm/invoke/txt2mask.py index 6bdd1814d1..1fdec33685 100644 --- a/ldm/invoke/txt2mask.py +++ b/ldm/invoke/txt2mask.py @@ -29,10 +29,12 @@ work fine. import torch import numpy as np +import os from clipseg.clipseg import CLIPDensePredT from einops import rearrange, repeat from PIL import Image, ImageOps from torchvision import transforms +from ldm.invoke.globals import Globals CLIP_VERSION = 'ViT-B/16' CLIPSEG_WEIGHTS = 'models/clipseg/clipseg_weights/rd64-uni.pth' @@ -80,7 +82,11 @@ class Txt2Mask(object): self.model.eval() # initially we keep everything in cpu to conserve space self.model.to('cpu') - self.model.load_state_dict(torch.load(CLIPSEG_WEIGHTS_REFINED if refined else CLIPSEG_WEIGHTS, map_location=torch.device('cpu')), strict=False) + self.model.load_state_dict(torch.load(os.path.join(Globals.root,CLIPSEG_WEIGHTS_REFINED) + if refined + else os.path.join(Globals.root,CLIPSEG_WEIGHTS), + map_location=torch.device('cpu')), strict=False + ) @torch.no_grad() def segment(self, image, prompt:str) -> SegmentedGrayscale: diff --git a/ldm/models/__init__.py b/ldm/models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ldm/models/diffusion/cross_attention_control.py b/ldm/models/diffusion/cross_attention_control.py index ff90a24856..a4362e0770 100644 --- a/ldm/models/diffusion/cross_attention_control.py +++ b/ldm/models/diffusion/cross_attention_control.py @@ -7,256 +7,256 @@ import torch # https://github.com/bloc97/CrossAttentionControl +class Arguments: + def __init__(self, edited_conditioning: torch.Tensor, edit_opcodes: list[tuple], edit_options: dict): + """ + :param edited_conditioning: if doing cross-attention control, the edited conditioning [1 x 77 x 768] + :param edit_opcodes: if doing cross-attention control, a list of difflib.SequenceMatcher-like opcodes describing how to map original conditioning tokens to edited conditioning tokens (only the 'equal' opcode is required) + :param edit_options: if doing cross-attention control, per-edit options. there should be 1 item in edit_options for each item in edit_opcodes. + """ + # todo: rewrite this to take embedding fragments rather than a single edited_conditioning vector + self.edited_conditioning = edited_conditioning + self.edit_opcodes = edit_opcodes -class CrossAttentionControl: - - class Arguments: - def __init__(self, edited_conditioning: torch.Tensor, edit_opcodes: list[tuple], edit_options: dict): - """ - :param edited_conditioning: if doing cross-attention control, the edited conditioning [1 x 77 x 768] - :param edit_opcodes: if doing cross-attention control, a list of difflib.SequenceMatcher-like opcodes describing how to map original conditioning tokens to edited conditioning tokens (only the 'equal' opcode is required) - :param edit_options: if doing cross-attention control, per-edit options. there should be 1 item in edit_options for each item in edit_opcodes. - """ - # todo: rewrite this to take embedding fragments rather than a single edited_conditioning vector - self.edited_conditioning = edited_conditioning - self.edit_opcodes = edit_opcodes - - if edited_conditioning is not None: - assert len(edit_opcodes) == len(edit_options), \ - "there must be 1 edit_options dict for each edit_opcodes tuple" - non_none_edit_options = [x for x in edit_options if x is not None] - assert len(non_none_edit_options)>0, "missing edit_options" - if len(non_none_edit_options)>1: - print('warning: cross-attention control options are not working properly for >1 edit') - self.edit_options = non_none_edit_options[0] + if edited_conditioning is not None: + assert len(edit_opcodes) == len(edit_options), \ + "there must be 1 edit_options dict for each edit_opcodes tuple" + non_none_edit_options = [x for x in edit_options if x is not None] + assert len(non_none_edit_options)>0, "missing edit_options" + if len(non_none_edit_options)>1: + print('warning: cross-attention control options are not working properly for >1 edit') + self.edit_options = non_none_edit_options[0] - class Context: +class CrossAttentionType(enum.Enum): + SELF = 1 + TOKENS = 2 - class Action(enum.Enum): - NONE = 0 - SAVE = 1, - APPLY = 2 - def __init__(self, arguments: 'CrossAttentionControl.Arguments', step_count: int): - """ - :param arguments: Arguments for the cross-attention control process - :param step_count: The absolute total number of steps of diffusion (for img2img this is likely larger than the number of steps that will actually run) - """ - self.arguments = arguments - self.step_count = step_count +class Context: - self.self_cross_attention_module_identifiers = [] - self.tokens_cross_attention_module_identifiers = [] + cross_attention_mask: Optional[torch.Tensor] + cross_attention_index_map: Optional[torch.Tensor] + class Action(enum.Enum): + NONE = 0 + SAVE = 1, + APPLY = 2 + + def __init__(self, arguments: Arguments, step_count: int): + """ + :param arguments: Arguments for the cross-attention control process + :param step_count: The absolute total number of steps of diffusion (for img2img this is likely larger than the number of steps that will actually run) + """ + self.cross_attention_mask = None + self.cross_attention_index_map = None + self.self_cross_attention_action = Context.Action.NONE + self.tokens_cross_attention_action = Context.Action.NONE + self.arguments = arguments + self.step_count = step_count + + self.self_cross_attention_module_identifiers = [] + self.tokens_cross_attention_module_identifiers = [] + + self.saved_cross_attention_maps = {} + + self.clear_requests(cleanup=True) + + def register_cross_attention_modules(self, model): + for name,module in get_attention_modules(model, CrossAttentionType.SELF): + self.self_cross_attention_module_identifiers.append(name) + for name,module in get_attention_modules(model, CrossAttentionType.TOKENS): + self.tokens_cross_attention_module_identifiers.append(name) + + def request_save_attention_maps(self, cross_attention_type: CrossAttentionType): + if cross_attention_type == CrossAttentionType.SELF: + self.self_cross_attention_action = Context.Action.SAVE + else: + self.tokens_cross_attention_action = Context.Action.SAVE + + def request_apply_saved_attention_maps(self, cross_attention_type: CrossAttentionType): + if cross_attention_type == CrossAttentionType.SELF: + self.self_cross_attention_action = Context.Action.APPLY + else: + self.tokens_cross_attention_action = Context.Action.APPLY + + def is_tokens_cross_attention(self, module_identifier) -> bool: + return module_identifier in self.tokens_cross_attention_module_identifiers + + def get_should_save_maps(self, module_identifier: str) -> bool: + if module_identifier in self.self_cross_attention_module_identifiers: + return self.self_cross_attention_action == Context.Action.SAVE + elif module_identifier in self.tokens_cross_attention_module_identifiers: + return self.tokens_cross_attention_action == Context.Action.SAVE + return False + + def get_should_apply_saved_maps(self, module_identifier: str) -> bool: + if module_identifier in self.self_cross_attention_module_identifiers: + return self.self_cross_attention_action == Context.Action.APPLY + elif module_identifier in self.tokens_cross_attention_module_identifiers: + return self.tokens_cross_attention_action == Context.Action.APPLY + return False + + def get_active_cross_attention_control_types_for_step(self, percent_through:float=None)\ + -> list[CrossAttentionType]: + """ + Should cross-attention control be applied on the given step? + :param percent_through: How far through the step sequence are we (0.0=pure noise, 1.0=completely denoised image). Expected range 0.0..<1.0. + :return: A list of attention types that cross-attention control should be performed for on the given step. May be []. + """ + if percent_through is None: + return [CrossAttentionType.SELF, CrossAttentionType.TOKENS] + + opts = self.arguments.edit_options + to_control = [] + if opts['s_start'] <= percent_through < opts['s_end']: + to_control.append(CrossAttentionType.SELF) + if opts['t_start'] <= percent_through < opts['t_end']: + to_control.append(CrossAttentionType.TOKENS) + return to_control + + def save_slice(self, identifier: str, slice: torch.Tensor, dim: Optional[int], offset: int, + slice_size: Optional[int]): + if identifier not in self.saved_cross_attention_maps: + self.saved_cross_attention_maps[identifier] = { + 'dim': dim, + 'slice_size': slice_size, + 'slices': {offset or 0: slice} + } + else: + self.saved_cross_attention_maps[identifier]['slices'][offset or 0] = slice + + def get_slice(self, identifier: str, requested_dim: Optional[int], requested_offset: int, slice_size: int): + saved_attention_dict = self.saved_cross_attention_maps[identifier] + if requested_dim is None: + if saved_attention_dict['dim'] is not None: + raise RuntimeError(f"dim mismatch: expected dim=None, have {saved_attention_dict['dim']}") + return saved_attention_dict['slices'][0] + + if saved_attention_dict['dim'] == requested_dim: + if slice_size != saved_attention_dict['slice_size']: + raise RuntimeError( + f"slice_size mismatch: expected slice_size={slice_size}, have {saved_attention_dict['slice_size']}") + return saved_attention_dict['slices'][requested_offset] + + if saved_attention_dict['dim'] is None: + whole_saved_attention = saved_attention_dict['slices'][0] + if requested_dim == 0: + return whole_saved_attention[requested_offset:requested_offset + slice_size] + elif requested_dim == 1: + return whole_saved_attention[:, requested_offset:requested_offset + slice_size] + + raise RuntimeError(f"Cannot convert dim {saved_attention_dict['dim']} to requested dim {requested_dim}") + + def get_slicing_strategy(self, identifier: str) -> tuple[Optional[int], Optional[int]]: + saved_attention = self.saved_cross_attention_maps.get(identifier, None) + if saved_attention is None: + return None, None + return saved_attention['dim'], saved_attention['slice_size'] + + def clear_requests(self, cleanup=True): + self.tokens_cross_attention_action = Context.Action.NONE + self.self_cross_attention_action = Context.Action.NONE + if cleanup: self.saved_cross_attention_maps = {} - self.clear_requests(cleanup=True) + def offload_saved_attention_slices_to_cpu(self): + for key, map_dict in self.saved_cross_attention_maps.items(): + for offset, slice in map_dict['slices'].items(): + map_dict[offset] = slice.to('cpu') - def register_cross_attention_modules(self, model): - for name,module in CrossAttentionControl.get_attention_modules(model, - CrossAttentionControl.CrossAttentionType.SELF): - self.self_cross_attention_module_identifiers.append(name) - for name,module in CrossAttentionControl.get_attention_modules(model, - CrossAttentionControl.CrossAttentionType.TOKENS): - self.tokens_cross_attention_module_identifiers.append(name) - def request_save_attention_maps(self, cross_attention_type: 'CrossAttentionControl.CrossAttentionType'): - if cross_attention_type == CrossAttentionControl.CrossAttentionType.SELF: - self.self_cross_attention_action = CrossAttentionControl.Context.Action.SAVE +def remove_cross_attention_control(model): + remove_attention_function(model) + + +def setup_cross_attention_control(model, context: Context): + """ + Inject attention parameters and functions into the passed in model to enable cross attention editing. + + :param model: The unet model to inject into. + :param cross_attention_control_args: Arugments passeed to the CrossAttentionControl implementations + :return: None + """ + + # adapted from init_attention_edit + device = context.arguments.edited_conditioning.device + + # urgh. should this be hardcoded? + max_length = 77 + # mask=1 means use base prompt attention, mask=0 means use edited prompt attention + mask = torch.zeros(max_length) + indices_target = torch.arange(max_length, dtype=torch.long) + indices = torch.zeros(max_length, dtype=torch.long) + for name, a0, a1, b0, b1 in context.arguments.edit_opcodes: + if b0 < max_length: + if name == "equal":# or (name == "replace" and a1 - a0 == b1 - b0): + # these tokens have not been edited + indices[b0:b1] = indices_target[a0:a1] + mask[b0:b1] = 1 + + context.register_cross_attention_modules(model) + context.cross_attention_mask = mask.to(device) + context.cross_attention_index_map = indices.to(device) + inject_attention_function(model, context) + + +def get_attention_modules(model, which: CrossAttentionType): + which_attn = "attn1" if which is CrossAttentionType.SELF else "attn2" + return [(name,module) for name, module in model.named_modules() if + type(module).__name__ == "CrossAttention" and which_attn in name] + + +def inject_attention_function(unet, context: Context): + # ORIGINAL SOURCE CODE: https://github.com/huggingface/diffusers/blob/91ddd2a25b848df0fa1262d4f1cd98c7ccb87750/src/diffusers/models/attention.py#L276 + + def attention_slice_wrangler(module, suggested_attention_slice:torch.Tensor, dim, offset, slice_size): + + #memory_usage = suggested_attention_slice.element_size() * suggested_attention_slice.nelement() + + attention_slice = suggested_attention_slice + + if context.get_should_save_maps(module.identifier): + #print(module.identifier, "saving suggested_attention_slice of shape", + # suggested_attention_slice.shape, "dim", dim, "offset", offset) + slice_to_save = attention_slice.to('cpu') if dim is not None else attention_slice + context.save_slice(module.identifier, slice_to_save, dim=dim, offset=offset, slice_size=slice_size) + elif context.get_should_apply_saved_maps(module.identifier): + #print(module.identifier, "applying saved attention slice for dim", dim, "offset", offset) + saved_attention_slice = context.get_slice(module.identifier, dim, offset, slice_size) + + # slice may have been offloaded to CPU + saved_attention_slice = saved_attention_slice.to(suggested_attention_slice.device) + + if context.is_tokens_cross_attention(module.identifier): + index_map = context.cross_attention_index_map + remapped_saved_attention_slice = torch.index_select(saved_attention_slice, -1, index_map) + this_attention_slice = suggested_attention_slice + + mask = context.cross_attention_mask + saved_mask = mask + this_mask = 1 - mask + attention_slice = remapped_saved_attention_slice * saved_mask + \ + this_attention_slice * this_mask else: - self.tokens_cross_attention_action = CrossAttentionControl.Context.Action.SAVE + # just use everything + attention_slice = saved_attention_slice - def request_apply_saved_attention_maps(self, cross_attention_type: 'CrossAttentionControl.CrossAttentionType'): - if cross_attention_type == CrossAttentionControl.CrossAttentionType.SELF: - self.self_cross_attention_action = CrossAttentionControl.Context.Action.APPLY - else: - self.tokens_cross_attention_action = CrossAttentionControl.Context.Action.APPLY + return attention_slice - def is_tokens_cross_attention(self, module_identifier) -> bool: - return module_identifier in self.tokens_cross_attention_module_identifiers - - def get_should_save_maps(self, module_identifier: str) -> bool: - if module_identifier in self.self_cross_attention_module_identifiers: - return self.self_cross_attention_action == CrossAttentionControl.Context.Action.SAVE - elif module_identifier in self.tokens_cross_attention_module_identifiers: - return self.tokens_cross_attention_action == CrossAttentionControl.Context.Action.SAVE - return False - - def get_should_apply_saved_maps(self, module_identifier: str) -> bool: - if module_identifier in self.self_cross_attention_module_identifiers: - return self.self_cross_attention_action == CrossAttentionControl.Context.Action.APPLY - elif module_identifier in self.tokens_cross_attention_module_identifiers: - return self.tokens_cross_attention_action == CrossAttentionControl.Context.Action.APPLY - return False - - def get_active_cross_attention_control_types_for_step(self, percent_through:float=None)\ - -> list['CrossAttentionControl.CrossAttentionType']: - """ - Should cross-attention control be applied on the given step? - :param percent_through: How far through the step sequence are we (0.0=pure noise, 1.0=completely denoised image). Expected range 0.0..<1.0. - :return: A list of attention types that cross-attention control should be performed for on the given step. May be []. - """ - if percent_through is None: - return [CrossAttentionControl.CrossAttentionType.SELF, CrossAttentionControl.CrossAttentionType.TOKENS] - - opts = self.arguments.edit_options - to_control = [] - if opts['s_start'] <= percent_through and percent_through < opts['s_end']: - to_control.append(CrossAttentionControl.CrossAttentionType.SELF) - if opts['t_start'] <= percent_through and percent_through < opts['t_end']: - to_control.append(CrossAttentionControl.CrossAttentionType.TOKENS) - return to_control - - def save_slice(self, identifier: str, slice: torch.Tensor, dim: Optional[int], offset: int, - slice_size: Optional[int]): - if identifier not in self.saved_cross_attention_maps: - self.saved_cross_attention_maps[identifier] = { - 'dim': dim, - 'slice_size': slice_size, - 'slices': {offset or 0: slice} - } - else: - self.saved_cross_attention_maps[identifier]['slices'][offset or 0] = slice - - def get_slice(self, identifier: str, requested_dim: Optional[int], requested_offset: int, slice_size: int): - saved_attention_dict = self.saved_cross_attention_maps[identifier] - if requested_dim is None: - if saved_attention_dict['dim'] is not None: - raise RuntimeError(f"dim mismatch: expected dim=None, have {saved_attention_dict['dim']}") - return saved_attention_dict['slices'][0] - - if saved_attention_dict['dim'] == requested_dim: - if slice_size != saved_attention_dict['slice_size']: - raise RuntimeError( - f"slice_size mismatch: expected slice_size={slice_size}, have {saved_attention_dict['slice_size']}") - return saved_attention_dict['slices'][requested_offset] - - if saved_attention_dict['dim'] == None: - whole_saved_attention = saved_attention_dict['slices'][0] - if requested_dim == 0: - return whole_saved_attention[requested_offset:requested_offset + slice_size] - elif requested_dim == 1: - return whole_saved_attention[:, requested_offset:requested_offset + slice_size] - - raise RuntimeError(f"Cannot convert dim {saved_attention_dict['dim']} to requested dim {requested_dim}") - - def get_slicing_strategy(self, identifier: str) -> Optional[tuple[int, int]]: - saved_attention = self.saved_cross_attention_maps.get(identifier, None) - if saved_attention is None: - return None, None - return saved_attention['dim'], saved_attention['slice_size'] - - def clear_requests(self, cleanup=True): - self.tokens_cross_attention_action = CrossAttentionControl.Context.Action.NONE - self.self_cross_attention_action = CrossAttentionControl.Context.Action.NONE - if cleanup: - self.saved_cross_attention_maps = {} - - def offload_saved_attention_slices_to_cpu(self): - for key, map_dict in self.saved_cross_attention_maps.items(): - for offset, slice in map_dict['slices'].items(): - map_dict[offset] = slice.to('cpu') - - @classmethod - def remove_cross_attention_control(cls, model): - cls.remove_attention_function(model) - - @classmethod - def setup_cross_attention_control(cls, model, context: Context): - """ - Inject attention parameters and functions into the passed in model to enable cross attention editing. - - :param model: The unet model to inject into. - :param cross_attention_control_args: Arugments passeed to the CrossAttentionControl implementations - :return: None - """ - - # adapted from init_attention_edit - device = context.arguments.edited_conditioning.device - - # urgh. should this be hardcoded? - max_length = 77 - # mask=1 means use base prompt attention, mask=0 means use edited prompt attention - mask = torch.zeros(max_length) - indices_target = torch.arange(max_length, dtype=torch.long) - indices = torch.zeros(max_length, dtype=torch.long) - for name, a0, a1, b0, b1 in context.arguments.edit_opcodes: - if b0 < max_length: - if name == "equal":# or (name == "replace" and a1 - a0 == b1 - b0): - # these tokens have not been edited - indices[b0:b1] = indices_target[a0:a1] - mask[b0:b1] = 1 - - context.register_cross_attention_modules(model) - context.cross_attention_mask = mask.to(device) - context.cross_attention_index_map = indices.to(device) - cls.inject_attention_function(model, context) + for name, module in unet.named_modules(): + module_name = type(module).__name__ + if module_name == "CrossAttention": + module.identifier = name + module.set_attention_slice_wrangler(attention_slice_wrangler) + module.set_slicing_strategy_getter(lambda module, module_identifier=name: \ + context.get_slicing_strategy(module_identifier)) - class CrossAttentionType(enum.Enum): - SELF = 1 - TOKENS = 2 - - @classmethod - def get_attention_modules(cls, model, which: CrossAttentionType): - which_attn = "attn1" if which is cls.CrossAttentionType.SELF else "attn2" - return [(name,module) for name, module in model.named_modules() if - type(module).__name__ == "CrossAttention" and which_attn in name] - - - @classmethod - def inject_attention_function(cls, unet, context: 'CrossAttentionControl.Context'): - # ORIGINAL SOURCE CODE: https://github.com/huggingface/diffusers/blob/91ddd2a25b848df0fa1262d4f1cd98c7ccb87750/src/diffusers/models/attention.py#L276 - - def attention_slice_wrangler(module, suggested_attention_slice:torch.Tensor, dim, offset, slice_size): - - #memory_usage = suggested_attention_slice.element_size() * suggested_attention_slice.nelement() - - attention_slice = suggested_attention_slice - - if context.get_should_save_maps(module.identifier): - #print(module.identifier, "saving suggested_attention_slice of shape", - # suggested_attention_slice.shape, "dim", dim, "offset", offset) - slice_to_save = attention_slice.to('cpu') if dim is not None else attention_slice - context.save_slice(module.identifier, slice_to_save, dim=dim, offset=offset, slice_size=slice_size) - elif context.get_should_apply_saved_maps(module.identifier): - #print(module.identifier, "applying saved attention slice for dim", dim, "offset", offset) - saved_attention_slice = context.get_slice(module.identifier, dim, offset, slice_size) - - # slice may have been offloaded to CPU - saved_attention_slice = saved_attention_slice.to(suggested_attention_slice.device) - - if context.is_tokens_cross_attention(module.identifier): - index_map = context.cross_attention_index_map - remapped_saved_attention_slice = torch.index_select(saved_attention_slice, -1, index_map) - this_attention_slice = suggested_attention_slice - - mask = context.cross_attention_mask - saved_mask = mask - this_mask = 1 - mask - attention_slice = remapped_saved_attention_slice * saved_mask + \ - this_attention_slice * this_mask - else: - # just use everything - attention_slice = saved_attention_slice - - return attention_slice - - for name, module in unet.named_modules(): - module_name = type(module).__name__ - if module_name == "CrossAttention": - module.identifier = name - module.set_attention_slice_wrangler(attention_slice_wrangler) - module.set_slicing_strategy_getter(lambda module, module_identifier=name: \ - context.get_slicing_strategy(module_identifier)) - - @classmethod - def remove_attention_function(cls, unet): - # clear wrangler callback - for name, module in unet.named_modules(): - module_name = type(module).__name__ - if module_name == "CrossAttention": - module.set_attention_slice_wrangler(None) - module.set_slicing_strategy_getter(None) - +def remove_attention_function(unet): + # clear wrangler callback + for name, module in unet.named_modules(): + module_name = type(module).__name__ + if module_name == "CrossAttention": + module.set_attention_slice_wrangler(None) + module.set_slicing_strategy_getter(None) diff --git a/ldm/models/diffusion/ddpm.py b/ldm/models/diffusion/ddpm.py index a5989532c4..e2e38459ff 100644 --- a/ldm/models/diffusion/ddpm.py +++ b/ldm/models/diffusion/ddpm.py @@ -1490,7 +1490,7 @@ class LatentDiffusion(DDPM): ) loss_dict.update({f'{prefix}/loss_simple': loss_simple.mean()}) - logvar_t = self.logvar[t].to(self.device) + logvar_t = self.logvar[t.item()].to(self.device) loss = loss_simple / torch.exp(logvar_t) + logvar_t # loss = loss_simple / torch.exp(self.logvar) + self.logvar if self.learn_logvar: diff --git a/ldm/models/diffusion/shared_invokeai_diffusion.py b/ldm/models/diffusion/shared_invokeai_diffusion.py index 0a18eb25c8..d748c9a673 100644 --- a/ldm/models/diffusion/shared_invokeai_diffusion.py +++ b/ldm/models/diffusion/shared_invokeai_diffusion.py @@ -4,7 +4,8 @@ from typing import Callable, Optional, Union import torch -from ldm.models.diffusion.cross_attention_control import CrossAttentionControl +from ldm.models.diffusion.cross_attention_control import Arguments, \ + remove_cross_attention_control, setup_cross_attention_control, Context from ldm.modules.attention import get_mem_free_total @@ -20,7 +21,7 @@ class InvokeAIDiffuserComponent: class ExtraConditioningInfo: - def __init__(self, cross_attention_control_args: Optional[CrossAttentionControl.Arguments]): + def __init__(self, cross_attention_control_args: Optional[Arguments]): self.cross_attention_control_args = cross_attention_control_args @property @@ -40,16 +41,16 @@ class InvokeAIDiffuserComponent: def setup_cross_attention_control(self, conditioning: ExtraConditioningInfo, step_count: int): self.conditioning = conditioning - self.cross_attention_control_context = CrossAttentionControl.Context( + self.cross_attention_control_context = Context( arguments=self.conditioning.cross_attention_control_args, step_count=step_count ) - CrossAttentionControl.setup_cross_attention_control(self.model, self.cross_attention_control_context) + setup_cross_attention_control(self.model, self.cross_attention_control_context) def remove_cross_attention_control(self): self.conditioning = None self.cross_attention_control_context = None - CrossAttentionControl.remove_cross_attention_control(self.model) + remove_cross_attention_control(self.model) @@ -71,7 +72,7 @@ class InvokeAIDiffuserComponent: cross_attention_control_types_to_do = [] - context: CrossAttentionControl.Context = self.cross_attention_control_context + context: Context = self.cross_attention_control_context if self.cross_attention_control_context is not None: percent_through = self.estimate_percent_through(step_index, sigma) cross_attention_control_types_to_do = context.get_active_cross_attention_control_types_for_step(percent_through) @@ -133,7 +134,7 @@ class InvokeAIDiffuserComponent: # representing batched uncond + cond, but then when it comes to applying the saved attention, the # wrangler gets an attention tensor which only has shape[0]=8, representing just self.edited_conditionings.) # todo: give CrossAttentionControl's `wrangler` function more info so it can work with a batched call as well. - context:CrossAttentionControl.Context = self.cross_attention_control_context + context:Context = self.cross_attention_control_context try: unconditioned_next_x = self.model_forward_callback(x, sigma, unconditioning) diff --git a/ldm/modules/__init__.py b/ldm/modules/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/ldm/modules/embedding_manager.py b/ldm/modules/embedding_manager.py index 18688708f9..239fd346ab 100644 --- a/ldm/modules/embedding_manager.py +++ b/ldm/modules/embedding_manager.py @@ -1,14 +1,15 @@ +import os.path from cmath import log import torch from torch import nn import sys +from ldm.invoke.concepts_lib import Concepts from ldm.data.personalized import per_img_token_list from transformers import CLIPTokenizer from functools import partial - -DEFAULT_PLACEHOLDER_TOKEN = ['*'] +from picklescan.scanner import scan_file_path PROGRESSIVE_SCALE = 2000 @@ -43,7 +44,6 @@ def get_bert_token_for_string(tokenizer, string): def get_embedding_for_clip_token(embedder, token): return embedder(token.unsqueeze(0))[0, 0] - class EmbeddingManager(nn.Module): def __init__( self, @@ -58,6 +58,8 @@ class EmbeddingManager(nn.Module): super().__init__() self.embedder = embedder + self.concepts_library=Concepts() + self.concepts_loaded = dict() self.string_to_token_dict = {} self.string_to_param_dict = nn.ParameterDict() @@ -149,68 +151,55 @@ class EmbeddingManager(nn.Module): placeholder_string ].to(device) - if ( - self.max_vectors_per_token == 1 - ): # If there's only one vector per token, we can do a simple replacement - placeholder_idx = torch.where( - tokenized_text == placeholder_token.to(device) + if self.progressive_words: + self.progressive_counter += 1 + max_step_tokens = ( + 1 + self.progressive_counter // PROGRESSIVE_SCALE ) - embedded_text[placeholder_idx] = placeholder_embedding - else: # otherwise, need to insert and keep track of changing indices - if self.progressive_words: - self.progressive_counter += 1 - max_step_tokens = ( - 1 + self.progressive_counter // PROGRESSIVE_SCALE - ) - else: - max_step_tokens = self.max_vectors_per_token + else: + max_step_tokens = self.max_vectors_per_token - num_vectors_for_token = min( - placeholder_embedding.shape[0], max_step_tokens - ) + num_vectors_for_token = min( + placeholder_embedding.shape[0], max_step_tokens + ) - if torch.cuda.is_available(): - placeholder_rows, placeholder_cols = torch.where( - tokenized_text == placeholder_token.to(device) - ) - else: - placeholder_rows, placeholder_cols = torch.where( - tokenized_text == placeholder_token - ) + placeholder_rows, placeholder_cols = torch.where( + tokenized_text == placeholder_token.to(tokenized_text.device) + ) - if placeholder_rows.nelement() == 0: - continue + if placeholder_rows.nelement() == 0: + continue - sorted_cols, sort_idx = torch.sort( - placeholder_cols, descending=True - ) - sorted_rows = placeholder_rows[sort_idx] + sorted_cols, sort_idx = torch.sort( + placeholder_cols, descending=True + ) + sorted_rows = placeholder_rows[sort_idx] - for idx in range(len(sorted_rows)): - row = sorted_rows[idx] - col = sorted_cols[idx] + for idx in range(sorted_rows.shape[0]): + row = sorted_rows[idx] + col = sorted_cols[idx] - new_token_row = torch.cat( - [ - tokenized_text[row][:col], - placeholder_token.repeat(num_vectors_for_token).to( - device - ), - tokenized_text[row][col + 1 :], - ], - axis=0, - )[:n] - new_embed_row = torch.cat( - [ - embedded_text[row][:col], - placeholder_embedding[:num_vectors_for_token], - embedded_text[row][col + 1 :], - ], - axis=0, - )[:n] + new_token_row = torch.cat( + [ + tokenized_text[row][:col], + placeholder_token.repeat(num_vectors_for_token).to( + device + ), + tokenized_text[row][col + 1 :], + ], + axis=0, + )[:n] + new_embed_row = torch.cat( + [ + embedded_text[row][:col], + placeholder_embedding[:num_vectors_for_token], + embedded_text[row][col + 1 :], + ], + axis=0, + )[:n] - embedded_text[row] = new_embed_row - tokenized_text[row] = new_token_row + embedded_text[row] = new_embed_row + tokenized_text[row] = new_token_row return embedded_text @@ -223,29 +212,98 @@ class EmbeddingManager(nn.Module): ckpt_path, ) - def load(self, ckpt_path, full=True): + def load_concepts(self, concepts:list[str], full=True): + bin_files = list() + for concept_name in concepts: + if concept_name in self.concepts_loaded: + continue + else: + bin_file = self.concepts_library.get_concept_model_path(concept_name) + if not bin_file: + continue + bin_files.append(bin_file) + self.concepts_loaded[concept_name]=True + self.load(bin_files, full) + + def list_terms(self) -> list[str]: + return self.concepts_loaded.keys() + + def load(self, ckpt_paths, full=True): + if len(ckpt_paths) == 0: + return + if type(ckpt_paths) != list: + ckpt_paths = [ckpt_paths] + ckpt_paths = self._expand_directories(ckpt_paths) + for c in ckpt_paths: + self._load(c,full) + # remember that we know this term and don't try to download it again from the concepts library + # note that if the concept name is also provided and different from the trigger term, they + # both will be stored in this dictionary + for term in self.string_to_param_dict.keys(): + term = term.strip('<').strip('>') + self.concepts_loaded[term] = True + print(f'>> Current embedding manager terms: {", ".join(self.string_to_param_dict.keys())}') + + def _expand_directories(self, paths:list[str]): + expanded_paths = list() + for path in paths: + if os.path.isfile(path): + expanded_paths.append(path) + elif os.path.isdir(path): + for root, _, files in os.walk(path): + for name in files: + expanded_paths.append(os.path.join(root,name)) + return [x for x in expanded_paths if os.path.splitext(x)[1] in ('.pt','.bin')] + + def _load(self, ckpt_path, full=True): + + scan_result = scan_file_path(ckpt_path) + if scan_result.infected_files == 1: + print(f'\n### Security Issues Found in Model: {scan_result.issues_count}') + print('### For your safety, InvokeAI will not load this embed.') + return + ckpt = torch.load(ckpt_path, map_location='cpu') # Handle .pt textual inversion files if 'string_to_token' in ckpt and 'string_to_param' in ckpt: - self.string_to_token_dict = ckpt["string_to_token"] - self.string_to_param_dict = ckpt["string_to_param"] + filename = os.path.basename(ckpt_path) + token_str = '.'.join(filename.split('.')[:-1]) # filename excluding extension + if len(ckpt["string_to_token"]) > 1: + print(f">> {ckpt_path} has >1 embedding, only the first will be used") + + string_to_param_dict = ckpt['string_to_param'] + embedding = list(string_to_param_dict.values())[0] + self.add_embedding(token_str, embedding, full) # Handle .bin textual inversion files from Huggingface Concepts # https://huggingface.co/sd-concepts-library else: for token_str in list(ckpt.keys()): - token = get_clip_token_for_string(self.embedder.tokenizer, token_str) - self.string_to_token_dict[token_str] = token - ckpt[token_str] = torch.nn.Parameter(ckpt[token_str]) - - self.string_to_param_dict.update(ckpt) + embedding = ckpt[token_str] + self.add_embedding(token_str, embedding, full) + def add_embedding(self, token_str, embedding, full): + if token_str in self.string_to_param_dict: + print(f">> Embedding manager refusing to overwrite already-loaded term '{token_str}'") + return if not full: - for key, value in self.string_to_param_dict.items(): - self.string_to_param_dict[key] = torch.nn.Parameter(value.half()) + embedding = embedding.half() + if len(embedding.shape) == 1: + embedding = embedding.unsqueeze(0) - print(f'Added terms: {", ".join(self.string_to_param_dict.keys())}') + num_tokens_added = self.embedder.tokenizer.add_tokens(token_str) + current_embeddings = self.embedder.transformer.resize_token_embeddings(None) + current_token_count = current_embeddings.num_embeddings + new_token_count = current_token_count + num_tokens_added + self.embedder.transformer.resize_token_embeddings(new_token_count) + + token = get_clip_token_for_string(self.embedder.tokenizer, token_str) + self.string_to_token_dict[token_str] = token + self.string_to_param_dict[token_str] = torch.nn.Parameter(embedding) + + def has_embedding_for_token(self, token_str): + return token_str in self.string_to_token_dict def get_embedding_norms_squared(self): all_params = torch.cat( diff --git a/ldm/modules/encoders/modules.py b/ldm/modules/encoders/modules.py index cf8644a7fb..be9f88cdd2 100644 --- a/ldm/modules/encoders/modules.py +++ b/ldm/modules/encoders/modules.py @@ -1,5 +1,5 @@ import math - +import os.path import torch import torch.nn as nn from functools import partial @@ -8,6 +8,7 @@ from einops import rearrange, repeat from transformers import CLIPTokenizer, CLIPTextModel import kornia from ldm.invoke.devices import choose_torch_device +from ldm.invoke.globals import Globals from ldm.modules.x_transformer import ( Encoder, @@ -98,21 +99,19 @@ class BERTTokenizer(AbstractEncoder): """Uses a pretrained BERT tokenizer by huggingface. Vocab size: 30522 (?)""" def __init__( - self, device=choose_torch_device(), vq_interface=True, max_length=77 + self, device=choose_torch_device(), vq_interface=True, max_length=77 ): super().__init__() from transformers import ( BertTokenizerFast, - ) # TODO: add to reuquirements + ) - # Modified to allow to run on non-internet connected compute nodes. - # Model needs to be loaded into cache from an internet-connected machine - # by running: - # from transformers import BertTokenizerFast - # BertTokenizerFast.from_pretrained("bert-base-uncased") + cache = os.path.join(Globals.root,'models/bert-base-uncased') try: self.tokenizer = BertTokenizerFast.from_pretrained( - 'bert-base-uncased', local_files_only=True + 'bert-base-uncased', + cache_dir=cache, + local_files_only=True ) except OSError: raise SystemExit( @@ -150,14 +149,14 @@ class BERTEmbedder(AbstractEncoder): """Uses the BERT tokenizr model and add some transformer encoder layers""" def __init__( - self, - n_embed, - n_layer, - vocab_size=30522, - max_seq_len=77, - device=choose_torch_device(), - use_tokenizer=True, - embedding_dropout=0.0, + self, + n_embed, + n_layer, + vocab_size=30522, + max_seq_len=77, + device=choose_torch_device(), + use_tokenizer=True, + embedding_dropout=0.0, ): super().__init__() self.use_tknz_fn = use_tokenizer @@ -244,11 +243,16 @@ class FrozenCLIPEmbedder(AbstractEncoder): max_length=77, ): super().__init__() + cache = os.path.join(Globals.root,'models',version) self.tokenizer = CLIPTokenizer.from_pretrained( - version, local_files_only=True + version, + cache_dir=cache, + local_files_only=True ) self.transformer = CLIPTextModel.from_pretrained( - version, local_files_only=True + version, + cache_dir=cache, + local_files_only=True ) self.device = device self.max_length = max_length diff --git a/ldm/util.py b/ldm/util.py index f3ef0b606b..ae28edb96a 100644 --- a/ldm/util.py +++ b/ldm/util.py @@ -235,3 +235,30 @@ def rand_perlin_2d(shape, res, device, fade = lambda t: 6*t**5 - 15*t**4 + 10*t* n11 = dot(tile_grads([1, None], [1, None]), [-1,-1]).to(device) t = fade(grid[:shape[0], :shape[1]]) return math.sqrt(2) * torch.lerp(torch.lerp(n00, n10, t[..., 0]), torch.lerp(n01, n11, t[..., 0]), t[..., 1]).to(device) + +def ask_user(question: str, answers: list): + from itertools import chain, repeat + user_prompt = f'\n>> {question} {answers}: ' + invalid_answer_msg = 'Invalid answer. Please try again.' + pose_question = chain([user_prompt], repeat('\n'.join([invalid_answer_msg, user_prompt]))) + user_answers = map(input, pose_question) + valid_response = next(filter(answers.__contains__, user_answers)) + return valid_response + + +def debug_image(debug_image, debug_text, debug_show=True, debug_result=False, debug_status=False ): + if not debug_status: + return + + image_copy = debug_image.copy() + ImageDraw.Draw(image_copy).text( + (5, 5), + debug_text, + (255, 0, 0) + ) + + if debug_show: + image_copy.show() + + if debug_result: + return image_copy \ No newline at end of file diff --git a/main.py b/main.py index 60c091891c..6f56962cd4 100644 --- a/main.py +++ b/main.py @@ -188,10 +188,6 @@ def get_parser(**parser_kwargs): default='', help='Initialize embedding manager from a checkpoint', ) - parser.add_argument( - '--placeholder_tokens', type=str, nargs='+', default=['*'], - help='Placeholder token which will be used to denote the concept in future prompts') - parser.add_argument( '--init_word', type=str, @@ -722,14 +718,9 @@ if __name__ == '__main__': config.model.params.personalization_config.params.embedding_manager_ckpt = ( opt.embedding_manager_ckpt ) - config.model.params.personalization_config.params.placeholder_tokens = ( - opt.placeholder_tokens - ) if opt.init_word: - config.model.params.personalization_config.params.initializer_words[ - 0 - ] = opt.init_word + config.model.params.personalization_config.params.initializer_words = [opt.init_word] if opt.actual_resume: model = load_model_from_config(config, opt.actual_resume) diff --git a/mkdocs.yml b/mkdocs.yml index 2cb956055a..3779b0523e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,7 +12,7 @@ repo_url: 'https://github.com/invoke-ai/InvokeAI' edit_uri: edit/main/docs/ # Copyright -copyright: Copyright © 2022 Lincoln D. Stein +copyright: Copyright © 2022 InvokeAI Team # Configuration theme: diff --git a/models/ldm/stable-diffusion-v1/place-ckpt-files-here.txt b/models/ldm/stable-diffusion-v1/place-ckpt-files-here.txt deleted file mode 100644 index a174e54540..0000000000 --- a/models/ldm/stable-diffusion-v1/place-ckpt-files-here.txt +++ /dev/null @@ -1,2 +0,0 @@ -See docs/features/INSTALLING_MODELS.md for how to populate this -directory with one or more Stable Diffusion model weight files. diff --git a/notebooks/Stable-Diffusion-local-Windows.ipynb b/notebooks/Stable-Diffusion-local-Windows.ipynb deleted file mode 100644 index 309feb784c..0000000000 --- a/notebooks/Stable-Diffusion-local-Windows.ipynb +++ /dev/null @@ -1,222 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Easy-peasy Windows install" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that you will need NVIDIA drivers, Python 3.10, and Git installed\n", - "beforehand - simplified\n", - "[step-by-step instructions](https://invoke-ai.github.io/InvokeAI/installation/INSTALL_WINDOWS/#conda)\n", - "are available in the wiki (you'll only need steps 1, 2, & 3 )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Run each cell in turn. In VSCode, either hit SHIFT-ENTER, or click on the little ▶️ to the left of the cell. In Jupyter/JupyterLab, you **must** hit SHIFT-ENTER" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%pip install pew" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%cmd\n", - "git clone https://github.com/invoke-ai/InvokeAI.git\n", - "cd /content/InvokeAI/\n", - "git checkout --quiet development" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%cmd\n", - "pew new --python 3.10 -r requirements-lin-win-colab-CUDA.txt --dont-activate invokeai" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Switch the notebook kernel to the new 'invokeai' environment!\n", - "\n", - "## VSCode: restart VSCode and come back to this cell\n", - "\n", - "1. Ctrl+Shift+P\n", - "1. Type \"Select Interpreter\" and select \"Jupyter: Select Interpreter to Start Jupyter Server\"\n", - "1. VSCode will say that it needs to install packages. Click the \"Install\" button.\n", - "1. Once the install is finished, do 1 & 2 again\n", - "1. Pick 'invokeai'\n", - "1. Run the following cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%cd InvokeAI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Jupyter/JupyterLab\n", - "\n", - "1. Run the cell below\n", - "1. Click on the toolbar where it says \"(ipyknel)\" ↗️. You should get a pop-up asking you to \"Select Kernel\". Pick 'invokeai' from the drop-down.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### DO NOT RUN THE FOLLOWING CELL IF YOU ARE USING VSCODE!!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# DO NOT RUN THIS CELL IF YOU ARE USING VSCODE!!\n", - "%%cmd\n", - "pew workon invokeai\n", - "pip3 install ipykernel\n", - "python -m ipykernel install --name=invokeai" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### When running the next cell, Jupyter/JupyterLab users might get a warning saying \"IProgress not found\". This can be ignored." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%run \"scripts/preload_models.py\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%cmd\n", - "mkdir \"models/ldm/stable-diffusion-v1\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Now copy the SD model you downloaded from Hugging Face into the above new directory, and (if necessary) rename it to 'model.ckpt'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Now go create some magic!\n", - "\n", - "VSCode\n", - "\n", - "- The actual input box for the 'dream' prompt will appear at the very top of the VSCode window. Type in your commands and hit 'ENTER'.\n", - "- To quit, hit the 'Interrupt' button in the toolbar up there ⬆️ a couple of times, then hit ENTER (you'll probably see a terrifying traceback from Python - just ignore it).\n", - "\n", - "Jupyter/JupyterLab\n", - "\n", - "- The input box for the 'dream' prompt will appear below. Type in your commands and hit 'ENTER'.\n", - "- To quit, hit the interrupt button (⏹️) in the toolbar up there ⬆️ a couple of times, then hit ENTER (you'll probably see a terrifying traceback from Python - just ignore it)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%run \"scripts/dream.py\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Once this seems to be working well, you can try opening a terminal\n", - "\n", - "- VSCode: type ('CTRL+`')\n", - "- Jupyter/JupyterLab: File|New Terminal\n", - "- Or jump out of the notebook entirely, and open Powershell/Command Prompt\n", - "\n", - "Now:\n", - "\n", - "1. `cd` to wherever the 'InvokeAI' directory is\n", - "1. Run `pew workon invokeai`\n", - "1. Run `winpty python scripts\\dream.py`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.6 64-bit", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" - }, - "vscode": { - "interpreter": { - "hash": "5e164cef426134bf171f386fbddecb52046b6c1479f922ab8dfdd30df05e0e80" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/scripts/configure_invokeai.py b/scripts/configure_invokeai.py new file mode 100644 index 0000000000..2bfefaa28c --- /dev/null +++ b/scripts/configure_invokeai.py @@ -0,0 +1,747 @@ +#!/usr/bin/env python +# Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) +# Before running stable-diffusion on an internet-isolated machine, +# run this script from one with internet connectivity. The +# two machines must share a common .cache directory. +# +# Coauthor: Kevin Turner http://github.com/keturn +# +print('Loading Python libraries...\n') +import argparse +import sys +import os +import re +import warnings +import shutil +from urllib import request +from tqdm import tqdm +from omegaconf import OmegaConf +from huggingface_hub import HfFolder, hf_hub_url +from pathlib import Path +from getpass_asterisk import getpass_asterisk +from transformers import CLIPTokenizer, CLIPTextModel +from ldm.invoke.globals import Globals +from ldm.invoke.readline import generic_completer + +import traceback +import requests +import clip +import transformers +import warnings +warnings.filterwarnings('ignore') +import torch +transformers.logging.set_verbosity_error() + +#--------------------------globals----------------------- +Model_dir = 'models' +Weights_dir = 'ldm/stable-diffusion-v1/' +Dataset_path = './configs/INITIAL_MODELS.yaml' +Default_config_file = './configs/models.yaml' +SD_Configs = './configs/stable-diffusion' + +assert os.path.exists(Dataset_path),"The configs directory cannot be found. Please run this script from within the InvokeAI distribution directory, or from within the invokeai runtime directory." + +Datasets = OmegaConf.load(Dataset_path) +completer = generic_completer(['yes','no']) + +Config_preamble = '''# This file describes the alternative machine learning models +# available to InvokeAI script. +# +# To add a new model, follow the examples below. Each +# model requires a model config file, a weights file, +# and the width and height of the images it +# was trained on. +''' + +#--------------------------------------------- +def introduction(): + print( + '''Welcome to InvokeAI. This script will help download the Stable Diffusion weight files +and other large models that are needed for text to image generation. At any point you may interrupt +this program and resume later.\n''' + ) + +#-------------------------------------------- +def postscript(): + print( + '''\n** Model Installation Successful **\nYou're all set! You may now launch InvokeAI using one of these two commands: +Web version: + python scripts/invoke.py --web (connect to http://localhost:9090) +Command-line version: + python scripts/invoke.py + +If you installed manually, remember to activate the 'invokeai' +environment before running invoke.py. If you installed using the +automated installation script, execute "invoke.sh" (Linux/Mac) or +"invoke.bat" (Windows) to start InvokeAI. + +Have fun! +''' +) + +#--------------------------------------------- +def yes_or_no(prompt:str, default_yes=True): + completer.set_options(['yes','no']) + completer.complete_extensions(None) # turn off path-completion mode + default = "y" if default_yes else 'n' + response = input(f'{prompt} [{default}] ') or default + if default_yes: + return response[0] not in ('n','N') + else: + return response[0] in ('y','Y') + +#--------------------------------------------- +def user_wants_to_download_weights()->str: + ''' + Returns one of "skip", "recommended" or "customized" + ''' + print('''You can download and configure the weights files manually or let this +script do it for you. Manual installation is described at: + +https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALLING_MODELS.md + +You may download the recommended models (about 10GB total), select a customized set, or +completely skip this step. +''' + ) + completer.set_options(['recommended','customized','skip']) + completer.complete_extensions(None) # turn off path-completion mode + selection = None + while selection is None: + choice = input('Download ecommended models, ustomize the list, or kip this step? [r]: ') + if choice.startswith(('r','R')) or len(choice)==0: + selection = 'recommended' + elif choice.startswith(('c','C')): + selection = 'customized' + elif choice.startswith(('s','S')): + selection = 'skip' + return selection + +#--------------------------------------------- +def select_datasets(action:str): + done = False + while not done: + datasets = dict() + dflt = None # the first model selected will be the default; TODO let user change + counter = 1 + + if action == 'customized': + print(''' +Choose the weight file(s) you wish to download. Before downloading you +will be given the option to view and change your selections. +''' + ) + for ds in Datasets.keys(): + recommended = '(recommended)' if Datasets[ds]['recommended'] else '' + print(f'[{counter}] {ds}:\n {Datasets[ds]["description"]} {recommended}') + if yes_or_no(' Download?',default_yes=Datasets[ds]['recommended']): + datasets[ds]=counter + counter += 1 + else: + for ds in Datasets.keys(): + if Datasets[ds]['recommended']: + datasets[ds]=counter + counter += 1 + + print('The following weight files will be downloaded:') + for ds in datasets: + dflt = '*' if dflt is None else '' + print(f' [{datasets[ds]}] {ds}{dflt}') + print("*default") + ok_to_download = yes_or_no('Ok to download?') + if not ok_to_download: + if yes_or_no('Change your selection?'): + action = 'customized' + pass + else: + done = True + else: + done = True + return datasets if ok_to_download else None + +#--------------------------------------------- +def recommended_datasets()->dict: + datasets = dict() + for ds in Datasets.keys(): + if Datasets[ds]['recommended']: + datasets[ds]=True + return datasets + +#-------------------------------Authenticate against Hugging Face +def authenticate(): + print(''' +To download the Stable Diffusion weight files from the official Hugging Face +repository, you need to read and accept the CreativeML Responsible AI license. + +This involves a few easy steps. + +1. If you have not already done so, create an account on Hugging Face's web site + using the "Sign Up" button: + + https://huggingface.co/join + + You will need to verify your email address as part of the HuggingFace + registration process. + +2. Log into your Hugging Face account: + + https://huggingface.co/login + +3. Accept the license terms located here: + + https://huggingface.co/runwayml/stable-diffusion-v1-5 + + and here: + + https://huggingface.co/runwayml/stable-diffusion-inpainting + + (Yes, you have to accept two slightly different license agreements) +''' + ) + input('Press when you are ready to continue:') + print('(Fetching Hugging Face token from cache...',end='') + access_token = HfFolder.get_token() + if access_token is not None: + print('found') + + if access_token is None: + print('not found') + print(''' +4. Thank you! The last step is to enter your HuggingFace access token so that + this script is authorized to initiate the download. Go to the access tokens + page of your Hugging Face account and create a token by clicking the + "New token" button: + + https://huggingface.co/settings/tokens + + (You can enter anything you like in the token creation field marked "Name". + "Role" should be "read"). + + Now copy the token to your clipboard and paste it here: ''' + ) + access_token = getpass_asterisk.getpass_asterisk() + return access_token + +#--------------------------------------------- +# look for legacy model.ckpt in models directory and offer to +# normalize its name +def migrate_models_ckpt(): + model_path = os.path.join(Globals.root,Model_dir,Weights_dir) + if not os.path.exists(os.path.join(model_path,'model.ckpt')): + return + new_name = Datasets['stable-diffusion-1.4']['file'] + print('You seem to have the Stable Diffusion v4.1 "model.ckpt" already installed.') + rename = yes_or_no(f'Ok to rename it to "{new_name}" for future reference?') + if rename: + print(f'model.ckpt => {new_name}') + os.replace(os.path.join(model_path,'model.ckpt'),os.path.join(model_path,new_name)) + +#--------------------------------------------- +def download_weight_datasets(models:dict, access_token:str): + migrate_models_ckpt() + successful = dict() + for mod in models.keys(): + repo_id = Datasets[mod]['repo_id'] + filename = Datasets[mod]['file'] + dest = os.path.join(Globals.root,Model_dir,Weights_dir) + success = hf_download_with_resume( + repo_id=repo_id, + model_dir=dest, + model_name=filename, + access_token=access_token + ) + if success: + successful[mod] = True + if len(successful) < len(models): + print(f'\n\n** There were errors downloading one or more files. **') + print('Please double-check your license agreements, and your access token.') + HfFolder.delete_token() + print('Press any key to try again. Type ^C to quit.\n') + input() + return None + + HfFolder.save_token(access_token) + keys = ', '.join(successful.keys()) + print(f'Successfully installed {keys}') + return successful + +#--------------------------------------------- +def hf_download_with_resume(repo_id:str, model_dir:str, model_name:str, access_token:str=None)->bool: + model_dest = os.path.join(model_dir, model_name) + os.makedirs(model_dir, exist_ok=True) + + url = hf_hub_url(repo_id, model_name) + + header = {"Authorization": f'Bearer {access_token}'} if access_token else {} + open_mode = 'wb' + exist_size = 0 + + if os.path.exists(model_dest): + exist_size = os.path.getsize(model_dest) + header['Range'] = f'bytes={exist_size}-' + open_mode = 'ab' + + resp = requests.get(url, headers=header, stream=True) + total = int(resp.headers.get('content-length', 0)) + + if resp.status_code==416: # "range not satisfiable", which means nothing to return + print(f'* {model_name}: complete file found. Skipping.') + return True + elif resp.status_code != 200: + print(f'** An error occurred during downloading {model_name}: {resp.reason}') + elif exist_size > 0: + print(f'* {model_name}: partial file found. Resuming...') + else: + print(f'* {model_name}: Downloading...') + + try: + if total < 2000: + print(f'*** ERROR DOWNLOADING {model_name}: {resp.text}') + return False + + with open(model_dest, open_mode) as file, tqdm( + desc=model_name, + initial=exist_size, + total=total+exist_size, + unit='iB', + unit_scale=True, + unit_divisor=1000, + ) as bar: + for data in resp.iter_content(chunk_size=1024): + size = file.write(data) + bar.update(size) + except Exception as e: + print(f'An error occurred while downloading {model_name}: {str(e)}') + return False + return True + +#--------------------------------------------- +def download_with_progress_bar(model_url:str, model_dest:str, label:str='the'): + try: + print(f'Installing {label} model file {model_url}...',end='',file=sys.stderr) + if not os.path.exists(model_dest): + os.makedirs(os.path.dirname(model_dest), exist_ok=True) + print('',file=sys.stderr) + request.urlretrieve(model_url,model_dest,ProgressBar(os.path.basename(model_dest))) + print('...downloaded successfully', file=sys.stderr) + else: + print('...exists', file=sys.stderr) + except Exception: + print('...download failed') + print(f'Error downloading {label} model') + print(traceback.format_exc()) + + +#--------------------------------------------- +def update_config_file(successfully_downloaded:dict,opt:dict): + config_file = opt.config_file or Default_config_file + config_file = os.path.normpath(os.path.join(Globals.root,config_file)) + + yaml = new_config_file_contents(successfully_downloaded,config_file) + + try: + if os.path.exists(config_file): + print(f'** {config_file} exists. Renaming to {config_file}.orig') + os.replace(config_file,f'{config_file}.orig') + tmpfile = os.path.join(os.path.dirname(config_file),'new_config.tmp') + with open(tmpfile, 'w') as outfile: + outfile.write(Config_preamble) + outfile.write(yaml) + os.replace(tmpfile,config_file) + + except Exception as e: + print(f'**Error creating config file {config_file}: {str(e)} **') + return + + print(f'Successfully created new configuration file {config_file}') + + +#--------------------------------------------- +def new_config_file_contents(successfully_downloaded:dict, config_file:str)->str: + if os.path.exists(config_file): + conf = OmegaConf.load(config_file) + else: + conf = OmegaConf.create() + + # find the VAE file, if there is one + vaes = {} + default_selected = False + + for model in successfully_downloaded: + a = Datasets[model]['config'].split('/') + if a[0] != 'VAE': + continue + vae_target = a[1] if len(a)>1 else 'default' + vaes[vae_target] = Datasets[model]['file'] + + for model in successfully_downloaded: + if Datasets[model]['config'].startswith('VAE'): # skip VAE entries + continue + stanza = conf[model] if model in conf else { } + + stanza['description'] = Datasets[model]['description'] + stanza['weights'] = os.path.join(Model_dir,Weights_dir,Datasets[model]['file']) + stanza['config'] = os.path.normpath(os.path.join(SD_Configs, Datasets[model]['config'])) + stanza['width'] = Datasets[model]['width'] + stanza['height'] = Datasets[model]['height'] + stanza.pop('default',None) # this will be set later + if vaes: + for target in vaes: + if re.search(target, model, flags=re.IGNORECASE): + stanza['vae'] = os.path.normpath(os.path.join(Model_dir,Weights_dir,vaes[target])) + else: + stanza['vae'] = os.path.normpath(os.path.join(Model_dir,Weights_dir,vaes['default'])) + # BUG - the first stanza is always the default. User should select. + if not default_selected: + stanza['default'] = True + default_selected = True + conf[model] = stanza + return OmegaConf.to_yaml(conf) + +#--------------------------------------------- +# this will preload the Bert tokenizer fles +def download_bert(): + print('Installing bert tokenizer (ignore deprecation errors)...', end='',file=sys.stderr) + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', category=DeprecationWarning) + from transformers import BertTokenizerFast, AutoFeatureExtractor + download_from_hf(BertTokenizerFast,'bert-base-uncased') + print('...success',file=sys.stderr) + +#--------------------------------------------- +def download_from_hf(model_class:object, model_name:str): + print('',file=sys.stderr) # to prevent tqdm from overwriting + return model_class.from_pretrained(model_name, + cache_dir=os.path.join(Globals.root,Model_dir,model_name), + resume_download=True + ) + +#--------------------------------------------- +def download_clip(): + print('Installing CLIP model (ignore deprecation errors)...',file=sys.stderr) + version = 'openai/clip-vit-large-patch14' + print('Tokenizer...',file=sys.stderr, end='') + download_from_hf(CLIPTokenizer,version) + print('Text model...',file=sys.stderr, end='') + download_from_hf(CLIPTextModel,version) + print('...success',file=sys.stderr) + +#--------------------------------------------- +def download_realesrgan(): + print('Installing models from RealESRGAN...',file=sys.stderr) + model_url = 'https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth' + model_dest = os.path.join(Globals.root,'models/realesrgan/realesr-general-x4v3.pth') + download_with_progress_bar(model_url, model_dest, 'RealESRGAN') + +def download_gfpgan(): + print('Installing GFPGAN models...',file=sys.stderr) + for model in ( + [ + 'https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth', + './models/gfpgan/GFPGANv1.4.pth' + ], + [ + 'https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth', + './models/gfpgan/weights/detection_Resnet50_Final.pth' + ], + [ + 'https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth', + './models/gfpgan/weights/parsing_parsenet.pth' + ], + ): + model_url,model_dest = model[0],os.path.join(Globals.root,model[1]) + download_with_progress_bar(model_url, model_dest, 'GFPGAN weights') + +#--------------------------------------------- +def download_codeformer(): + print('Installing CodeFormer model file...',file=sys.stderr) + model_url = 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth' + model_dest = os.path.join(Globals.root,'models/codeformer/codeformer.pth') + download_with_progress_bar(model_url, model_dest, 'CodeFormer') + +#--------------------------------------------- +def download_clipseg(): + print('Installing clipseg model for text-based masking...',end='', file=sys.stderr) + import zipfile + try: + model_url = 'https://owncloud.gwdg.de/index.php/s/ioHbRzFx6th32hn/download' + model_dest = os.path.join(Globals.root,'models/clipseg/clipseg_weights') + weights_zip = 'models/clipseg/weights.zip' + + if not os.path.exists(model_dest): + os.makedirs(os.path.dirname(model_dest), exist_ok=True) + if not os.path.exists(f'{model_dest}/rd64-uni-refined.pth'): + dest = os.path.join(Globals.root,weights_zip) + request.urlretrieve(model_url,dest) + with zipfile.ZipFile(dest,'r') as zip: + zip.extractall(os.path.join(Globals.root,'models/clipseg')) + os.remove(dest) + + from clipseg.clipseg import CLIPDensePredT + model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64, ) + model.eval() + model.load_state_dict( + torch.load( + os.path.join(Globals.root,'models/clipseg/clipseg_weights/rd64-uni-refined.pth'), + map_location=torch.device('cpu') + ), + strict=False, + ) + except Exception: + print('Error installing clipseg model:') + print(traceback.format_exc()) + print('...success',file=sys.stderr) + +#------------------------------------- +def download_safety_checker(): + print('Installing model for NSFW content detection...',file=sys.stderr) + try: + from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker + from transformers import AutoFeatureExtractor + except ModuleNotFoundError: + print('Error installing NSFW checker model:') + print(traceback.format_exc()) + return + safety_model_id = "CompVis/stable-diffusion-safety-checker" + print('AutoFeatureExtractor...', end='',file=sys.stderr) + download_from_hf(AutoFeatureExtractor,safety_model_id) + print('StableDiffusionSafetyChecker...', end='',file=sys.stderr) + download_from_hf(StableDiffusionSafetyChecker,safety_model_id) + print('...success',file=sys.stderr) + +#------------------------------------- +def download_weights(opt:dict): + if opt.yes_to_all: + models = recommended_datasets() + access_token = HfFolder.get_token() + if len(models)>0 and access_token is not None: + successfully_downloaded = download_weight_datasets(models, access_token) + update_config_file(successfully_downloaded,opt) + return + else: + print('** Cannot download models because no Hugging Face access token could be found. Please re-run without --yes') + return + else: + choice = user_wants_to_download_weights() + + if choice == 'recommended': + models = recommended_datasets() + elif choice == 'customized': + models = select_datasets(choice) + if models is None and yes_or_no('Quit?',default_yes=False): + sys.exit(0) + else: # 'skip' + return + + print('** LICENSE AGREEMENT FOR WEIGHT FILES **') + access_token = authenticate() + print('\n** DOWNLOADING WEIGHTS **') + successfully_downloaded = download_weight_datasets(models, access_token) + update_config_file(successfully_downloaded,opt) + +#------------------------------------- +def get_root(root:str=None)->str: + if root: + return root + elif os.environ.get('INVOKEAI_ROOT'): + return os.environ.get('INVOKEAI_ROOT') + else: + init_file = os.path.expanduser(Globals.initfile) + if not os.path.exists(init_file): + return None + + # if we get here, then we read from initfile + root = None + with open(init_file, 'r') as infile: + lines = infile.readlines() + for l in lines: + if re.search('\s*#',l): # ignore comments + continue + match = re.search('--root\s*=?\s*"?([^"]+)"?',l) + if match: + root = match.groups()[0] + root = root.strip() + return root + +#------------------------------------- +def select_root(root:str, yes_to_all:bool=False): + default = root or os.path.expanduser('~/invokeai') + if (yes_to_all): + return default + completer.set_default_dir(default) + completer.complete_extensions(()) + completer.set_line(default) + return input(f"Select a directory in which to install InvokeAI's models and configuration files [{default}]: ") or default + +#------------------------------------- +def select_outputs(root:str,yes_to_all:bool=False): + default = os.path.normpath(os.path.join(root,'outputs')) + if (yes_to_all): + return default + completer.set_default_dir(os.path.expanduser('~')) + completer.complete_extensions(()) + completer.set_line(default) + return input(f'Select the default directory for image outputs [{default}]: ') or default + +#------------------------------------- +def initialize_rootdir(root:str,yes_to_all:bool=False): + assert os.path.exists('./configs'),'Run this script from within the InvokeAI source code directory, "InvokeAI" or the runtime directory "invokeai".' + + print(f'** INITIALIZING INVOKEAI RUNTIME DIRECTORY **') + root_selected = False + while not root_selected: + root = select_root(root,yes_to_all) + outputs = select_outputs(root,yes_to_all) + Globals.root = os.path.abspath(root) + outputs = outputs if os.path.isabs(outputs) else os.path.abspath(os.path.join(Globals.root,outputs)) + + print(f'\nInvokeAI models and configuration files will be placed into "{root}" and image outputs will be placed into "{outputs}".') + if not yes_to_all: + root_selected = yes_or_no('Accept these locations?') + else: + root_selected = True + + print(f'\nYou may change the chosen directories at any time by editing the --root and --outdir options in "{Globals.initfile}",') + print(f'You may also change the runtime directory by setting the environment variable INVOKEAI_ROOT.\n') + + enable_safety_checker = True + default_sampler = 'k_heun' + default_steps = '20' # deliberately a string - see test below + + sampler_choices =['ddim','k_dpm_2_a','k_dpm_2','k_euler_a','k_euler','k_heun','k_lms','plms'] + + if not yes_to_all: + print('The NSFW (not safe for work) checker blurs out images that potentially contain sexual imagery.') + print('It can be selectively enabled at run time with --nsfw_checker, and disabled with --no-nsfw_checker.') + print('The following option will set whether the checker is enabled by default. Like other options, you can') + print(f'change this setting later by editing the file {Globals.initfile}.') + enable_safety_checker = yes_or_no('Enable the NSFW checker by default?',enable_safety_checker) + + print('\nThe next choice selects the sampler to use by default. Samplers have different speed/performance') + print('tradeoffs. If you are not sure what to select, accept the default.') + sampler = None + while sampler not in sampler_choices: + sampler = input(f'Default sampler to use? ({", ".join(sampler_choices)}) [{default_sampler}]:') or default_sampler + + print('\nThe number of denoising steps affects both the speed and quality of the images generated.') + print('Higher steps often (but not always) increases the quality of the image, but increases image') + print('generation time. This can be changed at run time. Accept the default if you are unsure.') + steps = '' + while not steps.isnumeric(): + steps = input(f'Default number of steps to use during generation? [{default_steps}]:') or default_steps + else: + sampler = default_sampler + steps = default_steps + + safety_checker = '--nsfw_checker' if enable_safety_checker else '--no-nsfw_checker' + + for name in ('models','configs','embeddings'): + os.makedirs(os.path.join(root,name), exist_ok=True) + for src in (['configs']): + dest = os.path.join(root,src) + if not os.path.samefile(src,dest): + shutil.copytree(src,dest,dirs_exist_ok=True) + os.makedirs(outputs, exist_ok=True) + + init_file = os.path.expanduser(Globals.initfile) + + print(f'Creating the initialization file at "{init_file}".\n') + with open(init_file,'w') as f: + f.write(f'''# InvokeAI initialization file +# This is the InvokeAI initialization file, which contains command-line default values. +# Feel free to edit. If anything goes wrong, you can re-initialize this file by deleting +# or renaming it and then running configure_invokeai.py again. + +# The --root option below points to the folder in which InvokeAI stores its models, configs and outputs. +--root="{Globals.root}" + +# the --outdir option controls the default location of image files. +--outdir="{outputs}" + +# generation arguments +{safety_checker} +--sampler={sampler} +--steps={steps} + +# You may place other frequently-used startup commands here, one or more per line. +# Examples: +# --web --host=0.0.0.0 +# --steps=20 +# -Ak_euler_a -C10.0 +# +''') + +#------------------------------------- +class ProgressBar(): + def __init__(self,model_name='file'): + self.pbar = None + self.name = model_name + + def __call__(self, block_num, block_size, total_size): + if not self.pbar: + self.pbar=tqdm(desc=self.name, + initial=0, + unit='iB', + unit_scale=True, + unit_divisor=1000, + total=total_size) + self.pbar.update(block_size) + +#------------------------------------- +def main(): + parser = argparse.ArgumentParser(description='InvokeAI model downloader') + parser.add_argument('--interactive', + dest='interactive', + action=argparse.BooleanOptionalAction, + default=True, + help='run in interactive mode (default)') + parser.add_argument('--yes','-y', + dest='yes_to_all', + action='store_true', + help='answer "yes" to all prompts') + parser.add_argument('--config_file', + '-c', + dest='config_file', + type=str, + default='./configs/models.yaml', + help='path to configuration file to create') + parser.add_argument('--root', + dest='root', + type=str, + default=None, + help='path to root of install directory') + opt = parser.parse_args() + + + # setting a global here + Globals.root = os.path.expanduser(get_root(opt.root) or '') + + try: + introduction() + + # We check for to see if the runtime directory is correctly initialized. + if Globals.root == '' \ + or not os.path.exists(os.path.join(Globals.root,'configs/stable-diffusion/v1-inference.yaml')): + initialize_rootdir(Globals.root,opt.yes_to_all) + + if opt.interactive: + print('** DOWNLOADING DIFFUSION WEIGHTS **') + download_weights(opt) + print('\n** DOWNLOADING SUPPORT MODELS **') + download_bert() + download_clip() + download_realesrgan() + download_gfpgan() + download_codeformer() + download_clipseg() + download_safety_checker() + postscript() + except KeyboardInterrupt: + print('\nGoodbye! Come back soon.') + except Exception as e: + print(f'\nA problem occurred during initialization.\nThe error was: "{str(e)}"') + print(traceback.format_exc()) + +#------------------------------------- +if __name__ == '__main__': + main() diff --git a/scripts/dream.py b/scripts/dream.py index fd86e8edc1..148c0c0c0d 100644 --- a/scripts/dream.py +++ b/scripts/dream.py @@ -2,10 +2,9 @@ # Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) import warnings -import invoke +import ldm.invoke.CLI +warnings.warn("dream.py is being deprecated, please run invoke.py for the " + "new UI/API or legacy_api.py for the old API", + DeprecationWarning) +ldm.invoke.CLI.main() -if __name__ == '__main__': - warnings.warn("dream.py is being deprecated, please run invoke.py for the " - "new UI/API or legacy_api.py for the old API", - DeprecationWarning) - invoke.main() diff --git a/scripts/invoke.py b/scripts/invoke.py index b68f2502ca..91c6eaadf2 100755 --- a/scripts/invoke.py +++ b/scripts/invoke.py @@ -1,933 +1,5 @@ -#!/usr/bin/env python3 -# Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) +#!/usr/bin/env python -import os -import re -import sys -import shlex -import copy -import warnings -import time -import traceback -import yaml +import ldm.invoke.CLI +ldm.invoke.CLI.main() -sys.path.append('.') # corrects a weird problem on Macs -from ldm.invoke.prompt_parser import PromptParser -from ldm.invoke.readline import get_completer -from ldm.invoke.args import Args, metadata_dumps, metadata_from_png, dream_cmd_from_png -from ldm.invoke.pngwriter import PngWriter, retrieve_metadata, write_metadata -from ldm.invoke.image_util import make_grid -from ldm.invoke.log import write_log -from omegaconf import OmegaConf -from pathlib import Path -import pyparsing - -# global used in multiple functions (fix) -infile = None - -def main(): - """Initialize command-line parsers and the diffusion model""" - global infile - print('* Initializing, be patient...') - - opt = Args() - args = opt.parse_args() - if not args: - sys.exit(-1) - - if args.laion400m: - print('--laion400m flag has been deprecated. Please use --model laion400m instead.') - sys.exit(-1) - if args.weights: - print('--weights argument has been deprecated. Please edit ./configs/models.yaml, and select the weights using --model instead.') - sys.exit(-1) - if args.max_loaded_models is not None: - if args.max_loaded_models <= 0: - print('--max_loaded_models must be >= 1; using 1') - args.max_loaded_models = 1 - - from ldm.generate import Generate - - # these two lines prevent a horrible warning message from appearing - # when the frozen CLIP tokenizer is imported - import transformers - transformers.logging.set_verbosity_error() - - # Loading Face Restoration and ESRGAN Modules - gfpgan,codeformer,esrgan = load_face_restoration(opt) - - # make sure the output directory exists - if not os.path.exists(opt.outdir): - os.makedirs(opt.outdir) - - # load the infile as a list of lines - if opt.infile: - try: - if os.path.isfile(opt.infile): - infile = open(opt.infile, 'r', encoding='utf-8') - elif opt.infile == '-': # stdin - infile = sys.stdin - else: - raise FileNotFoundError(f'{opt.infile} not found.') - except (FileNotFoundError, IOError) as e: - print(f'{e}. Aborting.') - sys.exit(-1) - - # creating a Generate object: - try: - gen = Generate( - conf = opt.conf, - model = opt.model, - sampler_name = opt.sampler_name, - embedding_path = opt.embedding_path, - full_precision = opt.full_precision, - precision = opt.precision, - gfpgan=gfpgan, - codeformer=codeformer, - esrgan=esrgan, - free_gpu_mem=opt.free_gpu_mem, - safety_checker=opt.safety_checker, - max_loaded_models=opt.max_loaded_models, - ) - except FileNotFoundError: - print('** You appear to be missing configs/models.yaml') - print('** You can either exit this script and run scripts/preload_models.py, or fix the problem now.') - emergency_model_create(opt) - sys.exit(-1) - except (IOError, KeyError) as e: - print(f'{e}. Aborting.') - sys.exit(-1) - - if opt.seamless: - print(">> changed to seamless tiling mode") - - # preload the model - gen.load_model() - - # web server loops forever - if opt.web or opt.gui: - invoke_ai_web_server_loop(gen, gfpgan, codeformer, esrgan) - sys.exit(0) - - if not infile: - print( - "\n* Initialization done! Awaiting your command (-h for help, 'q' to quit)" - ) - - try: - main_loop(gen, opt) - except KeyboardInterrupt: - print("\ngoodbye!") - -# TODO: main_loop() has gotten busy. Needs to be refactored. -def main_loop(gen, opt): - """prompt/read/execute loop""" - global infile - done = False - doneAfterInFile = infile is not None - path_filter = re.compile(r'[<>:"/\\|?*]') - last_results = list() - model_config = OmegaConf.load(opt.conf) - - # The readline completer reads history from the .dream_history file located in the - # output directory specified at the time of script launch. We do not currently support - # changing the history file midstream when the output directory is changed. - completer = get_completer(opt, models=list(model_config.keys())) - completer.set_default_dir(opt.outdir) - output_cntr = completer.get_current_history_length()+1 - - # os.pathconf is not available on Windows - if hasattr(os, 'pathconf'): - path_max = os.pathconf(opt.outdir, 'PC_PATH_MAX') - name_max = os.pathconf(opt.outdir, 'PC_NAME_MAX') - else: - path_max = 260 - name_max = 255 - - while not done: - - operation = 'generate' - - try: - command = get_next_command(infile) - except EOFError: - done = infile is None or doneAfterInFile - infile = None - continue - - # skip empty lines - if not command.strip(): - continue - - if command.startswith(('#', '//')): - continue - - if len(command.strip()) == 1 and command.startswith('q'): - done = True - break - - if command.startswith('!'): - command, operation = do_command(command, gen, opt, completer) - - if operation is None: - continue - - if opt.parse_cmd(command) is None: - continue - - if opt.init_img: - try: - if not opt.prompt: - oldargs = metadata_from_png(opt.init_img) - opt.prompt = oldargs.prompt - print(f'>> Retrieved old prompt "{opt.prompt}" from {opt.init_img}') - except (OSError, AttributeError, KeyError): - pass - - if len(opt.prompt) == 0: - opt.prompt = '' - - # width and height are set by model if not specified - if not opt.width: - opt.width = gen.width - if not opt.height: - opt.height = gen.height - - # retrieve previous value of init image if requested - if opt.init_img is not None and re.match('^-\\d+$', opt.init_img): - try: - opt.init_img = last_results[int(opt.init_img)][0] - print(f'>> Reusing previous image {opt.init_img}') - except IndexError: - print( - f'>> No previous initial image at position {opt.init_img} found') - opt.init_img = None - continue - - # try to relativize pathnames - for attr in ('init_img','init_mask','init_color','embedding_path'): - if getattr(opt,attr) and not os.path.exists(getattr(opt,attr)): - basename = getattr(opt,attr) - path = os.path.join(opt.outdir,basename) - setattr(opt,attr,path) - - # retrieve previous value of seed if requested - # Exception: for postprocess operations negative seed values - # mean "discard the original seed and generate a new one" - # (this is a non-obvious hack and needs to be reworked) - if opt.seed is not None and opt.seed < 0 and operation != 'postprocess': - try: - opt.seed = last_results[opt.seed][1] - print(f'>> Reusing previous seed {opt.seed}') - except IndexError: - print(f'>> No previous seed at position {opt.seed} found') - opt.seed = None - continue - - if opt.strength is None: - opt.strength = 0.75 if opt.out_direction is None else 0.83 - - if opt.with_variations is not None: - opt.with_variations = split_variations(opt.with_variations) - - if opt.prompt_as_dir and operation == 'generate': - # sanitize the prompt to a valid folder name - subdir = path_filter.sub('_', opt.prompt)[:name_max].rstrip(' .') - - # truncate path to maximum allowed length - # 39 is the length of '######.##########.##########-##.png', plus two separators and a NUL - subdir = subdir[:(path_max - 39 - len(os.path.abspath(opt.outdir)))] - current_outdir = os.path.join(opt.outdir, subdir) - - print('Writing files to directory: "' + current_outdir + '"') - - # make sure the output directory exists - if not os.path.exists(current_outdir): - os.makedirs(current_outdir) - else: - if not os.path.exists(opt.outdir): - os.makedirs(opt.outdir) - current_outdir = opt.outdir - - # Write out the history at this point. - # TODO: Fix the parsing of command-line parameters - # so that !operations don't need to be stripped and readded - if operation == 'postprocess': - completer.add_history(f'!fix {command}') - elif operation == 'mask': - completer.add_history(f'!mask {command}') - else: - completer.add_history(command) - - # Here is where the images are actually generated! - last_results = [] - try: - file_writer = PngWriter(current_outdir) - results = [] # list of filename, prompt pairs - grid_images = dict() # seed -> Image, only used if `opt.grid` - prior_variations = opt.with_variations or [] - prefix = file_writer.unique_prefix() - step_callback = make_step_callback(gen, opt, prefix) if opt.save_intermediates > 0 else None - - def image_writer(image, seed, upscaled=False, first_seed=None, use_prefix=None): - # note the seed is the seed of the current image - # the first_seed is the original seed that noise is added to - # when the -v switch is used to generate variations - nonlocal prior_variations - nonlocal prefix - - path = None - if opt.grid: - grid_images[seed] = image - - elif operation == 'mask': - filename = f'{prefix}.{use_prefix}.{seed}.png' - tm = opt.text_mask[0] - th = opt.text_mask[1] if len(opt.text_mask)>1 else 0.5 - formatted_dream_prompt = f'!mask {opt.input_file_path} -tm {tm} {th}' - path = file_writer.save_image_and_prompt_to_png( - image = image, - dream_prompt = formatted_dream_prompt, - metadata = {}, - name = filename, - compress_level = opt.png_compression, - ) - results.append([path, formatted_dream_prompt]) - - else: - if use_prefix is not None: - prefix = use_prefix - postprocessed = upscaled if upscaled else operation=='postprocess' - filename, formatted_dream_prompt = prepare_image_metadata( - opt, - prefix, - seed, - operation, - prior_variations, - postprocessed, - first_seed - ) - path = file_writer.save_image_and_prompt_to_png( - image = image, - dream_prompt = formatted_dream_prompt, - metadata = metadata_dumps( - opt, - seeds = [seed if opt.variation_amount==0 and len(prior_variations)==0 else first_seed], - model_hash = gen.model_hash, - ), - name = filename, - compress_level = opt.png_compression, - ) - - # update rfc metadata - if operation == 'postprocess': - tool = re.match('postprocess:(\w+)',opt.last_operation).groups()[0] - add_postprocessing_to_metadata( - opt, - opt.input_file_path, - filename, - tool, - formatted_dream_prompt, - ) - - if (not postprocessed) or opt.save_original: - # only append to results if we didn't overwrite an earlier output - results.append([path, formatted_dream_prompt]) - - # so that the seed autocompletes (on linux|mac when -S or --seed specified - if completer and operation == 'generate': - completer.add_seed(seed) - completer.add_seed(first_seed) - last_results.append([path, seed]) - - if operation == 'generate': - catch_ctrl_c = infile is None # if running interactively, we catch keyboard interrupts - opt.last_operation='generate' - try: - gen.prompt2image( - image_callback=image_writer, - step_callback=step_callback, - catch_interrupts=catch_ctrl_c, - **vars(opt) - ) - except (PromptParser.ParsingException, pyparsing.ParseException) as e: - print('** An error occurred while processing your prompt **') - print(f'** {str(e)} **') - elif operation == 'postprocess': - print(f'>> fixing {opt.prompt}') - opt.last_operation = do_postprocess(gen,opt,image_writer) - - elif operation == 'mask': - print(f'>> generating masks from {opt.prompt}') - do_textmask(gen, opt, image_writer) - - if opt.grid and len(grid_images) > 0: - grid_img = make_grid(list(grid_images.values())) - grid_seeds = list(grid_images.keys()) - first_seed = last_results[0][1] - filename = f'{prefix}.{first_seed}.png' - formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed,grid=True,iterations=len(grid_images)) - formatted_dream_prompt += f' # {grid_seeds}' - metadata = metadata_dumps( - opt, - seeds = grid_seeds, - model_hash = gen.model_hash - ) - path = file_writer.save_image_and_prompt_to_png( - image = grid_img, - dream_prompt = formatted_dream_prompt, - metadata = metadata, - name = filename - ) - results = [[path, formatted_dream_prompt]] - - except AssertionError as e: - print(e) - continue - - except OSError as e: - print(e) - continue - - print('Outputs:') - log_path = os.path.join(current_outdir, 'invoke_log') - output_cntr = write_log(results, log_path ,('txt', 'md'), output_cntr) - print() - - print('goodbye!') - -# TO DO: remove repetitive code and the awkward command.replace() trope -# Just do a simple parse of the command! -def do_command(command:str, gen, opt:Args, completer) -> tuple: - global infile - operation = 'generate' # default operation, alternative is 'postprocess' - - if command.startswith('!dream'): # in case a stored prompt still contains the !dream command - command = command.replace('!dream ','',1) - - elif command.startswith('!fix'): - command = command.replace('!fix ','',1) - operation = 'postprocess' - - elif command.startswith('!mask'): - command = command.replace('!mask ','',1) - operation = 'mask' - - elif command.startswith('!switch'): - model_name = command.replace('!switch ','',1) - gen.set_model(model_name) - completer.add_history(command) - operation = None - - elif command.startswith('!models'): - gen.model_cache.print_models() - completer.add_history(command) - operation = None - - elif command.startswith('!import'): - path = shlex.split(command) - if len(path) < 2: - print('** please provide a path to a .ckpt or .vae model file') - elif not os.path.exists(path[1]): - print(f'** {path[1]}: file not found') - else: - add_weights_to_config(path[1], gen, opt, completer) - completer.add_history(command) - operation = None - - elif command.startswith('!edit'): - path = shlex.split(command) - if len(path) < 2: - print('** please provide the name of a model') - else: - edit_config(path[1], gen, opt, completer) - completer.add_history(command) - operation = None - - elif command.startswith('!del'): - path = shlex.split(command) - if len(path) < 2: - print('** please provide the name of a model') - else: - del_config(path[1], gen, opt, completer) - completer.add_history(command) - operation = None - - elif command.startswith('!fetch'): - file_path = command.replace('!fetch','',1).strip() - retrieve_dream_command(opt,file_path,completer) - completer.add_history(command) - operation = None - - elif command.startswith('!replay'): - file_path = command.replace('!replay','',1).strip() - if infile is None and os.path.isfile(file_path): - infile = open(file_path, 'r', encoding='utf-8') - completer.add_history(command) - operation = None - - elif command.startswith('!history'): - completer.show_history() - operation = None - - elif command.startswith('!search'): - search_str = command.replace('!search','',1).strip() - completer.show_history(search_str) - operation = None - - elif command.startswith('!clear'): - completer.clear_history() - operation = None - - elif re.match('^!(\d+)',command): - command_no = re.match('^!(\d+)',command).groups()[0] - command = completer.get_line(int(command_no)) - completer.set_line(command) - operation = None - - else: # not a recognized command, so give the --help text - command = '-h' - return command, operation - - -def add_weights_to_config(model_path:str, gen, opt, completer): - print(f'>> Model import in process. Please enter the values needed to configure this model:') - print() - - new_config = {} - new_config['weights'] = model_path - - done = False - while not done: - model_name = input('Short name for this model: ') - if not re.match('^[\w._-]+$',model_name): - print('** model name must contain only words, digits and the characters [._-] **') - else: - done = True - new_config['description'] = input('Description of this model: ') - - completer.complete_extensions(('.yaml','.yml')) - completer.linebuffer = 'configs/stable-diffusion/v1-inference.yaml' - - done = False - while not done: - new_config['config'] = input('Configuration file for this model: ') - done = os.path.exists(new_config['config']) - - done = False - completer.complete_extensions(('.vae.pt','.vae','.ckpt')) - while not done: - vae = input('VAE autoencoder file for this model [None]: ') - if os.path.exists(vae): - new_config['vae'] = vae - done = True - else: - done = len(vae)==0 - - completer.complete_extensions(None) - - for field in ('width','height'): - done = False - while not done: - try: - completer.linebuffer = '512' - value = int(input(f'Default image {field}: ')) - assert value >= 64 and value <= 2048 - new_config[field] = value - done = True - except: - print('** Please enter a valid integer between 64 and 2048') - - make_default = input('Make this the default model? [n] ') in ('y','Y') - - if write_config_file(opt.conf, gen, model_name, new_config, make_default=make_default): - completer.add_model(model_name) - -def del_config(model_name:str, gen, opt, completer): - current_model = gen.model_name - if model_name == current_model: - print("** Can't delete active model. !switch to another model first. **") - return - if gen.model_cache.del_model(model_name): - gen.model_cache.commit(opt.conf) - print(f'** {model_name} deleted') - completer.del_model(model_name) - -def edit_config(model_name:str, gen, opt, completer): - config = gen.model_cache.config - - if model_name not in config: - print(f'** Unknown model {model_name}') - return - - print(f'\n>> Editing model {model_name} from configuration file {opt.conf}') - - conf = config[model_name] - new_config = {} - completer.complete_extensions(('.yaml','.yml','.ckpt','.vae.pt')) - for field in ('description', 'weights', 'vae', 'config', 'width','height'): - completer.linebuffer = str(conf[field]) if field in conf else '' - new_value = input(f'{field}: ') - new_config[field] = int(new_value) if field in ('width','height') else new_value - make_default = input('Make this the default model? [n] ') in ('y','Y') - completer.complete_extensions(None) - write_config_file(opt.conf, gen, model_name, new_config, clobber=True, make_default=make_default) - -def write_config_file(conf_path, gen, model_name, new_config, clobber=False, make_default=False): - current_model = gen.model_name - - op = 'modify' if clobber else 'import' - print('\n>> New configuration:') - if make_default: - new_config['default'] = True - print(yaml.dump({model_name:new_config})) - if input(f'OK to {op} [n]? ') not in ('y','Y'): - return False - - try: - print('>> Verifying that new model loads...') - gen.model_cache.add_model(model_name, new_config, clobber) - assert gen.set_model(model_name) is not None, 'model failed to load' - except AssertionError as e: - print(f'** aborting **') - gen.model_cache.del_model(model_name) - return False - - if make_default: - print('making this default') - gen.model_cache.set_default_model(model_name) - - gen.model_cache.commit(conf_path) - - do_switch = input(f'Keep model loaded? [y]') - if len(do_switch)==0 or do_switch[0] in ('y','Y'): - pass - else: - gen.set_model(current_model) - return True - -def do_textmask(gen, opt, callback): - image_path = opt.prompt - if not os.path.exists(image_path): - image_path = os.path.join(opt.outdir,image_path) - assert os.path.exists(image_path), '** "{opt.prompt}" not found. Please enter the name of an existing image file to mask **' - assert opt.text_mask is not None and len(opt.text_mask) >= 1, '** Please provide a text mask with -tm **' - opt.input_file_path = image_path - tm = opt.text_mask[0] - threshold = float(opt.text_mask[1]) if len(opt.text_mask) > 1 else 0.5 - gen.apply_textmask( - image_path = image_path, - prompt = tm, - threshold = threshold, - callback = callback, - ) - -def do_postprocess (gen, opt, callback): - file_path = opt.prompt # treat the prompt as the file pathname - if opt.new_prompt is not None: - opt.prompt = opt.new_prompt - else: - opt.prompt = None - - if os.path.dirname(file_path) == '': #basename given - file_path = os.path.join(opt.outdir,file_path) - - opt.input_file_path = file_path - - tool=None - if opt.facetool_strength > 0: - tool = opt.facetool - elif opt.embiggen: - tool = 'embiggen' - elif opt.upscale: - tool = 'upscale' - elif opt.out_direction: - tool = 'outpaint' - elif opt.outcrop: - tool = 'outcrop' - opt.save_original = True # do not overwrite old image! - opt.last_operation = f'postprocess:{tool}' - try: - gen.apply_postprocessor( - image_path = file_path, - tool = tool, - facetool_strength = opt.facetool_strength, - codeformer_fidelity = opt.codeformer_fidelity, - save_original = opt.save_original, - upscale = opt.upscale, - out_direction = opt.out_direction, - outcrop = opt.outcrop, - callback = callback, - opt = opt, - ) - except OSError: - print(traceback.format_exc(), file=sys.stderr) - print(f'** {file_path}: file could not be read') - return - except (KeyError, AttributeError): - print(traceback.format_exc(), file=sys.stderr) - return - return opt.last_operation - -def add_postprocessing_to_metadata(opt,original_file,new_file,tool,command): - original_file = original_file if os.path.exists(original_file) else os.path.join(opt.outdir,original_file) - new_file = new_file if os.path.exists(new_file) else os.path.join(opt.outdir,new_file) - try: - meta = retrieve_metadata(original_file)['sd-metadata'] - except AttributeError: - meta = retrieve_metadata(new_file)['sd-metadata'] - if 'image' not in meta: - meta = metadata_dumps(opt,seeds=[opt.seed])['image'] - meta['image'] = {} - img_data = meta.get('image') - pp = img_data.get('postprocessing',[]) or [] - pp.append( - { - 'tool':tool, - 'dream_command':command, - } - ) - meta['image']['postprocessing'] = pp - write_metadata(new_file,meta) - -def prepare_image_metadata( - opt, - prefix, - seed, - operation='generate', - prior_variations=[], - postprocessed=False, - first_seed=None -): - - if postprocessed and opt.save_original: - filename = choose_postprocess_name(opt,prefix,seed) - else: - wildcards = dict(opt.__dict__) - wildcards['prefix'] = prefix - wildcards['seed'] = seed - try: - filename = opt.fnformat.format(**wildcards) - except KeyError as e: - print(f'** The filename format contains an unknown key \'{e.args[0]}\'. Will use \'{{prefix}}.{{seed}}.png\' instead') - filename = f'{prefix}.{seed}.png' - except IndexError as e: - print(f'** The filename format is broken or complete. Will use \'{{prefix}}.{{seed}}.png\' instead') - filename = f'{prefix}.{seed}.png' - - if opt.variation_amount > 0: - first_seed = first_seed or seed - this_variation = [[seed, opt.variation_amount]] - opt.with_variations = prior_variations + this_variation - formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed) - elif len(prior_variations) > 0: - formatted_dream_prompt = opt.dream_prompt_str(seed=first_seed) - elif operation == 'postprocess': - formatted_dream_prompt = '!fix '+opt.dream_prompt_str(seed=seed,prompt=opt.input_file_path) - else: - formatted_dream_prompt = opt.dream_prompt_str(seed=seed) - return filename,formatted_dream_prompt - -def choose_postprocess_name(opt,prefix,seed) -> str: - match = re.search('postprocess:(\w+)',opt.last_operation) - if match: - modifier = match.group(1) # will look like "gfpgan", "upscale", "outpaint" or "embiggen" - else: - modifier = 'postprocessed' - - counter = 0 - filename = None - available = False - while not available: - if counter == 0: - filename = f'{prefix}.{seed}.{modifier}.png' - else: - filename = f'{prefix}.{seed}.{modifier}-{counter:02d}.png' - available = not os.path.exists(os.path.join(opt.outdir,filename)) - counter += 1 - return filename - -def get_next_command(infile=None) -> str: # command string - if infile is None: - command = input('invoke> ') - else: - command = infile.readline() - if not command: - raise EOFError - else: - command = command.strip() - if len(command)>0: - print(f'#{command}') - return command - -def invoke_ai_web_server_loop(gen, gfpgan, codeformer, esrgan): - print('\n* --web was specified, starting web server...') - from backend.invoke_ai_web_server import InvokeAIWebServer - # Change working directory to the stable-diffusion directory - os.chdir( - os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) - ) - - invoke_ai_web_server = InvokeAIWebServer(generate=gen, gfpgan=gfpgan, codeformer=codeformer, esrgan=esrgan) - - try: - invoke_ai_web_server.run() - except KeyboardInterrupt: - pass - - -def split_variations(variations_string) -> list: - # shotgun parsing, woo - parts = [] - broken = False # python doesn't have labeled loops... - for part in variations_string.split(','): - seed_and_weight = part.split(':') - if len(seed_and_weight) != 2: - print(f'** Could not parse with_variation part "{part}"') - broken = True - break - try: - seed = int(seed_and_weight[0]) - weight = float(seed_and_weight[1]) - except ValueError: - print(f'** Could not parse with_variation part "{part}"') - broken = True - break - parts.append([seed, weight]) - if broken: - return None - elif len(parts) == 0: - return None - else: - return parts - -def load_face_restoration(opt): - try: - gfpgan, codeformer, esrgan = None, None, None - if opt.restore or opt.esrgan: - from ldm.invoke.restoration import Restoration - restoration = Restoration() - if opt.restore: - gfpgan, codeformer = restoration.load_face_restore_models(opt.gfpgan_model_path) - else: - print('>> Face restoration disabled') - if opt.esrgan: - esrgan = restoration.load_esrgan(opt.esrgan_bg_tile) - else: - print('>> Upscaling disabled') - else: - print('>> Face restoration and upscaling disabled') - except (ModuleNotFoundError, ImportError): - print(traceback.format_exc(), file=sys.stderr) - print('>> You may need to install the ESRGAN and/or GFPGAN modules') - return gfpgan,codeformer,esrgan - -def make_step_callback(gen, opt, prefix): - destination = os.path.join(opt.outdir,'intermediates',prefix) - os.makedirs(destination,exist_ok=True) - print(f'>> Intermediate images will be written into {destination}') - def callback(img, step): - if step % opt.save_intermediates == 0 or step == opt.steps-1: - filename = os.path.join(destination,f'{step:04}.png') - image = gen.sample_to_image(img) - image.save(filename,'PNG') - return callback - -def retrieve_dream_command(opt,command,completer): - ''' - Given a full or partial path to a previously-generated image file, - will retrieve and format the dream command used to generate the image, - and pop it into the readline buffer (linux, Mac), or print out a comment - for cut-and-paste (windows) - - Given a wildcard path to a folder with image png files, - will retrieve and format the dream command used to generate the images, - and save them to a file commands.txt for further processing - ''' - if len(command) == 0: - return - - tokens = command.split() - dir,basename = os.path.split(tokens[0]) - if len(dir) == 0: - path = os.path.join(opt.outdir,basename) - else: - path = tokens[0] - - if len(tokens) > 1: - return write_commands(opt, path, tokens[1]) - - cmd = '' - try: - cmd = dream_cmd_from_png(path) - except OSError: - print(f'## {tokens[0]}: file could not be read') - except (KeyError, AttributeError, IndexError): - print(f'## {tokens[0]}: file has no metadata') - except: - print(f'## {tokens[0]}: file could not be processed') - if len(cmd)>0: - completer.set_line(cmd) - -def write_commands(opt, file_path:str, outfilepath:str): - dir,basename = os.path.split(file_path) - try: - paths = sorted(list(Path(dir).glob(basename))) - except ValueError: - print(f'## "{basename}": unacceptable pattern') - return - - commands = [] - cmd = None - for path in paths: - try: - cmd = dream_cmd_from_png(path) - except (KeyError, AttributeError, IndexError): - print(f'## {path}: file has no metadata') - except: - print(f'## {path}: file could not be processed') - if cmd: - commands.append(f'# {path}') - commands.append(cmd) - if len(commands)>0: - dir,basename = os.path.split(outfilepath) - if len(dir)==0: - outfilepath = os.path.join(opt.outdir,basename) - with open(outfilepath, 'w', encoding='utf-8') as f: - f.write('\n'.join(commands)) - print(f'>> File {outfilepath} with commands created') - -def emergency_model_create(opt:Args): - completer = get_completer(opt) - completer.complete_extensions(('.yaml','.yml','.ckpt','.vae.pt')) - completer.set_default_dir('.') - valid_path = False - while not valid_path: - weights_file = input('Enter the path to a downloaded models file, or ^C to exit: ') - valid_path = os.path.exists(weights_file) - dir,basename = os.path.split(weights_file) - - valid_name = False - while not valid_name: - name = input('Enter a short name for this model (no spaces): ') - name = 'unnamed model' if len(name)==0 else name - valid_name = ' ' not in name - - description = input('Enter a description for this model: ') - description = 'no description' if len(description)==0 else description - - with open(opt.conf, 'w', encoding='utf-8') as f: - f.write(f'{name}:\n') - f.write(f' description: {description}\n') - f.write(f' weights: {weights_file}\n') - f.write(f' config: ./configs/stable-diffusion/v1-inference.yaml\n') - f.write(f' width: 512\n') - f.write(f' height: 512\n') - f.write(f' default: true\n') - print(f'Config file {opt.conf} is created. This script will now exit.') - print(f'After restarting you may examine the entry with !models and edit it with !edit.') - -###################################### - -if __name__ == '__main__': - main() diff --git a/scripts/legacy_api.py b/scripts/legacy_api.py index 89c5839d99..364286f9f8 100755 --- a/scripts/legacy_api.py +++ b/scripts/legacy_api.py @@ -385,6 +385,8 @@ SAMPLER_CHOICES = [ 'ddim', 'k_dpm_2_a', 'k_dpm_2', + 'k_dpmpp_2_a', + 'k_dpmpp_2', 'k_euler_a', 'k_euler', 'k_heun', diff --git a/scripts/load_models.py b/scripts/load_models.py new file mode 100644 index 0000000000..e64d0b821d --- /dev/null +++ b/scripts/load_models.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) +# Before running stable-diffusion on an internet-isolated machine, +# run this script from one with internet connectivity. The +# two machines must share a common .cache directory. + +import warnings +import configure_invokeai + +if __name__ == '__main__': + configure_invokeai.main() + diff --git a/scripts/merge_embeddings.py b/scripts/merge_embeddings.py index 452b27faf4..f419116fe9 100644 --- a/scripts/merge_embeddings.py +++ b/scripts/merge_embeddings.py @@ -1,5 +1,6 @@ from ldm.modules.encoders.modules import FrozenCLIPEmbedder, BERTEmbedder from ldm.modules.embedding_manager import EmbeddingManager +from ldm.invoke.globals import Globals import argparse, os from functools import partial @@ -51,6 +52,13 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() + parser.add_argument( + "--root_dir", + type=str, + default='.', + help="Path to the InvokeAI install directory containing 'models', 'outputs' and 'configs'." + ) + parser.add_argument( "--manager_ckpts", type=str, @@ -73,6 +81,7 @@ if __name__ == "__main__": ) args = parser.parse_args() + Globals.root=args.root_dir if args.use_bert: embedder = BERTEmbedder(n_embed=1280, n_layer=32).cuda() diff --git a/scripts/preload_models.py b/scripts/preload_models.py old mode 100644 new mode 100755 index a4c32de41e..e64d0b821d --- a/scripts/preload_models.py +++ b/scripts/preload_models.py @@ -1,581 +1,12 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python # Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) # Before running stable-diffusion on an internet-isolated machine, # run this script from one with internet connectivity. The # two machines must share a common .cache directory. -# -# Coauthor: Kevin Turner http://github.com/keturn -# -print('Loading Python libraries...\n') -import argparse -import sys -import os -import warnings -from urllib import request -from tqdm import tqdm -from omegaconf import OmegaConf -from huggingface_hub import HfFolder, hf_hub_url -from pathlib import Path -from getpass_asterisk import getpass_asterisk -from transformers import CLIPTokenizer, CLIPTextModel -import traceback -import requests -import clip -import transformers -import torch -transformers.logging.set_verbosity_error() import warnings -warnings.filterwarnings('ignore') -#warnings.simplefilter('ignore') -#warnings.filterwarnings('ignore',category=DeprecationWarning) -#warnings.filterwarnings('ignore',category=UserWarning) +import configure_invokeai -#--------------------------globals-- -Model_dir = './models/ldm/stable-diffusion-v1/' -Default_config_file = './configs/models.yaml' -SD_Configs = './configs/stable-diffusion' -Datasets = { - 'stable-diffusion-1.5': { - 'description': 'The newest Stable Diffusion version 1.5 weight file (4.27 GB)', - 'repo_id': 'runwayml/stable-diffusion-v1-5', - 'config': 'v1-inference.yaml', - 'file': 'v1-5-pruned-emaonly.ckpt', - 'recommended': True, - 'width': 512, - 'height': 512, - }, - 'inpainting-1.5': { - 'description': 'RunwayML SD 1.5 model optimized for inpainting (4.27 GB)', - 'repo_id': 'runwayml/stable-diffusion-inpainting', - 'config': 'v1-inpainting-inference.yaml', - 'file': 'sd-v1-5-inpainting.ckpt', - 'recommended': True, - 'width': 512, - 'height': 512, - }, - 'stable-diffusion-1.4': { - 'description': 'The original Stable Diffusion version 1.4 weight file (4.27 GB)', - 'repo_id': 'CompVis/stable-diffusion-v-1-4-original', - 'config': 'v1-inference.yaml', - 'file': 'sd-v1-4.ckpt', - 'recommended': False, - 'width': 512, - 'height': 512, - }, - 'waifu-diffusion-1.3': { - 'description': 'Stable Diffusion 1.4 fine tuned on anime-styled images (4.27)', - 'repo_id': 'hakurei/waifu-diffusion-v1-3', - 'config': 'v1-inference.yaml', - 'file': 'model-epoch09-float32.ckpt', - 'recommended': False, - 'width': 512, - 'height': 512, - }, - 'ft-mse-improved-autoencoder-840000': { - 'description': 'StabilityAI improved autoencoder fine-tuned for human faces (recommended; 335 MB)', - 'repo_id': 'stabilityai/sd-vae-ft-mse-original', - 'config': 'VAE', - 'file': 'vae-ft-mse-840000-ema-pruned.ckpt', - 'recommended': True, - 'width': 512, - 'height': 512, - }, -} -Config_preamble = '''# This file describes the alternative machine learning models -# available to InvokeAI script. -# -# To add a new model, follow the examples below. Each -# model requires a model config file, a weights file, -# and the width and height of the images it -# was trained on. -''' - -#--------------------------------------------- -def introduction(): - print( - '''Welcome to InvokeAI. This script will help download the Stable Diffusion weight files -and other large models that are needed for text to image generation. At any point you may interrupt -this program and resume later.\n''' - ) - -#-------------------------------------------- -def postscript(): - print( - '''\n** Model Installation Successful **\nYou're all set! You may now launch InvokeAI using one of these two commands: -Web version: - python scripts/invoke.py --web (connect to http://localhost:9090) -Command-line version: - python scripts/invoke.py - -Remember to activate that 'invokeai' environment before running invoke.py. - -Or, if you used one of the automated installers, execute "invoke.sh" (Linux/Mac) -or "invoke.bat" (Windows) to start the script. - -Have fun! -''' -) - -#--------------------------------------------- -def yes_or_no(prompt:str, default_yes=True): - default = "y" if default_yes else 'n' - response = input(f'{prompt} [{default}] ') or default - if default_yes: - return response[0] not in ('n','N') - else: - return response[0] in ('y','Y') - -#--------------------------------------------- -def user_wants_to_download_weights()->str: - ''' - Returns one of "skip", "recommended" or "customized" - ''' - print('''You can download and configure the weights files manually or let this -script do it for you. Manual installation is described at: - -https://github.com/invoke-ai/InvokeAI/blob/main/docs/installation/INSTALLING_MODELS.md - -You may download the recommended models (about 10GB total), select a customized set, or -completely skip this step. -''' - ) - selection = None - while selection is None: - choice = input('Download ecommended models, ustomize the list, or kip this step? [r]: ') - if choice.startswith(('r','R')) or len(choice)==0: - selection = 'recommended' - elif choice.startswith(('c','C')): - selection = 'customized' - elif choice.startswith(('s','S')): - selection = 'skip' - return selection - -#--------------------------------------------- -def select_datasets(action:str): - done = False - while not done: - datasets = dict() - dflt = None # the first model selected will be the default; TODO let user change - counter = 1 - - if action == 'customized': - print(''' -Choose the weight file(s) you wish to download. Before downloading you -will be given the option to view and change your selections. -''' - ) - for ds in Datasets.keys(): - recommended = '(recommended)' if Datasets[ds]['recommended'] else '' - print(f'[{counter}] {ds}:\n {Datasets[ds]["description"]} {recommended}') - if yes_or_no(' Download?',default_yes=Datasets[ds]['recommended']): - datasets[ds]=counter - counter += 1 - else: - for ds in Datasets.keys(): - if Datasets[ds]['recommended']: - datasets[ds]=counter - counter += 1 - - print('The following weight files will be downloaded:') - for ds in datasets: - dflt = '*' if dflt is None else '' - print(f' [{datasets[ds]}] {ds}{dflt}') - print("*default") - ok_to_download = yes_or_no('Ok to download?') - if not ok_to_download: - if yes_or_no('Change your selection?'): - action = 'customized' - pass - else: - done = True - else: - done = True - return datasets if ok_to_download else None - - -#-------------------------------Authenticate against Hugging Face -def authenticate(): - print(''' -To download the Stable Diffusion weight files from the official Hugging Face -repository, you need to read and accept the CreativeML Responsible AI license. - -This involves a few easy steps. - -1. If you have not already done so, create an account on Hugging Face's web site - using the "Sign Up" button: - - https://huggingface.co/join - - You will need to verify your email address as part of the HuggingFace - registration process. - -2. Log into your Hugging Face account: - - https://huggingface.co/login - -3. Accept the license terms located here: - - https://huggingface.co/runwayml/stable-diffusion-v1-5 - - and here: - - https://huggingface.co/runwayml/stable-diffusion-inpainting - - (Yes, you have to accept two slightly different license agreements) -''' - ) - input('Press when you are ready to continue:') - print('(Fetching Hugging Face token from cache...',end='') - access_token = HfFolder.get_token() - if access_token is not None: - print('found') - - if access_token is None: - print('not found') - print(''' -4. Thank you! The last step is to enter your HuggingFace access token so that - this script is authorized to initiate the download. Go to the access tokens - page of your Hugging Face account and create a token by clicking the - "New token" button: - - https://huggingface.co/settings/tokens - - (You can enter anything you like in the token creation field marked "Name". - "Role" should be "read"). - - Now copy the token to your clipboard and paste it here: ''' - ) - access_token = getpass_asterisk.getpass_asterisk() - return access_token - -#--------------------------------------------- -# look for legacy model.ckpt in models directory and offer to -# normalize its name -def migrate_models_ckpt(): - if not os.path.exists(os.path.join(Model_dir,'model.ckpt')): - return - new_name = Datasets['stable-diffusion-1.4']['file'] - print('You seem to have the Stable Diffusion v4.1 "model.ckpt" already installed.') - rename = yes_or_no(f'Ok to rename it to "{new_name}" for future reference?') - if rename: - print(f'model.ckpt => {new_name}') - os.replace(os.path.join(Model_dir,'model.ckpt'),os.path.join(Model_dir,new_name)) - -#--------------------------------------------- -def download_weight_datasets(models:dict, access_token:str): - migrate_models_ckpt() - successful = dict() - for mod in models.keys(): - repo_id = Datasets[mod]['repo_id'] - filename = Datasets[mod]['file'] - success = download_with_resume( - repo_id=repo_id, - model_name=filename, - access_token=access_token - ) - if success: - successful[mod] = True - if len(successful) < len(models): - print(f'\n\n** There were errors downloading one or more files. **') - print('Please double-check your license agreements, and your access token.') - HfFolder.delete_token() - print('Press any key to try again. Type ^C to quit.\n') - input() - return None - - HfFolder.save_token(access_token) - keys = ', '.join(successful.keys()) - print(f'Successfully installed {keys}') - return successful - -#--------------------------------------------- -def download_with_resume(repo_id:str, model_name:str, access_token:str)->bool: - model_dest = os.path.join(Model_dir, model_name) - os.makedirs(os.path.dirname(model_dest), exist_ok=True) - url = hf_hub_url(repo_id, model_name) - - header = {"Authorization": f'Bearer {access_token}'} - open_mode = 'wb' - exist_size = 0 - - if os.path.exists(model_dest): - exist_size = os.path.getsize(model_dest) - header['Range'] = f'bytes={exist_size}-' - open_mode = 'ab' - - resp = requests.get(url, headers=header, stream=True) - total = int(resp.headers.get('content-length', 0)) - - if resp.status_code==416: # "range not satisfiable", which means nothing to return - print(f'* {model_name}: complete file found. Skipping.') - return True - elif resp.status_code != 200: - print(f'** An error occurred during downloading {model_name}: {resp.reason}') - elif exist_size > 0: - print(f'* {model_name}: partial file found. Resuming...') - else: - print(f'* {model_name}: Downloading...') - - try: - if total < 2000: - print(f'*** ERROR DOWNLOADING {model_name}: {resp.text}') - return False - - with open(model_dest, open_mode) as file, tqdm( - desc=model_name, - initial=exist_size, - total=total+exist_size, - unit='iB', - unit_scale=True, - unit_divisor=1000, - ) as bar: - for data in resp.iter_content(chunk_size=1024): - size = file.write(data) - bar.update(size) - except Exception as e: - print(f'An error occurred while downloading {model_name}: {str(e)}') - return False - return True - -#--------------------------------------------- -def update_config_file(successfully_downloaded:dict,opt:dict): - Config_file = opt.config_file or Default_config_file - - yaml = new_config_file_contents(successfully_downloaded,Config_file) - - try: - if os.path.exists(Config_file): - print(f'** {Config_file} exists. Renaming to {Config_file}.orig') - os.replace(Config_file,f'{Config_file}.orig') - tmpfile = os.path.join(os.path.dirname(Config_file),'new_config.tmp') - with open(tmpfile, 'w') as outfile: - outfile.write(Config_preamble) - outfile.write(yaml) - os.replace(tmpfile,Config_file) - - except Exception as e: - print(f'**Error creating config file {Config_file}: {str(e)} **') - return - - print(f'Successfully created new configuration file {Config_file}') - - -#--------------------------------------------- -def new_config_file_contents(successfully_downloaded:dict, Config_file:str)->str: - if os.path.exists(Config_file): - conf = OmegaConf.load(Config_file) - else: - conf = OmegaConf.create() - - # find the VAE file, if there is one - vae = None - default_selected = False - - for model in successfully_downloaded: - if Datasets[model]['config'] == 'VAE': - vae = Datasets[model]['file'] - - for model in successfully_downloaded: - if Datasets[model]['config'] == 'VAE': # skip VAE entries - continue - stanza = conf[model] if model in conf else { } - - stanza['description'] = Datasets[model]['description'] - stanza['weights'] = os.path.join(Model_dir,Datasets[model]['file']) - stanza['config'] =os.path.join(SD_Configs, Datasets[model]['config']) - stanza['width'] = Datasets[model]['width'] - stanza['height'] = Datasets[model]['height'] - stanza.pop('default',None) # this will be set later - if vae: - stanza['vae'] = os.path.join(Model_dir,vae) - # BUG - the first stanza is always the default. User should select. - if not default_selected: - stanza['default'] = True - default_selected = True - conf[model] = stanza - return OmegaConf.to_yaml(conf) - -#--------------------------------------------- -# this will preload the Bert tokenizer fles -def download_bert(): - print('Installing bert tokenizer (ignore deprecation errors)...', end='') - sys.stdout.flush() - with warnings.catch_warnings(): - warnings.filterwarnings('ignore', category=DeprecationWarning) - from transformers import BertTokenizerFast, AutoFeatureExtractor - tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased') - print('...success') - -#--------------------------------------------- -# this will download requirements for Kornia -def download_kornia(): - print('Installing Kornia requirements (ignore deprecation errors)...', end='') - sys.stdout.flush() - import kornia - print('...success') - -#--------------------------------------------- -def download_clip(): - print('Loading CLIP model (ignore deprecation errors)...',end='') - sys.stdout.flush() - version = 'openai/clip-vit-large-patch14' - tokenizer = CLIPTokenizer.from_pretrained(version) - transformer = CLIPTextModel.from_pretrained(version) - print('...success') - -#--------------------------------------------- -def download_gfpgan(): - print('Installing models from RealESRGAN and facexlib (ignore deprecation errors)...',end='') - try: - from realesrgan import RealESRGANer - from realesrgan.archs.srvgg_arch import SRVGGNetCompact - from facexlib.utils.face_restoration_helper import FaceRestoreHelper - - RealESRGANer( - scale=4, - model_path='https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth', - model = SRVGGNetCompact(num_in_ch=3, num_out_ch=3, num_feat=64, num_conv=32, upscale=4, act_type='prelu') - ) - - FaceRestoreHelper(1, det_model='retinaface_resnet50') - print('...success') - except Exception: - print('Error loading ESRGAN:') - print(traceback.format_exc()) - - print('Loading models from GFPGAN...',end='') - for model in ( - [ - 'https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth', - './models/gfpgan/GFPGANv1.4.pth' - ], - [ - 'https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth', - './models/gfpgan/weights/detection_Resnet50_Final.pth' - ], - [ - 'https://github.com/xinntao/facexlib/releases/download/v0.2.2/parsing_parsenet.pth', - './models/gfpgan/weights/parsing_parsenet.pth' - ], - ): - model_url,model_dest = model - try: - if not os.path.exists(model_dest): - print(f'Downloading gfpgan model file {model_url}...',end='') - os.makedirs(os.path.dirname(model_dest), exist_ok=True) - request.urlretrieve(model_url,model_dest) - print('...success') - except Exception: - print('Error loading GFPGAN:') - print(traceback.format_exc()) - -#--------------------------------------------- -def download_codeformer(): - print('Installing CodeFormer model file...',end='') - try: - model_url = 'https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth' - model_dest = 'ldm/invoke/restoration/codeformer/weights/codeformer.pth' - if not os.path.exists(model_dest): - print('Downloading codeformer model file...') - os.makedirs(os.path.dirname(model_dest), exist_ok=True) - request.urlretrieve(model_url,model_dest) - except Exception: - print('Error loading CodeFormer:') - print(traceback.format_exc()) - print('...success') - -#--------------------------------------------- -def download_clipseg(): - print('Installing clipseg model for text-based masking...',end='') - import zipfile - try: - model_url = 'https://owncloud.gwdg.de/index.php/s/ioHbRzFx6th32hn/download' - model_dest = 'models/clipseg/clipseg_weights' - weights_zip = 'models/clipseg/weights.zip' - - if not os.path.exists(model_dest): - os.makedirs(os.path.dirname(model_dest), exist_ok=True) - if not os.path.exists(f'{model_dest}/rd64-uni-refined.pth'): - request.urlretrieve(model_url,weights_zip) - with zipfile.ZipFile(weights_zip,'r') as zip: - zip.extractall('models/clipseg') - os.remove(weights_zip) - - from clipseg.clipseg import CLIPDensePredT - model = CLIPDensePredT(version='ViT-B/16', reduce_dim=64, ) - model.eval() - model.load_state_dict( - torch.load( - 'models/clipseg/clipseg_weights/rd64-uni-refined.pth', - map_location=torch.device('cpu') - ), - strict=False, - ) - except Exception: - print('Error installing clipseg model:') - print(traceback.format_exc()) - print('...success') - -#------------------------------------- -def download_safety_checker(): - print('Installing safety model for NSFW content detection...',end='') - try: - from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker - from transformers import AutoFeatureExtractor - except ModuleNotFoundError: - print('Error installing safety checker model:') - print(traceback.format_exc()) - return - safety_model_id = "CompVis/stable-diffusion-safety-checker" - safety_feature_extractor = AutoFeatureExtractor.from_pretrained(safety_model_id) - safety_checker = StableDiffusionSafetyChecker.from_pretrained(safety_model_id) - print('...success') - -#------------------------------------- if __name__ == '__main__': - parser = argparse.ArgumentParser(description='InvokeAI model downloader') - parser.add_argument('--interactive', - dest='interactive', - action=argparse.BooleanOptionalAction, - default=True, - help='run in interactive mode (default)') - parser.add_argument('--config_file', - '-c', - dest='config_file', - type=str, - default='./configs/models.yaml', - help='path to configuration file to create') - opt = parser.parse_args() - - try: - if opt.interactive: - introduction() - print('** WEIGHT SELECTION **') - choice = user_wants_to_download_weights() - if choice != 'skip': - models = select_datasets(choice) - if models is None: - if yes_or_no('Quit?',default_yes=False): - sys.exit(0) - print('** LICENSE AGREEMENT FOR WEIGHT FILES **') - access_token = authenticate() - print('\n** DOWNLOADING WEIGHTS **') - successfully_downloaded = download_weight_datasets(models, access_token) - update_config_file(successfully_downloaded,opt) - print('\n** DOWNLOADING SUPPORT MODELS **') - download_bert() - download_kornia() - download_clip() - download_gfpgan() - download_codeformer() - download_clipseg() - download_safety_checker() - postscript() - except KeyboardInterrupt: - print('\nGoodbye! Come back soon.') - except Exception as e: - print(f'\nA problem occurred during download.\nThe error was: "{str(e)}"') + configure_invokeai.main() - - diff --git a/setup.py b/setup.py index bc6c7cdc31..bfba829b4a 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,87 @@ +import os +import re + from setuptools import setup, find_packages +def list_files(directory): + return [os.path.join(directory,x) for x in os.listdir(directory) if os.path.isfile(os.path.join(directory,x))] + +VERSION = '2.2.0' +DESCRIPTION = ('An implementation of Stable Diffusion which provides various new features' + ' and options to aid the image generation process') +LONG_DESCRIPTION = ('This version of Stable Diffusion features a slick WebGUI, an' + ' interactive command-line script that combines text2img and img2img' + ' functionality in a "dream bot" style interface, and multiple features' + ' and other enhancements.') +HOMEPAGE = 'https://github.com/invoke-ai/InvokeAI' +REQUIREMENTS=[ + 'accelerate', + 'albumentations', + 'diffusers', + 'eventlet', + 'flask_cors', + 'flask_socketio', + 'flaskwebgui', + 'getpass_asterisk', + 'imageio-ffmpeg', + 'pyreadline3', + 'realesrgan', + 'send2trash', + 'streamlit', + 'taming-transformers-rom1504', + 'test-tube', + 'torch-fidelity', + 'torch', + 'torchvision', + 'transformers', + 'picklescan', + 'clip', + 'clipseg', + 'gfpgan', + 'k-diffusion', + 'pypatchmatch', +] + setup( - name='invoke-ai', - version='2.1.3', - description='InvokeAI text to image generation toolkit', - packages=find_packages(), - install_requires=[ - 'torch', - 'numpy', - 'tqdm', + name='InvokeAI', + version=VERSION, + description=DESCRIPTION, + long_description=LONG_DESCRIPTION, + author='The InvokeAI Project', + author_email='lincoln.stein@gmail.com', + url=HOMEPAGE, + license='MIT', + packages=find_packages(exclude=['tests.*']), + install_requires=REQUIREMENTS, + dependency_links=['https://download.pytorch.org/whl/torch_stable.html'], + python_requires='>=3.9, <4', + classifiers=[ + 'Development Status :: 4 - Beta', + 'Environment :: GPU', + 'Environment :: GPU :: NVIDIA CUDA', + 'Environment :: MacOS X', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: POSIX :: Linux', + 'Operating System :: MacOS', + 'Operating System :: Microsoft :: Windows', + 'Programming Language :: Python :: 3 :: Only,' + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Topic :: Artistic Software', + 'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', + 'Topic :: Internet :: WWW/HTTP :: WSGI :: Server', + 'Topic :: Multimedia :: Graphics', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + 'Topic :: Scientific/Engineering :: Image Processing', + ], + scripts = ['scripts/invoke.py','scripts/configure_invokeai.py', 'scripts/sd-metadata.py', + 'scripts/preload_models.py', 'scripts/images2prompt.py','scripts/merge_embeddings.py' + ], + data_files=[('frontend/dist',list_files('frontend/dist')), + ('frontend/dist/assets',list_files('frontend/dist/assets')), + ('assets',['assets/caution.png']), ], ) - diff --git a/source_installer/install.sh b/source_installer/install.sh index 747d701611..64abdb03e9 100755 --- a/source_installer/install.sh +++ b/source_installer/install.sh @@ -17,7 +17,7 @@ echo "" OS_NAME=$(uname -s) case "${OS_NAME}" in Linux*) OS_NAME="linux";; - Darwin*) OS_NAME="mac";; + Darwin*) OS_NAME="osx";; *) echo "Unknown OS: $OS_NAME! This script runs only on Linux or Mac" && exit esac @@ -54,7 +54,7 @@ if [ "$PACKAGES_TO_INSTALL" != "" ]; then echo "Downloading micromamba from $MICROMAMBA_DOWNLOAD_URL to $MAMBA_ROOT_PREFIX/micromamba" mkdir -p "$MAMBA_ROOT_PREFIX" - curl -L "$MICROMAMBA_DOWNLOAD_URL" | tar -xvj bin/micromamba -O > "$MAMBA_ROOT_PREFIX/micromamba" + curl -L "$MICROMAMBA_DOWNLOAD_URL" | tar -xvjO bin/micromamba > "$MAMBA_ROOT_PREFIX/micromamba" chmod u+x "$MAMBA_ROOT_PREFIX/micromamba" @@ -94,8 +94,8 @@ CONDA_BASEPATH=$(conda info --base) source "$CONDA_BASEPATH/etc/profile.d/conda.sh" # otherwise conda complains about 'shell not initialized' (needed when running in a script) conda activate -if [ "$OS_NAME" == "mac" ]; then - echo "Macintosh system detected. Installing MPS and CPU support." +if [ "$OS_NAME" == "osx" ]; then + echo "macOS detected. Installing MPS and CPU support." ln -sf environments-and-requirements/environment-mac.yml environment.yml else if (lsmod | grep amdgpu) &>/dev/null ; then diff --git a/static/dream_web/index.html b/static/dream_web/index.html index 2b753f9fb7..feb542adb2 100644 --- a/static/dream_web/index.html +++ b/static/dream_web/index.html @@ -50,6 +50,8 @@ + + diff --git a/static/legacy_web/index.html b/static/legacy_web/index.html index 1f5c3dc9f8..c96eed54c3 100644 --- a/static/legacy_web/index.html +++ b/static/legacy_web/index.html @@ -39,6 +39,8 @@ + +