diff --git a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml index 6fb80be593..6d43d447f4 100644 --- a/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml +++ b/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.yml @@ -1,5 +1,5 @@ name: Feature Request -description: Commit a idea or Request a new feature +description: Contribute a idea or request a new feature title: '[enhancement]: ' labels: ['enhancement'] # assignees: @@ -9,14 +9,14 @@ body: - type: markdown attributes: value: | - Thanks for taking the time to fill out this Feature request! + Thanks for taking the time to fill out this feature request! - type: checkboxes attributes: label: Is there an existing issue for this? description: | Please make use of the [search function](https://github.com/invoke-ai/InvokeAI/labels/enhancement) - to see if a simmilar issue already exists for the feature you want to request + to see if a similar issue already exists for the feature you want to request options: - label: I have searched the existing issues required: true @@ -34,12 +34,9 @@ body: id: whatisexpected attributes: label: What should this feature add? - description: Please try to explain the functionality this feature should add + description: Explain the functionality this feature should add. Feature requests should be for single features. Please create multiple requests if you want to request multiple features. placeholder: | - Instead of one huge textfield, it would be nice to have forms for bug-reports, feature-requests, ... - Great benefits with automatic labeling, assigning and other functionalitys not available in that form - via old-fashioned markdown-templates. I would also love to see the use of a moderator bot 🤖 like - https://github.com/marketplace/actions/issue-moderator-with-commands to auto close old issues and other things + I'd like a button that creates an image of banana sushi every time I press it. Each image should be different. There should be a toggle next to the button that enables strawberry mode, in which the images are of strawberry sushi instead. validations: required: true @@ -51,6 +48,6 @@ body: - type: textarea attributes: - label: Aditional Content + label: Additional Content description: Add any other context or screenshots about the feature request here. - placeholder: This is a Mockup of the design how I imagine it + placeholder: This is a mockup of the design how I imagine it diff --git a/.github/workflows/style-checks.yml b/.github/workflows/style-checks.yml index 96e1df406b..08ff8ba402 100644 --- a/.github/workflows/style-checks.yml +++ b/.github/workflows/style-checks.yml @@ -1,6 +1,4 @@ name: style checks -# just formatting and flake8 for now -# TODO: add isort later on: pull_request: @@ -20,8 +18,8 @@ jobs: - name: Install dependencies with pip run: | - pip install black flake8 Flake8-pyproject + pip install black flake8 Flake8-pyproject isort - # - run: isort --check-only . + - run: isort --check-only . - run: black --check . - run: flake8 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ef8b79e77..6cff07a959 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,3 +15,10 @@ repos: language: system entry: flake8 types: [python] + + - id: isort + name: isort + stages: [commit] + language: system + entry: isort + types: [python] \ No newline at end of file diff --git a/README.md b/README.md index c40b9ef418..15c5747ea8 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,13 @@ the foundation for multiple commercial products. Install](https://invoke-ai.github.io/InvokeAI/installation/INSTALLATION/)] [Discord Server] [Documentation and - Tutorials] [Code and - Downloads] [Bug Reports] + Tutorials] + [Bug Reports] [Discussion, - Ideas & Q&A] + Ideas & Q&A] + [Contributing]
@@ -368,9 +368,9 @@ InvokeAI offers a locally hosted Web Server & React Frontend, with an industry l The Unified Canvas is a fully integrated canvas implementation with support for all core generation capabilities, in/outpainting, brush tools, and more. This creative tool unlocks the capability for artists to create with AI as a creative collaborator, and can be used to augment AI-generated imagery, sketches, photography, renders, and more. -### *Node Architecture & Editor (Beta)* +### *Workflows & Nodes* -Invoke AI's backend is built on a graph-based execution architecture. This allows for customizable generation pipelines to be developed by professional users looking to create specific workflows to support their production use-cases, and will be extended in the future with additional capabilities. +InvokeAI offers a fully featured workflow management solution, enabling users to combine the power of nodes based workflows with the easy of a UI. This allows for customizable generation pipelines to be developed and shared by users looking to create specific workflows to support their production use-cases. ### *Board & Gallery Management* @@ -383,8 +383,9 @@ Invoke AI provides an organized gallery system for easily storing, accessing, an - *Upscaling Tools* - *Embedding Manager & Support* - *Model Manager & Support* +- *Workflow creation & management* - *Node-Based Architecture* -- *Node-Based Plug-&-Play UI (Beta)* + ### Latest Changes @@ -395,20 +396,18 @@ Notes](https://github.com/invoke-ai/InvokeAI/releases) and the ### Troubleshooting Please check out our **[Q&A](https://invoke-ai.github.io/InvokeAI/help/TROUBLESHOOT/#faq)** to get solutions for common installation -problems and other issues. +problems and other issues. For more help, please join our [Discord][discord link] ## 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. -To join, just raise your hand on the InvokeAI Discord server (#dev-chat) or the GitHub discussion board. - -If you'd like to help with translation, please see our [translation guide](docs/other/TRANSLATION.md). +Get started with contributing by reading our [Contribution documentation](https://invoke-ai.github.io/InvokeAI/contributing/CONTRIBUTING/), joining the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) or the GitHub discussion board. 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. You can **make your pull request against the "main" branch**. +to contribute to GitHub projects, we have a new contributor checklist you can follow to get started contributing: +[New Contributor Checklist](https://invoke-ai.github.io/InvokeAI/contributing/contribution_guides/newContributorChecklist/). 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 @@ -424,7 +423,7 @@ their time, hard work and effort. ### Support -For support, please use this repository's GitHub Issues tracking service, or join the Discord. +For support, please use this repository's GitHub Issues tracking service, or join the [Discord][discord link]. Original portions of the software are Copyright (c) 2023 by respective contributors. diff --git a/docs/assets/nodes/groupsallscale.png b/docs/assets/nodes/groupsallscale.png index aa67db9a3e..5a12fe9e13 100644 Binary files a/docs/assets/nodes/groupsallscale.png and b/docs/assets/nodes/groupsallscale.png differ diff --git a/docs/assets/nodes/groupsconditioning.png b/docs/assets/nodes/groupsconditioning.png index bb0e210f42..cf38a00290 100644 Binary files a/docs/assets/nodes/groupsconditioning.png and b/docs/assets/nodes/groupsconditioning.png differ diff --git a/docs/assets/nodes/groupscontrol.png b/docs/assets/nodes/groupscontrol.png index ad696c3087..f2e3d43e7d 100644 Binary files a/docs/assets/nodes/groupscontrol.png and b/docs/assets/nodes/groupscontrol.png differ diff --git a/docs/assets/nodes/groupsimgvae.png b/docs/assets/nodes/groupsimgvae.png index c60bf40d67..ae6967cab1 100644 Binary files a/docs/assets/nodes/groupsimgvae.png and b/docs/assets/nodes/groupsimgvae.png differ diff --git a/docs/assets/nodes/groupsiterate.png b/docs/assets/nodes/groupsiterate.png index 9c1cd15bc2..82ec8bf020 100644 Binary files a/docs/assets/nodes/groupsiterate.png and b/docs/assets/nodes/groupsiterate.png differ diff --git a/docs/assets/nodes/groupslora.png b/docs/assets/nodes/groupslora.png index befcee6490..736aff5914 100644 Binary files a/docs/assets/nodes/groupslora.png and b/docs/assets/nodes/groupslora.png differ diff --git a/docs/assets/nodes/groupsmultigenseeding.png b/docs/assets/nodes/groupsmultigenseeding.png index a644146c86..b54ec2afb7 100644 Binary files a/docs/assets/nodes/groupsmultigenseeding.png and b/docs/assets/nodes/groupsmultigenseeding.png differ diff --git a/docs/assets/nodes/groupsnoise.png b/docs/assets/nodes/groupsnoise.png index 2df51d434e..c825e314ae 100644 Binary files a/docs/assets/nodes/groupsnoise.png and b/docs/assets/nodes/groupsnoise.png differ diff --git a/docs/assets/nodes/groupsrandseed.png b/docs/assets/nodes/groupsrandseed.png index 06430cdee4..9b8bcfdb17 100644 Binary files a/docs/assets/nodes/groupsrandseed.png and b/docs/assets/nodes/groupsrandseed.png differ diff --git a/docs/assets/nodes/linearview.png b/docs/assets/nodes/linearview.png new file mode 100644 index 0000000000..0dc28534e3 Binary files /dev/null and b/docs/assets/nodes/linearview.png differ diff --git a/docs/assets/prompt_syntax/sdxl-prompt-concatenated.png b/docs/assets/prompt_syntax/sdxl-prompt-concatenated.png new file mode 100644 index 0000000000..8d5336da3d Binary files /dev/null and b/docs/assets/prompt_syntax/sdxl-prompt-concatenated.png differ diff --git a/docs/assets/prompt_syntax/sdxl-prompt.png b/docs/assets/prompt_syntax/sdxl-prompt.png new file mode 100644 index 0000000000..b85464c5ad Binary files /dev/null and b/docs/assets/prompt_syntax/sdxl-prompt.png differ diff --git a/docs/contributing/CONTRIBUTING.md b/docs/contributing/CONTRIBUTING.md index 29fea1cf59..ccaf4f2561 100644 --- a/docs/contributing/CONTRIBUTING.md +++ b/docs/contributing/CONTRIBUTING.md @@ -1,39 +1,41 @@ -# How to Contribute +# Contributing -## Welcome to Invoke AI Invoke AI originated as a project built by the community, and that vision carries forward today as we aim to build the best pro-grade tools available. We work together to incorporate the latest in AI/ML research, making these tools available in over 20 languages to artists and creatives around the world as part of our fully permissive OSS project designed for individual users to self-host and use. -## Contributing to Invoke AI +# Methods of Contributing to Invoke AI Anyone who wishes to contribute to InvokeAI, whether features, bug fixes, code cleanup, testing, code reviews, documentation or translation is very much encouraged to do so. -To join, just raise your hand on the InvokeAI Discord server (#dev-chat) or the GitHub discussion board. +## Development +If you’d like to help with development, please see our [development guide](contribution_guides/development.md). -### Areas of contribution: +**New Contributors:** If you’re unfamiliar with contributing to open source projects, take a look at our [new contributor guide](contribution_guides/newContributorChecklist.md). -#### Development -If you’d like to help with development, please see our [development guide](contribution_guides/development.md). If you’re unfamiliar with contributing to open source projects, there is a tutorial contained within the development guide. +## Nodes +If you’d like to add a Node, please see our [nodes contribution guide](../nodes/contributingNodes.md). -#### Nodes -If you’d like to help with development, please see our [nodes contribution guide](/nodes/contributingNodes). If you’re unfamiliar with contributing to open source projects, there is a tutorial contained within the development guide. +## Support and Triaging +Helping support other users in [Discord](https://discord.gg/ZmtBAhwWhy) and on Github are valuable forms of contribution that we greatly appreciate. -#### Documentation +We receive many issues and requests for help from users. We're limited in bandwidth relative to our the user base, so providing answers to questions or helping identify causes of issues is very helpful. By doing this, you enable us to spend time on the highest priority work. + +## Documentation If you’d like to help with documentation, please see our [documentation guide](contribution_guides/documentation.md). -#### Translation +## Translation If you'd like to help with translation, please see our [translation guide](contribution_guides/translation.md). -#### Tutorials +## Tutorials Please reach out to @imic or @hipsterusername on [Discord](https://discord.gg/ZmtBAhwWhy) to help create tutorials for InvokeAI. 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 contributor community. -### Contributors +# Contributors This project is a combined effort of dedicated people from across the world. [Check out the list of all these amazing people](https://invoke-ai.github.io/InvokeAI/other/CONTRIBUTORS/). We thank them for their time, hard work and effort. -### Code of Conduct +# Code of Conduct The InvokeAI community is a welcoming place, and we want your help in maintaining that. Please review our [Code of Conduct](https://github.com/invoke-ai/InvokeAI/blob/main/CODE_OF_CONDUCT.md) to learn more - it's essential to maintaining a respectful and inclusive environment. @@ -47,8 +49,7 @@ By making a contribution to this project, you certify that: This disclaimer is not a license and does not grant any rights or permissions. You must obtain necessary permissions and licenses, including from third parties, before contributing to this project. This disclaimer is provided "as is" without warranty of any kind, whether expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, or non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the contribution or the use or other dealings in the contribution. - -### Support +# Support For support, please use this repository's [GitHub Issues](https://github.com/invoke-ai/InvokeAI/issues), or join the [Discord](https://discord.gg/ZmtBAhwWhy). diff --git a/docs/contributing/contribution_guides/development_guides/contributingToFrontend.md b/docs/contributing/contribution_guides/contributingToFrontend.md similarity index 100% rename from docs/contributing/contribution_guides/development_guides/contributingToFrontend.md rename to docs/contributing/contribution_guides/contributingToFrontend.md diff --git a/docs/contributing/contribution_guides/development.md b/docs/contributing/contribution_guides/development.md index a867c7fa1f..fcfb82c811 100644 --- a/docs/contributing/contribution_guides/development.md +++ b/docs/contributing/contribution_guides/development.md @@ -4,14 +4,21 @@ If you are looking to help to with a code contribution, InvokeAI uses several different technologies under the hood: Python (Pydantic, FastAPI, diffusers) and Typescript (React, Redux Toolkit, ChakraUI, Mantine, Konva). Familiarity with StableDiffusion and image generation concepts is helpful, but not essential. -For more information, please review our area specific documentation: + +## **Get Started** + +To get started, take a look at our [new contributors checklist](newContributorChecklist.md) + +Once you're setup, for more information, you can review the documentation specific to your area of interest: * #### [InvokeAI Architecure](../ARCHITECTURE.md) * #### [Frontend Documentation](development_guides/contributingToFrontend.md) * #### [Node Documentation](../INVOCATIONS.md) * #### [Local Development](../LOCAL_DEVELOPMENT.md) -If you don't feel ready to make a code contribution yet, no problem! You can also help out in other ways, such as [documentation](documentation.md) or [translation](translation.md). + + +If you don't feel ready to make a code contribution yet, no problem! You can also help out in other ways, such as [documentation](documentation.md), [translation](translation.md) or helping support other users and triage issues as they're reported in GitHub. There are two paths to making a development contribution: @@ -23,60 +30,10 @@ There are two paths to making a development contribution: ## Best Practices: * Keep your pull requests small. Smaller pull requests are more likely to be accepted and merged -* Comments! Commenting your code helps reviwers easily understand your contribution +* Comments! Commenting your code helps reviewers easily understand your contribution * Use Python and Typescript’s typing systems, and consider using an editor with [LSP](https://microsoft.github.io/language-server-protocol/) support to streamline development * Make all communications public. This ensure knowledge is shared with the whole community -## **How do I make a contribution?** - -Never made an open source contribution before? Wondering how contributions work in our project? Here's a quick rundown! - -Before starting these steps, ensure you have your local environment [configured for development](../LOCAL_DEVELOPMENT.md). - -1. Find a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) that you are interested in addressing or a feature that you would like to add. Then, reach out to our team in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord to ensure you are setup for success. -2. Fork the [InvokeAI](https://github.com/invoke-ai/InvokeAI) repository to your GitHub profile. This means that you will have a copy of the repository under **your-GitHub-username/InvokeAI**. -3. Clone the repository to your local machine using: - -```bash -git clone https://github.com/your-GitHub-username/InvokeAI.git -``` - -If you're unfamiliar with using Git through the commandline, [GitHub Desktop](https://desktop.github.com) is a easy-to-use alternative with a UI. You can do all the same steps listed here, but through the interface. - -4. Create a new branch for your fix using: - -```bash -git checkout -b branch-name-here -``` - -5. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. -6. Add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index: - -```bash -git add insert-paths-of-changed-files-here -``` - -7. Store the contents of the index with a descriptive message. - -```bash -git commit -m "Insert a short message of the changes made here" -``` - -8. Push the changes to the remote repository using - -```markdown -git push origin branch-name-here -``` - -9. Submit a pull request to the **main** branch of the InvokeAI repository. -10. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #1234". -11. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! -12. Wait for the pull request to be reviewed by other collaborators. -13. Make changes to the pull request if the reviewer(s) recommend them. -14. Celebrate your success after your pull request is merged! - -If you’d like to learn more about contributing to Open Source projects, here is a [Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github). - ## **Where can I go for help?** If you need help, you can ask questions in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord. @@ -85,6 +42,7 @@ For frontend related work, **@pyschedelicious** is the best person to reach out For backend related work, please reach out to **@blessedcoolant**, **@lstein**, **@StAlKeR7779** or **@pyschedelicious**. + ## **What does the Code of Conduct mean for me?** Our [Code of Conduct](CODE_OF_CONDUCT.md) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code. diff --git a/docs/contributing/contribution_guides/newContributorChecklist.md b/docs/contributing/contribution_guides/newContributorChecklist.md new file mode 100644 index 0000000000..90725f99ab --- /dev/null +++ b/docs/contributing/contribution_guides/newContributorChecklist.md @@ -0,0 +1,68 @@ +# New Contributor Guide + +If you're a new contributor to InvokeAI or Open Source Projects, this is the guide for you. + +## New Contributor Checklist +- [x] Set up your local development environment & fork of InvokAI by following [the steps outlined here](../../installation/020_INSTALL_MANUAL.md#developer-install) +- [x] Set up your local tooling with [this guide](InvokeAI/contributing/LOCAL_DEVELOPMENT/#developing-invokeai-in-vscode). Feel free to skip this step if you already have tooling you're comfortable with. +- [x] Familiarize yourself with [Git](https://www.atlassian.com/git) & our project structure by reading through the [development documentation](development.md) +- [x] Join the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord +- [x] Choose an issue to work on! This can be achieved by asking in the #dev-chat channel, tackling a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) or finding an item on the [roadmap](https://github.com/orgs/invoke-ai/projects/7). If nothing in any of those places catches your eye, feel free to work on something of interest to you! +- [x] Make your first Pull Request with the guide below +- [x] Happy development! Don't be afraid to ask for help - we're happy to help you contribute! + + +## How do I make a contribution? + +Never made an open source contribution before? Wondering how contributions work in our project? Here's a quick rundown! + +Before starting these steps, ensure you have your local environment [configured for development](../LOCAL_DEVELOPMENT.md). + +1. Find a [good first issue](https://github.com/invoke-ai/InvokeAI/contribute) that you are interested in addressing or a feature that you would like to add. Then, reach out to our team in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord to ensure you are setup for success. +2. Fork the [InvokeAI](https://github.com/invoke-ai/InvokeAI) repository to your GitHub profile. This means that you will have a copy of the repository under **your-GitHub-username/InvokeAI**. +3. Clone the repository to your local machine using: +```bash +git clone https://github.com/your-GitHub-username/InvokeAI.git +``` +If you're unfamiliar with using Git through the commandline, [GitHub Desktop](https://desktop.github.com) is a easy-to-use alternative with a UI. You can do all the same steps listed here, but through the interface. +4. Create a new branch for your fix using: +```bash +git checkout -b branch-name-here +``` +5. Make the appropriate changes for the issue you are trying to address or the feature that you want to add. +6. Add the file contents of the changed files to the "snapshot" git uses to manage the state of the project, also known as the index: +```bash +git add -A +``` +7. Store the contents of the index with a descriptive message. +```bash +git commit -m "Insert a short message of the changes made here" +``` +8. Push the changes to the remote repository using +```bash +git push origin branch-name-here +``` +9. Submit a pull request to the **main** branch of the InvokeAI repository. If you're not sure how to, [follow this guide](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) +10. Title the pull request with a short description of the changes made and the issue or bug number associated with your change. For example, you can title an issue like so "Added more log outputting to resolve #1234". +11. In the description of the pull request, explain the changes that you made, any issues you think exist with the pull request you made, and any questions you have for the maintainer. It's OK if your pull request is not perfect (no pull request is), the reviewer will be able to help you fix any problems and improve it! +12. Wait for the pull request to be reviewed by other collaborators. +13. Make changes to the pull request if the reviewer(s) recommend them. +14. Celebrate your success after your pull request is merged! + +If you’d like to learn more about contributing to Open Source projects, here is a [Getting Started Guide](https://opensource.com/article/19/7/create-pull-request-github). + + +## Best Practices: +* Keep your pull requests small. Smaller pull requests are more likely to be accepted and merged +* Comments! Commenting your code helps reviewers easily understand your contribution +* Use Python and Typescript’s typing systems, and consider using an editor with [LSP](https://microsoft.github.io/language-server-protocol/) support to streamline development +* Make all communications public. This ensure knowledge is shared with the whole community + + +## **Where can I go for help?** + +If you need help, you can ask questions in the [#dev-chat](https://discord.com/channels/1020123559063990373/1049495067846524939) channel of the Discord. + +For frontend related work, **@pyschedelicious** is the best person to reach out to. + +For backend related work, please reach out to **@blessedcoolant**, **@lstein**, **@StAlKeR7779** or **@pyschedelicious**. diff --git a/docs/features/CONCEPTS.md b/docs/features/CONCEPTS.md index 63f52d8a20..df9ee5bd26 100644 --- a/docs/features/CONCEPTS.md +++ b/docs/features/CONCEPTS.md @@ -21,8 +21,8 @@ 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](TRAINING.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 +[Hugging Face](https://huggingface.co/sd-concepts-library) has +amassed a large library of >800 community-contributed TI files covering a broad range of subjects and styles. You can also install your own or others' TI files by placing them in the designated directory for the compatible model type diff --git a/docs/features/CONFIGURATION.md b/docs/features/CONFIGURATION.md index 6920d3d97f..cfd65f8a61 100644 --- a/docs/features/CONFIGURATION.md +++ b/docs/features/CONFIGURATION.md @@ -159,7 +159,7 @@ groups in `invokeia.yaml`: | `host` | `localhost` | Name or IP address of the network interface that the web server will listen on | | `port` | `9090` | Network port number that the web server will listen on | | `allow_origins` | `[]` | A list of host names or IP addresses that are allowed to connect to the InvokeAI API in the format `['host1','host2',...]` | -| `allow_credentials | `true` | Require credentials for a foreign host to access the InvokeAI API (don't change this) | +| `allow_credentials` | `true` | Require credentials for a foreign host to access the InvokeAI API (don't change this) | | `allow_methods` | `*` | List of HTTP methods ("GET", "POST") that the web server is allowed to use when accessing the API | | `allow_headers` | `*` | List of HTTP headers that the web server will accept when accessing the API | diff --git a/docs/features/CONTROLNET.md b/docs/features/CONTROLNET.md index faa2d7cdf3..42ed43146e 100644 --- a/docs/features/CONTROLNET.md +++ b/docs/features/CONTROLNET.md @@ -104,7 +104,7 @@ The OpenPose control model allows for the identification of the general pose of The MediaPipe Face identification processor is able to clearly identify facial features in order to capture vivid expressions of human faces. -**Tile (experimental)**: +**Tile**: The Tile model fills out details in the image to match the image, rather than the prompt. The Tile Model is a versatile tool that offers a range of functionalities. Its primary capabilities can be boiled down to two main behaviors: @@ -117,8 +117,6 @@ The Tile Model can be a powerful tool in your arsenal for enhancing image qualit With Pix2Pix, you can input an image into the controlnet, and then "instruct" the model to change it using your prompt. For example, you can say "Make it winter" to add more wintry elements to a scene. -**Inpaint**: Coming Soon - Currently this model is available but not functional on the Canvas. An upcoming release will provide additional capabilities for using this model when inpainting. - Each of these models can be adjusted and combined with other ControlNet models to achieve different results, giving you even more control over your image generation process. diff --git a/docs/features/MODEL_MERGING.md b/docs/features/MODEL_MERGING.md index 36e15ad0e4..6adf4db16a 100644 --- a/docs/features/MODEL_MERGING.md +++ b/docs/features/MODEL_MERGING.md @@ -2,17 +2,50 @@ title: Model Merging --- -# :material-image-off: Model Merging - -## How to Merge Models - -As of version 2.3, InvokeAI comes with a script that allows you to -merge two or three diffusers-type models into a new merged model. The +InvokeAI provides the ability to merge two or three diffusers-type models into a new merged model. The resulting model will combine characteristics of the original, and can be used to teach an old model new tricks. +## How to Merge Models + +Model Merging can be be done by navigating to the Model Manager and clicking the "Merge Models" tab. From there, you can select the models and settings you want to use to merge th models. + +## Settings + +* Model Selection: there are three multiple choice fields that + display all the diffusers-style models that InvokeAI knows about. + If you do not see the model you are looking for, then it is probably + a legacy checkpoint model and needs to be converted using the + `invoke` command-line client and its `!optimize` command. You + must select at least two models to merge. The third can be left at + "None" if you desire. + +* Alpha: This is the ratio to use when combining models. It ranges + from 0 to 1. The higher the value, the more weight is given to the + 2d and (optionally) 3d models. So if you have two models named "A" + and "B", an alpha value of 0.25 will give you a merged model that is + 25% A and 75% B. + +* Interpolation Method: This is the method used to combine + weights. The options are "weighted_sum" (the default), "sigmoid", + "inv_sigmoid" and "add_difference". Each produces slightly different + results. When three models are in use, only "add_difference" is + available. + +* Save Location: The location you want the merged model to be saved in. Default is in the InvokeAI root folder + +* Name for merged model: This is the name for the new model. Please + use InvokeAI conventions - only alphanumeric letters and the + characters ".+-". + +* Ignore Mismatches / Force: Not all models are compatible with each other. The merge + script will check for compatibility and refuse to merge ones that + are incompatible. Set this checkbox to try merging anyway. + + + You may run the merge script by starting the invoke launcher -(`invoke.sh` or `invoke.bat`) and choosing the option for _merge +(`invoke.sh` or `invoke.bat`) and choosing the option (4) for _merge models_. This will launch a text-based interactive user interface that prompts you to select the models to merge, how to merge them, and the merged model name. @@ -40,34 +73,4 @@ this to get back. If the merge runs successfully, it will create a new diffusers model under the selected name and register it with InvokeAI. -## The Settings - -* Model Selection -- there are three multiple choice fields that - display all the diffusers-style models that InvokeAI knows about. - If you do not see the model you are looking for, then it is probably - a legacy checkpoint model and needs to be converted using the - `invoke` command-line client and its `!optimize` command. You - must select at least two models to merge. The third can be left at - "None" if you desire. - -* Alpha -- This is the ratio to use when combining models. It ranges - from 0 to 1. The higher the value, the more weight is given to the - 2d and (optionally) 3d models. So if you have two models named "A" - and "B", an alpha value of 0.25 will give you a merged model that is - 25% A and 75% B. - -* Interpolation Method -- This is the method used to combine - weights. The options are "weighted_sum" (the default), "sigmoid", - "inv_sigmoid" and "add_difference". Each produces slightly different - results. When three models are in use, only "add_difference" is - available. (TODO: cite a reference that describes what these - interpolation methods actually do and how to decide among them). - -* Force -- Not all models are compatible with each other. The merge - script will check for compatibility and refuse to merge ones that - are incompatible. Set this checkbox to try merging anyway. - -* Name for merged model - This is the name for the new model. Please - use InvokeAI conventions - only alphanumeric letters and the - characters ".+-". diff --git a/docs/features/PROMPTS.md b/docs/features/PROMPTS.md index 66af903072..be11e4cce6 100644 --- a/docs/features/PROMPTS.md +++ b/docs/features/PROMPTS.md @@ -142,7 +142,7 @@ Prompt2prompt `.swap()` is not compatible with xformers, which will be temporari The `prompt2prompt` code is based off [bloc97's colab](https://github.com/bloc97/CrossAttentionControl). -### Escaping parentheses () and speech marks "" +### Escaping parentheses and speech marks If the model you are using has parentheses () or speech marks "" as part of its syntax, you will need to "escape" these using a backslash, so that`(my_keyword)` @@ -246,7 +246,7 @@ To create a Dynamic Prompt, follow these steps: Within the braces, separate each option using a vertical bar |. If you want to include multiple options from a single group, prefix with the desired number and $$. -For instance: A {house|apartment|lodge|cottage} in {summer|winter|autumn|spring} designed in {2$$style1|style2|style3}. +For instance: A {house|apartment|lodge|cottage} in {summer|winter|autumn|spring} designed in {style1|style2|style3}. ### How Dynamic Prompts Work Once a Dynamic Prompt is configured, the system generates an array of combinations using the options provided. Each group of options in curly braces is treated independently, with the system selecting one option from each group. For a prefixed set (e.g., 2$$), the system will select two distinct options. @@ -273,3 +273,36 @@ Below are some useful strategies for creating Dynamic Prompts: Experiment with different quantities for the prefix. For example, 3$$ will select three distinct options. Be aware of coherence in your prompts. Although the system can generate all possible combinations, not all may semantically make sense. Therefore, carefully choose the options for each group. Always review and fine-tune the generated prompts as needed. While Dynamic Prompts can help you generate a multitude of combinations, the final polishing and refining remain in your hands. + + +## SDXL Prompting + +Prompting with SDXL is slightly different than prompting with SD1.5 or SD2.1 models - SDXL expects a prompt _and_ a style. + + +### Prompting +
+ +![SDXL prompt boxes in InvokeAI](../assets/prompt_syntax/sdxl-prompt.png) + +
+ +In the prompt box, enter a positive or negative prompt as you normally would. + +For the style box you can enter a style that you want the image to be generated in. You can use styles from this example list, or any other style you wish: anime, photographic, digital art, comic book, fantasy art, analog film, neon punk, isometric, low poly, origami, line art, cinematic, 3d model, pixel art, etc. + + +### Concatenated Prompts + + +InvokeAI also has the option to concatenate the prompt and style inputs, by pressing the "link" button in the Positive Prompt box. + +This concatenates the prompt & style inputs, and passes the joined prompt and style to the SDXL model. +![SDXL concatenated prompt boxes in InvokeAI](../assets/prompt_syntax/sdxl-prompt-concatenated.png) + + + + + + + diff --git a/docs/features/TRAINING.md b/docs/features/TRAINING.md index 41197a334f..7be9aff0f2 100644 --- a/docs/features/TRAINING.md +++ b/docs/features/TRAINING.md @@ -43,27 +43,22 @@ into the directory InvokeAI 2.3 and higher comes with a text console-based training front end. From within the `invoke.sh`/`invoke.bat` Invoke launcher script, -start the front end by selecting choice (3): +start training tool selecting choice (3): ```sh -Do you want to generate images using the -1: Browser-based UI -2: Command-line interface -3: Run textual inversion training -4: Merge models (diffusers type only) -5: Download and install models -6: Change InvokeAI startup options -7: Re-run the configure script to fix a broken install -8: Open the developer console -9: Update InvokeAI -10: Command-line help -Q: Quit - -Please enter 1-10, Q: [1] +1 "Generate images with a browser-based interface" +2 "Explore InvokeAI nodes using a command-line interface" +3 "Textual inversion training" +4 "Merge models (diffusers type only)" +5 "Download and install models" +6 "Change InvokeAI startup options" +7 "Re-run the configure script to fix a broken install or to complete a major upgrade" +8 "Open the developer console" +9 "Update InvokeAI" ``` -From the command line, with the InvokeAI virtual environment active, -you can launch the front end with the command `invokeai-ti --gui`. +Alternatively, you can select option (8) or from the command line, with the InvokeAI virtual environment active, +you can then launch the front end with the command `invokeai-ti --gui`. This will launch a text-based front end that will look like this: diff --git a/docs/features/UTILITIES.md b/docs/features/UTILITIES.md new file mode 100644 index 0000000000..a73118d55a --- /dev/null +++ b/docs/features/UTILITIES.md @@ -0,0 +1,336 @@ +--- +title: Command-line Utilities +--- + +# :material-file-document: Utilities + +# Command-line Utilities + +InvokeAI comes with several scripts that are accessible via the +command line. To access these commands, start the "developer's +console" from the launcher (`invoke.bat` menu item [8]). Users who are +familiar with Python can alternatively activate InvokeAI's virtual +environment (typically, but not necessarily `invokeai/.venv`). + +In the developer's console, type the script's name to run it. To get a +synopsis of what a utility does and the command-line arguments it +accepts, pass it the `-h` argument, e.g. + +```bash +invokeai-merge -h +``` +## **invokeai-web** + +This script launches the web server and is effectively identical to +selecting option [1] in the launcher. An advantage of launching the +server from the command line is that you can override any setting +configuration option in `invokeai.yaml` using like-named command-line +arguments. For example, to temporarily change the size of the RAM +cache to 7 GB, you can launch as follows: + +```bash +invokeai-web --ram 7 +``` + +## **invokeai-merge** + +This is the model merge script, the same as launcher option [4]. Call +it with the `--gui` command-line argument to start the interactive +console-based GUI. Alternatively, you can run it non-interactively +using command-line arguments as illustrated in the example below which +merges models named `stable-diffusion-1.5` and `inkdiffusion` into a new model named +`my_new_model`: + +```bash +invokeai-merge --force --base-model sd-1 --models stable-diffusion-1.5 inkdiffusion --merged_model_name my_new_model +``` + +## **invokeai-ti** + +This is the textual inversion training script that is run by launcher +option [3]. Call it with `--gui` to run the interactive console-based +front end. It can also be run non-interactively. It has about a +zillion arguments, but a typical training session can be launched +with: + +```bash +invokeai-ti --model stable-diffusion-1.5 \ + --placeholder_token 'jello' \ + --learnable_property object \ + --num_train_epochs 50 \ + --train_data_dir /path/to/training/images \ + --output_dir /path/to/trained/model +``` + +(Note that \\ is the Linux/Mac long-line continuation character. Use ^ +in Windows). + +## **invokeai-install** + +This is the console-based model install script that is run by launcher +option [5]. If called without arguments, it will launch the +interactive console-based interface. It can also be used +non-interactively to list, add and remove models as shown by these +examples: + +* This will download and install three models from CivitAI, HuggingFace, +and local disk: + +```bash +invokeai-install --add https://civitai.com/api/download/models/161302 ^ + gsdf/Counterfeit-V3.0 ^ + D:\Models\merge_model_two.safetensors +``` +(Note that ^ is the Windows long-line continuation character. Use \\ on +Linux/Mac). + +* This will list installed models of type `main`: + +```bash +invokeai-model-install --list-models main +``` + +* This will delete the models named `voxel-ish` and `realisticVision`: + +```bash +invokeai-model-install --delete voxel-ish realisticVision +``` + +## **invokeai-configure** + +This is the console-based configure script that ran when InvokeAI was +first installed. You can run it again at any time to change the +configuration, repair a broken install. + +Called without any arguments, `invokeai-configure` enters interactive +mode with two screens. The first screen is a form that provides access +to most of InvokeAI's configuration options. The second screen lets +you download, add, and delete models interactively. When you exit the +second screen, the script will add any missing "support models" +needed for core functionality, and any selected "sd weights" which are +the model checkpoint/diffusers files. + +This behavior can be changed via a series of command-line +arguments. Here are some of the useful ones: + +* `invokeai-configure --skip-sd-weights --skip-support-models` +This will run just the configuration part of the utility, skipping +downloading of support models and stable diffusion weights. + +* `invokeai-configure --yes` +This will run the configure script non-interactively. It will set the +configuration options to their default values, install/repair support +models, and download the "recommended" set of SD models. + +* `invokeai-configure --yes --default_only` +This will run the configure script non-interactively. In contrast to +the previous command, it will only download the default SD model, +Stable Diffusion v1.5 + +* `invokeai-configure --yes --default_only --skip-sd-weights` +This is similar to the previous command, but will not download any +SD models at all. It is usually used to repair a broken install. + +By default, `invokeai-configure` runs on the currently active InvokeAI +root folder. To run it against a different root, pass it the `--root +` argument. + +Lastly, you can use `invokeai-configure` to create a working root +directory entirely from scratch. Assuming you wish to make a root directory +named `InvokeAI-New`, run this command: + +```bash +invokeai-configure --root InvokeAI-New --yes --default_only +``` +This will create a minimally functional root directory. You can now +launch the web server against it with `invokeai-web --root InvokeAI-New`. + +## **invokeai-update** + +This is the interactive console-based script that is run by launcher +menu item [9] to update to a new version of InvokeAI. It takes no +command-line arguments. + +## **invokeai-metadata** + +This is a script which takes a list of InvokeAI-generated images and +outputs their metadata in the same JSON format that you get from the +`` button in the Web GUI. For example: + +```bash +$ invokeai-metadata ffe2a115-b492-493c-afff-7679aa034b50.png +ffe2a115-b492-493c-afff-7679aa034b50.png: +{ + "app_version": "3.1.0", + "cfg_scale": 8.0, + "clip_skip": 0, + "controlnets": [], + "generation_mode": "sdxl_txt2img", + "height": 1024, + "loras": [], + "model": { + "base_model": "sdxl", + "model_name": "stable-diffusion-xl-base-1.0", + "model_type": "main" + }, + "negative_prompt": "", + "negative_style_prompt": "", + "positive_prompt": "military grade sushi dinner for shock troopers", + "positive_style_prompt": "", + "rand_device": "cpu", + "refiner_cfg_scale": 7.5, + "refiner_model": { + "base_model": "sdxl-refiner", + "model_name": "sd_xl_refiner_1.0", + "model_type": "main" + }, + "refiner_negative_aesthetic_score": 2.5, + "refiner_positive_aesthetic_score": 6.0, + "refiner_scheduler": "euler", + "refiner_start": 0.8, + "refiner_steps": 20, + "scheduler": "euler", + "seed": 387129902, + "steps": 25, + "width": 1024 +} +``` + +You may list multiple files on the command line. + +## **invokeai-import-images** + +InvokeAI uses a database to store information about images it +generated, and just copying the image files from one InvokeAI root +directory to another does not automatically import those images into +the destination's gallery. This script allows you to bulk import +images generated by one instance of InvokeAI into a gallery maintained +by another. It also works on images generated by older versions of +InvokeAI, going way back to version 1. + +This script has an interactive mode only. The following example shows +it in action: + +```bash +$ invokeai-import-images +=============================================================================== +This script will import images generated by earlier versions of +InvokeAI into the currently installed root directory: + /home/XXXX/invokeai-main +If this is not what you want to do, type ctrl-C now to cancel. +=============================================================================== += Configuration & Settings +Found invokeai.yaml file at /home/XXXX/invokeai-main/invokeai.yaml: + Database : /home/XXXX/invokeai-main/databases/invokeai.db + Outputs : /home/XXXX/invokeai-main/outputs/images + +Use these paths for import (yes) or choose different ones (no) [Yn]: +Inputs: Specify absolute path containing InvokeAI .png images to import: /home/XXXX/invokeai-2.3/outputs/images/ +Include files from subfolders recursively [yN]? + +Options for board selection for imported images: +1) Select an existing board name. (found 4) +2) Specify a board name to create/add to. +3) Create/add to board named 'IMPORT'. +4) Create/add to board named 'IMPORT' with the current datetime string appended (.e.g IMPORT_20230919T203519Z). +5) Create/add to board named 'IMPORT' with a the original file app_version appended (.e.g IMPORT_2.2.5). +Specify desired board option: 3 + +=============================================================================== += Import Settings Confirmation + +Database File Path : /home/XXXX/invokeai-main/databases/invokeai.db +Outputs/Images Directory : /home/XXXX/invokeai-main/outputs/images +Import Image Source Directory : /home/XXXX/invokeai-2.3/outputs/images/ + Recurse Source SubDirectories : No +Count of .png file(s) found : 5785 +Board name option specified : IMPORT +Database backup will be taken at : /home/XXXX/invokeai-main/databases/backup + +Notes about the import process: +- Source image files will not be modified, only copied to the outputs directory. +- If the same file name already exists in the destination, the file will be skipped. +- If the same file name already has a record in the database, the file will be skipped. +- Invoke AI metadata tags will be updated/written into the imported copy only. +- On the imported copy, only Invoke AI known tags (latest and legacy) will be retained (dream, sd-metadata, invokeai, invokeai_metadata) +- A property 'imported_app_version' will be added to metadata that can be viewed in the UI's metadata viewer. +- The new 3.x InvokeAI outputs folder structure is flat so recursively found source imges will all be placed into the single outputs/images folder. + +Do you wish to continue with the import [Yn] ? + +Making DB Backup at /home/lstein/invokeai-main/databases/backup/backup-20230919T203519Z-invokeai.db...Done! + +=============================================================================== +Importing /home/XXXX/invokeai-2.3/outputs/images/17d09907-297d-4db3-a18a-60b337feac66.png +... (5785 more lines) ... +=============================================================================== += Import Complete - Elpased Time: 0.28 second(s) + +Source File(s) : 5785 +Total Imported : 5783 +Skipped b/c file already exists on disk : 1 +Skipped b/c file already exists in db : 0 +Errors during import : 1 +``` +## **invokeai-db-maintenance** + +This script helps maintain the integrity of your InvokeAI database by +finding and fixing three problems that can arise over time: + +1. An image was manually deleted from the outputs directory, leaving a + dangling image record in the InvokeAI database. This will cause a + black image to appear in the gallery. This is an "orphaned database + image record." The script can fix this by running a "clean" + operation on the database, removing the orphaned entries. + +2. An image is present in the outputs directory but there is no + corresponding entry in the database. This can happen when the image + is added manually to the outputs directory, or if a crash occurred + after the image was generated but before the database was + completely updated. The symptom is that the image is present in the + outputs folder but doesn't appear in the InvokeAI gallery. This is + called an "orphaned image file." The script can fix this problem by + running an "archive" operation in which orphaned files are moved + into a directory named `outputs/images-archive`. If you wish, you + can then run `invokeai-image-import` to reimport these images back + into the database. + +3. The thumbnail for an image is missing, again causing a black + gallery thumbnail. This is fixed by running the "thumbnaiils" + operation, which simply regenerates and re-registers the missing + thumbnail. + +You can find and fix all three of these problems in a single go by +executing this command: + +```bash +invokeai-db-maintenance --operation all +``` + +Or you can run just the clean and thumbnail operations like this: + +```bash +invokeai-db-maintenance -operation clean, thumbnail +``` + +If called without any arguments, the script will ask you which +operations you wish to perform. + +## **invokeai-migrate3** + +This script will migrate settings and models (but not images!) from an +InvokeAI v2.3 root folder to an InvokeAI 3.X folder. Call it with the +source and destination root folders like this: + +```bash +invokeai-migrate3 --from ~/invokeai-2.3 --to invokeai-3.1.1 +``` + +Both directories must previously have been properly created and +initialized by `invokeai-configure`. If you wish to migrate the images +contained in the older root as well, you can use the +`invokeai-image-migrate` script described earlier. + +--- + +Copyright (c) 2023, Lincoln Stein and the InvokeAI Development Team diff --git a/docs/features/index.md b/docs/features/index.md index 490da5e31f..bd37366314 100644 --- a/docs/features/index.md +++ b/docs/features/index.md @@ -51,6 +51,9 @@ Prevent InvokeAI from displaying unwanted racy images. ### * [Controlling Logging](LOGGING.md) Control how InvokeAI logs status messages. +### * [Command-line Utilities](UTILITIES.md) +A list of the command-line utilities available with InvokeAI. + (bs, length, n_heads, dim_per_head) + x = x.view(bs, length, heads, -1) + # (bs, length, n_heads, dim_per_head) --> (bs, n_heads, length, dim_per_head) + x = x.transpose(1, 2) + # (bs, n_heads, length, dim_per_head) --> (bs*n_heads, length, dim_per_head) + x = x.reshape(bs, heads, length, -1) + return x + + +class PerceiverAttention(nn.Module): + def __init__(self, *, dim, dim_head=64, heads=8): + super().__init__() + self.scale = dim_head**-0.5 + self.dim_head = dim_head + self.heads = heads + inner_dim = dim_head * heads + + self.norm1 = nn.LayerNorm(dim) + self.norm2 = nn.LayerNorm(dim) + + self.to_q = nn.Linear(dim, inner_dim, bias=False) + self.to_kv = nn.Linear(dim, inner_dim * 2, bias=False) + self.to_out = nn.Linear(inner_dim, dim, bias=False) + + def forward(self, x, latents): + """ + Args: + x (torch.Tensor): image features + shape (b, n1, D) + latent (torch.Tensor): latent features + shape (b, n2, D) + """ + x = self.norm1(x) + latents = self.norm2(latents) + + b, l, _ = latents.shape + + q = self.to_q(latents) + kv_input = torch.cat((x, latents), dim=-2) + k, v = self.to_kv(kv_input).chunk(2, dim=-1) + + q = reshape_tensor(q, self.heads) + k = reshape_tensor(k, self.heads) + v = reshape_tensor(v, self.heads) + + # attention + scale = 1 / math.sqrt(math.sqrt(self.dim_head)) + weight = (q * scale) @ (k * scale).transpose(-2, -1) # More stable with f16 than dividing afterwards + weight = torch.softmax(weight.float(), dim=-1).type(weight.dtype) + out = weight @ v + + out = out.permute(0, 2, 1, 3).reshape(b, l, -1) + + return self.to_out(out) + + +class Resampler(nn.Module): + def __init__( + self, + dim=1024, + depth=8, + dim_head=64, + heads=16, + num_queries=8, + embedding_dim=768, + output_dim=1024, + ff_mult=4, + ): + super().__init__() + + self.latents = nn.Parameter(torch.randn(1, num_queries, dim) / dim**0.5) + + self.proj_in = nn.Linear(embedding_dim, dim) + + self.proj_out = nn.Linear(dim, output_dim) + self.norm_out = nn.LayerNorm(output_dim) + + self.layers = nn.ModuleList([]) + for _ in range(depth): + self.layers.append( + nn.ModuleList( + [ + PerceiverAttention(dim=dim, dim_head=dim_head, heads=heads), + FeedForward(dim=dim, mult=ff_mult), + ] + ) + ) + + @classmethod + def from_state_dict(cls, state_dict: dict[torch.Tensor], depth=8, dim_head=64, heads=16, num_queries=8, ff_mult=4): + """A convenience function that initializes a Resampler from a state_dict. + + Some of the shape parameters are inferred from the state_dict (e.g. dim, embedding_dim, etc.). At the time of + writing, we did not have a need for inferring ALL of the shape parameters from the state_dict, but this would be + possible if needed in the future. + + Args: + state_dict (dict[torch.Tensor]): The state_dict to load. + depth (int, optional): + dim_head (int, optional): + heads (int, optional): + ff_mult (int, optional): + + Returns: + Resampler + """ + dim = state_dict["latents"].shape[2] + num_queries = state_dict["latents"].shape[1] + embedding_dim = state_dict["proj_in.weight"].shape[-1] + output_dim = state_dict["norm_out.weight"].shape[0] + + model = cls( + dim=dim, + depth=depth, + dim_head=dim_head, + heads=heads, + num_queries=num_queries, + embedding_dim=embedding_dim, + output_dim=output_dim, + ff_mult=ff_mult, + ) + model.load_state_dict(state_dict) + return model + + def forward(self, x): + latents = self.latents.repeat(x.size(0), 1, 1) + + x = self.proj_in(x) + + for attn, ff in self.layers: + latents = attn(x, latents) + latents + latents = ff(latents) + latents + + latents = self.proj_out(latents) + return self.norm_out(latents) diff --git a/invokeai/backend/model_management/__init__.py b/invokeai/backend/model_management/__init__.py index 6376585fe5..569428a9e7 100644 --- a/invokeai/backend/model_management/__init__.py +++ b/invokeai/backend/model_management/__init__.py @@ -1,15 +1,19 @@ """ Initialization file for invokeai.backend.model_management """ -from .model_manager import ModelManager, ModelInfo, AddModelResult, SchedulerPredictionType # noqa: F401 -from .model_cache import ModelCache # noqa: F401 +# This import must be first +from .model_manager import ModelManager, ModelInfo, AddModelResult, SchedulerPredictionType # noqa: F401 isort: split + from .lora import ModelPatcher, ONNXModelPatcher # noqa: F401 +from .model_cache import ModelCache # noqa: F401 from .models import ( # noqa: F401 BaseModelType, - ModelType, - SubModelType, - ModelVariantType, - ModelNotFoundException, DuplicateModelException, + ModelNotFoundException, + ModelType, + ModelVariantType, + SubModelType, ) -from .model_merge import ModelMerger, MergeInterpolationMethod # noqa: F401 + +# This import must be last +from .model_merge import ModelMerger, MergeInterpolationMethod # noqa: F401 isort: split diff --git a/invokeai/backend/model_management/convert_ckpt_to_diffusers.py b/invokeai/backend/model_management/convert_ckpt_to_diffusers.py index 110ab770d4..15712c2ee8 100644 --- a/invokeai/backend/model_management/convert_ckpt_to_diffusers.py +++ b/invokeai/backend/model_management/convert_ckpt_to_diffusers.py @@ -25,12 +25,7 @@ from typing import Optional, Union import requests import torch -from diffusers.models import ( - AutoencoderKL, - ControlNetModel, - PriorTransformer, - UNet2DConditionModel, -) +from diffusers.models import AutoencoderKL, ControlNetModel, PriorTransformer, UNet2DConditionModel from diffusers.pipelines.latent_diffusion.pipeline_latent_diffusion import LDMBertConfig, LDMBertModel from diffusers.pipelines.paint_by_example import PaintByExampleImageEncoder from diffusers.pipelines.pipeline_utils import DiffusionPipeline @@ -64,6 +59,7 @@ from transformers import ( from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.util.logging import InvokeAILogger + from .models import BaseModelType, ModelVariantType try: @@ -1203,8 +1199,8 @@ def download_from_original_stable_diffusion_ckpt( StableDiffusionControlNetPipeline, StableDiffusionInpaintPipeline, StableDiffusionPipeline, - StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline, + StableDiffusionXLPipeline, StableUnCLIPImg2ImgPipeline, StableUnCLIPPipeline, ) diff --git a/invokeai/backend/model_management/lora.py b/invokeai/backend/model_management/lora.py index d0d8d4226c..bb44455c88 100644 --- a/invokeai/backend/model_management/lora.py +++ b/invokeai/backend/model_management/lora.py @@ -2,8 +2,8 @@ from __future__ import annotations import copy from contextlib import contextmanager -from typing import Optional, Dict, Tuple, Any, Union, List from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union import numpy as np import torch @@ -14,7 +14,6 @@ from transformers import CLIPTextModel, CLIPTokenizer from .models.lora import LoRAModel - """ loras = [ (lora_model1, 0.7), @@ -307,9 +306,10 @@ class TextualInversionManager(BaseTextualInversionManager): class ONNXModelPatcher: - from .models.base import IAIOnnxRuntimeModel from diffusers import OnnxRuntimeModel + from .models.base import IAIOnnxRuntimeModel + @classmethod @contextmanager def apply_lora_unet( diff --git a/invokeai/backend/model_management/model_cache.py b/invokeai/backend/model_management/model_cache.py index 6f3e5bd6a5..8c015441b7 100644 --- a/invokeai/backend/model_management/model_cache.py +++ b/invokeai/backend/model_management/model_cache.py @@ -17,18 +17,23 @@ context. Use like this: """ import gc +import hashlib import os import sys -import hashlib from contextlib import suppress from dataclasses import dataclass, field from pathlib import Path -from typing import Dict, Union, types, Optional, Type, Any +from typing import Any, Dict, Optional, Type, Union, types import torch import invokeai.backend.util.logging as logger -from .models import BaseModelType, ModelType, SubModelType, ModelBase + +from ..util.devices import choose_torch_device +from .models import BaseModelType, ModelBase, ModelType, SubModelType + +if choose_torch_device() == torch.device("mps"): + from torch import mps # Maximum size of the cache, in gigs # Default is roughly enough to hold three fp16 diffusers models in RAM simultaneously @@ -405,6 +410,8 @@ class ModelCache(object): gc.collect() torch.cuda.empty_cache() + if choose_torch_device() == torch.device("mps"): + mps.empty_cache() self.logger.debug(f"After unloading: cached_models={len(self._cached_models)}") @@ -425,6 +432,8 @@ class ModelCache(object): gc.collect() torch.cuda.empty_cache() + if choose_torch_device() == torch.device("mps"): + mps.empty_cache() def _local_model_hash(self, model_path: Union[str, Path]) -> str: sha = hashlib.sha256() diff --git a/invokeai/backend/model_management/model_manager.py b/invokeai/backend/model_management/model_manager.py index d87bc03fb7..7bb188cb4e 100644 --- a/invokeai/backend/model_management/model_manager.py +++ b/invokeai/backend/model_management/model_manager.py @@ -25,6 +25,7 @@ Models are described using four attributes: ModelType.Lora -- a LoRA or LyCORIS fine-tune ModelType.TextualInversion -- a textual inversion embedding ModelType.ControlNet -- a ControlNet model + ModelType.IPAdapter -- an IPAdapter model 3) BaseModelType -- an enum indicating the stable diffusion base model, one of: BaseModelType.StableDiffusion1 @@ -234,8 +235,8 @@ import textwrap import types from dataclasses import dataclass from pathlib import Path -from shutil import rmtree, move -from typing import Optional, List, Literal, Tuple, Union, Dict, Set, Callable +from shutil import move, rmtree +from typing import Callable, Dict, List, Literal, Optional, Set, Tuple, Union import torch import yaml @@ -246,20 +247,21 @@ from pydantic import BaseModel, Field import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig from invokeai.backend.util import CUDA_DEVICE, Chdir + from .model_cache import ModelCache, ModelLocker from .model_search import ModelSearch from .models import ( - BaseModelType, - ModelType, - SubModelType, - ModelError, - SchedulerPredictionType, MODEL_CLASSES, - ModelConfigBase, - ModelNotFoundException, - InvalidModelException, + BaseModelType, DuplicateModelException, + InvalidModelException, ModelBase, + ModelConfigBase, + ModelError, + ModelNotFoundException, + ModelType, + SchedulerPredictionType, + SubModelType, ) # We are only starting to number the config file with release 3. @@ -999,8 +1001,8 @@ class ModelManager(object): new_models_found = True except DuplicateModelException as e: self.logger.warning(e) - except InvalidModelException: - self.logger.warning(f"Not a valid model: {model_path}") + except InvalidModelException as e: + self.logger.warning(f"Not a valid model: {model_path}. {e}") except NotImplementedError as e: self.logger.warning(e) diff --git a/invokeai/backend/model_management/model_merge.py b/invokeai/backend/model_management/model_merge.py index a34d9b0e3e..59201d64d9 100644 --- a/invokeai/backend/model_management/model_merge.py +++ b/invokeai/backend/model_management/model_merge.py @@ -9,13 +9,14 @@ Copyright (c) 2023 Lincoln Stein and the InvokeAI Development Team import warnings from enum import Enum from pathlib import Path +from typing import List, Optional, Union + from diffusers import DiffusionPipeline from diffusers import logging as dlogging -from typing import List, Union, Optional import invokeai.backend.util.logging as logger -from ...backend.model_management import ModelManager, ModelType, BaseModelType, ModelVariantType, AddModelResult +from ...backend.model_management import AddModelResult, BaseModelType, ModelManager, ModelType, ModelVariantType class MergeInterpolationMethod(str, Enum): diff --git a/invokeai/backend/model_management/model_probe.py b/invokeai/backend/model_management/model_probe.py index 0d6f61e145..1fc4a51354 100644 --- a/invokeai/backend/model_management/model_probe.py +++ b/invokeai/backend/model_management/model_probe.py @@ -1,24 +1,26 @@ import json -import torch -import safetensors.torch - +import re from dataclasses import dataclass - -from diffusers import ModelMixin, ConfigMixin from pathlib import Path -from typing import Callable, Literal, Union, Dict, Optional +from typing import Callable, Dict, Literal, Optional, Union + +import safetensors.torch +import torch +from diffusers import ConfigMixin, ModelMixin from picklescan.scanner import scan_file_path +from invokeai.backend.model_management.models.ip_adapter import IPAdapterModelFormat + from .models import ( BaseModelType, + InvalidModelException, ModelType, ModelVariantType, SchedulerPredictionType, SilenceWarnings, - InvalidModelException, ) -from .util import lora_token_vector_length from .models.base import read_checkpoint_meta +from .util import lora_token_vector_length @dataclass @@ -52,7 +54,9 @@ class ModelProbe(object): "StableDiffusionXLImg2ImgPipeline": ModelType.Main, "StableDiffusionXLInpaintPipeline": ModelType.Main, "AutoencoderKL": ModelType.Vae, + "AutoencoderTiny": ModelType.Vae, "ControlNetModel": ModelType.ControlNet, + "CLIPVisionModelWithProjection": ModelType.CLIPVision, } @classmethod @@ -119,14 +123,18 @@ class ModelProbe(object): and prediction_type == SchedulerPredictionType.VPrediction ), format=format, - image_size=1024 - if (base_type in {BaseModelType.StableDiffusionXL, BaseModelType.StableDiffusionXLRefiner}) - else 768 - if ( - base_type == BaseModelType.StableDiffusion2 - and prediction_type == SchedulerPredictionType.VPrediction - ) - else 512, + image_size=( + 1024 + if (base_type in {BaseModelType.StableDiffusionXL, BaseModelType.StableDiffusionXLRefiner}) + else ( + 768 + if ( + base_type == BaseModelType.StableDiffusion2 + and prediction_type == SchedulerPredictionType.VPrediction + ) + else 512 + ) + ), ) except Exception: raise @@ -171,6 +179,7 @@ class ModelProbe(object): Get the model type of a hugging-face style folder. """ class_name = None + error_hint = None if model: class_name = model.__class__.__name__ else: @@ -178,9 +187,10 @@ class ModelProbe(object): return ModelType.ONNX if (folder_path / "learned_embeds.bin").exists(): return ModelType.TextualInversion - if (folder_path / "pytorch_lora_weights.bin").exists(): return ModelType.Lora + if (folder_path / "image_encoder.txt").exists(): + return ModelType.IPAdapter i = folder_path / "model_index.json" c = folder_path / "config.json" @@ -189,13 +199,24 @@ class ModelProbe(object): if config_path: with open(config_path, "r") as file: conf = json.load(file) - class_name = conf["_class_name"] + if "_class_name" in conf: + class_name = conf["_class_name"] + elif "architectures" in conf: + class_name = conf["architectures"][0] + else: + class_name = None + else: + error_hint = f"No model_index.json or config.json found in {folder_path}." if class_name and (type := cls.CLASS2TYPE.get(class_name)): return type + else: + error_hint = f"class {class_name} is not one of the supported classes [{', '.join(cls.CLASS2TYPE.keys())}]" # give up - raise InvalidModelException(f"Unable to determine model type for {folder_path}") + raise InvalidModelException( + f"Unable to determine model type for {folder_path}" + (f"; {error_hint}" if error_hint else "") + ) @classmethod def _scan_and_load_checkpoint(cls, model_path: Path) -> dict: @@ -367,6 +388,16 @@ class ControlNetCheckpointProbe(CheckpointProbeBase): raise InvalidModelException("Unable to determine base type for {self.checkpoint_path}") +class IPAdapterCheckpointProbe(CheckpointProbeBase): + def get_base_type(self) -> BaseModelType: + raise NotImplementedError() + + +class CLIPVisionCheckpointProbe(CheckpointProbeBase): + def get_base_type(self) -> BaseModelType: + raise NotImplementedError() + + ######################################################## # classes for probing folders ####################################################### @@ -439,16 +470,32 @@ class PipelineFolderProbe(FolderProbeBase): class VaeFolderProbe(FolderProbeBase): def get_base_type(self) -> BaseModelType: + if self._config_looks_like_sdxl(): + return BaseModelType.StableDiffusionXL + elif self._name_looks_like_sdxl(): + # but SD and SDXL VAE are the same shape (3-channel RGB to 4-channel float scaled down + # by a factor of 8), we can't necessarily tell them apart by config hyperparameters. + return BaseModelType.StableDiffusionXL + else: + return BaseModelType.StableDiffusion1 + + def _config_looks_like_sdxl(self) -> bool: + # config values that distinguish Stability's SD 1.x VAE from their SDXL VAE. config_file = self.folder_path / "config.json" if not config_file.exists(): raise InvalidModelException(f"Cannot determine base type for {self.folder_path}") with open(config_file, "r") as file: config = json.load(file) - return ( - BaseModelType.StableDiffusionXL - if config.get("scaling_factor", 0) == 0.13025 and config.get("sample_size") in [512, 1024] - else BaseModelType.StableDiffusion1 - ) + return config.get("scaling_factor", 0) == 0.13025 and config.get("sample_size") in [512, 1024] + + def _name_looks_like_sdxl(self) -> bool: + return bool(re.search(r"xl\b", self._guess_name(), re.IGNORECASE)) + + def _guess_name(self) -> str: + name = self.folder_path.name + if name == "vae": + name = self.folder_path.parent.name + return name class TextualInversionFolderProbe(FolderProbeBase): @@ -486,11 +533,13 @@ class ControlNetFolderProbe(FolderProbeBase): base_model = ( BaseModelType.StableDiffusion1 if dimension == 768 - else BaseModelType.StableDiffusion2 - if dimension == 1024 - else BaseModelType.StableDiffusionXL - if dimension == 2048 - else None + else ( + BaseModelType.StableDiffusion2 + if dimension == 1024 + else BaseModelType.StableDiffusionXL + if dimension == 2048 + else None + ) ) if not base_model: raise InvalidModelException(f"Unable to determine model base for {self.folder_path}") @@ -510,15 +559,47 @@ class LoRAFolderProbe(FolderProbeBase): return LoRACheckpointProbe(model_file, None).get_base_type() +class IPAdapterFolderProbe(FolderProbeBase): + def get_format(self) -> str: + return IPAdapterModelFormat.InvokeAI.value + + def get_base_type(self) -> BaseModelType: + model_file = self.folder_path / "ip_adapter.bin" + if not model_file.exists(): + raise InvalidModelException("Unknown IP-Adapter model format.") + + state_dict = torch.load(model_file, map_location="cpu") + cross_attention_dim = state_dict["ip_adapter"]["1.to_k_ip.weight"].shape[-1] + if cross_attention_dim == 768: + return BaseModelType.StableDiffusion1 + elif cross_attention_dim == 1024: + return BaseModelType.StableDiffusion2 + elif cross_attention_dim == 2048: + return BaseModelType.StableDiffusionXL + else: + raise InvalidModelException(f"IP-Adapter had unexpected cross-attention dimension: {cross_attention_dim}.") + + +class CLIPVisionFolderProbe(FolderProbeBase): + def get_base_type(self) -> BaseModelType: + return BaseModelType.Any + + ############## register probe classes ###### ModelProbe.register_probe("diffusers", ModelType.Main, PipelineFolderProbe) ModelProbe.register_probe("diffusers", ModelType.Vae, VaeFolderProbe) ModelProbe.register_probe("diffusers", ModelType.Lora, LoRAFolderProbe) ModelProbe.register_probe("diffusers", ModelType.TextualInversion, TextualInversionFolderProbe) ModelProbe.register_probe("diffusers", ModelType.ControlNet, ControlNetFolderProbe) +ModelProbe.register_probe("diffusers", ModelType.IPAdapter, IPAdapterFolderProbe) +ModelProbe.register_probe("diffusers", ModelType.CLIPVision, CLIPVisionFolderProbe) + ModelProbe.register_probe("checkpoint", ModelType.Main, PipelineCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.Vae, VaeCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.Lora, LoRACheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.TextualInversion, TextualInversionCheckpointProbe) ModelProbe.register_probe("checkpoint", ModelType.ControlNet, ControlNetCheckpointProbe) +ModelProbe.register_probe("checkpoint", ModelType.IPAdapter, IPAdapterCheckpointProbe) +ModelProbe.register_probe("checkpoint", ModelType.CLIPVision, CLIPVisionCheckpointProbe) + ModelProbe.register_probe("onnx", ModelType.ONNX, ONNXFolderProbe) diff --git a/invokeai/backend/model_management/model_search.py b/invokeai/backend/model_management/model_search.py index 0a98091f4a..3cded73d80 100644 --- a/invokeai/backend/model_management/model_search.py +++ b/invokeai/backend/model_management/model_search.py @@ -5,8 +5,8 @@ Abstract base class for recursive directory search for models. import os from abc import ABC, abstractmethod -from typing import List, Set, types from pathlib import Path +from typing import List, Set, types import invokeai.backend.util.logging as logger @@ -79,7 +79,7 @@ class ModelSearch(ABC): self._models_found += 1 self._scanned_dirs.add(path) except Exception as e: - self.logger.warning(str(e)) + self.logger.warning(f"Failed to process '{path}': {e}") for f in files: path = Path(root) / f @@ -90,7 +90,7 @@ class ModelSearch(ABC): self.on_model_found(path) self._models_found += 1 except Exception as e: - self.logger.warning(str(e)) + self.logger.warning(f"Failed to process '{path}': {e}") class FindModels(ModelSearch): diff --git a/invokeai/backend/model_management/models/__init__.py b/invokeai/backend/model_management/models/__init__.py index 2de206257b..d361301554 100644 --- a/invokeai/backend/model_management/models/__init__.py +++ b/invokeai/backend/model_management/models/__init__.py @@ -1,29 +1,32 @@ import inspect from enum import Enum -from pydantic import BaseModel from typing import Literal, get_origin + +from pydantic import BaseModel + from .base import ( # noqa: F401 BaseModelType, - ModelType, - SubModelType, + DuplicateModelException, + InvalidModelException, ModelBase, ModelConfigBase, + ModelError, + ModelNotFoundException, + ModelType, ModelVariantType, SchedulerPredictionType, - ModelError, SilenceWarnings, - ModelNotFoundException, - InvalidModelException, - DuplicateModelException, + SubModelType, ) -from .stable_diffusion import StableDiffusion1Model, StableDiffusion2Model -from .sdxl import StableDiffusionXLModel -from .vae import VaeModel -from .lora import LoRAModel +from .clip_vision import CLIPVisionModel from .controlnet import ControlNetModel # TODO: -from .textual_inversion import TextualInversionModel - +from .ip_adapter import IPAdapterModel +from .lora import LoRAModel +from .sdxl import StableDiffusionXLModel +from .stable_diffusion import StableDiffusion1Model, StableDiffusion2Model from .stable_diffusion_onnx import ONNXStableDiffusion1Model, ONNXStableDiffusion2Model +from .textual_inversion import TextualInversionModel +from .vae import VaeModel MODEL_CLASSES = { BaseModelType.StableDiffusion1: { @@ -33,6 +36,8 @@ MODEL_CLASSES = { ModelType.Lora: LoRAModel, ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusion2: { ModelType.ONNX: ONNXStableDiffusion2Model, @@ -41,6 +46,8 @@ MODEL_CLASSES = { ModelType.Lora: LoRAModel, ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusionXL: { ModelType.Main: StableDiffusionXLModel, @@ -50,6 +57,8 @@ MODEL_CLASSES = { ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, }, BaseModelType.StableDiffusionXLRefiner: { ModelType.Main: StableDiffusionXLModel, @@ -59,6 +68,19 @@ MODEL_CLASSES = { ModelType.ControlNet: ControlNetModel, ModelType.TextualInversion: TextualInversionModel, ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.IPAdapter: IPAdapterModel, + ModelType.CLIPVision: CLIPVisionModel, + }, + BaseModelType.Any: { + ModelType.CLIPVision: CLIPVisionModel, + # The following model types are not expected to be used with BaseModelType.Any. + ModelType.ONNX: ONNXStableDiffusion2Model, + ModelType.Main: StableDiffusion2Model, + ModelType.Vae: VaeModel, + ModelType.Lora: LoRAModel, + ModelType.ControlNet: ControlNetModel, + ModelType.TextualInversion: TextualInversionModel, + ModelType.IPAdapter: IPAdapterModel, }, # BaseModelType.Kandinsky2_1: { # ModelType.Main: Kandinsky2_1Model, diff --git a/invokeai/backend/model_management/models/base.py b/invokeai/backend/model_management/models/base.py index ed1c2c6098..45b018af90 100644 --- a/invokeai/backend/model_management/models/base.py +++ b/invokeai/backend/model_management/models/base.py @@ -1,29 +1,25 @@ +import inspect import json import os import sys import typing -import inspect import warnings from abc import ABCMeta, abstractmethod from contextlib import suppress from enum import Enum from pathlib import Path -from picklescan.scanner import scan_file_path +from typing import Any, Callable, Dict, Generic, List, Literal, Optional, Type, TypeVar, Union -import torch import numpy as np import onnx import safetensors.torch -from diffusers import DiffusionPipeline, ConfigMixin -from onnx import numpy_helper -from onnxruntime import ( - InferenceSession, - SessionOptions, - get_available_providers, -) -from pydantic import BaseModel, Field -from typing import List, Dict, Optional, Type, Literal, TypeVar, Generic, Callable, Any, Union +import torch +from diffusers import ConfigMixin, DiffusionPipeline from diffusers import logging as diffusers_logging +from onnx import numpy_helper +from onnxruntime import InferenceSession, SessionOptions, get_available_providers +from picklescan.scanner import scan_file_path +from pydantic import BaseModel, Field from transformers import logging as transformers_logging @@ -40,6 +36,7 @@ class ModelNotFoundException(Exception): class BaseModelType(str, Enum): + Any = "any" # For models that are not associated with any particular base model. StableDiffusion1 = "sd-1" StableDiffusion2 = "sd-2" StableDiffusionXL = "sdxl" @@ -54,6 +51,8 @@ class ModelType(str, Enum): Lora = "lora" ControlNet = "controlnet" # used by model_probe TextualInversion = "embedding" + IPAdapter = "ip_adapter" + CLIPVision = "clip_vision" class SubModelType(str, Enum): diff --git a/invokeai/backend/model_management/models/clip_vision.py b/invokeai/backend/model_management/models/clip_vision.py new file mode 100644 index 0000000000..2276c6beed --- /dev/null +++ b/invokeai/backend/model_management/models/clip_vision.py @@ -0,0 +1,82 @@ +import os +from enum import Enum +from typing import Literal, Optional + +import torch +from transformers import CLIPVisionModelWithProjection + +from invokeai.backend.model_management.models.base import ( + BaseModelType, + InvalidModelException, + ModelBase, + ModelConfigBase, + ModelType, + SubModelType, + calc_model_size_by_data, + calc_model_size_by_fs, + classproperty, +) + + +class CLIPVisionModelFormat(str, Enum): + Diffusers = "diffusers" + + +class CLIPVisionModel(ModelBase): + class DiffusersConfig(ModelConfigBase): + model_format: Literal[CLIPVisionModelFormat.Diffusers] + + def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): + assert model_type == ModelType.CLIPVision + super().__init__(model_path, base_model, model_type) + + self.model_size = calc_model_size_by_fs(self.model_path) + + @classmethod + def detect_format(cls, path: str) -> str: + if not os.path.exists(path): + raise ModuleNotFoundError(f"No CLIP Vision model at path '{path}'.") + + if os.path.isdir(path) and os.path.exists(os.path.join(path, "config.json")): + return CLIPVisionModelFormat.Diffusers + + raise InvalidModelException(f"Unexpected CLIP Vision model format: {path}") + + @classproperty + def save_to_config(cls) -> bool: + return True + + def get_size(self, child_type: Optional[SubModelType] = None) -> int: + if child_type is not None: + raise ValueError("There are no child models in a CLIP Vision model.") + + return self.model_size + + def get_model( + self, + torch_dtype: Optional[torch.dtype], + child_type: Optional[SubModelType] = None, + ) -> CLIPVisionModelWithProjection: + if child_type is not None: + raise ValueError("There are no child models in a CLIP Vision model.") + + model = CLIPVisionModelWithProjection.from_pretrained(self.model_path, torch_dtype=torch_dtype) + + # Calculate a more accurate model size. + self.model_size = calc_model_size_by_data(model) + + return model + + @classmethod + def convert_if_required( + cls, + model_path: str, + output_path: str, + config: ModelConfigBase, + base_model: BaseModelType, + ) -> str: + format = cls.detect_format(model_path) + if format == CLIPVisionModelFormat.Diffusers: + return model_path + else: + raise ValueError(f"Unsupported format: '{format}'.") diff --git a/invokeai/backend/model_management/models/controlnet.py b/invokeai/backend/model_management/models/controlnet.py index ebc01399b5..359df91a82 100644 --- a/invokeai/backend/model_management/models/controlnet.py +++ b/invokeai/backend/model_management/models/controlnet.py @@ -1,23 +1,26 @@ import os -import torch from enum import Enum from pathlib import Path -from typing import Optional, Literal +from typing import Literal, Optional + +import torch + +import invokeai.backend.util.logging as logger +from invokeai.app.services.config import InvokeAIAppConfig + from .base import ( + BaseModelType, + EmptyConfigLoader, + InvalidModelException, ModelBase, ModelConfigBase, - BaseModelType, + ModelNotFoundException, ModelType, SubModelType, - EmptyConfigLoader, - calc_model_size_by_fs, calc_model_size_by_data, + calc_model_size_by_fs, classproperty, - InvalidModelException, - ModelNotFoundException, ) -from invokeai.app.services.config import InvokeAIAppConfig -import invokeai.backend.util.logging as logger class ControlNetModelFormat(str, Enum): diff --git a/invokeai/backend/model_management/models/ip_adapter.py b/invokeai/backend/model_management/models/ip_adapter.py new file mode 100644 index 0000000000..8e1e97c9e0 --- /dev/null +++ b/invokeai/backend/model_management/models/ip_adapter.py @@ -0,0 +1,92 @@ +import os +import typing +from enum import Enum +from typing import Literal, Optional + +import torch + +from invokeai.backend.ip_adapter.ip_adapter import IPAdapter, IPAdapterPlus, build_ip_adapter +from invokeai.backend.model_management.models.base import ( + BaseModelType, + InvalidModelException, + ModelBase, + ModelConfigBase, + ModelType, + SubModelType, + classproperty, +) + + +class IPAdapterModelFormat(str, Enum): + # The custom IP-Adapter model format defined by InvokeAI. + InvokeAI = "invokeai" + + +class IPAdapterModel(ModelBase): + class InvokeAIConfig(ModelConfigBase): + model_format: Literal[IPAdapterModelFormat.InvokeAI] + + def __init__(self, model_path: str, base_model: BaseModelType, model_type: ModelType): + assert model_type == ModelType.IPAdapter + super().__init__(model_path, base_model, model_type) + + self.model_size = os.path.getsize(self.model_path) + + @classmethod + def detect_format(cls, path: str) -> str: + if not os.path.exists(path): + raise ModuleNotFoundError(f"No IP-Adapter model at path '{path}'.") + + if os.path.isdir(path): + model_file = os.path.join(path, "ip_adapter.bin") + image_encoder_config_file = os.path.join(path, "image_encoder.txt") + if os.path.exists(model_file) and os.path.exists(image_encoder_config_file): + return IPAdapterModelFormat.InvokeAI + + raise InvalidModelException(f"Unexpected IP-Adapter model format: {path}") + + @classproperty + def save_to_config(cls) -> bool: + return True + + def get_size(self, child_type: Optional[SubModelType] = None) -> int: + if child_type is not None: + raise ValueError("There are no child models in an IP-Adapter model.") + + return self.model_size + + def get_model( + self, + torch_dtype: Optional[torch.dtype], + child_type: Optional[SubModelType] = None, + ) -> typing.Union[IPAdapter, IPAdapterPlus]: + if child_type is not None: + raise ValueError("There are no child models in an IP-Adapter model.") + + return build_ip_adapter( + ip_adapter_ckpt_path=os.path.join(self.model_path, "ip_adapter.bin"), device="cpu", dtype=torch_dtype + ) + + @classmethod + def convert_if_required( + cls, + model_path: str, + output_path: str, + config: ModelConfigBase, + base_model: BaseModelType, + ) -> str: + format = cls.detect_format(model_path) + if format == IPAdapterModelFormat.InvokeAI: + return model_path + else: + raise ValueError(f"Unsupported format: '{format}'.") + + +def get_ip_adapter_image_encoder_model_id(model_path: str): + """Read the ID of the image encoder associated with the IP-Adapter at `model_path`.""" + image_encoder_config_file = os.path.join(model_path, "image_encoder.txt") + + with open(image_encoder_config_file, "r") as f: + image_encoder_model = f.readline().strip() + + return image_encoder_model diff --git a/invokeai/backend/model_management/models/sdxl.py b/invokeai/backend/model_management/models/sdxl.py index 5bbe05be98..41586e35b9 100644 --- a/invokeai/backend/model_management/models/sdxl.py +++ b/invokeai/backend/model_management/models/sdxl.py @@ -1,19 +1,21 @@ -import os import json +import os from enum import Enum -from pydantic import Field from typing import Literal, Optional + +from omegaconf import OmegaConf +from pydantic import Field + from .base import ( - ModelConfigBase, BaseModelType, + DiffusersModel, + InvalidModelException, + ModelConfigBase, ModelType, ModelVariantType, - DiffusersModel, - read_checkpoint_meta, classproperty, - InvalidModelException, + read_checkpoint_meta, ) -from omegaconf import OmegaConf class StableDiffusionXLModelFormat(str, Enum): diff --git a/invokeai/backend/model_management/models/stable_diffusion.py b/invokeai/backend/model_management/models/stable_diffusion.py index cc34f14b9c..ffce42d9e9 100644 --- a/invokeai/backend/model_management/models/stable_diffusion.py +++ b/invokeai/backend/model_management/models/stable_diffusion.py @@ -1,26 +1,29 @@ -import os import json +import os from enum import Enum -from pydantic import Field from pathlib import Path from typing import Literal, Optional, Union + from diffusers import StableDiffusionInpaintPipeline, StableDiffusionPipeline -from .base import ( - ModelConfigBase, - BaseModelType, - ModelType, - ModelVariantType, - DiffusersModel, - SilenceWarnings, - read_checkpoint_meta, - classproperty, - InvalidModelException, - ModelNotFoundException, -) -from .sdxl import StableDiffusionXLModel +from omegaconf import OmegaConf +from pydantic import Field + import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig -from omegaconf import OmegaConf + +from .base import ( + BaseModelType, + DiffusersModel, + InvalidModelException, + ModelConfigBase, + ModelNotFoundException, + ModelType, + ModelVariantType, + SilenceWarnings, + classproperty, + read_checkpoint_meta, +) +from .sdxl import StableDiffusionXLModel class StableDiffusion1ModelFormat(str, Enum): @@ -272,8 +275,8 @@ def _convert_ckpt_and_cache( return output_path # to avoid circular import errors - from ..convert_ckpt_to_diffusers import convert_ckpt_to_diffusers from ...util.devices import choose_torch_device, torch_dtype + from ..convert_ckpt_to_diffusers import convert_ckpt_to_diffusers model_base_to_model_type = { BaseModelType.StableDiffusion1: "FrozenCLIPEmbedder", diff --git a/invokeai/backend/model_management/models/stable_diffusion_onnx.py b/invokeai/backend/model_management/models/stable_diffusion_onnx.py index 2780ba4728..2d0dd22c43 100644 --- a/invokeai/backend/model_management/models/stable_diffusion_onnx.py +++ b/invokeai/backend/model_management/models/stable_diffusion_onnx.py @@ -2,15 +2,16 @@ from enum import Enum from typing import Literal from diffusers import OnnxRuntimeModel + from .base import ( - ModelConfigBase, BaseModelType, + DiffusersModel, + IAIOnnxRuntimeModel, + ModelConfigBase, ModelType, ModelVariantType, - DiffusersModel, SchedulerPredictionType, classproperty, - IAIOnnxRuntimeModel, ) diff --git a/invokeai/backend/model_management/models/textual_inversion.py b/invokeai/backend/model_management/models/textual_inversion.py index a949a15be1..b59e635045 100644 --- a/invokeai/backend/model_management/models/textual_inversion.py +++ b/invokeai/backend/model_management/models/textual_inversion.py @@ -1,19 +1,20 @@ import os -import torch from typing import Optional -from .base import ( - ModelBase, - ModelConfigBase, - BaseModelType, - ModelType, - SubModelType, - classproperty, - ModelNotFoundException, - InvalidModelException, -) + +import torch # TODO: naming from ..lora import TextualInversionModel as TextualInversionModelRaw +from .base import ( + BaseModelType, + InvalidModelException, + ModelBase, + ModelConfigBase, + ModelNotFoundException, + ModelType, + SubModelType, + classproperty, +) class TextualInversionModel(ModelBase): diff --git a/invokeai/backend/model_management/models/vae.py b/invokeai/backend/model_management/models/vae.py index f5dc11b27b..637160c69b 100644 --- a/invokeai/backend/model_management/models/vae.py +++ b/invokeai/backend/model_management/models/vae.py @@ -8,19 +8,20 @@ import torch from omegaconf import OmegaConf from invokeai.app.services.config import InvokeAIAppConfig + from .base import ( + BaseModelType, + EmptyConfigLoader, + InvalidModelException, ModelBase, ModelConfigBase, - BaseModelType, - ModelType, - SubModelType, - ModelVariantType, - EmptyConfigLoader, - calc_model_size_by_fs, - calc_model_size_by_data, - classproperty, - InvalidModelException, ModelNotFoundException, + ModelType, + ModelVariantType, + SubModelType, + calc_model_size_by_data, + calc_model_size_by_fs, + classproperty, ) diff --git a/invokeai/backend/stable_diffusion/__init__.py b/invokeai/backend/stable_diffusion/__init__.py index a958750802..212045f81b 100644 --- a/invokeai/backend/stable_diffusion/__init__.py +++ b/invokeai/backend/stable_diffusion/__init__.py @@ -1,15 +1,6 @@ """ Initialization file for the invokeai.backend.stable_diffusion package """ -from .diffusers_pipeline import ( # noqa: F401 - ConditioningData, - PipelineIntermediateState, - StableDiffusionGeneratorPipeline, -) +from .diffusers_pipeline import PipelineIntermediateState, StableDiffusionGeneratorPipeline # noqa: F401 from .diffusion import InvokeAIDiffuserComponent # noqa: F401 from .diffusion.cross_attention_map_saving import AttentionMapSaver # noqa: F401 -from .diffusion.shared_invokeai_diffusion import ( # noqa: F401 - PostprocessingSettings, - BasicConditioningInfo, - SDXLConditioningInfo, -) diff --git a/invokeai/backend/stable_diffusion/diffusers_pipeline.py b/invokeai/backend/stable_diffusion/diffusers_pipeline.py index d88313f455..150481747a 100644 --- a/invokeai/backend/stable_diffusion/diffusers_pipeline.py +++ b/invokeai/backend/stable_diffusion/diffusers_pipeline.py @@ -1,24 +1,20 @@ from __future__ import annotations -import dataclasses -import inspect -from dataclasses import dataclass, field +import math +from contextlib import nullcontext +from dataclasses import dataclass from typing import Any, Callable, List, Optional, Union -import PIL.Image import einops +import PIL.Image import psutil import torch import torchvision.transforms as T from diffusers.models import AutoencoderKL, UNet2DConditionModel from diffusers.models.controlnet import ControlNetModel from diffusers.pipelines.stable_diffusion import StableDiffusionPipelineOutput -from diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion import ( - StableDiffusionPipeline, -) -from diffusers.pipelines.stable_diffusion.safety_checker import ( - StableDiffusionSafetyChecker, -) +from diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion import StableDiffusionPipeline +from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker from diffusers.schedulers import KarrasDiffusionSchedulers from diffusers.schedulers.scheduling_utils import SchedulerMixin, SchedulerOutput from diffusers.utils.import_utils import is_xformers_available @@ -27,13 +23,11 @@ from pydantic import Field from transformers import CLIPFeatureExtractor, CLIPTextModel, CLIPTokenizer from invokeai.app.services.config import InvokeAIAppConfig -from .diffusion import ( - AttentionMapSaver, - InvokeAIDiffuserComponent, - PostprocessingSettings, - BasicConditioningInfo, -) -from ..util import normalize_device, auto_detect_slice_size +from invokeai.backend.ip_adapter.ip_adapter import IPAdapter +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ConditioningData + +from ..util import auto_detect_slice_size, normalize_device +from .diffusion import AttentionMapSaver, InvokeAIDiffuserComponent @dataclass @@ -103,7 +97,7 @@ class AddsMaskGuidance: # Mask anything that has the same shape as prev_sample, return others as-is. return output_class( { - k: (self.apply_mask(v, self._t_for_field(k, t)) if are_like_tensors(prev_sample, v) else v) + k: self.apply_mask(v, self._t_for_field(k, t)) if are_like_tensors(prev_sample, v) else v for k, v in step_output.items() } ) @@ -170,39 +164,13 @@ class ControlNetData: @dataclass -class ConditioningData: - unconditioned_embeddings: BasicConditioningInfo - text_embeddings: BasicConditioningInfo - guidance_scale: Union[float, List[float]] - """ - Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598). - `guidance_scale` is defined as `w` of equation 2. of [Imagen Paper](https://arxiv.org/pdf/2205.11487.pdf). - Guidance scale is enabled by setting `guidance_scale > 1`. Higher guidance scale encourages to generate - images that are closely linked to the text `prompt`, usually at the expense of lower image quality. - """ - extra: Optional[InvokeAIDiffuserComponent.ExtraConditioningInfo] = None - scheduler_args: dict[str, Any] = field(default_factory=dict) - """ - Additional arguments to pass to invokeai_diffuser.do_latent_postprocessing(). - """ - postprocessing_settings: Optional[PostprocessingSettings] = None - - @property - def dtype(self): - return self.text_embeddings.dtype - - def add_scheduler_args_if_applicable(self, scheduler, **kwargs): - scheduler_args = dict(self.scheduler_args) - step_method = inspect.signature(scheduler.step) - for name, value in kwargs.items(): - try: - step_method.bind_partial(**{name: value}) - except TypeError: - # FIXME: don't silently discard arguments - pass # debug("%s does not accept argument named %r", scheduler, name) - else: - scheduler_args[name] = value - return dataclasses.replace(self, scheduler_args=scheduler_args) +class IPAdapterData: + ip_adapter_model: IPAdapter = Field(default=None) + # TODO: change to polymorphic so can do different weights per step (once implemented...) + weight: Union[float, List[float]] = Field(default=1.0) + # weight: float = Field(default=1.0) + begin_step_percent: float = Field(default=0.0) + end_step_percent: float = Field(default=1.0) @dataclass @@ -285,6 +253,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): ) self.invokeai_diffuser = InvokeAIDiffuserComponent(self.unet, self._unet_forward) self.control_model = control_model + self.use_ip_adapter = False def _adjust_memory_efficient_attention(self, latents: torch.Tensor): """ @@ -357,6 +326,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): additional_guidance: List[Callable] = None, callback: Callable[[PipelineIntermediateState], None] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, mask: Optional[torch.Tensor] = None, masked_latents: Optional[torch.Tensor] = None, seed: Optional[int] = None, @@ -408,6 +378,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): conditioning_data, additional_guidance=additional_guidance, control_data=control_data, + ip_adapter_data=ip_adapter_data, callback=callback, ) finally: @@ -427,6 +398,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): *, additional_guidance: List[Callable] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, callback: Callable[[PipelineIntermediateState], None] = None, ): self._adjust_memory_efficient_attention(latents) @@ -439,12 +411,26 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): if timesteps.shape[0] == 0: return latents, attention_map_saver - extra_conditioning_info = conditioning_data.extra - with self.invokeai_diffuser.custom_attention_context( - self.invokeai_diffuser.model, - extra_conditioning_info=extra_conditioning_info, - step_count=len(self.scheduler.timesteps), - ): + if conditioning_data.extra is not None and conditioning_data.extra.wants_cross_attention_control: + attn_ctx = self.invokeai_diffuser.custom_attention_context( + self.invokeai_diffuser.model, + extra_conditioning_info=conditioning_data.extra, + step_count=len(self.scheduler.timesteps), + ) + self.use_ip_adapter = False + elif ip_adapter_data is not None: + # TODO(ryand): Should we raise an exception if both custom attention and IP-Adapter attention are active? + # As it is now, the IP-Adapter will silently be skipped. + weight = ip_adapter_data.weight[0] if isinstance(ip_adapter_data.weight, List) else ip_adapter_data.weight + attn_ctx = ip_adapter_data.ip_adapter_model.apply_ip_adapter_attention( + unet=self.invokeai_diffuser.model, + scale=weight, + ) + self.use_ip_adapter = True + else: + attn_ctx = nullcontext() + + with attn_ctx: if callback is not None: callback( PipelineIntermediateState( @@ -467,6 +453,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): total_step_count=len(timesteps), additional_guidance=additional_guidance, control_data=control_data, + ip_adapter_data=ip_adapter_data, ) latents = step_output.prev_sample @@ -512,6 +499,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): total_step_count: int, additional_guidance: List[Callable] = None, control_data: List[ControlNetData] = None, + ip_adapter_data: Optional[IPAdapterData] = None, ): # invokeai_diffuser has batched timesteps, but diffusers schedulers expect a single value timestep = t[0] @@ -522,6 +510,24 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline): # i.e. before or after passing it to InvokeAIDiffuserComponent latent_model_input = self.scheduler.scale_model_input(latents, timestep) + # handle IP-Adapter + if self.use_ip_adapter and ip_adapter_data is not None: # somewhat redundant but logic is clearer + first_adapter_step = math.floor(ip_adapter_data.begin_step_percent * total_step_count) + last_adapter_step = math.ceil(ip_adapter_data.end_step_percent * total_step_count) + weight = ( + ip_adapter_data.weight[step_index] + if isinstance(ip_adapter_data.weight, List) + else ip_adapter_data.weight + ) + if step_index >= first_adapter_step and step_index <= last_adapter_step: + # only apply IP-Adapter if current step is within the IP-Adapter's begin/end step range + # ip_adapter_data.ip_adapter_model.set_scale(ip_adapter_data.weight) + ip_adapter_data.ip_adapter_model.set_scale(weight) + else: + # otherwise, set IP-Adapter scale to 0, so it has no effect + ip_adapter_data.ip_adapter_model.set_scale(0.0) + + # handle ControlNet(s) # default is no controlnet, so set controlnet processing output to None controlnet_down_block_samples, controlnet_mid_block_sample = None, None if control_data is not None: diff --git a/invokeai/backend/stable_diffusion/diffusion/__init__.py b/invokeai/backend/stable_diffusion/diffusion/__init__.py index 2bcc595889..00e6f1b916 100644 --- a/invokeai/backend/stable_diffusion/diffusion/__init__.py +++ b/invokeai/backend/stable_diffusion/diffusion/__init__.py @@ -3,9 +3,4 @@ Initialization file for invokeai.models.diffusion """ from .cross_attention_control import InvokeAICrossAttentionMixin # noqa: F401 from .cross_attention_map_saving import AttentionMapSaver # noqa: F401 -from .shared_invokeai_diffusion import ( # noqa: F401 - InvokeAIDiffuserComponent, - PostprocessingSettings, - BasicConditioningInfo, - SDXLConditioningInfo, -) +from .shared_invokeai_diffusion import InvokeAIDiffuserComponent # noqa: F401 diff --git a/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py new file mode 100644 index 0000000000..a8398e58ff --- /dev/null +++ b/invokeai/backend/stable_diffusion/diffusion/conditioning_data.py @@ -0,0 +1,101 @@ +import dataclasses +import inspect +from dataclasses import dataclass, field +from typing import Any, List, Optional, Union + +import torch + +from .cross_attention_control import Arguments + + +@dataclass +class ExtraConditioningInfo: + tokens_count_including_eos_bos: int + cross_attention_control_args: Optional[Arguments] = None + + @property + def wants_cross_attention_control(self): + return self.cross_attention_control_args is not None + + +@dataclass +class BasicConditioningInfo: + embeds: torch.Tensor + # TODO(ryand): Right now we awkwardly copy the extra conditioning info from here up to `ConditioningData`. This + # should only be stored in one place. + extra_conditioning: Optional[ExtraConditioningInfo] + # weight: float + # mode: ConditioningAlgo + + def to(self, device, dtype=None): + self.embeds = self.embeds.to(device=device, dtype=dtype) + return self + + +@dataclass +class SDXLConditioningInfo(BasicConditioningInfo): + pooled_embeds: torch.Tensor + add_time_ids: torch.Tensor + + def to(self, device, dtype=None): + self.pooled_embeds = self.pooled_embeds.to(device=device, dtype=dtype) + self.add_time_ids = self.add_time_ids.to(device=device, dtype=dtype) + return super().to(device=device, dtype=dtype) + + +@dataclass(frozen=True) +class PostprocessingSettings: + threshold: float + warmup: float + h_symmetry_time_pct: Optional[float] + v_symmetry_time_pct: Optional[float] + + +@dataclass +class IPAdapterConditioningInfo: + cond_image_prompt_embeds: torch.Tensor + """IP-Adapter image encoder conditioning embeddings. + Shape: (batch_size, num_tokens, encoding_dim). + """ + uncond_image_prompt_embeds: torch.Tensor + """IP-Adapter image encoding embeddings to use for unconditional generation. + Shape: (batch_size, num_tokens, encoding_dim). + """ + + +@dataclass +class ConditioningData: + unconditioned_embeddings: BasicConditioningInfo + text_embeddings: BasicConditioningInfo + guidance_scale: Union[float, List[float]] + """ + Guidance scale as defined in [Classifier-Free Diffusion Guidance](https://arxiv.org/abs/2207.12598). + `guidance_scale` is defined as `w` of equation 2. of [Imagen Paper](https://arxiv.org/pdf/2205.11487.pdf). + Guidance scale is enabled by setting `guidance_scale > 1`. Higher guidance scale encourages to generate + images that are closely linked to the text `prompt`, usually at the expense of lower image quality. + """ + extra: Optional[ExtraConditioningInfo] = None + scheduler_args: dict[str, Any] = field(default_factory=dict) + """ + Additional arguments to pass to invokeai_diffuser.do_latent_postprocessing(). + """ + postprocessing_settings: Optional[PostprocessingSettings] = None + + ip_adapter_conditioning: Optional[IPAdapterConditioningInfo] = None + + @property + def dtype(self): + return self.text_embeddings.dtype + + def add_scheduler_args_if_applicable(self, scheduler, **kwargs): + scheduler_args = dict(self.scheduler_args) + step_method = inspect.signature(scheduler.step) + for name, value in kwargs.items(): + try: + step_method.bind_partial(**{name: value}) + except TypeError: + # FIXME: don't silently discard arguments + pass # debug("%s does not accept argument named %r", scheduler, name) + else: + scheduler_args[name] = value + return dataclasses.replace(self, scheduler_args=scheduler_args) diff --git a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py index 35d4800859..3cb1862004 100644 --- a/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py +++ b/invokeai/backend/stable_diffusion/diffusion/cross_attention_control.py @@ -11,16 +11,12 @@ import diffusers import psutil import torch from compel.cross_attention_control import Arguments +from diffusers.models.attention_processor import Attention, AttentionProcessor, AttnProcessor, SlicedAttnProcessor from diffusers.models.unet_2d_condition import UNet2DConditionModel -from diffusers.models.attention_processor import AttentionProcessor -from diffusers.models.attention_processor import ( - Attention, - AttnProcessor, - SlicedAttnProcessor, -) from torch import nn import invokeai.backend.util.logging as logger + from ...util import torch_dtype @@ -380,11 +376,11 @@ def get_cross_attention_modules(model, which: CrossAttentionType) -> list[tuple[ # non-fatal error but .swap() won't work. logger.error( f"Error! CrossAttentionControl found an unexpected number of {cross_attention_class} modules in the model " - + f"(expected {expected_count}, found {cross_attention_modules_in_model_count}). Either monkey-patching failed " - + "or some assumption has changed about the structure of the model itself. Please fix the monkey-patching, " - + f"and/or update the {expected_count} above to an appropriate number, and/or find and inform someone who knows " - + "what it means. This error is non-fatal, but it is likely that .swap() and attention map display will not " - + "work properly until it is fixed." + f"(expected {expected_count}, found {cross_attention_modules_in_model_count}). Either monkey-patching " + "failed or some assumption has changed about the structure of the model itself. Please fix the " + f"monkey-patching, and/or update the {expected_count} above to an appropriate number, and/or find and " + "inform someone who knows what it means. This error is non-fatal, but it is likely that .swap() and " + "attention map display will not work properly until it is fixed." ) return attention_module_tuples @@ -581,6 +577,7 @@ class SlicedSwapCrossAttnProcesser(SlicedAttnProcessor): attention_mask=None, # kwargs swap_cross_attn_context: SwapCrossAttnContext = None, + **kwargs, ): attention_type = CrossAttentionType.SELF if encoder_hidden_states is None else CrossAttentionType.TOKENS diff --git a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py index f05adafca2..125e62a2e8 100644 --- a/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py +++ b/invokeai/backend/stable_diffusion/diffusion/shared_invokeai_diffusion.py @@ -1,8 +1,7 @@ from __future__ import annotations -from contextlib import contextmanager -from dataclasses import dataclass import math +from contextlib import contextmanager from typing import Any, Callable, Optional, Union import torch @@ -10,9 +9,14 @@ from diffusers import UNet2DConditionModel from typing_extensions import TypeAlias from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.backend.stable_diffusion.diffusion.conditioning_data import ( + ConditioningData, + ExtraConditioningInfo, + PostprocessingSettings, + SDXLConditioningInfo, +) from .cross_attention_control import ( - Arguments, Context, CrossAttentionType, SwapCrossAttnContext, @@ -31,37 +35,6 @@ ModelForwardCallback: TypeAlias = Union[ ] -@dataclass -class BasicConditioningInfo: - embeds: torch.Tensor - extra_conditioning: Optional[InvokeAIDiffuserComponent.ExtraConditioningInfo] - # weight: float - # mode: ConditioningAlgo - - def to(self, device, dtype=None): - self.embeds = self.embeds.to(device=device, dtype=dtype) - return self - - -@dataclass -class SDXLConditioningInfo(BasicConditioningInfo): - pooled_embeds: torch.Tensor - add_time_ids: torch.Tensor - - def to(self, device, dtype=None): - self.pooled_embeds = self.pooled_embeds.to(device=device, dtype=dtype) - self.add_time_ids = self.add_time_ids.to(device=device, dtype=dtype) - return super().to(device=device, dtype=dtype) - - -@dataclass(frozen=True) -class PostprocessingSettings: - threshold: float - warmup: float - h_symmetry_time_pct: Optional[float] - v_symmetry_time_pct: Optional[float] - - class InvokeAIDiffuserComponent: """ The aim of this component is to provide a single place for code that can be applied identically to @@ -75,15 +48,6 @@ class InvokeAIDiffuserComponent: debug_thresholding = False sequential_guidance = False - @dataclass - class ExtraConditioningInfo: - tokens_count_including_eos_bos: int - cross_attention_control_args: Optional[Arguments] = None - - @property - def wants_cross_attention_control(self): - return self.cross_attention_control_args is not None - def __init__( self, model, @@ -103,30 +67,26 @@ class InvokeAIDiffuserComponent: @contextmanager def custom_attention_context( self, - unet: UNet2DConditionModel, # note: also may futz with the text encoder depending on requested LoRAs + unet: UNet2DConditionModel, extra_conditioning_info: Optional[ExtraConditioningInfo], step_count: int, ): - old_attn_processors = None - if extra_conditioning_info and (extra_conditioning_info.wants_cross_attention_control): - old_attn_processors = unet.attn_processors - # Load lora conditions into the model - if extra_conditioning_info.wants_cross_attention_control: - self.cross_attention_control_context = Context( - arguments=extra_conditioning_info.cross_attention_control_args, - step_count=step_count, - ) - setup_cross_attention_control_attention_processors( - unet, - self.cross_attention_control_context, - ) + old_attn_processors = unet.attn_processors try: + self.cross_attention_control_context = Context( + arguments=extra_conditioning_info.cross_attention_control_args, + step_count=step_count, + ) + setup_cross_attention_control_attention_processors( + unet, + self.cross_attention_control_context, + ) + yield None finally: self.cross_attention_control_context = None - if old_attn_processors is not None: - unet.set_attn_processor(old_attn_processors) + unet.set_attn_processor(old_attn_processors) # TODO resuscitate attention map saving # self.remove_attention_map_saving() @@ -376,11 +336,24 @@ class InvokeAIDiffuserComponent: # methods below are called from do_diffusion_step and should be considered private to this class. - def _apply_standard_conditioning(self, x, sigma, conditioning_data, **kwargs): - # fast batched path + def _apply_standard_conditioning(self, x, sigma, conditioning_data: ConditioningData, **kwargs): + """Runs the conditioned and unconditioned UNet forward passes in a single batch for faster inference speed at + the cost of higher memory usage. + """ x_twice = torch.cat([x] * 2) sigma_twice = torch.cat([sigma] * 2) + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": torch.cat( + [ + conditioning_data.ip_adapter_conditioning.uncond_image_prompt_embeds, + conditioning_data.ip_adapter_conditioning.cond_image_prompt_embeds, + ] + ) + } + added_cond_kwargs = None if type(conditioning_data.text_embeddings) is SDXLConditioningInfo: added_cond_kwargs = { @@ -408,6 +381,7 @@ class InvokeAIDiffuserComponent: x_twice, sigma_twice, both_conditionings, + cross_attention_kwargs=cross_attention_kwargs, encoder_attention_mask=encoder_attention_mask, added_cond_kwargs=added_cond_kwargs, **kwargs, @@ -419,9 +393,12 @@ class InvokeAIDiffuserComponent: self, x: torch.Tensor, sigma, - conditioning_data, + conditioning_data: ConditioningData, **kwargs, ): + """Runs the conditioned and unconditioned UNet forward passes sequentially for lower memory usage at the cost of + slower execution speed. + """ # low-memory sequential path uncond_down_block, cond_down_block = None, None down_block_additional_residuals = kwargs.pop("down_block_additional_residuals", None) @@ -437,6 +414,13 @@ class InvokeAIDiffuserComponent: if mid_block_additional_residual is not None: uncond_mid_block, cond_mid_block = mid_block_additional_residual.chunk(2) + # Run unconditional UNet denoising. + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": conditioning_data.ip_adapter_conditioning.uncond_image_prompt_embeds + } + added_cond_kwargs = None is_sdxl = type(conditioning_data.text_embeddings) is SDXLConditioningInfo if is_sdxl: @@ -449,12 +433,21 @@ class InvokeAIDiffuserComponent: x, sigma, conditioning_data.unconditioned_embeddings.embeds, + cross_attention_kwargs=cross_attention_kwargs, down_block_additional_residuals=uncond_down_block, mid_block_additional_residual=uncond_mid_block, added_cond_kwargs=added_cond_kwargs, **kwargs, ) + # Run conditional UNet denoising. + cross_attention_kwargs = None + if conditioning_data.ip_adapter_conditioning is not None: + cross_attention_kwargs = { + "ip_adapter_image_prompt_embeds": conditioning_data.ip_adapter_conditioning.cond_image_prompt_embeds + } + + added_cond_kwargs = None if is_sdxl: added_cond_kwargs = { "text_embeds": conditioning_data.text_embeddings.pooled_embeds, @@ -465,6 +458,7 @@ class InvokeAIDiffuserComponent: x, sigma, conditioning_data.text_embeddings.embeds, + cross_attention_kwargs=cross_attention_kwargs, down_block_additional_residuals=cond_down_block, mid_block_additional_residual=cond_mid_block, added_cond_kwargs=added_cond_kwargs, diff --git a/invokeai/backend/stable_diffusion/schedulers/schedulers.py b/invokeai/backend/stable_diffusion/schedulers/schedulers.py index 2f62f8c477..16213acb64 100644 --- a/invokeai/backend/stable_diffusion/schedulers/schedulers.py +++ b/invokeai/backend/stable_diffusion/schedulers/schedulers.py @@ -1,18 +1,18 @@ from diffusers import ( DDIMScheduler, + DDPMScheduler, + DEISMultistepScheduler, DPMSolverMultistepScheduler, - KDPM2DiscreteScheduler, - KDPM2AncestralDiscreteScheduler, - EulerDiscreteScheduler, + DPMSolverSDEScheduler, + DPMSolverSinglestepScheduler, EulerAncestralDiscreteScheduler, + EulerDiscreteScheduler, HeunDiscreteScheduler, + KDPM2AncestralDiscreteScheduler, + KDPM2DiscreteScheduler, LMSDiscreteScheduler, PNDMScheduler, UniPCMultistepScheduler, - DPMSolverSinglestepScheduler, - DEISMultistepScheduler, - DDPMScheduler, - DPMSolverSDEScheduler, ) SCHEDULER_MAP = dict( diff --git a/invokeai/backend/training/textual_inversion_training.py b/invokeai/backend/training/textual_inversion_training.py index d92aa80b38..153bd0fcc4 100644 --- a/invokeai/backend/training/textual_inversion_training.py +++ b/invokeai/backend/training/textual_inversion_training.py @@ -24,13 +24,8 @@ import torch.utils.checkpoint import transformers from accelerate import Accelerator from accelerate.logging import get_logger -from accelerate.utils import set_seed, ProjectConfiguration -from diffusers import ( - AutoencoderKL, - DDPMScheduler, - StableDiffusionPipeline, - UNet2DConditionModel, -) +from accelerate.utils import ProjectConfiguration, set_seed +from diffusers import AutoencoderKL, DDPMScheduler, StableDiffusionPipeline, UNet2DConditionModel from diffusers.optimization import get_scheduler from diffusers.utils import check_min_version from diffusers.utils.import_utils import is_xformers_available diff --git a/invokeai/backend/util/__init__.py b/invokeai/backend/util/__init__.py index a8d53f54a4..601aab00cb 100644 --- a/invokeai/backend/util/__init__.py +++ b/invokeai/backend/util/__init__.py @@ -1,6 +1,7 @@ """ Initialization file for invokeai.backend.util """ +from .attention import auto_detect_slice_size # noqa: F401 from .devices import ( # noqa: F401 CPU_DEVICE, CUDA_DEVICE, @@ -10,11 +11,4 @@ from .devices import ( # noqa: F401 normalize_device, torch_dtype, ) -from .util import ( # noqa: F401 - ask_user, - download_with_resume, - instantiate_from_config, - url_attachment_name, - Chdir, -) -from .attention import auto_detect_slice_size # noqa: F401 +from .util import Chdir, ask_user, download_with_resume, instantiate_from_config, url_attachment_name # noqa: F401 diff --git a/invokeai/backend/util/attention.py b/invokeai/backend/util/attention.py index a821464394..910933044e 100644 --- a/invokeai/backend/util/attention.py +++ b/invokeai/backend/util/attention.py @@ -3,8 +3,8 @@ Utility routine used for autodetection of optimal slice size for attention mechanism. """ -import torch import psutil +import torch def auto_detect_slice_size(latents: torch.Tensor) -> str: diff --git a/invokeai/backend/util/db_maintenance.py b/invokeai/backend/util/db_maintenance.py new file mode 100644 index 0000000000..d5f6200ad9 --- /dev/null +++ b/invokeai/backend/util/db_maintenance.py @@ -0,0 +1,568 @@ +# pylint: disable=line-too-long +# pylint: disable=broad-exception-caught +# pylint: disable=missing-function-docstring +"""Script to peform db maintenance and outputs directory management.""" + +import argparse +import datetime +import enum +import glob +import locale +import os +import shutil +import sqlite3 +from pathlib import Path + +import PIL +import PIL.ImageOps +import PIL.PngImagePlugin +import yaml + + +class ConfigMapper: + """Configuration loader.""" + + def __init__(self): # noqa D107 + pass + + TIMESTAMP_STRING = datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%SZ") + + INVOKE_DIRNAME = "invokeai" + YAML_FILENAME = "invokeai.yaml" + DATABASE_FILENAME = "invokeai.db" + + database_path = None + database_backup_dir = None + outputs_path = None + archive_path = None + thumbnails_path = None + thumbnails_archive_path = None + + def load(self): + """Read paths from yaml config and validate.""" + root = "." + + if not self.__load_from_root_config(os.path.abspath(root)): + return False + + return True + + def __load_from_root_config(self, invoke_root): + """Validate a yaml path exists, confirm the user wants to use it and load config.""" + yaml_path = os.path.join(invoke_root, self.YAML_FILENAME) + if os.path.exists(yaml_path): + db_dir, outdir = self.__load_paths_from_yaml_file(yaml_path) + + if db_dir is None or outdir is None: + print("The invokeai.yaml file was found but is missing the db_dir and/or outdir setting!") + return False + + if os.path.isabs(db_dir): + self.database_path = os.path.join(db_dir, self.DATABASE_FILENAME) + else: + self.database_path = os.path.join(invoke_root, db_dir, self.DATABASE_FILENAME) + + self.database_backup_dir = os.path.join(os.path.dirname(self.database_path), "backup") + + if os.path.isabs(outdir): + self.outputs_path = os.path.join(outdir, "images") + self.archive_path = os.path.join(outdir, "images-archive") + else: + self.outputs_path = os.path.join(invoke_root, outdir, "images") + self.archive_path = os.path.join(invoke_root, outdir, "images-archive") + + self.thumbnails_path = os.path.join(self.outputs_path, "thumbnails") + self.thumbnails_archive_path = os.path.join(self.archive_path, "thumbnails") + + db_exists = os.path.exists(self.database_path) + outdir_exists = os.path.exists(self.outputs_path) + + text = f"Found {self.YAML_FILENAME} file at {yaml_path}:" + text += f"\n Database : {self.database_path} - {'Exists!' if db_exists else 'Not Found!'}" + text += f"\n Outputs : {self.outputs_path}- {'Exists!' if outdir_exists else 'Not Found!'}" + print(text) + + if db_exists and outdir_exists: + return True + else: + print( + "\nOne or more paths specified in invoke.yaml do not exist. Please inspect/correct the configuration and ensure the script is run in the developer console mode (option 8) from an Invoke AI root directory." + ) + return False + else: + print( + f"Auto-discovery of configuration failed! Could not find ({yaml_path})!\n\nPlease ensure the script is run in the developer console mode (option 8) from an Invoke AI root directory." + ) + return False + + def __load_paths_from_yaml_file(self, yaml_path): + """Load an Invoke AI yaml file and get the database and outputs paths.""" + try: + with open(yaml_path, "rt", encoding=locale.getpreferredencoding()) as file: + yamlinfo = yaml.safe_load(file) + db_dir = yamlinfo.get("InvokeAI", {}).get("Paths", {}).get("db_dir", None) + outdir = yamlinfo.get("InvokeAI", {}).get("Paths", {}).get("outdir", None) + return db_dir, outdir + except Exception: + print(f"Failed to load paths from yaml file! {yaml_path}!") + return None, None + + +class MaintenanceStats: + """DTO for tracking work progress.""" + + def __init__(self): # noqa D107 + pass + + time_start = datetime.datetime.utcnow() + count_orphaned_db_entries_cleaned = 0 + count_orphaned_disk_files_cleaned = 0 + count_orphaned_thumbnails_cleaned = 0 + count_thumbnails_regenerated = 0 + count_errors = 0 + + @staticmethod + def get_elapsed_time_string(): + """Get a friendly time string for the time elapsed since processing start.""" + time_now = datetime.datetime.utcnow() + total_seconds = (time_now - MaintenanceStats.time_start).total_seconds() + hours = int((total_seconds) / 3600) + minutes = int(((total_seconds) % 3600) / 60) + seconds = total_seconds % 60 + out_str = f"{hours} hour(s) -" if hours > 0 else "" + out_str += f"{minutes} minute(s) -" if minutes > 0 else "" + out_str += f"{seconds:.2f} second(s)" + return out_str + + +class DatabaseMapper: + """Class to abstract database functionality.""" + + def __init__(self, database_path, database_backup_dir): # noqa D107 + self.database_path = database_path + self.database_backup_dir = database_backup_dir + self.connection = None + self.cursor = None + + def backup(self, timestamp_string): + """Take a backup of the database.""" + if not os.path.exists(self.database_backup_dir): + print(f"Database backup directory {self.database_backup_dir} does not exist -> creating...", end="") + os.makedirs(self.database_backup_dir) + print("Done!") + database_backup_path = os.path.join(self.database_backup_dir, f"backup-{timestamp_string}-invokeai.db") + print(f"Making DB Backup at {database_backup_path}...", end="") + shutil.copy2(self.database_path, database_backup_path) + print("Done!") + + def connect(self): + """Open connection to the database.""" + self.connection = sqlite3.connect(self.database_path) + self.cursor = self.connection.cursor() + + def get_all_image_files(self): + """Get the full list of image file names from the database.""" + sql_get_image_by_name = "SELECT image_name FROM images" + self.cursor.execute(sql_get_image_by_name) + rows = self.cursor.fetchall() + db_files = [] + for row in rows: + db_files.append(row[0]) + return db_files + + def remove_image_file_record(self, filename: str): + """Remove an image file reference from the database by filename.""" + sanitized_filename = str.replace(filename, "'", "''") # prevent injection + sql_command = f"DELETE FROM images WHERE image_name='{sanitized_filename}'" + self.cursor.execute(sql_command) + self.connection.commit() + + def does_image_exist(self, image_filename): + """Check database if a image name already exists and return a boolean.""" + sanitized_filename = str.replace(image_filename, "'", "''") # prevent injection + sql_get_image_by_name = f"SELECT image_name FROM images WHERE image_name='{sanitized_filename}'" + self.cursor.execute(sql_get_image_by_name) + rows = self.cursor.fetchall() + return True if len(rows) > 0 else False + + def disconnect(self): + """Disconnect from the db, cleaning up connections and cursors.""" + if self.cursor is not None: + self.cursor.close() + if self.connection is not None: + self.connection.close() + + +class PhysicalFileMapper: + """Containing class for script functionality.""" + + def __init__(self, outputs_path, thumbnails_path, archive_path, thumbnails_archive_path): # noqa D107 + self.outputs_path = outputs_path + self.archive_path = archive_path + self.thumbnails_path = thumbnails_path + self.thumbnails_archive_path = thumbnails_archive_path + + def create_archive_directories(self): + """Create the directory for archiving orphaned image files.""" + if not os.path.exists(self.archive_path): + print(f"Image archive directory ({self.archive_path}) does not exist -> creating...", end="") + os.makedirs(self.archive_path) + print("Created!") + if not os.path.exists(self.thumbnails_archive_path): + print( + f"Image thumbnails archive directory ({self.thumbnails_archive_path}) does not exist -> creating...", + end="", + ) + os.makedirs(self.thumbnails_archive_path) + print("Created!") + + def get_image_path_for_image_name(self, image_filename): # noqa D102 + return os.path.join(self.outputs_path, image_filename) + + def image_file_exists(self, image_filename): # noqa D102 + return os.path.exists(self.get_image_path_for_image_name(image_filename)) + + def get_thumbnail_path_for_image(self, image_filename): # noqa D102 + return os.path.join(self.thumbnails_path, os.path.splitext(image_filename)[0]) + ".webp" + + def get_image_name_from_thumbnail_path(self, thumbnail_path): # noqa D102 + return os.path.splitext(os.path.basename(thumbnail_path))[0] + ".png" + + def thumbnail_exists_for_filename(self, image_filename): # noqa D102 + return os.path.exists(self.get_thumbnail_path_for_image(image_filename)) + + def archive_image(self, image_filename): # noqa D102 + if self.image_file_exists(image_filename): + image_path = self.get_image_path_for_image_name(image_filename) + shutil.move(image_path, self.archive_path) + + def archive_thumbnail_by_image_filename(self, image_filename): # noqa D102 + if self.thumbnail_exists_for_filename(image_filename): + thumbnail_path = self.get_thumbnail_path_for_image(image_filename) + shutil.move(thumbnail_path, self.thumbnails_archive_path) + + def get_all_png_filenames_in_directory(self, directory_path): # noqa D102 + filepaths = glob.glob(directory_path + "/*.png", recursive=False) + filenames = [] + for filepath in filepaths: + filenames.append(os.path.basename(filepath)) + return filenames + + def get_all_thumbnails_with_full_path(self, thumbnails_directory): # noqa D102 + return glob.glob(thumbnails_directory + "/*.webp", recursive=False) + + def generate_thumbnail_for_image_name(self, image_filename): # noqa D102 + # create thumbnail + file_path = self.get_image_path_for_image_name(image_filename) + thumb_path = self.get_thumbnail_path_for_image(image_filename) + thumb_size = 256, 256 + with PIL.Image.open(file_path) as source_image: + source_image.thumbnail(thumb_size) + source_image.save(thumb_path, "webp") + + +class MaintenanceOperation(str, enum.Enum): + """Enum class for operations.""" + + Ask = "ask" + CleanOrphanedDbEntries = "clean" + CleanOrphanedDiskFiles = "archive" + ReGenerateThumbnails = "thumbnails" + All = "all" + + +class InvokeAIDatabaseMaintenanceApp: + """Main processor class for the application.""" + + _operation: MaintenanceOperation + _headless: bool = False + __stats: MaintenanceStats = MaintenanceStats() + + def __init__(self, operation: MaintenanceOperation = MaintenanceOperation.Ask): + """Initialize maintenance app.""" + self._operation = MaintenanceOperation(operation) + self._headless = operation != MaintenanceOperation.Ask + + def ask_for_operation(self) -> MaintenanceOperation: + """Ask user to choose the operation to perform.""" + while True: + print() + print("It is recommennded to run these operations as ordered below to avoid additional") + print("work being performed that will be discarded in a subsequent step.") + print() + print("Select maintenance operation:") + print() + print("1) Clean Orphaned Database Image Entries") + print(" Cleans entries in the database where the matching file was removed from") + print(" the outputs directory.") + print("2) Archive Orphaned Image Files") + print(" Files found in the outputs directory without an entry in the database are") + print(" moved to an archive directory.") + print("3) Re-Generate Missing Thumbnail Files") + print(" For files found in the outputs directory, re-generate a thumbnail if it") + print(" not found in the thumbnails directory.") + print() + print("(CTRL-C to quit)") + + try: + input_option = int(input("Specify desired operation number (1-3): ")) + + operations = [ + MaintenanceOperation.CleanOrphanedDbEntries, + MaintenanceOperation.CleanOrphanedDiskFiles, + MaintenanceOperation.ReGenerateThumbnails, + ] + return operations[input_option - 1] + except (IndexError, ValueError): + print("\nInvalid selection!") + + def ask_to_continue(self) -> bool: + """Ask user whether they want to continue with the operation.""" + while True: + input_choice = input("Do you wish to continue? (Y or N)? ") + if str.lower(input_choice) == "y": + return True + if str.lower(input_choice) == "n": + return False + + def clean_orphaned_db_entries( + self, config: ConfigMapper, file_mapper: PhysicalFileMapper, db_mapper: DatabaseMapper + ): + """Clean dangling database entries that no longer point to a file in outputs.""" + if self._headless: + print(f"Removing database references to images that no longer exist in {config.outputs_path}...") + else: + print() + print("===============================================================================") + print("= Clean Orphaned Database Entries") + print() + print("Perform this operation if you have removed files from the outputs/images") + print("directory but the database was never updated. You may see this as empty imaages") + print("in the app gallery, or images that only show an enlarged version of the") + print("thumbnail.") + print() + print(f"Database File Path : {config.database_path}") + print(f"Database backup will be taken at : {config.database_backup_dir}") + print(f"Outputs/Images Directory : {config.outputs_path}") + print(f"Outputs/Images Archive Directory : {config.archive_path}") + + print("\nNotes about this operation:") + print("- This operation will find database image file entries that do not exist in the") + print(" outputs/images dir and remove those entries from the database.") + print("- This operation will target all image types including intermediate files.") + print("- If a thumbnail still exists in outputs/images/thumbnails matching the") + print(" orphaned entry, it will be moved to the archive directory.") + print() + + if not self.ask_to_continue(): + raise KeyboardInterrupt + + file_mapper.create_archive_directories() + db_mapper.backup(config.TIMESTAMP_STRING) + db_mapper.connect() + db_files = db_mapper.get_all_image_files() + for db_file in db_files: + try: + if not file_mapper.image_file_exists(db_file): + print(f"Found orphaned image db entry {db_file}. Cleaning ...", end="") + db_mapper.remove_image_file_record(db_file) + print("Cleaned!") + if file_mapper.thumbnail_exists_for_filename(db_file): + print("A thumbnail was found, archiving ...", end="") + file_mapper.archive_thumbnail_by_image_filename(db_file) + print("Archived!") + self.__stats.count_orphaned_db_entries_cleaned += 1 + except Exception as ex: + print("An error occurred cleaning db entry, error was:") + print(ex) + self.__stats.count_errors += 1 + + def clean_orphaned_disk_files( + self, config: ConfigMapper, file_mapper: PhysicalFileMapper, db_mapper: DatabaseMapper + ): + """Archive image files that no longer have entries in the database.""" + if self._headless: + print(f"Archiving orphaned image files to {config.archive_path}...") + else: + print() + print("===============================================================================") + print("= Clean Orphaned Disk Files") + print() + print("Perform this operation if you have files that were copied into the outputs") + print("directory which are not referenced by the database. This can happen if you") + print("upgraded to a version with a fresh database, but re-used the outputs directory") + print("and now new images are mixed with the files not in the db. The script will") + print("archive these files so you can choose to delete them or re-import using the") + print("official import script.") + print() + print(f"Database File Path : {config.database_path}") + print(f"Database backup will be taken at : {config.database_backup_dir}") + print(f"Outputs/Images Directory : {config.outputs_path}") + print(f"Outputs/Images Archive Directory : {config.archive_path}") + + print("\nNotes about this operation:") + print("- This operation will find image files not referenced by the database and move to an") + print(" archive directory.") + print("- This operation will target all image types including intermediate references.") + print("- The matching thumbnail will also be archived.") + print("- Any remaining orphaned thumbnails will also be archived.") + + if not self.ask_to_continue(): + raise KeyboardInterrupt + + print() + + file_mapper.create_archive_directories() + db_mapper.backup(config.TIMESTAMP_STRING) + db_mapper.connect() + phys_files = file_mapper.get_all_png_filenames_in_directory(config.outputs_path) + for phys_file in phys_files: + try: + if not db_mapper.does_image_exist(phys_file): + print(f"Found orphaned file {phys_file}, archiving...", end="") + file_mapper.archive_image(phys_file) + print("Archived!") + if file_mapper.thumbnail_exists_for_filename(phys_file): + print("Related thumbnail exists, archiving...", end="") + file_mapper.archive_thumbnail_by_image_filename(phys_file) + print("Archived!") + else: + print("No matching thumbnail existed to be cleaned.") + self.__stats.count_orphaned_disk_files_cleaned += 1 + except Exception as ex: + print("Error found trying to archive file or thumbnail, error was:") + print(ex) + self.__stats.count_errors += 1 + + thumb_filepaths = file_mapper.get_all_thumbnails_with_full_path(config.thumbnails_path) + # archive any remaining orphaned thumbnails + for thumb_filepath in thumb_filepaths: + try: + thumb_src_image_name = file_mapper.get_image_name_from_thumbnail_path(thumb_filepath) + if not file_mapper.image_file_exists(thumb_src_image_name): + print(f"Found orphaned thumbnail {thumb_filepath}, archiving...", end="") + file_mapper.archive_thumbnail_by_image_filename(thumb_src_image_name) + print("Archived!") + self.__stats.count_orphaned_thumbnails_cleaned += 1 + except Exception as ex: + print("Error found trying to archive thumbnail, error was:") + print(ex) + self.__stats.count_errors += 1 + + def regenerate_thumbnails(self, config: ConfigMapper, file_mapper: PhysicalFileMapper, *args): + """Create missing thumbnails for any valid general images both in the db and on disk.""" + if self._headless: + print("Regenerating missing image thumbnails...") + else: + print() + print("===============================================================================") + print("= Regenerate Thumbnails") + print() + print("This operation will find files that have no matching thumbnail on disk") + print("and regenerate those thumbnail files.") + print("NOTE: It is STRONGLY recommended that the user first clean/archive orphaned") + print(" disk files from the previous menu to avoid wasting time regenerating") + print(" thumbnails for orphaned files.") + + print() + print(f"Outputs/Images Directory : {config.outputs_path}") + print(f"Outputs/Images Directory : {config.thumbnails_path}") + + print("\nNotes about this operation:") + print("- This operation will find image files both referenced in the db and on disk") + print(" that do not have a matching thumbnail on disk and re-generate the thumbnail") + print(" file.") + + if not self.ask_to_continue(): + raise KeyboardInterrupt + + print() + + phys_files = file_mapper.get_all_png_filenames_in_directory(config.outputs_path) + for phys_file in phys_files: + try: + if not file_mapper.thumbnail_exists_for_filename(phys_file): + print(f"Found file without thumbnail {phys_file}...Regenerating Thumbnail...", end="") + file_mapper.generate_thumbnail_for_image_name(phys_file) + print("Done!") + self.__stats.count_thumbnails_regenerated += 1 + except Exception as ex: + print("Error found trying to regenerate thumbnail, error was:") + print(ex) + self.__stats.count_errors += 1 + + def main(self): # noqa D107 + print("\n===============================================================================") + print("Database and outputs Maintenance for Invoke AI 3.0.0 +") + print("===============================================================================\n") + + config_mapper = ConfigMapper() + if not config_mapper.load(): + print("\nInvalid configuration...exiting.\n") + return + + file_mapper = PhysicalFileMapper( + config_mapper.outputs_path, + config_mapper.thumbnails_path, + config_mapper.archive_path, + config_mapper.thumbnails_archive_path, + ) + db_mapper = DatabaseMapper(config_mapper.database_path, config_mapper.database_backup_dir) + + op = self._operation + operations_to_perform = [] + + if op == MaintenanceOperation.Ask: + op = self.ask_for_operation() + + if op in [MaintenanceOperation.CleanOrphanedDbEntries, MaintenanceOperation.All]: + operations_to_perform.append(self.clean_orphaned_db_entries) + if op in [MaintenanceOperation.CleanOrphanedDiskFiles, MaintenanceOperation.All]: + operations_to_perform.append(self.clean_orphaned_disk_files) + if op in [MaintenanceOperation.ReGenerateThumbnails, MaintenanceOperation.All]: + operations_to_perform.append(self.regenerate_thumbnails) + + for operation in operations_to_perform: + operation(config_mapper, file_mapper, db_mapper) + + print("\n===============================================================================") + print(f"= Maintenance Complete - Elapsed Time: {MaintenanceStats.get_elapsed_time_string()}") + print() + print(f"Orphaned db entries cleaned : {self.__stats.count_orphaned_db_entries_cleaned}") + print(f"Orphaned disk files archived : {self.__stats.count_orphaned_disk_files_cleaned}") + print(f"Orphaned thumbnail files archived : {self.__stats.count_orphaned_thumbnails_cleaned}") + print(f"Thumbnails regenerated : {self.__stats.count_thumbnails_regenerated}") + print(f"Errors during operation : {self.__stats.count_errors}") + + print() + + +def main(): # noqa D107 + parser = argparse.ArgumentParser( + description="InvokeAI image database maintenance utility", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog="""Operations: + ask Choose operation from a menu [default] + all Run all maintenance operations + clean Clean database of dangling entries + archive Archive orphaned image files + thumbnails Regenerate missing image thumbnails +""", + ) + parser.add_argument("--root", default=".", type=Path, help="InvokeAI root directory") + parser.add_argument( + "--operation", default="ask", choices=[x.value for x in MaintenanceOperation], help="Operation to perform." + ) + args = parser.parse_args() + try: + os.chdir(args.root) + app = InvokeAIDatabaseMaintenanceApp(args.operation) + app.main() + except KeyboardInterrupt: + print("\n\nUser cancelled execution.") + except FileNotFoundError: + print(f"Invalid root directory '{args.root}'.") + + +if __name__ == "__main__": + main() diff --git a/invokeai/backend/util/devices.py b/invokeai/backend/util/devices.py index bdaf3244f3..84ca7ee02b 100644 --- a/invokeai/backend/util/devices.py +++ b/invokeai/backend/util/devices.py @@ -1,12 +1,13 @@ from __future__ import annotations -from contextlib import nullcontext -from packaging import version import platform +from contextlib import nullcontext +from typing import Union import torch +from packaging import version from torch import autocast -from typing import Union + from invokeai.app.services.config import InvokeAIAppConfig CPU_DEVICE = torch.device("cpu") diff --git a/invokeai/backend/util/hotfixes.py b/invokeai/backend/util/hotfixes.py index 42ca5d08ee..fb1297996c 100644 --- a/invokeai/backend/util/hotfixes.py +++ b/invokeai/backend/util/hotfixes.py @@ -772,11 +772,13 @@ diffusers.models.controlnet.ControlNetModel = ControlNetModel # NOTE: with this patch, torch.compile crashes on 2.0 torch(already fixed in nightly) # https://github.com/huggingface/diffusers/pull/4315 # https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/lora.py#L96C18-L96C18 -def new_LoRACompatibleConv_forward(self, x): +def new_LoRACompatibleConv_forward(self, hidden_states, scale: float = 1.0): if self.lora_layer is None: - return super(diffusers.models.lora.LoRACompatibleConv, self).forward(x) + return super(diffusers.models.lora.LoRACompatibleConv, self).forward(hidden_states) else: - return super(diffusers.models.lora.LoRACompatibleConv, self).forward(x) + self.lora_layer(x) + return super(diffusers.models.lora.LoRACompatibleConv, self).forward(hidden_states) + ( + scale * self.lora_layer(hidden_states) + ) diffusers.models.lora.LoRACompatibleConv.forward = new_LoRACompatibleConv_forward diff --git a/invokeai/backend/util/logging.py b/invokeai/backend/util/logging.py index 50b9909823..3c829a1a02 100644 --- a/invokeai/backend/util/logging.py +++ b/invokeai/backend/util/logging.py @@ -178,7 +178,6 @@ InvokeAI: import logging.handlers import socket import urllib.parse - from abc import abstractmethod from pathlib import Path diff --git a/invokeai/backend/util/util.py b/invokeai/backend/util/util.py index 7ef9c72fb0..0796f1a8cd 100644 --- a/invokeai/backend/util/util.py +++ b/invokeai/backend/util/util.py @@ -1,11 +1,10 @@ +import base64 import importlib +import io import math import multiprocessing as mp import os import re -import io -import base64 - from collections import abc from inspect import isfunction from pathlib import Path @@ -19,6 +18,7 @@ from PIL import Image, ImageDraw, ImageFont from tqdm import tqdm import invokeai.backend.util.logging as logger + from .devices import torch_dtype diff --git a/invokeai/frontend/install/import_images.py b/invokeai/frontend/install/import_images.py index c0db81e141..ec90700bd0 100644 --- a/invokeai/frontend/install/import_images.py +++ b/invokeai/frontend/install/import_images.py @@ -6,27 +6,27 @@ # pylint: disable=broad-exception-caught """Script to import images into the new database system for 3.0.0""" -import os import datetime -import shutil -import locale -import sqlite3 -import json import glob +import json +import locale +import os import re -import uuid -import yaml +import shutil +import sqlite3 +from pathlib import Path + import PIL import PIL.ImageOps import PIL.PngImagePlugin - -from pathlib import Path +import yaml from prompt_toolkit import prompt -from prompt_toolkit.shortcuts import message_dialog from prompt_toolkit.completion import PathCompleter from prompt_toolkit.key_binding import KeyBindings +from prompt_toolkit.shortcuts import message_dialog from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.app.util.misc import uuid_string app_config = InvokeAIAppConfig.get_config() @@ -421,7 +421,7 @@ VALUES ('{filename}', 'internal', 'general', {width}, {height}, null, null, '{me return rows[0][0] else: board_date_string = datetime.datetime.utcnow().date().isoformat() - new_board_id = str(uuid.uuid4()) + new_board_id = uuid_string() sql_insert_board = f"INSERT INTO boards (board_id, board_name, created_at, updated_at) VALUES ('{new_board_id}', '{board_name}', '{board_date_string}', '{board_date_string}')" self.cursor.execute(sql_insert_board) self.connection.commit() diff --git a/invokeai/frontend/install/invokeai_update.py b/invokeai/frontend/install/invokeai_update.py index 45a0e8ec0a..87661da79f 100644 --- a/invokeai/frontend/install/invokeai_update.py +++ b/invokeai/frontend/install/invokeai_update.py @@ -4,6 +4,7 @@ pip install . """ import os import platform + import pkg_resources import psutil import requests diff --git a/invokeai/frontend/install/model_install.py b/invokeai/frontend/install/model_install.py index ee0ec3a05f..64ad3a7d77 100644 --- a/invokeai/frontend/install/model_install.py +++ b/invokeai/frontend/install/model_install.py @@ -11,6 +11,7 @@ The work is actually done in backend code in model_install_backend.py. import argparse import curses +import logging import sys import textwrap import traceback @@ -20,34 +21,28 @@ from multiprocessing.connection import Connection, Pipe from pathlib import Path from shutil import get_terminal_size -import logging import npyscreen import torch from npyscreen import widget -from invokeai.backend.util.logging import InvokeAILogger - -from invokeai.backend.install.model_install_backend import ( - InstallSelections, - ModelInstall, - SchedulerPredictionType, -) +from invokeai.app.services.config import InvokeAIAppConfig +from invokeai.backend.install.model_install_backend import InstallSelections, ModelInstall, SchedulerPredictionType from invokeai.backend.model_management import ModelManager, ModelType from invokeai.backend.util import choose_precision, choose_torch_device +from invokeai.backend.util.logging import InvokeAILogger from invokeai.frontend.install.widgets import ( + MIN_COLS, + MIN_LINES, + BufferBox, CenteredTitleText, + CyclingForm, MultiSelectColumns, SingleSelectColumns, TextBox, - BufferBox, - set_min_terminal_size, - select_stable_diffusion_config_file, - CyclingForm, - MIN_COLS, - MIN_LINES, WindowTooSmallException, + select_stable_diffusion_config_file, + set_min_terminal_size, ) -from invokeai.app.services.config import InvokeAIAppConfig config = InvokeAIAppConfig.get_config() logger = InvokeAILogger.get_logger() diff --git a/invokeai/frontend/install/widgets.py b/invokeai/frontend/install/widgets.py index 9eefd93e09..06d5473fa3 100644 --- a/invokeai/frontend/install/widgets.py +++ b/invokeai/frontend/install/widgets.py @@ -5,16 +5,17 @@ import curses import math import os import platform -import pyperclip import struct import subprocess import sys -import npyscreen import textwrap -import npyscreen.wgmultiline as wgmultiline -from npyscreen import fmPopup -from shutil import get_terminal_size from curses import BUTTON2_CLICKED, BUTTON3_CLICKED +from shutil import get_terminal_size + +import npyscreen +import npyscreen.wgmultiline as wgmultiline +import pyperclip +from npyscreen import fmPopup # minimum size for UIs MIN_COLS = 150 diff --git a/invokeai/frontend/legacy_launch_invokeai.py b/invokeai/frontend/legacy_launch_invokeai.py index e1e7dc26ab..9e4cca7eac 100644 --- a/invokeai/frontend/legacy_launch_invokeai.py +++ b/invokeai/frontend/legacy_launch_invokeai.py @@ -1,5 +1,5 @@ -import sys import argparse +import sys def main(): diff --git a/invokeai/frontend/merge/merge_diffusers.py b/invokeai/frontend/merge/merge_diffusers.py index ada8eed644..8fa02cb49c 100644 --- a/invokeai/frontend/merge/merge_diffusers.py +++ b/invokeai/frontend/merge/merge_diffusers.py @@ -16,13 +16,8 @@ from npyscreen import widget import invokeai.backend.util.logging as logger from invokeai.app.services.config import InvokeAIAppConfig -from invokeai.backend.model_management import ( - ModelMerger, - ModelManager, - ModelType, - BaseModelType, -) -from invokeai.frontend.install.widgets import FloatTitleSlider, TextBox, SingleSelectColumns +from invokeai.backend.model_management import BaseModelType, ModelManager, ModelMerger, ModelType +from invokeai.frontend.install.widgets import FloatTitleSlider, SingleSelectColumns, TextBox config = InvokeAIAppConfig.get_config() diff --git a/invokeai/frontend/training/textual_inversion.py b/invokeai/frontend/training/textual_inversion.py index 12f4db8e7b..f3911f7e0e 100755 --- a/invokeai/frontend/training/textual_inversion.py +++ b/invokeai/frontend/training/textual_inversion.py @@ -21,8 +21,8 @@ from npyscreen import widget from omegaconf import OmegaConf import invokeai.backend.util.logging as logger - from invokeai.app.services.config import InvokeAIAppConfig + from ...backend.training import do_textual_inversion_training, parse_args TRAINING_DATA = "text-inversion-training-data" diff --git a/invokeai/frontend/web/dist/assets/App-78495256.js b/invokeai/frontend/web/dist/assets/App-78495256.js deleted file mode 100644 index 4bc5b38344..0000000000 --- a/invokeai/frontend/web/dist/assets/App-78495256.js +++ /dev/null @@ -1,171 +0,0 @@ -var iv=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Pe=(e,t,n)=>(iv(e,t,"read from private field"),n?n.call(e):t.get(e)),rr=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},as=(e,t,n,r)=>(iv(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var rd=(e,t,n,r)=>({set _(o){as(e,t,o,n)},get _(){return Pe(e,t,r)}}),da=(e,t,n)=>(iv(e,t,"access private method"),n);import{t as o7,a as rf,b as D_,S as A_,c as N_,d as T_,e as b1,f as $_,i as x1,g as s7,k as a7,h as i7,j as l7,l as Kw,m as L_,n as c7,o as u7,p as d7,q as f7,r as p7,s as h7,u as m7,v as g7,w as u,x as a,y as Yb,z as vh,A as v7,B as b7,C as x7,D as y7,P as w7,E as Jb,F as C7,G as S7,H as k7,I as j7,J as Te,K as _7,L as Me,M as _t,N as rt,O as of,Q as co,R as yr,T as Vr,U as Jn,V as Wl,W as Xi,X as Ht,Y as gs,Z as zc,_ as ui,$ as Lm,a0 as Zb,a1 as Cu,a2 as ar,a3 as P7,a4 as H,a5 as Xw,a6 as I7,a7 as F_,a8 as y1,a9 as sf,aa as E7,ab as z_,ac as B_,ad as xa,ae as O7,af as le,ag as Oe,ah as mn,ai as z,aj as M7,ak as Qw,al as R7,am as D7,an as A7,ao as Su,ap as se,aq as N7,ar as Cn,as as _n,at as Fe,au as $,av as ds,aw as ke,ax as jr,ay as H_,az as T7,aA as $7,aB as L7,aC as F7,aD as fs,aE as ex,aF as di,aG as Do,aH as Fm,aI as z7,aJ as B7,aK as Yw,aL as tx,aM as Ee,aN as $s,aO as H7,aP as W_,aQ as V_,aR as Jw,aS as W7,aT as V7,aU as U7,aV as Vl,aW as U_,aX as Sr,aY as G7,aZ as q7,a_ as K7,a$ as G_,b0 as uo,b1 as zm,b2 as X7,b3 as Zw,b4 as q_,b5 as Q7,b6 as Y7,b7 as J7,b8 as Z7,b9 as eR,ba as tR,bb as nR,bc as rR,bd as K_,be as oR,bf as sR,bg as aR,bh as iR,bi as nx,bj as lR,bk as cR,bl as uR,bm as fc,bn as dR,bo as fR,bp as pR,bq as hR,br as eC,bs as mR,bt as gR,bu as Fi,bv as Bm,bw as X_,bx as Q_,by as qo,bz as Y_,bA as vR,bB as El,bC as gd,bD as tC,bE as bR,bF as xR,bG as yR,bH as xp,bI as yp,bJ as od,bK as lv,bL as kd,bM as jd,bN as _d,bO as Pd,bP as nC,bQ as bh,bR as cv,bS as xh,bT as rC,bU as w1,bV as uv,bW as C1,bX as dv,bY as yh,bZ as oC,b_ as Ol,b$ as sC,c0 as Ml,c1 as aC,c2 as wh,c3 as Hm,c4 as wR,c5 as J_,c6 as S1,c7 as k1,c8 as Z_,c9 as CR,ca as j1,cb as SR,cc as _1,cd as kR,ce as P1,cf as rx,cg as ox,ch as sx,ci as ax,cj as Wm,ck as ix,cl as va,cm as e3,cn as t3,co as lx,cp as n3,cq as jR,cr as sd,cs as Rl,ct as r3,cu as o3,cv as iC,cw as _R,cx as PR,cy as IR,cz as Er,cA as ER,cB as Wr,cC as af,cD as Vm,cE as OR,cF as MR,cG as RR,cH as DR,cI as AR,cJ as NR,cK as TR,cL as $R,cM as LR,cN as FR,cO as lC,cP as cx,cQ as zR,cR as BR,cS as lf,cT as HR,cU as WR,cV as Um,cW as VR,cX as UR,cY as GR,cZ as ux,c_ as qR,c$ as xr,d0 as KR,d1 as XR,d2 as QR,d3 as Gm,d4 as YR,d5 as JR,d6 as ZR,d7 as Td,d8 as cC,d9 as Gs,da as s3,db as eD,dc as dx,dd as tD,de as uC,df as nD,dg as rD,dh as oD,di as a3,dj as sD,dk as i3,dl as aD,dm as iD,dn as lD,dp as cD,dq as uD,dr as dD,ds as fD,dt as pD,du as l3,dv as c3,dw as hD,dx as mD,dy as gD,dz as vD,dA as bD,dB as Ls,dC as xD,dD as ws,dE as yD,dF as wD,dG as CD,dH as SD,dI as kD,dJ as jD,dK as _D,dL as PD,dM as ID,dN as ED,dO as OD,dP as MD,dQ as RD,dR as DD,dS as AD,dT as ND,dU as dC,dV as TD,dW as fC,dX as $D,dY as LD,dZ as FD,d_ as zD,d$ as BD,e0 as HD,e1 as pC,e2 as hC,e3 as mC,e4 as fx,e5 as WD,e6 as As,e7 as $d,e8 as zs,e9 as VD,ea as UD,eb as u3,ec as d3,ed as GD,ee as gC,ef as vC,eg as bC,eh as xC,ei as qD,ej as KD,ek as yC,el as XD,em as QD,en as Ch,eo as YD,ep as wC,eq as wp,er as CC,es as SC,et as JD,eu as ZD,ev as eA,ew as f3,ex as tA,ey as nA,ez as kC,eA as rA,eB as jC,eC as oA,eD as p3,eE as h3,eF as cf,eG as m3,eH as vl,eI as g3,eJ as _C,eK as sA,eL as aA,eM as v3,eN as iA,eO as lA,eP as cA,eQ as uA,eR as dA,eS as px,eT as I1,eU as PC,eV as Ul,eW as fA,eX as pA,eY as b3,eZ as Sh,e_ as hx,e$ as x3,f0 as hA,f1 as Qa,f2 as y3,f3 as mA,f4 as gA,f5 as vA,f6 as bA,f7 as xA,f8 as yA,f9 as wA,fa as mx,fb as vd,fc as Dc,fd as CA,fe as SA,ff as kA,fg as jA,fh as _A,fi as PA,fj as IA,fk as EA,fl as OA,fm as MA,fn as RA,fo as DA,fp as AA,fq as NA,fr as TA,fs as $A,ft as LA,fu as FA,fv as IC,fw as zA,fx as BA,fy as HA,fz as WA,fA as VA,fB as UA,fC as GA,fD as qA,fE as KA,fF as XA,fG as QA,fH as YA,fI as JA,fJ as ZA,fK as EC,fL as oh,fM as eN,fN as kh,fO as w3,fP as jh,fQ as tN,fR as nN,fS as Bc,fT as C3,fU as S3,fV as gx,fW as rN,fX as oN,fY as sN,fZ as E1,f_ as k3,f$ as aN,g0 as iN,g1 as j3,g2 as lN,g3 as cN,g4 as uN,g5 as dN,g6 as fN,g7 as pN,g8 as hN,g9 as mN,ga as gN,gb as vN,gc as bN,gd as OC,ge as xN,gf as yN,gg as wN,gh as CN,gi as SN,gj as kN,gk as jN,gl as _N,gm as fv,gn as pv,go as hv,gp as Cp,gq as MC,gr as O1,gs as PN,gt as IN,gu as EN,gv as ON,gw as MN,gx as _3,gy as RN,gz as DN,gA as AN,gB as NN,gC as TN,gD as $N,gE as LN,gF as FN,gG as zN,gH as BN,gI as HN,gJ as mv,gK as gv,gL as WN,gM as VN,gN as UN,gO as GN,gP as qN,gQ as KN,gR as XN,gS as QN,gT as YN,gU as JN,gV as ZN,gW as e9,gX as t9,gY as n9,gZ as RC,g_ as DC,g$ as r9,h0 as o9}from"./index-08cda350.js";import{I as Tr,u as s9,c as a9,a as Dn,b as sr,d as fi,P as uf,C as i9,e as Ie,f as P3,g as pi,h as l9,r as Ge,i as c9,j as AC,k as Gt,l as _r,m as au}from"./menu-3d10c968.js";var NC=1/0,u9=17976931348623157e292;function vv(e){if(!e)return e===0?e:0;if(e=o7(e),e===NC||e===-NC){var t=e<0?-1:1;return t*u9}return e===e?e:0}var d9=200;function f9(e,t,n,r){var o=-1,s=N_,i=!0,c=e.length,f=[],p=t.length;if(!c)return f;n&&(t=rf(t,D_(n))),r?(s=T_,i=!1):t.length>=d9&&(s=b1,i=!1,t=new A_(t));e:for(;++o=120&&h.length>=120)?new A_(i&&h):void 0}h=e[0];var m=-1,v=c[0];e:for(;++m=0)&&(n[o]=e[o]);return n}const I3=({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:c,strokeWidth:f,className:p,borderRadius:h,shapeRendering:m,onClick:v,selected:b})=>{const{background:y,backgroundColor:x}=s||{},C=i||y||x;return a.jsx("rect",{className:Yb(["react-flow__minimap-node",{selected:b},p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:C,stroke:c,strokeWidth:f,shapeRendering:m,onClick:v?k=>v(k,e):void 0})};I3.displayName="MiniMapNode";var M9=u.memo(I3);const R9=e=>e.nodeOrigin,D9=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),bv=e=>e instanceof Function?e:()=>e;function A9({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=M9,onClick:i}){const c=vh(D9,Jb),f=vh(R9),p=bv(t),h=bv(e),m=bv(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return a.jsx(a.Fragment,{children:c.map(b=>{const{x:y,y:x}=v7(b,f).positionAbsolute;return a.jsx(s,{x:y,y:x,width:b.width,height:b.height,style:b.style,selected:b.selected,className:m(b),color:p(b),borderRadius:r,strokeColor:h(b),strokeWidth:o,shapeRendering:v,onClick:i,id:b.id},b.id)})})}var N9=u.memo(A9);const T9=200,$9=150,L9=e=>{const t=e.getNodes(),n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:t.length>0?k7(j7(t,e.nodeOrigin),n):n,rfId:e.rfId}},F9="react-flow__minimap-desc";function E3({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i=2,nodeComponent:c,maskColor:f="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:v,onNodeClick:b,pannable:y=!1,zoomable:x=!1,ariaLabel:C="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:_=5}){const I=b7(),O=u.useRef(null),{boundingRect:E,viewBB:M,rfId:R}=vh(L9,Jb),A=(e==null?void 0:e.width)??T9,D=(e==null?void 0:e.height)??$9,T=E.width/A,K=E.height/D,B=Math.max(T,K),G=B*A,Q=B*D,V=_*B,L=E.x-(G-E.width)/2-V,X=E.y-(Q-E.height)/2-V,F=G+V*2,q=Q+V*2,te=`${F9}-${R}`,Y=u.useRef(0);Y.current=B,u.useEffect(()=>{if(O.current){const U=x7(O.current),W=oe=>{const{transform:me,d3Selection:fe,d3Zoom:he}=I.getState();if(oe.sourceEvent.type!=="wheel"||!fe||!he)return;const Ce=-oe.sourceEvent.deltaY*(oe.sourceEvent.deltaMode===1?.05:oe.sourceEvent.deltaMode?1:.002)*j,xe=me[2]*Math.pow(2,Ce);he.scaleTo(fe,xe)},ne=oe=>{const{transform:me,d3Selection:fe,d3Zoom:he,translateExtent:Ce,width:xe,height:de}=I.getState();if(oe.sourceEvent.type!=="mousemove"||!fe||!he)return;const Ne=Y.current*Math.max(1,me[2])*(k?-1:1),De={x:me[0]-oe.sourceEvent.movementX*Ne,y:me[1]-oe.sourceEvent.movementY*Ne},Xe=[[0,0],[xe,de]],It=C7.translate(De.x,De.y).scale(me[2]),lt=he.constrain()(It,Xe,Ce);he.transform(fe,lt)},ie=y7().on("zoom",y?ne:null).on("zoom.wheel",x?W:null);return U.call(ie),()=>{U.on("zoom",null)}}},[y,x,k,j]);const ce=v?U=>{const W=S7(U);v(U,{x:W[0],y:W[1]})}:void 0,ae=b?(U,W)=>{const ne=I.getState().nodeInternals.get(W);b(U,ne)}:void 0;return a.jsx(w7,{position:m,style:e,className:Yb(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:a.jsxs("svg",{width:A,height:D,viewBox:`${L} ${X} ${F} ${q}`,role:"img","aria-labelledby":te,ref:O,onClick:ce,children:[C&&a.jsx("title",{id:te,children:C}),a.jsx(N9,{onClick:ae,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:c}),a.jsx("path",{className:"react-flow__minimap-mask",d:`M${L-V},${X-V}h${F+V*2}v${q+V*2}h${-F-V*2}z - M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fill:f,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}E3.displayName="MiniMap";var z9=u.memo(E3),Bs;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Bs||(Bs={}));function B9({color:e,dimensions:t,lineWidth:n}){return a.jsx("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function H9({color:e,radius:t}){return a.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const W9={[Bs.Dots]:"#91919a",[Bs.Lines]:"#eee",[Bs.Cross]:"#e2e2e2"},V9={[Bs.Dots]:1,[Bs.Lines]:1,[Bs.Cross]:6},U9=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function O3({id:e,variant:t=Bs.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:i,style:c,className:f}){const p=u.useRef(null),{transform:h,patternId:m}=vh(U9,Jb),v=i||W9[t],b=r||V9[t],y=t===Bs.Dots,x=t===Bs.Cross,C=Array.isArray(n)?n:[n,n],k=[C[0]*h[2]||1,C[1]*h[2]||1],j=b*h[2],_=x?[j,j]:k,I=y?[j/s,j/s]:[_[0]/s,_[1]/s];return a.jsxs("svg",{className:Yb(["react-flow__background",f]),style:{...c,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[a.jsx("pattern",{id:m+e,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${I[0]},-${I[1]})`,children:y?a.jsx(H9,{color:v,radius:j/s}):a.jsx(B9,{dimensions:_,color:v,lineWidth:o})}),a.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+e})`})]})}O3.displayName="Background";var G9=u.memo(O3);function q9(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var K9=q9();const M3=1/60*1e3,X9=typeof performance<"u"?()=>performance.now():()=>Date.now(),R3=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(X9()),M3);function Q9(e){let t=[],n=[],r=0,o=!1,s=!1;const i=new WeakSet,c={schedule:(f,p=!1,h=!1)=>{const m=h&&o,v=m?t:n;return p&&i.add(f),v.indexOf(f)===-1&&(v.push(f),m&&o&&(r=t.length)),f},cancel:f=>{const p=n.indexOf(f);p!==-1&&n.splice(p,1),i.delete(f)},process:f=>{if(o){s=!0;return}if(o=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let p=0;p(e[t]=Q9(()=>Ld=!0),e),{}),J9=df.reduce((e,t)=>{const n=qm[t];return e[t]=(r,o=!1,s=!1)=>(Ld||tT(),n.schedule(r,o,s)),e},{}),Z9=df.reduce((e,t)=>(e[t]=qm[t].cancel,e),{});df.reduce((e,t)=>(e[t]=()=>qm[t].process(Hc),e),{});const eT=e=>qm[e].process(Hc),D3=e=>{Ld=!1,Hc.delta=M1?M3:Math.max(Math.min(e-Hc.timestamp,Y9),1),Hc.timestamp=e,R1=!0,df.forEach(eT),R1=!1,Ld&&(M1=!1,R3(D3))},tT=()=>{Ld=!0,M1=!0,R1||R3(D3)},FC=()=>Hc;function ff(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:o={}}=e,s=u.Children.toArray(e.path),i=Te((c,f)=>a.jsx(Tr,{ref:f,viewBox:t,...o,...c,children:s.length?s:a.jsx("path",{fill:"currentColor",d:n})}));return i.displayName=r,i}function A3(e){const{theme:t}=_7(),n=s9();return u.useMemo(()=>a9(t.direction,{...n,...e}),[e,t.direction,n])}var nT=Object.defineProperty,rT=(e,t,n)=>t in e?nT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gr=(e,t,n)=>(rT(e,typeof t!="symbol"?t+"":t,n),n);function zC(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 oT=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function BC(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function HC(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var D1=typeof window<"u"?u.useLayoutEffect:u.useEffect,_h=e=>e,sT=class{constructor(){gr(this,"descendants",new Map),gr(this,"register",e=>{if(e!=null)return oT(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),gr(this,"unregister",e=>{this.descendants.delete(e);const t=zC(Array.from(this.descendants.keys()));this.assignIndex(t)}),gr(this,"destroy",()=>{this.descendants.clear()}),gr(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),gr(this,"count",()=>this.descendants.size),gr(this,"enabledCount",()=>this.enabledValues().length),gr(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),gr(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),gr(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),gr(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),gr(this,"first",()=>this.item(0)),gr(this,"firstEnabled",()=>this.enabledItem(0)),gr(this,"last",()=>this.item(this.descendants.size-1)),gr(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),gr(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),gr(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),gr(this,"next",(e,t=!0)=>{const n=BC(e,this.count(),t);return this.item(n)}),gr(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=BC(r,this.enabledCount(),t);return this.enabledItem(o)}),gr(this,"prev",(e,t=!0)=>{const n=HC(e,this.count()-1,t);return this.item(n)}),gr(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=HC(r,this.enabledCount()-1,t);return this.enabledItem(o)}),gr(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=zC(n);t!=null&&t.disabled&&(t.disabled=!!t.disabled);const o={node:e,index:-1,...t};this.descendants.set(e,o),this.assignIndex(r)})}};function aT(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 cn(...e){return t=>{e.forEach(n=>{aT(n,t)})}}function iT(...e){return u.useMemo(()=>cn(...e),e)}function lT(){const e=u.useRef(new sT);return D1(()=>()=>e.current.destroy()),e.current}var[cT,N3]=Dn({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function uT(e){const t=N3(),[n,r]=u.useState(-1),o=u.useRef(null);D1(()=>()=>{o.current&&t.unregister(o.current)},[]),D1(()=>{if(!o.current)return;const i=Number(o.current.dataset.index);n!=i&&!Number.isNaN(i)&&r(i)});const s=_h(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:cn(s,o)}}function vx(){return[_h(cT),()=>_h(N3()),()=>lT(),o=>uT(o)]}var[dT,Km]=Dn({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[fT,bx]=Dn({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[pT,u0e,hT,mT]=vx(),kc=Te(function(t,n){const{getButtonProps:r}=bx(),o=r(t,n),i={display:"flex",alignItems:"center",width:"100%",outline:0,...Km().button};return a.jsx(Me.button,{...o,className:_t("chakra-accordion__button",t.className),__css:i})});kc.displayName="AccordionButton";function ku(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=(v,b)=>v!==b}=e,s=sr(r),i=sr(o),[c,f]=u.useState(n),p=t!==void 0,h=p?t:c,m=sr(v=>{const y=typeof v=="function"?v(h):v;i(h,y)&&(p||f(y),s(y))},[p,s,h,i]);return[h,m]}function gT(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...i}=e;xT(e),yT(e);const c=hT(),[f,p]=u.useState(-1);u.useEffect(()=>()=>{p(-1)},[]);const[h,m]=ku({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:m,htmlProps:i,getAccordionItemProps:b=>{let y=!1;return b!==null&&(y=Array.isArray(h)?h.includes(b):h===b),{isOpen:y,onChange:C=>{if(b!==null)if(o&&Array.isArray(h)){const k=C?h.concat(b):h.filter(j=>j!==b);m(k)}else C?m(b):s&&m(-1)}}},focusedIndex:f,setFocusedIndex:p,descendants:c}}var[vT,xx]=Dn({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function bT(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:i}=xx(),c=u.useRef(null),f=u.useId(),p=r??f,h=`accordion-button-${p}`,m=`accordion-panel-${p}`;wT(e);const{register:v,index:b,descendants:y}=mT({disabled:t&&!n}),{isOpen:x,onChange:C}=s(b===-1?null:b);CT({isOpen:x,isDisabled:t});const k=()=>{C==null||C(!0)},j=()=>{C==null||C(!1)},_=u.useCallback(()=>{C==null||C(!x),i(b)},[b,i,x,C]),I=u.useCallback(R=>{const D={ArrowDown:()=>{const T=y.nextEnabled(b);T==null||T.node.focus()},ArrowUp:()=>{const T=y.prevEnabled(b);T==null||T.node.focus()},Home:()=>{const T=y.firstEnabled();T==null||T.node.focus()},End:()=>{const T=y.lastEnabled();T==null||T.node.focus()}}[R.key];D&&(R.preventDefault(),D(R))},[y,b]),O=u.useCallback(()=>{i(b)},[i,b]),E=u.useCallback(function(A={},D=null){return{...A,type:"button",ref:cn(v,c,D),id:h,disabled:!!t,"aria-expanded":!!x,"aria-controls":m,onClick:rt(A.onClick,_),onFocus:rt(A.onFocus,O),onKeyDown:rt(A.onKeyDown,I)}},[h,t,x,_,O,I,m,v]),M=u.useCallback(function(A={},D=null){return{...A,ref:D,role:"region",id:m,"aria-labelledby":h,hidden:!x}},[h,x,m]);return{isOpen:x,isDisabled:t,isFocusable:n,onOpen:k,onClose:j,getButtonProps:E,getPanelProps:M,htmlProps:o}}function xT(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;of({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function yT(e){of({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 wT(e){of({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 CT(e){of({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function jc(e){const{isOpen:t,isDisabled:n}=bx(),{reduceMotion:r}=xx(),o=_t("chakra-accordion__icon",e.className),s=Km(),i={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...s.icon};return a.jsx(Tr,{viewBox:"0 0 24 24","aria-hidden":!0,className:o,__css:i,...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}jc.displayName="AccordionIcon";var _c=Te(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...i}=bT(t),f={...Km().container,overflowAnchor:"none"},p=u.useMemo(()=>i,[i]);return a.jsx(fT,{value:p,children:a.jsx(Me.div,{ref:n,...s,className:_t("chakra-accordion__item",o),__css:f,children:typeof r=="function"?r({isExpanded:!!i.isOpen,isDisabled:!!i.isDisabled}):r})})});_c.displayName="AccordionItem";var Ac={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},yl={enter:{duration:.2,ease:Ac.easeOut},exit:{duration:.1,ease:Ac.easeIn}},Ja={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.exit})},ST=e=>e!=null&&parseInt(e.toString(),10)>0,WC={exit:{height:{duration:.2,ease:Ac.ease},opacity:{duration:.3,ease:Ac.ease}},enter:{height:{duration:.3,ease:Ac.ease},opacity:{duration:.4,ease:Ac.ease}}},kT={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:ST(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:Ja.exit(WC.exit,o)}},enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:1},height:t,transitionEnd:r==null?void 0:r.enter,transition:(s=n==null?void 0:n.enter)!=null?s:Ja.enter(WC.enter,o)}}},Xm=u.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:i="auto",style:c,className:f,transition:p,transitionEnd:h,...m}=e,[v,b]=u.useState(!1);u.useEffect(()=>{const j=setTimeout(()=>{b(!0)});return()=>clearTimeout(j)},[]),of({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const y=parseFloat(s.toString())>0,x={startingHeight:s,endingHeight:i,animateOpacity:o,transition:v?p:{enter:{duration:0}},transitionEnd:{enter:h==null?void 0:h.enter,exit:r?h==null?void 0:h.exit:{...h==null?void 0:h.exit,display:y?"block":"none"}}},C=r?n:!0,k=n||r?"enter":"exit";return a.jsx(co,{initial:!1,custom:x,children:C&&a.jsx(yr.div,{ref:t,...m,className:_t("chakra-collapse",f),style:{overflow:"hidden",display:"block",...c},custom:x,variants:kT,initial:r?"exit":!1,animate:k,exit:"exit"})})});Xm.displayName="Collapse";var jT={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:Ja.enter(yl.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:0,transition:(r=e==null?void 0:e.exit)!=null?r:Ja.exit(yl.exit,n),transitionEnd:t==null?void 0:t.exit}}},T3={initial:"exit",animate:"enter",exit:"exit",variants:jT},_T=u.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:i,transitionEnd:c,delay:f,...p}=t,h=o||r?"enter":"exit",m=r?o&&r:!0,v={transition:i,transitionEnd:c,delay:f};return a.jsx(co,{custom:v,children:m&&a.jsx(yr.div,{ref:n,className:_t("chakra-fade",s),custom:v,...T3,animate:h,...p})})});_T.displayName="Fade";var PT={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,...e?{scale:t,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{scale:t,...r==null?void 0:r.exit}},transition:(s=n==null?void 0:n.exit)!=null?s:Ja.exit(yl.exit,o)}},enter:({transitionEnd:e,transition:t,delay:n})=>{var r;return{opacity:1,scale:1,transition:(r=t==null?void 0:t.enter)!=null?r:Ja.enter(yl.enter,n),transitionEnd:e==null?void 0:e.enter}}},$3={initial:"exit",animate:"enter",exit:"exit",variants:PT},IT=u.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:i=.95,className:c,transition:f,transitionEnd:p,delay:h,...m}=t,v=r?o&&r:!0,b=o||r?"enter":"exit",y={initialScale:i,reverse:s,transition:f,transitionEnd:p,delay:h};return a.jsx(co,{custom:y,children:v&&a.jsx(yr.div,{ref:n,className:_t("chakra-offset-slide",c),...$3,animate:b,custom:y,...m})})});IT.displayName="ScaleFade";var ET={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,x:e,y:t,transition:(s=n==null?void 0:n.exit)!=null?s:Ja.exit(yl.exit,o),transitionEnd:r==null?void 0:r.exit}},enter:({transition:e,transitionEnd:t,delay:n})=>{var r;return{opacity:1,x:0,y:0,transition:(r=e==null?void 0:e.enter)!=null?r:Ja.enter(yl.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:o,delay:s})=>{var i;const c={x:t,y:e};return{opacity:0,transition:(i=n==null?void 0:n.exit)!=null?i:Ja.exit(yl.exit,s),...o?{...c,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...c,...r==null?void 0:r.exit}}}}},A1={initial:"initial",animate:"enter",exit:"exit",variants:ET},OT=u.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:i,offsetX:c=0,offsetY:f=8,transition:p,transitionEnd:h,delay:m,...v}=t,b=r?o&&r:!0,y=o||r?"enter":"exit",x={offsetX:c,offsetY:f,reverse:s,transition:p,transitionEnd:h,delay:m};return a.jsx(co,{custom:x,children:b&&a.jsx(yr.div,{ref:n,className:_t("chakra-offset-slide",i),custom:x,...A1,animate:y,...v})})});OT.displayName="SlideFade";var Pc=Te(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:i}=xx(),{getPanelProps:c,isOpen:f}=bx(),p=c(s,n),h=_t("chakra-accordion__panel",r),m=Km();i||delete p.hidden;const v=a.jsx(Me.div,{...p,__css:m.panel,className:h});return i?v:a.jsx(Xm,{in:f,...o,children:v})});Pc.displayName="AccordionPanel";var L3=Te(function({children:t,reduceMotion:n,...r},o){const s=Vr("Accordion",r),i=Jn(r),{htmlProps:c,descendants:f,...p}=gT(i),h=u.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return a.jsx(pT,{value:f,children:a.jsx(vT,{value:h,children:a.jsx(dT,{value:s,children:a.jsx(Me.div,{ref:o,...c,className:_t("chakra-accordion",r.className),__css:s.root,children:t})})})})});L3.displayName="Accordion";function pf(e){return u.Children.toArray(e).filter(t=>u.isValidElement(t))}var[MT,RT]=Dn({strict:!1,name:"ButtonGroupContext"}),DT={horizontal:{"> *: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}},vertical:{"> *:first-of-type:not(:last-of-type)":{borderBottomRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderTopRadius:0}}},AT={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},vr=Te(function(t,n){const{size:r,colorScheme:o,variant:s,className:i,spacing:c="0.5rem",isAttached:f,isDisabled:p,orientation:h="horizontal",...m}=t,v=_t("chakra-button__group",i),b=u.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let y={display:"inline-flex",...f?DT[h]:AT[h](c)};const x=h==="vertical";return a.jsx(MT,{value:b,children:a.jsx(Me.div,{ref:n,role:"group",__css:y,className:v,"data-attached":f?"":void 0,"data-orientation":h,flexDir:x?"column":void 0,...m})})});vr.displayName="ButtonGroup";function NT(e){const[t,n]=u.useState(!e);return{ref:u.useCallback(s=>{s&&n(s.tagName==="BUTTON")},[]),type:t?"button":void 0}}function N1(e){const{children:t,className:n,...r}=e,o=u.isValidElement(t)?u.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,s=_t("chakra-button__icon",n);return a.jsx(Me.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:s,children:o})}N1.displayName="ButtonIcon";function Ph(e){const{label:t,placement:n,spacing:r="0.5rem",children:o=a.jsx(Wl,{color:"currentColor",width:"1em",height:"1em"}),className:s,__css:i,...c}=e,f=_t("chakra-button__spinner",s),p=n==="start"?"marginEnd":"marginStart",h=u.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[p]:t?r:0,fontSize:"1em",lineHeight:"normal",...i}),[i,t,p,r]);return a.jsx(Me.div,{className:f,...c,__css:h,children:o})}Ph.displayName="ButtonSpinner";var iu=Te((e,t)=>{const n=RT(),r=Xi("Button",{...n,...e}),{isDisabled:o=n==null?void 0:n.isDisabled,isLoading:s,isActive:i,children:c,leftIcon:f,rightIcon:p,loadingText:h,iconSpacing:m="0.5rem",type:v,spinner:b,spinnerPlacement:y="start",className:x,as:C,...k}=Jn(e),j=u.useMemo(()=>{const E={...r==null?void 0: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:E}}},[r,n]),{ref:_,type:I}=NT(C),O={rightIcon:p,leftIcon:f,iconSpacing:m,children:c};return a.jsxs(Me.button,{ref:iT(t,_),as:C,type:v??I,"data-active":Ht(i),"data-loading":Ht(s),__css:j,className:_t("chakra-button",x),...k,disabled:o||s,children:[s&&y==="start"&&a.jsx(Ph,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:m,children:b}),s?h||a.jsx(Me.span,{opacity:0,children:a.jsx(VC,{...O})}):a.jsx(VC,{...O}),s&&y==="end"&&a.jsx(Ph,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:m,children:b})]})});iu.displayName="Button";function VC(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:o}=e;return a.jsxs(a.Fragment,{children:[t&&a.jsx(N1,{marginEnd:o,children:t}),r,n&&a.jsx(N1,{marginStart:o,children:n})]})}var wa=Te((e,t)=>{const{icon:n,children:r,isRound:o,"aria-label":s,...i}=e,c=n||r,f=u.isValidElement(c)?u.cloneElement(c,{"aria-hidden":!0,focusable:!1}):null;return a.jsx(iu,{padding:"0",borderRadius:o?"full":void 0,ref:t,"aria-label":s,...i,children:f})});wa.displayName="IconButton";var[d0e,TT]=Dn({name:"CheckboxGroupContext",strict:!1});function $T(e){const[t,n]=u.useState(e),[r,o]=u.useState(!1);return e!==t&&(o(!0),n(e)),r}function LT(e){return a.jsx(Me.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:a.jsx("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function FT(e){return a.jsx(Me.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e,children:a.jsx("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function zT(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?FT:LT;return n||t?a.jsx(Me.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:a.jsx(o,{...r})}):null}var[BT,F3]=Dn({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[HT,hf]=Dn({strict:!1,name:"FormControlContext"});function WT(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:o,isReadOnly:s,...i}=e,c=u.useId(),f=t||`field-${c}`,p=`${f}-label`,h=`${f}-feedback`,m=`${f}-helptext`,[v,b]=u.useState(!1),[y,x]=u.useState(!1),[C,k]=u.useState(!1),j=u.useCallback((M={},R=null)=>({id:m,...M,ref:cn(R,A=>{A&&x(!0)})}),[m]),_=u.useCallback((M={},R=null)=>({...M,ref:R,"data-focus":Ht(C),"data-disabled":Ht(o),"data-invalid":Ht(r),"data-readonly":Ht(s),id:M.id!==void 0?M.id:p,htmlFor:M.htmlFor!==void 0?M.htmlFor:f}),[f,o,C,r,s,p]),I=u.useCallback((M={},R=null)=>({id:h,...M,ref:cn(R,A=>{A&&b(!0)}),"aria-live":"polite"}),[h]),O=u.useCallback((M={},R=null)=>({...M,...i,ref:R,role:"group"}),[i]),E=u.useCallback((M={},R=null)=>({...M,ref:R,role:"presentation","aria-hidden":!0,children:M.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!s,isDisabled:!!o,isFocused:!!C,onFocus:()=>k(!0),onBlur:()=>k(!1),hasFeedbackText:v,setHasFeedbackText:b,hasHelpText:y,setHasHelpText:x,id:f,labelId:p,feedbackId:h,helpTextId:m,htmlProps:i,getHelpTextProps:j,getErrorMessageProps:I,getRootProps:O,getLabelProps:_,getRequiredIndicatorProps:E}}var pr=Te(function(t,n){const r=Vr("Form",t),o=Jn(t),{getRootProps:s,htmlProps:i,...c}=WT(o),f=_t("chakra-form-control",t.className);return a.jsx(HT,{value:c,children:a.jsx(BT,{value:r,children:a.jsx(Me.div,{...s({},n),className:f,__css:r.container})})})});pr.displayName="FormControl";var z3=Te(function(t,n){const r=hf(),o=F3(),s=_t("chakra-form__helper-text",t.className);return a.jsx(Me.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:o.helperText,className:s})});z3.displayName="FormHelperText";var Jr=Te(function(t,n){var r;const o=Xi("FormLabel",t),s=Jn(t),{className:i,children:c,requiredIndicator:f=a.jsx(B3,{}),optionalIndicator:p=null,...h}=s,m=hf(),v=(r=m==null?void 0:m.getLabelProps(h,n))!=null?r:{ref:n,...h};return a.jsxs(Me.label,{...v,className:_t("chakra-form__label",s.className),__css:{display:"block",textAlign:"start",...o},children:[c,m!=null&&m.isRequired?f:p]})});Jr.displayName="FormLabel";var B3=Te(function(t,n){const r=hf(),o=F3();if(!(r!=null&&r.isRequired))return null;const s=_t("chakra-form__required-indicator",t.className);return a.jsx(Me.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:o.requiredIndicator,className:s})});B3.displayName="RequiredIndicator";function yx(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:o,...s}=wx(e);return{...s,disabled:t,readOnly:r,required:o,"aria-invalid":gs(n),"aria-required":gs(o),"aria-readonly":gs(r)}}function wx(e){var t,n,r;const o=hf(),{id:s,disabled:i,readOnly:c,required:f,isRequired:p,isInvalid:h,isReadOnly:m,isDisabled:v,onFocus:b,onBlur:y,...x}=e,C=e["aria-describedby"]?[e["aria-describedby"]]:[];return o!=null&&o.hasFeedbackText&&(o!=null&&o.isInvalid)&&C.push(o.feedbackId),o!=null&&o.hasHelpText&&C.push(o.helpTextId),{...x,"aria-describedby":C.join(" ")||void 0,id:s??(o==null?void 0:o.id),isDisabled:(t=i??v)!=null?t:o==null?void 0:o.isDisabled,isReadOnly:(n=c??m)!=null?n:o==null?void 0:o.isReadOnly,isRequired:(r=f??p)!=null?r:o==null?void 0:o.isRequired,isInvalid:h??(o==null?void 0:o.isInvalid),onFocus:rt(o==null?void 0:o.onFocus,b),onBlur:rt(o==null?void 0:o.onBlur,y)}}var Cx={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},H3=Me("span",{baseStyle:Cx});H3.displayName="VisuallyHidden";var VT=Me("input",{baseStyle:Cx});VT.displayName="VisuallyHiddenInput";const UT=()=>typeof document<"u";let UC=!1,mf=null,Dl=!1,T1=!1;const $1=new Set;function Sx(e,t){$1.forEach(n=>n(e,t))}const GT=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function qT(e){return!(e.metaKey||!GT&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function GC(e){Dl=!0,qT(e)&&(mf="keyboard",Sx("keyboard",e))}function hc(e){if(mf="pointer",e.type==="mousedown"||e.type==="pointerdown"){Dl=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;Sx("pointer",e)}}function KT(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function XT(e){KT(e)&&(Dl=!0,mf="virtual")}function QT(e){e.target===window||e.target===document||(!Dl&&!T1&&(mf="virtual",Sx("virtual",e)),Dl=!1,T1=!1)}function YT(){Dl=!1,T1=!0}function qC(){return mf!=="pointer"}function JT(){if(!UT()||UC)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){Dl=!0,e.apply(this,n)},document.addEventListener("keydown",GC,!0),document.addEventListener("keyup",GC,!0),document.addEventListener("click",XT,!0),window.addEventListener("focus",QT,!0),window.addEventListener("blur",YT,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",hc,!0),document.addEventListener("pointermove",hc,!0),document.addEventListener("pointerup",hc,!0)):(document.addEventListener("mousedown",hc,!0),document.addEventListener("mousemove",hc,!0),document.addEventListener("mouseup",hc,!0)),UC=!0}function W3(e){JT(),e(qC());const t=()=>e(qC());return $1.add(t),()=>{$1.delete(t)}}function ZT(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function V3(e={}){const t=wx(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:i,onBlur:c,onFocus:f,"aria-describedby":p}=t,{defaultChecked:h,isChecked:m,isFocusable:v,onChange:b,isIndeterminate:y,name:x,value:C,tabIndex:k=void 0,"aria-label":j,"aria-labelledby":_,"aria-invalid":I,...O}=e,E=ZT(O,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),M=sr(b),R=sr(c),A=sr(f),[D,T]=u.useState(!1),[K,B]=u.useState(!1),[G,Q]=u.useState(!1),[V,L]=u.useState(!1);u.useEffect(()=>W3(T),[]);const X=u.useRef(null),[F,q]=u.useState(!0),[te,Y]=u.useState(!!h),ce=m!==void 0,ae=ce?m:te,U=u.useCallback(de=>{if(r||n){de.preventDefault();return}ce||Y(ae?de.target.checked:y?!0:de.target.checked),M==null||M(de)},[r,n,ae,ce,y,M]);zc(()=>{X.current&&(X.current.indeterminate=!!y)},[y]),fi(()=>{n&&B(!1)},[n,B]),zc(()=>{const de=X.current;if(!(de!=null&&de.form))return;const Ne=()=>{Y(!!h)};return de.form.addEventListener("reset",Ne),()=>{var De;return(De=de.form)==null?void 0:De.removeEventListener("reset",Ne)}},[]);const W=n&&!v,ne=u.useCallback(de=>{de.key===" "&&L(!0)},[L]),ie=u.useCallback(de=>{de.key===" "&&L(!1)},[L]);zc(()=>{if(!X.current)return;X.current.checked!==ae&&Y(X.current.checked)},[X.current]);const oe=u.useCallback((de={},Ne=null)=>{const De=Xe=>{K&&Xe.preventDefault(),L(!0)};return{...de,ref:Ne,"data-active":Ht(V),"data-hover":Ht(G),"data-checked":Ht(ae),"data-focus":Ht(K),"data-focus-visible":Ht(K&&D),"data-indeterminate":Ht(y),"data-disabled":Ht(n),"data-invalid":Ht(s),"data-readonly":Ht(r),"aria-hidden":!0,onMouseDown:rt(de.onMouseDown,De),onMouseUp:rt(de.onMouseUp,()=>L(!1)),onMouseEnter:rt(de.onMouseEnter,()=>Q(!0)),onMouseLeave:rt(de.onMouseLeave,()=>Q(!1))}},[V,ae,n,K,D,G,y,s,r]),me=u.useCallback((de={},Ne=null)=>({...de,ref:Ne,"data-active":Ht(V),"data-hover":Ht(G),"data-checked":Ht(ae),"data-focus":Ht(K),"data-focus-visible":Ht(K&&D),"data-indeterminate":Ht(y),"data-disabled":Ht(n),"data-invalid":Ht(s),"data-readonly":Ht(r)}),[V,ae,n,K,D,G,y,s,r]),fe=u.useCallback((de={},Ne=null)=>({...E,...de,ref:cn(Ne,De=>{De&&q(De.tagName==="LABEL")}),onClick:rt(de.onClick,()=>{var De;F||((De=X.current)==null||De.click(),requestAnimationFrame(()=>{var Xe;(Xe=X.current)==null||Xe.focus({preventScroll:!0})}))}),"data-disabled":Ht(n),"data-checked":Ht(ae),"data-invalid":Ht(s)}),[E,n,ae,s,F]),he=u.useCallback((de={},Ne=null)=>({...de,ref:cn(X,Ne),type:"checkbox",name:x,value:C,id:i,tabIndex:k,onChange:rt(de.onChange,U),onBlur:rt(de.onBlur,R,()=>B(!1)),onFocus:rt(de.onFocus,A,()=>B(!0)),onKeyDown:rt(de.onKeyDown,ne),onKeyUp:rt(de.onKeyUp,ie),required:o,checked:ae,disabled:W,readOnly:r,"aria-label":j,"aria-labelledby":_,"aria-invalid":I?!!I:s,"aria-describedby":p,"aria-disabled":n,style:Cx}),[x,C,i,U,R,A,ne,ie,o,ae,W,r,j,_,I,s,p,n,k]),Ce=u.useCallback((de={},Ne=null)=>({...de,ref:Ne,onMouseDown:rt(de.onMouseDown,e$),"data-disabled":Ht(n),"data-checked":Ht(ae),"data-invalid":Ht(s)}),[ae,n,s]);return{state:{isInvalid:s,isFocused:K,isChecked:ae,isActive:V,isHovered:G,isIndeterminate:y,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:fe,getCheckboxProps:oe,getIndicatorProps:me,getInputProps:he,getLabelProps:Ce,htmlProps:E}}function e$(e){e.preventDefault(),e.stopPropagation()}var t$={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},n$={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},r$=ui({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),o$=ui({from:{opacity:0},to:{opacity:1}}),s$=ui({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),Qm=Te(function(t,n){const r=TT(),o={...r,...t},s=Vr("Checkbox",o),i=Jn(t),{spacing:c="0.5rem",className:f,children:p,iconColor:h,iconSize:m,icon:v=a.jsx(zT,{}),isChecked:b,isDisabled:y=r==null?void 0:r.isDisabled,onChange:x,inputProps:C,...k}=i;let j=b;r!=null&&r.value&&i.value&&(j=r.value.includes(i.value));let _=x;r!=null&&r.onChange&&i.value&&(_=Lm(r.onChange,x));const{state:I,getInputProps:O,getCheckboxProps:E,getLabelProps:M,getRootProps:R}=V3({...k,isDisabled:y,isChecked:j,onChange:_}),A=$T(I.isChecked),D=u.useMemo(()=>({animation:A?I.isIndeterminate?`${o$} 20ms linear, ${s$} 200ms linear`:`${r$} 200ms linear`:void 0,fontSize:m,color:h,...s.icon}),[h,m,A,I.isIndeterminate,s.icon]),T=u.cloneElement(v,{__css:D,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return a.jsxs(Me.label,{__css:{...n$,...s.container},className:_t("chakra-checkbox",f),...R(),children:[a.jsx("input",{className:"chakra-checkbox__input",...O(C,n)}),a.jsx(Me.span,{__css:{...t$,...s.control},className:"chakra-checkbox__control",...E(),children:T}),p&&a.jsx(Me.span,{className:"chakra-checkbox__label",...M(),__css:{marginStart:c,...s.label},children:p})]})});Qm.displayName="Checkbox";function a$(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function kx(e,t){let n=a$(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function L1(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 Ih(e,t,n){return(e-t)*100/(n-t)}function U3(e,t,n){return(n-t)*e+t}function F1(e,t,n){const r=Math.round((e-t)/n)*n+t,o=L1(n);return kx(r,o)}function Wc(e,t,n){return e==null?e:(n{var D;return r==null?"":(D=xv(r,s,n))!=null?D:""}),v=typeof o<"u",b=v?o:h,y=G3(Ei(b),s),x=n??y,C=u.useCallback(D=>{D!==b&&(v||m(D.toString()),p==null||p(D.toString(),Ei(D)))},[p,v,b]),k=u.useCallback(D=>{let T=D;return f&&(T=Wc(T,i,c)),kx(T,x)},[x,f,c,i]),j=u.useCallback((D=s)=>{let T;b===""?T=Ei(D):T=Ei(b)+D,T=k(T),C(T)},[k,s,C,b]),_=u.useCallback((D=s)=>{let T;b===""?T=Ei(-D):T=Ei(b)-D,T=k(T),C(T)},[k,s,C,b]),I=u.useCallback(()=>{var D;let T;r==null?T="":T=(D=xv(r,s,n))!=null?D:i,C(T)},[r,n,s,C,i]),O=u.useCallback(D=>{var T;const K=(T=xv(D,s,x))!=null?T:i;C(K)},[x,s,C,i]),E=Ei(b);return{isOutOfRange:E>c||E" `}),[c$,jx]=Dn({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),K3={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},Ym=Te(function(t,n){const{getInputProps:r}=jx(),o=q3(),s=r(t,n),i=_t("chakra-editable__input",t.className);return a.jsx(Me.input,{...s,__css:{outline:0,...K3,...o.input},className:i})});Ym.displayName="EditableInput";var Jm=Te(function(t,n){const{getPreviewProps:r}=jx(),o=q3(),s=r(t,n),i=_t("chakra-editable__preview",t.className);return a.jsx(Me.span,{...s,__css:{cursor:"text",display:"inline-block",...K3,...o.preview},className:i})});Jm.displayName="EditablePreview";function wl(e,t,n,r){const o=sr(n);return u.useEffect(()=>{const s=typeof e=="function"?e():e??document;if(!(!n||!s))return s.addEventListener(t,o,r),()=>{s.removeEventListener(t,o,r)}},[t,e,r,o,n]),()=>{const s=typeof e=="function"?e():e??document;s==null||s.removeEventListener(t,o,r)}}function u$(e){return"current"in e}var X3=()=>typeof window<"u";function d$(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var f$=e=>X3()&&e.test(navigator.vendor),p$=e=>X3()&&e.test(d$()),h$=()=>p$(/mac|iphone|ipad|ipod/i),m$=()=>h$()&&f$(/apple/i);function Q3(e){const{ref:t,elements:n,enabled:r}=e,o=()=>{var s,i;return(i=(s=t.current)==null?void 0:s.ownerDocument)!=null?i:document};wl(o,"pointerdown",s=>{if(!m$()||!r)return;const i=s.target,f=(n??[t]).some(p=>{const h=u$(p)?p.current:p;return(h==null?void 0:h.contains(i))||h===i});o().activeElement!==i&&f&&(s.preventDefault(),i.focus())})}function KC(e,t){return e?e===t||e.contains(t):!1}function g$(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:i,defaultValue:c,startWithEditView:f,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:m=!0,placeholder:v,onEdit:b,finalFocusRef:y,...x}=e,C=sr(b),k=!!(f&&!i),[j,_]=u.useState(k),[I,O]=ku({defaultValue:c||"",value:s,onChange:t}),[E,M]=u.useState(I),R=u.useRef(null),A=u.useRef(null),D=u.useRef(null),T=u.useRef(null),K=u.useRef(null);Q3({ref:R,enabled:j,elements:[T,K]});const B=!j&&!i;zc(()=>{var oe,me;j&&((oe=R.current)==null||oe.focus(),m&&((me=R.current)==null||me.select()))},[]),fi(()=>{var oe,me,fe,he;if(!j){y?(oe=y.current)==null||oe.focus():(me=D.current)==null||me.focus();return}(fe=R.current)==null||fe.focus(),m&&((he=R.current)==null||he.select()),C==null||C()},[j,C,m]);const G=u.useCallback(()=>{B&&_(!0)},[B]),Q=u.useCallback(()=>{M(I)},[I]),V=u.useCallback(()=>{_(!1),O(E),n==null||n(E),o==null||o(E)},[n,o,O,E]),L=u.useCallback(()=>{_(!1),M(I),r==null||r(I),o==null||o(E)},[I,r,o,E]);u.useEffect(()=>{if(j)return;const oe=R.current;(oe==null?void 0:oe.ownerDocument.activeElement)===oe&&(oe==null||oe.blur())},[j]);const X=u.useCallback(oe=>{O(oe.currentTarget.value)},[O]),F=u.useCallback(oe=>{const me=oe.key,he={Escape:V,Enter:Ce=>{!Ce.shiftKey&&!Ce.metaKey&&L()}}[me];he&&(oe.preventDefault(),he(oe))},[V,L]),q=u.useCallback(oe=>{const me=oe.key,he={Escape:V}[me];he&&(oe.preventDefault(),he(oe))},[V]),te=I.length===0,Y=u.useCallback(oe=>{var me;if(!j)return;const fe=oe.currentTarget.ownerDocument,he=(me=oe.relatedTarget)!=null?me:fe.activeElement,Ce=KC(T.current,he),xe=KC(K.current,he);!Ce&&!xe&&(h?L():V())},[h,L,V,j]),ce=u.useCallback((oe={},me=null)=>{const fe=B&&p?0:void 0;return{...oe,ref:cn(me,A),children:te?v:I,hidden:j,"aria-disabled":gs(i),tabIndex:fe,onFocus:rt(oe.onFocus,G,Q)}},[i,j,B,p,te,G,Q,v,I]),ae=u.useCallback((oe={},me=null)=>({...oe,hidden:!j,placeholder:v,ref:cn(me,R),disabled:i,"aria-disabled":gs(i),value:I,onBlur:rt(oe.onBlur,Y),onChange:rt(oe.onChange,X),onKeyDown:rt(oe.onKeyDown,F),onFocus:rt(oe.onFocus,Q)}),[i,j,Y,X,F,Q,v,I]),U=u.useCallback((oe={},me=null)=>({...oe,hidden:!j,placeholder:v,ref:cn(me,R),disabled:i,"aria-disabled":gs(i),value:I,onBlur:rt(oe.onBlur,Y),onChange:rt(oe.onChange,X),onKeyDown:rt(oe.onKeyDown,q),onFocus:rt(oe.onFocus,Q)}),[i,j,Y,X,q,Q,v,I]),W=u.useCallback((oe={},me=null)=>({"aria-label":"Edit",...oe,type:"button",onClick:rt(oe.onClick,G),ref:cn(me,D),disabled:i}),[G,i]),ne=u.useCallback((oe={},me=null)=>({...oe,"aria-label":"Submit",ref:cn(K,me),type:"button",onClick:rt(oe.onClick,L),disabled:i}),[L,i]),ie=u.useCallback((oe={},me=null)=>({"aria-label":"Cancel",id:"cancel",...oe,ref:cn(T,me),type:"button",onClick:rt(oe.onClick,V),disabled:i}),[V,i]);return{isEditing:j,isDisabled:i,isValueEmpty:te,value:I,onEdit:G,onCancel:V,onSubmit:L,getPreviewProps:ce,getInputProps:ae,getTextareaProps:U,getEditButtonProps:W,getSubmitButtonProps:ne,getCancelButtonProps:ie,htmlProps:x}}var Zm=Te(function(t,n){const r=Vr("Editable",t),o=Jn(t),{htmlProps:s,...i}=g$(o),{isEditing:c,onSubmit:f,onCancel:p,onEdit:h}=i,m=_t("chakra-editable",t.className),v=Zb(t.children,{isEditing:c,onSubmit:f,onCancel:p,onEdit:h});return a.jsx(c$,{value:i,children:a.jsx(l$,{value:r,children:a.jsx(Me.div,{ref:n,...s,className:m,children:v})})})});Zm.displayName="Editable";function Y3(){const{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}=jx();return{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}}var J3={exports:{}},v$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",b$=v$,x$=b$;function Z3(){}function e5(){}e5.resetWarningCache=Z3;var y$=function(){function e(r,o,s,i,c,f){if(f!==x$){var p=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 p.name="Invariant Violation",p}}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:e5,resetWarningCache:Z3};return n.PropTypes=n,n};J3.exports=y$();var w$=J3.exports;const zn=Cu(w$);var z1="data-focus-lock",t5="data-focus-lock-disabled",C$="data-no-focus-lock",S$="data-autofocus-inside",k$="data-no-autofocus";function j$(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function _$(e,t){var n=u.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}function n5(e,t){return _$(t||null,function(n){return e.forEach(function(r){return j$(r,n)})})}var yv={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},ba=function(){return ba=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&s[s.length-1])&&(p[0]===6||p[0]===2)){n=0;continue}if(p[0]===3&&(!s||p[1]>s[0]&&p[1]0)&&!(o=r.next()).done;)s.push(o.value)}catch(c){i={error:c}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function B1(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(z$)},B$=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],Ex=B$.join(","),H$="".concat(Ex,", [data-focus-guard]"),y5=function(e,t){return Da((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?H$:Ex)?[r]:[],y5(r))},[])},W$=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?eg([e.contentDocument.body],t):[e]},eg=function(e,t){return e.reduce(function(n,r){var o,s=y5(r,t),i=(o=[]).concat.apply(o,s.map(function(c){return W$(c,t)}));return n.concat(i,r.parentNode?Da(r.parentNode.querySelectorAll(Ex)).filter(function(c){return c===r}):[])},[])},V$=function(e){var t=e.querySelectorAll("[".concat(S$,"]"));return Da(t).map(function(n){return eg([n])}).reduce(function(n,r){return n.concat(r)},[])},Ox=function(e,t){return Da(e).filter(function(n){return h5(t,n)}).filter(function(n){return $$(n)})},QC=function(e,t){return t===void 0&&(t=new Map),Da(e).filter(function(n){return m5(t,n)})},W1=function(e,t,n){return x5(Ox(eg(e,n),t),!0,n)},YC=function(e,t){return x5(Ox(eg(e),t),!1)},U$=function(e,t){return Ox(V$(e),t)},Vc=function(e,t){return e.shadowRoot?Vc(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:Da(e.children).some(function(n){var r;if(n instanceof HTMLIFrameElement){var o=(r=n.contentDocument)===null||r===void 0?void 0:r.body;return o?Vc(o,t):!1}return Vc(n,t)})},G$=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(o),(s&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(i,c){return!t.has(c)})},w5=function(e){return e.parentNode?w5(e.parentNode):e},Mx=function(e){var t=Eh(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(z1);return n.push.apply(n,o?G$(Da(w5(r).querySelectorAll("[".concat(z1,'="').concat(o,'"]:not([').concat(t5,'="disabled"])')))):[r]),n},[])},q$=function(e){try{return e()}catch{return}},Fd=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?Fd(t.shadowRoot):t instanceof HTMLIFrameElement&&q$(function(){return t.contentWindow.document})?Fd(t.contentWindow.document):t}},K$=function(e,t){return e===t},X$=function(e,t){return!!Da(e.querySelectorAll("iframe")).some(function(n){return K$(n,t)})},C5=function(e,t){return t===void 0&&(t=Fd(d5(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:Mx(e).some(function(n){return Vc(n,t)||X$(n,t)})},Q$=function(e){e===void 0&&(e=document);var t=Fd(e);return t?Da(e.querySelectorAll("[".concat(C$,"]"))).some(function(n){return Vc(n,t)}):!1},Y$=function(e,t){return t.filter(b5).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},Rx=function(e,t){return b5(e)&&e.name?Y$(e,t):e},J$=function(e){var t=new Set;return e.forEach(function(n){return t.add(Rx(n,e))}),e.filter(function(n){return t.has(n)})},JC=function(e){return e[0]&&e.length>1?Rx(e[0],e):e[0]},ZC=function(e,t){return e.length>1?e.indexOf(Rx(e[t],e)):t},S5="NEW_FOCUS",Z$=function(e,t,n,r){var o=e.length,s=e[0],i=e[o-1],c=Ix(n);if(!(n&&e.indexOf(n)>=0)){var f=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):f,h=r?e.indexOf(r):-1,m=f-p,v=t.indexOf(s),b=t.indexOf(i),y=J$(t),x=n!==void 0?y.indexOf(n):-1,C=x-(r?y.indexOf(r):f),k=ZC(e,0),j=ZC(e,o-1);if(f===-1||h===-1)return S5;if(!m&&h>=0)return h;if(f<=v&&c&&Math.abs(m)>1)return j;if(f>=b&&c&&Math.abs(m)>1)return k;if(m&&Math.abs(C)>1)return h;if(f<=v)return j;if(f>b)return k;if(m)return Math.abs(m)>1?h:(o+h+m)%o}},eL=function(e){return function(t){var n,r=(n=g5(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},tL=function(e,t,n){var r=e.map(function(s){var i=s.node;return i}),o=QC(r.filter(eL(n)));return o&&o.length?JC(o):JC(QC(t))},V1=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&V1(e.parentNode.host||e.parentNode,t),t},wv=function(e,t){for(var n=V1(e),r=V1(t),o=0;o=0)return s}return!1},k5=function(e,t,n){var r=Eh(e),o=Eh(t),s=r[0],i=!1;return o.filter(Boolean).forEach(function(c){i=wv(i||c,c)||i,n.filter(Boolean).forEach(function(f){var p=wv(s,f);p&&(!i||Vc(p,i)?i=p:i=wv(p,i))})}),i},nL=function(e,t){return e.reduce(function(n,r){return n.concat(U$(r,t))},[])},rL=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(F$)},oL=function(e,t){var n=Fd(Eh(e).length>0?document:d5(e).ownerDocument),r=Mx(e).filter(Oh),o=k5(n||e,e,r),s=new Map,i=YC(r,s),c=W1(r,s).filter(function(b){var y=b.node;return Oh(y)});if(!(!c[0]&&(c=i,!c[0]))){var f=YC([o],s).map(function(b){var y=b.node;return y}),p=rL(f,c),h=p.map(function(b){var y=b.node;return y}),m=Z$(h,f,n,t);if(m===S5){var v=tL(i,h,nL(r,s));if(v)return{node:v};console.warn("focus-lock: cannot find any node to move focus into");return}return m===void 0?m:p[m]}},sL=function(e){var t=Mx(e).filter(Oh),n=k5(e,e,t),r=new Map,o=W1([n],r,!0),s=W1(t,r).filter(function(i){var c=i.node;return Oh(c)}).map(function(i){var c=i.node;return c});return o.map(function(i){var c=i.node,f=i.index;return{node:c,index:f,lockItem:s.indexOf(c)>=0,guard:Ix(c)}})},aL=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},Cv=0,Sv=!1,j5=function(e,t,n){n===void 0&&(n={});var r=oL(e,t);if(!Sv&&r){if(Cv>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),Sv=!0,setTimeout(function(){Sv=!1},1);return}Cv++,aL(r.node,n.focusOptions),Cv--}};function Dx(e){setTimeout(e,1)}var iL=function(){return document&&document.activeElement===document.body},lL=function(){return iL()||Q$()},Uc=null,Nc=null,Gc=null,zd=!1,cL=function(){return!0},uL=function(t){return(Uc.whiteList||cL)(t)},dL=function(t,n){Gc={observerNode:t,portaledElement:n}},fL=function(t){return Gc&&Gc.portaledElement===t};function eS(e,t,n,r){var o=null,s=e;do{var i=r[s];if(i.guard)i.node.dataset.focusAutoGuard&&(o=i);else if(i.lockItem){if(s!==e)return;o=null}else break}while((s+=n)!==t);o&&(o.node.tabIndex=0)}var pL=function(t){return t&&"current"in t?t.current:t},hL=function(t){return t?!!zd:zd==="meanwhile"},mL=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},gL=function(t,n){return n.some(function(r){return mL(t,r,r)})},Mh=function(){var t=!1;if(Uc){var n=Uc,r=n.observed,o=n.persistentFocus,s=n.autoFocus,i=n.shards,c=n.crossFrame,f=n.focusOptions,p=r||Gc&&Gc.portaledElement,h=document&&document.activeElement;if(p){var m=[p].concat(i.map(pL).filter(Boolean));if((!h||uL(h))&&(o||hL(c)||!lL()||!Nc&&s)&&(p&&!(C5(m)||h&&gL(h,m)||fL(h))&&(document&&!Nc&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=j5(m,Nc,{focusOptions:f}),Gc={})),zd=!1,Nc=document&&document.activeElement),document){var v=document&&document.activeElement,b=sL(m),y=b.map(function(x){var C=x.node;return C}).indexOf(v);y>-1&&(b.filter(function(x){var C=x.guard,k=x.node;return C&&k.dataset.focusAutoGuard}).forEach(function(x){var C=x.node;return C.removeAttribute("tabIndex")}),eS(y,b.length,1,b),eS(y,-1,-1,b))}}}return t},_5=function(t){Mh()&&t&&(t.stopPropagation(),t.preventDefault())},Ax=function(){return Dx(Mh)},vL=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||dL(r,n)},bL=function(){return null},P5=function(){zd="just",Dx(function(){zd="meanwhile"})},xL=function(){document.addEventListener("focusin",_5),document.addEventListener("focusout",Ax),window.addEventListener("blur",P5)},yL=function(){document.removeEventListener("focusin",_5),document.removeEventListener("focusout",Ax),window.removeEventListener("blur",P5)};function wL(e){return e.filter(function(t){var n=t.disabled;return!n})}function CL(e){var t=e.slice(-1)[0];t&&!Uc&&xL();var n=Uc,r=n&&t&&t.id===n.id;Uc=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(Nc=null,(!r||n.observed!==t.observed)&&t.onActivation(),Mh(),Dx(Mh)):(yL(),Nc=null)}l5.assignSyncMedium(vL);c5.assignMedium(Ax);I$.assignMedium(function(e){return e({moveFocusInside:j5,focusInside:C5})});const SL=R$(wL,CL)(bL);var I5=u.forwardRef(function(t,n){return u.createElement(u5,ar({sideCar:SL,ref:n},t))}),E5=u5.propTypes||{};E5.sideCar;O9(E5,["sideCar"]);I5.propTypes={};const tS=I5;function O5(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function Nx(e){var t;if(!O5(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function kL(e){var t,n;return(n=(t=M5(e))==null?void 0:t.defaultView)!=null?n:window}function M5(e){return O5(e)?e.ownerDocument:document}function jL(e){return M5(e).activeElement}function _L(e){const t=e.ownerDocument.defaultView||window,{overflow:n,overflowX:r,overflowY:o}=t.getComputedStyle(e);return/auto|scroll|overlay|hidden/.test(n+o+r)}function PL(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function R5(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:Nx(e)&&_L(e)?e:R5(PL(e))}var D5=e=>e.hasAttribute("tabindex"),IL=e=>D5(e)&&e.tabIndex===-1;function EL(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function A5(e){return e.parentElement&&A5(e.parentElement)?!0:e.hidden}function OL(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function N5(e){if(!Nx(e)||A5(e)||EL(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]():OL(e)?!0:D5(e)}function ML(e){return e?Nx(e)&&N5(e)&&!IL(e):!1}var RL=["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]"],DL=RL.join(),AL=e=>e.offsetWidth>0&&e.offsetHeight>0;function T5(e){const t=Array.from(e.querySelectorAll(DL));return t.unshift(e),t.filter(n=>N5(n)&&AL(n))}var nS,NL=(nS=tS.default)!=null?nS:tS,$5=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:i,autoFocus:c,persistentFocus:f,lockFocusAcrossFrames:p}=e,h=u.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&T5(r.current).length===0&&requestAnimationFrame(()=>{var y;(y=r.current)==null||y.focus()})},[t,r]),m=u.useCallback(()=>{var b;(b=n==null?void 0:n.current)==null||b.focus()},[n]),v=o&&!n;return a.jsx(NL,{crossFrame:p,persistentFocus:f,autoFocus:c,disabled:i,onActivation:h,onDeactivation:m,returnFocus:v,children:s})};$5.displayName="FocusLock";var TL=K9?u.useLayoutEffect:u.useEffect;function U1(e,t=[]){const n=u.useRef(e);return TL(()=>{n.current=e}),u.useCallback((...r)=>{var o;return(o=n.current)==null?void 0:o.call(n,...r)},t)}function $L(e,t,n,r){const o=U1(t);return u.useEffect(()=>{var s;const i=(s=Xw(n))!=null?s:document;if(t)return i.addEventListener(e,o,r),()=>{i.removeEventListener(e,o,r)}},[e,n,r,o,t]),()=>{var s;((s=Xw(n))!=null?s:document).removeEventListener(e,o,r)}}function LL(e,t){const n=u.useId();return u.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function FL(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Ao(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=U1(n),i=U1(t),[c,f]=u.useState(e.defaultIsOpen||!1),[p,h]=FL(r,c),m=LL(o,"disclosure"),v=u.useCallback(()=>{p||f(!1),i==null||i()},[p,i]),b=u.useCallback(()=>{p||f(!0),s==null||s()},[p,s]),y=u.useCallback(()=>{(h?v:b)()},[h,b,v]);return{isOpen:!!h,onOpen:b,onClose:v,onToggle:y,isControlled:p,getButtonProps:(x={})=>({...x,"aria-expanded":h,"aria-controls":m,onClick:I7(x.onClick,y)}),getDisclosureProps:(x={})=>({...x,hidden:!h,id:m})}}var[zL,BL]=Dn({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),L5=Te(function(t,n){const r=Vr("Input",t),{children:o,className:s,...i}=Jn(t),c=_t("chakra-input__group",s),f={},p=pf(o),h=r.field;p.forEach(v=>{var b,y;r&&(h&&v.type.id==="InputLeftElement"&&(f.paddingStart=(b=h.height)!=null?b:h.h),h&&v.type.id==="InputRightElement"&&(f.paddingEnd=(y=h.height)!=null?y:h.h),v.type.id==="InputRightAddon"&&(f.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(f.borderStartRadius=0))});const m=p.map(v=>{var b,y;const x=F_({size:((b=v.props)==null?void 0:b.size)||t.size,variant:((y=v.props)==null?void 0:y.variant)||t.variant});return v.type.id!=="Input"?u.cloneElement(v,x):u.cloneElement(v,Object.assign(x,f,v.props))});return a.jsx(Me.div,{className:c,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate",...r.group},"data-group":!0,...i,children:a.jsx(zL,{value:r,children:m})})});L5.displayName="InputGroup";var HL=Me("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),tg=Te(function(t,n){var r,o;const{placement:s="left",...i}=t,c=BL(),f=c.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=f==null?void 0:f.height)!=null?r:f==null?void 0:f.h,height:(o=f==null?void 0:f.height)!=null?o:f==null?void 0:f.h,fontSize:f==null?void 0:f.fontSize,...c.element};return a.jsx(HL,{ref:n,__css:h,...i})});tg.id="InputElement";tg.displayName="InputElement";var F5=Te(function(t,n){const{className:r,...o}=t,s=_t("chakra-input__left-element",r);return a.jsx(tg,{ref:n,placement:"left",className:s,...o})});F5.id="InputLeftElement";F5.displayName="InputLeftElement";var Tx=Te(function(t,n){const{className:r,...o}=t,s=_t("chakra-input__right-element",r);return a.jsx(tg,{ref:n,placement:"right",className:s,...o})});Tx.id="InputRightElement";Tx.displayName="InputRightElement";var ng=Te(function(t,n){const{htmlSize:r,...o}=t,s=Vr("Input",o),i=Jn(o),c=yx(i),f=_t("chakra-input",t.className);return a.jsx(Me.input,{size:r,...c,__css:s.field,ref:n,className:f})});ng.displayName="Input";ng.id="Input";var rg=Te(function(t,n){const r=Xi("Link",t),{className:o,isExternal:s,...i}=Jn(t);return a.jsx(Me.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:_t("chakra-link",o),...i,__css:r})});rg.displayName="Link";var[WL,z5]=Dn({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),$x=Te(function(t,n){const r=Vr("List",t),{children:o,styleType:s="none",stylePosition:i,spacing:c,...f}=Jn(t),p=pf(o),m=c?{["& > *:not(style) ~ *:not(style)"]:{mt:c}}:{};return a.jsx(WL,{value:r,children:a.jsx(Me.ul,{ref:n,listStyleType:s,listStylePosition:i,role:"list",__css:{...r.container,...m},...f,children:p})})});$x.displayName="List";var VL=Te((e,t)=>{const{as:n,...r}=e;return a.jsx($x,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});VL.displayName="OrderedList";var gf=Te(function(t,n){const{as:r,...o}=t;return a.jsx($x,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});gf.displayName="UnorderedList";var Fs=Te(function(t,n){const r=z5();return a.jsx(Me.li,{ref:n,...t,__css:r.item})});Fs.displayName="ListItem";var UL=Te(function(t,n){const r=z5();return a.jsx(Tr,{ref:n,role:"presentation",...t,__css:r.icon})});UL.displayName="ListIcon";var Vi=Te(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:i,column:c,row:f,autoFlow:p,autoRows:h,templateRows:m,autoColumns:v,templateColumns:b,...y}=t,x={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:i,gridAutoColumns:v,gridColumn:c,gridRow:f,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:m,gridTemplateColumns:b};return a.jsx(Me.div,{ref:n,__css:x,...y})});Vi.displayName="Grid";function B5(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):y1(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var Qi=Me("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});Qi.displayName="Spacer";var H5=e=>a.jsx(Me.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});H5.displayName="StackItem";function GL(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{"&":B5(n,o=>r[o])}}var Lx=Te((e,t)=>{const{isInline:n,direction:r,align:o,justify:s,spacing:i="0.5rem",wrap:c,children:f,divider:p,className:h,shouldWrapChildren:m,...v}=e,b=n?"row":r??"column",y=u.useMemo(()=>GL({spacing:i,direction:b}),[i,b]),x=!!p,C=!m&&!x,k=u.useMemo(()=>{const _=pf(f);return C?_:_.map((I,O)=>{const E=typeof I.key<"u"?I.key:O,M=O+1===_.length,A=m?a.jsx(H5,{children:I},E):I;if(!x)return A;const D=u.cloneElement(p,{__css:y}),T=M?null:D;return a.jsxs(u.Fragment,{children:[A,T]},E)})},[p,y,x,C,m,f]),j=_t("chakra-stack",h);return a.jsx(Me.div,{ref:t,display:"flex",alignItems:o,justifyContent:s,flexDirection:b,flexWrap:c,gap:x?void 0:i,className:j,...v,children:k})});Lx.displayName="Stack";var W5=Te((e,t)=>a.jsx(Lx,{align:"center",...e,direction:"column",ref:t}));W5.displayName="VStack";var Fx=Te((e,t)=>a.jsx(Lx,{align:"center",...e,direction:"row",ref:t}));Fx.displayName="HStack";function rS(e){return B5(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var Bd=Te(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:i,rowEnd:c,rowSpan:f,rowStart:p,...h}=t,m=F_({gridArea:r,gridColumn:rS(o),gridRow:rS(f),gridColumnStart:s,gridColumnEnd:i,gridRowStart:p,gridRowEnd:c});return a.jsx(Me.div,{ref:n,__css:m,...h})});Bd.displayName="GridItem";var hi=Te(function(t,n){const r=Xi("Badge",t),{className:o,...s}=Jn(t);return a.jsx(Me.span,{ref:n,className:_t("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});hi.displayName="Badge";var Ko=Te(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:i,borderWidth:c,borderStyle:f,borderColor:p,...h}=Xi("Divider",t),{className:m,orientation:v="horizontal",__css:b,...y}=Jn(t),x={vertical:{borderLeftWidth:r||i||c||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||c||"1px",width:"100%"}};return a.jsx(Me.hr,{ref:n,"aria-orientation":v,...y,__css:{...h,border:"0",borderColor:p,borderStyle:f,...x[v],...b},className:_t("chakra-divider",m)})});Ko.displayName="Divider";function qL(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function KL(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=u.useState([]),s=u.useRef(),i=()=>{s.current&&(clearTimeout(s.current),s.current=null)},c=()=>{i(),s.current=setTimeout(()=>{o([]),s.current=null},t)};u.useEffect(()=>i,[]);function f(p){return h=>{if(h.key==="Backspace"){const m=[...r];m.pop(),o(m);return}if(qL(h)){const m=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(m),p(m.join("")),c()}}}return f}function XL(e,t,n,r){if(t==null)return r;if(!r)return e.find(i=>n(i).toLowerCase().startsWith(t.toLowerCase()));const o=e.filter(s=>n(s).toLowerCase().startsWith(t.toLowerCase()));if(o.length>0){let s;return o.includes(r)?(s=o.indexOf(r)+1,s===o.length&&(s=0),o[s]):(s=e.indexOf(o[0]),e[s])}return r}function QL(){const e=u.useRef(new Map),t=e.current,n=u.useCallback((o,s,i,c)=>{e.current.set(i,{type:s,el:o,options:c}),o.addEventListener(s,i,c)},[]),r=u.useCallback((o,s,i,c)=>{o.removeEventListener(s,i,c),e.current.delete(i)},[]);return u.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function kv(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function V5(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:i,onMouseUp:c,onClick:f,onKeyDown:p,onKeyUp:h,tabIndex:m,onMouseOver:v,onMouseLeave:b,...y}=e,[x,C]=u.useState(!0),[k,j]=u.useState(!1),_=QL(),I=L=>{L&&L.tagName!=="BUTTON"&&C(!1)},O=x?m:m||0,E=n&&!r,M=u.useCallback(L=>{if(n){L.stopPropagation(),L.preventDefault();return}L.currentTarget.focus(),f==null||f(L)},[n,f]),R=u.useCallback(L=>{k&&kv(L)&&(L.preventDefault(),L.stopPropagation(),j(!1),_.remove(document,"keyup",R,!1))},[k,_]),A=u.useCallback(L=>{if(p==null||p(L),n||L.defaultPrevented||L.metaKey||!kv(L.nativeEvent)||x)return;const X=o&&L.key==="Enter";s&&L.key===" "&&(L.preventDefault(),j(!0)),X&&(L.preventDefault(),L.currentTarget.click()),_.add(document,"keyup",R,!1)},[n,x,p,o,s,_,R]),D=u.useCallback(L=>{if(h==null||h(L),n||L.defaultPrevented||L.metaKey||!kv(L.nativeEvent)||x)return;s&&L.key===" "&&(L.preventDefault(),j(!1),L.currentTarget.click())},[s,x,n,h]),T=u.useCallback(L=>{L.button===0&&(j(!1),_.remove(document,"mouseup",T,!1))},[_]),K=u.useCallback(L=>{if(L.button!==0)return;if(n){L.stopPropagation(),L.preventDefault();return}x||j(!0),L.currentTarget.focus({preventScroll:!0}),_.add(document,"mouseup",T,!1),i==null||i(L)},[n,x,i,_,T]),B=u.useCallback(L=>{L.button===0&&(x||j(!1),c==null||c(L))},[c,x]),G=u.useCallback(L=>{if(n){L.preventDefault();return}v==null||v(L)},[n,v]),Q=u.useCallback(L=>{k&&(L.preventDefault(),j(!1)),b==null||b(L)},[k,b]),V=cn(t,I);return x?{...y,ref:V,type:"button","aria-disabled":E?void 0:n,disabled:E,onClick:M,onMouseDown:i,onMouseUp:c,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:b}:{...y,ref:V,role:"button","data-active":Ht(k),"aria-disabled":n?"true":void 0,tabIndex:E?void 0:O,onClick:M,onMouseDown:K,onMouseUp:B,onKeyUp:D,onKeyDown:A,onMouseOver:G,onMouseLeave:Q}}function YL(e){const t=e.current;if(!t)return!1;const n=jL(t);return!n||t.contains(n)?!1:!!ML(n)}function U5(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;fi(()=>{if(!s||YL(e))return;const i=(o==null?void 0:o.current)||e.current;let c;if(i)return c=requestAnimationFrame(()=>{i.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(c)}},[s,e,o])}var JL={preventScroll:!0,shouldFocus:!1};function ZL(e,t=JL){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,i=eF(e)?e.current:e,c=o&&s,f=u.useRef(c),p=u.useRef(s);zc(()=>{!p.current&&s&&(f.current=c),p.current=s},[s,c]);const h=u.useCallback(()=>{if(!(!s||!i||!f.current)&&(f.current=!1,!i.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var m;(m=n.current)==null||m.focus({preventScroll:r})});else{const m=T5(i);m.length>0&&requestAnimationFrame(()=>{m[0].focus({preventScroll:r})})}},[s,r,i,n]);fi(()=>{h()},[h]),wl(i,"transitionend",h)}function eF(e){return"current"in e}var mc=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),Ir={arrowShadowColor:mc("--popper-arrow-shadow-color"),arrowSize:mc("--popper-arrow-size","8px"),arrowSizeHalf:mc("--popper-arrow-size-half"),arrowBg:mc("--popper-arrow-bg"),transformOrigin:mc("--popper-transform-origin"),arrowOffset:mc("--popper-arrow-offset")};function tF(e){if(e.includes("top"))return"1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("bottom"))return"-1px -1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("right"))return"-1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("left"))return"1px -1px 0px 0 var(--popper-arrow-shadow-color)"}var nF={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"},rF=e=>nF[e],oS={scroll:!0,resize:!0};function oF(e){let t;return typeof e=="object"?t={enabled:!0,options:{...oS,...e}}:t={enabled:e,options:oS},t}var sF={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`}},aF={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{sS(e)},effect:({state:e})=>()=>{sS(e)}},sS=e=>{e.elements.popper.style.setProperty(Ir.transformOrigin.var,rF(e.placement))},iF={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{lF(e)}},lF=e=>{var t;if(!e.placement)return;const n=cF(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:Ir.arrowSize.varRef,height:Ir.arrowSize.varRef,zIndex:-1});const r={[Ir.arrowSizeHalf.var]:`calc(${Ir.arrowSize.varRef} / 2 - 1px)`,[Ir.arrowOffset.var]:`calc(${Ir.arrowSizeHalf.varRef} * -1)`};for(const o in r)e.elements.arrow.style.setProperty(o,r[o])}},cF=e=>{if(e.startsWith("top"))return{property:"bottom",value:Ir.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:Ir.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:Ir.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:Ir.arrowOffset.varRef}},uF={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{aS(e)},effect:({state:e})=>()=>{aS(e)}},aS=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=tF(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:Ir.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},dF={"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"}},fF={"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 pF(e,t="ltr"){var n,r;const o=((n=dF[e])==null?void 0:n[t])||e;return t==="ltr"?o:(r=fF[e])!=null?r:o}var Oo="top",xs="bottom",ys="right",Mo="left",zx="auto",vf=[Oo,xs,ys,Mo],lu="start",Hd="end",hF="clippingParents",G5="viewport",ad="popper",mF="reference",iS=vf.reduce(function(e,t){return e.concat([t+"-"+lu,t+"-"+Hd])},[]),q5=[].concat(vf,[zx]).reduce(function(e,t){return e.concat([t,t+"-"+lu,t+"-"+Hd])},[]),gF="beforeRead",vF="read",bF="afterRead",xF="beforeMain",yF="main",wF="afterMain",CF="beforeWrite",SF="write",kF="afterWrite",jF=[gF,vF,bF,xF,yF,wF,CF,SF,kF];function Sa(e){return e?(e.nodeName||"").toLowerCase():null}function Xo(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Al(e){var t=Xo(e).Element;return e instanceof t||e instanceof Element}function vs(e){var t=Xo(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Bx(e){if(typeof ShadowRoot>"u")return!1;var t=Xo(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function _F(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},s=t.elements[n];!vs(s)||!Sa(s)||(Object.assign(s.style,r),Object.keys(o).forEach(function(i){var c=o[i];c===!1?s.removeAttribute(i):s.setAttribute(i,c===!0?"":c)}))})}function PF(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 o=t.elements[r],s=t.attributes[r]||{},i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),c=i.reduce(function(f,p){return f[p]="",f},{});!vs(o)||!Sa(o)||(Object.assign(o.style,c),Object.keys(s).forEach(function(f){o.removeAttribute(f)}))})}}const IF={name:"applyStyles",enabled:!0,phase:"write",fn:_F,effect:PF,requires:["computeStyles"]};function Ca(e){return e.split("-")[0]}var Cl=Math.max,Rh=Math.min,cu=Math.round;function G1(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function K5(){return!/^((?!chrome|android).)*safari/i.test(G1())}function uu(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),o=1,s=1;t&&vs(e)&&(o=e.offsetWidth>0&&cu(r.width)/e.offsetWidth||1,s=e.offsetHeight>0&&cu(r.height)/e.offsetHeight||1);var i=Al(e)?Xo(e):window,c=i.visualViewport,f=!K5()&&n,p=(r.left+(f&&c?c.offsetLeft:0))/o,h=(r.top+(f&&c?c.offsetTop:0))/s,m=r.width/o,v=r.height/s;return{width:m,height:v,top:h,right:p+m,bottom:h+v,left:p,x:p,y:h}}function Hx(e){var t=uu(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 X5(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Bx(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function oi(e){return Xo(e).getComputedStyle(e)}function EF(e){return["table","td","th"].indexOf(Sa(e))>=0}function Yi(e){return((Al(e)?e.ownerDocument:e.document)||window.document).documentElement}function og(e){return Sa(e)==="html"?e:e.assignedSlot||e.parentNode||(Bx(e)?e.host:null)||Yi(e)}function lS(e){return!vs(e)||oi(e).position==="fixed"?null:e.offsetParent}function OF(e){var t=/firefox/i.test(G1()),n=/Trident/i.test(G1());if(n&&vs(e)){var r=oi(e);if(r.position==="fixed")return null}var o=og(e);for(Bx(o)&&(o=o.host);vs(o)&&["html","body"].indexOf(Sa(o))<0;){var s=oi(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function bf(e){for(var t=Xo(e),n=lS(e);n&&EF(n)&&oi(n).position==="static";)n=lS(n);return n&&(Sa(n)==="html"||Sa(n)==="body"&&oi(n).position==="static")?t:n||OF(e)||t}function Wx(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Id(e,t,n){return Cl(e,Rh(t,n))}function MF(e,t,n){var r=Id(e,t,n);return r>n?n:r}function Q5(){return{top:0,right:0,bottom:0,left:0}}function Y5(e){return Object.assign({},Q5(),e)}function J5(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var RF=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Y5(typeof t!="number"?t:J5(t,vf))};function DF(e){var t,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,i=n.modifiersData.popperOffsets,c=Ca(n.placement),f=Wx(c),p=[Mo,ys].indexOf(c)>=0,h=p?"height":"width";if(!(!s||!i)){var m=RF(o.padding,n),v=Hx(s),b=f==="y"?Oo:Mo,y=f==="y"?xs:ys,x=n.rects.reference[h]+n.rects.reference[f]-i[f]-n.rects.popper[h],C=i[f]-n.rects.reference[f],k=bf(s),j=k?f==="y"?k.clientHeight||0:k.clientWidth||0:0,_=x/2-C/2,I=m[b],O=j-v[h]-m[y],E=j/2-v[h]/2+_,M=Id(I,E,O),R=f;n.modifiersData[r]=(t={},t[R]=M,t.centerOffset=M-E,t)}}function AF(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||X5(t.elements.popper,o)&&(t.elements.arrow=o))}const NF={name:"arrow",enabled:!0,phase:"main",fn:DF,effect:AF,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function du(e){return e.split("-")[1]}var TF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function $F(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:cu(n*o)/o||0,y:cu(r*o)/o||0}}function cS(e){var t,n=e.popper,r=e.popperRect,o=e.placement,s=e.variation,i=e.offsets,c=e.position,f=e.gpuAcceleration,p=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=i.x,b=v===void 0?0:v,y=i.y,x=y===void 0?0:y,C=typeof h=="function"?h({x:b,y:x}):{x:b,y:x};b=C.x,x=C.y;var k=i.hasOwnProperty("x"),j=i.hasOwnProperty("y"),_=Mo,I=Oo,O=window;if(p){var E=bf(n),M="clientHeight",R="clientWidth";if(E===Xo(n)&&(E=Yi(n),oi(E).position!=="static"&&c==="absolute"&&(M="scrollHeight",R="scrollWidth")),E=E,o===Oo||(o===Mo||o===ys)&&s===Hd){I=xs;var A=m&&E===O&&O.visualViewport?O.visualViewport.height:E[M];x-=A-r.height,x*=f?1:-1}if(o===Mo||(o===Oo||o===xs)&&s===Hd){_=ys;var D=m&&E===O&&O.visualViewport?O.visualViewport.width:E[R];b-=D-r.width,b*=f?1:-1}}var T=Object.assign({position:c},p&&TF),K=h===!0?$F({x:b,y:x},Xo(n)):{x:b,y:x};if(b=K.x,x=K.y,f){var B;return Object.assign({},T,(B={},B[I]=j?"0":"",B[_]=k?"0":"",B.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+x+"px)":"translate3d("+b+"px, "+x+"px, 0)",B))}return Object.assign({},T,(t={},t[I]=j?x+"px":"",t[_]=k?b+"px":"",t.transform="",t))}function LF(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,s=n.adaptive,i=s===void 0?!0:s,c=n.roundOffsets,f=c===void 0?!0:c,p={placement:Ca(t.placement),variation:du(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,cS(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:f})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,cS(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const FF={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:LF,data:{}};var Sp={passive:!0};function zF(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,s=o===void 0?!0:o,i=r.resize,c=i===void 0?!0:i,f=Xo(t.elements.popper),p=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&p.forEach(function(h){h.addEventListener("scroll",n.update,Sp)}),c&&f.addEventListener("resize",n.update,Sp),function(){s&&p.forEach(function(h){h.removeEventListener("scroll",n.update,Sp)}),c&&f.removeEventListener("resize",n.update,Sp)}}const BF={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:zF,data:{}};var HF={left:"right",right:"left",bottom:"top",top:"bottom"};function sh(e){return e.replace(/left|right|bottom|top/g,function(t){return HF[t]})}var WF={start:"end",end:"start"};function uS(e){return e.replace(/start|end/g,function(t){return WF[t]})}function Vx(e){var t=Xo(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Ux(e){return uu(Yi(e)).left+Vx(e).scrollLeft}function VF(e,t){var n=Xo(e),r=Yi(e),o=n.visualViewport,s=r.clientWidth,i=r.clientHeight,c=0,f=0;if(o){s=o.width,i=o.height;var p=K5();(p||!p&&t==="fixed")&&(c=o.offsetLeft,f=o.offsetTop)}return{width:s,height:i,x:c+Ux(e),y:f}}function UF(e){var t,n=Yi(e),r=Vx(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=Cl(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=Cl(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-r.scrollLeft+Ux(e),f=-r.scrollTop;return oi(o||n).direction==="rtl"&&(c+=Cl(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:c,y:f}}function Gx(e){var t=oi(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function Z5(e){return["html","body","#document"].indexOf(Sa(e))>=0?e.ownerDocument.body:vs(e)&&Gx(e)?e:Z5(og(e))}function Ed(e,t){var n;t===void 0&&(t=[]);var r=Z5(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Xo(r),i=o?[s].concat(s.visualViewport||[],Gx(r)?r:[]):r,c=t.concat(i);return o?c:c.concat(Ed(og(i)))}function q1(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function GF(e,t){var n=uu(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 dS(e,t,n){return t===G5?q1(VF(e,n)):Al(t)?GF(t,n):q1(UF(Yi(e)))}function qF(e){var t=Ed(og(e)),n=["absolute","fixed"].indexOf(oi(e).position)>=0,r=n&&vs(e)?bf(e):e;return Al(r)?t.filter(function(o){return Al(o)&&X5(o,r)&&Sa(o)!=="body"}):[]}function KF(e,t,n,r){var o=t==="clippingParents"?qF(e):[].concat(t),s=[].concat(o,[n]),i=s[0],c=s.reduce(function(f,p){var h=dS(e,p,r);return f.top=Cl(h.top,f.top),f.right=Rh(h.right,f.right),f.bottom=Rh(h.bottom,f.bottom),f.left=Cl(h.left,f.left),f},dS(e,i,r));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}function eP(e){var t=e.reference,n=e.element,r=e.placement,o=r?Ca(r):null,s=r?du(r):null,i=t.x+t.width/2-n.width/2,c=t.y+t.height/2-n.height/2,f;switch(o){case Oo:f={x:i,y:t.y-n.height};break;case xs:f={x:i,y:t.y+t.height};break;case ys:f={x:t.x+t.width,y:c};break;case Mo:f={x:t.x-n.width,y:c};break;default:f={x:t.x,y:t.y}}var p=o?Wx(o):null;if(p!=null){var h=p==="y"?"height":"width";switch(s){case lu:f[p]=f[p]-(t[h]/2-n[h]/2);break;case Hd:f[p]=f[p]+(t[h]/2-n[h]/2);break}}return f}function Wd(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,s=n.strategy,i=s===void 0?e.strategy:s,c=n.boundary,f=c===void 0?hF:c,p=n.rootBoundary,h=p===void 0?G5:p,m=n.elementContext,v=m===void 0?ad:m,b=n.altBoundary,y=b===void 0?!1:b,x=n.padding,C=x===void 0?0:x,k=Y5(typeof C!="number"?C:J5(C,vf)),j=v===ad?mF:ad,_=e.rects.popper,I=e.elements[y?j:v],O=KF(Al(I)?I:I.contextElement||Yi(e.elements.popper),f,h,i),E=uu(e.elements.reference),M=eP({reference:E,element:_,strategy:"absolute",placement:o}),R=q1(Object.assign({},_,M)),A=v===ad?R:E,D={top:O.top-A.top+k.top,bottom:A.bottom-O.bottom+k.bottom,left:O.left-A.left+k.left,right:A.right-O.right+k.right},T=e.modifiersData.offset;if(v===ad&&T){var K=T[o];Object.keys(D).forEach(function(B){var G=[ys,xs].indexOf(B)>=0?1:-1,Q=[Oo,xs].indexOf(B)>=0?"y":"x";D[B]+=K[Q]*G})}return D}function XF(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,s=n.rootBoundary,i=n.padding,c=n.flipVariations,f=n.allowedAutoPlacements,p=f===void 0?q5:f,h=du(r),m=h?c?iS:iS.filter(function(y){return du(y)===h}):vf,v=m.filter(function(y){return p.indexOf(y)>=0});v.length===0&&(v=m);var b=v.reduce(function(y,x){return y[x]=Wd(e,{placement:x,boundary:o,rootBoundary:s,padding:i})[Ca(x)],y},{});return Object.keys(b).sort(function(y,x){return b[y]-b[x]})}function QF(e){if(Ca(e)===zx)return[];var t=sh(e);return[uS(e),t,uS(t)]}function YF(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,c=i===void 0?!0:i,f=n.fallbackPlacements,p=n.padding,h=n.boundary,m=n.rootBoundary,v=n.altBoundary,b=n.flipVariations,y=b===void 0?!0:b,x=n.allowedAutoPlacements,C=t.options.placement,k=Ca(C),j=k===C,_=f||(j||!y?[sh(C)]:QF(C)),I=[C].concat(_).reduce(function(ae,U){return ae.concat(Ca(U)===zx?XF(t,{placement:U,boundary:h,rootBoundary:m,padding:p,flipVariations:y,allowedAutoPlacements:x}):U)},[]),O=t.rects.reference,E=t.rects.popper,M=new Map,R=!0,A=I[0],D=0;D=0,Q=G?"width":"height",V=Wd(t,{placement:T,boundary:h,rootBoundary:m,altBoundary:v,padding:p}),L=G?B?ys:Mo:B?xs:Oo;O[Q]>E[Q]&&(L=sh(L));var X=sh(L),F=[];if(s&&F.push(V[K]<=0),c&&F.push(V[L]<=0,V[X]<=0),F.every(function(ae){return ae})){A=T,R=!1;break}M.set(T,F)}if(R)for(var q=y?3:1,te=function(U){var W=I.find(function(ne){var ie=M.get(ne);if(ie)return ie.slice(0,U).every(function(oe){return oe})});if(W)return A=W,"break"},Y=q;Y>0;Y--){var ce=te(Y);if(ce==="break")break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}}const JF={name:"flip",enabled:!0,phase:"main",fn:YF,requiresIfExists:["offset"],data:{_skip:!1}};function fS(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 pS(e){return[Oo,ys,xs,Mo].some(function(t){return e[t]>=0})}function ZF(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=Wd(t,{elementContext:"reference"}),c=Wd(t,{altBoundary:!0}),f=fS(i,r),p=fS(c,o,s),h=pS(f),m=pS(p);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":m})}const ez={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ZF};function tz(e,t,n){var r=Ca(e),o=[Mo,Oo].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=s[0],c=s[1];return i=i||0,c=(c||0)*o,[Mo,ys].indexOf(r)>=0?{x:c,y:i}:{x:i,y:c}}function nz(e){var t=e.state,n=e.options,r=e.name,o=n.offset,s=o===void 0?[0,0]:o,i=q5.reduce(function(h,m){return h[m]=tz(m,t.rects,s),h},{}),c=i[t.placement],f=c.x,p=c.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=p),t.modifiersData[r]=i}const rz={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:nz};function oz(e){var t=e.state,n=e.name;t.modifiersData[n]=eP({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const sz={name:"popperOffsets",enabled:!0,phase:"read",fn:oz,data:{}};function az(e){return e==="x"?"y":"x"}function iz(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,c=i===void 0?!1:i,f=n.boundary,p=n.rootBoundary,h=n.altBoundary,m=n.padding,v=n.tether,b=v===void 0?!0:v,y=n.tetherOffset,x=y===void 0?0:y,C=Wd(t,{boundary:f,rootBoundary:p,padding:m,altBoundary:h}),k=Ca(t.placement),j=du(t.placement),_=!j,I=Wx(k),O=az(I),E=t.modifiersData.popperOffsets,M=t.rects.reference,R=t.rects.popper,A=typeof x=="function"?x(Object.assign({},t.rects,{placement:t.placement})):x,D=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,K={x:0,y:0};if(E){if(s){var B,G=I==="y"?Oo:Mo,Q=I==="y"?xs:ys,V=I==="y"?"height":"width",L=E[I],X=L+C[G],F=L-C[Q],q=b?-R[V]/2:0,te=j===lu?M[V]:R[V],Y=j===lu?-R[V]:-M[V],ce=t.elements.arrow,ae=b&&ce?Hx(ce):{width:0,height:0},U=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Q5(),W=U[G],ne=U[Q],ie=Id(0,M[V],ae[V]),oe=_?M[V]/2-q-ie-W-D.mainAxis:te-ie-W-D.mainAxis,me=_?-M[V]/2+q+ie+ne+D.mainAxis:Y+ie+ne+D.mainAxis,fe=t.elements.arrow&&bf(t.elements.arrow),he=fe?I==="y"?fe.clientTop||0:fe.clientLeft||0:0,Ce=(B=T==null?void 0:T[I])!=null?B:0,xe=L+oe-Ce-he,de=L+me-Ce,Ne=Id(b?Rh(X,xe):X,L,b?Cl(F,de):F);E[I]=Ne,K[I]=Ne-L}if(c){var De,Xe=I==="x"?Oo:Mo,It=I==="x"?xs:ys,lt=E[O],on=O==="y"?"height":"width",gt=lt+C[Xe],bt=lt-C[It],ye=[Oo,Mo].indexOf(k)!==-1,We=(De=T==null?void 0:T[O])!=null?De:0,Et=ye?gt:lt-M[on]-R[on]-We+D.altAxis,zt=ye?lt+M[on]+R[on]-We-D.altAxis:bt,we=b&&ye?MF(Et,lt,zt):Id(b?Et:gt,lt,b?zt:bt);E[O]=we,K[O]=we-lt}t.modifiersData[r]=K}}const lz={name:"preventOverflow",enabled:!0,phase:"main",fn:iz,requiresIfExists:["offset"]};function cz(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function uz(e){return e===Xo(e)||!vs(e)?Vx(e):cz(e)}function dz(e){var t=e.getBoundingClientRect(),n=cu(t.width)/e.offsetWidth||1,r=cu(t.height)/e.offsetHeight||1;return n!==1||r!==1}function fz(e,t,n){n===void 0&&(n=!1);var r=vs(t),o=vs(t)&&dz(t),s=Yi(t),i=uu(e,o,n),c={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((Sa(t)!=="body"||Gx(s))&&(c=uz(t)),vs(t)?(f=uu(t,!0),f.x+=t.clientLeft,f.y+=t.clientTop):s&&(f.x=Ux(s))),{x:i.left+c.scrollLeft-f.x,y:i.top+c.scrollTop-f.y,width:i.width,height:i.height}}function pz(e){var t=new Map,n=new Set,r=[];e.forEach(function(s){t.set(s.name,s)});function o(s){n.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(c){if(!n.has(c)){var f=t.get(c);f&&o(f)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||o(s)}),r}function hz(e){var t=pz(e);return jF.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function mz(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function gz(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var hS={placement:"bottom",modifiers:[],strategy:"absolute"};function mS(){for(var e=arguments.length,t=new Array(e),n=0;n{}),_=u.useCallback(()=>{var D;!t||!y.current||!x.current||((D=j.current)==null||D.call(j),C.current=xz(y.current,x.current,{placement:k,modifiers:[uF,iF,aF,{...sF,enabled:!!v},{name:"eventListeners",...oF(i)},{name:"arrow",options:{padding:s}},{name:"offset",options:{offset:c??[0,f]}},{name:"flip",enabled:!!p,options:{padding:8}},{name:"preventOverflow",enabled:!!m,options:{boundary:h}},...n??[]],strategy:o}),C.current.forceUpdate(),j.current=C.current.destroy)},[k,t,n,v,i,s,c,f,p,m,h,o]);u.useEffect(()=>()=>{var D;!y.current&&!x.current&&((D=C.current)==null||D.destroy(),C.current=null)},[]);const I=u.useCallback(D=>{y.current=D,_()},[_]),O=u.useCallback((D={},T=null)=>({...D,ref:cn(I,T)}),[I]),E=u.useCallback(D=>{x.current=D,_()},[_]),M=u.useCallback((D={},T=null)=>({...D,ref:cn(E,T),style:{...D.style,position:o,minWidth:v?void 0:"max-content",inset:"0 auto auto 0"}}),[o,E,v]),R=u.useCallback((D={},T=null)=>{const{size:K,shadowColor:B,bg:G,style:Q,...V}=D;return{...V,ref:T,"data-popper-arrow":"",style:yz(D)}},[]),A=u.useCallback((D={},T=null)=>({...D,ref:T,"data-popper-arrow-inner":""}),[]);return{update(){var D;(D=C.current)==null||D.update()},forceUpdate(){var D;(D=C.current)==null||D.forceUpdate()},transformOrigin:Ir.transformOrigin.varRef,referenceRef:I,popperRef:E,getPopperProps:M,getArrowProps:R,getArrowInnerProps:A,getReferenceProps:O}}function yz(e){const{size:t,shadowColor:n,bg:r,style:o}=e,s={...o,position:"absolute"};return t&&(s["--popper-arrow-size"]=t),n&&(s["--popper-arrow-shadow-color"]=n),r&&(s["--popper-arrow-bg"]=r),s}function Kx(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=sr(n),i=sr(t),[c,f]=u.useState(e.defaultIsOpen||!1),p=r!==void 0?r:c,h=r!==void 0,m=u.useId(),v=o??`disclosure-${m}`,b=u.useCallback(()=>{h||f(!1),i==null||i()},[h,i]),y=u.useCallback(()=>{h||f(!0),s==null||s()},[h,s]),x=u.useCallback(()=>{p?b():y()},[p,y,b]);function C(j={}){return{...j,"aria-expanded":p,"aria-controls":v,onClick(_){var I;(I=j.onClick)==null||I.call(j,_),x()}}}function k(j={}){return{...j,hidden:!p,id:v}}return{isOpen:p,onOpen:y,onClose:b,onToggle:x,isControlled:h,getButtonProps:C,getDisclosureProps:k}}function wz(e){const{ref:t,handler:n,enabled:r=!0}=e,o=sr(n),i=u.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;u.useEffect(()=>{if(!r)return;const c=m=>{jv(m,t)&&(i.isPointerDown=!0)},f=m=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&jv(m,t)&&(i.isPointerDown=!1,o(m))},p=m=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&jv(m,t)&&(i.isPointerDown=!1,o(m))},h=tP(t.current);return h.addEventListener("mousedown",c,!0),h.addEventListener("mouseup",f,!0),h.addEventListener("touchstart",c,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",c,!0),h.removeEventListener("mouseup",f,!0),h.removeEventListener("touchstart",c,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function jv(e,t){var n;const r=e.target;return r&&!tP(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function tP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function nP(e){const{isOpen:t,ref:n}=e,[r,o]=u.useState(t),[s,i]=u.useState(!1);return u.useEffect(()=>{s||(o(t),i(!0))},[t,s,r]),wl(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var f;const p=kL(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(f=n.current)==null||f.dispatchEvent(h)}}}function Xx(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[Cz,Sz,kz,jz]=vx(),[_z,xf]=Dn({strict:!1,name:"MenuContext"});function Pz(e,...t){const n=u.useId(),r=e||n;return u.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function rP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function gS(e){return rP(e).activeElement===e}function Iz(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:i,isOpen:c,defaultIsOpen:f,onClose:p,onOpen:h,placement:m="bottom-start",lazyBehavior:v="unmount",direction:b,computePositionOnMount:y=!1,...x}=e,C=u.useRef(null),k=u.useRef(null),j=kz(),_=u.useCallback(()=>{requestAnimationFrame(()=>{var ce;(ce=C.current)==null||ce.focus({preventScroll:!1})})},[]),I=u.useCallback(()=>{const ce=setTimeout(()=>{var ae;if(o)(ae=o.current)==null||ae.focus();else{const U=j.firstEnabled();U&&B(U.index)}});X.current.add(ce)},[j,o]),O=u.useCallback(()=>{const ce=setTimeout(()=>{const ae=j.lastEnabled();ae&&B(ae.index)});X.current.add(ce)},[j]),E=u.useCallback(()=>{h==null||h(),s?I():_()},[s,I,_,h]),{isOpen:M,onOpen:R,onClose:A,onToggle:D}=Kx({isOpen:c,defaultIsOpen:f,onClose:p,onOpen:E});wz({enabled:M&&r,ref:C,handler:ce=>{var ae;(ae=k.current)!=null&&ae.contains(ce.target)||A()}});const T=qx({...x,enabled:M||y,placement:m,direction:b}),[K,B]=u.useState(-1);fi(()=>{M||B(-1)},[M]),U5(C,{focusRef:k,visible:M,shouldFocus:!0});const G=nP({isOpen:M,ref:C}),[Q,V]=Pz(t,"menu-button","menu-list"),L=u.useCallback(()=>{R(),_()},[R,_]),X=u.useRef(new Set([]));Tz(()=>{X.current.forEach(ce=>clearTimeout(ce)),X.current.clear()});const F=u.useCallback(()=>{R(),I()},[I,R]),q=u.useCallback(()=>{R(),O()},[R,O]),te=u.useCallback(()=>{var ce,ae;const U=rP(C.current),W=(ce=C.current)==null?void 0:ce.contains(U.activeElement);if(!(M&&!W))return;const ie=(ae=j.item(K))==null?void 0:ae.node;ie==null||ie.focus()},[M,K,j]),Y=u.useRef(null);return{openAndFocusMenu:L,openAndFocusFirstItem:F,openAndFocusLastItem:q,onTransitionEnd:te,unstable__animationState:G,descendants:j,popper:T,buttonId:Q,menuId:V,forceUpdate:T.forceUpdate,orientation:"vertical",isOpen:M,onToggle:D,onOpen:R,onClose:A,menuRef:C,buttonRef:k,focusedIndex:K,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:B,isLazy:i,lazyBehavior:v,initialFocusRef:o,rafId:Y}}function Ez(e={},t=null){const n=xf(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:i}=n,c=u.useCallback(f=>{const p=f.key,m={Enter:s,ArrowDown:s,ArrowUp:i}[p];m&&(f.preventDefault(),f.stopPropagation(),m(f))},[s,i]);return{...e,ref:cn(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":Ht(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:rt(e.onClick,r),onKeyDown:rt(e.onKeyDown,c)}}function K1(e){var t;return Az(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function Oz(e={},t=null){const n=xf();if(!n)throw new Error("useMenuContext: context is undefined. Seems you forgot to wrap component within ");const{focusedIndex:r,setFocusedIndex:o,menuRef:s,isOpen:i,onClose:c,menuId:f,isLazy:p,lazyBehavior:h,unstable__animationState:m}=n,v=Sz(),b=KL({preventDefault:k=>k.key!==" "&&K1(k.target)}),y=u.useCallback(k=>{if(!k.currentTarget.contains(k.target))return;const j=k.key,I={Tab:E=>E.preventDefault(),Escape:c,ArrowDown:()=>{const E=v.nextEnabled(r);E&&o(E.index)},ArrowUp:()=>{const E=v.prevEnabled(r);E&&o(E.index)}}[j];if(I){k.preventDefault(),I(k);return}const O=b(E=>{const M=XL(v.values(),E,R=>{var A,D;return(D=(A=R==null?void 0:R.node)==null?void 0:A.textContent)!=null?D:""},v.item(r));if(M){const R=v.indexOf(M.node);o(R)}});K1(k.target)&&O(k)},[v,r,b,c,o]),x=u.useRef(!1);i&&(x.current=!0);const C=Xx({wasSelected:x.current,enabled:p,mode:h,isSelected:m.present});return{...e,ref:cn(s,t),children:C?e.children:null,tabIndex:-1,role:"menu",id:f,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:rt(e.onKeyDown,y)}}function Mz(e={}){const{popper:t,isOpen:n}=xf();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function oP(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:i,isDisabled:c,isFocusable:f,closeOnSelect:p,type:h,...m}=e,v=xf(),{setFocusedIndex:b,focusedIndex:y,closeOnSelect:x,onClose:C,menuRef:k,isOpen:j,menuId:_,rafId:I}=v,O=u.useRef(null),E=`${_}-menuitem-${u.useId()}`,{index:M,register:R}=jz({disabled:c&&!f}),A=u.useCallback(L=>{n==null||n(L),!c&&b(M)},[b,M,c,n]),D=u.useCallback(L=>{r==null||r(L),O.current&&!gS(O.current)&&A(L)},[A,r]),T=u.useCallback(L=>{o==null||o(L),!c&&b(-1)},[b,c,o]),K=u.useCallback(L=>{s==null||s(L),K1(L.currentTarget)&&(p??x)&&C()},[C,s,x,p]),B=u.useCallback(L=>{i==null||i(L),b(M)},[b,i,M]),G=M===y,Q=c&&!f;fi(()=>{j&&(G&&!Q&&O.current?(I.current&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{var L;(L=O.current)==null||L.focus(),I.current=null})):k.current&&!gS(k.current)&&k.current.focus({preventScroll:!0}))},[G,Q,k,j]);const V=V5({onClick:K,onFocus:B,onMouseEnter:A,onMouseMove:D,onMouseLeave:T,ref:cn(R,O,t),isDisabled:c,isFocusable:f});return{...m,...V,type:h??V.type,id:E,role:"menuitem",tabIndex:G?0:-1}}function Rz(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...oP(o,t),role:`menuitem${n}`,"aria-checked":r}}function Dz(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...i}=e,f=n==="radio"?"":[],[p,h]=ku({defaultValue:o??f,value:r,onChange:s}),m=u.useCallback(y=>{if(n==="radio"&&typeof p=="string"&&h(y),n==="checkbox"&&Array.isArray(p)){const x=p.includes(y)?p.filter(C=>C!==y):p.concat(y);h(x)}},[p,h,n]),b=pf(t).map(y=>{if(y.type.id!=="MenuItemOption")return y;const x=k=>{var j,_;m(y.props.value),(_=(j=y.props).onClick)==null||_.call(j,k)},C=n==="radio"?y.props.value===p:p.includes(y.props.value);return u.cloneElement(y,{type:n,onClick:x,isChecked:C})});return{...i,children:b}}function Az(e){var t;if(!Nz(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function Nz(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function Tz(e,t=[]){return u.useEffect(()=>()=>e(),t)}var[$z,Pu]=Dn({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),yf=e=>{const{children:t}=e,n=Vr("Menu",e),r=Jn(e),{direction:o}=sf(),{descendants:s,...i}=Iz({...r,direction:o}),c=u.useMemo(()=>i,[i]),{isOpen:f,onClose:p,forceUpdate:h}=c;return a.jsx(Cz,{value:s,children:a.jsx(_z,{value:c,children:a.jsx($z,{value:n,children:Zb(t,{isOpen:f,onClose:p,forceUpdate:h})})})})};yf.displayName="Menu";var sP=Te((e,t)=>{const n=Pu();return a.jsx(Me.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});sP.displayName="MenuCommand";var aP=Te((e,t)=>{const{type:n,...r}=e,o=Pu(),s=r.as||n?n??void 0:"button",i=u.useMemo(()=>({textDecoration:"none",color:"inherit",userSelect:"none",display:"flex",width:"100%",alignItems:"center",textAlign:"start",flex:"0 0 auto",outline:0,...o.item}),[o.item]);return a.jsx(Me.button,{ref:t,type:s,...r,__css:i})}),Qx=e=>{const{className:t,children:n,...r}=e,o=Pu(),s=u.Children.only(n),i=u.isValidElement(s)?u.cloneElement(s,{focusable:"false","aria-hidden":!0,className:_t("chakra-menu__icon",s.props.className)}):null,c=_t("chakra-menu__icon-wrapper",t);return a.jsx(Me.span,{className:c,...r,__css:o.icon,children:i})};Qx.displayName="MenuIcon";var Bn=Te((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:i,...c}=e,f=oP(c,t),h=n||o?a.jsx("span",{style:{pointerEvents:"none",flex:1},children:i}):i;return a.jsxs(aP,{...f,className:_t("chakra-menu__menuitem",f.className),children:[n&&a.jsx(Qx,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&a.jsx(sP,{marginStart:s,children:o})]})});Bn.displayName="MenuItem";var Lz={enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.2,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.1,easings:"easeOut"}}},Fz=Me(yr.div),Ui=Te(function(t,n){var r,o;const{rootProps:s,motionProps:i,...c}=t,{isOpen:f,onTransitionEnd:p,unstable__animationState:h}=xf(),m=Oz(c,n),v=Mz(s),b=Pu();return a.jsx(Me.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=b.list)==null?void 0:r.zIndex},children:a.jsx(Fz,{variants:Lz,initial:!1,animate:f?"enter":"exit",__css:{outline:0,...b.list},...i,className:_t("chakra-menu__menu-list",m.className),...m,onUpdate:p,onAnimationComplete:Lm(h.onComplete,m.onAnimationComplete)})})});Ui.displayName="MenuList";var fu=Te((e,t)=>{const{title:n,children:r,className:o,...s}=e,i=_t("chakra-menu__group__title",o),c=Pu();return a.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&a.jsx(Me.p,{className:i,...s,__css:c.groupTitle,children:n}),r]})});fu.displayName="MenuGroup";var iP=e=>{const{className:t,title:n,...r}=e,o=Dz(r);return a.jsx(fu,{title:n,className:_t("chakra-menu__option-group",t),...o})};iP.displayName="MenuOptionGroup";var zz=Te((e,t)=>{const n=Pu();return a.jsx(Me.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),wf=Te((e,t)=>{const{children:n,as:r,...o}=e,s=Ez(o,t),i=r||zz;return a.jsx(i,{...s,className:_t("chakra-menu__menu-button",e.className),children:a.jsx(Me.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});wf.displayName="MenuButton";var Bz=e=>a.jsx("svg",{viewBox:"0 0 14 14",width:"1em",height:"1em",...e,children:a.jsx("polygon",{fill:"currentColor",points:"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"})}),Dh=Te((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=Rz(o,t);return a.jsxs(aP,{...s,className:_t("chakra-menu__menuitem-option",o.className),children:[n!==null&&a.jsx(Qx,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||a.jsx(Bz,{})}),a.jsx("span",{style:{flex:1},children:s.children})]})});Dh.id="MenuItemOption";Dh.displayName="MenuItemOption";var Hz={slideInBottom:{...A1,custom:{offsetY:16,reverse:!0}},slideInRight:{...A1,custom:{offsetX:16,reverse:!0}},scale:{...$3,custom:{initialScale:.95,reverse:!0}},none:{}},Wz=Me(yr.section),Vz=e=>Hz[e||"none"],lP=u.forwardRef((e,t)=>{const{preset:n,motionProps:r=Vz(n),...o}=e;return a.jsx(Wz,{ref:t,...r,...o})});lP.displayName="ModalTransition";var Uz=Object.defineProperty,Gz=(e,t,n)=>t in e?Uz(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qz=(e,t,n)=>(Gz(e,typeof t!="symbol"?t+"":t,n),n),Kz=class{constructor(){qz(this,"modals"),this.modals=new Map}add(e){return this.modals.set(e,this.modals.size+1),this.modals.size}remove(e){this.modals.delete(e)}isTopModal(e){return e?this.modals.get(e)===this.modals.size:!1}},X1=new Kz;function cP(e,t){const[n,r]=u.useState(0);return u.useEffect(()=>{const o=e.current;if(o){if(t){const s=X1.add(o);r(s)}return()=>{X1.remove(o),r(0)}}},[t,e]),n}var Xz=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},gc=new WeakMap,kp=new WeakMap,jp={},_v=0,uP=function(e){return e&&(e.host||uP(e.parentNode))},Qz=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=uP(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},Yz=function(e,t,n,r){var o=Qz(t,Array.isArray(e)?e:[e]);jp[n]||(jp[n]=new WeakMap);var s=jp[n],i=[],c=new Set,f=new Set(o),p=function(m){!m||c.has(m)||(c.add(m),p(m.parentNode))};o.forEach(p);var h=function(m){!m||f.has(m)||Array.prototype.forEach.call(m.children,function(v){if(c.has(v))h(v);else{var b=v.getAttribute(r),y=b!==null&&b!=="false",x=(gc.get(v)||0)+1,C=(s.get(v)||0)+1;gc.set(v,x),s.set(v,C),i.push(v),x===1&&y&&kp.set(v,!0),C===1&&v.setAttribute(n,"true"),y||v.setAttribute(r,"true")}})};return h(t),c.clear(),_v++,function(){i.forEach(function(m){var v=gc.get(m)-1,b=s.get(m)-1;gc.set(m,v),s.set(m,b),v||(kp.has(m)||m.removeAttribute(r),kp.delete(m)),b||m.removeAttribute(n)}),_v--,_v||(gc=new WeakMap,gc=new WeakMap,kp=new WeakMap,jp={})}},Jz=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||Xz(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),Yz(r,o,n,"aria-hidden")):function(){return null}};function Zz(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:i=!0,onOverlayClick:c,onEsc:f}=e,p=u.useRef(null),h=u.useRef(null),[m,v,b]=tB(r,"chakra-modal","chakra-modal--header","chakra-modal--body");eB(p,t&&i);const y=cP(p,t),x=u.useRef(null),C=u.useCallback(A=>{x.current=A.target},[]),k=u.useCallback(A=>{A.key==="Escape"&&(A.stopPropagation(),s&&(n==null||n()),f==null||f())},[s,n,f]),[j,_]=u.useState(!1),[I,O]=u.useState(!1),E=u.useCallback((A={},D=null)=>({role:"dialog",...A,ref:cn(D,p),id:m,tabIndex:-1,"aria-modal":!0,"aria-labelledby":j?v:void 0,"aria-describedby":I?b:void 0,onClick:rt(A.onClick,T=>T.stopPropagation())}),[b,I,m,v,j]),M=u.useCallback(A=>{A.stopPropagation(),x.current===A.target&&X1.isTopModal(p.current)&&(o&&(n==null||n()),c==null||c())},[n,o,c]),R=u.useCallback((A={},D=null)=>({...A,ref:cn(D,h),onClick:rt(A.onClick,M),onKeyDown:rt(A.onKeyDown,k),onMouseDown:rt(A.onMouseDown,C)}),[k,C,M]);return{isOpen:t,onClose:n,headerId:v,bodyId:b,setBodyMounted:O,setHeaderMounted:_,dialogRef:p,overlayRef:h,getDialogProps:E,getDialogContainerProps:R,index:y}}function eB(e,t){const n=e.current;u.useEffect(()=>{if(!(!e.current||!t))return Jz(e.current)},[t,e,n])}function tB(e,...t){const n=u.useId(),r=e||n;return u.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[nB,Iu]=Dn({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[rB,Nl]=Dn({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),Tl=e=>{const t={scrollBehavior:"outside",autoFocus:!0,trapFocus:!0,returnFocusOnClose:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale",lockFocusAcrossFrames:!0,...e},{portalProps:n,children:r,autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:c,returnFocusOnClose:f,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b,onCloseComplete:y}=t,x=Vr("Modal",t),k={...Zz(t),autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:c,returnFocusOnClose:f,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b};return a.jsx(rB,{value:k,children:a.jsx(nB,{value:x,children:a.jsx(co,{onExitComplete:y,children:k.isOpen&&a.jsx(uf,{...n,children:r})})})})};Tl.displayName="Modal";var ah="right-scroll-bar-position",ih="width-before-scroll-bar",oB="with-scroll-bars-hidden",sB="--removed-body-scroll-bar-size",dP=a5(),Pv=function(){},sg=u.forwardRef(function(e,t){var n=u.useRef(null),r=u.useState({onScrollCapture:Pv,onWheelCapture:Pv,onTouchMoveCapture:Pv}),o=r[0],s=r[1],i=e.forwardProps,c=e.children,f=e.className,p=e.removeScrollBar,h=e.enabled,m=e.shards,v=e.sideCar,b=e.noIsolation,y=e.inert,x=e.allowPinchZoom,C=e.as,k=C===void 0?"div":C,j=e.gapMode,_=r5(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),I=v,O=n5([n,t]),E=ba(ba({},_),o);return u.createElement(u.Fragment,null,h&&u.createElement(I,{sideCar:dP,removeScrollBar:p,shards:m,noIsolation:b,inert:y,setCallbacks:s,allowPinchZoom:!!x,lockRef:n,gapMode:j}),i?u.cloneElement(u.Children.only(c),ba(ba({},E),{ref:O})):u.createElement(k,ba({},E,{className:f,ref:O}),c))});sg.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};sg.classNames={fullWidth:ih,zeroRight:ah};var vS,aB=function(){if(vS)return vS;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function iB(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=aB();return t&&e.setAttribute("nonce",t),e}function lB(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function cB(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var uB=function(){var e=0,t=null;return{add:function(n){e==0&&(t=iB())&&(lB(t,n),cB(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},dB=function(){var e=uB();return function(t,n){u.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},fP=function(){var e=dB(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},fB={left:0,top:0,right:0,gap:0},Iv=function(e){return parseInt(e||"",10)||0},pB=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[Iv(n),Iv(r),Iv(o)]},hB=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return fB;var t=pB(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])}},mB=fP(),gB=function(e,t,n,r){var o=e.left,s=e.top,i=e.right,c=e.gap;return n===void 0&&(n="margin"),` - .`.concat(oB,` { - overflow: hidden `).concat(r,`; - padding-right: `).concat(c,"px ").concat(r,`; - } - body { - overflow: hidden `).concat(r,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` - padding-left: `.concat(o,`px; - padding-top: `).concat(s,`px; - padding-right: `).concat(i,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(c,"px ").concat(r,`; - `),n==="padding"&&"padding-right: ".concat(c,"px ").concat(r,";")].filter(Boolean).join(""),` - } - - .`).concat(ah,` { - right: `).concat(c,"px ").concat(r,`; - } - - .`).concat(ih,` { - margin-right: `).concat(c,"px ").concat(r,`; - } - - .`).concat(ah," .").concat(ah,` { - right: 0 `).concat(r,`; - } - - .`).concat(ih," .").concat(ih,` { - margin-right: 0 `).concat(r,`; - } - - body { - `).concat(sB,": ").concat(c,`px; - } -`)},vB=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=u.useMemo(function(){return hB(o)},[o]);return u.createElement(mB,{styles:gB(s,!t,o,n?"":"!important")})},Q1=!1;if(typeof window<"u")try{var _p=Object.defineProperty({},"passive",{get:function(){return Q1=!0,!0}});window.addEventListener("test",_p,_p),window.removeEventListener("test",_p,_p)}catch{Q1=!1}var vc=Q1?{passive:!1}:!1,bB=function(e){return e.tagName==="TEXTAREA"},pP=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!bB(e)&&n[t]==="visible")},xB=function(e){return pP(e,"overflowY")},yB=function(e){return pP(e,"overflowX")},bS=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=hP(e,r);if(o){var s=mP(e,r),i=s[1],c=s[2];if(i>c)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},wB=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},CB=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},hP=function(e,t){return e==="v"?xB(t):yB(t)},mP=function(e,t){return e==="v"?wB(t):CB(t)},SB=function(e,t){return e==="h"&&t==="rtl"?-1:1},kB=function(e,t,n,r,o){var s=SB(e,window.getComputedStyle(t).direction),i=s*r,c=n.target,f=t.contains(c),p=!1,h=i>0,m=0,v=0;do{var b=mP(e,c),y=b[0],x=b[1],C=b[2],k=x-C-s*y;(y||k)&&hP(e,c)&&(m+=k,v+=y),c=c.parentNode}while(!f&&c!==document.body||f&&(t.contains(c)||t===c));return(h&&(o&&m===0||!o&&i>m)||!h&&(o&&v===0||!o&&-i>v))&&(p=!0),p},Pp=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},xS=function(e){return[e.deltaX,e.deltaY]},yS=function(e){return e&&"current"in e?e.current:e},jB=function(e,t){return e[0]===t[0]&&e[1]===t[1]},_B=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},PB=0,bc=[];function IB(e){var t=u.useRef([]),n=u.useRef([0,0]),r=u.useRef(),o=u.useState(PB++)[0],s=u.useState(fP)[0],i=u.useRef(e);u.useEffect(function(){i.current=e},[e]),u.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var x=B1([e.lockRef.current],(e.shards||[]).map(yS),!0).filter(Boolean);return x.forEach(function(C){return C.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),x.forEach(function(C){return C.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var c=u.useCallback(function(x,C){if("touches"in x&&x.touches.length===2)return!i.current.allowPinchZoom;var k=Pp(x),j=n.current,_="deltaX"in x?x.deltaX:j[0]-k[0],I="deltaY"in x?x.deltaY:j[1]-k[1],O,E=x.target,M=Math.abs(_)>Math.abs(I)?"h":"v";if("touches"in x&&M==="h"&&E.type==="range")return!1;var R=bS(M,E);if(!R)return!0;if(R?O=M:(O=M==="v"?"h":"v",R=bS(M,E)),!R)return!1;if(!r.current&&"changedTouches"in x&&(_||I)&&(r.current=O),!O)return!0;var A=r.current||O;return kB(A,C,x,A==="h"?_:I,!0)},[]),f=u.useCallback(function(x){var C=x;if(!(!bc.length||bc[bc.length-1]!==s)){var k="deltaY"in C?xS(C):Pp(C),j=t.current.filter(function(O){return O.name===C.type&&O.target===C.target&&jB(O.delta,k)})[0];if(j&&j.should){C.cancelable&&C.preventDefault();return}if(!j){var _=(i.current.shards||[]).map(yS).filter(Boolean).filter(function(O){return O.contains(C.target)}),I=_.length>0?c(C,_[0]):!i.current.noIsolation;I&&C.cancelable&&C.preventDefault()}}},[]),p=u.useCallback(function(x,C,k,j){var _={name:x,delta:C,target:k,should:j};t.current.push(_),setTimeout(function(){t.current=t.current.filter(function(I){return I!==_})},1)},[]),h=u.useCallback(function(x){n.current=Pp(x),r.current=void 0},[]),m=u.useCallback(function(x){p(x.type,xS(x),x.target,c(x,e.lockRef.current))},[]),v=u.useCallback(function(x){p(x.type,Pp(x),x.target,c(x,e.lockRef.current))},[]);u.useEffect(function(){return bc.push(s),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:v}),document.addEventListener("wheel",f,vc),document.addEventListener("touchmove",f,vc),document.addEventListener("touchstart",h,vc),function(){bc=bc.filter(function(x){return x!==s}),document.removeEventListener("wheel",f,vc),document.removeEventListener("touchmove",f,vc),document.removeEventListener("touchstart",h,vc)}},[]);var b=e.removeScrollBar,y=e.inert;return u.createElement(u.Fragment,null,y?u.createElement(s,{styles:_B(o)}):null,b?u.createElement(vB,{gapMode:e.gapMode}):null)}const EB=P$(dP,IB);var gP=u.forwardRef(function(e,t){return u.createElement(sg,ba({},e,{ref:t,sideCar:EB}))});gP.classNames=sg.classNames;const OB=gP;function MB(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:i,finalFocusRef:c,returnFocusOnClose:f,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:m}=Nl(),[v,b]=E7();u.useEffect(()=>{!v&&b&&setTimeout(b)},[v,b]);const y=cP(r,m);return a.jsx($5,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:c,restoreFocus:f,contentRef:r,lockFocusAcrossFrames:h,children:a.jsx(OB,{removeScrollBar:!p,allowPinchZoom:i,enabled:y===1&&s,forwardProps:!0,children:e.children})})}var $l=Te((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...i}=e,{getDialogProps:c,getDialogContainerProps:f}=Nl(),p=c(i,t),h=f(o),m=_t("chakra-modal__content",n),v=Iu(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},y={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:x}=Nl();return a.jsx(MB,{children:a.jsx(Me.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:y,children:a.jsx(lP,{preset:x,motionProps:s,className:m,...p,__css:b,children:r})})})});$l.displayName="ModalContent";function Cf(e){const{leastDestructiveRef:t,...n}=e;return a.jsx(Tl,{...n,initialFocusRef:t})}var Sf=Te((e,t)=>a.jsx($l,{ref:t,role:"alertdialog",...e})),ka=Te((e,t)=>{const{className:n,...r}=e,o=_t("chakra-modal__footer",n),i={display:"flex",alignItems:"center",justifyContent:"flex-end",...Iu().footer};return a.jsx(Me.footer,{ref:t,...r,__css:i,className:o})});ka.displayName="ModalFooter";var qs=Te((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=Nl();u.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=_t("chakra-modal__header",n),f={flex:0,...Iu().header};return a.jsx(Me.header,{ref:t,className:i,id:o,...r,__css:f})});qs.displayName="ModalHeader";var RB=Me(yr.div),Ks=Te((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,i=_t("chakra-modal__overlay",n),f={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...Iu().overlay},{motionPreset:p}=Nl(),m=o||(p==="none"?{}:T3);return a.jsx(RB,{...m,__css:f,ref:t,className:i,...s})});Ks.displayName="ModalOverlay";var Xs=Te((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=Nl();u.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=_t("chakra-modal__body",n),c=Iu();return a.jsx(Me.div,{ref:t,className:i,id:o,...r,__css:c.body})});Xs.displayName="ModalBody";var kf=Te((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=Nl(),i=_t("chakra-modal__close-btn",r),c=Iu();return a.jsx(i9,{ref:t,__css:c.closeButton,className:i,onClick:rt(n,f=>{f.stopPropagation(),s()}),...o})});kf.displayName="ModalCloseButton";var DB=e=>a.jsx(Tr,{viewBox:"0 0 24 24",...e,children:a.jsx("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"})}),AB=e=>a.jsx(Tr,{viewBox:"0 0 24 24",...e,children:a.jsx("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 wS(e,t,n,r){u.useEffect(()=>{var o;if(!e.current||!r)return;const s=(o=e.current.ownerDocument.defaultView)!=null?o:window,i=Array.isArray(t)?t:[t],c=new s.MutationObserver(f=>{for(const p of f)p.type==="attributes"&&p.attributeName&&i.includes(p.attributeName)&&n(p)});return c.observe(e.current,{attributes:!0,attributeFilter:i}),()=>c.disconnect()})}function NB(e,t){const n=sr(e);u.useEffect(()=>{let r=null;const o=()=>n();return t!==null&&(r=window.setInterval(o,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var TB=50,CS=300;function $B(e,t){const[n,r]=u.useState(!1),[o,s]=u.useState(null),[i,c]=u.useState(!0),f=u.useRef(null),p=()=>clearTimeout(f.current);NB(()=>{o==="increment"&&e(),o==="decrement"&&t()},n?TB:null);const h=u.useCallback(()=>{i&&e(),f.current=setTimeout(()=>{c(!1),r(!0),s("increment")},CS)},[e,i]),m=u.useCallback(()=>{i&&t(),f.current=setTimeout(()=>{c(!1),r(!0),s("decrement")},CS)},[t,i]),v=u.useCallback(()=>{c(!0),r(!1),p()},[]);return u.useEffect(()=>()=>p(),[]),{up:h,down:m,stop:v,isSpinning:n}}var LB=/^[Ee0-9+\-.]$/;function FB(e){return LB.test(e)}function zB(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 BB(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:o=Number.MIN_SAFE_INTEGER,max:s=Number.MAX_SAFE_INTEGER,step:i=1,isReadOnly:c,isDisabled:f,isRequired:p,isInvalid:h,pattern:m="[0-9]*(.[0-9]+)?",inputMode:v="decimal",allowMouseWheel:b,id:y,onChange:x,precision:C,name:k,"aria-describedby":j,"aria-label":_,"aria-labelledby":I,onFocus:O,onBlur:E,onInvalid:M,getAriaValueText:R,isValidCharacter:A,format:D,parse:T,...K}=e,B=sr(O),G=sr(E),Q=sr(M),V=sr(A??FB),L=sr(R),X=i$(e),{update:F,increment:q,decrement:te}=X,[Y,ce]=u.useState(!1),ae=!(c||f),U=u.useRef(null),W=u.useRef(null),ne=u.useRef(null),ie=u.useRef(null),oe=u.useCallback(we=>we.split("").filter(V).join(""),[V]),me=u.useCallback(we=>{var xt;return(xt=T==null?void 0:T(we))!=null?xt:we},[T]),fe=u.useCallback(we=>{var xt;return((xt=D==null?void 0:D(we))!=null?xt:we).toString()},[D]);fi(()=>{(X.valueAsNumber>s||X.valueAsNumber{if(!U.current)return;if(U.current.value!=X.value){const xt=me(U.current.value);X.setValue(oe(xt))}},[me,oe]);const he=u.useCallback((we=i)=>{ae&&q(we)},[q,ae,i]),Ce=u.useCallback((we=i)=>{ae&&te(we)},[te,ae,i]),xe=$B(he,Ce);wS(ne,"disabled",xe.stop,xe.isSpinning),wS(ie,"disabled",xe.stop,xe.isSpinning);const de=u.useCallback(we=>{if(we.nativeEvent.isComposing)return;const Nt=me(we.currentTarget.value);F(oe(Nt)),W.current={start:we.currentTarget.selectionStart,end:we.currentTarget.selectionEnd}},[F,oe,me]),Ne=u.useCallback(we=>{var xt,Nt,Lt;B==null||B(we),W.current&&(we.target.selectionStart=(Nt=W.current.start)!=null?Nt:(xt=we.currentTarget.value)==null?void 0:xt.length,we.currentTarget.selectionEnd=(Lt=W.current.end)!=null?Lt:we.currentTarget.selectionStart)},[B]),De=u.useCallback(we=>{if(we.nativeEvent.isComposing)return;zB(we,V)||we.preventDefault();const xt=Xe(we)*i,Nt=we.key,$e={ArrowUp:()=>he(xt),ArrowDown:()=>Ce(xt),Home:()=>F(o),End:()=>F(s)}[Nt];$e&&(we.preventDefault(),$e(we))},[V,i,he,Ce,F,o,s]),Xe=we=>{let xt=1;return(we.metaKey||we.ctrlKey)&&(xt=.1),we.shiftKey&&(xt=10),xt},It=u.useMemo(()=>{const we=L==null?void 0:L(X.value);if(we!=null)return we;const xt=X.value.toString();return xt||void 0},[X.value,L]),lt=u.useCallback(()=>{let we=X.value;if(X.value==="")return;/^[eE]/.test(X.value.toString())?X.setValue(""):(X.valueAsNumbers&&(we=s),X.cast(we))},[X,s,o]),on=u.useCallback(()=>{ce(!1),n&<()},[n,ce,lt]),gt=u.useCallback(()=>{t&&requestAnimationFrame(()=>{var we;(we=U.current)==null||we.focus()})},[t]),bt=u.useCallback(we=>{we.preventDefault(),xe.up(),gt()},[gt,xe]),ye=u.useCallback(we=>{we.preventDefault(),xe.down(),gt()},[gt,xe]);wl(()=>U.current,"wheel",we=>{var xt,Nt;const $e=((Nt=(xt=U.current)==null?void 0:xt.ownerDocument)!=null?Nt:document).activeElement===U.current;if(!b||!$e)return;we.preventDefault();const Ke=Xe(we)*i,vn=Math.sign(we.deltaY);vn===-1?he(Ke):vn===1&&Ce(Ke)},{passive:!1});const We=u.useCallback((we={},xt=null)=>{const Nt=f||r&&X.isAtMax;return{...we,ref:cn(xt,ne),role:"button",tabIndex:-1,onPointerDown:rt(we.onPointerDown,Lt=>{Lt.button!==0||Nt||bt(Lt)}),onPointerLeave:rt(we.onPointerLeave,xe.stop),onPointerUp:rt(we.onPointerUp,xe.stop),disabled:Nt,"aria-disabled":gs(Nt)}},[X.isAtMax,r,bt,xe.stop,f]),Et=u.useCallback((we={},xt=null)=>{const Nt=f||r&&X.isAtMin;return{...we,ref:cn(xt,ie),role:"button",tabIndex:-1,onPointerDown:rt(we.onPointerDown,Lt=>{Lt.button!==0||Nt||ye(Lt)}),onPointerLeave:rt(we.onPointerLeave,xe.stop),onPointerUp:rt(we.onPointerUp,xe.stop),disabled:Nt,"aria-disabled":gs(Nt)}},[X.isAtMin,r,ye,xe.stop,f]),zt=u.useCallback((we={},xt=null)=>{var Nt,Lt,$e,Ke;return{name:k,inputMode:v,type:"text",pattern:m,"aria-labelledby":I,"aria-label":_,"aria-describedby":j,id:y,disabled:f,...we,readOnly:(Nt=we.readOnly)!=null?Nt:c,"aria-readonly":(Lt=we.readOnly)!=null?Lt:c,"aria-required":($e=we.required)!=null?$e:p,required:(Ke=we.required)!=null?Ke:p,ref:cn(U,xt),value:fe(X.value),role:"spinbutton","aria-valuemin":o,"aria-valuemax":s,"aria-valuenow":Number.isNaN(X.valueAsNumber)?void 0:X.valueAsNumber,"aria-invalid":gs(h??X.isOutOfRange),"aria-valuetext":It,autoComplete:"off",autoCorrect:"off",onChange:rt(we.onChange,de),onKeyDown:rt(we.onKeyDown,De),onFocus:rt(we.onFocus,Ne,()=>ce(!0)),onBlur:rt(we.onBlur,G,on)}},[k,v,m,I,_,fe,j,y,f,p,c,h,X.value,X.valueAsNumber,X.isOutOfRange,o,s,It,de,De,Ne,G,on]);return{value:fe(X.value),valueAsNumber:X.valueAsNumber,isFocused:Y,isDisabled:f,isReadOnly:c,getIncrementButtonProps:We,getDecrementButtonProps:Et,getInputProps:zt,htmlProps:K}}var[HB,ag]=Dn({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[WB,Yx]=Dn({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),ig=Te(function(t,n){const r=Vr("NumberInput",t),o=Jn(t),s=wx(o),{htmlProps:i,...c}=BB(s),f=u.useMemo(()=>c,[c]);return a.jsx(WB,{value:f,children:a.jsx(HB,{value:r,children:a.jsx(Me.div,{...i,ref:n,className:_t("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});ig.displayName="NumberInput";var lg=Te(function(t,n){const r=ag();return a.jsx(Me.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}})});lg.displayName="NumberInputStepper";var cg=Te(function(t,n){const{getInputProps:r}=Yx(),o=r(t,n),s=ag();return a.jsx(Me.input,{...o,className:_t("chakra-numberinput__field",t.className),__css:{width:"100%",...s.field}})});cg.displayName="NumberInputField";var vP=Me("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),ug=Te(function(t,n){var r;const o=ag(),{getDecrementButtonProps:s}=Yx(),i=s(t,n);return a.jsx(vP,{...i,__css:o.stepper,children:(r=t.children)!=null?r:a.jsx(DB,{})})});ug.displayName="NumberDecrementStepper";var dg=Te(function(t,n){var r;const{getIncrementButtonProps:o}=Yx(),s=o(t,n),i=ag();return a.jsx(vP,{...s,__css:i.stepper,children:(r=t.children)!=null?r:a.jsx(AB,{})})});dg.displayName="NumberIncrementStepper";var[VB,Eu]=Dn({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[UB,Jx]=Dn({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Zx(e){const t=u.Children.only(e.children),{getTriggerProps:n}=Eu();return u.cloneElement(t,n(t.props,t.ref))}Zx.displayName="PopoverTrigger";var xc={click:"click",hover:"hover"};function GB(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:i=!0,arrowSize:c,arrowShadowColor:f,trigger:p=xc.click,openDelay:h=200,closeDelay:m=200,isLazy:v,lazyBehavior:b="unmount",computePositionOnMount:y,...x}=e,{isOpen:C,onClose:k,onOpen:j,onToggle:_}=Kx(e),I=u.useRef(null),O=u.useRef(null),E=u.useRef(null),M=u.useRef(!1),R=u.useRef(!1);C&&(R.current=!0);const[A,D]=u.useState(!1),[T,K]=u.useState(!1),B=u.useId(),G=o??B,[Q,V,L,X]=["popover-trigger","popover-content","popover-header","popover-body"].map(de=>`${de}-${G}`),{referenceRef:F,getArrowProps:q,getPopperProps:te,getArrowInnerProps:Y,forceUpdate:ce}=qx({...x,enabled:C||!!y}),ae=nP({isOpen:C,ref:E});Q3({enabled:C,ref:O}),U5(E,{focusRef:O,visible:C,shouldFocus:s&&p===xc.click}),ZL(E,{focusRef:r,visible:C,shouldFocus:i&&p===xc.click});const U=Xx({wasSelected:R.current,enabled:v,mode:b,isSelected:ae.present}),W=u.useCallback((de={},Ne=null)=>{const De={...de,style:{...de.style,transformOrigin:Ir.transformOrigin.varRef,[Ir.arrowSize.var]:c?`${c}px`:void 0,[Ir.arrowShadowColor.var]:f},ref:cn(E,Ne),children:U?de.children:null,id:V,tabIndex:-1,role:"dialog",onKeyDown:rt(de.onKeyDown,Xe=>{n&&Xe.key==="Escape"&&k()}),onBlur:rt(de.onBlur,Xe=>{const It=SS(Xe),lt=Ev(E.current,It),on=Ev(O.current,It);C&&t&&(!lt&&!on)&&k()}),"aria-labelledby":A?L:void 0,"aria-describedby":T?X:void 0};return p===xc.hover&&(De.role="tooltip",De.onMouseEnter=rt(de.onMouseEnter,()=>{M.current=!0}),De.onMouseLeave=rt(de.onMouseLeave,Xe=>{Xe.nativeEvent.relatedTarget!==null&&(M.current=!1,setTimeout(()=>k(),m))})),De},[U,V,A,L,T,X,p,n,k,C,t,m,f,c]),ne=u.useCallback((de={},Ne=null)=>te({...de,style:{visibility:C?"visible":"hidden",...de.style}},Ne),[C,te]),ie=u.useCallback((de,Ne=null)=>({...de,ref:cn(Ne,I,F)}),[I,F]),oe=u.useRef(),me=u.useRef(),fe=u.useCallback(de=>{I.current==null&&F(de)},[F]),he=u.useCallback((de={},Ne=null)=>{const De={...de,ref:cn(O,Ne,fe),id:Q,"aria-haspopup":"dialog","aria-expanded":C,"aria-controls":V};return p===xc.click&&(De.onClick=rt(de.onClick,_)),p===xc.hover&&(De.onFocus=rt(de.onFocus,()=>{oe.current===void 0&&j()}),De.onBlur=rt(de.onBlur,Xe=>{const It=SS(Xe),lt=!Ev(E.current,It);C&&t&<&&k()}),De.onKeyDown=rt(de.onKeyDown,Xe=>{Xe.key==="Escape"&&k()}),De.onMouseEnter=rt(de.onMouseEnter,()=>{M.current=!0,oe.current=window.setTimeout(()=>j(),h)}),De.onMouseLeave=rt(de.onMouseLeave,()=>{M.current=!1,oe.current&&(clearTimeout(oe.current),oe.current=void 0),me.current=window.setTimeout(()=>{M.current===!1&&k()},m)})),De},[Q,C,V,p,fe,_,j,t,k,h,m]);u.useEffect(()=>()=>{oe.current&&clearTimeout(oe.current),me.current&&clearTimeout(me.current)},[]);const Ce=u.useCallback((de={},Ne=null)=>({...de,id:L,ref:cn(Ne,De=>{D(!!De)})}),[L]),xe=u.useCallback((de={},Ne=null)=>({...de,id:X,ref:cn(Ne,De=>{K(!!De)})}),[X]);return{forceUpdate:ce,isOpen:C,onAnimationComplete:ae.onComplete,onClose:k,getAnchorProps:ie,getArrowProps:q,getArrowInnerProps:Y,getPopoverPositionerProps:ne,getPopoverProps:W,getTriggerProps:he,getHeaderProps:Ce,getBodyProps:xe}}function Ev(e,t){return e===t||(e==null?void 0:e.contains(t))}function SS(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function fg(e){const t=Vr("Popover",e),{children:n,...r}=Jn(e),o=sf(),s=GB({...r,direction:o.direction});return a.jsx(VB,{value:s,children:a.jsx(UB,{value:t,children:Zb(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}fg.displayName="Popover";function bP(e){const t=u.Children.only(e.children),{getAnchorProps:n}=Eu();return u.cloneElement(t,n(t.props,t.ref))}bP.displayName="PopoverAnchor";var Ov=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function xP(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:i,shadowColor:c}=e,{getArrowProps:f,getArrowInnerProps:p}=Eu(),h=Jx(),m=(t=n??r)!=null?t:o,v=s??i;return a.jsx(Me.div,{...f(),className:"chakra-popover__arrow-positioner",children:a.jsx(Me.div,{className:_t("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":Ov("colors",c),"--popper-arrow-bg":Ov("colors",m),"--popper-arrow-shadow":Ov("shadows",v),...h.arrow}})})}xP.displayName="PopoverArrow";var ey=Te(function(t,n){const{getBodyProps:r}=Eu(),o=Jx();return a.jsx(Me.div,{...r(t,n),className:_t("chakra-popover__body",t.className),__css:o.body})});ey.displayName="PopoverBody";function qB(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var KB={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]}}},XB=Me(yr.section),yP=Te(function(t,n){const{variants:r=KB,...o}=t,{isOpen:s}=Eu();return a.jsx(XB,{ref:n,variants:qB(r),initial:!1,animate:s?"enter":"exit",...o})});yP.displayName="PopoverTransition";var pg=Te(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:i,getPopoverPositionerProps:c,onAnimationComplete:f}=Eu(),p=Jx(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return a.jsx(Me.div,{...c(r),__css:p.popper,className:"chakra-popover__popper",children:a.jsx(yP,{...o,...i(s,n),onAnimationComplete:Lm(f,s.onAnimationComplete),className:_t("chakra-popover__content",t.className),__css:h})})});pg.displayName="PopoverContent";var Y1=e=>a.jsx(Me.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});Y1.displayName="Circle";function QB(e,t,n){return(e-t)*100/(n-t)}var YB=ui({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),JB=ui({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),ZB=ui({"0%":{left:"-40%"},"100%":{left:"100%"}}),eH=ui({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function wP(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:i,role:c="progressbar"}=e,f=QB(t,n,r);return{bind:{"data-indeterminate":i?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":i?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof s=="function"?s(t,f):o})(),role:c},percent:f,value:t}}var CP=e=>{const{size:t,isIndeterminate:n,...r}=e;return a.jsx(Me.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${JB} 2s linear infinite`:void 0},...r})};CP.displayName="Shape";var J1=Te((e,t)=>{var n;const{size:r="48px",max:o=100,min:s=0,valueText:i,getValueText:c,value:f,capIsRound:p,children:h,thickness:m="10px",color:v="#0078d4",trackColor:b="#edebe9",isIndeterminate:y,...x}=e,C=wP({min:s,max:o,value:f,valueText:i,getValueText:c,isIndeterminate:y}),k=y?void 0:((n=C.percent)!=null?n:0)*2.64,j=k==null?void 0:`${k} ${264-k}`,_=y?{css:{animation:`${YB} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:j,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},I={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:r};return a.jsxs(Me.div,{ref:t,className:"chakra-progress",...C.bind,...x,__css:I,children:[a.jsxs(CP,{size:r,isIndeterminate:y,children:[a.jsx(Y1,{stroke:b,strokeWidth:m,className:"chakra-progress__track"}),a.jsx(Y1,{stroke:v,strokeWidth:m,className:"chakra-progress__indicator",strokeLinecap:p?"round":void 0,opacity:C.value===0&&!y?0:void 0,..._})]}),h]})});J1.displayName="CircularProgress";var[tH,nH]=Dn({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),rH=Te((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:i,...c}=e,f=wP({value:o,min:n,max:r,isIndeterminate:s,role:i}),h={height:"100%",...nH().filledTrack};return a.jsx(Me.div,{ref:t,style:{width:`${f.percent}%`,...c.style},...f.bind,...c,__css:h})}),SP=Te((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:i,isAnimated:c,children:f,borderRadius:p,isIndeterminate:h,"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,title:y,role:x,...C}=Jn(e),k=Vr("Progress",e),j=p??((n=k.track)==null?void 0:n.borderRadius),_={animation:`${eH} 1s linear infinite`},E={...!h&&i&&c&&_,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${ZB} 1s ease infinite normal none running`}},M={overflow:"hidden",position:"relative",...k.track};return a.jsx(Me.div,{ref:t,borderRadius:j,__css:M,...C,children:a.jsxs(tH,{value:k,children:[a.jsx(rH,{"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,min:o,max:s,value:r,isIndeterminate:h,css:E,borderRadius:j,title:y,role:x}),f]})})});SP.displayName="Progress";function oH(e){return e&&y1(e)&&y1(e.target)}function sH(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:i,isNative:c,...f}=e,[p,h]=u.useState(r||""),m=typeof n<"u",v=m?n:p,b=u.useRef(null),y=u.useCallback(()=>{const O=b.current;if(!O)return;let E="input:not(:disabled):checked";const M=O.querySelector(E);if(M){M.focus();return}E="input:not(:disabled)";const R=O.querySelector(E);R==null||R.focus()},[]),C=`radio-${u.useId()}`,k=o||C,j=u.useCallback(O=>{const E=oH(O)?O.target.value:O;m||h(E),t==null||t(String(E))},[t,m]),_=u.useCallback((O={},E=null)=>({...O,ref:cn(E,b),role:"radiogroup"}),[]),I=u.useCallback((O={},E=null)=>({...O,ref:E,name:k,[c?"checked":"isChecked"]:v!=null?O.value===v:void 0,onChange(R){j(R)},"data-radiogroup":!0}),[c,k,j,v]);return{getRootProps:_,getRadioProps:I,name:k,ref:b,focus:y,setValue:h,value:v,onChange:j,isDisabled:s,isFocusable:i,htmlProps:f}}var[aH,kP]=Dn({name:"RadioGroupContext",strict:!1}),Ah=Te((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:i,isDisabled:c,isFocusable:f,...p}=e,{value:h,onChange:m,getRootProps:v,name:b,htmlProps:y}=sH(p),x=u.useMemo(()=>({name:b,size:r,onChange:m,colorScheme:n,value:h,variant:o,isDisabled:c,isFocusable:f}),[b,r,m,n,h,o,c,f]);return a.jsx(aH,{value:x,children:a.jsx(Me.div,{...v(y,t),className:_t("chakra-radio-group",i),children:s})})});Ah.displayName="RadioGroup";var iH={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function lH(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:i,onChange:c,isInvalid:f,name:p,value:h,id:m,"data-radiogroup":v,"aria-describedby":b,...y}=e,x=`radio-${u.useId()}`,C=hf(),j=!!kP()||!!v;let I=!!C&&!j?C.id:x;I=m??I;const O=o??(C==null?void 0:C.isDisabled),E=s??(C==null?void 0:C.isReadOnly),M=i??(C==null?void 0:C.isRequired),R=f??(C==null?void 0:C.isInvalid),[A,D]=u.useState(!1),[T,K]=u.useState(!1),[B,G]=u.useState(!1),[Q,V]=u.useState(!1),[L,X]=u.useState(!!t),F=typeof n<"u",q=F?n:L;u.useEffect(()=>W3(D),[]);const te=u.useCallback(fe=>{if(E||O){fe.preventDefault();return}F||X(fe.target.checked),c==null||c(fe)},[F,O,E,c]),Y=u.useCallback(fe=>{fe.key===" "&&V(!0)},[V]),ce=u.useCallback(fe=>{fe.key===" "&&V(!1)},[V]),ae=u.useCallback((fe={},he=null)=>({...fe,ref:he,"data-active":Ht(Q),"data-hover":Ht(B),"data-disabled":Ht(O),"data-invalid":Ht(R),"data-checked":Ht(q),"data-focus":Ht(T),"data-focus-visible":Ht(T&&A),"data-readonly":Ht(E),"aria-hidden":!0,onMouseDown:rt(fe.onMouseDown,()=>V(!0)),onMouseUp:rt(fe.onMouseUp,()=>V(!1)),onMouseEnter:rt(fe.onMouseEnter,()=>G(!0)),onMouseLeave:rt(fe.onMouseLeave,()=>G(!1))}),[Q,B,O,R,q,T,E,A]),{onFocus:U,onBlur:W}=C??{},ne=u.useCallback((fe={},he=null)=>{const Ce=O&&!r;return{...fe,id:I,ref:he,type:"radio",name:p,value:h,onChange:rt(fe.onChange,te),onBlur:rt(W,fe.onBlur,()=>K(!1)),onFocus:rt(U,fe.onFocus,()=>K(!0)),onKeyDown:rt(fe.onKeyDown,Y),onKeyUp:rt(fe.onKeyUp,ce),checked:q,disabled:Ce,readOnly:E,required:M,"aria-invalid":gs(R),"aria-disabled":gs(Ce),"aria-required":gs(M),"data-readonly":Ht(E),"aria-describedby":b,style:iH}},[O,r,I,p,h,te,W,U,Y,ce,q,E,M,R,b]);return{state:{isInvalid:R,isFocused:T,isChecked:q,isActive:Q,isHovered:B,isDisabled:O,isReadOnly:E,isRequired:M},getCheckboxProps:ae,getRadioProps:ae,getInputProps:ne,getLabelProps:(fe={},he=null)=>({...fe,ref:he,onMouseDown:rt(fe.onMouseDown,cH),"data-disabled":Ht(O),"data-checked":Ht(q),"data-invalid":Ht(R)}),getRootProps:(fe,he=null)=>({...fe,ref:he,"data-disabled":Ht(O),"data-checked":Ht(q),"data-invalid":Ht(R)}),htmlProps:y}}function cH(e){e.preventDefault(),e.stopPropagation()}function uH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var Va=Te((e,t)=>{var n;const r=kP(),{onChange:o,value:s}=e,i=Vr("Radio",{...r,...e}),c=Jn(e),{spacing:f="0.5rem",children:p,isDisabled:h=r==null?void 0:r.isDisabled,isFocusable:m=r==null?void 0:r.isFocusable,inputProps:v,...b}=c;let y=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(y=r.value===s);let x=o;r!=null&&r.onChange&&s!=null&&(x=Lm(r.onChange,o));const C=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:k,getCheckboxProps:j,getLabelProps:_,getRootProps:I,htmlProps:O}=lH({...b,isChecked:y,isFocusable:m,isDisabled:h,onChange:x,name:C}),[E,M]=uH(O,z_),R=j(M),A=k(v,t),D=_(),T=Object.assign({},E,I()),K={display:"inline-flex",alignItems:"center",verticalAlign:"top",cursor:"pointer",position:"relative",...i.container},B={display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,...i.control},G={userSelect:"none",marginStart:f,...i.label};return a.jsxs(Me.label,{className:"chakra-radio",...T,__css:K,children:[a.jsx("input",{className:"chakra-radio__input",...A}),a.jsx(Me.span,{className:"chakra-radio__control",...R,__css:B}),p&&a.jsx(Me.span,{className:"chakra-radio__label",...D,__css:G,children:p})]})});Va.displayName="Radio";var jP=Te(function(t,n){const{children:r,placeholder:o,className:s,...i}=t;return a.jsxs(Me.select,{...i,ref:n,className:_t("chakra-select",s),children:[o&&a.jsx("option",{value:"",children:o}),r]})});jP.displayName="SelectField";function dH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var _P=Te((e,t)=>{var n;const r=Vr("Select",e),{rootProps:o,placeholder:s,icon:i,color:c,height:f,h:p,minH:h,minHeight:m,iconColor:v,iconSize:b,...y}=Jn(e),[x,C]=dH(y,z_),k=yx(C),j={width:"100%",height:"fit-content",position:"relative",color:c},_={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return a.jsxs(Me.div,{className:"chakra-select__wrapper",__css:j,...x,...o,children:[a.jsx(jP,{ref:t,height:p??f,minH:h??m,placeholder:s,...k,__css:_,children:e.children}),a.jsx(PP,{"data-disabled":Ht(k.disabled),...(v||c)&&{color:v||c},__css:r.icon,...b&&{fontSize:b},children:i})]})});_P.displayName="Select";var fH=e=>a.jsx("svg",{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),pH=Me("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),PP=e=>{const{children:t=a.jsx(fH,{}),...n}=e,r=u.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return a.jsx(pH,{...n,className:"chakra-select__icon-wrapper",children:u.isValidElement(t)?r:null})};PP.displayName="SelectIcon";function hH(){const e=u.useRef(!0);return u.useEffect(()=>{e.current=!1},[]),e.current}function mH(e){const t=u.useRef();return u.useEffect(()=>{t.current=e},[e]),t.current}var gH=Me("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),Z1=B_("skeleton-start-color"),eb=B_("skeleton-end-color"),vH=ui({from:{opacity:0},to:{opacity:1}}),bH=ui({from:{borderColor:Z1.reference,background:Z1.reference},to:{borderColor:eb.reference,background:eb.reference}}),hg=Te((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=Xi("Skeleton",n),o=hH(),{startColor:s="",endColor:i="",isLoaded:c,fadeDuration:f,speed:p,className:h,fitContent:m,...v}=Jn(n),[b,y]=xa("colors",[s,i]),x=mH(c),C=_t("chakra-skeleton",h),k={...b&&{[Z1.variable]:b},...y&&{[eb.variable]:y}};if(c){const j=o||x?"none":`${vH} ${f}s`;return a.jsx(Me.div,{ref:t,className:C,__css:{animation:j},...v})}return a.jsx(gH,{ref:t,className:C,...v,__css:{width:m?"fit-content":void 0,...r,...k,_dark:{...r._dark,...k},animation:`${p}s linear infinite alternate ${bH}`}})});hg.displayName="Skeleton";var us=e=>e?"":void 0,qc=e=>e?!0:void 0,Ji=(...e)=>e.filter(Boolean).join(" ");function Kc(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function xH(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 bd(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var lh={width:0,height:0},Ip=e=>e||lh;function IP(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:o}=e,s=x=>{var C;const k=(C=r[x])!=null?C:lh;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...bd({orientation:t,vertical:{bottom:`calc(${n[x]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[x]}% - ${k.width/2}px)`}})}},i=t==="vertical"?r.reduce((x,C)=>Ip(x).height>Ip(C).height?x:C,lh):r.reduce((x,C)=>Ip(x).width>Ip(C).width?x:C,lh),c={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...bd({orientation:t,vertical:i?{paddingLeft:i.width/2,paddingRight:i.width/2}:{},horizontal:i?{paddingTop:i.height/2,paddingBottom:i.height/2}:{}})},f={position:"absolute",...bd({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},p=n.length===1,h=[0,o?100-n[0]:n[0]],m=p?h:n;let v=m[0];!p&&o&&(v=100-v);const b=Math.abs(m[m.length-1]-m[0]),y={...f,...bd({orientation:t,vertical:o?{height:`${b}%`,top:`${v}%`}:{height:`${b}%`,bottom:`${v}%`},horizontal:o?{width:`${b}%`,right:`${v}%`}:{width:`${b}%`,left:`${v}%`}})};return{trackStyle:f,innerTrackStyle:y,rootStyle:c,getThumbStyle:s}}function EP(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function yH(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function wH(e){const t=SH(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function OP(e){return!!e.touches}function CH(e){return OP(e)&&e.touches.length>1}function SH(e){var t;return(t=e.view)!=null?t:window}function kH(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function jH(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function MP(e,t="page"){return OP(e)?kH(e,t):jH(e,t)}function _H(e){return t=>{const n=wH(t);(!n||n&&t.button===0)&&e(t)}}function PH(e,t=!1){function n(o){e(o,{point:MP(o)})}return t?_H(n):n}function ch(e,t,n,r){return yH(e,t,PH(n,t==="pointerdown"),r)}var IH=Object.defineProperty,EH=(e,t,n)=>t in e?IH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ms=(e,t,n)=>(EH(e,typeof t!="symbol"?t+"":t,n),n),OH=class{constructor(e,t,n){Ms(this,"history",[]),Ms(this,"startEvent",null),Ms(this,"lastEvent",null),Ms(this,"lastEventInfo",null),Ms(this,"handlers",{}),Ms(this,"removeListeners",()=>{}),Ms(this,"threshold",3),Ms(this,"win"),Ms(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const c=Mv(this.lastEventInfo,this.history),f=this.startEvent!==null,p=AH(c.offset,{x:0,y:0})>=this.threshold;if(!f&&!p)return;const{timestamp:h}=FC();this.history.push({...c.point,timestamp:h});const{onStart:m,onMove:v}=this.handlers;f||(m==null||m(this.lastEvent,c),this.startEvent=this.lastEvent),v==null||v(this.lastEvent,c)}),Ms(this,"onPointerMove",(c,f)=>{this.lastEvent=c,this.lastEventInfo=f,J9.update(this.updatePoint,!0)}),Ms(this,"onPointerUp",(c,f)=>{const p=Mv(f,this.history),{onEnd:h,onSessionEnd:m}=this.handlers;m==null||m(c,p),this.end(),!(!h||!this.startEvent)&&(h==null||h(c,p))});var r;if(this.win=(r=e.view)!=null?r:window,CH(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const o={point:MP(e)},{timestamp:s}=FC();this.history=[{...o.point,timestamp:s}];const{onSessionStart:i}=t;i==null||i(e,Mv(o,this.history)),this.removeListeners=DH(ch(this.win,"pointermove",this.onPointerMove),ch(this.win,"pointerup",this.onPointerUp),ch(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),Z9.update(this.updatePoint)}};function kS(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Mv(e,t){return{point:e.point,delta:kS(e.point,t[t.length-1]),offset:kS(e.point,t[0]),velocity:RH(t,.1)}}var MH=e=>e*1e3;function RH(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=e[e.length-1];for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>MH(t)));)n--;if(!r)return{x:0,y:0};const s=(o.timestamp-r.timestamp)/1e3;if(s===0)return{x:0,y:0};const i={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function DH(...e){return t=>e.reduce((n,r)=>r(n),t)}function Rv(e,t){return Math.abs(e-t)}function jS(e){return"x"in e&&"y"in e}function AH(e,t){if(typeof e=="number"&&typeof t=="number")return Rv(e,t);if(jS(e)&&jS(t)){const n=Rv(e.x,t.x),r=Rv(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function RP(e){const t=u.useRef(null);return t.current=e,t}function DP(e,t){const{onPan:n,onPanStart:r,onPanEnd:o,onPanSessionStart:s,onPanSessionEnd:i,threshold:c}=t,f=!!(n||r||o||s||i),p=u.useRef(null),h=RP({onSessionStart:s,onSessionEnd:i,onStart:r,onMove:n,onEnd(m,v){p.current=null,o==null||o(m,v)}});u.useEffect(()=>{var m;(m=p.current)==null||m.updateHandlers(h.current)}),u.useEffect(()=>{const m=e.current;if(!m||!f)return;function v(b){p.current=new OH(b,h.current,c)}return ch(m,"pointerdown",v)},[e,f,h,c]),u.useEffect(()=>()=>{var m;(m=p.current)==null||m.end(),p.current=null},[])}function NH(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(o=>{if(!Array.isArray(o)||!o.length)return;const[s]=o;let i,c;if("borderBoxSize"in s){const f=s.borderBoxSize,p=Array.isArray(f)?f[0]:f;i=p.inlineSize,c=p.blockSize}else i=e.offsetWidth,c=e.offsetHeight;t({width:i,height:c})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var TH=globalThis!=null&&globalThis.document?u.useLayoutEffect:u.useEffect;function $H(e,t){var n,r;if(!e||!e.parentElement)return;const o=(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window,s=new o.MutationObserver(()=>{t()});return s.observe(e.parentElement,{childList:!0}),()=>{s.disconnect()}}function AP({getNodes:e,observeMutation:t=!0}){const[n,r]=u.useState([]),[o,s]=u.useState(0);return TH(()=>{const i=e(),c=i.map((f,p)=>NH(f,h=>{r(m=>[...m.slice(0,p),h,...m.slice(p+1)])}));if(t){const f=i[0];c.push($H(f,()=>{s(p=>p+1)}))}return()=>{c.forEach(f=>{f==null||f()})}},[o]),n}function LH(e){return typeof e=="object"&&e!==null&&"current"in e}function FH(e){const[t]=AP({observeMutation:!1,getNodes(){return[LH(e)?e.current:e]}});return t}function zH(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:i,direction:c="ltr",orientation:f="horizontal",id:p,isDisabled:h,isReadOnly:m,onChangeStart:v,onChangeEnd:b,step:y=1,getAriaValueText:x,"aria-valuetext":C,"aria-label":k,"aria-labelledby":j,name:_,focusThumbOnChange:I=!0,minStepsBetweenThumbs:O=0,...E}=e,M=sr(v),R=sr(b),A=sr(x),D=EP({isReversed:i,direction:c,orientation:f}),[T,K]=ku({value:o,defaultValue:s??[25,75],onChange:r});if(!Array.isArray(T))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof T}\``);const[B,G]=u.useState(!1),[Q,V]=u.useState(!1),[L,X]=u.useState(-1),F=!(h||m),q=u.useRef(T),te=T.map(_e=>Wc(_e,t,n)),Y=O*y,ce=BH(te,t,n,Y),ae=u.useRef({eventSource:null,value:[],valueBounds:[]});ae.current.value=te,ae.current.valueBounds=ce;const U=te.map(_e=>n-_e+t),ne=(D?U:te).map(_e=>Ih(_e,t,n)),ie=f==="vertical",oe=u.useRef(null),me=u.useRef(null),fe=AP({getNodes(){const _e=me.current,Ze=_e==null?void 0:_e.querySelectorAll("[role=slider]");return Ze?Array.from(Ze):[]}}),he=u.useId(),xe=xH(p??he),de=u.useCallback(_e=>{var Ze,Qe;if(!oe.current)return;ae.current.eventSource="pointer";const ct=oe.current.getBoundingClientRect(),{clientX:Ft,clientY:ir}=(Qe=(Ze=_e.touches)==null?void 0:Ze[0])!=null?Qe:_e,pn=ie?ct.bottom-ir:Ft-ct.left,ln=ie?ct.height:ct.width;let Ur=pn/ln;return D&&(Ur=1-Ur),U3(Ur,t,n)},[ie,D,n,t]),Ne=(n-t)/10,De=y||(n-t)/100,Xe=u.useMemo(()=>({setValueAtIndex(_e,Ze){if(!F)return;const Qe=ae.current.valueBounds[_e];Ze=parseFloat(F1(Ze,Qe.min,De)),Ze=Wc(Ze,Qe.min,Qe.max);const ct=[...ae.current.value];ct[_e]=Ze,K(ct)},setActiveIndex:X,stepUp(_e,Ze=De){const Qe=ae.current.value[_e],ct=D?Qe-Ze:Qe+Ze;Xe.setValueAtIndex(_e,ct)},stepDown(_e,Ze=De){const Qe=ae.current.value[_e],ct=D?Qe+Ze:Qe-Ze;Xe.setValueAtIndex(_e,ct)},reset(){K(q.current)}}),[De,D,K,F]),It=u.useCallback(_e=>{const Ze=_e.key,ct={ArrowRight:()=>Xe.stepUp(L),ArrowUp:()=>Xe.stepUp(L),ArrowLeft:()=>Xe.stepDown(L),ArrowDown:()=>Xe.stepDown(L),PageUp:()=>Xe.stepUp(L,Ne),PageDown:()=>Xe.stepDown(L,Ne),Home:()=>{const{min:Ft}=ce[L];Xe.setValueAtIndex(L,Ft)},End:()=>{const{max:Ft}=ce[L];Xe.setValueAtIndex(L,Ft)}}[Ze];ct&&(_e.preventDefault(),_e.stopPropagation(),ct(_e),ae.current.eventSource="keyboard")},[Xe,L,Ne,ce]),{getThumbStyle:lt,rootStyle:on,trackStyle:gt,innerTrackStyle:bt}=u.useMemo(()=>IP({isReversed:D,orientation:f,thumbRects:fe,thumbPercents:ne}),[D,f,ne,fe]),ye=u.useCallback(_e=>{var Ze;const Qe=_e??L;if(Qe!==-1&&I){const ct=xe.getThumb(Qe),Ft=(Ze=me.current)==null?void 0:Ze.ownerDocument.getElementById(ct);Ft&&setTimeout(()=>Ft.focus())}},[I,L,xe]);fi(()=>{ae.current.eventSource==="keyboard"&&(R==null||R(ae.current.value))},[te,R]);const We=_e=>{const Ze=de(_e)||0,Qe=ae.current.value.map(ln=>Math.abs(ln-Ze)),ct=Math.min(...Qe);let Ft=Qe.indexOf(ct);const ir=Qe.filter(ln=>ln===ct);ir.length>1&&Ze>ae.current.value[Ft]&&(Ft=Ft+ir.length-1),X(Ft),Xe.setValueAtIndex(Ft,Ze),ye(Ft)},Et=_e=>{if(L==-1)return;const Ze=de(_e)||0;X(L),Xe.setValueAtIndex(L,Ze),ye(L)};DP(me,{onPanSessionStart(_e){F&&(G(!0),We(_e),M==null||M(ae.current.value))},onPanSessionEnd(){F&&(G(!1),R==null||R(ae.current.value))},onPan(_e){F&&Et(_e)}});const zt=u.useCallback((_e={},Ze=null)=>({..._e,...E,id:xe.root,ref:cn(Ze,me),tabIndex:-1,"aria-disabled":qc(h),"data-focused":us(Q),style:{..._e.style,...on}}),[E,h,Q,on,xe]),we=u.useCallback((_e={},Ze=null)=>({..._e,ref:cn(Ze,oe),id:xe.track,"data-disabled":us(h),style:{..._e.style,...gt}}),[h,gt,xe]),xt=u.useCallback((_e={},Ze=null)=>({..._e,ref:Ze,id:xe.innerTrack,style:{..._e.style,...bt}}),[bt,xe]),Nt=u.useCallback((_e,Ze=null)=>{var Qe;const{index:ct,...Ft}=_e,ir=te[ct];if(ir==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${ct}\`. The \`value\` or \`defaultValue\` length is : ${te.length}`);const pn=ce[ct];return{...Ft,ref:Ze,role:"slider",tabIndex:F?0:void 0,id:xe.getThumb(ct),"data-active":us(B&&L===ct),"aria-valuetext":(Qe=A==null?void 0:A(ir))!=null?Qe:C==null?void 0:C[ct],"aria-valuemin":pn.min,"aria-valuemax":pn.max,"aria-valuenow":ir,"aria-orientation":f,"aria-disabled":qc(h),"aria-readonly":qc(m),"aria-label":k==null?void 0:k[ct],"aria-labelledby":k!=null&&k[ct]||j==null?void 0:j[ct],style:{..._e.style,...lt(ct)},onKeyDown:Kc(_e.onKeyDown,It),onFocus:Kc(_e.onFocus,()=>{V(!0),X(ct)}),onBlur:Kc(_e.onBlur,()=>{V(!1),X(-1)})}},[xe,te,ce,F,B,L,A,C,f,h,m,k,j,lt,It,V]),Lt=u.useCallback((_e={},Ze=null)=>({..._e,ref:Ze,id:xe.output,htmlFor:te.map((Qe,ct)=>xe.getThumb(ct)).join(" "),"aria-live":"off"}),[xe,te]),$e=u.useCallback((_e,Ze=null)=>{const{value:Qe,...ct}=_e,Ft=!(Qen),ir=Qe>=te[0]&&Qe<=te[te.length-1];let pn=Ih(Qe,t,n);pn=D?100-pn:pn;const ln={position:"absolute",pointerEvents:"none",...bd({orientation:f,vertical:{bottom:`${pn}%`},horizontal:{left:`${pn}%`}})};return{...ct,ref:Ze,id:xe.getMarker(_e.value),role:"presentation","aria-hidden":!0,"data-disabled":us(h),"data-invalid":us(!Ft),"data-highlighted":us(ir),style:{..._e.style,...ln}}},[h,D,n,t,f,te,xe]),Ke=u.useCallback((_e,Ze=null)=>{const{index:Qe,...ct}=_e;return{...ct,ref:Ze,id:xe.getInput(Qe),type:"hidden",value:te[Qe],name:Array.isArray(_)?_[Qe]:`${_}-${Qe}`}},[_,te,xe]);return{state:{value:te,isFocused:Q,isDragging:B,getThumbPercent:_e=>ne[_e],getThumbMinValue:_e=>ce[_e].min,getThumbMaxValue:_e=>ce[_e].max},actions:Xe,getRootProps:zt,getTrackProps:we,getInnerTrackProps:xt,getThumbProps:Nt,getMarkerProps:$e,getInputProps:Ke,getOutputProps:Lt}}function BH(e,t,n,r){return e.map((o,s)=>{const i=s===0?t:e[s-1]+r,c=s===e.length-1?n:e[s+1]-r;return{min:i,max:c}})}var[HH,mg]=Dn({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[WH,gg]=Dn({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),NP=Te(function(t,n){const r={orientation:"horizontal",...t},o=Vr("Slider",r),s=Jn(r),{direction:i}=sf();s.direction=i;const{getRootProps:c,...f}=zH(s),p=u.useMemo(()=>({...f,name:r.name}),[f,r.name]);return a.jsx(HH,{value:p,children:a.jsx(WH,{value:o,children:a.jsx(Me.div,{...c({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});NP.displayName="RangeSlider";var tb=Te(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=mg(),i=gg(),c=r(t,n);return a.jsxs(Me.div,{...c,className:Ji("chakra-slider__thumb",t.className),__css:i.thumb,children:[c.children,s&&a.jsx("input",{...o({index:t.index})})]})});tb.displayName="RangeSliderThumb";var TP=Te(function(t,n){const{getTrackProps:r}=mg(),o=gg(),s=r(t,n);return a.jsx(Me.div,{...s,className:Ji("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});TP.displayName="RangeSliderTrack";var $P=Te(function(t,n){const{getInnerTrackProps:r}=mg(),o=gg(),s=r(t,n);return a.jsx(Me.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});$P.displayName="RangeSliderFilledTrack";var uh=Te(function(t,n){const{getMarkerProps:r}=mg(),o=gg(),s=r(t,n);return a.jsx(Me.div,{...s,className:Ji("chakra-slider__marker",t.className),__css:o.mark})});uh.displayName="RangeSliderMark";function VH(e){var t;const{min:n=0,max:r=100,onChange:o,value:s,defaultValue:i,isReversed:c,direction:f="ltr",orientation:p="horizontal",id:h,isDisabled:m,isReadOnly:v,onChangeStart:b,onChangeEnd:y,step:x=1,getAriaValueText:C,"aria-valuetext":k,"aria-label":j,"aria-labelledby":_,name:I,focusThumbOnChange:O=!0,...E}=e,M=sr(b),R=sr(y),A=sr(C),D=EP({isReversed:c,direction:f,orientation:p}),[T,K]=ku({value:s,defaultValue:i??GH(n,r),onChange:o}),[B,G]=u.useState(!1),[Q,V]=u.useState(!1),L=!(m||v),X=(r-n)/10,F=x||(r-n)/100,q=Wc(T,n,r),te=r-q+n,ce=Ih(D?te:q,n,r),ae=p==="vertical",U=RP({min:n,max:r,step:x,isDisabled:m,value:q,isInteractive:L,isReversed:D,isVertical:ae,eventSource:null,focusThumbOnChange:O,orientation:p}),W=u.useRef(null),ne=u.useRef(null),ie=u.useRef(null),oe=u.useId(),me=h??oe,[fe,he]=[`slider-thumb-${me}`,`slider-track-${me}`],Ce=u.useCallback($e=>{var Ke,vn;if(!W.current)return;const _e=U.current;_e.eventSource="pointer";const Ze=W.current.getBoundingClientRect(),{clientX:Qe,clientY:ct}=(vn=(Ke=$e.touches)==null?void 0:Ke[0])!=null?vn:$e,Ft=ae?Ze.bottom-ct:Qe-Ze.left,ir=ae?Ze.height:Ze.width;let pn=Ft/ir;D&&(pn=1-pn);let ln=U3(pn,_e.min,_e.max);return _e.step&&(ln=parseFloat(F1(ln,_e.min,_e.step))),ln=Wc(ln,_e.min,_e.max),ln},[ae,D,U]),xe=u.useCallback($e=>{const Ke=U.current;Ke.isInteractive&&($e=parseFloat(F1($e,Ke.min,F)),$e=Wc($e,Ke.min,Ke.max),K($e))},[F,K,U]),de=u.useMemo(()=>({stepUp($e=F){const Ke=D?q-$e:q+$e;xe(Ke)},stepDown($e=F){const Ke=D?q+$e:q-$e;xe(Ke)},reset(){xe(i||0)},stepTo($e){xe($e)}}),[xe,D,q,F,i]),Ne=u.useCallback($e=>{const Ke=U.current,_e={ArrowRight:()=>de.stepUp(),ArrowUp:()=>de.stepUp(),ArrowLeft:()=>de.stepDown(),ArrowDown:()=>de.stepDown(),PageUp:()=>de.stepUp(X),PageDown:()=>de.stepDown(X),Home:()=>xe(Ke.min),End:()=>xe(Ke.max)}[$e.key];_e&&($e.preventDefault(),$e.stopPropagation(),_e($e),Ke.eventSource="keyboard")},[de,xe,X,U]),De=(t=A==null?void 0:A(q))!=null?t:k,Xe=FH(ne),{getThumbStyle:It,rootStyle:lt,trackStyle:on,innerTrackStyle:gt}=u.useMemo(()=>{const $e=U.current,Ke=Xe??{width:0,height:0};return IP({isReversed:D,orientation:$e.orientation,thumbRects:[Ke],thumbPercents:[ce]})},[D,Xe,ce,U]),bt=u.useCallback(()=>{U.current.focusThumbOnChange&&setTimeout(()=>{var Ke;return(Ke=ne.current)==null?void 0:Ke.focus()})},[U]);fi(()=>{const $e=U.current;bt(),$e.eventSource==="keyboard"&&(R==null||R($e.value))},[q,R]);function ye($e){const Ke=Ce($e);Ke!=null&&Ke!==U.current.value&&K(Ke)}DP(ie,{onPanSessionStart($e){const Ke=U.current;Ke.isInteractive&&(G(!0),bt(),ye($e),M==null||M(Ke.value))},onPanSessionEnd(){const $e=U.current;$e.isInteractive&&(G(!1),R==null||R($e.value))},onPan($e){U.current.isInteractive&&ye($e)}});const We=u.useCallback(($e={},Ke=null)=>({...$e,...E,ref:cn(Ke,ie),tabIndex:-1,"aria-disabled":qc(m),"data-focused":us(Q),style:{...$e.style,...lt}}),[E,m,Q,lt]),Et=u.useCallback(($e={},Ke=null)=>({...$e,ref:cn(Ke,W),id:he,"data-disabled":us(m),style:{...$e.style,...on}}),[m,he,on]),zt=u.useCallback(($e={},Ke=null)=>({...$e,ref:Ke,style:{...$e.style,...gt}}),[gt]),we=u.useCallback(($e={},Ke=null)=>({...$e,ref:cn(Ke,ne),role:"slider",tabIndex:L?0:void 0,id:fe,"data-active":us(B),"aria-valuetext":De,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":q,"aria-orientation":p,"aria-disabled":qc(m),"aria-readonly":qc(v),"aria-label":j,"aria-labelledby":j?void 0:_,style:{...$e.style,...It(0)},onKeyDown:Kc($e.onKeyDown,Ne),onFocus:Kc($e.onFocus,()=>V(!0)),onBlur:Kc($e.onBlur,()=>V(!1))}),[L,fe,B,De,n,r,q,p,m,v,j,_,It,Ne]),xt=u.useCallback(($e,Ke=null)=>{const vn=!($e.valuer),_e=q>=$e.value,Ze=Ih($e.value,n,r),Qe={position:"absolute",pointerEvents:"none",...UH({orientation:p,vertical:{bottom:D?`${100-Ze}%`:`${Ze}%`},horizontal:{left:D?`${100-Ze}%`:`${Ze}%`}})};return{...$e,ref:Ke,role:"presentation","aria-hidden":!0,"data-disabled":us(m),"data-invalid":us(!vn),"data-highlighted":us(_e),style:{...$e.style,...Qe}}},[m,D,r,n,p,q]),Nt=u.useCallback(($e={},Ke=null)=>({...$e,ref:Ke,type:"hidden",value:q,name:I}),[I,q]);return{state:{value:q,isFocused:Q,isDragging:B},actions:de,getRootProps:We,getTrackProps:Et,getInnerTrackProps:zt,getThumbProps:we,getMarkerProps:xt,getInputProps:Nt}}function UH(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function GH(e,t){return t"}),[KH,bg]=Dn({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),ty=Te((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},o=Vr("Slider",r),s=Jn(r),{direction:i}=sf();s.direction=i;const{getInputProps:c,getRootProps:f,...p}=VH(s),h=f(),m=c({},t);return a.jsx(qH,{value:p,children:a.jsx(KH,{value:o,children:a.jsxs(Me.div,{...h,className:Ji("chakra-slider",r.className),__css:o.container,children:[r.children,a.jsx("input",{...m})]})})})});ty.displayName="Slider";var ny=Te((e,t)=>{const{getThumbProps:n}=vg(),r=bg(),o=n(e,t);return a.jsx(Me.div,{...o,className:Ji("chakra-slider__thumb",e.className),__css:r.thumb})});ny.displayName="SliderThumb";var ry=Te((e,t)=>{const{getTrackProps:n}=vg(),r=bg(),o=n(e,t);return a.jsx(Me.div,{...o,className:Ji("chakra-slider__track",e.className),__css:r.track})});ry.displayName="SliderTrack";var oy=Te((e,t)=>{const{getInnerTrackProps:n}=vg(),r=bg(),o=n(e,t);return a.jsx(Me.div,{...o,className:Ji("chakra-slider__filled-track",e.className),__css:r.filledTrack})});oy.displayName="SliderFilledTrack";var Ic=Te((e,t)=>{const{getMarkerProps:n}=vg(),r=bg(),o=n(e,t);return a.jsx(Me.div,{...o,className:Ji("chakra-slider__marker",e.className),__css:r.mark})});Ic.displayName="SliderMark";var sy=Te(function(t,n){const r=Vr("Switch",t),{spacing:o="0.5rem",children:s,...i}=Jn(t),{getIndicatorProps:c,getInputProps:f,getCheckboxProps:p,getRootProps:h,getLabelProps:m}=V3(i),v=u.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),b=u.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),y=u.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return a.jsxs(Me.label,{...h(),className:_t("chakra-switch",t.className),__css:v,children:[a.jsx("input",{className:"chakra-switch__input",...f({},n)}),a.jsx(Me.span,{...p(),className:"chakra-switch__track",__css:b,children:a.jsx(Me.span,{__css:r.thumb,className:"chakra-switch__thumb",...c()})}),s&&a.jsx(Me.span,{className:"chakra-switch__label",...m(),__css:y,children:s})]})});sy.displayName="Switch";var[XH,QH,YH,JH]=vx();function ZH(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:i,lazyBehavior:c="unmount",orientation:f="horizontal",direction:p="ltr",...h}=e,[m,v]=u.useState(n??0),[b,y]=ku({defaultValue:n??0,value:o,onChange:r});u.useEffect(()=>{o!=null&&v(o)},[o]);const x=YH(),C=u.useId();return{id:`tabs-${(t=e.id)!=null?t:C}`,selectedIndex:b,focusedIndex:m,setSelectedIndex:y,setFocusedIndex:v,isManual:s,isLazy:i,lazyBehavior:c,orientation:f,descendants:x,direction:p,htmlProps:h}}var[eW,xg]=Dn({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function tW(e){const{focusedIndex:t,orientation:n,direction:r}=xg(),o=QH(),s=u.useCallback(i=>{const c=()=>{var j;const _=o.nextEnabled(t);_&&((j=_.node)==null||j.focus())},f=()=>{var j;const _=o.prevEnabled(t);_&&((j=_.node)==null||j.focus())},p=()=>{var j;const _=o.firstEnabled();_&&((j=_.node)==null||j.focus())},h=()=>{var j;const _=o.lastEnabled();_&&((j=_.node)==null||j.focus())},m=n==="horizontal",v=n==="vertical",b=i.key,y=r==="ltr"?"ArrowLeft":"ArrowRight",x=r==="ltr"?"ArrowRight":"ArrowLeft",k={[y]:()=>m&&f(),[x]:()=>m&&c(),ArrowDown:()=>v&&c(),ArrowUp:()=>v&&f(),Home:p,End:h}[b];k&&(i.preventDefault(),k(i))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:rt(e.onKeyDown,s)}}function nW(e){const{isDisabled:t=!1,isFocusable:n=!1,...r}=e,{setSelectedIndex:o,isManual:s,id:i,setFocusedIndex:c,selectedIndex:f}=xg(),{index:p,register:h}=JH({disabled:t&&!n}),m=p===f,v=()=>{o(p)},b=()=>{c(p),!s&&!(t&&n)&&o(p)},y=V5({...r,ref:cn(h,e.ref),isDisabled:t,isFocusable:n,onClick:rt(e.onClick,v)}),x="button";return{...y,id:LP(i,p),role:"tab",tabIndex:m?0:-1,type:x,"aria-selected":m,"aria-controls":FP(i,p),onFocus:t?void 0:rt(e.onFocus,b)}}var[rW,oW]=Dn({});function sW(e){const t=xg(),{id:n,selectedIndex:r}=t,s=pf(e.children).map((i,c)=>u.createElement(rW,{key:c,value:{isSelected:c===r,id:FP(n,c),tabId:LP(n,c),selectedIndex:r}},i));return{...e,children:s}}function aW(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=xg(),{isSelected:s,id:i,tabId:c}=oW(),f=u.useRef(!1);s&&(f.current=!0);const p=Xx({wasSelected:f.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":c,hidden:!s,id:i}}function LP(e,t){return`${e}--tab-${t}`}function FP(e,t){return`${e}--tabpanel-${t}`}var[iW,yg]=Dn({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Gl=Te(function(t,n){const r=Vr("Tabs",t),{children:o,className:s,...i}=Jn(t),{htmlProps:c,descendants:f,...p}=ZH(i),h=u.useMemo(()=>p,[p]),{isFitted:m,...v}=c;return a.jsx(XH,{value:f,children:a.jsx(eW,{value:h,children:a.jsx(iW,{value:r,children:a.jsx(Me.div,{className:_t("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Gl.displayName="Tabs";var ql=Te(function(t,n){const r=tW({...t,ref:n}),s={display:"flex",...yg().tablist};return a.jsx(Me.div,{...r,className:_t("chakra-tabs__tablist",t.className),__css:s})});ql.displayName="TabList";var bs=Te(function(t,n){const r=aW({...t,ref:n}),o=yg();return a.jsx(Me.div,{outline:"0",...r,className:_t("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});bs.displayName="TabPanel";var Ou=Te(function(t,n){const r=sW(t),o=yg();return a.jsx(Me.div,{...r,width:"100%",ref:n,className:_t("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});Ou.displayName="TabPanels";var Ro=Te(function(t,n){const r=yg(),o=nW({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return a.jsx(Me.button,{...o,className:_t("chakra-tabs__tab",t.className),__css:s})});Ro.displayName="Tab";function lW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var cW=["h","minH","height","minHeight"],zP=Te((e,t)=>{const n=Xi("Textarea",e),{className:r,rows:o,...s}=Jn(e),i=yx(s),c=o?lW(n,cW):n;return a.jsx(Me.textarea,{ref:t,rows:o,...i,className:_t("chakra-textarea",r),__css:c})});zP.displayName="Textarea";var uW={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]}}}},nb=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},dh=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function dW(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:o,closeOnScroll:s,closeOnPointerDown:i=o,closeOnEsc:c=!0,onOpen:f,onClose:p,placement:h,id:m,isOpen:v,defaultIsOpen:b,arrowSize:y=10,arrowShadowColor:x,arrowPadding:C,modifiers:k,isDisabled:j,gutter:_,offset:I,direction:O,...E}=e,{isOpen:M,onOpen:R,onClose:A}=Kx({isOpen:v,defaultIsOpen:b,onOpen:f,onClose:p}),{referenceRef:D,getPopperProps:T,getArrowInnerProps:K,getArrowProps:B}=qx({enabled:M,placement:h,arrowPadding:C,modifiers:k,gutter:_,offset:I,direction:O}),G=u.useId(),V=`tooltip-${m??G}`,L=u.useRef(null),X=u.useRef(),F=u.useCallback(()=>{X.current&&(clearTimeout(X.current),X.current=void 0)},[]),q=u.useRef(),te=u.useCallback(()=>{q.current&&(clearTimeout(q.current),q.current=void 0)},[]),Y=u.useCallback(()=>{te(),A()},[A,te]),ce=fW(L,Y),ae=u.useCallback(()=>{if(!j&&!X.current){M&&ce();const he=dh(L);X.current=he.setTimeout(R,t)}},[ce,j,M,R,t]),U=u.useCallback(()=>{F();const he=dh(L);q.current=he.setTimeout(Y,n)},[n,Y,F]),W=u.useCallback(()=>{M&&r&&U()},[r,U,M]),ne=u.useCallback(()=>{M&&i&&U()},[i,U,M]),ie=u.useCallback(he=>{M&&he.key==="Escape"&&U()},[M,U]);wl(()=>nb(L),"keydown",c?ie:void 0),wl(()=>{const he=L.current;if(!he)return null;const Ce=R5(he);return Ce.localName==="body"?dh(L):Ce},"scroll",()=>{M&&s&&Y()},{passive:!0,capture:!0}),u.useEffect(()=>{j&&(F(),M&&A())},[j,M,A,F]),u.useEffect(()=>()=>{F(),te()},[F,te]),wl(()=>L.current,"pointerleave",U);const oe=u.useCallback((he={},Ce=null)=>({...he,ref:cn(L,Ce,D),onPointerEnter:rt(he.onPointerEnter,de=>{de.pointerType!=="touch"&&ae()}),onClick:rt(he.onClick,W),onPointerDown:rt(he.onPointerDown,ne),onFocus:rt(he.onFocus,ae),onBlur:rt(he.onBlur,U),"aria-describedby":M?V:void 0}),[ae,U,ne,M,V,W,D]),me=u.useCallback((he={},Ce=null)=>T({...he,style:{...he.style,[Ir.arrowSize.var]:y?`${y}px`:void 0,[Ir.arrowShadowColor.var]:x}},Ce),[T,y,x]),fe=u.useCallback((he={},Ce=null)=>{const xe={...he.style,position:"relative",transformOrigin:Ir.transformOrigin.varRef};return{ref:Ce,...E,...he,id:V,role:"tooltip",style:xe}},[E,V]);return{isOpen:M,show:ae,hide:U,getTriggerProps:oe,getTooltipProps:fe,getTooltipPositionerProps:me,getArrowProps:B,getArrowInnerProps:K}}var Dv="chakra-ui:close-tooltip";function fW(e,t){return u.useEffect(()=>{const n=nb(e);return n.addEventListener(Dv,t),()=>n.removeEventListener(Dv,t)},[t,e]),()=>{const n=nb(e),r=dh(e);n.dispatchEvent(new r.CustomEvent(Dv))}}function pW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function hW(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var mW=Me(yr.div),Mn=Te((e,t)=>{var n,r;const o=Xi("Tooltip",e),s=Jn(e),i=sf(),{children:c,label:f,shouldWrapChildren:p,"aria-label":h,hasArrow:m,bg:v,portalProps:b,background:y,backgroundColor:x,bgColor:C,motionProps:k,...j}=s,_=(r=(n=y??x)!=null?n:v)!=null?r:C;if(_){o.bg=_;const T=O7(i,"colors",_);o[Ir.arrowBg.var]=T}const I=dW({...j,direction:i.direction}),O=typeof c=="string"||p;let E;if(O)E=a.jsx(Me.span,{display:"inline-block",tabIndex:0,...I.getTriggerProps(),children:c});else{const T=u.Children.only(c);E=u.cloneElement(T,I.getTriggerProps(T.props,T.ref))}const M=!!h,R=I.getTooltipProps({},t),A=M?pW(R,["role","id"]):R,D=hW(R,["role","id"]);return f?a.jsxs(a.Fragment,{children:[E,a.jsx(co,{children:I.isOpen&&a.jsx(uf,{...b,children:a.jsx(Me.div,{...I.getTooltipPositionerProps(),__css:{zIndex:o.zIndex,pointerEvents:"none"},children:a.jsxs(mW,{variants:uW,initial:"exit",animate:"enter",exit:"exit",...k,...A,__css:o,children:[f,M&&a.jsx(Me.span,{srOnly:!0,...D,children:h}),m&&a.jsx(Me.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:a.jsx(Me.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:o.bg}})})]})})})})]}):a.jsx(a.Fragment,{children:c})});Mn.displayName="Tooltip";const Cs=e=>e.system,gW=e=>e.system.toastQueue,BP=le(Cs,e=>e.language,Oe),Or=le(e=>e,e=>e.system.isProcessing||!e.system.isConnected),vW=le(Cs,e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=e;return{consoleLogLevel:t,shouldLogToConsole:n}},{memoizeOptions:{resultEqualityCheck:mn}}),HP=e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=z(vW);return u.useEffect(()=>{n?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${M7[t]}`)):localStorage.setItem("ROARR_LOG","false"),Qw.ROARR.write=R7.createLogWriter()},[t,n]),u.useEffect(()=>{const o={...D7};A7.set(Qw.Roarr.child(o))},[]),u.useMemo(()=>Su(e),[e])},bW=()=>{const e=se(),t=z(gW),n=A3();return u.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(N7())},[e,n,t]),null},Kl=()=>{const e=se();return u.useCallback(n=>e(Cn(_n(n))),[e])},xW=u.memo(bW);var yW=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 jf(e,t){var n=wW(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 wW(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=yW.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var CW=[".DS_Store","Thumbs.db"];function SW(e){return ju(this,void 0,void 0,function(){return _u(this,function(t){return Nh(e)&&kW(e.dataTransfer)?[2,IW(e.dataTransfer,e.type)]:jW(e)?[2,_W(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,PW(e)]:[2,[]]})})}function kW(e){return Nh(e)}function jW(e){return Nh(e)&&Nh(e.target)}function Nh(e){return typeof e=="object"&&e!==null}function _W(e){return rb(e.target.files).map(function(t){return jf(t)})}function PW(e){return ju(this,void 0,void 0,function(){var t;return _u(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 jf(r)})]}})})}function IW(e,t){return ju(this,void 0,void 0,function(){var n,r;return _u(this,function(o){switch(o.label){case 0:return e.items?(n=rb(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(EW))]):[3,2];case 1:return r=o.sent(),[2,_S(WP(r))];case 2:return[2,_S(rb(e.files).map(function(s){return jf(s)}))]}})})}function _S(e){return e.filter(function(t){return CW.indexOf(t.name)===-1})}function rb(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,MS(n)];if(e.sizen)return[!1,MS(n)]}return[!0,null]}function ml(e){return e!=null}function UW(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,i=e.maxFiles,c=e.validator;return!s&&t.length>1||s&&i>=1&&t.length>i?!1:t.every(function(f){var p=qP(f,n),h=Vd(p,1),m=h[0],v=KP(f,r,o),b=Vd(v,1),y=b[0],x=c?c(f):null;return m&&y&&!x})}function Th(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Ep(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 DS(e){e.preventDefault()}function GW(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function qW(e){return e.indexOf("Edge/")!==-1}function KW(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return GW(e)||qW(e)}function fa(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),i=1;ie.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 dV(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,s;for(s=0;s=0)&&(n[o]=e[o]);return n}var ay=u.forwardRef(function(e,t){var n=e.children,r=$h(e,eV),o=iy(r),s=o.open,i=$h(o,tV);return u.useImperativeHandle(t,function(){return{open:s}},[s]),H.createElement(u.Fragment,null,n(ur(ur({},i),{},{open:s})))});ay.displayName="Dropzone";var JP={disabled:!1,getFilesFromEvent:SW,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};ay.defaultProps=JP;ay.propTypes={children:zn.func,accept:zn.objectOf(zn.arrayOf(zn.string)),multiple:zn.bool,preventDropOnDocument:zn.bool,noClick:zn.bool,noKeyboard:zn.bool,noDrag:zn.bool,noDragEventsBubbling:zn.bool,minSize:zn.number,maxSize:zn.number,maxFiles:zn.number,disabled:zn.bool,getFilesFromEvent:zn.func,onFileDialogCancel:zn.func,onFileDialogOpen:zn.func,useFsAccessApi:zn.bool,autoFocus:zn.bool,onDragEnter:zn.func,onDragLeave:zn.func,onDragOver:zn.func,onDrop:zn.func,onDropAccepted:zn.func,onDropRejected:zn.func,onError:zn.func,validator:zn.func};var ib={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function iy(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ur(ur({},JP),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,i=t.minSize,c=t.multiple,f=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,m=t.onDragOver,v=t.onDrop,b=t.onDropAccepted,y=t.onDropRejected,x=t.onFileDialogCancel,C=t.onFileDialogOpen,k=t.useFsAccessApi,j=t.autoFocus,_=t.preventDropOnDocument,I=t.noClick,O=t.noKeyboard,E=t.noDrag,M=t.noDragEventsBubbling,R=t.onError,A=t.validator,D=u.useMemo(function(){return YW(n)},[n]),T=u.useMemo(function(){return QW(n)},[n]),K=u.useMemo(function(){return typeof C=="function"?C:NS},[C]),B=u.useMemo(function(){return typeof x=="function"?x:NS},[x]),G=u.useRef(null),Q=u.useRef(null),V=u.useReducer(fV,ib),L=Av(V,2),X=L[0],F=L[1],q=X.isFocused,te=X.isFileDialogActive,Y=u.useRef(typeof window<"u"&&window.isSecureContext&&k&&XW()),ce=function(){!Y.current&&te&&setTimeout(function(){if(Q.current){var We=Q.current.files;We.length||(F({type:"closeDialog"}),B())}},300)};u.useEffect(function(){return window.addEventListener("focus",ce,!1),function(){window.removeEventListener("focus",ce,!1)}},[Q,te,B,Y]);var ae=u.useRef([]),U=function(We){G.current&&G.current.contains(We.target)||(We.preventDefault(),ae.current=[])};u.useEffect(function(){return _&&(document.addEventListener("dragover",DS,!1),document.addEventListener("drop",U,!1)),function(){_&&(document.removeEventListener("dragover",DS),document.removeEventListener("drop",U))}},[G,_]),u.useEffect(function(){return!r&&j&&G.current&&G.current.focus(),function(){}},[G,j,r]);var W=u.useCallback(function(ye){R?R(ye):console.error(ye)},[R]),ne=u.useCallback(function(ye){ye.preventDefault(),ye.persist(),lt(ye),ae.current=[].concat(oV(ae.current),[ye.target]),Ep(ye)&&Promise.resolve(o(ye)).then(function(We){if(!(Th(ye)&&!M)){var Et=We.length,zt=Et>0&&UW({files:We,accept:D,minSize:i,maxSize:s,multiple:c,maxFiles:f,validator:A}),we=Et>0&&!zt;F({isDragAccept:zt,isDragReject:we,isDragActive:!0,type:"setDraggedFiles"}),p&&p(ye)}}).catch(function(We){return W(We)})},[o,p,W,M,D,i,s,c,f,A]),ie=u.useCallback(function(ye){ye.preventDefault(),ye.persist(),lt(ye);var We=Ep(ye);if(We&&ye.dataTransfer)try{ye.dataTransfer.dropEffect="copy"}catch{}return We&&m&&m(ye),!1},[m,M]),oe=u.useCallback(function(ye){ye.preventDefault(),ye.persist(),lt(ye);var We=ae.current.filter(function(zt){return G.current&&G.current.contains(zt)}),Et=We.indexOf(ye.target);Et!==-1&&We.splice(Et,1),ae.current=We,!(We.length>0)&&(F({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Ep(ye)&&h&&h(ye))},[G,h,M]),me=u.useCallback(function(ye,We){var Et=[],zt=[];ye.forEach(function(we){var xt=qP(we,D),Nt=Av(xt,2),Lt=Nt[0],$e=Nt[1],Ke=KP(we,i,s),vn=Av(Ke,2),_e=vn[0],Ze=vn[1],Qe=A?A(we):null;if(Lt&&_e&&!Qe)Et.push(we);else{var ct=[$e,Ze];Qe&&(ct=ct.concat(Qe)),zt.push({file:we,errors:ct.filter(function(Ft){return Ft})})}}),(!c&&Et.length>1||c&&f>=1&&Et.length>f)&&(Et.forEach(function(we){zt.push({file:we,errors:[VW]})}),Et.splice(0)),F({acceptedFiles:Et,fileRejections:zt,type:"setFiles"}),v&&v(Et,zt,We),zt.length>0&&y&&y(zt,We),Et.length>0&&b&&b(Et,We)},[F,c,D,i,s,f,v,b,y,A]),fe=u.useCallback(function(ye){ye.preventDefault(),ye.persist(),lt(ye),ae.current=[],Ep(ye)&&Promise.resolve(o(ye)).then(function(We){Th(ye)&&!M||me(We,ye)}).catch(function(We){return W(We)}),F({type:"reset"})},[o,me,W,M]),he=u.useCallback(function(){if(Y.current){F({type:"openDialog"}),K();var ye={multiple:c,types:T};window.showOpenFilePicker(ye).then(function(We){return o(We)}).then(function(We){me(We,null),F({type:"closeDialog"})}).catch(function(We){JW(We)?(B(We),F({type:"closeDialog"})):ZW(We)?(Y.current=!1,Q.current?(Q.current.value=null,Q.current.click()):W(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."))):W(We)});return}Q.current&&(F({type:"openDialog"}),K(),Q.current.value=null,Q.current.click())},[F,K,B,k,me,W,T,c]),Ce=u.useCallback(function(ye){!G.current||!G.current.isEqualNode(ye.target)||(ye.key===" "||ye.key==="Enter"||ye.keyCode===32||ye.keyCode===13)&&(ye.preventDefault(),he())},[G,he]),xe=u.useCallback(function(){F({type:"focus"})},[]),de=u.useCallback(function(){F({type:"blur"})},[]),Ne=u.useCallback(function(){I||(KW()?setTimeout(he,0):he())},[I,he]),De=function(We){return r?null:We},Xe=function(We){return O?null:De(We)},It=function(We){return E?null:De(We)},lt=function(We){M&&We.stopPropagation()},on=u.useMemo(function(){return function(){var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},We=ye.refKey,Et=We===void 0?"ref":We,zt=ye.role,we=ye.onKeyDown,xt=ye.onFocus,Nt=ye.onBlur,Lt=ye.onClick,$e=ye.onDragEnter,Ke=ye.onDragOver,vn=ye.onDragLeave,_e=ye.onDrop,Ze=$h(ye,nV);return ur(ur(ab({onKeyDown:Xe(fa(we,Ce)),onFocus:Xe(fa(xt,xe)),onBlur:Xe(fa(Nt,de)),onClick:De(fa(Lt,Ne)),onDragEnter:It(fa($e,ne)),onDragOver:It(fa(Ke,ie)),onDragLeave:It(fa(vn,oe)),onDrop:It(fa(_e,fe)),role:typeof zt=="string"&&zt!==""?zt:"presentation"},Et,G),!r&&!O?{tabIndex:0}:{}),Ze)}},[G,Ce,xe,de,Ne,ne,ie,oe,fe,O,E,r]),gt=u.useCallback(function(ye){ye.stopPropagation()},[]),bt=u.useMemo(function(){return function(){var ye=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},We=ye.refKey,Et=We===void 0?"ref":We,zt=ye.onChange,we=ye.onClick,xt=$h(ye,rV),Nt=ab({accept:D,multiple:c,type:"file",style:{display:"none"},onChange:De(fa(zt,fe)),onClick:De(fa(we,gt)),tabIndex:-1},Et,Q);return ur(ur({},Nt),xt)}},[Q,n,c,fe,r]);return ur(ur({},X),{},{isFocused:q&&!r,getRootProps:on,getInputProps:bt,rootRef:G,inputRef:Q,open:De(he)})}function fV(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({},ib),{},{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({},ib);default:return e}}function NS(){}function lb(){return lb=Object.assign?Object.assign.bind():function(e){for(var t=1;t'),!0):t?e.some(function(n){return t.includes(n)})||e.includes("*"):!0}var xV=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,i=n.mod,c=n.shift,f=n.ctrl,p=n.keys,h=t.key,m=t.code,v=t.ctrlKey,b=t.metaKey,y=t.shiftKey,x=t.altKey,C=Ti(m),k=h.toLowerCase();if(!r){if(o===!x&&k!=="alt"||c===!y&&k!=="shift")return!1;if(i){if(!b&&!v)return!1}else if(s===!b&&k!=="meta"&&k!=="os"||f===!v&&k!=="ctrl"&&k!=="control")return!1}return p&&p.length===1&&(p.includes(k)||p.includes(C))?!0:p?fh(p):!p},yV=u.createContext(void 0),wV=function(){return u.useContext(yV)};function rI(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce(function(n,r){return n&&rI(e[r],t[r])},!0):e===t}var CV=u.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),SV=function(){return u.useContext(CV)};function kV(e){var t=u.useRef(void 0);return rI(t.current,e)||(t.current=e),t.current}var TS=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},jV=typeof window<"u"?u.useLayoutEffect:u.useEffect;function St(e,t,n,r){var o=u.useRef(null),s=u.useRef(!1),i=n instanceof Array?r instanceof Array?void 0:r:n,c=ly(e)?e.join(i==null?void 0:i.splitKey):e,f=n instanceof Array?n:r instanceof Array?r:void 0,p=u.useCallback(t,f??[]),h=u.useRef(p);f?h.current=p:h.current=t;var m=kV(i),v=SV(),b=v.enabledScopes,y=wV();return jV(function(){if(!((m==null?void 0:m.enabled)===!1||!bV(b,m==null?void 0:m.scopes))){var x=function(I,O){var E;if(O===void 0&&(O=!1),!(vV(I)&&!nI(I,m==null?void 0:m.enableOnFormTags))&&!(m!=null&&m.ignoreEventWhen!=null&&m.ignoreEventWhen(I))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){TS(I);return}(E=I.target)!=null&&E.isContentEditable&&!(m!=null&&m.enableOnContentEditable)||Nv(c,m==null?void 0:m.splitKey).forEach(function(M){var R,A=Tv(M,m==null?void 0:m.combinationKey);if(xV(I,A,m==null?void 0:m.ignoreModifiers)||(R=A.keys)!=null&&R.includes("*")){if(O&&s.current)return;if(mV(I,A,m==null?void 0:m.preventDefault),!gV(I,A,m==null?void 0:m.enabled)){TS(I);return}h.current(I,A),O||(s.current=!0)}})}},C=function(I){I.key!==void 0&&(eI(Ti(I.code)),((m==null?void 0:m.keydown)===void 0&&(m==null?void 0:m.keyup)!==!0||m!=null&&m.keydown)&&x(I))},k=function(I){I.key!==void 0&&(tI(Ti(I.code)),s.current=!1,m!=null&&m.keyup&&x(I,!0))},j=o.current||(i==null?void 0:i.document)||document;return j.addEventListener("keyup",k),j.addEventListener("keydown",C),y&&Nv(c,m==null?void 0:m.splitKey).forEach(function(_){return y.addHotkey(Tv(_,m==null?void 0:m.combinationKey,m==null?void 0:m.description))}),function(){j.removeEventListener("keyup",k),j.removeEventListener("keydown",C),y&&Nv(c,m==null?void 0:m.splitKey).forEach(function(_){return y.removeHotkey(Tv(_,m==null?void 0:m.combinationKey,m==null?void 0:m.description))})}}},[c,m,b]),o}const _V=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return St("esc",()=>{r(!1)}),a.jsxs(Fe,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:"base.700",_dark:{bg:"base.900"},opacity:.7,alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:a.jsx($,{sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",flexDir:"column",gap:4,borderWidth:3,borderRadius:"xl",borderStyle:"dashed",color:"base.100",borderColor:"base.100",_dark:{borderColor:"base.200"}},children:t?a.jsx(ds,{size:"lg",children:"Drop to Upload"}):a.jsxs(a.Fragment,{children:[a.jsx(ds,{size:"lg",children:"Invalid Upload"}),a.jsx(ds,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},PV=u.memo(_V),IV=le([ke,jr],({gallery:e},t)=>{let n={type:"TOAST"};t==="unifiedCanvas"&&(n={type:"SET_CANVAS_INITIAL_IMAGE"}),t==="img2img"&&(n={type:"SET_INITIAL_IMAGE"});const{autoAddBoardId:r}=e;return{autoAddBoardId:r,postUploadAction:n}},Oe),EV=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=z(IV),o=z(Or),s=Kl(),{t:i}=Ie(),[c,f]=u.useState(!1),[p]=H_(),h=u.useCallback(_=>{f(!0),s({title:i("toast.uploadFailed"),description:_.errors.map(I=>I.message).join(` -`),status:"error"})},[i,s]),m=u.useCallback(async _=>{p({file:_,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n==="none"?void 0:n})},[n,r,p]),v=u.useCallback((_,I)=>{if(I.length>1){s({title:i("toast.uploadFailed"),description:i("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}I.forEach(O=>{h(O)}),_.forEach(O=>{m(O)})},[i,s,m,h]),{getRootProps:b,getInputProps:y,isDragAccept:x,isDragReject:C,isDragActive:k,inputRef:j}=iy({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>f(!0),disabled:o,multiple:!1});return u.useEffect(()=>{const _=async I=>{var O,E;j.current&&(O=I.clipboardData)!=null&&O.files&&(j.current.files=I.clipboardData.files,(E=j.current)==null||E.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",_),()=>{document.removeEventListener("paste",_)}},[j]),a.jsxs(Fe,{...b({style:{}}),onKeyDown:_=>{_.key},children:[a.jsx("input",{...y()}),t,a.jsx(co,{children:k&&c&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(PV,{isDragAccept:x,isDragReject:C,setIsHandlingUpload:f})},"image-upload-overlay")})]})},OV=u.memo(EV),MV=Te((e,t)=>{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...i}={},isChecked:c,...f}=e;return a.jsx(Mn,{label:r,placement:o,hasArrow:s,...i,children:a.jsx(iu,{ref:t,colorScheme:c?"accent":"base",...f,children:n})})}),Wt=u.memo(MV);function RV(e){const t=u.createContext(null);return[({children:o,value:s})=>H.createElement(t.Provider,{value:s},o),()=>{const o=u.useContext(t);if(o===null)throw new Error(e);return o}]}function oI(e){return Array.isArray(e)?e:[e]}const DV=()=>{};function AV(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||DV:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function sI({data:e}){const t=[],n=[],r=e.reduce((o,s,i)=>(s.group?o[s.group]?o[s.group].push(i):o[s.group]=[i]:n.push(i),o),{});return Object.keys(r).forEach(o=>{t.push(...r[o].map(s=>e[s]))}),t.push(...n.map(o=>e[o])),t}function aI(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==H.Fragment:!1}function iI(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;tr===t[o]).indexOf(!1)>=0)&&(n.current={v:e(),prevDeps:[...t]}),n.current.v}const $V=T7({key:"mantine",prepend:!0});function LV(){return P3()||$V}var FV=Object.defineProperty,$S=Object.getOwnPropertySymbols,zV=Object.prototype.hasOwnProperty,BV=Object.prototype.propertyIsEnumerable,LS=(e,t,n)=>t in e?FV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,HV=(e,t)=>{for(var n in t||(t={}))zV.call(t,n)&&LS(e,n,t[n]);if($S)for(var n of $S(t))BV.call(t,n)&&LS(e,n,t[n]);return e};const $v="ref";function WV(e){let t;if(e.length!==1)return{args:e,ref:t};const[n]=e;if(!(n instanceof Object))return{args:e,ref:t};if(!($v in n))return{args:e,ref:t};t=n[$v];const r=HV({},n);return delete r[$v],{args:[r],ref:t}}const{cssFactory:VV}=(()=>{function e(n,r,o){const s=[],i=F7(n,s,o);return s.length<2?o:i+r(s)}function t(n){const{cache:r}=n,o=(...i)=>{const{ref:c,args:f}=WV(i),p=$7(f,r.registered);return L7(r,p,!1),`${r.key}-${p.name}${c===void 0?"":` ${c}`}`};return{css:o,cx:(...i)=>e(r.registered,o,lI(i))}}return{cssFactory:t}})();function cI(){const e=LV();return TV(()=>VV({cache:e}),[e])}function UV({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const i=n.reduce((c,f)=>(Object.keys(f.classNames).forEach(p=>{typeof c[p]!="string"?c[p]=`${f.classNames[p]}`:c[p]=`${c[p]} ${f.classNames[p]}`}),c),{});return Object.keys(t).reduce((c,f)=>(c[f]=e(t[f],i[f],r!=null&&r[f],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${f}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${f}`:null),c),{})}var GV=Object.defineProperty,FS=Object.getOwnPropertySymbols,qV=Object.prototype.hasOwnProperty,KV=Object.prototype.propertyIsEnumerable,zS=(e,t,n)=>t in e?GV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Lv=(e,t)=>{for(var n in t||(t={}))qV.call(t,n)&&zS(e,n,t[n]);if(FS)for(var n of FS(t))KV.call(t,n)&&zS(e,n,t[n]);return e};function cb(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=Lv(Lv({},e[n]),t[n]):e[n]=Lv({},t[n])}),e}function BS(e,t,n,r){const o=s=>typeof s=="function"?s(t,n||{},r):s||{};return Array.isArray(e)?e.map(s=>o(s.styles)).reduce((s,i)=>cb(s,i),{}):o(e)}function XV({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,i)=>(i.variants&&r in i.variants&&cb(s,i.variants[r](t,n,{variant:r,size:o})),i.sizes&&o in i.sizes&&cb(s,i.sizes[o](t,n,{variant:r,size:o})),s),{})}function fo(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=pi(),i=l9(o==null?void 0:o.name),c=P3(),f={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=cI(),m=t(s,r,f),v=BS(o==null?void 0:o.styles,s,r,f),b=BS(i,s,r,f),y=XV({ctx:i,theme:s,params:r,variant:o==null?void 0:o.variant,size:o==null?void 0:o.size}),x=Object.fromEntries(Object.keys(m).map(C=>{const k=h({[p(m[C])]:!(o!=null&&o.unstyled)},p(y[C]),p(b[C]),p(v[C]));return[C,k]}));return{classes:UV({cx:h,classes:x,context:i,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:c}),cx:h,theme:s}}return n}function HS(e){return`___ref-${e||""}`}var QV=Object.defineProperty,YV=Object.defineProperties,JV=Object.getOwnPropertyDescriptors,WS=Object.getOwnPropertySymbols,ZV=Object.prototype.hasOwnProperty,eU=Object.prototype.propertyIsEnumerable,VS=(e,t,n)=>t in e?QV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,id=(e,t)=>{for(var n in t||(t={}))ZV.call(t,n)&&VS(e,n,t[n]);if(WS)for(var n of WS(t))eU.call(t,n)&&VS(e,n,t[n]);return e},ld=(e,t)=>YV(e,JV(t));const cd={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${Ge(10)})`},transitionProperty:"transform, opacity"},Op={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(-${Ge(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${Ge(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Ge(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Ge(20)}) rotate(5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:ld(id({},cd),{common:{transformOrigin:"center center"}}),"pop-bottom-left":ld(id({},cd),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":ld(id({},cd),{common:{transformOrigin:"bottom right"}}),"pop-top-left":ld(id({},cd),{common:{transformOrigin:"top left"}}),"pop-top-right":ld(id({},cd),{common:{transformOrigin:"top right"}})},US=["mousedown","touchstart"];function tU(e,t,n){const r=u.useRef();return u.useEffect(()=>{const o=s=>{const{target:i}=s??{};if(Array.isArray(n)){const c=(i==null?void 0:i.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(i)&&i.tagName!=="HTML";n.every(p=>!!p&&!s.composedPath().includes(p))&&!c&&e()}else r.current&&!r.current.contains(i)&&e()};return(t||US).forEach(s=>document.addEventListener(s,o)),()=>{(t||US).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function nU(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function rU(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function oU(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=u.useState(n?t:rU(e,t)),s=u.useRef();return u.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),nU(s.current,i=>o(i.matches))},[e]),r}const uI=typeof document<"u"?u.useLayoutEffect:u.useEffect;function Hs(e,t){const n=u.useRef(!1);u.useEffect(()=>()=>{n.current=!1},[]),u.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function sU({opened:e,shouldReturnFocus:t=!0}){const n=u.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return Hs(()=>{let o=-1;const s=i=>{i.key==="Tab"&&window.clearTimeout(o)};return document.addEventListener("keydown",s),e?n.current=document.activeElement:t&&(o=window.setTimeout(r,10)),()=>{window.clearTimeout(o),document.removeEventListener("keydown",s)}},[e,t]),r}const aU=/input|select|textarea|button|object/,dI="a, input, select, textarea, button, object, [tabindex]";function iU(e){return e.style.display==="none"}function lU(e){if(e.getAttribute("aria-hidden")||e.getAttribute("hidden")||e.getAttribute("type")==="hidden")return!1;let n=e;for(;n&&!(n===document.body||n.nodeType===11);){if(iU(n))return!1;n=n.parentNode}return!0}function fI(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function ub(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(fI(e));return(aU.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&lU(e)}function pI(e){const t=fI(e);return(Number.isNaN(t)||t>=0)&&ub(e)}function cU(e){return Array.from(e.querySelectorAll(dI)).filter(pI)}function uU(e,t){const n=cU(e);if(!n.length){t.preventDefault();return}const r=n[t.shiftKey?0:n.length-1],o=e.getRootNode();if(!(r===o.activeElement||e===o.activeElement))return;t.preventDefault();const i=n[t.shiftKey?n.length-1:0];i&&i.focus()}function uy(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function dU(e,t="body > :not(script)"){const n=uy(),r=Array.from(document.querySelectorAll(t)).map(o=>{var s;if((s=o==null?void 0:o.shadowRoot)!=null&&s.contains(e)||o.contains(e))return;const i=o.getAttribute("aria-hidden"),c=o.getAttribute("data-hidden"),f=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),i===null||i==="false"?o.setAttribute("aria-hidden","true"):!c&&!f&&o.setAttribute("data-hidden",i),{node:o,ariaHidden:c||null}});return()=>{r.forEach(o=>{!o||n!==o.node.getAttribute("data-focus-id")||(o.ariaHidden===null?o.node.removeAttribute("aria-hidden"):o.node.setAttribute("aria-hidden",o.ariaHidden),o.node.removeAttribute("data-focus-id"),o.node.removeAttribute("data-hidden"))})}}function fU(e=!0){const t=u.useRef(),n=u.useRef(null),r=s=>{let i=s.querySelector("[data-autofocus]");if(!i){const c=Array.from(s.querySelectorAll(dI));i=c.find(pI)||c.find(ub)||null,!i&&ub(s)&&(i=s)}i&&i.focus({preventScroll:!0})},o=u.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=dU(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return u.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=i=>{i.key==="Tab"&&t.current&&uU(t.current,i)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const pU=H["useId".toString()]||(()=>{});function hU(){const e=pU();return e?`mantine-${e.replace(/:/g,"")}`:""}function dy(e){const t=hU(),[n,r]=u.useState(t);return uI(()=>{r(uy())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function GS(e,t,n){u.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function hI(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function mU(...e){return t=>{e.forEach(n=>hI(n,t))}}function _f(...e){return u.useCallback(mU(...e),e)}function Ud({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=u.useState(t!==void 0?t:n),i=c=>{s(c),r==null||r(c)};return e!==void 0?[e,r,!0]:[o,i,!1]}function mI(e,t){return oU("(prefers-reduced-motion: reduce)",e,t)}const gU=e=>e<.5?2*e*e:-1+(4-2*e)*e,vU=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const i=!!n,f=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=m=>p[m]-f[m];if(e==="y"){const m=h("top");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.height*(s?0:1)||!s?b:0}const v=i?f.height:window.innerHeight;if(r==="end"){const b=m+o-v+p.height;return b>=-p.height*(s?0:1)||!s?b:0}return r==="center"?m-v/2+p.height/2:0}if(e==="x"){const m=h("left");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.width||!s?b:0}const v=i?f.width:window.innerWidth;if(r==="end"){const b=m+o-v+p.width;return b>=-p.width||!s?b:0}return r==="center"?m-v/2+p.width/2:0}return 0},bU=({axis:e,parent:t})=>{if(!t&&typeof document>"u")return 0;const n=e==="y"?"scrollTop":"scrollLeft";if(t)return t[n];const{body:r,documentElement:o}=document;return r[n]+o[n]},xU=({axis:e,parent:t,distance:n})=>{if(!t&&typeof document>"u")return;const r=e==="y"?"scrollTop":"scrollLeft";if(t)t[r]=n;else{const{body:o,documentElement:s}=document;o[r]=n,s[r]=n}};function gI({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=gU,offset:o=0,cancelable:s=!0,isList:i=!1}={}){const c=u.useRef(0),f=u.useRef(0),p=u.useRef(!1),h=u.useRef(null),m=u.useRef(null),v=mI(),b=()=>{c.current&&cancelAnimationFrame(c.current)},y=u.useCallback(({alignment:C="start"}={})=>{var k;p.current=!1,c.current&&b();const j=(k=bU({parent:h.current,axis:t}))!=null?k:0,_=vU({parent:h.current,target:m.current,axis:t,alignment:C,offset:o,isList:i})-(h.current?0:j);function I(){f.current===0&&(f.current=performance.now());const E=performance.now()-f.current,M=v||e===0?1:E/e,R=j+_*r(M);xU({parent:h.current,axis:t,distance:R}),!p.current&&M<1?c.current=requestAnimationFrame(I):(typeof n=="function"&&n(),f.current=0,c.current=0,b())}I()},[t,e,r,i,o,n,v]),x=()=>{s&&(p.current=!0)};return GS("wheel",x,{passive:!0}),GS("touchmove",x,{passive:!0}),u.useEffect(()=>b,[]),{scrollableRef:h,targetRef:m,scrollIntoView:y,cancel:b}}var qS=Object.getOwnPropertySymbols,yU=Object.prototype.hasOwnProperty,wU=Object.prototype.propertyIsEnumerable,CU=(e,t)=>{var n={};for(var r in e)yU.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&qS)for(var r of qS(e))t.indexOf(r)<0&&wU.call(e,r)&&(n[r]=e[r]);return n};function wg(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:i,ml:c,mr:f,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:C,c:k,opacity:j,ff:_,fz:I,fw:O,lts:E,ta:M,lh:R,fs:A,tt:D,td:T,w:K,miw:B,maw:G,h:Q,mih:V,mah:L,bgsz:X,bgp:F,bgr:q,bga:te,pos:Y,top:ce,left:ae,bottom:U,right:W,inset:ne,display:ie}=t,oe=CU(t,["m","mx","my","mt","mb","ml","mr","p","px","py","pt","pb","pl","pr","bg","c","opacity","ff","fz","fw","lts","ta","lh","fs","tt","td","w","miw","maw","h","mih","mah","bgsz","bgp","bgr","bga","pos","top","left","bottom","right","inset","display"]);return{systemStyles:c9({m:n,mx:r,my:o,mt:s,mb:i,ml:c,mr:f,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:C,c:k,opacity:j,ff:_,fz:I,fw:O,lts:E,ta:M,lh:R,fs:A,tt:D,td:T,w:K,miw:B,maw:G,h:Q,mih:V,mah:L,bgsz:X,bgp:F,bgr:q,bga:te,pos:Y,top:ce,left:ae,bottom:U,right:W,inset:ne,display:ie}),rest:oe}}function SU(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>AC(Gt({size:r,sizes:t.breakpoints}))-AC(Gt({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function kU({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return SU(e,t).reduce((i,c)=>{if(c==="base"&&e.base!==void 0){const p=n(e.base,t);return Array.isArray(r)?(r.forEach(h=>{i[h]=p}),i):(i[r]=p,i)}const f=n(e[c],t);return Array.isArray(r)?(i[t.fn.largerThan(c)]={},r.forEach(p=>{i[t.fn.largerThan(c)][p]=f}),i):(i[t.fn.largerThan(c)]={[r]:f},i)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,i)=>(s[i]=o,s),{}):{[r]:o}}function jU(e,t){return e==="dimmed"?t.colorScheme==="dark"?t.colors.dark[2]:t.colors.gray[6]:t.fn.variant({variant:"filled",color:e,primaryFallback:!1}).background}function _U(e){return Ge(e)}function PU(e){return e}function IU(e,t){return Gt({size:e,sizes:t.fontSizes})}const EU=["-xs","-sm","-md","-lg","-xl"];function OU(e,t){return EU.includes(e)?`calc(${Gt({size:e.replace("-",""),sizes:t.spacing})} * -1)`:Gt({size:e,sizes:t.spacing})}const MU={identity:PU,color:jU,size:_U,fontSize:IU,spacing:OU},RU={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},mx:{type:"spacing",property:["marginRight","marginLeft"]},my:{type:"spacing",property:["marginTop","marginBottom"]},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},px:{type:"spacing",property:["paddingRight","paddingLeft"]},py:{type:"spacing",property:["paddingTop","paddingBottom"]},bg:{type:"color",property:"background"},c:{type:"color",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"identity",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"identity",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"identity",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"}};var DU=Object.defineProperty,KS=Object.getOwnPropertySymbols,AU=Object.prototype.hasOwnProperty,NU=Object.prototype.propertyIsEnumerable,XS=(e,t,n)=>t in e?DU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,QS=(e,t)=>{for(var n in t||(t={}))AU.call(t,n)&&XS(e,n,t[n]);if(KS)for(var n of KS(t))NU.call(t,n)&&XS(e,n,t[n]);return e};function YS(e,t,n=RU){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(kU({value:e[s],getValue:MU[n[s].type],property:n[s].property,theme:t})),o),[]).reduce((o,s)=>(Object.keys(s).forEach(i=>{typeof s[i]=="object"&&s[i]!==null&&i in o?o[i]=QS(QS({},o[i]),s[i]):o[i]=s[i]}),o),{})}function JS(e,t){return typeof e=="function"?e(t):e}function TU(e,t,n){const r=pi(),{css:o,cx:s}=cI();return Array.isArray(e)?s(n,o(YS(t,r)),e.map(i=>o(JS(i,r)))):s(n,o(JS(e,r)),o(YS(t,r)))}var $U=Object.defineProperty,Lh=Object.getOwnPropertySymbols,vI=Object.prototype.hasOwnProperty,bI=Object.prototype.propertyIsEnumerable,ZS=(e,t,n)=>t in e?$U(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,LU=(e,t)=>{for(var n in t||(t={}))vI.call(t,n)&&ZS(e,n,t[n]);if(Lh)for(var n of Lh(t))bI.call(t,n)&&ZS(e,n,t[n]);return e},FU=(e,t)=>{var n={};for(var r in e)vI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Lh)for(var r of Lh(e))t.indexOf(r)<0&&bI.call(e,r)&&(n[r]=e[r]);return n};const xI=u.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:i}=n,c=FU(n,["className","component","style","sx"]);const{systemStyles:f,rest:p}=wg(c),h=o||"div";return H.createElement(h,LU({ref:t,className:TU(i,f,r),style:s},p))});xI.displayName="@mantine/core/Box";const No=xI;var zU=Object.defineProperty,BU=Object.defineProperties,HU=Object.getOwnPropertyDescriptors,e4=Object.getOwnPropertySymbols,WU=Object.prototype.hasOwnProperty,VU=Object.prototype.propertyIsEnumerable,t4=(e,t,n)=>t in e?zU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,n4=(e,t)=>{for(var n in t||(t={}))WU.call(t,n)&&t4(e,n,t[n]);if(e4)for(var n of e4(t))VU.call(t,n)&&t4(e,n,t[n]);return e},UU=(e,t)=>BU(e,HU(t)),GU=fo(e=>({root:UU(n4(n4({},e.fn.focusStyles()),e.fn.fontStyles()),{cursor:"pointer",border:0,padding:0,appearance:"none",fontSize:e.fontSizes.md,backgroundColor:"transparent",textAlign:"left",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,textDecoration:"none",boxSizing:"border-box"})}));const qU=GU;var KU=Object.defineProperty,Fh=Object.getOwnPropertySymbols,yI=Object.prototype.hasOwnProperty,wI=Object.prototype.propertyIsEnumerable,r4=(e,t,n)=>t in e?KU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,XU=(e,t)=>{for(var n in t||(t={}))yI.call(t,n)&&r4(e,n,t[n]);if(Fh)for(var n of Fh(t))wI.call(t,n)&&r4(e,n,t[n]);return e},QU=(e,t)=>{var n={};for(var r in e)yI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Fh)for(var r of Fh(e))t.indexOf(r)<0&&wI.call(e,r)&&(n[r]=e[r]);return n};const CI=u.forwardRef((e,t)=>{const n=_r("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:i}=n,c=QU(n,["className","component","unstyled","variant"]),{classes:f,cx:p}=qU(null,{name:"UnstyledButton",unstyled:s,variant:i});return H.createElement(No,XU({component:o,ref:t,className:p(f.root,r),type:o==="button"?"button":void 0},c))});CI.displayName="@mantine/core/UnstyledButton";const YU=CI;var JU=Object.defineProperty,ZU=Object.defineProperties,eG=Object.getOwnPropertyDescriptors,o4=Object.getOwnPropertySymbols,tG=Object.prototype.hasOwnProperty,nG=Object.prototype.propertyIsEnumerable,s4=(e,t,n)=>t in e?JU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,db=(e,t)=>{for(var n in t||(t={}))tG.call(t,n)&&s4(e,n,t[n]);if(o4)for(var n of o4(t))nG.call(t,n)&&s4(e,n,t[n]);return e},a4=(e,t)=>ZU(e,eG(t));const rG=["subtle","filled","outline","light","default","transparent","gradient"],Mp={xs:Ge(18),sm:Ge(22),md:Ge(28),lg:Ge(34),xl:Ge(44)};function oG({variant:e,theme:t,color:n,gradient:r}){const o=t.fn.variant({color:n,variant:e,gradient:r});return e==="gradient"?{border:0,backgroundImage:o.background,color:o.color,"&:hover":t.fn.hover({backgroundSize:"200%"})}:rG.includes(e)?db({border:`${Ge(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var sG=fo((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:a4(db({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:Gt({size:s,sizes:Mp}),minHeight:Gt({size:s,sizes:Mp}),width:Gt({size:s,sizes:Mp}),minWidth:Gt({size:s,sizes:Mp})},oG({variant:o,theme:e,color:n,gradient:r})),{"&:active":e.activeStyles,"& [data-action-icon-loader]":{maxWidth:"70%"},"&:disabled, &[data-disabled]":{color:e.colors.gray[e.colorScheme==="dark"?6:4],cursor:"not-allowed",backgroundColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),borderColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),backgroundImage:"none",pointerEvents:"none","&:active":{transform:"none"}},"&[data-loading]":{pointerEvents:"none","&::before":a4(db({content:'""'},e.fn.cover(Ge(-1))),{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.colors.dark[7],.5):"rgba(255, 255, 255, .5)",borderRadius:e.fn.radius(t),cursor:"not-allowed"})}})}));const aG=sG;var iG=Object.defineProperty,zh=Object.getOwnPropertySymbols,SI=Object.prototype.hasOwnProperty,kI=Object.prototype.propertyIsEnumerable,i4=(e,t,n)=>t in e?iG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l4=(e,t)=>{for(var n in t||(t={}))SI.call(t,n)&&i4(e,n,t[n]);if(zh)for(var n of zh(t))kI.call(t,n)&&i4(e,n,t[n]);return e},c4=(e,t)=>{var n={};for(var r in e)SI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&zh)for(var r of zh(e))t.indexOf(r)<0&&kI.call(e,r)&&(n[r]=e[r]);return n};function lG(e){var t=e,{size:n,color:r}=t,o=c4(t,["size","color"]);const s=o,{style:i}=s,c=c4(s,["style"]);return H.createElement("svg",l4({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:l4({width:n},i)},c),H.createElement("rect",{y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"30",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"60",width:"15",height:"140",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"90",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"120",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})))}var cG=Object.defineProperty,Bh=Object.getOwnPropertySymbols,jI=Object.prototype.hasOwnProperty,_I=Object.prototype.propertyIsEnumerable,u4=(e,t,n)=>t in e?cG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,d4=(e,t)=>{for(var n in t||(t={}))jI.call(t,n)&&u4(e,n,t[n]);if(Bh)for(var n of Bh(t))_I.call(t,n)&&u4(e,n,t[n]);return e},f4=(e,t)=>{var n={};for(var r in e)jI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Bh)for(var r of Bh(e))t.indexOf(r)<0&&_I.call(e,r)&&(n[r]=e[r]);return n};function uG(e){var t=e,{size:n,color:r}=t,o=f4(t,["size","color"]);const s=o,{style:i}=s,c=f4(s,["style"]);return H.createElement("svg",d4({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:d4({width:n,height:n},i)},c),H.createElement("g",{fill:"none",fillRule:"evenodd"},H.createElement("g",{transform:"translate(2.5 2.5)",strokeWidth:"5"},H.createElement("circle",{strokeOpacity:".5",cx:"16",cy:"16",r:"16"}),H.createElement("path",{d:"M32 16c0-9.94-8.06-16-16-16"},H.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"1s",repeatCount:"indefinite"})))))}var dG=Object.defineProperty,Hh=Object.getOwnPropertySymbols,PI=Object.prototype.hasOwnProperty,II=Object.prototype.propertyIsEnumerable,p4=(e,t,n)=>t in e?dG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,h4=(e,t)=>{for(var n in t||(t={}))PI.call(t,n)&&p4(e,n,t[n]);if(Hh)for(var n of Hh(t))II.call(t,n)&&p4(e,n,t[n]);return e},m4=(e,t)=>{var n={};for(var r in e)PI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Hh)for(var r of Hh(e))t.indexOf(r)<0&&II.call(e,r)&&(n[r]=e[r]);return n};function fG(e){var t=e,{size:n,color:r}=t,o=m4(t,["size","color"]);const s=o,{style:i}=s,c=m4(s,["style"]);return H.createElement("svg",h4({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:h4({width:n},i)},c),H.createElement("circle",{cx:"15",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3"},H.createElement("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"0.5",to:"0.5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"105",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})))}var pG=Object.defineProperty,Wh=Object.getOwnPropertySymbols,EI=Object.prototype.hasOwnProperty,OI=Object.prototype.propertyIsEnumerable,g4=(e,t,n)=>t in e?pG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hG=(e,t)=>{for(var n in t||(t={}))EI.call(t,n)&&g4(e,n,t[n]);if(Wh)for(var n of Wh(t))OI.call(t,n)&&g4(e,n,t[n]);return e},mG=(e,t)=>{var n={};for(var r in e)EI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Wh)for(var r of Wh(e))t.indexOf(r)<0&&OI.call(e,r)&&(n[r]=e[r]);return n};const Fv={bars:lG,oval:uG,dots:fG},gG={xs:Ge(18),sm:Ge(22),md:Ge(36),lg:Ge(44),xl:Ge(58)},vG={size:"md"};function MI(e){const t=_r("Loader",vG,e),{size:n,color:r,variant:o}=t,s=mG(t,["size","color","variant"]),i=pi(),c=o in Fv?o:i.loader;return H.createElement(No,hG({role:"presentation",component:Fv[c]||Fv.bars,size:Gt({size:n,sizes:gG}),color:i.fn.variant({variant:"filled",primaryFallback:!1,color:r||i.primaryColor}).background},s))}MI.displayName="@mantine/core/Loader";var bG=Object.defineProperty,Vh=Object.getOwnPropertySymbols,RI=Object.prototype.hasOwnProperty,DI=Object.prototype.propertyIsEnumerable,v4=(e,t,n)=>t in e?bG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b4=(e,t)=>{for(var n in t||(t={}))RI.call(t,n)&&v4(e,n,t[n]);if(Vh)for(var n of Vh(t))DI.call(t,n)&&v4(e,n,t[n]);return e},xG=(e,t)=>{var n={};for(var r in e)RI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Vh)for(var r of Vh(e))t.indexOf(r)<0&&DI.call(e,r)&&(n[r]=e[r]);return n};const yG={color:"gray",size:"md",variant:"subtle"},AI=u.forwardRef((e,t)=>{const n=_r("ActionIcon",yG,e),{className:r,color:o,children:s,radius:i,size:c,variant:f,gradient:p,disabled:h,loaderProps:m,loading:v,unstyled:b,__staticSelector:y}=n,x=xG(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:C,cx:k,theme:j}=aG({radius:i,color:o,gradient:p},{name:["ActionIcon",y],unstyled:b,size:c,variant:f}),_=H.createElement(MI,b4({color:j.fn.variant({color:o,variant:f}).color,size:"100%","data-action-icon-loader":!0},m));return H.createElement(YU,b4({className:k(C.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:b},x),v?_:s)});AI.displayName="@mantine/core/ActionIcon";const wG=AI;var CG=Object.defineProperty,SG=Object.defineProperties,kG=Object.getOwnPropertyDescriptors,Uh=Object.getOwnPropertySymbols,NI=Object.prototype.hasOwnProperty,TI=Object.prototype.propertyIsEnumerable,x4=(e,t,n)=>t in e?CG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jG=(e,t)=>{for(var n in t||(t={}))NI.call(t,n)&&x4(e,n,t[n]);if(Uh)for(var n of Uh(t))TI.call(t,n)&&x4(e,n,t[n]);return e},_G=(e,t)=>SG(e,kG(t)),PG=(e,t)=>{var n={};for(var r in e)NI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Uh)for(var r of Uh(e))t.indexOf(r)<0&&TI.call(e,r)&&(n[r]=e[r]);return n};function $I(e){const t=_r("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,i=PG(t,["children","target","className","innerRef"]),c=pi(),[f,p]=u.useState(!1),h=u.useRef();return uI(()=>(p(!0),h.current=r?typeof r=="string"?document.querySelector(r):r:document.createElement("div"),r||document.body.appendChild(h.current),()=>{!r&&document.body.removeChild(h.current)}),[r]),f?fs.createPortal(H.createElement("div",_G(jG({className:o,dir:c.dir},i),{ref:s}),n),h.current):null}$I.displayName="@mantine/core/Portal";var IG=Object.defineProperty,Gh=Object.getOwnPropertySymbols,LI=Object.prototype.hasOwnProperty,FI=Object.prototype.propertyIsEnumerable,y4=(e,t,n)=>t in e?IG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,EG=(e,t)=>{for(var n in t||(t={}))LI.call(t,n)&&y4(e,n,t[n]);if(Gh)for(var n of Gh(t))FI.call(t,n)&&y4(e,n,t[n]);return e},OG=(e,t)=>{var n={};for(var r in e)LI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Gh)for(var r of Gh(e))t.indexOf(r)<0&&FI.call(e,r)&&(n[r]=e[r]);return n};function zI(e){var t=e,{withinPortal:n=!0,children:r}=t,o=OG(t,["withinPortal","children"]);return n?H.createElement($I,EG({},o),r):H.createElement(H.Fragment,null,r)}zI.displayName="@mantine/core/OptionalPortal";var MG=Object.defineProperty,qh=Object.getOwnPropertySymbols,BI=Object.prototype.hasOwnProperty,HI=Object.prototype.propertyIsEnumerable,w4=(e,t,n)=>t in e?MG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C4=(e,t)=>{for(var n in t||(t={}))BI.call(t,n)&&w4(e,n,t[n]);if(qh)for(var n of qh(t))HI.call(t,n)&&w4(e,n,t[n]);return e},RG=(e,t)=>{var n={};for(var r in e)BI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&qh)for(var r of qh(e))t.indexOf(r)<0&&HI.call(e,r)&&(n[r]=e[r]);return n};function WI(e){const t=e,{width:n,height:r,style:o}=t,s=RG(t,["width","height","style"]);return H.createElement("svg",C4({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:C4({width:n,height:r},o)},s),H.createElement("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}WI.displayName="@mantine/core/CloseIcon";var DG=Object.defineProperty,Kh=Object.getOwnPropertySymbols,VI=Object.prototype.hasOwnProperty,UI=Object.prototype.propertyIsEnumerable,S4=(e,t,n)=>t in e?DG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,AG=(e,t)=>{for(var n in t||(t={}))VI.call(t,n)&&S4(e,n,t[n]);if(Kh)for(var n of Kh(t))UI.call(t,n)&&S4(e,n,t[n]);return e},NG=(e,t)=>{var n={};for(var r in e)VI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Kh)for(var r of Kh(e))t.indexOf(r)<0&&UI.call(e,r)&&(n[r]=e[r]);return n};const TG={xs:Ge(12),sm:Ge(16),md:Ge(20),lg:Ge(28),xl:Ge(34)},$G={size:"sm"},GI=u.forwardRef((e,t)=>{const n=_r("CloseButton",$G,e),{iconSize:r,size:o,children:s}=n,i=NG(n,["iconSize","size","children"]),c=Ge(r||TG[o]);return H.createElement(wG,AG({ref:t,__staticSelector:"CloseButton",size:o},i),s||H.createElement(WI,{width:c,height:c}))});GI.displayName="@mantine/core/CloseButton";const qI=GI;var LG=Object.defineProperty,FG=Object.defineProperties,zG=Object.getOwnPropertyDescriptors,k4=Object.getOwnPropertySymbols,BG=Object.prototype.hasOwnProperty,HG=Object.prototype.propertyIsEnumerable,j4=(e,t,n)=>t in e?LG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rp=(e,t)=>{for(var n in t||(t={}))BG.call(t,n)&&j4(e,n,t[n]);if(k4)for(var n of k4(t))HG.call(t,n)&&j4(e,n,t[n]);return e},WG=(e,t)=>FG(e,zG(t));function VG({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function UG({theme:e,color:t}){return t==="dimmed"?e.fn.dimmed():typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?e.fn.variant({variant:"filled",color:t}).background:t||"inherit"}function GG(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function qG({theme:e,truncate:t}){return t==="start"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",direction:e.dir==="ltr"?"rtl":"ltr",textAlign:e.dir==="ltr"?"right":"left"}:t?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:null}var KG=fo((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:i,gradient:c,weight:f,transform:p,align:h,strikethrough:m,italic:v},{size:b})=>{const y=e.fn.variant({variant:"gradient",gradient:c});return{root:WG(Rp(Rp(Rp(Rp({},e.fn.fontStyles()),e.fn.focusStyles()),GG(n)),qG({theme:e,truncate:r})),{color:UG({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||b===void 0?"inherit":Gt({size:b,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:VG({underline:i,strikethrough:m}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":f,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:y.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const XG=KG;var QG=Object.defineProperty,Xh=Object.getOwnPropertySymbols,KI=Object.prototype.hasOwnProperty,XI=Object.prototype.propertyIsEnumerable,_4=(e,t,n)=>t in e?QG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,YG=(e,t)=>{for(var n in t||(t={}))KI.call(t,n)&&_4(e,n,t[n]);if(Xh)for(var n of Xh(t))XI.call(t,n)&&_4(e,n,t[n]);return e},JG=(e,t)=>{var n={};for(var r in e)KI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Xh)for(var r of Xh(e))t.indexOf(r)<0&&XI.call(e,r)&&(n[r]=e[r]);return n};const ZG={variant:"text"},QI=u.forwardRef((e,t)=>{const n=_r("Text",ZG,e),{className:r,size:o,weight:s,transform:i,color:c,align:f,variant:p,lineClamp:h,truncate:m,gradient:v,inline:b,inherit:y,underline:x,strikethrough:C,italic:k,classNames:j,styles:_,unstyled:I,span:O,__staticSelector:E}=n,M=JG(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:R,cx:A}=XG({color:c,lineClamp:h,truncate:m,inline:b,inherit:y,underline:x,strikethrough:C,italic:k,weight:s,transform:i,align:f,gradient:v},{unstyled:I,name:E||"Text",variant:p,size:o});return H.createElement(No,YG({ref:t,className:A(R.root,{[R.gradient]:p==="gradient"},r),component:O?"span":"div"},M))});QI.displayName="@mantine/core/Text";const pu=QI,Dp={xs:Ge(1),sm:Ge(2),md:Ge(3),lg:Ge(4),xl:Ge(5)};function Ap(e,t){const n=e.fn.variant({variant:"outline",color:t}).border;return typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?n:t===void 0?e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]:t}var eq=fo((e,{color:t},{size:n,variant:r})=>({root:{},withLabel:{borderTop:"0 !important"},left:{"&::before":{display:"none"}},right:{"&::after":{display:"none"}},label:{display:"flex",alignItems:"center","&::before":{content:'""',flex:1,height:Ge(1),borderTop:`${Gt({size:n,sizes:Dp})} ${r} ${Ap(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${Gt({size:n,sizes:Dp})} ${r} ${Ap(e,t)}`,marginLeft:e.spacing.xs}},labelDefaultStyles:{color:t==="dark"?e.colors.dark[1]:e.fn.themeColor(t,e.colorScheme==="dark"?5:e.fn.primaryShade(),!1)},horizontal:{border:0,borderTopWidth:Ge(Gt({size:n,sizes:Dp})),borderTopColor:Ap(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:Ge(Gt({size:n,sizes:Dp})),borderLeftColor:Ap(e,t),borderLeftStyle:r}}));const tq=eq;var nq=Object.defineProperty,rq=Object.defineProperties,oq=Object.getOwnPropertyDescriptors,Qh=Object.getOwnPropertySymbols,YI=Object.prototype.hasOwnProperty,JI=Object.prototype.propertyIsEnumerable,P4=(e,t,n)=>t in e?nq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,I4=(e,t)=>{for(var n in t||(t={}))YI.call(t,n)&&P4(e,n,t[n]);if(Qh)for(var n of Qh(t))JI.call(t,n)&&P4(e,n,t[n]);return e},sq=(e,t)=>rq(e,oq(t)),aq=(e,t)=>{var n={};for(var r in e)YI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Qh)for(var r of Qh(e))t.indexOf(r)<0&&JI.call(e,r)&&(n[r]=e[r]);return n};const iq={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},fb=u.forwardRef((e,t)=>{const n=_r("Divider",iq,e),{className:r,color:o,orientation:s,size:i,label:c,labelPosition:f,labelProps:p,variant:h,styles:m,classNames:v,unstyled:b}=n,y=aq(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:x,cx:C}=tq({color:o},{classNames:v,styles:m,unstyled:b,name:"Divider",variant:h,size:i}),k=s==="vertical",j=s==="horizontal",_=!!c&&j,I=!(p!=null&&p.color);return H.createElement(No,I4({ref:t,className:C(x.root,{[x.vertical]:k,[x.horizontal]:j,[x.withLabel]:_},r),role:"separator"},y),_&&H.createElement(pu,sq(I4({},p),{size:(p==null?void 0:p.size)||"xs",mt:Ge(2),className:C(x.label,x[f],{[x.labelDefaultStyles]:I})}),c))});fb.displayName="@mantine/core/Divider";var lq=Object.defineProperty,cq=Object.defineProperties,uq=Object.getOwnPropertyDescriptors,E4=Object.getOwnPropertySymbols,dq=Object.prototype.hasOwnProperty,fq=Object.prototype.propertyIsEnumerable,O4=(e,t,n)=>t in e?lq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,M4=(e,t)=>{for(var n in t||(t={}))dq.call(t,n)&&O4(e,n,t[n]);if(E4)for(var n of E4(t))fq.call(t,n)&&O4(e,n,t[n]);return e},pq=(e,t)=>cq(e,uq(t)),hq=fo((e,t,{size:n})=>({item:pq(M4({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${Gt({size:n,sizes:e.spacing})} / 1.5) ${Gt({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:Gt({size:n,sizes:e.fontSizes}),color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,borderRadius:e.fn.radius(),"&[data-hovered]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},"&[data-selected]":M4({backgroundColor:e.fn.variant({variant:"filled"}).background,color:e.fn.variant({variant:"filled"}).color},e.fn.hover({backgroundColor:e.fn.variant({variant:"filled"}).hover})),"&[data-disabled]":{cursor:"default",color:e.colors.dark[2]}}),nothingFound:{boxSizing:"border-box",color:e.colors.gray[6],paddingTop:`calc(${Gt({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${Gt({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${Gt({size:n,sizes:e.spacing})} / 1.5) ${Gt({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const mq=hq;var gq=Object.defineProperty,R4=Object.getOwnPropertySymbols,vq=Object.prototype.hasOwnProperty,bq=Object.prototype.propertyIsEnumerable,D4=(e,t,n)=>t in e?gq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xq=(e,t)=>{for(var n in t||(t={}))vq.call(t,n)&&D4(e,n,t[n]);if(R4)for(var n of R4(t))bq.call(t,n)&&D4(e,n,t[n]);return e};function fy({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:i,onItemHover:c,onItemSelect:f,itemsRefs:p,itemComponent:h,size:m,nothingFound:v,creatable:b,createLabel:y,unstyled:x,variant:C}){const{classes:k}=mq(null,{classNames:n,styles:r,unstyled:x,name:i,variant:C,size:m}),j=[],_=[];let I=null;const O=(M,R)=>{const A=typeof o=="function"?o(M.value):!1;return H.createElement(h,xq({key:M.value,className:k.item,"data-disabled":M.disabled||void 0,"data-hovered":!M.disabled&&t===R||void 0,"data-selected":!M.disabled&&A||void 0,selected:A,onMouseEnter:()=>c(R),id:`${s}-${R}`,role:"option",tabIndex:-1,"aria-selected":t===R,ref:D=>{p&&p.current&&(p.current[M.value]=D)},onMouseDown:M.disabled?null:D=>{D.preventDefault(),f(M)},disabled:M.disabled,variant:C},M))};let E=null;if(e.forEach((M,R)=>{M.creatable?I=R:M.group?(E!==M.group&&(E=M.group,_.push(H.createElement("div",{className:k.separator,key:`__mantine-divider-${R}`},H.createElement(fb,{classNames:{label:k.separatorLabel},label:M.group})))),_.push(O(M,R))):j.push(O(M,R))}),b){const M=e[I];j.push(H.createElement("div",{key:uy(),className:k.item,"data-hovered":t===I||void 0,onMouseEnter:()=>c(I),onMouseDown:R=>{R.preventDefault(),f(M)},tabIndex:-1,ref:R=>{p&&p.current&&(p.current[M.value]=R)}},y))}return _.length>0&&j.length>0&&j.unshift(H.createElement("div",{className:k.separator,key:"empty-group-separator"},H.createElement(fb,null))),_.length>0||j.length>0?H.createElement(H.Fragment,null,_,j):H.createElement(pu,{size:m,unstyled:x,className:k.nothingFound},v)}fy.displayName="@mantine/core/SelectItems";var yq=Object.defineProperty,Yh=Object.getOwnPropertySymbols,ZI=Object.prototype.hasOwnProperty,e6=Object.prototype.propertyIsEnumerable,A4=(e,t,n)=>t in e?yq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wq=(e,t)=>{for(var n in t||(t={}))ZI.call(t,n)&&A4(e,n,t[n]);if(Yh)for(var n of Yh(t))e6.call(t,n)&&A4(e,n,t[n]);return e},Cq=(e,t)=>{var n={};for(var r in e)ZI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Yh)for(var r of Yh(e))t.indexOf(r)<0&&e6.call(e,r)&&(n[r]=e[r]);return n};const py=u.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=Cq(n,["label","value"]);return H.createElement("div",wq({ref:t},s),r||o)});py.displayName="@mantine/core/DefaultItem";function Sq(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function t6(...e){return t=>e.forEach(n=>Sq(n,t))}function Xl(...e){return u.useCallback(t6(...e),e)}const n6=u.forwardRef((e,t)=>{const{children:n,...r}=e,o=u.Children.toArray(n),s=o.find(jq);if(s){const i=s.props.children,c=o.map(f=>f===s?u.Children.count(i)>1?u.Children.only(null):u.isValidElement(i)?i.props.children:null:f);return u.createElement(pb,ar({},r,{ref:t}),u.isValidElement(i)?u.cloneElement(i,void 0,c):null)}return u.createElement(pb,ar({},r,{ref:t}),n)});n6.displayName="Slot";const pb=u.forwardRef((e,t)=>{const{children:n,...r}=e;return u.isValidElement(n)?u.cloneElement(n,{..._q(r,n.props),ref:t6(t,n.ref)}):u.Children.count(n)>1?u.Children.only(null):null});pb.displayName="SlotClone";const kq=({children:e})=>u.createElement(u.Fragment,null,e);function jq(e){return u.isValidElement(e)&&e.type===kq}function _q(e,t){const n={...t};for(const r in t){const o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?n[r]=(...c)=>{s(...c),o(...c)}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}const Pq=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Pf=Pq.reduce((e,t)=>{const n=u.forwardRef((r,o)=>{const{asChild:s,...i}=r,c=s?n6:t;return u.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),u.createElement(c,ar({},i,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),hb=globalThis!=null&&globalThis.document?u.useLayoutEffect:()=>{};function Iq(e,t){return u.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const If=e=>{const{present:t,children:n}=e,r=Eq(t),o=typeof n=="function"?n({present:r.isPresent}):u.Children.only(n),s=Xl(r.ref,o.ref);return typeof n=="function"||r.isPresent?u.cloneElement(o,{ref:s}):null};If.displayName="Presence";function Eq(e){const[t,n]=u.useState(),r=u.useRef({}),o=u.useRef(e),s=u.useRef("none"),i=e?"mounted":"unmounted",[c,f]=Iq(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return u.useEffect(()=>{const p=Np(r.current);s.current=c==="mounted"?p:"none"},[c]),hb(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,b=Np(p);e?f("MOUNT"):b==="none"||(p==null?void 0:p.display)==="none"?f("UNMOUNT"):f(h&&v!==b?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,f]),hb(()=>{if(t){const p=m=>{const b=Np(r.current).includes(m.animationName);m.target===t&&b&&fs.flushSync(()=>f("ANIMATION_END"))},h=m=>{m.target===t&&(s.current=Np(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else f("ANIMATION_END")},[t,f]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:u.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function Np(e){return(e==null?void 0:e.animationName)||"none"}function Oq(e,t=[]){let n=[];function r(s,i){const c=u.createContext(i),f=n.length;n=[...n,i];function p(m){const{scope:v,children:b,...y}=m,x=(v==null?void 0:v[e][f])||c,C=u.useMemo(()=>y,Object.values(y));return u.createElement(x.Provider,{value:C},b)}function h(m,v){const b=(v==null?void 0:v[e][f])||c,y=u.useContext(b);if(y)return y;if(i!==void 0)return i;throw new Error(`\`${m}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(i=>u.createContext(i));return function(c){const f=(c==null?void 0:c[e])||s;return u.useMemo(()=>({[`__scope${e}`]:{...c,[e]:f}}),[c,f])}};return o.scopeName=e,[r,Mq(o,...t)]}function Mq(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const i=r.reduce((c,{useScope:f,scopeName:p})=>{const m=f(s)[`__scope${p}`];return{...c,...m}},{});return u.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function gl(e){const t=u.useRef(e);return u.useEffect(()=>{t.current=e}),u.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const Rq=u.createContext(void 0);function Dq(e){const t=u.useContext(Rq);return e||t||"ltr"}function Aq(e,[t,n]){return Math.min(n,Math.max(t,e))}function Sl(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function Nq(e,t){return u.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const r6="ScrollArea",[o6,f0e]=Oq(r6),[Tq,Ss]=o6(r6),$q=u.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...i}=e,[c,f]=u.useState(null),[p,h]=u.useState(null),[m,v]=u.useState(null),[b,y]=u.useState(null),[x,C]=u.useState(null),[k,j]=u.useState(0),[_,I]=u.useState(0),[O,E]=u.useState(!1),[M,R]=u.useState(!1),A=Xl(t,T=>f(T)),D=Dq(o);return u.createElement(Tq,{scope:n,type:r,dir:D,scrollHideDelay:s,scrollArea:c,viewport:p,onViewportChange:h,content:m,onContentChange:v,scrollbarX:b,onScrollbarXChange:y,scrollbarXEnabled:O,onScrollbarXEnabledChange:E,scrollbarY:x,onScrollbarYChange:C,scrollbarYEnabled:M,onScrollbarYEnabledChange:R,onCornerWidthChange:j,onCornerHeightChange:I},u.createElement(Pf.div,ar({dir:D},i,{ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":_+"px",...e.style}})))}),Lq="ScrollAreaViewport",Fq=u.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=Ss(Lq,n),i=u.useRef(null),c=Xl(t,i,s.onViewportChange);return u.createElement(u.Fragment,null,u.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"}}),u.createElement(Pf.div,ar({"data-radix-scroll-area-viewport":""},o,{ref:c,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),u.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),mi="ScrollAreaScrollbar",zq=u.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ss(mi,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=o,c=e.orientation==="horizontal";return u.useEffect(()=>(c?s(!0):i(!0),()=>{c?s(!1):i(!1)}),[c,s,i]),o.type==="hover"?u.createElement(Bq,ar({},r,{ref:t,forceMount:n})):o.type==="scroll"?u.createElement(Hq,ar({},r,{ref:t,forceMount:n})):o.type==="auto"?u.createElement(s6,ar({},r,{ref:t,forceMount:n})):o.type==="always"?u.createElement(hy,ar({},r,{ref:t})):null}),Bq=u.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ss(mi,e.__scopeScrollArea),[s,i]=u.useState(!1);return u.useEffect(()=>{const c=o.scrollArea;let f=0;if(c){const p=()=>{window.clearTimeout(f),i(!0)},h=()=>{f=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return c.addEventListener("pointerenter",p),c.addEventListener("pointerleave",h),()=>{window.clearTimeout(f),c.removeEventListener("pointerenter",p),c.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),u.createElement(If,{present:n||s},u.createElement(s6,ar({"data-state":s?"visible":"hidden"},r,{ref:t})))}),Hq=u.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Ss(mi,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Sg(()=>f("SCROLL_END"),100),[c,f]=Nq("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return u.useEffect(()=>{if(c==="idle"){const p=window.setTimeout(()=>f("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[c,o.scrollHideDelay,f]),u.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let m=p[h];const v=()=>{const b=p[h];m!==b&&(f("SCROLL"),i()),m=b};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,f,i]),u.createElement(If,{present:n||c!=="hidden"},u.createElement(hy,ar({"data-state":c==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:Sl(e.onPointerEnter,()=>f("POINTER_ENTER")),onPointerLeave:Sl(e.onPointerLeave,()=>f("POINTER_LEAVE"))})))}),s6=u.forwardRef((e,t)=>{const n=Ss(mi,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,i]=u.useState(!1),c=e.orientation==="horizontal",f=Sg(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=Ss(mi,e.__scopeScrollArea),s=u.useRef(null),i=u.useRef(0),[c,f]=u.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=c6(c.viewport,c.content),h={...r,sizes:c,onSizesChange:f,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function m(v,b){return Qq(v,i.current,c,b)}return n==="horizontal"?u.createElement(Wq,ar({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,b=N4(v,c,o.dir);s.current.style.transform=`translate3d(${b}px, 0, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollLeft=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollLeft=m(v,o.dir))}})):n==="vertical"?u.createElement(Vq,ar({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,b=N4(v,c);s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollTop=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollTop=m(v))}})):null}),Wq=u.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ss(mi,e.__scopeScrollArea),[i,c]=u.useState(),f=u.useRef(null),p=Xl(t,f,s.onScrollbarXChange);return u.useEffect(()=>{f.current&&c(getComputedStyle(f.current))},[f]),u.createElement(i6,ar({"data-orientation":"horizontal"},o,{ref:p,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Cg(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(v),d6(v,m)&&h.preventDefault()}},onResize:()=>{f.current&&s.viewport&&i&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:f.current.clientWidth,paddingStart:Jh(i.paddingLeft),paddingEnd:Jh(i.paddingRight)}})}}))}),Vq=u.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=Ss(mi,e.__scopeScrollArea),[i,c]=u.useState(),f=u.useRef(null),p=Xl(t,f,s.onScrollbarYChange);return u.useEffect(()=>{f.current&&c(getComputedStyle(f.current))},[f]),u.createElement(i6,ar({"data-orientation":"vertical"},o,{ref:p,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Cg(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(v),d6(v,m)&&h.preventDefault()}},onResize:()=>{f.current&&s.viewport&&i&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:f.current.clientHeight,paddingStart:Jh(i.paddingTop),paddingEnd:Jh(i.paddingBottom)}})}}))}),[Uq,a6]=o6(mi),i6=u.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:c,onThumbPositionChange:f,onDragScroll:p,onWheelScroll:h,onResize:m,...v}=e,b=Ss(mi,n),[y,x]=u.useState(null),C=Xl(t,A=>x(A)),k=u.useRef(null),j=u.useRef(""),_=b.viewport,I=r.content-r.viewport,O=gl(h),E=gl(f),M=Sg(m,10);function R(A){if(k.current){const D=A.clientX-k.current.left,T=A.clientY-k.current.top;p({x:D,y:T})}}return u.useEffect(()=>{const A=D=>{const T=D.target;(y==null?void 0:y.contains(T))&&O(D,I)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[_,y,I,O]),u.useEffect(E,[r,E]),hu(y,M),hu(b.content,M),u.createElement(Uq,{scope:n,scrollbar:y,hasThumb:o,onThumbChange:gl(s),onThumbPointerUp:gl(i),onThumbPositionChange:E,onThumbPointerDown:gl(c)},u.createElement(Pf.div,ar({},v,{ref:C,style:{position:"absolute",...v.style},onPointerDown:Sl(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",R(A))}),onPointerMove:Sl(e.onPointerMove,R),onPointerUp:Sl(e.onPointerUp,A=>{const D=A.target;D.hasPointerCapture(A.pointerId)&&D.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=j.current,k.current=null})})))}),mb="ScrollAreaThumb",Gq=u.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=a6(mb,e.__scopeScrollArea);return u.createElement(If,{present:n||o.hasThumb},u.createElement(qq,ar({ref:t},r)))}),qq=u.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=Ss(mb,n),i=a6(mb,n),{onThumbPositionChange:c}=i,f=Xl(t,m=>i.onThumbChange(m)),p=u.useRef(),h=Sg(()=>{p.current&&(p.current(),p.current=void 0)},100);return u.useEffect(()=>{const m=s.viewport;if(m){const v=()=>{if(h(),!p.current){const b=Yq(m,c);p.current=b,c()}};return c(),m.addEventListener("scroll",v),()=>m.removeEventListener("scroll",v)}},[s.viewport,h,c]),u.createElement(Pf.div,ar({"data-state":i.hasThumb?"visible":"hidden"},o,{ref:f,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:Sl(e.onPointerDownCapture,m=>{const b=m.target.getBoundingClientRect(),y=m.clientX-b.left,x=m.clientY-b.top;i.onThumbPointerDown({x:y,y:x})}),onPointerUp:Sl(e.onPointerUp,i.onThumbPointerUp)}))}),l6="ScrollAreaCorner",Kq=u.forwardRef((e,t)=>{const n=Ss(l6,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?u.createElement(Xq,ar({},e,{ref:t})):null}),Xq=u.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=Ss(l6,n),[s,i]=u.useState(0),[c,f]=u.useState(0),p=!!(s&&c);return hu(o.scrollbarX,()=>{var h;const m=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(m),f(m)}),hu(o.scrollbarY,()=>{var h;const m=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(m),i(m)}),p?u.createElement(Pf.div,ar({},r,{ref:t,style:{width:s,height:c,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}})):null});function Jh(e){return e?parseInt(e,10):0}function c6(e,t){const n=e/t;return isNaN(n)?0:n}function Cg(e){const t=c6(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function Qq(e,t,n,r="ltr"){const o=Cg(n),s=o/2,i=t||s,c=o-i,f=n.scrollbar.paddingStart+i,p=n.scrollbar.size-n.scrollbar.paddingEnd-c,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return u6([f,p],m)(e)}function N4(e,t,n="ltr"){const r=Cg(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,i=t.content-t.viewport,c=s-r,f=n==="ltr"?[0,i]:[i*-1,0],p=Aq(e,f);return u6([0,i],[0,c])(p)}function u6(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function d6(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},i=n.left!==s.left,c=n.top!==s.top;(i||c)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Sg(e,t){const n=gl(e),r=u.useRef(0);return u.useEffect(()=>()=>window.clearTimeout(r.current),[]),u.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function hu(e,t){const n=gl(t);hb(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}const Jq=$q,Zq=Fq,T4=zq,$4=Gq,eK=Kq;var tK=fo((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?Ge(t):void 0,paddingBottom:n?Ge(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${Ge(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${HS("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:Ge(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:Ge(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:HS("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:Ge(t),position:"relative",transition:"background-color 150ms ease",display:o?"none":void 0,overflow:"hidden","&::before":{content:'""',position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"100%",height:"100%",minWidth:Ge(44),minHeight:Ge(44)}},corner:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],transition:"opacity 150ms ease",opacity:r?1:0,display:o?"none":void 0}}));const nK=tK;var rK=Object.defineProperty,oK=Object.defineProperties,sK=Object.getOwnPropertyDescriptors,Zh=Object.getOwnPropertySymbols,f6=Object.prototype.hasOwnProperty,p6=Object.prototype.propertyIsEnumerable,L4=(e,t,n)=>t in e?rK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gb=(e,t)=>{for(var n in t||(t={}))f6.call(t,n)&&L4(e,n,t[n]);if(Zh)for(var n of Zh(t))p6.call(t,n)&&L4(e,n,t[n]);return e},h6=(e,t)=>oK(e,sK(t)),m6=(e,t)=>{var n={};for(var r in e)f6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Zh)for(var r of Zh(e))t.indexOf(r)<0&&p6.call(e,r)&&(n[r]=e[r]);return n};const g6={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},kg=u.forwardRef((e,t)=>{const n=_r("ScrollArea",g6,e),{children:r,className:o,classNames:s,styles:i,scrollbarSize:c,scrollHideDelay:f,type:p,dir:h,offsetScrollbars:m,viewportRef:v,onScrollPositionChange:b,unstyled:y,variant:x,viewportProps:C}=n,k=m6(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[j,_]=u.useState(!1),I=pi(),{classes:O,cx:E}=nK({scrollbarSize:c,offsetScrollbars:m,scrollbarHovered:j,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:i,unstyled:y,variant:x});return H.createElement(Jq,{type:p==="never"?"always":p,scrollHideDelay:f,dir:h||I.dir,ref:t,asChild:!0},H.createElement(No,gb({className:E(O.root,o)},k),H.createElement(Zq,h6(gb({},C),{className:O.viewport,ref:v,onScroll:typeof b=="function"?({currentTarget:M})=>b({x:M.scrollLeft,y:M.scrollTop}):void 0}),r),H.createElement(T4,{orientation:"horizontal",className:O.scrollbar,forceMount:!0,onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1)},H.createElement($4,{className:O.thumb})),H.createElement(T4,{orientation:"vertical",className:O.scrollbar,forceMount:!0,onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1)},H.createElement($4,{className:O.thumb})),H.createElement(eK,{className:O.corner})))}),v6=u.forwardRef((e,t)=>{const n=_r("ScrollAreaAutosize",g6,e),{children:r,classNames:o,styles:s,scrollbarSize:i,scrollHideDelay:c,type:f,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,sx:y,variant:x,viewportProps:C}=n,k=m6(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return H.createElement(No,h6(gb({},k),{ref:t,sx:[{display:"flex"},...oI(y)]}),H.createElement(No,{sx:{display:"flex",flexDirection:"column",flex:1}},H.createElement(kg,{classNames:o,styles:s,scrollHideDelay:c,scrollbarSize:i,type:f,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,variant:x,viewportProps:C},r)))});v6.displayName="@mantine/core/ScrollAreaAutosize";kg.displayName="@mantine/core/ScrollArea";kg.Autosize=v6;const b6=kg;var aK=Object.defineProperty,iK=Object.defineProperties,lK=Object.getOwnPropertyDescriptors,em=Object.getOwnPropertySymbols,x6=Object.prototype.hasOwnProperty,y6=Object.prototype.propertyIsEnumerable,F4=(e,t,n)=>t in e?aK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,z4=(e,t)=>{for(var n in t||(t={}))x6.call(t,n)&&F4(e,n,t[n]);if(em)for(var n of em(t))y6.call(t,n)&&F4(e,n,t[n]);return e},cK=(e,t)=>iK(e,lK(t)),uK=(e,t)=>{var n={};for(var r in e)x6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&em)for(var r of em(e))t.indexOf(r)<0&&y6.call(e,r)&&(n[r]=e[r]);return n};const jg=u.forwardRef((e,t)=>{var n=e,{style:r}=n,o=uK(n,["style"]);return H.createElement(b6,cK(z4({},o),{style:z4({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});jg.displayName="@mantine/core/SelectScrollArea";var dK=fo(()=>({dropdown:{},itemsWrapper:{padding:Ge(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const fK=dK;function Mu(e){return e.split("-")[1]}function my(e){return e==="y"?"height":"width"}function Ws(e){return e.split("-")[0]}function Zi(e){return["top","bottom"].includes(Ws(e))?"x":"y"}function B4(e,t,n){let{reference:r,floating:o}=e;const s=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,c=Zi(t),f=my(c),p=r[f]/2-o[f]/2,h=c==="x";let m;switch(Ws(t)){case"top":m={x:s,y:r.y-o.height};break;case"bottom":m={x:s,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:i};break;case"left":m={x:r.x-o.width,y:i};break;default:m={x:r.x,y:r.y}}switch(Mu(t)){case"start":m[c]-=p*(n&&h?-1:1);break;case"end":m[c]+=p*(n&&h?-1:1)}return m}const pK=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,c=s.filter(Boolean),f=await(i.isRTL==null?void 0:i.isRTL(t));let p=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:m}=B4(p,r,f),v=r,b={},y=0;for(let x=0;x({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:i,elements:c}=t,{element:f,padding:p=0}=si(e,t)||{};if(f==null)return{};const h=gy(p),m={x:n,y:r},v=Zi(o),b=my(v),y=await i.getDimensions(f),x=v==="y",C=x?"top":"left",k=x?"bottom":"right",j=x?"clientHeight":"clientWidth",_=s.reference[b]+s.reference[v]-m[v]-s.floating[b],I=m[v]-s.reference[v],O=await(i.getOffsetParent==null?void 0:i.getOffsetParent(f));let E=O?O[j]:0;E&&await(i.isElement==null?void 0:i.isElement(O))||(E=c.floating[j]||s.floating[b]);const M=_/2-I/2,R=E/2-y[b]/2-1,A=Gi(h[C],R),D=Gi(h[k],R),T=A,K=E-y[b]-D,B=E/2-y[b]/2+M,G=vb(T,B,K),Q=Mu(o)!=null&&B!=G&&s.reference[b]/2-(Be.concat(t,t+"-start",t+"-end"),[]);const mK={left:"right",right:"left",bottom:"top",top:"bottom"};function tm(e){return e.replace(/left|right|bottom|top/g,t=>mK[t])}function gK(e,t,n){n===void 0&&(n=!1);const r=Mu(e),o=Zi(e),s=my(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=tm(i)),{main:i,cross:tm(i)}}const vK={start:"end",end:"start"};function zv(e){return e.replace(/start|end/g,t=>vK[t])}const bK=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:i,platform:c,elements:f}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:y=!0,...x}=si(e,t),C=Ws(r),k=Ws(i)===i,j=await(c.isRTL==null?void 0:c.isRTL(f.floating)),_=m||(k||!y?[tm(i)]:function(T){const K=tm(T);return[zv(T),K,zv(K)]}(i));m||b==="none"||_.push(...function(T,K,B,G){const Q=Mu(T);let V=function(L,X,F){const q=["left","right"],te=["right","left"],Y=["top","bottom"],ce=["bottom","top"];switch(L){case"top":case"bottom":return F?X?te:q:X?q:te;case"left":case"right":return X?Y:ce;default:return[]}}(Ws(T),B==="start",G);return Q&&(V=V.map(L=>L+"-"+Q),K&&(V=V.concat(V.map(zv)))),V}(i,y,b,j));const I=[i,..._],O=await vy(t,x),E=[];let M=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&E.push(O[C]),h){const{main:T,cross:K}=gK(r,s,j);E.push(O[T],O[K])}if(M=[...M,{placement:r,overflows:E}],!E.every(T=>T<=0)){var R,A;const T=(((R=o.flip)==null?void 0:R.index)||0)+1,K=I[T];if(K)return{data:{index:T,overflows:M},reset:{placement:K}};let B=(A=M.filter(G=>G.overflows[0]<=0).sort((G,Q)=>G.overflows[1]-Q.overflows[1])[0])==null?void 0:A.placement;if(!B)switch(v){case"bestFit":{var D;const G=(D=M.map(Q=>[Q.placement,Q.overflows.filter(V=>V>0).reduce((V,L)=>V+L,0)]).sort((Q,V)=>Q[1]-V[1])[0])==null?void 0:D[0];G&&(B=G);break}case"initialPlacement":B=i}if(r!==B)return{reset:{placement:B}}}return{}}}};function W4(e){const t=Gi(...e.map(r=>r.left)),n=Gi(...e.map(r=>r.top));return{x:t,y:n,width:ma(...e.map(r=>r.right))-t,height:ma(...e.map(r=>r.bottom))-n}}const xK=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:r,rects:o,platform:s,strategy:i}=t,{padding:c=2,x:f,y:p}=si(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),m=function(x){const C=x.slice().sort((_,I)=>_.y-I.y),k=[];let j=null;for(let _=0;_j.height/2?k.push([I]):k[k.length-1].push(I),j=I}return k.map(_=>mu(W4(_)))}(h),v=mu(W4(h)),b=gy(c),y=await s.getElementRects({reference:{getBoundingClientRect:function(){if(m.length===2&&m[0].left>m[1].right&&f!=null&&p!=null)return m.find(x=>f>x.left-b.left&&fx.top-b.top&&p=2){if(Zi(n)==="x"){const O=m[0],E=m[m.length-1],M=Ws(n)==="top",R=O.top,A=E.bottom,D=M?O.left:E.left,T=M?O.right:E.right;return{top:R,bottom:A,left:D,right:T,width:T-D,height:A-R,x:D,y:R}}const x=Ws(n)==="left",C=ma(...m.map(O=>O.right)),k=Gi(...m.map(O=>O.left)),j=m.filter(O=>x?O.left===k:O.right===C),_=j[0].top,I=j[j.length-1].bottom;return{top:_,bottom:I,left:k,right:C,width:C-k,height:I-_,x:k,y:_}}return v}},floating:r.floating,strategy:i});return o.reference.x!==y.reference.x||o.reference.y!==y.reference.y||o.reference.width!==y.reference.width||o.reference.height!==y.reference.height?{reset:{rects:y}}:{}}}},yK=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(s,i){const{placement:c,platform:f,elements:p}=s,h=await(f.isRTL==null?void 0:f.isRTL(p.floating)),m=Ws(c),v=Mu(c),b=Zi(c)==="x",y=["left","top"].includes(m)?-1:1,x=h&&b?-1:1,C=si(i,s);let{mainAxis:k,crossAxis:j,alignmentAxis:_}=typeof C=="number"?{mainAxis:C,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...C};return v&&typeof _=="number"&&(j=v==="end"?-1*_:_),b?{x:j*x,y:k*y}:{x:k*y,y:j*x}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function w6(e){return e==="x"?"y":"x"}const wK=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:c={fn:C=>{let{x:k,y:j}=C;return{x:k,y:j}}},...f}=si(e,t),p={x:n,y:r},h=await vy(t,f),m=Zi(Ws(o)),v=w6(m);let b=p[m],y=p[v];if(s){const C=m==="y"?"bottom":"right";b=vb(b+h[m==="y"?"top":"left"],b,b-h[C])}if(i){const C=v==="y"?"bottom":"right";y=vb(y+h[v==="y"?"top":"left"],y,y-h[C])}const x=c.fn({...t,[m]:b,[v]:y});return{...x,data:{x:x.x-n,y:x.y-r}}}}},CK=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:c=0,mainAxis:f=!0,crossAxis:p=!0}=si(e,t),h={x:n,y:r},m=Zi(o),v=w6(m);let b=h[m],y=h[v];const x=si(c,t),C=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(f){const _=m==="y"?"height":"width",I=s.reference[m]-s.floating[_]+C.mainAxis,O=s.reference[m]+s.reference[_]-C.mainAxis;bO&&(b=O)}if(p){var k,j;const _=m==="y"?"width":"height",I=["top","left"].includes(Ws(o)),O=s.reference[v]-s.floating[_]+(I&&((k=i.offset)==null?void 0:k[v])||0)+(I?0:C.crossAxis),E=s.reference[v]+s.reference[_]+(I?0:((j=i.offset)==null?void 0:j[v])||0)-(I?C.crossAxis:0);yE&&(y=E)}return{[m]:b,[v]:y}}}},SK=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:s}=t,{apply:i=()=>{},...c}=si(e,t),f=await vy(t,c),p=Ws(n),h=Mu(n),m=Zi(n)==="x",{width:v,height:b}=r.floating;let y,x;p==="top"||p==="bottom"?(y=p,x=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=p,y=h==="end"?"top":"bottom");const C=b-f[y],k=v-f[x],j=!t.middlewareData.shift;let _=C,I=k;if(m){const E=v-f.left-f.right;I=h||j?Gi(k,E):E}else{const E=b-f.top-f.bottom;_=h||j?Gi(C,E):E}if(j&&!h){const E=ma(f.left,0),M=ma(f.right,0),R=ma(f.top,0),A=ma(f.bottom,0);m?I=v-2*(E!==0||M!==0?E+M:ma(f.left,f.right)):_=b-2*(R!==0||A!==0?R+A:ma(f.top,f.bottom))}await i({...t,availableWidth:I,availableHeight:_});const O=await o.getDimensions(s.floating);return v!==O.width||b!==O.height?{reset:{rects:!0}}:{}}}};function Go(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function ja(e){return Go(e).getComputedStyle(e)}function C6(e){return e instanceof Go(e).Node}function qi(e){return C6(e)?(e.nodeName||"").toLowerCase():"#document"}function Qs(e){return e instanceof HTMLElement||e instanceof Go(e).HTMLElement}function V4(e){return typeof ShadowRoot<"u"&&(e instanceof Go(e).ShadowRoot||e instanceof ShadowRoot)}function Gd(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=ja(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function kK(e){return["table","td","th"].includes(qi(e))}function bb(e){const t=by(),n=ja(e);return n.transform!=="none"||n.perspective!=="none"||!!n.containerType&&n.containerType!=="normal"||!t&&!!n.backdropFilter&&n.backdropFilter!=="none"||!t&&!!n.filter&&n.filter!=="none"||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function by(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function _g(e){return["html","body","#document"].includes(qi(e))}const xb=Math.min,Xc=Math.max,nm=Math.round,Tp=Math.floor,Ki=e=>({x:e,y:e});function S6(e){const t=ja(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Qs(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,c=nm(n)!==s||nm(r)!==i;return c&&(n=s,r=i),{width:n,height:r,$:c}}function Za(e){return e instanceof Element||e instanceof Go(e).Element}function xy(e){return Za(e)?e:e.contextElement}function Qc(e){const t=xy(e);if(!Qs(t))return Ki(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=S6(t);let i=(s?nm(n.width):n.width)/r,c=(s?nm(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),c&&Number.isFinite(c)||(c=1),{x:i,y:c}}const jK=Ki(0);function k6(e){const t=Go(e);return by()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:jK}function Ll(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=xy(e);let i=Ki(1);t&&(r?Za(r)&&(i=Qc(r)):i=Qc(e));const c=function(v,b,y){return b===void 0&&(b=!1),!(!y||b&&y!==Go(v))&&b}(s,n,r)?k6(s):Ki(0);let f=(o.left+c.x)/i.x,p=(o.top+c.y)/i.y,h=o.width/i.x,m=o.height/i.y;if(s){const v=Go(s),b=r&&Za(r)?Go(r):r;let y=v.frameElement;for(;y&&r&&b!==v;){const x=Qc(y),C=y.getBoundingClientRect(),k=getComputedStyle(y),j=C.left+(y.clientLeft+parseFloat(k.paddingLeft))*x.x,_=C.top+(y.clientTop+parseFloat(k.paddingTop))*x.y;f*=x.x,p*=x.y,h*=x.x,m*=x.y,f+=j,p+=_,y=Go(y).frameElement}}return mu({width:h,height:m,x:f,y:p})}function Pg(e){return Za(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ei(e){var t;return(t=(C6(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function j6(e){return Ll(ei(e)).left+Pg(e).scrollLeft}function gu(e){if(qi(e)==="html")return e;const t=e.assignedSlot||e.parentNode||V4(e)&&e.host||ei(e);return V4(t)?t.host:t}function _6(e){const t=gu(e);return _g(t)?e.ownerDocument?e.ownerDocument.body:e.body:Qs(t)&&Gd(t)?t:_6(t)}function rm(e,t){var n;t===void 0&&(t=[]);const r=_6(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Go(r);return o?t.concat(s,s.visualViewport||[],Gd(r)?r:[]):t.concat(r,rm(r))}function U4(e,t,n){let r;if(t==="viewport")r=function(o,s){const i=Go(o),c=ei(o),f=i.visualViewport;let p=c.clientWidth,h=c.clientHeight,m=0,v=0;if(f){p=f.width,h=f.height;const b=by();(!b||b&&s==="fixed")&&(m=f.offsetLeft,v=f.offsetTop)}return{width:p,height:h,x:m,y:v}}(e,n);else if(t==="document")r=function(o){const s=ei(o),i=Pg(o),c=o.ownerDocument.body,f=Xc(s.scrollWidth,s.clientWidth,c.scrollWidth,c.clientWidth),p=Xc(s.scrollHeight,s.clientHeight,c.scrollHeight,c.clientHeight);let h=-i.scrollLeft+j6(o);const m=-i.scrollTop;return ja(c).direction==="rtl"&&(h+=Xc(s.clientWidth,c.clientWidth)-f),{width:f,height:p,x:h,y:m}}(ei(e));else if(Za(t))r=function(o,s){const i=Ll(o,!0,s==="fixed"),c=i.top+o.clientTop,f=i.left+o.clientLeft,p=Qs(o)?Qc(o):Ki(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:f*p.x,y:c*p.y}}(t,n);else{const o=k6(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return mu(r)}function P6(e,t){const n=gu(e);return!(n===t||!Za(n)||_g(n))&&(ja(n).position==="fixed"||P6(n,t))}function _K(e,t,n){const r=Qs(t),o=ei(t),s=n==="fixed",i=Ll(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const f=Ki(0);if(r||!r&&!s)if((qi(t)!=="body"||Gd(o))&&(c=Pg(t)),Qs(t)){const p=Ll(t,!0,s,t);f.x=p.x+t.clientLeft,f.y=p.y+t.clientTop}else o&&(f.x=j6(o));return{x:i.left+c.scrollLeft-f.x,y:i.top+c.scrollTop-f.y,width:i.width,height:i.height}}function G4(e,t){return Qs(e)&&ja(e).position!=="fixed"?t?t(e):e.offsetParent:null}function q4(e,t){const n=Go(e);if(!Qs(e))return n;let r=G4(e,t);for(;r&&kK(r)&&ja(r).position==="static";)r=G4(r,t);return r&&(qi(r)==="html"||qi(r)==="body"&&ja(r).position==="static"&&!bb(r))?n:r||function(o){let s=gu(o);for(;Qs(s)&&!_g(s);){if(bb(s))return s;s=gu(s)}return null}(e)||n}const PK={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Qs(n),s=ei(n);if(n===s)return t;let i={scrollLeft:0,scrollTop:0},c=Ki(1);const f=Ki(0);if((o||!o&&r!=="fixed")&&((qi(n)!=="body"||Gd(s))&&(i=Pg(n)),Qs(n))){const p=Ll(n);c=Qc(n),f.x=p.x+n.clientLeft,f.y=p.y+n.clientTop}return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-i.scrollLeft*c.x+f.x,y:t.y*c.y-i.scrollTop*c.y+f.y}},getDocumentElement:ei,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(f,p){const h=p.get(f);if(h)return h;let m=rm(f).filter(x=>Za(x)&&qi(x)!=="body"),v=null;const b=ja(f).position==="fixed";let y=b?gu(f):f;for(;Za(y)&&!_g(y);){const x=ja(y),C=bb(y);C||x.position!=="fixed"||(v=null),(b?!C&&!v:!C&&x.position==="static"&&v&&["absolute","fixed"].includes(v.position)||Gd(y)&&!C&&P6(f,y))?m=m.filter(k=>k!==y):v=x,y=gu(y)}return p.set(f,m),m}(t,this._c):[].concat(n),r],i=s[0],c=s.reduce((f,p)=>{const h=U4(t,p,o);return f.top=Xc(h.top,f.top),f.right=xb(h.right,f.right),f.bottom=xb(h.bottom,f.bottom),f.left=Xc(h.left,f.left),f},U4(t,i,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:q4,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||q4,s=this.getDimensions;return{reference:_K(t,await o(n),r),floating:{x:0,y:0,...await s(n)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){return S6(e)},getScale:Qc,isElement:Za,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function IK(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:f=!1}=r,p=xy(e),h=o||s?[...p?rm(p):[],...rm(t)]:[];h.forEach(C=>{o&&C.addEventListener("scroll",n,{passive:!0}),s&&C.addEventListener("resize",n)});const m=p&&c?function(C,k){let j,_=null;const I=ei(C);function O(){clearTimeout(j),_&&_.disconnect(),_=null}return function E(M,R){M===void 0&&(M=!1),R===void 0&&(R=1),O();const{left:A,top:D,width:T,height:K}=C.getBoundingClientRect();if(M||k(),!T||!K)return;const B={rootMargin:-Tp(D)+"px "+-Tp(I.clientWidth-(A+T))+"px "+-Tp(I.clientHeight-(D+K))+"px "+-Tp(A)+"px",threshold:Xc(0,xb(1,R))||1};let G=!0;function Q(V){const L=V[0].intersectionRatio;if(L!==R){if(!G)return E();L?E(!1,L):j=setTimeout(()=>{E(!1,1e-7)},100)}G=!1}try{_=new IntersectionObserver(Q,{...B,root:I.ownerDocument})}catch{_=new IntersectionObserver(Q,B)}_.observe(C)}(!0),O}(p,n):null;let v,b=-1,y=null;i&&(y=new ResizeObserver(C=>{let[k]=C;k&&k.target===p&&y&&(y.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{y&&y.observe(t)})),n()}),p&&!f&&y.observe(p),y.observe(t));let x=f?Ll(e):null;return f&&function C(){const k=Ll(e);!x||k.x===x.x&&k.y===x.y&&k.width===x.width&&k.height===x.height||n(),x=k,v=requestAnimationFrame(C)}(),n(),()=>{h.forEach(C=>{o&&C.removeEventListener("scroll",n),s&&C.removeEventListener("resize",n)}),m&&m(),y&&y.disconnect(),y=null,f&&cancelAnimationFrame(v)}}const EK=(e,t,n)=>{const r=new Map,o={platform:PK,...n},s={...o.platform,_c:r};return pK(e,t,{...o,platform:s})},OK=e=>{const{element:t,padding:n}=e;function r(o){return Object.prototype.hasOwnProperty.call(o,"current")}return{name:"arrow",options:e,fn(o){return r(t)?t.current!=null?H4({element:t.current,padding:n}).fn(o):{}:t?H4({element:t,padding:n}).fn(o):{}}}};var ph=typeof document<"u"?u.useLayoutEffect:u.useEffect;function om(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,o;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(!om(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!om(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function K4(e){const t=u.useRef(e);return ph(()=>{t.current=e}),t}function MK(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:i}=e,[c,f]=u.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=u.useState(r);om(p,r)||h(r);const m=u.useRef(null),v=u.useRef(null),b=u.useRef(c),y=K4(s),x=K4(o),[C,k]=u.useState(null),[j,_]=u.useState(null),I=u.useCallback(D=>{m.current!==D&&(m.current=D,k(D))},[]),O=u.useCallback(D=>{v.current!==D&&(v.current=D,_(D))},[]),E=u.useCallback(()=>{if(!m.current||!v.current)return;const D={placement:t,strategy:n,middleware:p};x.current&&(D.platform=x.current),EK(m.current,v.current,D).then(T=>{const K={...T,isPositioned:!0};M.current&&!om(b.current,K)&&(b.current=K,fs.flushSync(()=>{f(K)}))})},[p,t,n,x]);ph(()=>{i===!1&&b.current.isPositioned&&(b.current.isPositioned=!1,f(D=>({...D,isPositioned:!1})))},[i]);const M=u.useRef(!1);ph(()=>(M.current=!0,()=>{M.current=!1}),[]),ph(()=>{if(C&&j){if(y.current)return y.current(C,j,E);E()}},[C,j,E,y]);const R=u.useMemo(()=>({reference:m,floating:v,setReference:I,setFloating:O}),[I,O]),A=u.useMemo(()=>({reference:C,floating:j}),[C,j]);return u.useMemo(()=>({...c,update:E,refs:R,elements:A,reference:I,floating:O}),[c,E,R,A,I,O])}var RK=typeof document<"u"?u.useLayoutEffect:u.useEffect;function DK(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){e.set(t,(e.get(t)||[]).filter(r=>r!==n))}}}const AK=u.createContext(null),NK=()=>u.useContext(AK);function TK(e){return(e==null?void 0:e.ownerDocument)||document}function $K(e){return TK(e).defaultView||window}function $p(e){return e?e instanceof $K(e).Element:!1}const LK=ex["useInsertionEffect".toString()],FK=LK||(e=>e());function zK(e){const t=u.useRef(()=>{});return FK(()=>{t.current=e}),u.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;oDK())[0],[p,h]=u.useState(null),m=u.useCallback(k=>{const j=$p(k)?{getBoundingClientRect:()=>k.getBoundingClientRect(),contextElement:k}:k;o.refs.setReference(j)},[o.refs]),v=u.useCallback(k=>{($p(k)||k===null)&&(i.current=k,h(k)),($p(o.refs.reference.current)||o.refs.reference.current===null||k!==null&&!$p(k))&&o.refs.setReference(k)},[o.refs]),b=u.useMemo(()=>({...o.refs,setReference:v,setPositionReference:m,domReference:i}),[o.refs,v,m]),y=u.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),x=zK(n),C=u.useMemo(()=>({...o,refs:b,elements:y,dataRef:c,nodeId:r,events:f,open:t,onOpenChange:x}),[o,r,f,t,x,b,y]);return RK(()=>{const k=s==null?void 0:s.nodesRef.current.find(j=>j.id===r);k&&(k.context=C)}),u.useMemo(()=>({...o,context:C,refs:b,reference:v,positionReference:m}),[o,b,C,v,m])}function HK({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=u.useState(0);u.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return IK(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),Hs(()=>{t.update()},r),Hs(()=>{s(i=>i+1)},[e])}function WK(e){const t=[yK(e.offset)];return e.middlewares.shift&&t.push(wK({limiter:CK()})),e.middlewares.flip&&t.push(bK()),e.middlewares.inline&&t.push(xK()),t.push(OK({element:e.arrowRef,padding:e.arrowOffset})),t}function VK(e){const[t,n]=Ud({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),r=()=>{var i;(i=e.onClose)==null||i.call(e),n(!1)},o=()=>{var i,c;t?((i=e.onClose)==null||i.call(e),n(!1)):((c=e.onOpen)==null||c.call(e),n(!0))},s=BK({placement:e.position,middleware:[...WK(e),...e.width==="target"?[SK({apply({rects:i}){var c,f;Object.assign((f=(c=s.refs.floating.current)==null?void 0:c.style)!=null?f:{},{width:`${i.reference.width}px`})}})]:[]]});return HK({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),Hs(()=>{var i;(i=e.onPositionChange)==null||i.call(e,s.placement)},[s.placement]),Hs(()=>{var i,c;e.opened?(c=e.onOpen)==null||c.call(e):(i=e.onClose)==null||i.call(e)},[e.opened]),{floating:s,controlled:typeof e.opened=="boolean",opened:t,onClose:r,onToggle:o}}const I6={context:"Popover component was not found in the tree",children:"Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"},[UK,E6]=RV(I6.context);var GK=Object.defineProperty,qK=Object.defineProperties,KK=Object.getOwnPropertyDescriptors,sm=Object.getOwnPropertySymbols,O6=Object.prototype.hasOwnProperty,M6=Object.prototype.propertyIsEnumerable,X4=(e,t,n)=>t in e?GK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Lp=(e,t)=>{for(var n in t||(t={}))O6.call(t,n)&&X4(e,n,t[n]);if(sm)for(var n of sm(t))M6.call(t,n)&&X4(e,n,t[n]);return e},XK=(e,t)=>qK(e,KK(t)),QK=(e,t)=>{var n={};for(var r in e)O6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&sm)for(var r of sm(e))t.indexOf(r)<0&&M6.call(e,r)&&(n[r]=e[r]);return n};const YK={refProp:"ref",popupType:"dialog"},R6=u.forwardRef((e,t)=>{const n=_r("PopoverTarget",YK,e),{children:r,refProp:o,popupType:s}=n,i=QK(n,["children","refProp","popupType"]);if(!aI(r))throw new Error(I6.children);const c=i,f=E6(),p=_f(f.reference,r.ref,t),h=f.withRoles?{"aria-haspopup":s,"aria-expanded":f.opened,"aria-controls":f.getDropdownId(),id:f.getTargetId()}:{};return u.cloneElement(r,Lp(XK(Lp(Lp(Lp({},c),h),f.targetProps),{className:lI(f.targetProps.className,c.className,r.props.className),[o]:p}),f.controlled?null:{onClick:f.onToggle}))});R6.displayName="@mantine/core/PopoverTarget";var JK=fo((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${Ge(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,padding:`${e.spacing.sm} ${e.spacing.md}`,boxShadow:e.shadows[n]||n||"none",borderRadius:e.fn.radius(t),"&:focus":{outline:0}},arrow:{backgroundColor:"inherit",border:`${Ge(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const ZK=JK;var eX=Object.defineProperty,Q4=Object.getOwnPropertySymbols,tX=Object.prototype.hasOwnProperty,nX=Object.prototype.propertyIsEnumerable,Y4=(e,t,n)=>t in e?eX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yc=(e,t)=>{for(var n in t||(t={}))tX.call(t,n)&&Y4(e,n,t[n]);if(Q4)for(var n of Q4(t))nX.call(t,n)&&Y4(e,n,t[n]);return e};const J4={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function rX({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in Op?yc(yc(yc({transitionProperty:Op[e].transitionProperty},o),Op[e].common),Op[e][J4[t]]):null:yc(yc(yc({transitionProperty:e.transitionProperty},o),e.common),e[J4[t]])}function oX({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:i,onExited:c}){const f=pi(),p=mI(),h=f.respectReducedMotion?p:!1,[m,v]=u.useState(h?0:e),[b,y]=u.useState(r?"entered":"exited"),x=u.useRef(-1),C=k=>{const j=k?o:s,_=k?i:c;y(k?"pre-entering":"pre-exiting"),window.clearTimeout(x.current);const I=h?0:k?e:t;if(v(I),I===0)typeof j=="function"&&j(),typeof _=="function"&&_(),y(k?"entered":"exited");else{const O=window.setTimeout(()=>{typeof j=="function"&&j(),y(k?"entering":"exiting")},10);x.current=window.setTimeout(()=>{window.clearTimeout(O),typeof _=="function"&&_(),y(k?"entered":"exited")},I)}};return Hs(()=>{C(r)},[r]),u.useEffect(()=>()=>window.clearTimeout(x.current),[]),{transitionDuration:m,transitionStatus:b,transitionTimingFunction:n||f.transitionTimingFunction}}function D6({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:i,onExit:c,onEntered:f,onEnter:p,onExited:h}){const{transitionDuration:m,transitionStatus:v,transitionTimingFunction:b}=oX({mounted:o,exitDuration:r,duration:n,timingFunction:i,onExit:c,onEntered:f,onEnter:p,onExited:h});return m===0?o?H.createElement(H.Fragment,null,s({})):e?s({display:"none"}):null:v==="exited"?e?s({display:"none"}):null:H.createElement(H.Fragment,null,s(rX({transition:t,duration:m,state:v,timingFunction:b})))}D6.displayName="@mantine/core/Transition";function A6({children:e,active:t=!0,refProp:n="ref"}){const r=fU(t),o=_f(r,e==null?void 0:e.ref);return aI(e)?u.cloneElement(e,{[n]:o}):e}A6.displayName="@mantine/core/FocusTrap";var sX=Object.defineProperty,aX=Object.defineProperties,iX=Object.getOwnPropertyDescriptors,Z4=Object.getOwnPropertySymbols,lX=Object.prototype.hasOwnProperty,cX=Object.prototype.propertyIsEnumerable,ek=(e,t,n)=>t in e?sX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_i=(e,t)=>{for(var n in t||(t={}))lX.call(t,n)&&ek(e,n,t[n]);if(Z4)for(var n of Z4(t))cX.call(t,n)&&ek(e,n,t[n]);return e},Fp=(e,t)=>aX(e,iX(t));function tk(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function nk(e,t,n,r,o){return e==="center"||r==="center"?{left:t}:e==="end"?{[o==="ltr"?"right":"left"]:n}:e==="start"?{[o==="ltr"?"left":"right"]:n}:{}}const uX={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function dX({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:i,dir:c}){const[f,p="center"]=e.split("-"),h={width:Ge(t),height:Ge(t),transform:"rotate(45deg)",position:"absolute",[uX[f]]:Ge(r)},m=Ge(-t/2);return f==="left"?Fp(_i(_i({},h),tk(p,i,n,o)),{right:m,borderLeftColor:"transparent",borderBottomColor:"transparent"}):f==="right"?Fp(_i(_i({},h),tk(p,i,n,o)),{left:m,borderRightColor:"transparent",borderTopColor:"transparent"}):f==="top"?Fp(_i(_i({},h),nk(p,s,n,o,c)),{bottom:m,borderTopColor:"transparent",borderLeftColor:"transparent"}):f==="bottom"?Fp(_i(_i({},h),nk(p,s,n,o,c)),{top:m,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var fX=Object.defineProperty,pX=Object.defineProperties,hX=Object.getOwnPropertyDescriptors,am=Object.getOwnPropertySymbols,N6=Object.prototype.hasOwnProperty,T6=Object.prototype.propertyIsEnumerable,rk=(e,t,n)=>t in e?fX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mX=(e,t)=>{for(var n in t||(t={}))N6.call(t,n)&&rk(e,n,t[n]);if(am)for(var n of am(t))T6.call(t,n)&&rk(e,n,t[n]);return e},gX=(e,t)=>pX(e,hX(t)),vX=(e,t)=>{var n={};for(var r in e)N6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&am)for(var r of am(e))t.indexOf(r)<0&&T6.call(e,r)&&(n[r]=e[r]);return n};const $6=u.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:c,visible:f,arrowX:p,arrowY:h}=n,m=vX(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=pi();return f?H.createElement("div",gX(mX({},m),{ref:t,style:dX({position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:c,dir:v.dir,arrowX:p,arrowY:h})})):null});$6.displayName="@mantine/core/FloatingArrow";var bX=Object.defineProperty,xX=Object.defineProperties,yX=Object.getOwnPropertyDescriptors,im=Object.getOwnPropertySymbols,L6=Object.prototype.hasOwnProperty,F6=Object.prototype.propertyIsEnumerable,ok=(e,t,n)=>t in e?bX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wc=(e,t)=>{for(var n in t||(t={}))L6.call(t,n)&&ok(e,n,t[n]);if(im)for(var n of im(t))F6.call(t,n)&&ok(e,n,t[n]);return e},zp=(e,t)=>xX(e,yX(t)),wX=(e,t)=>{var n={};for(var r in e)L6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&im)for(var r of im(e))t.indexOf(r)<0&&F6.call(e,r)&&(n[r]=e[r]);return n};const CX={};function z6(e){var t;const n=_r("PopoverDropdown",CX,e),{style:r,className:o,children:s,onKeyDownCapture:i}=n,c=wX(n,["style","className","children","onKeyDownCapture"]),f=E6(),{classes:p,cx:h}=ZK({radius:f.radius,shadow:f.shadow},{name:f.__staticSelector,classNames:f.classNames,styles:f.styles,unstyled:f.unstyled,variant:f.variant}),m=sU({opened:f.opened,shouldReturnFocus:f.returnFocus}),v=f.withRoles?{"aria-labelledby":f.getTargetId(),id:f.getDropdownId(),role:"dialog"}:{};return f.disabled?null:H.createElement(zI,zp(wc({},f.portalProps),{withinPortal:f.withinPortal}),H.createElement(D6,zp(wc({mounted:f.opened},f.transitionProps),{transition:f.transitionProps.transition||"fade",duration:(t=f.transitionProps.duration)!=null?t:150,keepMounted:f.keepMounted,exitDuration:typeof f.transitionProps.exitDuration=="number"?f.transitionProps.exitDuration:f.transitionProps.duration}),b=>{var y,x;return H.createElement(A6,{active:f.trapFocus},H.createElement(No,wc(zp(wc({},v),{tabIndex:-1,ref:f.floating,style:zp(wc(wc({},r),b),{zIndex:f.zIndex,top:(y=f.y)!=null?y:0,left:(x=f.x)!=null?x:0,width:f.width==="target"?void 0:Ge(f.width)}),className:h(p.dropdown,o),onKeyDownCapture:AV(f.onClose,{active:f.closeOnEscape,onTrigger:m,onKeyDown:i}),"data-position":f.placement}),c),s,H.createElement($6,{ref:f.arrowRef,arrowX:f.arrowX,arrowY:f.arrowY,visible:f.withArrow,position:f.placement,arrowSize:f.arrowSize,arrowRadius:f.arrowRadius,arrowOffset:f.arrowOffset,arrowPosition:f.arrowPosition,className:p.arrow})))}))}z6.displayName="@mantine/core/PopoverDropdown";function SX(e,t){if(e==="rtl"&&(t.includes("right")||t.includes("left"))){const[n,r]=t.split("-"),o=n==="right"?"left":"right";return r===void 0?o:`${o}-${r}`}return t}var sk=Object.getOwnPropertySymbols,kX=Object.prototype.hasOwnProperty,jX=Object.prototype.propertyIsEnumerable,_X=(e,t)=>{var n={};for(var r in e)kX.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&sk)for(var r of sk(e))t.indexOf(r)<0&&jX.call(e,r)&&(n[r]=e[r]);return n};const PX={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!1,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,clickOutsideEvents:["mousedown","touchstart"],zIndex:cy("popover"),__staticSelector:"Popover",width:"max-content"};function Ru(e){var t,n,r,o,s,i;const c=u.useRef(null),f=_r("Popover",PX,e),{children:p,position:h,offset:m,onPositionChange:v,positionDependencies:b,opened:y,transitionProps:x,width:C,middlewares:k,withArrow:j,arrowSize:_,arrowOffset:I,arrowRadius:O,arrowPosition:E,unstyled:M,classNames:R,styles:A,closeOnClickOutside:D,withinPortal:T,portalProps:K,closeOnEscape:B,clickOutsideEvents:G,trapFocus:Q,onClose:V,onOpen:L,onChange:X,zIndex:F,radius:q,shadow:te,id:Y,defaultOpened:ce,__staticSelector:ae,withRoles:U,disabled:W,returnFocus:ne,variant:ie,keepMounted:oe}=f,me=_X(f,["children","position","offset","onPositionChange","positionDependencies","opened","transitionProps","width","middlewares","withArrow","arrowSize","arrowOffset","arrowRadius","arrowPosition","unstyled","classNames","styles","closeOnClickOutside","withinPortal","portalProps","closeOnEscape","clickOutsideEvents","trapFocus","onClose","onOpen","onChange","zIndex","radius","shadow","id","defaultOpened","__staticSelector","withRoles","disabled","returnFocus","variant","keepMounted"]),[fe,he]=u.useState(null),[Ce,xe]=u.useState(null),de=dy(Y),Ne=pi(),De=VK({middlewares:k,width:C,position:SX(Ne.dir,h),offset:typeof m=="number"?m+(j?_/2:0):m,arrowRef:c,arrowOffset:I,onPositionChange:v,positionDependencies:b,opened:y,defaultOpened:ce,onChange:X,onOpen:L,onClose:V});tU(()=>De.opened&&D&&De.onClose(),G,[fe,Ce]);const Xe=u.useCallback(lt=>{he(lt),De.floating.reference(lt)},[De.floating.reference]),It=u.useCallback(lt=>{xe(lt),De.floating.floating(lt)},[De.floating.floating]);return H.createElement(UK,{value:{returnFocus:ne,disabled:W,controlled:De.controlled,reference:Xe,floating:It,x:De.floating.x,y:De.floating.y,arrowX:(r=(n=(t=De.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(i=(s=(o=De.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:i.y,opened:De.opened,arrowRef:c,transitionProps:x,width:C,withArrow:j,arrowSize:_,arrowOffset:I,arrowRadius:O,arrowPosition:E,placement:De.floating.placement,trapFocus:Q,withinPortal:T,portalProps:K,zIndex:F,radius:q,shadow:te,closeOnEscape:B,onClose:De.onClose,onToggle:De.onToggle,getTargetId:()=>`${de}-target`,getDropdownId:()=>`${de}-dropdown`,withRoles:U,targetProps:me,__staticSelector:ae,classNames:R,styles:A,unstyled:M,variant:ie,keepMounted:oe}},p)}Ru.Target=R6;Ru.Dropdown=z6;Ru.displayName="@mantine/core/Popover";var IX=Object.defineProperty,lm=Object.getOwnPropertySymbols,B6=Object.prototype.hasOwnProperty,H6=Object.prototype.propertyIsEnumerable,ak=(e,t,n)=>t in e?IX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,EX=(e,t)=>{for(var n in t||(t={}))B6.call(t,n)&&ak(e,n,t[n]);if(lm)for(var n of lm(t))H6.call(t,n)&&ak(e,n,t[n]);return e},OX=(e,t)=>{var n={};for(var r in e)B6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&lm)for(var r of lm(e))t.indexOf(r)<0&&H6.call(e,r)&&(n[r]=e[r]);return n};function MX(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:i,innerRef:c,__staticSelector:f,styles:p,classNames:h,unstyled:m}=t,v=OX(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:b}=fK(null,{name:f,styles:p,classNames:h,unstyled:m});return H.createElement(Ru.Dropdown,EX({p:0,onMouseDown:y=>y.preventDefault()},v),H.createElement("div",{style:{maxHeight:Ge(o),display:"flex"}},H.createElement(No,{component:r||"div",id:`${i}-items`,"aria-labelledby":`${i}-label`,role:"listbox",onMouseDown:y=>y.preventDefault(),style:{flex:1,overflowY:r!==jg?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:c},H.createElement("div",{className:b.itemsWrapper,style:{flexDirection:s}},n))))}function zi({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:i,onDirectionChange:c,switchDirectionOnFlip:f,zIndex:p,dropdownPosition:h,positionDependencies:m=[],classNames:v,styles:b,unstyled:y,readOnly:x,variant:C}){return H.createElement(Ru,{unstyled:y,classNames:v,styles:b,width:"target",withRoles:!1,opened:e,middlewares:{flip:h==="flip",shift:!1},position:h==="flip"?"bottom":h,positionDependencies:m,zIndex:p,__staticSelector:i,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:x,onPositionChange:k=>f&&(c==null?void 0:c(k==="top"?"column-reverse":"column")),variant:C},s)}zi.Target=Ru.Target;zi.Dropdown=MX;var RX=Object.defineProperty,DX=Object.defineProperties,AX=Object.getOwnPropertyDescriptors,cm=Object.getOwnPropertySymbols,W6=Object.prototype.hasOwnProperty,V6=Object.prototype.propertyIsEnumerable,ik=(e,t,n)=>t in e?RX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bp=(e,t)=>{for(var n in t||(t={}))W6.call(t,n)&&ik(e,n,t[n]);if(cm)for(var n of cm(t))V6.call(t,n)&&ik(e,n,t[n]);return e},NX=(e,t)=>DX(e,AX(t)),TX=(e,t)=>{var n={};for(var r in e)W6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&cm)for(var r of cm(e))t.indexOf(r)<0&&V6.call(e,r)&&(n[r]=e[r]);return n};function U6(e,t,n){const r=_r(e,t,n),{label:o,description:s,error:i,required:c,classNames:f,styles:p,className:h,unstyled:m,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:C,wrapperProps:k,id:j,size:_,style:I,inputContainer:O,inputWrapperOrder:E,withAsterisk:M,variant:R}=r,A=TX(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),D=dy(j),{systemStyles:T,rest:K}=wg(A),B=Bp({label:o,description:s,error:i,required:c,classNames:f,className:h,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:C,unstyled:m,styles:p,id:D,size:_,style:I,inputContainer:O,inputWrapperOrder:E,withAsterisk:M,variant:R},k);return NX(Bp({},K),{classNames:f,styles:p,unstyled:m,wrapperProps:Bp(Bp({},B),T),inputProps:{required:c,classNames:f,styles:p,unstyled:m,id:D,size:_,__staticSelector:v,error:i,variant:R}})}var $X=fo((e,t,{size:n})=>({label:{display:"inline-block",fontSize:Gt({size:n,sizes:e.fontSizes}),fontWeight:500,color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[9],wordBreak:"break-word",cursor:"default",WebkitTapHighlightColor:"transparent"},required:{color:e.fn.variant({variant:"filled",color:"red"}).background}}));const LX=$X;var FX=Object.defineProperty,um=Object.getOwnPropertySymbols,G6=Object.prototype.hasOwnProperty,q6=Object.prototype.propertyIsEnumerable,lk=(e,t,n)=>t in e?FX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zX=(e,t)=>{for(var n in t||(t={}))G6.call(t,n)&&lk(e,n,t[n]);if(um)for(var n of um(t))q6.call(t,n)&&lk(e,n,t[n]);return e},BX=(e,t)=>{var n={};for(var r in e)G6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&um)for(var r of um(e))t.indexOf(r)<0&&q6.call(e,r)&&(n[r]=e[r]);return n};const HX={labelElement:"label",size:"sm"},yy=u.forwardRef((e,t)=>{const n=_r("InputLabel",HX,e),{labelElement:r,children:o,required:s,size:i,classNames:c,styles:f,unstyled:p,className:h,htmlFor:m,__staticSelector:v,variant:b,onMouseDown:y}=n,x=BX(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:C,cx:k}=LX(null,{name:["InputWrapper",v],classNames:c,styles:f,unstyled:p,variant:b,size:i});return H.createElement(No,zX({component:r,ref:t,className:k(C.label,h),htmlFor:r==="label"?m:void 0,onMouseDown:j=>{y==null||y(j),!j.defaultPrevented&&j.detail>1&&j.preventDefault()}},x),o,s&&H.createElement("span",{className:C.required,"aria-hidden":!0}," *"))});yy.displayName="@mantine/core/InputLabel";var WX=fo((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${Gt({size:n,sizes:e.fontSizes})} - ${Ge(2)})`,lineHeight:1.2,display:"block"}}));const VX=WX;var UX=Object.defineProperty,dm=Object.getOwnPropertySymbols,K6=Object.prototype.hasOwnProperty,X6=Object.prototype.propertyIsEnumerable,ck=(e,t,n)=>t in e?UX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,GX=(e,t)=>{for(var n in t||(t={}))K6.call(t,n)&&ck(e,n,t[n]);if(dm)for(var n of dm(t))X6.call(t,n)&&ck(e,n,t[n]);return e},qX=(e,t)=>{var n={};for(var r in e)K6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&dm)for(var r of dm(e))t.indexOf(r)<0&&X6.call(e,r)&&(n[r]=e[r]);return n};const KX={size:"sm"},wy=u.forwardRef((e,t)=>{const n=_r("InputError",KX,e),{children:r,className:o,classNames:s,styles:i,unstyled:c,size:f,__staticSelector:p,variant:h}=n,m=qX(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=VX(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:c,variant:h,size:f});return H.createElement(pu,GX({className:b(v.error,o),ref:t},m),r)});wy.displayName="@mantine/core/InputError";var XX=fo((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${Gt({size:n,sizes:e.fontSizes})} - ${Ge(2)})`,lineHeight:1.2,display:"block"}}));const QX=XX;var YX=Object.defineProperty,fm=Object.getOwnPropertySymbols,Q6=Object.prototype.hasOwnProperty,Y6=Object.prototype.propertyIsEnumerable,uk=(e,t,n)=>t in e?YX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,JX=(e,t)=>{for(var n in t||(t={}))Q6.call(t,n)&&uk(e,n,t[n]);if(fm)for(var n of fm(t))Y6.call(t,n)&&uk(e,n,t[n]);return e},ZX=(e,t)=>{var n={};for(var r in e)Q6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&fm)for(var r of fm(e))t.indexOf(r)<0&&Y6.call(e,r)&&(n[r]=e[r]);return n};const eQ={size:"sm"},Cy=u.forwardRef((e,t)=>{const n=_r("InputDescription",eQ,e),{children:r,className:o,classNames:s,styles:i,unstyled:c,size:f,__staticSelector:p,variant:h}=n,m=ZX(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=QX(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:c,variant:h,size:f});return H.createElement(pu,JX({color:"dimmed",className:b(v.description,o),ref:t,unstyled:c},m),r)});Cy.displayName="@mantine/core/InputDescription";const J6=u.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),tQ=J6.Provider,nQ=()=>u.useContext(J6);function rQ(e,{hasDescription:t,hasError:n}){const r=e.findIndex(f=>f==="input"),o=e[r-1],s=e[r+1];return{offsetBottom:t&&s==="description"||n&&s==="error",offsetTop:t&&o==="description"||n&&o==="error"}}var oQ=Object.defineProperty,sQ=Object.defineProperties,aQ=Object.getOwnPropertyDescriptors,dk=Object.getOwnPropertySymbols,iQ=Object.prototype.hasOwnProperty,lQ=Object.prototype.propertyIsEnumerable,fk=(e,t,n)=>t in e?oQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,cQ=(e,t)=>{for(var n in t||(t={}))iQ.call(t,n)&&fk(e,n,t[n]);if(dk)for(var n of dk(t))lQ.call(t,n)&&fk(e,n,t[n]);return e},uQ=(e,t)=>sQ(e,aQ(t)),dQ=fo(e=>({root:uQ(cQ({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const fQ=dQ;var pQ=Object.defineProperty,hQ=Object.defineProperties,mQ=Object.getOwnPropertyDescriptors,pm=Object.getOwnPropertySymbols,Z6=Object.prototype.hasOwnProperty,eE=Object.prototype.propertyIsEnumerable,pk=(e,t,n)=>t in e?pQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pi=(e,t)=>{for(var n in t||(t={}))Z6.call(t,n)&&pk(e,n,t[n]);if(pm)for(var n of pm(t))eE.call(t,n)&&pk(e,n,t[n]);return e},hk=(e,t)=>hQ(e,mQ(t)),gQ=(e,t)=>{var n={};for(var r in e)Z6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&pm)for(var r of pm(e))t.indexOf(r)<0&&eE.call(e,r)&&(n[r]=e[r]);return n};const vQ={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},tE=u.forwardRef((e,t)=>{const n=_r("InputWrapper",vQ,e),{className:r,label:o,children:s,required:i,id:c,error:f,description:p,labelElement:h,labelProps:m,descriptionProps:v,errorProps:b,classNames:y,styles:x,size:C,inputContainer:k,__staticSelector:j,unstyled:_,inputWrapperOrder:I,withAsterisk:O,variant:E}=n,M=gQ(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:R,cx:A}=fQ(null,{classNames:y,styles:x,name:["InputWrapper",j],unstyled:_,variant:E,size:C}),D={classNames:y,styles:x,unstyled:_,size:C,variant:E,__staticSelector:j},T=typeof O=="boolean"?O:i,K=c?`${c}-error`:b==null?void 0:b.id,B=c?`${c}-description`:v==null?void 0:v.id,Q=`${!!f&&typeof f!="boolean"?K:""} ${p?B:""}`,V=Q.trim().length>0?Q.trim():void 0,L=o&&H.createElement(yy,Pi(Pi({key:"label",labelElement:h,id:c?`${c}-label`:void 0,htmlFor:c,required:T},D),m),o),X=p&&H.createElement(Cy,hk(Pi(Pi({key:"description"},v),D),{size:(v==null?void 0:v.size)||D.size,id:(v==null?void 0:v.id)||B}),p),F=H.createElement(u.Fragment,{key:"input"},k(s)),q=typeof f!="boolean"&&f&&H.createElement(wy,hk(Pi(Pi({},b),D),{size:(b==null?void 0:b.size)||D.size,key:"error",id:(b==null?void 0:b.id)||K}),f),te=I.map(Y=>{switch(Y){case"label":return L;case"input":return F;case"description":return X;case"error":return q;default:return null}});return H.createElement(tQ,{value:Pi({describedBy:V},rQ(I,{hasDescription:!!X,hasError:!!q}))},H.createElement(No,Pi({className:A(R.root,r),ref:t},M),te))});tE.displayName="@mantine/core/InputWrapper";var bQ=Object.defineProperty,hm=Object.getOwnPropertySymbols,nE=Object.prototype.hasOwnProperty,rE=Object.prototype.propertyIsEnumerable,mk=(e,t,n)=>t in e?bQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,xQ=(e,t)=>{for(var n in t||(t={}))nE.call(t,n)&&mk(e,n,t[n]);if(hm)for(var n of hm(t))rE.call(t,n)&&mk(e,n,t[n]);return e},yQ=(e,t)=>{var n={};for(var r in e)nE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&hm)for(var r of hm(e))t.indexOf(r)<0&&rE.call(e,r)&&(n[r]=e[r]);return n};const wQ={},oE=u.forwardRef((e,t)=>{const n=_r("InputPlaceholder",wQ,e),{sx:r}=n,o=yQ(n,["sx"]);return H.createElement(No,xQ({component:"span",sx:[s=>s.fn.placeholderStyles(),...oI(r)],ref:t},o))});oE.displayName="@mantine/core/InputPlaceholder";var CQ=Object.defineProperty,SQ=Object.defineProperties,kQ=Object.getOwnPropertyDescriptors,gk=Object.getOwnPropertySymbols,jQ=Object.prototype.hasOwnProperty,_Q=Object.prototype.propertyIsEnumerable,vk=(e,t,n)=>t in e?CQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hp=(e,t)=>{for(var n in t||(t={}))jQ.call(t,n)&&vk(e,n,t[n]);if(gk)for(var n of gk(t))_Q.call(t,n)&&vk(e,n,t[n]);return e},Bv=(e,t)=>SQ(e,kQ(t));const ls={xs:Ge(30),sm:Ge(36),md:Ge(42),lg:Ge(50),xl:Ge(60)},PQ=["default","filled","unstyled"];function IQ({theme:e,variant:t}){return PQ.includes(t)?t==="default"?{border:`${Ge(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]}`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,transition:"border-color 100ms ease","&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:t==="filled"?{border:`${Ge(1)} solid transparent`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[1],"&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:{borderWidth:0,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,backgroundColor:"transparent",minHeight:Ge(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var EQ=fo((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:i,offsetBottom:c,offsetTop:f,pointer:p},{variant:h,size:m})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,b=h==="default"||h==="filled"?{minHeight:Gt({size:m,sizes:ls}),paddingLeft:`calc(${Gt({size:m,sizes:ls})} / 3)`,paddingRight:s?o||Gt({size:m,sizes:ls}):`calc(${Gt({size:m,sizes:ls})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||Gt({size:m,sizes:ls})}:null;return{wrapper:{position:"relative",marginTop:f?`calc(${e.spacing.xs} / 2)`:void 0,marginBottom:c?`calc(${e.spacing.xs} / 2)`:void 0,"&:has(input:disabled)":{"& .mantine-Input-rightSection":{display:"none"}}},input:Bv(Hp(Hp(Bv(Hp({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":Gt({size:m,sizes:ls}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${Gt({size:m,sizes:ls})} - ${Ge(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:Gt({size:m,sizes:e.fontSizes}),width:"100%",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,display:"block",textAlign:"left",cursor:p?"pointer":void 0}),IQ({theme:e,variant:h})),b),{"&:disabled, &[data-disabled]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,cursor:"not-allowed",pointerEvents:"none","&::placeholder":{color:e.colors.dark[2]}},"&[data-invalid]":{color:v,borderColor:v,"&::placeholder":{opacity:1,color:v}},"&[data-with-icon]":{paddingLeft:typeof i=="number"?Ge(i):Gt({size:m,sizes:ls})},"&::placeholder":Bv(Hp({},e.fn.placeholderStyles()),{opacity:1}),"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button, &::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{appearance:"none"},"&[type=number]":{MozAppearance:"textfield"}}),icon:{pointerEvents:"none",position:"absolute",zIndex:1,left:0,top:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",width:i?Ge(i):Gt({size:m,sizes:ls}),color:r?e.colors.red[e.colorScheme==="dark"?6:7]:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[5]},rightSection:{position:"absolute",top:0,bottom:0,right:0,display:"flex",alignItems:"center",justifyContent:"center",width:o||Gt({size:m,sizes:ls})}}});const OQ=EQ;var MQ=Object.defineProperty,RQ=Object.defineProperties,DQ=Object.getOwnPropertyDescriptors,mm=Object.getOwnPropertySymbols,sE=Object.prototype.hasOwnProperty,aE=Object.prototype.propertyIsEnumerable,bk=(e,t,n)=>t in e?MQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wp=(e,t)=>{for(var n in t||(t={}))sE.call(t,n)&&bk(e,n,t[n]);if(mm)for(var n of mm(t))aE.call(t,n)&&bk(e,n,t[n]);return e},xk=(e,t)=>RQ(e,DQ(t)),AQ=(e,t)=>{var n={};for(var r in e)sE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&mm)for(var r of mm(e))t.indexOf(r)<0&&aE.call(e,r)&&(n[r]=e[r]);return n};const NQ={size:"sm",variant:"default"},Ql=u.forwardRef((e,t)=>{const n=_r("Input",NQ,e),{className:r,error:o,required:s,disabled:i,variant:c,icon:f,style:p,rightSectionWidth:h,iconWidth:m,rightSection:v,rightSectionProps:b,radius:y,size:x,wrapperProps:C,classNames:k,styles:j,__staticSelector:_,multiline:I,sx:O,unstyled:E,pointer:M}=n,R=AQ(n,["className","error","required","disabled","variant","icon","style","rightSectionWidth","iconWidth","rightSection","rightSectionProps","radius","size","wrapperProps","classNames","styles","__staticSelector","multiline","sx","unstyled","pointer"]),{offsetBottom:A,offsetTop:D,describedBy:T}=nQ(),{classes:K,cx:B}=OQ({radius:y,multiline:I,invalid:!!o,rightSectionWidth:h?Ge(h):void 0,iconWidth:m,withRightSection:!!v,offsetBottom:A,offsetTop:D,pointer:M},{classNames:k,styles:j,name:["Input",_],unstyled:E,variant:c,size:x}),{systemStyles:G,rest:Q}=wg(R);return H.createElement(No,Wp(Wp({className:B(K.wrapper,r),sx:O,style:p},G),C),f&&H.createElement("div",{className:K.icon},f),H.createElement(No,xk(Wp({component:"input"},Q),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":T,disabled:i,"data-disabled":i||void 0,"data-with-icon":!!f||void 0,"data-invalid":!!o||void 0,className:K.input})),v&&H.createElement("div",xk(Wp({},b),{className:K.rightSection}),v))});Ql.displayName="@mantine/core/Input";Ql.Wrapper=tE;Ql.Label=yy;Ql.Description=Cy;Ql.Error=wy;Ql.Placeholder=oE;const vu=Ql;var TQ=Object.defineProperty,gm=Object.getOwnPropertySymbols,iE=Object.prototype.hasOwnProperty,lE=Object.prototype.propertyIsEnumerable,yk=(e,t,n)=>t in e?TQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wk=(e,t)=>{for(var n in t||(t={}))iE.call(t,n)&&yk(e,n,t[n]);if(gm)for(var n of gm(t))lE.call(t,n)&&yk(e,n,t[n]);return e},$Q=(e,t)=>{var n={};for(var r in e)iE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&gm)for(var r of gm(e))t.indexOf(r)<0&&lE.call(e,r)&&(n[r]=e[r]);return n};const LQ={multiple:!1},cE=u.forwardRef((e,t)=>{const n=_r("FileButton",LQ,e),{onChange:r,children:o,multiple:s,accept:i,name:c,form:f,resetRef:p,disabled:h,capture:m,inputProps:v}=n,b=$Q(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),y=u.useRef(),x=()=>{!h&&y.current.click()},C=j=>{r(s?Array.from(j.currentTarget.files):j.currentTarget.files[0]||null)};return hI(p,()=>{y.current.value=""}),H.createElement(H.Fragment,null,o(wk({onClick:x},b)),H.createElement("input",wk({style:{display:"none"},type:"file",accept:i,multiple:s,onChange:C,ref:_f(t,y),name:c,form:f,capture:m},v)))});cE.displayName="@mantine/core/FileButton";const uE={xs:Ge(16),sm:Ge(22),md:Ge(26),lg:Ge(30),xl:Ge(36)},FQ={xs:Ge(10),sm:Ge(12),md:Ge(14),lg:Ge(16),xl:Ge(18)};var zQ=fo((e,{disabled:t,radius:n,readOnly:r},{size:o,variant:s})=>({defaultValue:{display:"flex",alignItems:"center",backgroundColor:t?e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3]:e.colorScheme==="dark"?e.colors.dark[7]:s==="filled"?e.white:e.colors.gray[1],color:t?e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],height:Gt({size:o,sizes:uE}),paddingLeft:`calc(${Gt({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?Gt({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:Gt({size:o,sizes:FQ}),borderRadius:Gt({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${Ge(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${Gt({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const BQ=zQ;var HQ=Object.defineProperty,vm=Object.getOwnPropertySymbols,dE=Object.prototype.hasOwnProperty,fE=Object.prototype.propertyIsEnumerable,Ck=(e,t,n)=>t in e?HQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WQ=(e,t)=>{for(var n in t||(t={}))dE.call(t,n)&&Ck(e,n,t[n]);if(vm)for(var n of vm(t))fE.call(t,n)&&Ck(e,n,t[n]);return e},VQ=(e,t)=>{var n={};for(var r in e)dE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&vm)for(var r of vm(e))t.indexOf(r)<0&&fE.call(e,r)&&(n[r]=e[r]);return n};const UQ={xs:16,sm:22,md:24,lg:26,xl:30};function pE(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:i,disabled:c,readOnly:f,size:p,radius:h="sm",variant:m,unstyled:v}=t,b=VQ(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:y,cx:x}=BQ({disabled:c,readOnly:f,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:m});return H.createElement("div",WQ({className:x(y.defaultValue,s)},b),H.createElement("span",{className:y.defaultValueLabel},n),!c&&!f&&H.createElement(qI,{"aria-hidden":!0,onMouseDown:i,size:UQ[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:y.defaultValueRemove,tabIndex:-1,unstyled:v}))}pE.displayName="@mantine/core/MultiSelect/DefaultValue";function GQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:i}){if(!t&&s.length===0)return e;if(!t){const f=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&f.push(e[p]);return f}const c=[];for(let f=0;fp===e[f].value&&!e[f].disabled),e[f])&&c.push(e[f]),!(c.length>=n));f+=1);return c}var qQ=Object.defineProperty,bm=Object.getOwnPropertySymbols,hE=Object.prototype.hasOwnProperty,mE=Object.prototype.propertyIsEnumerable,Sk=(e,t,n)=>t in e?qQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,kk=(e,t)=>{for(var n in t||(t={}))hE.call(t,n)&&Sk(e,n,t[n]);if(bm)for(var n of bm(t))mE.call(t,n)&&Sk(e,n,t[n]);return e},KQ=(e,t)=>{var n={};for(var r in e)hE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&bm)for(var r of bm(e))t.indexOf(r)<0&&mE.call(e,r)&&(n[r]=e[r]);return n};const XQ={xs:Ge(14),sm:Ge(18),md:Ge(20),lg:Ge(24),xl:Ge(28)};function QQ(e){var t=e,{size:n,error:r,style:o}=t,s=KQ(t,["size","error","style"]);const i=pi(),c=Gt({size:n,sizes:XQ});return H.createElement("svg",kk({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:kk({color:r?i.colors.red[6]:i.colors.gray[6],width:c,height:c},o),"data-chevron":!0},s),H.createElement("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}var YQ=Object.defineProperty,JQ=Object.defineProperties,ZQ=Object.getOwnPropertyDescriptors,jk=Object.getOwnPropertySymbols,eY=Object.prototype.hasOwnProperty,tY=Object.prototype.propertyIsEnumerable,_k=(e,t,n)=>t in e?YQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nY=(e,t)=>{for(var n in t||(t={}))eY.call(t,n)&&_k(e,n,t[n]);if(jk)for(var n of jk(t))tY.call(t,n)&&_k(e,n,t[n]);return e},rY=(e,t)=>JQ(e,ZQ(t));function gE({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?H.createElement(qI,rY(nY({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):H.createElement(QQ,{error:o,size:r})}gE.displayName="@mantine/core/SelectRightSection";var oY=Object.defineProperty,sY=Object.defineProperties,aY=Object.getOwnPropertyDescriptors,xm=Object.getOwnPropertySymbols,vE=Object.prototype.hasOwnProperty,bE=Object.prototype.propertyIsEnumerable,Pk=(e,t,n)=>t in e?oY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hv=(e,t)=>{for(var n in t||(t={}))vE.call(t,n)&&Pk(e,n,t[n]);if(xm)for(var n of xm(t))bE.call(t,n)&&Pk(e,n,t[n]);return e},Ik=(e,t)=>sY(e,aY(t)),iY=(e,t)=>{var n={};for(var r in e)vE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&xm)for(var r of xm(e))t.indexOf(r)<0&&bE.call(e,r)&&(n[r]=e[r]);return n};function xE(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,i=iY(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const c=typeof n=="function"?n(s):n;return{rightSection:!i.readOnly&&!(i.disabled&&i.shouldClear)&&H.createElement(gE,Hv({},i)),styles:Ik(Hv({},c),{rightSection:Ik(Hv({},c==null?void 0:c.rightSection),{pointerEvents:i.shouldClear?void 0:"none"})})}}var lY=Object.defineProperty,cY=Object.defineProperties,uY=Object.getOwnPropertyDescriptors,Ek=Object.getOwnPropertySymbols,dY=Object.prototype.hasOwnProperty,fY=Object.prototype.propertyIsEnumerable,Ok=(e,t,n)=>t in e?lY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pY=(e,t)=>{for(var n in t||(t={}))dY.call(t,n)&&Ok(e,n,t[n]);if(Ek)for(var n of Ek(t))fY.call(t,n)&&Ok(e,n,t[n]);return e},hY=(e,t)=>cY(e,uY(t)),mY=fo((e,{invalid:t},{size:n})=>({wrapper:{position:"relative","&:has(input:disabled)":{cursor:"not-allowed",pointerEvents:"none","& .mantine-MultiSelect-input":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,"&::placeholder":{color:e.colors.dark[2]}},"& .mantine-MultiSelect-defaultValue":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3],color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]}}},values:{minHeight:`calc(${Gt({size:n,sizes:ls})} - ${Ge(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:Gt({size:n,sizes:ls})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${Ge(2)}) calc(${e.spacing.xs} / 2)`},searchInput:hY(pY({},e.fn.fontStyles()),{flex:1,minWidth:Ge(60),backgroundColor:"transparent",border:0,outline:0,fontSize:Gt({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:Gt({size:n,sizes:uE}),"&::placeholder":{opacity:1,color:t?e.colors.red[e.fn.primaryShade()]:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]},"&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}),searchInputEmpty:{width:"100%"},searchInputInputHidden:{flex:0,width:0,minWidth:0,margin:0,overflow:"hidden"},searchInputPointer:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}},input:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}}));const gY=mY;var vY=Object.defineProperty,bY=Object.defineProperties,xY=Object.getOwnPropertyDescriptors,ym=Object.getOwnPropertySymbols,yE=Object.prototype.hasOwnProperty,wE=Object.prototype.propertyIsEnumerable,Mk=(e,t,n)=>t in e?vY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cc=(e,t)=>{for(var n in t||(t={}))yE.call(t,n)&&Mk(e,n,t[n]);if(ym)for(var n of ym(t))wE.call(t,n)&&Mk(e,n,t[n]);return e},Rk=(e,t)=>bY(e,xY(t)),yY=(e,t)=>{var n={};for(var r in e)yE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ym)for(var r of ym(e))t.indexOf(r)<0&&wE.call(e,r)&&(n[r]=e[r]);return n};function wY(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function CY(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function Dk(e,t){if(!Array.isArray(e))return;if(t.length===0)return[];const n=t.map(r=>typeof r=="object"?r.value:r);return e.filter(r=>n.includes(r))}const SY={size:"sm",valueComponent:pE,itemComponent:py,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:wY,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:CY,switchDirectionOnFlip:!1,zIndex:cy("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},CE=u.forwardRef((e,t)=>{const n=_r("MultiSelect",SY,e),{className:r,style:o,required:s,label:i,description:c,size:f,error:p,classNames:h,styles:m,wrapperProps:v,value:b,defaultValue:y,data:x,onChange:C,valueComponent:k,itemComponent:j,id:_,transitionProps:I,maxDropdownHeight:O,shadow:E,nothingFound:M,onFocus:R,onBlur:A,searchable:D,placeholder:T,filter:K,limit:B,clearSearchOnChange:G,clearable:Q,clearSearchOnBlur:V,variant:L,onSearchChange:X,searchValue:F,disabled:q,initiallyOpened:te,radius:Y,icon:ce,rightSection:ae,rightSectionWidth:U,creatable:W,getCreateLabel:ne,shouldCreate:ie,onCreate:oe,sx:me,dropdownComponent:fe,onDropdownClose:he,onDropdownOpen:Ce,maxSelectedValues:xe,withinPortal:de,portalProps:Ne,switchDirectionOnFlip:De,zIndex:Xe,selectOnBlur:It,name:lt,dropdownPosition:on,errorProps:gt,labelProps:bt,descriptionProps:ye,form:We,positionDependencies:Et,onKeyDown:zt,unstyled:we,inputContainer:xt,inputWrapperOrder:Nt,readOnly:Lt,withAsterisk:$e,clearButtonProps:Ke,hoverOnSearchChange:vn,disableSelectedItemFiltering:_e}=n,Ze=yY(n,["className","style","required","label","description","size","error","classNames","styles","wrapperProps","value","defaultValue","data","onChange","valueComponent","itemComponent","id","transitionProps","maxDropdownHeight","shadow","nothingFound","onFocus","onBlur","searchable","placeholder","filter","limit","clearSearchOnChange","clearable","clearSearchOnBlur","variant","onSearchChange","searchValue","disabled","initiallyOpened","radius","icon","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","onCreate","sx","dropdownComponent","onDropdownClose","onDropdownOpen","maxSelectedValues","withinPortal","portalProps","switchDirectionOnFlip","zIndex","selectOnBlur","name","dropdownPosition","errorProps","labelProps","descriptionProps","form","positionDependencies","onKeyDown","unstyled","inputContainer","inputWrapperOrder","readOnly","withAsterisk","clearButtonProps","hoverOnSearchChange","disableSelectedItemFiltering"]),{classes:Qe,cx:ct,theme:Ft}=gY({invalid:!!p},{name:"MultiSelect",classNames:h,styles:m,unstyled:we,size:f,variant:L}),{systemStyles:ir,rest:pn}=wg(Ze),ln=u.useRef(),Ur=u.useRef({}),wr=dy(_),[Hn,Wn]=u.useState(te),[Vn,Lr]=u.useState(-1),[Lo,Gr]=u.useState("column"),[qr,js]=Ud({value:F,defaultValue:"",finalValue:void 0,onChange:X}),[Fr,na]=u.useState(!1),{scrollIntoView:_s,targetRef:Ta,scrollableRef:ra}=gI({duration:0,offset:5,cancelable:!1,isList:!0}),J=W&&typeof ne=="function";let ee=null;const ge=x.map(Be=>typeof Be=="string"?{label:Be,value:Be}:Be),je=sI({data:ge}),[ve,dt]=Ud({value:Dk(b,x),defaultValue:Dk(y,x),finalValue:[],onChange:C}),st=u.useRef(!!xe&&xe{if(!Lt){const vt=ve.filter(Dt=>Dt!==Be);dt(vt),xe&&vt.length{js(Be.currentTarget.value),!q&&!st.current&&D&&Wn(!0)},yt=Be=>{typeof R=="function"&&R(Be),!q&&!st.current&&D&&Wn(!0)},He=GQ({data:je,searchable:D,searchValue:qr,limit:B,filter:K,value:ve,disableSelectedItemFiltering:_e});J&&ie(qr,je)&&(ee=ne(qr),He.push({label:qr,value:qr,creatable:!0}));const Se=Math.min(Vn,He.length-1),et=(Be,vt,Dt)=>{let Ut=Be;for(;Dt(Ut);)if(Ut=vt(Ut),!He[Ut].disabled)return Ut;return Be};Hs(()=>{Lr(vn&&qr?0:-1)},[qr,vn]),Hs(()=>{!q&&ve.length>x.length&&Wn(!1),xe&&ve.length=xe&&(st.current=!0,Wn(!1))},[ve]);const kt=Be=>{if(!Lt)if(G&&js(""),ve.includes(Be.value))Vt(Be.value);else{if(Be.creatable&&typeof oe=="function"){const vt=oe(Be.value);typeof vt<"u"&&vt!==null&&dt(typeof vt=="string"?[...ve,vt]:[...ve,vt.value])}else dt([...ve,Be.value]);ve.length===xe-1&&(st.current=!0,Wn(!1)),He.length===1&&Wn(!1)}},Ot=Be=>{typeof A=="function"&&A(Be),It&&He[Se]&&Hn&&kt(He[Se]),V&&js(""),Wn(!1)},$t=Be=>{if(Fr||(zt==null||zt(Be),Lt)||Be.key!=="Backspace"&&xe&&st.current)return;const vt=Lo==="column",Dt=()=>{Lr(In=>{var Kt;const un=et(In,sn=>sn+1,sn=>sn{Lr(In=>{var Kt;const un=et(In,sn=>sn-1,sn=>sn>0);return Hn&&(Ta.current=Ur.current[(Kt=He[un])==null?void 0:Kt.value],_s({alignment:vt?"start":"end"})),un})};switch(Be.key){case"ArrowUp":{Be.preventDefault(),Wn(!0),vt?Ut():Dt();break}case"ArrowDown":{Be.preventDefault(),Wn(!0),vt?Dt():Ut();break}case"Enter":{Be.preventDefault(),He[Se]&&Hn?kt(He[Se]):Wn(!0);break}case" ":{D||(Be.preventDefault(),He[Se]&&Hn?kt(He[Se]):Wn(!0));break}case"Backspace":{ve.length>0&&qr.length===0&&(dt(ve.slice(0,-1)),Wn(!0),xe&&(st.current=!1));break}case"Home":{if(!D){Be.preventDefault(),Hn||Wn(!0);const In=He.findIndex(Kt=>!Kt.disabled);Lr(In),_s({alignment:vt?"end":"start"})}break}case"End":{if(!D){Be.preventDefault(),Hn||Wn(!0);const In=He.map(Kt=>!!Kt.disabled).lastIndexOf(!1);Lr(In),_s({alignment:vt?"end":"start"})}break}case"Escape":Wn(!1)}},Xt=ve.map(Be=>{let vt=je.find(Dt=>Dt.value===Be&&!Dt.disabled);return!vt&&J&&(vt={value:Be,label:Be}),vt}).filter(Be=>!!Be).map((Be,vt)=>H.createElement(k,Rk(Cc({},Be),{variant:L,disabled:q,className:Qe.value,readOnly:Lt,onRemove:Dt=>{Dt.preventDefault(),Dt.stopPropagation(),Vt(Be.value)},key:Be.value,size:f,styles:m,classNames:h,radius:Y,index:vt}))),tn=Be=>ve.includes(Be),en=()=>{var Be;js(""),dt([]),(Be=ln.current)==null||Be.focus(),xe&&(st.current=!1)},qt=!Lt&&(He.length>0?Hn:Hn&&!!M);return Hs(()=>{const Be=qt?Ce:he;typeof Be=="function"&&Be()},[qt]),H.createElement(vu.Wrapper,Cc(Cc({required:s,id:wr,label:i,error:p,description:c,size:f,className:r,style:o,classNames:h,styles:m,__staticSelector:"MultiSelect",sx:me,errorProps:gt,descriptionProps:ye,labelProps:bt,inputContainer:xt,inputWrapperOrder:Nt,unstyled:we,withAsterisk:$e,variant:L},ir),v),H.createElement(zi,{opened:qt,transitionProps:I,shadow:"sm",withinPortal:de,portalProps:Ne,__staticSelector:"MultiSelect",onDirectionChange:Gr,switchDirectionOnFlip:De,zIndex:Xe,dropdownPosition:on,positionDependencies:[...Et,qr],classNames:h,styles:m,unstyled:we,variant:L},H.createElement(zi.Target,null,H.createElement("div",{className:Qe.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":Hn&&qt?`${wr}-items`:null,"aria-controls":wr,"aria-expanded":Hn,onMouseLeave:()=>Lr(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:lt,value:ve.join(","),form:We,disabled:q}),H.createElement(vu,Cc({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:f,variant:L,disabled:q,error:p,required:s,radius:Y,icon:ce,unstyled:we,onMouseDown:Be=>{var vt;Be.preventDefault(),!q&&!st.current&&Wn(!Hn),(vt=ln.current)==null||vt.focus()},classNames:Rk(Cc({},h),{input:ct({[Qe.input]:!D},h==null?void 0:h.input)})},xE({theme:Ft,rightSection:ae,rightSectionWidth:U,styles:m,size:f,shouldClear:Q&&ve.length>0,onClear:en,error:p,disabled:q,clearButtonProps:Ke,readOnly:Lt})),H.createElement("div",{className:Qe.values,"data-clearable":Q||void 0},Xt,H.createElement("input",Cc({ref:_f(t,ln),type:"search",id:wr,className:ct(Qe.searchInput,{[Qe.searchInputPointer]:!D,[Qe.searchInputInputHidden]:!Hn&&ve.length>0||!D&&ve.length>0,[Qe.searchInputEmpty]:ve.length===0}),onKeyDown:$t,value:qr,onChange:ft,onFocus:yt,onBlur:Ot,readOnly:!D||st.current||Lt,placeholder:ve.length===0?T:void 0,disabled:q,"data-mantine-stop-propagation":Hn,autoComplete:"off",onCompositionStart:()=>na(!0),onCompositionEnd:()=>na(!1)},pn)))))),H.createElement(zi.Dropdown,{component:fe||jg,maxHeight:O,direction:Lo,id:wr,innerRef:ra,__staticSelector:"MultiSelect",classNames:h,styles:m},H.createElement(fy,{data:He,hovered:Se,classNames:h,styles:m,uuid:wr,__staticSelector:"MultiSelect",onItemHover:Lr,onItemSelect:kt,itemsRefs:Ur,itemComponent:j,size:f,nothingFound:M,isItemSelected:tn,creatable:W&&!!ee,createLabel:ee,unstyled:we,variant:L}))))});CE.displayName="@mantine/core/MultiSelect";var kY=Object.defineProperty,jY=Object.defineProperties,_Y=Object.getOwnPropertyDescriptors,wm=Object.getOwnPropertySymbols,SE=Object.prototype.hasOwnProperty,kE=Object.prototype.propertyIsEnumerable,Ak=(e,t,n)=>t in e?kY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wv=(e,t)=>{for(var n in t||(t={}))SE.call(t,n)&&Ak(e,n,t[n]);if(wm)for(var n of wm(t))kE.call(t,n)&&Ak(e,n,t[n]);return e},PY=(e,t)=>jY(e,_Y(t)),IY=(e,t)=>{var n={};for(var r in e)SE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&wm)for(var r of wm(e))t.indexOf(r)<0&&kE.call(e,r)&&(n[r]=e[r]);return n};const EY={type:"text",size:"sm",__staticSelector:"TextInput"},jE=u.forwardRef((e,t)=>{const n=U6("TextInput",EY,e),{inputProps:r,wrapperProps:o}=n,s=IY(n,["inputProps","wrapperProps"]);return H.createElement(vu.Wrapper,Wv({},o),H.createElement(vu,PY(Wv(Wv({},r),s),{ref:t})))});jE.displayName="@mantine/core/TextInput";function OY({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:i}){if(!t)return e;const c=s!=null&&e.find(p=>p.value===s)||null;if(c&&!i&&(c==null?void 0:c.label)===r){if(n){if(n>=e.length)return e;const p=e.indexOf(c),h=p+n,m=h-e.length;return m>0?e.slice(p-m):e.slice(p,h)}return e}const f=[];for(let p=0;p=n));p+=1);return f}var MY=fo(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const RY=MY;var DY=Object.defineProperty,AY=Object.defineProperties,NY=Object.getOwnPropertyDescriptors,Cm=Object.getOwnPropertySymbols,_E=Object.prototype.hasOwnProperty,PE=Object.prototype.propertyIsEnumerable,Nk=(e,t,n)=>t in e?DY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ud=(e,t)=>{for(var n in t||(t={}))_E.call(t,n)&&Nk(e,n,t[n]);if(Cm)for(var n of Cm(t))PE.call(t,n)&&Nk(e,n,t[n]);return e},Vv=(e,t)=>AY(e,NY(t)),TY=(e,t)=>{var n={};for(var r in e)_E.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Cm)for(var r of Cm(e))t.indexOf(r)<0&&PE.call(e,r)&&(n[r]=e[r]);return n};function $Y(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function LY(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const FY={required:!1,size:"sm",shadow:"sm",itemComponent:py,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:$Y,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:LY,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:cy("popover"),positionDependencies:[],dropdownPosition:"flip"},Sy=u.forwardRef((e,t)=>{const n=U6("Select",FY,e),{inputProps:r,wrapperProps:o,shadow:s,data:i,value:c,defaultValue:f,onChange:p,itemComponent:h,onKeyDown:m,onBlur:v,onFocus:b,transitionProps:y,initiallyOpened:x,unstyled:C,classNames:k,styles:j,filter:_,maxDropdownHeight:I,searchable:O,clearable:E,nothingFound:M,limit:R,disabled:A,onSearchChange:D,searchValue:T,rightSection:K,rightSectionWidth:B,creatable:G,getCreateLabel:Q,shouldCreate:V,selectOnBlur:L,onCreate:X,dropdownComponent:F,onDropdownClose:q,onDropdownOpen:te,withinPortal:Y,portalProps:ce,switchDirectionOnFlip:ae,zIndex:U,name:W,dropdownPosition:ne,allowDeselect:ie,placeholder:oe,filterDataOnExactSearchMatch:me,form:fe,positionDependencies:he,readOnly:Ce,clearButtonProps:xe,hoverOnSearchChange:de}=n,Ne=TY(n,["inputProps","wrapperProps","shadow","data","value","defaultValue","onChange","itemComponent","onKeyDown","onBlur","onFocus","transitionProps","initiallyOpened","unstyled","classNames","styles","filter","maxDropdownHeight","searchable","clearable","nothingFound","limit","disabled","onSearchChange","searchValue","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","selectOnBlur","onCreate","dropdownComponent","onDropdownClose","onDropdownOpen","withinPortal","portalProps","switchDirectionOnFlip","zIndex","name","dropdownPosition","allowDeselect","placeholder","filterDataOnExactSearchMatch","form","positionDependencies","readOnly","clearButtonProps","hoverOnSearchChange"]),{classes:De,cx:Xe,theme:It}=RY(),[lt,on]=u.useState(x),[gt,bt]=u.useState(-1),ye=u.useRef(),We=u.useRef({}),[Et,zt]=u.useState("column"),we=Et==="column",{scrollIntoView:xt,targetRef:Nt,scrollableRef:Lt}=gI({duration:0,offset:5,cancelable:!1,isList:!0}),$e=ie===void 0?E:ie,Ke=ee=>{if(lt!==ee){on(ee);const ge=ee?te:q;typeof ge=="function"&&ge()}},vn=G&&typeof Q=="function";let _e=null;const Ze=i.map(ee=>typeof ee=="string"?{label:ee,value:ee}:ee),Qe=sI({data:Ze}),[ct,Ft,ir]=Ud({value:c,defaultValue:f,finalValue:null,onChange:p}),pn=Qe.find(ee=>ee.value===ct),[ln,Ur]=Ud({value:T,defaultValue:(pn==null?void 0:pn.label)||"",finalValue:void 0,onChange:D}),wr=ee=>{Ur(ee),O&&typeof D=="function"&&D(ee)},Hn=()=>{var ee;Ce||(Ft(null),ir||wr(""),(ee=ye.current)==null||ee.focus())};u.useEffect(()=>{const ee=Qe.find(ge=>ge.value===ct);ee?wr(ee.label):(!vn||!ct)&&wr("")},[ct]),u.useEffect(()=>{pn&&(!O||!lt)&&wr(pn.label)},[pn==null?void 0:pn.label]);const Wn=ee=>{if(!Ce)if($e&&(pn==null?void 0:pn.value)===ee.value)Ft(null),Ke(!1);else{if(ee.creatable&&typeof X=="function"){const ge=X(ee.value);typeof ge<"u"&&ge!==null&&Ft(typeof ge=="string"?ge:ge.value)}else Ft(ee.value);ir||wr(ee.label),bt(-1),Ke(!1),ye.current.focus()}},Vn=OY({data:Qe,searchable:O,limit:R,searchValue:ln,filter:_,filterDataOnExactSearchMatch:me,value:ct});vn&&V(ln,Vn)&&(_e=Q(ln),Vn.push({label:ln,value:ln,creatable:!0}));const Lr=(ee,ge,je)=>{let ve=ee;for(;je(ve);)if(ve=ge(ve),!Vn[ve].disabled)return ve;return ee};Hs(()=>{bt(de&&ln?0:-1)},[ln,de]);const Lo=ct?Vn.findIndex(ee=>ee.value===ct):0,Gr=!Ce&&(Vn.length>0?lt:lt&&!!M),qr=()=>{bt(ee=>{var ge;const je=Lr(ee,ve=>ve-1,ve=>ve>0);return Nt.current=We.current[(ge=Vn[je])==null?void 0:ge.value],Gr&&xt({alignment:we?"start":"end"}),je})},js=()=>{bt(ee=>{var ge;const je=Lr(ee,ve=>ve+1,ve=>vewindow.setTimeout(()=>{var ee;Nt.current=We.current[(ee=Vn[Lo])==null?void 0:ee.value],xt({alignment:we?"end":"start"})},50);Hs(()=>{Gr&&Fr()},[Gr]);const na=ee=>{switch(typeof m=="function"&&m(ee),ee.key){case"ArrowUp":{ee.preventDefault(),lt?we?qr():js():(bt(Lo),Ke(!0),Fr());break}case"ArrowDown":{ee.preventDefault(),lt?we?js():qr():(bt(Lo),Ke(!0),Fr());break}case"Home":{if(!O){ee.preventDefault(),lt||Ke(!0);const ge=Vn.findIndex(je=>!je.disabled);bt(ge),Gr&&xt({alignment:we?"end":"start"})}break}case"End":{if(!O){ee.preventDefault(),lt||Ke(!0);const ge=Vn.map(je=>!!je.disabled).lastIndexOf(!1);bt(ge),Gr&&xt({alignment:we?"end":"start"})}break}case"Escape":{ee.preventDefault(),Ke(!1),bt(-1);break}case" ":{O||(ee.preventDefault(),Vn[gt]&<?Wn(Vn[gt]):(Ke(!0),bt(Lo),Fr()));break}case"Enter":O||ee.preventDefault(),Vn[gt]&<&&(ee.preventDefault(),Wn(Vn[gt]))}},_s=ee=>{typeof v=="function"&&v(ee);const ge=Qe.find(je=>je.value===ct);L&&Vn[gt]&<&&Wn(Vn[gt]),wr((ge==null?void 0:ge.label)||""),Ke(!1)},Ta=ee=>{typeof b=="function"&&b(ee),O&&Ke(!0)},ra=ee=>{Ce||(wr(ee.currentTarget.value),E&&ee.currentTarget.value===""&&Ft(null),bt(-1),Ke(!0))},J=()=>{Ce||(Ke(!lt),ct&&!lt&&bt(Lo))};return H.createElement(vu.Wrapper,Vv(ud({},o),{__staticSelector:"Select"}),H.createElement(zi,{opened:Gr,transitionProps:y,shadow:s,withinPortal:Y,portalProps:ce,__staticSelector:"Select",onDirectionChange:zt,switchDirectionOnFlip:ae,zIndex:U,dropdownPosition:ne,positionDependencies:[...he,ln],classNames:k,styles:j,unstyled:C,variant:r.variant},H.createElement(zi.Target,null,H.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":Gr?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":Gr,onMouseLeave:()=>bt(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:W,value:ct||"",form:fe,disabled:A}),H.createElement(vu,ud(Vv(ud(ud({autoComplete:"off",type:"search"},r),Ne),{ref:_f(t,ye),onKeyDown:na,__staticSelector:"Select",value:ln,placeholder:oe,onChange:ra,"aria-autocomplete":"list","aria-controls":Gr?`${r.id}-items`:null,"aria-activedescendant":gt>=0?`${r.id}-${gt}`:null,onMouseDown:J,onBlur:_s,onFocus:Ta,readOnly:!O||Ce,disabled:A,"data-mantine-stop-propagation":Gr,name:null,classNames:Vv(ud({},k),{input:Xe({[De.input]:!O},k==null?void 0:k.input)})}),xE({theme:It,rightSection:K,rightSectionWidth:B,styles:j,size:r.size,shouldClear:E&&!!pn,onClear:Hn,error:o.error,clearButtonProps:xe,disabled:A,readOnly:Ce}))))),H.createElement(zi.Dropdown,{component:F||jg,maxHeight:I,direction:Et,id:r.id,innerRef:Lt,__staticSelector:"Select",classNames:k,styles:j},H.createElement(fy,{data:Vn,hovered:gt,classNames:k,styles:j,isItemSelected:ee=>ee===ct,uuid:r.id,__staticSelector:"Select",onItemHover:bt,onItemSelect:Wn,itemsRefs:We,itemComponent:h,size:r.size,nothingFound:M,creatable:vn&&!!_e,createLabel:_e,"aria-label":o.label,unstyled:C,variant:r.variant}))))});Sy.displayName="@mantine/core/Select";const Ef=()=>{const[e,t,n,r,o,s,i,c,f,p,h,m,v,b,y,x,C,k,j,_,I,O,E,M,R,A,D,T,K,B,G,Q,V,L,X,F,q,te,Y,ce,ae,U,W,ne,ie,oe,me,fe,he,Ce,xe,de,Ne,De,Xe,It,lt,on,gt,bt,ye,We,Et,zt,we,xt,Nt,Lt,$e,Ke,vn,_e,Ze,Qe,ct,Ft]=xa("colors",["base.50","base.100","base.150","base.200","base.250","base.300","base.350","base.400","base.450","base.500","base.550","base.600","base.650","base.700","base.750","base.800","base.850","base.900","base.950","accent.50","accent.100","accent.150","accent.200","accent.250","accent.300","accent.350","accent.400","accent.450","accent.500","accent.550","accent.600","accent.650","accent.700","accent.750","accent.800","accent.850","accent.900","accent.950","baseAlpha.50","baseAlpha.100","baseAlpha.150","baseAlpha.200","baseAlpha.250","baseAlpha.300","baseAlpha.350","baseAlpha.400","baseAlpha.450","baseAlpha.500","baseAlpha.550","baseAlpha.600","baseAlpha.650","baseAlpha.700","baseAlpha.750","baseAlpha.800","baseAlpha.850","baseAlpha.900","baseAlpha.950","accentAlpha.50","accentAlpha.100","accentAlpha.150","accentAlpha.200","accentAlpha.250","accentAlpha.300","accentAlpha.350","accentAlpha.400","accentAlpha.450","accentAlpha.500","accentAlpha.550","accentAlpha.600","accentAlpha.650","accentAlpha.700","accentAlpha.750","accentAlpha.800","accentAlpha.850","accentAlpha.900","accentAlpha.950"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:i,base400:c,base450:f,base500:p,base550:h,base600:m,base650:v,base700:b,base750:y,base800:x,base850:C,base900:k,base950:j,accent50:_,accent100:I,accent150:O,accent200:E,accent250:M,accent300:R,accent350:A,accent400:D,accent450:T,accent500:K,accent550:B,accent600:G,accent650:Q,accent700:V,accent750:L,accent800:X,accent850:F,accent900:q,accent950:te,baseAlpha50:Y,baseAlpha100:ce,baseAlpha150:ae,baseAlpha200:U,baseAlpha250:W,baseAlpha300:ne,baseAlpha350:ie,baseAlpha400:oe,baseAlpha450:me,baseAlpha500:fe,baseAlpha550:he,baseAlpha600:Ce,baseAlpha650:xe,baseAlpha700:de,baseAlpha750:Ne,baseAlpha800:De,baseAlpha850:Xe,baseAlpha900:It,baseAlpha950:lt,accentAlpha50:on,accentAlpha100:gt,accentAlpha150:bt,accentAlpha200:ye,accentAlpha250:We,accentAlpha300:Et,accentAlpha350:zt,accentAlpha400:we,accentAlpha450:xt,accentAlpha500:Nt,accentAlpha550:Lt,accentAlpha600:$e,accentAlpha650:Ke,accentAlpha700:vn,accentAlpha750:_e,accentAlpha800:Ze,accentAlpha850:Qe,accentAlpha900:ct,accentAlpha950:Ft}},qe=(e,t)=>n=>n==="light"?e:t,IE=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:c,base800:f,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Ef(),{colorMode:x}=di(),[C]=xa("shadows",["dark-lg"]),[k,j,_]=xa("space",[1,2,6]),[I]=xa("radii",["base"]),[O]=xa("lineHeights",["base"]);return u.useCallback(()=>({label:{color:qe(c,r)(x)},separatorLabel:{color:qe(s,s)(x),"::after":{borderTopColor:qe(r,c)(x)}},input:{border:"unset",backgroundColor:qe(e,p)(x),borderRadius:I,borderStyle:"solid",borderWidth:"2px",borderColor:qe(n,f)(x),color:qe(p,t)(x),minHeight:"unset",lineHeight:O,height:"auto",paddingRight:0,paddingLeft:0,paddingInlineStart:j,paddingInlineEnd:_,paddingTop:k,paddingBottom:k,fontWeight:600,"&:hover":{borderColor:qe(r,i)(x)},"&:focus":{borderColor:qe(m,y)(x)},"&:is(:focus, :hover)":{borderColor:qe(o,s)(x)},"&:focus-within":{borderColor:qe(h,y)(x)},"&[data-disabled]":{backgroundColor:qe(r,c)(x),color:qe(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:qe(t,p)(x),color:qe(p,t)(x),button:{color:qe(p,t)(x)},"&:hover":{backgroundColor:qe(r,c)(x),cursor:"pointer"}},dropdown:{backgroundColor:qe(n,f)(x),borderColor:qe(n,f)(x),boxShadow:C},item:{backgroundColor:qe(n,f)(x),color:qe(f,n)(x),padding:6,"&[data-hovered]":{color:qe(p,t)(x),backgroundColor:qe(r,c)(x)},"&[data-active]":{backgroundColor:qe(r,c)(x),"&:hover":{color:qe(p,t)(x),backgroundColor:qe(r,c)(x)}},"&[data-selected]":{backgroundColor:qe(v,y)(x),color:qe(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:qe(b,b)(x),color:qe("white",e)(x)}},"&[data-disabled]":{color:qe(s,i)(x),cursor:"not-allowed"}},rightSection:{width:32,button:{color:qe(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,c,f,p,C,x,O,I,k,j,_])},zY=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:i,...c}=e,f=se(),[p,h]=u.useState(""),m=u.useCallback(x=>{x.shiftKey&&f(Do(!0))},[f]),v=u.useCallback(x=>{x.shiftKey||f(Do(!1))},[f]),b=u.useCallback(x=>{o&&o(x)},[o]),y=IE();return a.jsx(Mn,{label:n,placement:"top",hasArrow:!0,children:a.jsx(Sy,{ref:r,label:s?a.jsx(pr,{isDisabled:i,children:a.jsx(Jr,{children:s})}):void 0,disabled:i,searchValue:p,onSearchChange:h,onChange:b,onKeyDown:m,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:y,...c})})},Kn=u.memo(zY),BY=le([ke],({changeBoardModal:e})=>{const{isModalOpen:t,imagesToChange:n}=e;return{isModalOpen:t,imagesToChange:n}},Oe),HY=()=>{const e=se(),[t,n]=u.useState(),{data:r,isFetching:o}=Fm(),{imagesToChange:s,isModalOpen:i}=z(BY),[c]=z7(),[f]=B7(),p=u.useMemo(()=>{const b=[{label:"Uncategorized",value:"none"}];return(r??[]).forEach(y=>b.push({label:y.board_name,value:y.board_id})),b},[r]),h=u.useCallback(()=>{e(Yw()),e(tx(!1))},[e]),m=u.useCallback(()=>{!s.length||!t||(t==="none"?f({imageDTOs:s}):c({imageDTOs:s,board_id:t}),n(null),e(Yw()))},[c,e,s,f,t]),v=u.useRef(null);return a.jsx(Cf,{isOpen:i,onClose:h,leastDestructiveRef:v,isCentered:!0,children:a.jsx(Ks,{children:a.jsxs(Sf,{children:[a.jsx(qs,{fontSize:"lg",fontWeight:"bold",children:"Change Board"}),a.jsx(Xs,{children:a.jsxs($,{sx:{flexDir:"column",gap:4},children:[a.jsxs(Ee,{children:["Moving ",`${s.length}`," image",`${s.length>1?"s":""}`," to board:"]}),a.jsx(Kn,{placeholder:o?"Loading...":"Select Board",disabled:o,onChange:b=>n(b),value:t,data:p})]})}),a.jsxs(ka,{children:[a.jsx(Wt,{ref:v,onClick:h,children:"Cancel"}),a.jsx(Wt,{colorScheme:"accent",onClick:m,ml:3,children:"Move"})]})]})})})},WY=u.memo(HY),VY=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:i,helperText:c,...f}=e;return a.jsx(Mn,{label:i,hasArrow:!0,placement:"top",isDisabled:!i,children:a.jsx(pr,{isDisabled:n,width:r,alignItems:"center",...o,children:a.jsxs($,{sx:{flexDir:"column",w:"full"},children:[a.jsxs($,{sx:{alignItems:"center",w:"full"},children:[t&&a.jsx(Jr,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),a.jsx(sy,{...f})]}),c&&a.jsx(z3,{children:a.jsx(Ee,{variant:"subtext",children:c})})]})})})},qn=u.memo(VY),UY=e=>{const{imageUsage:t,topMessage:n="This image is currently in use in the following features:",bottomMessage:r="If you delete this image, those features will immediately be reset."}=e;return!t||!$s(t)?null:a.jsxs(a.Fragment,{children:[a.jsx(Ee,{children:n}),a.jsxs(gf,{sx:{paddingInlineStart:6},children:[t.isInitialImage&&a.jsx(Fs,{children:"Image to Image"}),t.isCanvasImage&&a.jsx(Fs,{children:"Unified Canvas"}),t.isControlNetImage&&a.jsx(Fs,{children:"ControlNet"}),t.isNodesImage&&a.jsx(Fs,{children:"Node Editor"})]}),a.jsx(Ee,{children:r})]})},EE=u.memo(UY),GY=le([ke,H7],(e,t)=>{const{system:n,config:r,deleteImageModal:o}=e,{shouldConfirmOnDelete:s}=n,{canRestoreDeletedImagesFromBin:i}=r,{imagesToDelete:c,isModalOpen:f}=o,p=(c??[]).map(({image_name:m})=>W_(e,m)),h={isInitialImage:$s(p,m=>m.isInitialImage),isCanvasImage:$s(p,m=>m.isCanvasImage),isNodesImage:$s(p,m=>m.isNodesImage),isControlNetImage:$s(p,m=>m.isControlNetImage)};return{shouldConfirmOnDelete:s,canRestoreDeletedImagesFromBin:i,imagesToDelete:c,imagesUsage:t,isModalOpen:f,imageUsageSummary:h}},Oe),qY=()=>{const e=se(),{t}=Ie(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imagesToDelete:o,imagesUsage:s,isModalOpen:i,imageUsageSummary:c}=z(GY),f=u.useCallback(v=>e(V_(!v.target.checked)),[e]),p=u.useCallback(()=>{e(Jw()),e(W7(!1))},[e]),h=u.useCallback(()=>{!o.length||!s.length||(e(Jw()),e(V7({imageDTOs:o,imagesUsage:s})))},[e,o,s]),m=u.useRef(null);return a.jsx(Cf,{isOpen:i,onClose:p,leastDestructiveRef:m,isCentered:!0,children:a.jsx(Ks,{children:a.jsxs(Sf,{children:[a.jsx(qs,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),a.jsx(Xs,{children:a.jsxs($,{direction:"column",gap:3,children:[a.jsx(EE,{imageUsage:c}),a.jsx(Ko,{}),a.jsx(Ee,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),a.jsx(Ee,{children:t("common.areYouSure")}),a.jsx(qn,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:f})]})}),a.jsxs(ka,{children:[a.jsx(Wt,{ref:m,onClick:p,children:"Cancel"}),a.jsx(Wt,{colorScheme:"error",onClick:h,ml:3,children:"Delete"})]})]})})})},KY=u.memo(qY),OE=Te((e,t)=>{const{role:n,tooltip:r="",tooltipProps:o,isChecked:s,...i}=e;return a.jsx(Mn,{label:r,hasArrow:!0,...o,...o!=null&&o.placement?{placement:o.placement}:{placement:"top"},children:a.jsx(wa,{ref:t,role:n,colorScheme:s?"accent":"base",...i})})});OE.displayName="IAIIconButton";const tt=u.memo(OE);var ME={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Tk=H.createContext&&H.createContext(ME),Bi=globalThis&&globalThis.__assign||function(){return Bi=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const t=z(i=>i.config.disabledTabs),n=z(i=>i.config.disabledFeatures),r=z(i=>i.config.disabledSDFeatures),o=u.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=u.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}};function $J(e){const{title:t,hotkey:n,description:r}=e;return a.jsxs(Vi,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs(Vi,{children:[a.jsx(Ee,{fontWeight:600,children:t}),r&&a.jsx(Ee,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),a.jsx(Fe,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function LJ({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Ao(),{t:o}=Ie(),s=[{title:o("hotkeys.invoke.title"),desc:o("hotkeys.invoke.desc"),hotkey:"Ctrl+Enter"},{title:o("hotkeys.cancel.title"),desc:o("hotkeys.cancel.desc"),hotkey:"Shift+X"},{title:o("hotkeys.focusPrompt.title"),desc:o("hotkeys.focusPrompt.desc"),hotkey:"Alt+A"},{title:o("hotkeys.toggleOptions.title"),desc:o("hotkeys.toggleOptions.desc"),hotkey:"O"},{title:o("hotkeys.toggleGallery.title"),desc:o("hotkeys.toggleGallery.desc"),hotkey:"G"},{title:o("hotkeys.maximizeWorkSpace.title"),desc:o("hotkeys.maximizeWorkSpace.desc"),hotkey:"F"},{title:o("hotkeys.changeTabs.title"),desc:o("hotkeys.changeTabs.desc"),hotkey:"1-5"}],i=[{title:o("hotkeys.setPrompt.title"),desc:o("hotkeys.setPrompt.desc"),hotkey:"P"},{title:o("hotkeys.setSeed.title"),desc:o("hotkeys.setSeed.desc"),hotkey:"S"},{title:o("hotkeys.setParameters.title"),desc:o("hotkeys.setParameters.desc"),hotkey:"A"},{title:o("hotkeys.upscale.title"),desc:o("hotkeys.upscale.desc"),hotkey:"Shift+U"},{title:o("hotkeys.showInfo.title"),desc:o("hotkeys.showInfo.desc"),hotkey:"I"},{title:o("hotkeys.sendToImageToImage.title"),desc:o("hotkeys.sendToImageToImage.desc"),hotkey:"Shift+I"},{title:o("hotkeys.deleteImage.title"),desc:o("hotkeys.deleteImage.desc"),hotkey:"Del"},{title:o("hotkeys.closePanels.title"),desc:o("hotkeys.closePanels.desc"),hotkey:"Esc"}],c=[{title:o("hotkeys.previousImage.title"),desc:o("hotkeys.previousImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextImage.title"),desc:o("hotkeys.nextImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.increaseGalleryThumbSize.title"),desc:o("hotkeys.increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:o("hotkeys.decreaseGalleryThumbSize.title"),desc:o("hotkeys.decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],f=[{title:o("hotkeys.selectBrush.title"),desc:o("hotkeys.selectBrush.desc"),hotkey:"B"},{title:o("hotkeys.selectEraser.title"),desc:o("hotkeys.selectEraser.desc"),hotkey:"E"},{title:o("hotkeys.decreaseBrushSize.title"),desc:o("hotkeys.decreaseBrushSize.desc"),hotkey:"["},{title:o("hotkeys.increaseBrushSize.title"),desc:o("hotkeys.increaseBrushSize.desc"),hotkey:"]"},{title:o("hotkeys.decreaseBrushOpacity.title"),desc:o("hotkeys.decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:o("hotkeys.increaseBrushOpacity.title"),desc:o("hotkeys.increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:o("hotkeys.moveTool.title"),desc:o("hotkeys.moveTool.desc"),hotkey:"V"},{title:o("hotkeys.fillBoundingBox.title"),desc:o("hotkeys.fillBoundingBox.desc"),hotkey:"Shift + F"},{title:o("hotkeys.eraseBoundingBox.title"),desc:o("hotkeys.eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:o("hotkeys.colorPicker.title"),desc:o("hotkeys.colorPicker.desc"),hotkey:"C"},{title:o("hotkeys.toggleSnap.title"),desc:o("hotkeys.toggleSnap.desc"),hotkey:"N"},{title:o("hotkeys.quickToggleMove.title"),desc:o("hotkeys.quickToggleMove.desc"),hotkey:"Hold Space"},{title:o("hotkeys.toggleLayer.title"),desc:o("hotkeys.toggleLayer.desc"),hotkey:"Q"},{title:o("hotkeys.clearMask.title"),desc:o("hotkeys.clearMask.desc"),hotkey:"Shift+C"},{title:o("hotkeys.hideMask.title"),desc:o("hotkeys.hideMask.desc"),hotkey:"H"},{title:o("hotkeys.showHideBoundingBox.title"),desc:o("hotkeys.showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:o("hotkeys.mergeVisible.title"),desc:o("hotkeys.mergeVisible.desc"),hotkey:"Shift+M"},{title:o("hotkeys.saveToGallery.title"),desc:o("hotkeys.saveToGallery.desc"),hotkey:"Shift+S"},{title:o("hotkeys.copyToClipboard.title"),desc:o("hotkeys.copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:o("hotkeys.downloadImage.title"),desc:o("hotkeys.downloadImage.desc"),hotkey:"Shift+D"},{title:o("hotkeys.undoStroke.title"),desc:o("hotkeys.undoStroke.desc"),hotkey:"Ctrl+Z"},{title:o("hotkeys.redoStroke.title"),desc:o("hotkeys.redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:o("hotkeys.resetView.title"),desc:o("hotkeys.resetView.desc"),hotkey:"R"},{title:o("hotkeys.previousStagingImage.title"),desc:o("hotkeys.previousStagingImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextStagingImage.title"),desc:o("hotkeys.nextStagingImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.acceptStagingImage.title"),desc:o("hotkeys.acceptStagingImage.desc"),hotkey:"Enter"}],p=[{title:o("hotkeys.addNodes.title"),desc:o("hotkeys.addNodes.desc"),hotkey:"Shift + A / Space"}],h=m=>a.jsx($,{flexDir:"column",gap:4,children:m.map((v,b)=>a.jsxs($,{flexDir:"column",px:2,gap:4,children:[a.jsx($J,{title:v.title,description:v.desc,hotkey:v.hotkey}),b{const{data:t}=U7(),n=u.useRef(null),r=KE(n);return a.jsxs($,{alignItems:"center",gap:5,ps:1,ref:n,children:[a.jsx(Vl,{src:U_,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),a.jsxs($,{sx:{gap:3,alignItems:"center"},children:[a.jsxs(Ee,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",a.jsx("strong",{children:"ai"})]}),a.jsx(co,{children:e&&r&&t&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsx(Ee,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})},GJ=u.memo(UJ),qJ=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...i}=e,c=IE();return a.jsx(Mn,{label:t,placement:"top",hasArrow:!0,children:a.jsx(Sy,{label:r?a.jsx(pr,{isRequired:s,isDisabled:o,children:a.jsx(Jr,{children:r})}):void 0,disabled:o,ref:n,styles:c,...i})})},Zr=u.memo(qJ),KJ={ar:Sr.t("common.langArabic",{lng:"ar"}),nl:Sr.t("common.langDutch",{lng:"nl"}),en:Sr.t("common.langEnglish",{lng:"en"}),fr:Sr.t("common.langFrench",{lng:"fr"}),de:Sr.t("common.langGerman",{lng:"de"}),he:Sr.t("common.langHebrew",{lng:"he"}),it:Sr.t("common.langItalian",{lng:"it"}),ja:Sr.t("common.langJapanese",{lng:"ja"}),ko:Sr.t("common.langKorean",{lng:"ko"}),pl:Sr.t("common.langPolish",{lng:"pl"}),pt_BR:Sr.t("common.langBrPortuguese",{lng:"pt_BR"}),pt:Sr.t("common.langPortuguese",{lng:"pt"}),ru:Sr.t("common.langRussian",{lng:"ru"}),zh_CN:Sr.t("common.langSimplifiedChinese",{lng:"zh_CN"}),es:Sr.t("common.langSpanish",{lng:"es"}),uk:Sr.t("common.langUkranian",{lng:"ua"})};function Rs(e){const{t}=Ie(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:i,...c}=e;return a.jsxs($,{justifyContent:"space-between",py:1,children:[a.jsxs($,{gap:2,alignItems:"center",children:[a.jsx(Ee,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&a.jsx(hi,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...i,children:s})]}),a.jsx(qn,{...c})]})}const XJ=e=>a.jsx($,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children}),Ec=u.memo(XJ);function QJ(){const e=se(),{data:t,refetch:n}=G7(),[r,{isLoading:o}]=q7(),s=u.useCallback(()=>{r().unwrap().then(c=>{e(K7()),e(G_()),e(Cn({title:`Cleared ${c} intermediates`,status:"info"}))})},[r,e]);u.useEffect(()=>{n()},[n]);const i=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:"Clear Intermediates"}),a.jsx(Wt,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:i}),a.jsx(Ee,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),a.jsx(Ee,{variant:"subtext",children:"Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space."}),a.jsx(Ee,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const YJ=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:c,base800:f,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Ef(),{colorMode:x}=di(),[C]=xa("shadows",["dark-lg"]);return u.useCallback(()=>({label:{color:qe(c,r)(x)},separatorLabel:{color:qe(s,s)(x),"::after":{borderTopColor:qe(r,c)(x)}},searchInput:{":placeholder":{color:qe(r,c)(x)}},input:{backgroundColor:qe(e,p)(x),borderWidth:"2px",borderColor:qe(n,f)(x),color:qe(p,t)(x),paddingRight:24,fontWeight:600,"&:hover":{borderColor:qe(r,i)(x)},"&:focus":{borderColor:qe(m,y)(x)},"&:is(:focus, :hover)":{borderColor:qe(o,s)(x)},"&:focus-within":{borderColor:qe(h,y)(x)},"&[data-disabled]":{backgroundColor:qe(r,c)(x),color:qe(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:qe(n,f)(x),color:qe(p,t)(x),button:{color:qe(p,t)(x)},"&:hover":{backgroundColor:qe(r,c)(x),cursor:"pointer"}},dropdown:{backgroundColor:qe(n,f)(x),borderColor:qe(n,f)(x),boxShadow:C},item:{backgroundColor:qe(n,f)(x),color:qe(f,n)(x),padding:6,"&[data-hovered]":{color:qe(p,t)(x),backgroundColor:qe(r,c)(x)},"&[data-active]":{backgroundColor:qe(r,c)(x),"&:hover":{color:qe(p,t)(x),backgroundColor:qe(r,c)(x)}},"&[data-selected]":{backgroundColor:qe(v,y)(x),color:qe(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:qe(b,b)(x),color:qe("white",e)(x)}},"&[data-disabled]":{color:qe(s,i)(x),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:qe(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,c,f,p,C,x])},JJ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...i}=e,c=se(),f=u.useCallback(m=>{m.shiftKey&&c(Do(!0))},[c]),p=u.useCallback(m=>{m.shiftKey||c(Do(!1))},[c]),h=YJ();return a.jsx(Mn,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:a.jsx(CE,{label:o?a.jsx(pr,{isDisabled:s,children:a.jsx(Jr,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:f,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...i})})},ZJ=u.memo(JJ),eZ=uo(zm,(e,t)=>({value:t,label:e})).sort((e,t)=>e.label.localeCompare(t.label));function tZ(){const e=se(),{t}=Ie(),n=z(o=>o.ui.favoriteSchedulers),r=u.useCallback(o=>{e(X7(o))},[e]);return a.jsx(ZJ,{label:t("settings.favoriteSchedulers"),value:n,data:eZ,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const nZ=le([ke],({system:e,ui:t,generation:n})=>{const{shouldConfirmOnDelete:r,enableImageDebugging:o,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:c,shouldUseNSFWChecker:f,shouldUseWatermarker:p}=e,{shouldUseSliders:h,shouldShowProgressInViewer:m,shouldAutoChangeDimensions:v}=t,{shouldShowAdvancedOptions:b}=n;return{shouldConfirmOnDelete:r,enableImageDebugging:o,shouldUseSliders:h,shouldShowProgressInViewer:m,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:c,shouldShowAdvancedOptions:b,shouldUseNSFWChecker:f,shouldUseWatermarker:p,shouldAutoChangeDimensions:v}},{memoizeOptions:{resultEqualityCheck:mn}}),rZ=({children:e,config:t})=>{const n=se(),{t:r}=Ie(),[o,s]=u.useState(3),i=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,c=(t==null?void 0:t.shouldShowResetWebUiText)??!0,f=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,p=(t==null?void 0:t.shouldShowClearIntermediates)??!0,h=(t==null?void 0:t.shouldShowLocalizationToggle)??!0;u.useEffect(()=>{i||n(Zw(!1))},[i,n]);const{isNSFWCheckerAvailable:m,isWatermarkerAvailable:v}=q_(void 0,{selectFromResult:({data:Y})=>({isNSFWCheckerAvailable:(Y==null?void 0:Y.nsfw_methods.includes("nsfw_checker"))??!1,isWatermarkerAvailable:(Y==null?void 0:Y.watermarking_methods.includes("invisible_watermark"))??!1})}),{isOpen:b,onOpen:y,onClose:x}=Ao(),{isOpen:C,onOpen:k,onClose:j}=Ao(),{shouldConfirmOnDelete:_,enableImageDebugging:I,shouldUseSliders:O,shouldShowProgressInViewer:E,consoleLogLevel:M,shouldLogToConsole:R,shouldAntialiasProgressImage:A,shouldShowAdvancedOptions:D,shouldUseNSFWChecker:T,shouldUseWatermarker:K,shouldAutoChangeDimensions:B}=z(nZ),G=u.useCallback(()=>{Object.keys(window.localStorage).forEach(Y=>{(Q7.includes(Y)||Y.startsWith(Y7))&&localStorage.removeItem(Y)}),x(),k(),setInterval(()=>s(Y=>Y-1),1e3)},[x,k]);u.useEffect(()=>{o<=0&&window.location.reload()},[o]);const Q=u.useCallback(Y=>{n(J7(Y))},[n]),V=u.useCallback(Y=>{n(Z7(Y))},[n]),L=u.useCallback(Y=>{n(Zw(Y.target.checked))},[n]),{colorMode:X,toggleColorMode:F}=di(),q=Yn("localization").isFeatureEnabled,te=z(BP);return a.jsxs(a.Fragment,{children:[u.cloneElement(e,{onClick:y}),a.jsxs(Tl,{isOpen:b,onClose:x,size:"2xl",isCentered:!0,children:[a.jsx(Ks,{}),a.jsxs($l,{children:[a.jsx(qs,{bg:"none",children:r("common.settingsLabel")}),a.jsx(kf,{}),a.jsx(Xs,{children:a.jsxs($,{sx:{gap:4,flexDirection:"column"},children:[a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:r("settings.general")}),a.jsx(Rs,{label:r("settings.confirmOnDelete"),isChecked:_,onChange:Y=>n(V_(Y.target.checked))}),f&&a.jsx(Rs,{label:r("settings.showAdvancedOptions"),isChecked:D,onChange:Y=>n(eR(Y.target.checked))})]}),a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:r("settings.generation")}),a.jsx(tZ,{}),a.jsx(Rs,{label:"Enable NSFW Checker",isDisabled:!m,isChecked:T,onChange:Y=>n(tR(Y.target.checked))}),a.jsx(Rs,{label:"Enable Invisible Watermark",isDisabled:!v,isChecked:K,onChange:Y=>n(nR(Y.target.checked))})]}),a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:r("settings.ui")}),a.jsx(Rs,{label:r("common.darkMode"),isChecked:X==="dark",onChange:F}),a.jsx(Rs,{label:r("settings.useSlidersForAll"),isChecked:O,onChange:Y=>n(rR(Y.target.checked))}),a.jsx(Rs,{label:r("settings.showProgressInViewer"),isChecked:E,onChange:Y=>n(K_(Y.target.checked))}),a.jsx(Rs,{label:r("settings.antialiasProgressImages"),isChecked:A,onChange:Y=>n(oR(Y.target.checked))}),a.jsx(Rs,{label:r("settings.autoChangeDimensions"),isChecked:B,onChange:Y=>n(sR(Y.target.checked))}),h&&a.jsx(Zr,{disabled:!q,label:r("common.languagePickerLabel"),value:te,data:Object.entries(KJ).map(([Y,ce])=>({value:Y,label:ce})),onChange:V})]}),i&&a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:r("settings.developer")}),a.jsx(Rs,{label:r("settings.shouldLogToConsole"),isChecked:R,onChange:L}),a.jsx(Zr,{disabled:!R,label:r("settings.consoleLogLevel"),onChange:Q,value:M,data:aR.concat()}),a.jsx(Rs,{label:r("settings.enableImageDebugging"),isChecked:I,onChange:Y=>n(iR(Y.target.checked))})]}),p&&a.jsx(QJ,{}),a.jsxs(Ec,{children:[a.jsx(ds,{size:"sm",children:r("settings.resetWebUI")}),a.jsx(Wt,{colorScheme:"error",onClick:G,children:r("settings.resetWebUI")}),c&&a.jsxs(a.Fragment,{children:[a.jsx(Ee,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),a.jsx(Ee,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),a.jsx(ka,{children:a.jsx(Wt,{onClick:x,children:r("common.close")})})]})]}),a.jsxs(Tl,{closeOnOverlayClick:!1,isOpen:C,onClose:j,isCentered:!0,closeOnEsc:!1,children:[a.jsx(Ks,{backdropFilter:"blur(40px)"}),a.jsxs($l,{children:[a.jsx(qs,{}),a.jsx(Xs,{children:a.jsx($,{justifyContent:"center",children:a.jsx(Ee,{fontSize:"lg",children:a.jsxs(Ee,{children:[r("settings.resetComplete")," Reloading in ",o,"..."]})})})}),a.jsx(ka,{})]})]})]})},oZ=u.memo(rZ),sZ=le(Cs,e=>{const{isConnected:t,isProcessing:n,statusTranslationKey:r,currentIteration:o,totalIterations:s,currentStatusHasSteps:i}=e;return{isConnected:t,isProcessing:n,currentIteration:o,totalIterations:s,statusTranslationKey:r,currentStatusHasSteps:i}},Oe),Bk={ok:"green.400",working:"yellow.400",error:"red.400"},Hk={ok:"green.600",working:"yellow.500",error:"red.500"},aZ=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=z(sZ),{t:s}=Ie(),i=u.useRef(null),c=u.useMemo(()=>t?"working":e?"ok":"error",[t,e]),f=u.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=KE(i);return a.jsxs($,{ref:i,h:"full",px:2,alignItems:"center",gap:5,children:[a.jsx(co,{children:p&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsxs(Ee,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:Hk[c],_dark:{color:Bk[c]}},children:[s(o),f]})},"statusText")}),a.jsx(Tr,{as:iJ,sx:{boxSize:"0.5rem",color:Hk[c],_dark:{color:Bk[c]}}})]})},iZ=u.memo(aZ),lZ=()=>{const{t:e}=Ie(),t=Yn("bugLink").isFeatureEnabled,n=Yn("discordLink").isFeatureEnabled,r=Yn("githubLink").isFeatureEnabled,o="http://github.com/invoke-ai/InvokeAI",s="https://discord.gg/ZmtBAhwWhy";return a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(GJ,{}),a.jsx(Qi,{}),a.jsx(iZ,{}),a.jsxs(yf,{children:[a.jsx(wf,{as:tt,variant:"link","aria-label":e("accessibility.menu"),icon:a.jsx(sJ,{}),sx:{boxSize:8}}),a.jsxs(Ui,{motionProps:au,children:[a.jsxs(fu,{title:e("common.communityLabel"),children:[r&&a.jsx(Bn,{as:"a",href:o,target:"_blank",icon:a.jsx(JY,{}),children:e("common.githubLabel")}),t&&a.jsx(Bn,{as:"a",href:`${o}/issues`,target:"_blank",icon:a.jsx(aJ,{}),children:e("common.reportBugLabel")}),n&&a.jsx(Bn,{as:"a",href:s,target:"_blank",icon:a.jsx(YY,{}),children:e("common.discordLabel")})]}),a.jsxs(fu,{title:e("common.settingsLabel"),children:[a.jsx(LJ,{children:a.jsx(Bn,{as:"button",icon:a.jsx(SJ,{}),children:e("common.hotkeysLabel")})}),a.jsx(oZ,{children:a.jsx(Bn,{as:"button",icon:a.jsx(TE,{}),children:e("common.settingsLabel")})})]})]})]})]})},cZ=u.memo(lZ),uZ=le(Cs,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),dZ=()=>{const{shouldShow:e,tooltip:t}=z(uZ);return e?a.jsx($,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:a.jsx(Mn,{label:t,placement:"right",hasArrow:!0,children:a.jsx(Wl,{})})}):null},fZ=u.memo(dZ);/*! - * OverlayScrollbars - * Version: 2.2.1 - * - * Copyright (c) Rene Haas | KingSora. - * https://github.com/KingSora - * - * Released under the MIT license. - */function Pn(e,t){if(Dg(e))for(let n=0;nt(e[n],n,e));return e}function io(e,t){const n=el(t);if(Js(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?Gk(e,s,t):t.reduce((i,c)=>(i[c]=Gk(e,s,c),i),o)}return o}e&&Pn(Qo(t),o=>IZ(e,o,t[o]))}const Ns=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,i;const c=(h,m)=>{const v=s,b=h,y=m||(r?!r(v,b):v!==b);return(y||o)&&(s=b,i=v),[s,y,i]};return[t?h=>c(t(s,i),h):c,h=>[s,!!h,i]]},Of=()=>typeof window<"u",XE=Of()&&Node.ELEMENT_NODE,{toString:pZ,hasOwnProperty:Uv}=Object.prototype,gi=e=>e===void 0,Rg=e=>e===null,hZ=e=>gi(e)||Rg(e)?`${e}`:pZ.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),Hi=e=>typeof e=="number",el=e=>typeof e=="string",ky=e=>typeof e=="boolean",Ys=e=>typeof e=="function",Js=e=>Array.isArray(e),qd=e=>typeof e=="object"&&!Js(e)&&!Rg(e),Dg=e=>{const t=!!e&&e.length,n=Hi(t)&&t>-1&&t%1==0;return Js(e)||!Ys(e)&&n?t>0&&qd(e)?t-1 in e:!0:!1},yb=e=>{if(!e||!qd(e)||hZ(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=Uv.call(e,n),i=o&&Uv.call(o,"isPrototypeOf");if(r&&!s&&!i)return!1;for(t in e);return gi(t)||Uv.call(e,t)},Sm=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===XE:!1},Ag=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===XE:!1},jy=(e,t,n)=>e.indexOf(t,n),Nn=(e,t,n)=>(!n&&!el(t)&&Dg(t)?Array.prototype.push.apply(e,t):e.push(t),e),zl=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{Nn(n,r)}):Pn(e,r=>{Nn(n,r)}),n)},_y=e=>!!e&&e.length===0,Aa=(e,t,n)=>{Pn(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},Ng=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Qo=e=>e?Object.keys(e):[],fr=(e,t,n,r,o,s,i)=>{const c=[t,n,r,o,s,i];return(typeof e!="object"||Rg(e))&&!Ys(e)&&(e={}),Pn(c,f=>{Pn(Qo(f),p=>{const h=f[p];if(e===h)return!0;const m=Js(h);if(h&&(yb(h)||m)){const v=e[p];let b=v;m&&!Js(v)?b=[]:!m&&!yb(v)&&(b={}),e[p]=fr(b,h)}else e[p]=h})}),e},Py=e=>{for(const t in e)return!1;return!0},QE=(e,t,n,r)=>{if(gi(r))return n?n[e]:t;n&&(el(r)||Hi(r))&&(n[e]=r)},ao=(e,t,n)=>{if(gi(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},_o=(e,t)=>{e&&e.removeAttribute(t)},kl=(e,t,n,r)=>{if(n){const o=ao(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const i=zl(s).join(" ").trim();ao(e,t,i)}},mZ=(e,t,n)=>{const r=ao(e,t)||"";return new Set(r.split(" ")).has(n)},Vs=(e,t)=>QE("scrollLeft",0,e,t),ti=(e,t)=>QE("scrollTop",0,e,t),wb=Of()&&Element.prototype,YE=(e,t)=>{const n=[],r=t?Ag(t)?t:null:document;return r?Nn(n,r.querySelectorAll(e)):n},gZ=(e,t)=>{const n=t?Ag(t)?t:null:document;return n?n.querySelector(e):null},km=(e,t)=>Ag(e)?(wb.matches||wb.msMatchesSelector).call(e,t):!1,Iy=e=>e?zl(e.childNodes):[],ai=e=>e?e.parentElement:null,Tc=(e,t)=>{if(Ag(e)){const n=wb.closest;if(n)return n.call(e,t);do{if(km(e,t))return e;e=ai(e)}while(e)}return null},vZ=(e,t,n)=>{const r=e&&Tc(e,t),o=e&&gZ(n,r),s=Tc(o,t)===r;return r&&o?r===e||o===e||s&&Tc(Tc(e,n),t)!==r:!1},Ey=(e,t,n)=>{if(n&&e){let r=t,o;Dg(n)?(o=document.createDocumentFragment(),Pn(n,s=>{s===r&&(r=s.previousSibling),o.appendChild(s)})):o=n,t&&(r?r!==t&&(r=r.nextSibling):r=e.firstChild),e.insertBefore(o,r||null)}},ms=(e,t)=>{Ey(e,null,t)},bZ=(e,t)=>{Ey(ai(e),e,t)},Wk=(e,t)=>{Ey(ai(e),e&&e.nextSibling,t)},_a=e=>{if(Dg(e))Pn(zl(e),t=>_a(t));else if(e){const t=ai(e);t&&t.removeChild(e)}},jl=e=>{const t=document.createElement("div");return e&&ao(t,"class",e),t},JE=e=>{const t=jl();return t.innerHTML=e.trim(),Pn(Iy(t),n=>_a(n))},Cb=e=>e.charAt(0).toUpperCase()+e.slice(1),xZ=()=>jl().style,yZ=["-webkit-","-moz-","-o-","-ms-"],wZ=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Gv={},qv={},CZ=e=>{let t=qv[e];if(Ng(qv,e))return t;const n=Cb(e),r=xZ();return Pn(yZ,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,Cb(s)+n].find(c=>r[c]!==void 0))}),qv[e]=t||""},Mf=e=>{if(Of()){let t=Gv[e]||window[e];return Ng(Gv,e)||(Pn(wZ,n=>(t=t||window[n+Cb(e)],!t)),Gv[e]=t),t}},SZ=Mf("MutationObserver"),Vk=Mf("IntersectionObserver"),$c=Mf("ResizeObserver"),ZE=Mf("cancelAnimationFrame"),eO=Mf("requestAnimationFrame"),jm=Of()&&window.setTimeout,Sb=Of()&&window.clearTimeout,kZ=/[^\x20\t\r\n\f]+/g,tO=(e,t,n)=>{const r=e&&e.classList;let o,s=0,i=!1;if(r&&t&&el(t)){const c=t.match(kZ)||[];for(i=c.length>0;o=c[s++];)i=!!n(r,o)&&i}return i},Oy=(e,t)=>{tO(e,t,(n,r)=>n.remove(r))},ni=(e,t)=>(tO(e,t,(n,r)=>n.add(r)),Oy.bind(0,e,t)),Tg=(e,t,n,r)=>{if(e&&t){let o=!0;return Pn(n,s=>{const i=r?r(e[s]):e[s],c=r?r(t[s]):t[s];i!==c&&(o=!1)}),o}return!1},nO=(e,t)=>Tg(e,t,["w","h"]),rO=(e,t)=>Tg(e,t,["x","y"]),jZ=(e,t)=>Tg(e,t,["t","r","b","l"]),Uk=(e,t,n)=>Tg(e,t,["width","height"],n&&(r=>Math.round(r))),ps=()=>{},Oc=e=>{let t;const n=e?jm:eO,r=e?Sb:ZE;return[o=>{r(t),t=n(o,Ys(e)?e():e)},()=>r(t)]},My=(e,t)=>{let n,r,o,s=ps;const{v:i,g:c,p:f}=t||{},p=function(y){s(),Sb(n),n=r=void 0,s=ps,e.apply(this,y)},h=b=>f&&r?f(r,b):b,m=()=>{s!==ps&&p(h(o)||o)},v=function(){const y=zl(arguments),x=Ys(i)?i():i;if(Hi(x)&&x>=0){const k=Ys(c)?c():c,j=Hi(k)&&k>=0,_=x>0?jm:eO,I=x>0?Sb:ZE,E=h(y)||y,M=p.bind(0,E);s();const R=_(M,x);s=()=>I(R),j&&!n&&(n=jm(m,k)),r=o=E}else p(y)};return v.m=m,v},_Z={opacity:1,zindex:1},Vp=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},PZ=(e,t)=>!_Z[e.toLowerCase()]&&Hi(t)?`${t}px`:t,Gk=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],IZ=(e,t,n)=>{try{const{style:r}=e;gi(r[t])?r.setProperty(t,n):r[t]=PZ(t,n)}catch{}},Kd=e=>io(e,"direction")==="rtl",qk=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,i=`${r}right${o}`,c=`${r}bottom${o}`,f=`${r}left${o}`,p=io(e,[s,i,c,f]);return{t:Vp(p[s],!0),r:Vp(p[i],!0),b:Vp(p[c],!0),l:Vp(p[f],!0)}},{round:Kk}=Math,Ry={w:0,h:0},Xd=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:Ry,hh=e=>e?{w:e.clientWidth,h:e.clientHeight}:Ry,_m=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:Ry,Pm=e=>{const t=parseFloat(io(e,"height"))||0,n=parseFloat(io(e,"width"))||0;return{w:n-Kk(n),h:t-Kk(t)}},ya=e=>e.getBoundingClientRect();let Up;const EZ=()=>{if(gi(Up)){Up=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){Up=!0}}))}catch{}}return Up},oO=e=>e.split(" "),OZ=(e,t,n,r)=>{Pn(oO(t),o=>{e.removeEventListener(o,n,r)})},$r=(e,t,n,r)=>{var o;const s=EZ(),i=(o=s&&r&&r.S)!=null?o:s,c=r&&r.$||!1,f=r&&r.C||!1,p=[],h=s?{passive:i,capture:c}:c;return Pn(oO(t),m=>{const v=f?b=>{e.removeEventListener(m,v,c),n&&n(b)}:n;Nn(p,OZ.bind(null,e,m,v,c)),e.addEventListener(m,v,h)}),Aa.bind(0,p)},sO=e=>e.stopPropagation(),aO=e=>e.preventDefault(),MZ={x:0,y:0},Kv=e=>{const t=e?ya(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:MZ},Xk=(e,t)=>{Pn(Js(t)?t:[t],e)},Dy=e=>{const t=new Map,n=(s,i)=>{if(s){const c=t.get(s);Xk(f=>{c&&c[f?"delete":"clear"](f)},i)}else t.forEach(c=>{c.clear()}),t.clear()},r=(s,i)=>{if(el(s)){const p=t.get(s)||new Set;return t.set(s,p),Xk(h=>{Ys(h)&&p.add(h)},i),n.bind(0,s,i)}ky(i)&&i&&n();const c=Qo(s),f=[];return Pn(c,p=>{const h=s[p];h&&Nn(f,r(p,h))}),Aa.bind(0,f)},o=(s,i)=>{const c=t.get(s);Pn(zl(c),f=>{i&&!_y(i)?f.apply(0,i):f()})};return r(e||{}),[r,n,o]},Qk=e=>JSON.stringify(e,(t,n)=>{if(Ys(n))throw new Error;return n}),RZ={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},iO=(e,t)=>{const n={},r=Qo(t).concat(Qo(e));return Pn(r,o=>{const s=e[o],i=t[o];if(qd(s)&&qd(i))fr(n[o]={},iO(s,i)),Py(n[o])&&delete n[o];else if(Ng(t,o)&&i!==s){let c=!0;if(Js(s)||Js(i))try{Qk(s)===Qk(i)&&(c=!1)}catch{}c&&(n[o]=i)}}),n},lO="os-environment",cO=`${lO}-flexbox-glue`,DZ=`${cO}-max`,uO="os-scrollbar-hidden",Xv="data-overlayscrollbars-initialize",Ts="data-overlayscrollbars",dO=`${Ts}-overflow-x`,fO=`${Ts}-overflow-y`,Yc="overflowVisible",AZ="scrollbarHidden",Yk="scrollbarPressed",Im="updating",Oi="data-overlayscrollbars-viewport",Qv="arrange",pO="scrollbarHidden",Jc=Yc,kb="data-overlayscrollbars-padding",NZ=Jc,Jk="data-overlayscrollbars-content",Ay="os-size-observer",TZ=`${Ay}-appear`,$Z=`${Ay}-listener`,LZ="os-trinsic-observer",FZ="os-no-css-vars",zZ="os-theme-none",To="os-scrollbar",BZ=`${To}-rtl`,HZ=`${To}-horizontal`,WZ=`${To}-vertical`,hO=`${To}-track`,Ny=`${To}-handle`,VZ=`${To}-visible`,UZ=`${To}-cornerless`,Zk=`${To}-transitionless`,ej=`${To}-interaction`,tj=`${To}-unusable`,nj=`${To}-auto-hidden`,rj=`${To}-wheel`,GZ=`${hO}-interactive`,qZ=`${Ny}-interactive`,mO={},Bl=()=>mO,KZ=e=>{const t=[];return Pn(Js(e)?e:[e],n=>{const r=Qo(n);Pn(r,o=>{Nn(t,mO[o]=n[o])})}),t},XZ="__osOptionsValidationPlugin",QZ="__osSizeObserverPlugin",Ty="__osScrollbarsHidingPlugin",YZ="__osClickScrollPlugin";let Yv;const oj=(e,t,n,r)=>{ms(e,t);const o=hh(t),s=Xd(t),i=Pm(n);return r&&_a(t),{x:s.h-o.h+i.h,y:s.w-o.w+i.w}},JZ=e=>{let t=!1;const n=ni(e,uO);try{t=io(e,CZ("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},ZZ=(e,t)=>{const n="hidden";io(e,{overflowX:n,overflowY:n,direction:"rtl"}),Vs(e,0);const r=Kv(e),o=Kv(t);Vs(e,-999);const s=Kv(t);return{i:r.x===o.x,n:o.x!==s.x}},eee=(e,t)=>{const n=ni(e,cO),r=ya(e),o=ya(t),s=Uk(o,r,!0),i=ni(e,DZ),c=ya(e),f=ya(t),p=Uk(f,c,!0);return n(),i(),s&&p},tee=()=>{const{body:e}=document,n=JE(`
`)[0],r=n.firstChild,[o,,s]=Dy(),[i,c]=Ns({o:oj(e,n,r),u:rO},oj.bind(0,e,n,r,!0)),[f]=c(),p=JZ(n),h={x:f.x===0,y:f.y===0},m={elements:{host:null,padding:!p,viewport:j=>p&&j===j.ownerDocument.body&&j,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=fr({},RZ),b=fr.bind(0,{},v),y=fr.bind(0,{},m),x={k:f,A:h,I:p,L:io(n,"zIndex")==="-1",B:ZZ(n,r),V:eee(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:y,q:j=>fr(m,j)&&y(),F:b,G:j=>fr(v,j)&&b(),X:fr({},m),U:fr({},v)},C=window.addEventListener,k=My(j=>s(j?"z":"r"),{v:33,g:99});if(_o(n,"style"),_a(n),C("resize",k.bind(0,!1)),!p&&(!h.x||!h.y)){let j;C("resize",()=>{const _=Bl()[Ty];j=j||_&&_.R(),j&&j(x,i,k.bind(0,!0))})}return x},$o=()=>(Yv||(Yv=tee()),Yv),$y=(e,t)=>Ys(t)?t.apply(0,e):t,nee=(e,t,n,r)=>{const o=gi(r)?n:r;return $y(e,o)||t.apply(0,e)},gO=(e,t,n,r)=>{const o=gi(r)?n:r,s=$y(e,o);return!!s&&(Sm(s)?s:t.apply(0,e))},ree=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:i}=$o(),{nativeScrollbarsOverlaid:c,body:f}=t,p=r??c,h=gi(o)?f:o,m=(s.x||s.y)&&p,v=e&&(Rg(h)?!i:h);return!!m||!!v},Ly=new WeakMap,oee=(e,t)=>{Ly.set(e,t)},see=e=>{Ly.delete(e)},vO=e=>Ly.get(e),sj=(e,t)=>e?t.split(".").reduce((n,r)=>n&&Ng(n,r)?n[r]:void 0,e):void 0,jb=(e,t,n)=>r=>[sj(e,r),n||sj(t,r)!==void 0],bO=e=>{let t=e;return[()=>t,n=>{t=fr({},t,n)}]},Gp="tabindex",qp=jl.bind(0,""),Jv=e=>{ms(ai(e),Iy(e)),_a(e)},aee=e=>{const t=$o(),{N:n,I:r}=t,o=Bl()[Ty],s=o&&o.T,{elements:i}=n(),{host:c,padding:f,viewport:p,content:h}=i,m=Sm(e),v=m?{}:e,{elements:b}=v,{host:y,padding:x,viewport:C,content:k}=b||{},j=m?e:v.target,_=km(j,"textarea"),I=j.ownerDocument,O=I.documentElement,E=j===I.body,M=I.defaultView,R=nee.bind(0,[j]),A=gO.bind(0,[j]),D=$y.bind(0,[j]),T=R.bind(0,qp,p),K=A.bind(0,qp,h),B=T(C),G=B===j,Q=G&&E,V=!G&&K(k),L=!G&&Sm(B)&&B===V,X=L&&!!D(h),F=X?T():B,q=X?V:K(),Y=Q?O:L?F:B,ce=_?R(qp,c,y):j,ae=Q?Y:ce,U=L?q:V,W=I.activeElement,ne=!G&&M.top===M&&W===j,ie={W:j,Z:ae,J:Y,K:!G&&A(qp,f,x),tt:U,nt:!G&&!r&&s&&s(t),ot:Q?O:Y,st:Q?I:Y,et:M,ct:I,rt:_,it:E,lt:m,ut:G,dt:L,ft:(gt,bt)=>mZ(Y,G?Ts:Oi,G?bt:gt),_t:(gt,bt,ye)=>kl(Y,G?Ts:Oi,G?bt:gt,ye)},oe=Qo(ie).reduce((gt,bt)=>{const ye=ie[bt];return Nn(gt,ye&&!ai(ye)?ye:!1)},[]),me=gt=>gt?jy(oe,gt)>-1:null,{W:fe,Z:he,K:Ce,J:xe,tt:de,nt:Ne}=ie,De=[()=>{_o(he,Ts),_o(he,Xv),_o(fe,Xv),E&&(_o(O,Ts),_o(O,Xv))}],Xe=_&&me(he);let It=_?fe:Iy([de,xe,Ce,he,fe].find(gt=>me(gt)===!1));const lt=Q?fe:de||xe;return[ie,()=>{ao(he,Ts,G?"viewport":"host"),ao(Ce,kb,""),ao(de,Jk,""),G||ao(xe,Oi,"");const gt=E&&!G?ni(ai(j),uO):ps;if(Xe&&(Wk(fe,he),Nn(De,()=>{Wk(he,fe),_a(he)})),ms(lt,It),ms(he,Ce),ms(Ce||he,!G&&xe),ms(xe,de),Nn(De,()=>{gt(),_o(Ce,kb),_o(de,Jk),_o(xe,dO),_o(xe,fO),_o(xe,Oi),me(de)&&Jv(de),me(xe)&&Jv(xe),me(Ce)&&Jv(Ce)}),r&&!G&&(kl(xe,Oi,pO,!0),Nn(De,_o.bind(0,xe,Oi))),Ne&&(bZ(xe,Ne),Nn(De,_a.bind(0,Ne))),ne){const bt=ao(xe,Gp);ao(xe,Gp,"-1"),xe.focus();const ye=()=>bt?ao(xe,Gp,bt):_o(xe,Gp),We=$r(I,"pointerdown keydown",()=>{ye(),We()});Nn(De,[ye,We])}else W&&W.focus&&W.focus();It=0},Aa.bind(0,De)]},iee=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=$o(),{ht:i}=r(),{vt:c}=o,f=(n||!s)&&c;return f&&io(n,{height:i?"":"100%"}),{gt:f,wt:f}}},lee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,ut:c}=e,[f,p]=Ns({u:jZ,o:qk()},qk.bind(0,o,"padding",""));return(h,m,v)=>{let[b,y]=p(v);const{I:x,V:C}=$o(),{bt:k}=n(),{gt:j,wt:_,yt:I}=h,[O,E]=m("paddingAbsolute");(j||y||!C&&_)&&([b,y]=f(v));const R=!c&&(E||I||y);if(R){const A=!O||!s&&!x,D=b.r+b.l,T=b.t+b.b,K={marginRight:A&&!k?-D:0,marginBottom:A?-T:0,marginLeft:A&&k?-D:0,top:A?-b.t:0,right:A?k?-b.r:"auto":0,left:A?k?"auto":-b.l:0,width:A?`calc(100% + ${D}px)`:""},B={paddingTop:A?b.t:0,paddingRight:A?b.r:0,paddingBottom:A?b.b:0,paddingLeft:A?b.l:0};io(s||i,K),io(i,B),r({K:b,St:!A,P:s?B:fr({},K,B)})}return{xt:R}}},{max:_b}=Math,Mi=_b.bind(0,0),xO="visible",aj="hidden",cee=42,Kp={u:nO,o:{w:0,h:0}},uee={u:rO,o:{x:aj,y:aj}},dee=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:Mi(e.w-t.w),h:Mi(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},Xp=e=>e.indexOf(xO)===0,fee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,nt:c,ut:f,_t:p,it:h,et:m}=e,{k:v,V:b,I:y,A:x}=$o(),C=Bl()[Ty],k=!f&&!y&&(x.x||x.y),j=h&&f,[_,I]=Ns(Kp,Pm.bind(0,i)),[O,E]=Ns(Kp,_m.bind(0,i)),[M,R]=Ns(Kp),[A,D]=Ns(Kp),[T]=Ns(uee),K=(X,F)=>{if(io(i,{height:""}),F){const{St:q,K:te}=n(),{$t:Y,D:ce}=X,ae=Pm(o),U=hh(o),W=io(i,"boxSizing")==="content-box",ne=q||W?te.b+te.t:0,ie=!(x.x&&W);io(i,{height:U.h+ae.h+(Y.x&&ie?ce.x:0)-ne})}},B=(X,F)=>{const q=!y&&!X?cee:0,te=(me,fe,he)=>{const Ce=io(i,me),de=(F?F[me]:Ce)==="scroll";return[Ce,de,de&&!y?fe?q:he:0,fe&&!!q]},[Y,ce,ae,U]=te("overflowX",x.x,v.x),[W,ne,ie,oe]=te("overflowY",x.y,v.y);return{Ct:{x:Y,y:W},$t:{x:ce,y:ne},D:{x:ae,y:ie},M:{x:U,y:oe}}},G=(X,F,q,te)=>{const Y=(ne,ie)=>{const oe=Xp(ne),me=ie&&oe&&ne.replace(`${xO}-`,"")||"";return[ie&&!oe?ne:"",Xp(me)?"hidden":me]},[ce,ae]=Y(q.x,F.x),[U,W]=Y(q.y,F.y);return te.overflowX=ae&&U?ae:ce,te.overflowY=W&&ce?W:U,B(X,te)},Q=(X,F,q,te)=>{const{D:Y,M:ce}=X,{x:ae,y:U}=ce,{x:W,y:ne}=Y,{P:ie}=n(),oe=F?"marginLeft":"marginRight",me=F?"paddingLeft":"paddingRight",fe=ie[oe],he=ie.marginBottom,Ce=ie[me],xe=ie.paddingBottom;te.width=`calc(100% + ${ne+-1*fe}px)`,te[oe]=-ne+fe,te.marginBottom=-W+he,q&&(te[me]=Ce+(U?ne:0),te.paddingBottom=xe+(ae?W:0))},[V,L]=C?C.H(k,b,i,c,n,B,Q):[()=>k,()=>[ps]];return(X,F,q)=>{const{gt:te,Ot:Y,wt:ce,xt:ae,vt:U,yt:W}=X,{ht:ne,bt:ie}=n(),[oe,me]=F("showNativeOverlaidScrollbars"),[fe,he]=F("overflow"),Ce=oe&&x.x&&x.y,xe=!f&&!b&&(te||ce||Y||me||U),de=Xp(fe.x),Ne=Xp(fe.y),De=de||Ne;let Xe=I(q),It=E(q),lt=R(q),on=D(q),gt;if(me&&y&&p(pO,AZ,!Ce),xe&&(gt=B(Ce),K(gt,ne)),te||ae||ce||W||me){De&&p(Jc,Yc,!1);const[_e,Ze]=L(Ce,ie,gt),[Qe,ct]=Xe=_(q),[Ft,ir]=It=O(q),pn=hh(i);let ln=Ft,Ur=pn;_e(),(ir||ct||me)&&Ze&&!Ce&&V(Ze,Ft,Qe,ie)&&(Ur=hh(i),ln=_m(i));const wr={w:Mi(_b(Ft.w,ln.w)+Qe.w),h:Mi(_b(Ft.h,ln.h)+Qe.h)},Hn={w:Mi((j?m.innerWidth:Ur.w+Mi(pn.w-Ft.w))+Qe.w),h:Mi((j?m.innerHeight+Qe.h:Ur.h+Mi(pn.h-Ft.h))+Qe.h)};on=A(Hn),lt=M(dee(wr,Hn),q)}const[bt,ye]=on,[We,Et]=lt,[zt,we]=It,[xt,Nt]=Xe,Lt={x:We.w>0,y:We.h>0},$e=de&&Ne&&(Lt.x||Lt.y)||de&&Lt.x&&!Lt.y||Ne&&Lt.y&&!Lt.x;if(ae||W||Nt||we||ye||Et||he||me||xe){const _e={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},Ze=G(Ce,Lt,fe,_e),Qe=V(Ze,zt,xt,ie);f||Q(Ze,ie,Qe,_e),xe&&K(Ze,ne),f?(ao(o,dO,_e.overflowX),ao(o,fO,_e.overflowY)):io(i,_e)}kl(o,Ts,Yc,$e),kl(s,kb,NZ,$e),f||kl(i,Oi,Jc,De);const[Ke,vn]=T(B(Ce).Ct);return r({Ct:Ke,zt:{x:bt.w,y:bt.h},Tt:{x:We.w,y:We.h},Et:Lt}),{It:vn,At:ye,Lt:Et}}},ij=(e,t,n)=>{const r={},o=t||{},s=Qo(e).concat(Qo(o));return Pn(s,i=>{const c=e[i],f=o[i];r[i]=!!(n||c||f)}),r},pee=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:i,A:c,V:f}=$o(),p=!i&&(c.x||c.y),h=[iee(e,t),lee(e,t),fee(e,t)];return(m,v,b)=>{const y=ij(fr({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},b),x=p||!f,C=x&&Vs(r),k=x&&ti(r);o("",Im,!0);let j=y;return Pn(h,_=>{j=ij(j,_(j,m,!!b)||{},b)}),Vs(r,C),ti(r,k),o("",Im),s||(Vs(n,0),ti(n,0)),j}},hee=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},i=c=>{if(n){const f=n.reduce((p,h)=>{if(h){const[m,v]=h,b=v&&m&&(c?c(m):YE(m,e));b&&b.length&&v&&el(v)&&Nn(p,[b,v.trim()],!0)}return p},[]);Pn(f,p=>Pn(p[0],h=>{const m=p[1],v=r.get(h)||[];if(e.contains(h)){const y=$r(h,m,x=>{o?(y(),r.delete(h)):t(x)});r.set(h,Nn(v,y))}else Aa(v),r.delete(h)}))}};return n&&(r=new WeakMap,i()),[s,i]},lj=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:i,Dt:c,Mt:f,Rt:p,kt:h}=r||{},m=My(()=>{o&&n(!0)},{v:33,g:99}),[v,b]=hee(e,m,c),y=s||[],x=i||[],C=y.concat(x),k=(_,I)=>{const O=p||ps,E=h||ps,M=new Set,R=new Set;let A=!1,D=!1;if(Pn(_,T=>{const{attributeName:K,target:B,type:G,oldValue:Q,addedNodes:V,removedNodes:L}=T,X=G==="attributes",F=G==="childList",q=e===B,te=X&&el(K)?ao(B,K):0,Y=te!==0&&Q!==te,ce=jy(x,K)>-1&&Y;if(t&&(F||!q)){const ae=!X,U=X&&Y,W=U&&f&&km(B,f),ie=(W?!O(B,K,Q,te):ae||U)&&!E(T,!!W,e,r);Pn(V,oe=>M.add(oe)),Pn(L,oe=>M.add(oe)),D=D||ie}!t&&q&&Y&&!O(B,K,Q,te)&&(R.add(K),A=A||ce)}),M.size>0&&b(T=>zl(M).reduce((K,B)=>(Nn(K,YE(T,B)),km(B,T)?Nn(K,B):K),[])),t)return!I&&D&&n(!1),[!1];if(R.size>0||A){const T=[zl(R),A];return!I&&n.apply(0,T),T}},j=new SZ(_=>k(_));return j.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:C,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),j.disconnect(),o=!1)},()=>{if(o){m.m();const _=j.takeRecords();return!_y(_)&&k(_,!0)}}]},Qp=3333333,Yp=e=>e&&(e.height||e.width),yO=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=Bl()[QZ],{B:i}=$o(),f=JE(`
`)[0],p=f.firstChild,h=Kd.bind(0,e),[m]=Ns({o:void 0,_:!0,u:(x,C)=>!(!x||!Yp(x)&&Yp(C))}),v=x=>{const C=Js(x)&&x.length>0&&qd(x[0]),k=!C&&ky(x[0]);let j=!1,_=!1,I=!0;if(C){const[O,,E]=m(x.pop().contentRect),M=Yp(O),R=Yp(E);j=!E||!M,_=!R&&M,I=!j}else k?[,I]=x:_=x===!0;if(r&&I){const O=k?x[0]:Kd(f);Vs(f,O?i.n?-Qp:i.i?0:Qp:Qp),ti(f,Qp)}j||t({gt:!k,Yt:k?x:void 0,Vt:!!_})},b=[];let y=o?v:!1;return[()=>{Aa(b),_a(f)},()=>{if($c){const x=new $c(v);x.observe(p),Nn(b,()=>{x.disconnect()})}else if(s){const[x,C]=s.O(p,v,o);y=x,Nn(b,C)}if(r){const[x]=Ns({o:void 0},h);Nn(b,$r(f,"scroll",C=>{const k=x(),[j,_,I]=k;_&&(Oy(p,"ltr rtl"),j?ni(p,"rtl"):ni(p,"ltr"),v([!!j,_,I])),sO(C)}))}y&&(ni(f,TZ),Nn(b,$r(f,"animationstart",y,{C:!!$c}))),($c||s)&&ms(e,f)}]},mee=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,gee=(e,t)=>{let n;const r=jl(LZ),o=[],[s]=Ns({o:!1}),i=(f,p)=>{if(f){const h=s(mee(f)),[,m]=h;if(m)return!p&&t(h),[h]}},c=(f,p)=>{if(f&&f.length>0)return i(f.pop(),p)};return[()=>{Aa(o),_a(r)},()=>{if(Vk)n=new Vk(f=>c(f),{root:e}),n.observe(r),Nn(o,()=>{n.disconnect()});else{const f=()=>{const m=Xd(r);i(m)},[p,h]=yO(r,f);Nn(o,p),h(),f()}ms(e,r)},()=>{if(n)return c(n.takeRecords(),!0)}]},cj=`[${Ts}]`,vee=`[${Oi}]`,Zv=["tabindex"],uj=["wrap","cols","rows"],e1=["id","class","style","open"],bee=(e,t,n)=>{let r,o,s;const{Z:i,J:c,tt:f,rt:p,ut:h,ft:m,_t:v}=e,{V:b}=$o(),[y]=Ns({u:nO,o:{w:0,h:0}},()=>{const G=m(Jc,Yc),Q=m(Qv,""),V=Q&&Vs(c),L=Q&&ti(c);v(Jc,Yc),v(Qv,""),v("",Im,!0);const X=_m(f),F=_m(c),q=Pm(c);return v(Jc,Yc,G),v(Qv,"",Q),v("",Im),Vs(c,V),ti(c,L),{w:F.w+X.w+q.w,h:F.h+X.h+q.h}}),x=p?uj:e1.concat(uj),C=My(n,{v:()=>r,g:()=>o,p(G,Q){const[V]=G,[L]=Q;return[Qo(V).concat(Qo(L)).reduce((X,F)=>(X[F]=V[F]||L[F],X),{})]}}),k=G=>{Pn(G||Zv,Q=>{if(jy(Zv,Q)>-1){const V=ao(i,Q);el(V)?ao(c,Q,V):_o(c,Q)}})},j=(G,Q)=>{const[V,L]=G,X={vt:L};return t({ht:V}),!Q&&n(X),X},_=({gt:G,Yt:Q,Vt:V})=>{const L=!G||V?n:C;let X=!1;if(Q){const[F,q]=Q;X=q,t({bt:F})}L({gt:G,yt:X})},I=(G,Q)=>{const[,V]=y(),L={wt:V};return V&&!Q&&(G?n:C)(L),L},O=(G,Q,V)=>{const L={Ot:Q};return Q?!V&&C(L):h||k(G),L},[E,M,R]=f||!b?gee(i,j):[ps,ps,ps],[A,D]=h?[ps,ps]:yO(i,_,{Vt:!0,Bt:!0}),[T,K]=lj(i,!1,O,{Pt:e1,Ht:e1.concat(Zv)}),B=h&&$c&&new $c(_.bind(0,{gt:!0}));return B&&B.observe(i),k(),[()=>{E(),A(),s&&s[0](),B&&B.disconnect(),T()},()=>{D(),M()},()=>{const G={},Q=K(),V=R(),L=s&&s[1]();return Q&&fr(G,O.apply(0,Nn(Q,!0))),V&&fr(G,j.apply(0,Nn(V,!0))),L&&fr(G,I.apply(0,Nn(L,!0))),G},G=>{const[Q]=G("update.ignoreMutation"),[V,L]=G("update.attributes"),[X,F]=G("update.elementEvents"),[q,te]=G("update.debounce"),Y=F||L,ce=ae=>Ys(Q)&&Q(ae);if(Y&&(s&&(s[1](),s[0]()),s=lj(f||c,!0,I,{Ht:x.concat(V||[]),Dt:X,Mt:cj,kt:(ae,U)=>{const{target:W,attributeName:ne}=ae;return(!U&&ne&&!h?vZ(W,cj,vee):!1)||!!Tc(W,`.${To}`)||!!ce(ae)}})),te)if(C.m(),Js(q)){const ae=q[0],U=q[1];r=Hi(ae)&&ae,o=Hi(U)&&U}else Hi(q)?(r=q,o=!1):(r=!1,o=!1)}]},dj={x:0,y:0},xee=e=>({K:{t:0,r:0,b:0,l:0},St:!1,P:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},zt:dj,Tt:dj,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:Kd(e.Z)}),yee=(e,t)=>{const n=jb(t,{}),[r,o,s]=Dy(),[i,c,f]=aee(e),p=bO(xee(i)),[h,m]=p,v=pee(i,p),b=(_,I,O)=>{const M=Qo(_).some(R=>_[R])||!Py(I)||O;return M&&s("u",[_,I,O]),M},[y,x,C,k]=bee(i,m,_=>b(v(n,_),{},!1)),j=h.bind(0);return j.jt=_=>r("u",_),j.Nt=()=>{const{W:_,J:I}=i,O=Vs(_),E=ti(_);x(),c(),Vs(I,O),ti(I,E)},j.qt=i,[(_,I)=>{const O=jb(t,_,I);return k(O),b(v(O,C(),I),_,!!I)},j,()=>{o(),y(),f()}]},{round:fj}=Math,wee=e=>{const{width:t,height:n}=ya(e),{w:r,h:o}=Xd(e);return{x:fj(t)/r||1,y:fj(n)/o||1}},Cee=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:i}=e,{pointers:c}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(c||[]).includes(i)},See=(e,t)=>$r(e,"mousedown",$r.bind(0,t,"click",sO,{C:!0,$:!0}),{$:!0}),pj="pointerup pointerleave pointercancel lostpointercapture",kee=(e,t,n,r,o,s,i)=>{const{B:c}=$o(),{Ft:f,Gt:p,Xt:h}=r,m=`scroll${i?"Left":"Top"}`,v=`client${i?"X":"Y"}`,b=i?"width":"height",y=i?"left":"top",x=i?"w":"h",C=i?"x":"y",k=(j,_)=>I=>{const{Tt:O}=s(),E=Xd(p)[x]-Xd(f)[x],R=_*I/E*O[C],D=Kd(h)&&i?c.n||c.i?1:-1:1;o[m]=j+R*D};return $r(p,"pointerdown",j=>{const _=Tc(j.target,`.${Ny}`)===f,I=_?f:p;if(kl(t,Ts,Yk,!0),Cee(j,e,_)){const O=!_&&j.shiftKey,E=()=>ya(f),M=()=>ya(p),R=(F,q)=>(F||E())[y]-(q||M())[y],A=k(o[m]||0,1/wee(o)[C]),D=j[v],T=E(),K=M(),B=T[b],G=R(T,K)+B/2,Q=D-K[y],V=_?0:Q-G,L=F=>{Aa(X),I.releasePointerCapture(F.pointerId)},X=[kl.bind(0,t,Ts,Yk),$r(n,pj,L),$r(n,"selectstart",F=>aO(F),{S:!1}),$r(p,pj,L),$r(p,"pointermove",F=>{const q=F[v]-D;(_||O)&&A(V+q)})];if(O)A(V);else if(!_){const F=Bl()[YZ];F&&Nn(X,F.O(A,R,V,B,Q))}I.setPointerCapture(j.pointerId)}})},jee=(e,t)=>(n,r,o,s,i,c)=>{const{Xt:f}=n,[p,h]=Oc(333),m=!!i.scrollBy;let v=!0;return Aa.bind(0,[$r(f,"pointerenter",()=>{r(ej,!0)}),$r(f,"pointerleave pointercancel",()=>{r(ej)}),$r(f,"wheel",b=>{const{deltaX:y,deltaY:x,deltaMode:C}=b;m&&v&&C===0&&ai(f)===s&&i.scrollBy({left:y,top:x,behavior:"smooth"}),v=!1,r(rj,!0),p(()=>{v=!0,r(rj)}),aO(b)},{S:!1,$:!0}),See(f,o),kee(e,s,o,n,i,t,c),h])},{min:Pb,max:hj,abs:_ee,round:Pee}=Math,wO=(e,t,n,r)=>{if(r){const c=n?"x":"y",{Tt:f,zt:p}=r,h=p[c],m=f[c];return hj(0,Pb(1,h/(h+m)))}const o=n?"width":"height",s=ya(e)[o],i=ya(t)[o];return hj(0,Pb(1,s/i))},Iee=(e,t,n,r,o,s)=>{const{B:i}=$o(),c=s?"x":"y",f=s?"Left":"Top",{Tt:p}=r,h=Pee(p[c]),m=_ee(n[`scroll${f}`]),v=s&&o,b=i.i?m:h-m,x=Pb(1,(v?b:m)/h),C=wO(e,t,s);return 1/C*(1-C)*x},Eee=(e,t,n)=>{const{N:r,L:o}=$o(),{scrollbars:s}=r(),{slot:i}=s,{ct:c,W:f,Z:p,J:h,lt:m,ot:v,it:b,ut:y}=t,{scrollbars:x}=m?{}:e,{slot:C}=x||{},k=gO([f,p,h],()=>y&&b?f:p,i,C),j=(V,L,X)=>{const F=X?ni:Oy;Pn(V,q=>{F(q.Xt,L)})},_=(V,L)=>{Pn(V,X=>{const[F,q]=L(X);io(F,q)})},I=(V,L,X)=>{_(V,F=>{const{Ft:q,Gt:te}=F;return[q,{[X?"width":"height"]:`${(100*wO(q,te,X,L)).toFixed(3)}%`}]})},O=(V,L,X)=>{const F=X?"X":"Y";_(V,q=>{const{Ft:te,Gt:Y,Xt:ce}=q,ae=Iee(te,Y,v,L,Kd(ce),X);return[te,{transform:ae===ae?`translate${F}(${(100*ae).toFixed(3)}%)`:""}]})},E=[],M=[],R=[],A=(V,L,X)=>{const F=ky(X),q=F?X:!0,te=F?!X:!0;q&&j(M,V,L),te&&j(R,V,L)},D=V=>{I(M,V,!0),I(R,V)},T=V=>{O(M,V,!0),O(R,V)},K=V=>{const L=V?HZ:WZ,X=V?M:R,F=_y(X)?Zk:"",q=jl(`${To} ${L} ${F}`),te=jl(hO),Y=jl(Ny),ce={Xt:q,Gt:te,Ft:Y};return o||ni(q,FZ),ms(q,te),ms(te,Y),Nn(X,ce),Nn(E,[_a.bind(0,q),n(ce,A,c,p,v,V)]),ce},B=K.bind(0,!0),G=K.bind(0,!1),Q=()=>{ms(k,M[0].Xt),ms(k,R[0].Xt),jm(()=>{A(Zk)},300)};return B(),G(),[{Ut:D,Wt:T,Zt:A,Jt:{Kt:M,Qt:B,tn:_.bind(0,M)},nn:{Kt:R,Qt:G,tn:_.bind(0,R)}},Q,Aa.bind(0,E)]},Oee=(e,t,n,r)=>{let o,s,i,c,f,p=0;const h=bO({}),[m]=h,[v,b]=Oc(),[y,x]=Oc(),[C,k]=Oc(100),[j,_]=Oc(100),[I,O]=Oc(()=>p),[E,M,R]=Eee(e,n.qt,jee(t,n)),{Z:A,J:D,ot:T,st:K,ut:B,it:G}=n.qt,{Jt:Q,nn:V,Zt:L,Ut:X,Wt:F}=E,{tn:q}=Q,{tn:te}=V,Y=ne=>{const{Xt:ie}=ne,oe=B&&!G&&ai(ie)===D&&ie;return[oe,{transform:oe?`translate(${Vs(T)}px, ${ti(T)}px)`:""}]},ce=(ne,ie)=>{if(O(),ne)L(nj);else{const oe=()=>L(nj,!0);p>0&&!ie?I(oe):oe()}},ae=()=>{c=s,c&&ce(!0)},U=[k,O,_,x,b,R,$r(A,"pointerover",ae,{C:!0}),$r(A,"pointerenter",ae),$r(A,"pointerleave",()=>{c=!1,s&&ce(!1)}),$r(A,"pointermove",()=>{o&&v(()=>{k(),ce(!0),j(()=>{o&&ce(!1)})})}),$r(K,"scroll",ne=>{y(()=>{F(n()),i&&ce(!0),C(()=>{i&&!c&&ce(!1)})}),r(ne),B&&q(Y),B&&te(Y)})],W=m.bind(0);return W.qt=E,W.Nt=M,[(ne,ie,oe)=>{const{At:me,Lt:fe,It:he,yt:Ce}=oe,{A:xe}=$o(),de=jb(t,ne,ie),Ne=n(),{Tt:De,Ct:Xe,bt:It}=Ne,[lt,on]=de("showNativeOverlaidScrollbars"),[gt,bt]=de("scrollbars.theme"),[ye,We]=de("scrollbars.visibility"),[Et,zt]=de("scrollbars.autoHide"),[we]=de("scrollbars.autoHideDelay"),[xt,Nt]=de("scrollbars.dragScroll"),[Lt,$e]=de("scrollbars.clickScroll"),Ke=me||fe||Ce,vn=he||We,_e=lt&&xe.x&&xe.y,Ze=(Qe,ct)=>{const Ft=ye==="visible"||ye==="auto"&&Qe==="scroll";return L(VZ,Ft,ct),Ft};if(p=we,on&&L(zZ,_e),bt&&(L(f),L(gt,!0),f=gt),zt&&(o=Et==="move",s=Et==="leave",i=Et!=="never",ce(!i,!0)),Nt&&L(qZ,xt),$e&&L(GZ,Lt),vn){const Qe=Ze(Xe.x,!0),ct=Ze(Xe.y,!1);L(UZ,!(Qe&&ct))}Ke&&(X(Ne),F(Ne),L(tj,!De.x,!0),L(tj,!De.y,!1),L(BZ,It&&!G))},W,Aa.bind(0,U)]},CO=(e,t,n)=>{Ys(e)&&e(t||void 0,n||void 0)},Li=(e,t,n)=>{const{F:r,N:o,Y:s,j:i}=$o(),c=Bl(),f=Sm(e),p=f?e:e.target,h=vO(p);if(t&&!h){let m=!1;const v=B=>{const G=Bl()[XZ],Q=G&&G.O;return Q?Q(B,!0):B},b=fr({},r(),v(t)),[y,x,C]=Dy(n),[k,j,_]=yee(e,b),[I,O,E]=Oee(e,b,j,B=>C("scroll",[K,B])),M=(B,G)=>k(B,!!G),R=M.bind(0,{},!0),A=s(R),D=i(R),T=B=>{see(p),A(),D(),E(),_(),m=!0,C("destroyed",[K,!!B]),x()},K={options(B,G){if(B){const Q=G?r():{},V=iO(b,fr(Q,v(B)));Py(V)||(fr(b,V),M(V))}return fr({},b)},on:y,off:(B,G)=>{B&&G&&x(B,G)},state(){const{zt:B,Tt:G,Ct:Q,Et:V,K:L,St:X,bt:F}=j();return fr({},{overflowEdge:B,overflowAmount:G,overflowStyle:Q,hasOverflow:V,padding:L,paddingAbsolute:X,directionRTL:F,destroyed:m})},elements(){const{W:B,Z:G,K:Q,J:V,tt:L,ot:X,st:F}=j.qt,{Jt:q,nn:te}=O.qt,Y=ae=>{const{Ft:U,Gt:W,Xt:ne}=ae;return{scrollbar:ne,track:W,handle:U}},ce=ae=>{const{Kt:U,Qt:W}=ae,ne=Y(U[0]);return fr({},ne,{clone:()=>{const ie=Y(W());return I({},!0,{}),ie}})};return fr({},{target:B,host:G,padding:Q||V,viewport:V,content:L||V,scrollOffsetElement:X,scrollEventElement:F,scrollbarHorizontal:ce(q),scrollbarVertical:ce(te)})},update:B=>M({},B),destroy:T.bind(0)};return j.jt((B,G,Q)=>{I(G,Q,B)}),oee(p,K),Pn(Qo(c),B=>CO(c[B],0,K)),ree(j.qt.it,o().cancel,!f&&e.cancel)?(T(!0),K):(j.Nt(),O.Nt(),C("initialized",[K]),j.jt((B,G,Q)=>{const{gt:V,yt:L,vt:X,At:F,Lt:q,It:te,wt:Y,Ot:ce}=B;C("updated",[K,{updateHints:{sizeChanged:V,directionChanged:L,heightIntrinsicChanged:X,overflowEdgeChanged:F,overflowAmountChanged:q,overflowStyleChanged:te,contentMutation:Y,hostMutation:ce},changedOptions:G,force:Q}])}),K.update(!0),K)}return h};Li.plugin=e=>{Pn(KZ(e),t=>CO(t,Li))};Li.valid=e=>{const t=e&&e.elements,n=Ys(t)&&t();return yb(n)&&!!vO(n.target)};Li.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:i,U:c,N:f,q:p,F:h,G:m}=$o();return fr({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:i,staticDefaultOptions:c,getDefaultInitialization:f,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:m})};const Mee=()=>{if(typeof window>"u"){const p=()=>{};return[p,p]}let e,t;const n=window,r=typeof n.requestIdleCallback=="function",o=n.requestAnimationFrame,s=n.cancelAnimationFrame,i=r?n.requestIdleCallback:o,c=r?n.cancelIdleCallback:s,f=()=>{c(e),s(t)};return[(p,h)=>{f(),e=i(r?()=>{f(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},f]},SO=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=u.useMemo(Mee,[]),i=u.useRef(null),c=u.useRef(r),f=u.useRef(t),p=u.useRef(n);return u.useEffect(()=>{c.current=r},[r]),u.useEffect(()=>{const{current:h}=i;f.current=t,Li.valid(h)&&h.options(t||{},!0)},[t]),u.useEffect(()=>{const{current:h}=i;p.current=n,Li.valid(h)&&h.on(n||{},!0)},[n]),u.useEffect(()=>()=>{var h;s(),(h=i.current)==null||h.destroy()},[]),u.useMemo(()=>[h=>{const m=i.current;if(Li.valid(m))return;const v=c.current,b=f.current||{},y=p.current||{},x=()=>i.current=Li(h,b,y);v?o(x,v):x()},()=>i.current],[])},Ree=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:i,...c}=e,f=n,p=u.useRef(null),h=u.useRef(null),[m,v]=SO({options:r,events:o,defer:s});return u.useEffect(()=>{const{current:b}=p,{current:y}=h;return b&&y&&m({target:b,elements:{viewport:y,content:y}}),()=>{var x;return(x=v())==null?void 0:x.destroy()}},[m,n]),u.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),H.createElement(f,{"data-overlayscrollbars-initialize":"",ref:p,...c},H.createElement("div",{ref:h},i))},$g=u.forwardRef(Ree);var kO={exports:{}},jO={};const Wo=nx(lR),dd=nx(cR),Dee=nx(uR);(function(e){var t,n,r=fc&&fc.__generator||function(J,ee){var ge,je,ve,dt,st={label:0,sent:function(){if(1&ve[0])throw ve[1];return ve[1]},trys:[],ops:[]};return dt={next:Vt(0),throw:Vt(1),return:Vt(2)},typeof Symbol=="function"&&(dt[Symbol.iterator]=function(){return this}),dt;function Vt(ft){return function(yt){return function(He){if(ge)throw new TypeError("Generator is already executing.");for(;st;)try{if(ge=1,je&&(ve=2&He[0]?je.return:He[0]?je.throw||((ve=je.return)&&ve.call(je),0):je.next)&&!(ve=ve.call(je,He[1])).done)return ve;switch(je=0,ve&&(He=[2&He[0],ve.value]),He[0]){case 0:case 1:ve=He;break;case 4:return st.label++,{value:He[1],done:!1};case 5:st.label++,je=He[1],He=[0];continue;case 7:He=st.ops.pop(),st.trys.pop();continue;default:if(!((ve=(ve=st.trys).length>0&&ve[ve.length-1])||He[0]!==6&&He[0]!==2)){st=0;continue}if(He[0]===3&&(!ve||He[1]>ve[0]&&He[1]=200&&J.status<=299},K=function(J){return/ion\/(vnd\.api\+)?json/.test(J.get("content-type")||"")};function B(J){if(!(0,A.isPlainObject)(J))return J;for(var ee=C({},J),ge=0,je=Object.entries(ee);ge"u"&&st===D&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(en,qt){return O(ee,null,function(){var Be,vt,Dt,Ut,In,Kt,un,sn,Mr,Zn,Pt,En,Rn,er,hr,Tn,$n,dn,Sn,On,bn,xn,Ye,Mt,Ct,at,wt,Bt,ht,ot,Ae,Re,Le,Ve,nt,At;return r(this,function(Rt){switch(Rt.label){case 0:return Be=qt.signal,vt=qt.getState,Dt=qt.extra,Ut=qt.endpoint,In=qt.forced,Kt=qt.type,Mr=(sn=typeof en=="string"?{url:en}:en).url,Pt=(Zn=sn.headers)===void 0?new Headers(Xt.headers):Zn,Rn=(En=sn.params)===void 0?void 0:En,hr=(er=sn.responseHandler)===void 0?Ot??"json":er,$n=(Tn=sn.validateStatus)===void 0?$t??T:Tn,Sn=(dn=sn.timeout)===void 0?kt:dn,On=_(sn,["url","headers","params","responseHandler","validateStatus","timeout"]),bn=C(k(C({},Xt),{signal:Be}),On),Pt=new Headers(B(Pt)),xn=bn,[4,ve(Pt,{getState:vt,extra:Dt,endpoint:Ut,forced:In,type:Kt})];case 1:xn.headers=Rt.sent()||Pt,Ye=function(Ue){return typeof Ue=="object"&&((0,A.isPlainObject)(Ue)||Array.isArray(Ue)||typeof Ue.toJSON=="function")},!bn.headers.has("content-type")&&Ye(bn.body)&&bn.headers.set("content-type",Se),Ye(bn.body)&&yt(bn.headers)&&(bn.body=JSON.stringify(bn.body,et)),Rn&&(Mt=~Mr.indexOf("?")?"&":"?",Ct=Vt?Vt(Rn):new URLSearchParams(B(Rn)),Mr+=Mt+Ct),Mr=function(Ue,nn){if(!Ue)return nn;if(!nn)return Ue;if(function(hn){return new RegExp("(^|:)//").test(hn)}(nn))return nn;var yn=Ue.endsWith("/")||!nn.startsWith("?")?"/":"";return Ue=function(hn){return hn.replace(/\/$/,"")}(Ue),""+Ue+yn+function(hn){return hn.replace(/^\//,"")}(nn)}(ge,Mr),at=new Request(Mr,bn),wt=at.clone(),un={request:wt},ht=!1,ot=Sn&&setTimeout(function(){ht=!0,qt.abort()},Sn),Rt.label=2;case 2:return Rt.trys.push([2,4,5,6]),[4,st(at)];case 3:return Bt=Rt.sent(),[3,6];case 4:return Ae=Rt.sent(),[2,{error:{status:ht?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(Ae)},meta:un}];case 5:return ot&&clearTimeout(ot),[7];case 6:Re=Bt.clone(),un.response=Re,Ve="",Rt.label=7;case 7:return Rt.trys.push([7,9,,10]),[4,Promise.all([tn(Bt,hr).then(function(Ue){return Le=Ue},function(Ue){return nt=Ue}),Re.text().then(function(Ue){return Ve=Ue},function(){})])];case 8:if(Rt.sent(),nt)throw nt;return[3,10];case 9:return At=Rt.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:Bt.status,data:Ve,error:String(At)},meta:un}];case 10:return[2,$n(Bt,Le)?{data:Le,meta:un}:{error:{status:Bt.status,data:Le},meta:un}]}})})};function tn(en,qt){return O(this,null,function(){var Be;return r(this,function(vt){switch(vt.label){case 0:return typeof qt=="function"?[2,qt(en)]:(qt==="content-type"&&(qt=yt(en.headers)?"json":"text"),qt!=="json"?[3,2]:[4,en.text()]);case 1:return[2,(Be=vt.sent()).length?JSON.parse(Be):null];case 2:return[2,en.text()]}})})}}var Q=function(J,ee){ee===void 0&&(ee=void 0),this.value=J,this.meta=ee};function V(J,ee){return J===void 0&&(J=0),ee===void 0&&(ee=5),O(this,null,function(){var ge,je;return r(this,function(ve){switch(ve.label){case 0:return ge=Math.min(J,ee),je=~~((Math.random()+.4)*(300<=Re)}var On=(0,Xe.createAsyncThunk)(Rn+"/executeQuery",dn,{getPendingMeta:function(){var Ye;return(Ye={startedTimeStamp:Date.now()})[Xe.SHOULD_AUTOBATCH]=!0,Ye},condition:function(Ye,Mt){var Ct,at,wt,Bt=(0,Mt.getState)(),ht=(at=(Ct=Bt[Rn])==null?void 0:Ct.queries)==null?void 0:at[Ye.queryCacheKey],ot=ht==null?void 0:ht.fulfilledTimeStamp,Ae=Ye.originalArgs,Re=ht==null?void 0:ht.originalArgs,Le=hr[Ye.endpointName];return!(!de(Ye)&&((ht==null?void 0:ht.status)==="pending"||!Sn(Ye,Bt)&&(!oe(Le)||!((wt=Le==null?void 0:Le.forceRefetch)!=null&&wt.call(Le,{currentArg:Ae,previousArg:Re,endpointState:ht,state:Bt})))&&ot))},dispatchConditionRejection:!0}),bn=(0,Xe.createAsyncThunk)(Rn+"/executeMutation",dn,{getPendingMeta:function(){var Ye;return(Ye={startedTimeStamp:Date.now()})[Xe.SHOULD_AUTOBATCH]=!0,Ye}});function xn(Ye){return function(Mt){var Ct,at;return((at=(Ct=Mt==null?void 0:Mt.meta)==null?void 0:Ct.arg)==null?void 0:at.endpointName)===Ye}}return{queryThunk:On,mutationThunk:bn,prefetch:function(Ye,Mt,Ct){return function(at,wt){var Bt=function(Le){return"force"in Le}(Ct)&&Ct.force,ht=function(Le){return"ifOlderThan"in Le}(Ct)&&Ct.ifOlderThan,ot=function(Le){return Le===void 0&&(Le=!0),$n.endpoints[Ye].initiate(Mt,{forceRefetch:Le})},Ae=$n.endpoints[Ye].select(Mt)(wt());if(Bt)at(ot());else if(ht){var Re=Ae==null?void 0:Ae.fulfilledTimeStamp;if(!Re)return void at(ot());(Number(new Date)-Number(new Date(Re)))/1e3>=ht&&at(ot())}else at(ot(!1))}},updateQueryData:function(Ye,Mt,Ct){return function(at,wt){var Bt,ht,ot=$n.endpoints[Ye].select(Mt)(wt()),Ae={patches:[],inversePatches:[],undo:function(){return at($n.util.patchQueryData(Ye,Mt,Ae.inversePatches))}};if(ot.status===t.uninitialized)return Ae;if("data"in ot)if((0,De.isDraftable)(ot.data)){var Re=(0,De.produceWithPatches)(ot.data,Ct),Le=Re[2];(Bt=Ae.patches).push.apply(Bt,Re[1]),(ht=Ae.inversePatches).push.apply(ht,Le)}else{var Ve=Ct(ot.data);Ae.patches.push({op:"replace",path:[],value:Ve}),Ae.inversePatches.push({op:"replace",path:[],value:ot.data})}return at($n.util.patchQueryData(Ye,Mt,Ae.patches)),Ae}},upsertQueryData:function(Ye,Mt,Ct){return function(at){var wt;return at($n.endpoints[Ye].initiate(Mt,((wt={subscribe:!1,forceRefetch:!0})[xe]=function(){return{data:Ct}},wt)))}},patchQueryData:function(Ye,Mt,Ct){return function(at){at($n.internalActions.queryResultPatched({queryCacheKey:Tn({queryArgs:Mt,endpointDefinition:hr[Ye],endpointName:Ye}),patches:Ct}))}},buildMatchThunkActions:function(Ye,Mt){return{matchPending:(0,Ne.isAllOf)((0,Ne.isPending)(Ye),xn(Mt)),matchFulfilled:(0,Ne.isAllOf)((0,Ne.isFulfilled)(Ye),xn(Mt)),matchRejected:(0,Ne.isAllOf)((0,Ne.isRejected)(Ye),xn(Mt))}}}}({baseQuery:je,reducerPath:ve,context:ge,api:J,serializeQueryArgs:dt}),et=Se.queryThunk,kt=Se.mutationThunk,Ot=Se.patchQueryData,$t=Se.updateQueryData,Xt=Se.upsertQueryData,tn=Se.prefetch,en=Se.buildMatchThunkActions,qt=function(Pt){var En=Pt.reducerPath,Rn=Pt.queryThunk,er=Pt.mutationThunk,hr=Pt.context,Tn=hr.endpointDefinitions,$n=hr.apiUid,dn=hr.extractRehydrationInfo,Sn=hr.hasRehydrationInfo,On=Pt.assertTagType,bn=Pt.config,xn=(0,he.createAction)(En+"/resetApiState"),Ye=(0,he.createSlice)({name:En+"/queries",initialState:Et,reducers:{removeQueryResult:{reducer:function(ot,Ae){delete ot[Ae.payload.queryCacheKey]},prepare:(0,he.prepareAutoBatched)()},queryResultPatched:function(ot,Ae){var Re=Ae.payload,Le=Re.patches;bt(ot,Re.queryCacheKey,function(Ve){Ve.data=(0,gt.applyPatches)(Ve.data,Le.concat())})}},extraReducers:function(ot){ot.addCase(Rn.pending,function(Ae,Re){var Le,Ve=Re.meta,nt=Re.meta.arg,At=de(nt);(nt.subscribe||At)&&(Ae[Le=nt.queryCacheKey]!=null||(Ae[Le]={status:t.uninitialized,endpointName:nt.endpointName})),bt(Ae,nt.queryCacheKey,function(Rt){Rt.status=t.pending,Rt.requestId=At&&Rt.requestId?Rt.requestId:Ve.requestId,nt.originalArgs!==void 0&&(Rt.originalArgs=nt.originalArgs),Rt.startedTimeStamp=Ve.startedTimeStamp})}).addCase(Rn.fulfilled,function(Ae,Re){var Le=Re.meta,Ve=Re.payload;bt(Ae,Le.arg.queryCacheKey,function(nt){var At;if(nt.requestId===Le.requestId||de(Le.arg)){var Rt=Tn[Le.arg.endpointName].merge;if(nt.status=t.fulfilled,Rt)if(nt.data!==void 0){var Ue=Le.fulfilledTimeStamp,nn=Le.arg,yn=Le.baseQueryMeta,hn=Le.requestId,mr=(0,he.createNextState)(nt.data,function(Xn){return Rt(Xn,Ve,{arg:nn.originalArgs,baseQueryMeta:yn,fulfilledTimeStamp:Ue,requestId:hn})});nt.data=mr}else nt.data=Ve;else nt.data=(At=Tn[Le.arg.endpointName].structuralSharing)==null||At?R((0,on.isDraft)(nt.data)?(0,gt.original)(nt.data):nt.data,Ve):Ve;delete nt.error,nt.fulfilledTimeStamp=Le.fulfilledTimeStamp}})}).addCase(Rn.rejected,function(Ae,Re){var Le=Re.meta,Ve=Le.condition,nt=Le.requestId,At=Re.error,Rt=Re.payload;bt(Ae,Le.arg.queryCacheKey,function(Ue){if(!Ve){if(Ue.requestId!==nt)return;Ue.status=t.rejected,Ue.error=Rt??At}})}).addMatcher(Sn,function(Ae,Re){for(var Le=dn(Re).queries,Ve=0,nt=Object.entries(Le);Ve"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},bn),reducers:{middlewareRegistered:function(ot,Ae){ot.middlewareRegistered=ot.middlewareRegistered!=="conflict"&&$n===Ae.payload||"conflict"}},extraReducers:function(ot){ot.addCase(Y,function(Ae){Ae.online=!0}).addCase(ce,function(Ae){Ae.online=!1}).addCase(q,function(Ae){Ae.focused=!0}).addCase(te,function(Ae){Ae.focused=!1}).addMatcher(Sn,function(Ae){return C({},Ae)})}}),ht=(0,he.combineReducers)({queries:Ye.reducer,mutations:Mt.reducer,provided:Ct.reducer,subscriptions:wt.reducer,config:Bt.reducer});return{reducer:function(ot,Ae){return ht(xn.match(Ae)?void 0:ot,Ae)},actions:k(C(C(C(C(C({},Bt.actions),Ye.actions),at.actions),wt.actions),Mt.actions),{unsubscribeMutationResult:Mt.actions.removeMutationResult,resetApiState:xn})}}({context:ge,queryThunk:et,mutationThunk:kt,reducerPath:ve,assertTagType:He,config:{refetchOnFocus:ft,refetchOnReconnect:yt,refetchOnMountOrArgChange:Vt,keepUnusedDataFor:st,reducerPath:ve}}),Be=qt.reducer,vt=qt.actions;Fr(J.util,{patchQueryData:Ot,updateQueryData:$t,upsertQueryData:Xt,prefetch:tn,resetApiState:vt.resetApiState}),Fr(J.internalActions,vt);var Dt=function(Pt){var En=Pt.reducerPath,Rn=Pt.queryThunk,er=Pt.api,hr=Pt.context,Tn=hr.apiUid,$n={invalidateTags:(0,ir.createAction)(En+"/invalidateTags")},dn=[Gr,pn,Ur,wr,Vn,Lo];return{middleware:function(On){var bn=!1,xn=k(C({},Pt),{internalState:{currentSubscriptions:{}},refetchQuery:Sn}),Ye=dn.map(function(at){return at(xn)}),Mt=function(at){var wt=at.api,Bt=at.queryThunk,ht=at.internalState,ot=wt.reducerPath+"/subscriptions",Ae=null,Re=!1,Le=wt.internalActions,Ve=Le.updateSubscriptionOptions,nt=Le.unsubscribeQueryResult;return function(At,Rt){var Ue,nn;if(Ae||(Ae=JSON.parse(JSON.stringify(ht.currentSubscriptions))),wt.util.resetApiState.match(At))return Ae=ht.currentSubscriptions={},[!0,!1];if(wt.internalActions.internal_probeSubscription.match(At)){var yn=At.payload;return[!1,!!((Ue=ht.currentSubscriptions[yn.queryCacheKey])!=null&&Ue[yn.requestId])]}var hn=function(gn,Un){var po,fn,Ln,Kr,Rr,vi,Tf,Fo,$a;if(Ve.match(Un)){var oa=Un.payload,La=oa.queryCacheKey,ho=oa.requestId;return(po=gn==null?void 0:gn[La])!=null&&po[ho]&&(gn[La][ho]=oa.options),!0}if(nt.match(Un)){var mo=Un.payload;return ho=mo.requestId,gn[La=mo.queryCacheKey]&&delete gn[La][ho],!0}if(wt.internalActions.removeQueryResult.match(Un))return delete gn[Un.payload.queryCacheKey],!0;if(Bt.pending.match(Un)){var go=Un.meta;if(ho=go.requestId,(eo=go.arg).subscribe)return(Zo=(Ln=gn[fn=eo.queryCacheKey])!=null?Ln:gn[fn]={})[ho]=(Rr=(Kr=eo.subscriptionOptions)!=null?Kr:Zo[ho])!=null?Rr:{},!0}if(Bt.rejected.match(Un)){var Zo,zo=Un.meta,eo=zo.arg;if(ho=zo.requestId,zo.condition&&eo.subscribe)return(Zo=(Tf=gn[vi=eo.queryCacheKey])!=null?Tf:gn[vi]={})[ho]=($a=(Fo=eo.subscriptionOptions)!=null?Fo:Zo[ho])!=null?$a:{},!0}return!1}(ht.currentSubscriptions,At);if(hn){Re||(js(function(){var gn=JSON.parse(JSON.stringify(ht.currentSubscriptions)),Un=(0,qr.produceWithPatches)(Ae,function(){return gn});Rt.next(wt.internalActions.subscriptionsUpdated(Un[1])),Ae=gn,Re=!1}),Re=!0);var mr=!!((nn=At.type)!=null&&nn.startsWith(ot)),Xn=Bt.rejected.match(At)&&At.meta.condition&&!!At.meta.arg.subscribe;return[!mr&&!Xn,!1]}return[!0,!1]}}(xn),Ct=function(at){var wt=at.reducerPath,Bt=at.context,ht=at.refetchQuery,ot=at.internalState,Ae=at.api.internalActions.removeQueryResult;function Re(Le,Ve){var nt=Le.getState()[wt],At=nt.queries,Rt=ot.currentSubscriptions;Bt.batch(function(){for(var Ue=0,nn=Object.keys(Rt);Ue{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=Ie(),o=z(j=>j.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:i}=dR((t==null?void 0:t.board_id)??Yo.skipToken),c=u.useMemo(()=>le([ke],j=>{const _=(s??[]).map(O=>W_(j,O));return{imageUsageSummary:{isInitialImage:$s(_,O=>O.isInitialImage),isCanvasImage:$s(_,O=>O.isCanvasImage),isNodesImage:$s(_,O=>O.isNodesImage),isControlNetImage:$s(_,O=>O.isControlNetImage)}}}),[s]),[f,{isLoading:p}]=fR(),[h,{isLoading:m}]=pR(),{imageUsageSummary:v}=z(c),b=u.useCallback(()=>{t&&(f(t.board_id),n(void 0))},[t,f,n]),y=u.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),x=u.useCallback(()=>{n(void 0)},[n]),C=u.useRef(null),k=u.useMemo(()=>m||p||i,[m,p,i]);return t?a.jsx(Cf,{isOpen:!!t,onClose:x,leastDestructiveRef:C,isCentered:!0,children:a.jsx(Ks,{children:a.jsxs(Sf,{children:[a.jsxs(qs,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),a.jsx(Xs,{children:a.jsxs($,{direction:"column",gap:3,children:[i?a.jsx(hg,{children:a.jsx($,{sx:{w:"full",h:32}})}):a.jsx(EE,{imageUsage:v,topMessage:"This board contains images used in the following features:",bottomMessage:"Deleting this board and its images will reset any features currently using them."}),a.jsx(Ee,{children:"Deleted boards cannot be restored."}),a.jsx(Ee,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),a.jsx(ka,{children:a.jsxs($,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[a.jsx(Wt,{ref:C,onClick:x,children:"Cancel"}),a.jsx(Wt,{colorScheme:"warning",isLoading:k,onClick:b,children:"Delete Board Only"}),a.jsx(Wt,{colorScheme:"error",isLoading:k,onClick:y,children:"Delete Board and Images"})]})})]})})}):null},Nee=u.memo(Aee),Tee="My Board",$ee=()=>{const[e,{isLoading:t}]=hR(),n=u.useCallback(()=>{e(Tee)},[e]);return a.jsx(tt,{icon:a.jsx(Yl,{}),isLoading:t,tooltip:"Add Board","aria-label":"Add Board",onClick:n,size:"sm"})},Lee=u.memo($ee);var _O=ff({displayName:"ExternalLinkIcon",path:a.jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[a.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),a.jsx("path",{d:"M15 3h6v6"}),a.jsx("path",{d:"M10 14L21 3"})]})}),Lg=ff({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),Fee=ff({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"}),zee=ff({displayName:"DeleteIcon",path:a.jsx("g",{fill:"currentColor",children:a.jsx("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"})})}),Bee=ff({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const Hee=le([ke],({gallery:e})=>{const{boardSearchText:t}=e;return{boardSearchText:t}},Oe),Wee=()=>{const e=se(),{boardSearchText:t}=z(Hee),n=u.useRef(null),r=u.useCallback(c=>{e(eC(c))},[e]),o=u.useCallback(()=>{e(eC(""))},[e]),s=u.useCallback(c=>{c.key==="Escape"&&o()},[o]),i=u.useCallback(c=>{r(c.target.value)},[r]);return u.useEffect(()=>{n.current&&n.current.focus()},[]),a.jsxs(L5,{children:[a.jsx(ng,{ref:n,placeholder:"Search Boards...",value:t,onKeyDown:s,onChange:i}),t&&t.length&&a.jsx(Tx,{children:a.jsx(wa,{onClick:o,size:"xs",variant:"ghost","aria-label":"Clear Search",opacity:.5,icon:a.jsx(Fee,{boxSize:2})})})]})},Vee=u.memo(Wee);function Fy(e){return mR(e)}function Uee(e){return gR(e)}const zy=(e,t)=>{if(!e||!(t!=null&&t.data.current))return!1;const{actionType:n}=e,{payloadType:r}=t.data.current;if(e.id===t.data.current.id)return!1;switch(n){case"ADD_FIELD_TO_LINEAR":return r==="NODE_FIELD";case"SET_CURRENT_IMAGE":return r==="IMAGE_DTO";case"SET_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_CONTROLNET_IMAGE":return r==="IMAGE_DTO";case"SET_CANVAS_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_NODES_IMAGE":return r==="IMAGE_DTO";case"SET_MULTI_NODES_IMAGE":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload,i=s.board_id??"none",c=e.context.boardId;return i!==c}return r==="IMAGE_DTOS"}case"REMOVE_FROM_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload;return s.board_id!=="none"}return r==="IMAGE_DTOS"}default:return!1}},Gee=e=>{const{isOver:t,label:n="Drop"}=e,r=u.useRef(Fi()),{colorMode:o}=di();return a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsxs($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:qe("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?qe("base.50","base.50")(o):qe("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:a.jsx(Fe,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?qe("base.50","base.50")(o):qe("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},By=u.memo(Gee),qee=e=>{const{dropLabel:t,data:n,disabled:r}=e,o=u.useRef(Fi()),{isOver:s,setNodeRef:i,active:c}=Fy({id:o.current,disabled:r,data:n});return a.jsx(Fe,{ref:i,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:a.jsx(co,{children:zy(n,c)&&a.jsx(By,{isOver:s,label:t})})})},Hy=u.memo(qee),Kee=({isSelected:e,isHovered:t})=>a.jsx(Fe,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e?1:.7,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:e?t?"hoverSelected.light":"selected.light":t?"hoverUnselected.light":void 0,_dark:{shadow:e?t?"hoverSelected.dark":"selected.dark":t?"hoverUnselected.dark":void 0}}}),Wy=u.memo(Kee),Xee=()=>a.jsx($,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:a.jsx(hi,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})}),PO=u.memo(Xee);function Vy(e){const[t,n]=u.useState(!1),[r,o]=u.useState(!1),[s,i]=u.useState(!1),[c,f]=u.useState([0,0]),p=u.useRef(null),h=z(v=>v.ui.globalContextMenuCloseTrigger);u.useEffect(()=>{if(t)setTimeout(()=>{o(!0),setTimeout(()=>{i(!0)})});else{i(!1);const v=setTimeout(()=>{o(t)},1e3);return()=>clearTimeout(v)}},[t]),u.useEffect(()=>{n(!1),i(!1),o(!1)},[h]),$L("contextmenu",v=>{var b;(b=p.current)!=null&&b.contains(v.target)||v.target===p.current?(v.preventDefault(),n(!0),f([v.pageX,v.pageY])):n(!1)});const m=u.useCallback(()=>{var v,b;(b=(v=e.menuProps)==null?void 0:v.onClose)==null||b.call(v),n(!1)},[e.menuProps]);return a.jsxs(a.Fragment,{children:[e.children(p),r&&a.jsx(uf,{...e.portalProps,children:a.jsxs(yf,{isOpen:s,gutter:0,...e.menuProps,onClose:m,children:[a.jsx(wf,{"aria-hidden":!0,w:1,h:1,style:{position:"absolute",left:c[0],top:c[1],cursor:"default"},...e.menuButtonProps}),e.renderMenu()]})})]})}const Fg=e=>{const{boardName:t}=Fm(void 0,{selectFromResult:({data:n})=>{const r=n==null?void 0:n.find(s=>s.board_id===e);return{boardName:(r==null?void 0:r.board_name)||"Uncategorized"}}});return t},Qee=({board:e,setBoardToDelete:t})=>{const n=u.useCallback(()=>{t&&t(e)},[e,t]);return a.jsxs(a.Fragment,{children:[e.image_count>0&&a.jsx(a.Fragment,{}),a.jsx(Bn,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Jo,{}),onClick:n,children:"Delete Board"})]})},Yee=u.memo(Qee),Jee=()=>a.jsx(a.Fragment,{}),Zee=u.memo(Jee),ete=({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=se(),s=u.useMemo(()=>le(ke,({gallery:v,system:b})=>{const y=v.autoAddBoardId===t,x=b.isProcessing,C=v.autoAssignBoardOnClick;return{isAutoAdd:y,isProcessing:x,autoAssignBoardOnClick:C}},Oe),[t]),{isAutoAdd:i,isProcessing:c,autoAssignBoardOnClick:f}=z(s),p=Fg(t),h=u.useCallback(()=>{o(Bm(t))},[t,o]),m=u.useCallback(v=>{v.preventDefault()},[]);return a.jsx(Vy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>a.jsx(Ui,{sx:{visibility:"visible !important"},motionProps:au,onContextMenu:m,children:a.jsxs(fu,{title:p,children:[a.jsx(Bn,{icon:a.jsx(Yl,{}),isDisabled:i||c||f,onClick:h,children:"Auto-add to this Board"}),!e&&a.jsx(Zee,{}),e&&a.jsx(Yee,{board:e,setBoardToDelete:n})]})}),children:r})},IO=u.memo(ete),tte=({board:e,isSelected:t,setBoardToDelete:n})=>{const r=se(),o=u.useMemo(()=>le(ke,({gallery:D,system:T})=>{const K=e.board_id===D.autoAddBoardId,B=D.autoAssignBoardOnClick,G=T.isProcessing;return{isSelectedForAutoAdd:K,autoAssignBoardOnClick:B,isProcessing:G}},Oe),[e.board_id]),{isSelectedForAutoAdd:s,autoAssignBoardOnClick:i,isProcessing:c}=z(o),[f,p]=u.useState(!1),h=u.useCallback(()=>{p(!0)},[]),m=u.useCallback(()=>{p(!1)},[]),{data:v}=X_(e.board_id),{data:b}=Q_(e.board_id),y=u.useMemo(()=>{if(!(!v||!b))return`${v} image${v>1?"s":""}, ${b} asset${b>1?"s":""}`},[b,v]),{currentData:x}=qo(e.cover_image_name??Yo.skipToken),{board_name:C,board_id:k}=e,[j,_]=u.useState(C),I=u.useCallback(()=>{r(Y_(k)),i&&!c&&r(Bm(k))},[k,i,c,r]),[O,{isLoading:E}]=vR(),M=u.useMemo(()=>({id:k,actionType:"ADD_TO_BOARD",context:{boardId:k}}),[k]),R=u.useCallback(async D=>{if(!D.trim()){_(C);return}if(D!==C)try{const{board_name:T}=await O({board_id:k,changes:{board_name:D}}).unwrap();_(T)}catch{_(C)}},[k,C,O]),A=u.useCallback(D=>{_(D)},[]);return a.jsx(Fe,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:h,onMouseOut:m,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:a.jsx(IO,{board:e,board_id:k,setBoardToDelete:n,children:D=>a.jsx(Mn,{label:y,openDelay:1e3,hasArrow:!0,children:a.jsxs($,{ref:D,onClick:I,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[x!=null&&x.thumbnail_url?a.jsx(Vl,{src:x==null?void 0:x.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Tr,{boxSize:12,as:TJ,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&a.jsx(PO,{}),a.jsx(Wy,{isSelected:t,isHovered:f}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:t?"accent.400":"base.500",color:t?"base.50":"base.100",_dark:{bg:t?"accent.500":"base.600",color:t?"base.50":"base.100"},lineHeight:"short",fontSize:"xs"},children:a.jsxs(Zm,{value:j,isDisabled:E,submitOnBlur:!0,onChange:A,onSubmit:R,sx:{w:"full"},children:[a.jsx(Jm,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),a.jsx(Ym,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),a.jsx(Hy,{data:M,dropLabel:a.jsx(Ee,{fontSize:"md",children:"Move"})})]})})})})})},nte=u.memo(tte),rte=le(ke,({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},Oe),EO=u.memo(({isSelected:e})=>{const t=se(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=z(rte),s=Fg("none"),i=u.useCallback(()=>{t(Y_("none")),r&&!o&&t(Bm("none"))},[t,r,o]),[c,f]=u.useState(!1),p=u.useCallback(()=>{f(!0)},[]),h=u.useCallback(()=>{f(!1)},[]),m=u.useMemo(()=>({id:"no_board",actionType:"REMOVE_FROM_BOARD"}),[]);return a.jsx(Fe,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:p,onMouseOut:h,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:a.jsx(IO,{board_id:"none",children:v=>a.jsxs($,{ref:v,onClick:i,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Vl,{src:U_,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),n==="none"&&a.jsx(PO,{}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:e?"accent.400":"base.500",color:e?"base.50":"base.100",_dark:{bg:e?"accent.500":"base.600",color:e?"base.50":"base.100"},lineHeight:"short",fontSize:"xs",fontWeight:e?700:500},children:s}),a.jsx(Wy,{isSelected:e,isHovered:c}),a.jsx(Hy,{data:m,dropLabel:a.jsx(Ee,{fontSize:"md",children:"Move"})})]})})})})});EO.displayName="HoverableBoard";const ote=u.memo(EO),ste=le([ke],({gallery:e})=>{const{selectedBoardId:t,boardSearchText:n}=e;return{selectedBoardId:t,boardSearchText:n}},Oe),ate=e=>{const{isOpen:t}=e,{selectedBoardId:n,boardSearchText:r}=z(ste),{data:o}=Fm(),s=r?o==null?void 0:o.filter(f=>f.board_name.toLowerCase().includes(r.toLowerCase())):o,[i,c]=u.useState();return a.jsxs(a.Fragment,{children:[a.jsx(Xm,{in:t,animateOpacity:!0,children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(Vee,{}),a.jsx(Lee,{})]}),a.jsx($g,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsxs(Vi,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[a.jsx(Bd,{sx:{p:1.5},children:a.jsx(ote,{isSelected:n==="none"})}),s&&s.map(f=>a.jsx(Bd,{sx:{p:1.5},children:a.jsx(nte,{board:f,isSelected:n===f.board_id,setBoardToDelete:c})},f.board_id))]})})]})}),a.jsx(Nee,{boardToDelete:i,setBoardToDelete:c})]})},ite=u.memo(ate),lte=le([ke],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},Oe),cte=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=z(lte),o=Fg(r),s=u.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return a.jsxs($,{as:iu,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[a.jsx(Ee,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),a.jsx(Lg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},ute=u.memo(cte),dte=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return a.jsxs(fg,{isLazy:o,...s,children:[a.jsx(Zx,{children:t}),a.jsxs(pg,{shadow:"dark-lg",children:[r&&a.jsx(xP,{}),n]})]})},Rf=u.memo(dte);function fte(e){return Je({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)}const pte=e=>{const[t,n]=u.useState(!1),{label:r,value:o,min:s=1,max:i=100,step:c=1,onChange:f,tooltipSuffix:p="",withSliderMarks:h=!1,withInput:m=!1,isInteger:v=!1,inputWidth:b=16,withReset:y=!1,hideTooltip:x=!1,isCompact:C=!1,isDisabled:k=!1,sliderMarks:j,handleReset:_,sliderFormControlProps:I,sliderFormLabelProps:O,sliderMarkProps:E,sliderTrackProps:M,sliderThumbProps:R,sliderNumberInputProps:A,sliderNumberInputFieldProps:D,sliderNumberInputStepperProps:T,sliderTooltipProps:K,sliderIAIIconButtonProps:B,...G}=e,Q=se(),{t:V}=Ie(),[L,X]=u.useState(String(o));u.useEffect(()=>{X(o)},[o]);const F=u.useMemo(()=>A!=null&&A.min?A.min:s,[s,A==null?void 0:A.min]),q=u.useMemo(()=>A!=null&&A.max?A.max:i,[i,A==null?void 0:A.max]),te=u.useCallback(ie=>{f(ie)},[f]),Y=u.useCallback(ie=>{ie.target.value===""&&(ie.target.value=String(F));const oe=El(v?Math.floor(Number(ie.target.value)):Number(L),F,q),me=gd(oe,c);f(me),X(me)},[v,L,F,q,f,c]),ce=u.useCallback(ie=>{X(ie)},[]),ae=u.useCallback(()=>{_&&_()},[_]),U=u.useCallback(ie=>{ie.target instanceof HTMLDivElement&&ie.target.focus()},[]),W=u.useCallback(ie=>{ie.shiftKey&&Q(Do(!0))},[Q]),ne=u.useCallback(ie=>{ie.shiftKey||Q(Do(!1))},[Q]);return a.jsxs(pr,{onClick:U,sx:C?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:k,...I,children:[r&&a.jsx(Jr,{sx:m?{mb:-1.5}:{},...O,children:r}),a.jsxs(Fx,{w:"100%",gap:2,alignItems:"center",children:[a.jsxs(ty,{"aria-label":r,value:o,min:s,max:i,step:c,onChange:te,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:k,...G,children:[h&&!j&&a.jsxs(a.Fragment,{children:[a.jsx(Ic,{value:s,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...E,children:s}),a.jsx(Ic,{value:i,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...E,children:i})]}),h&&j&&a.jsx(a.Fragment,{children:j.map((ie,oe)=>oe===0?a.jsx(Ic,{value:ie,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...E,children:ie},ie):oe===j.length-1?a.jsx(Ic,{value:ie,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...E,children:ie},ie):a.jsx(Ic,{value:ie,sx:{transform:"translateX(-50%)"},...E,children:ie},ie))}),a.jsx(ry,{...M,children:a.jsx(oy,{})}),a.jsx(Mn,{hasArrow:!0,placement:"top",isOpen:t,label:`${o}${p}`,hidden:x,...K,children:a.jsx(ny,{...R,zIndex:0})})]}),m&&a.jsxs(ig,{min:F,max:q,step:c,value:L,onChange:ce,onBlur:Y,focusInputOnChange:!1,...A,children:[a.jsx(cg,{onKeyDown:W,onKeyUp:ne,minWidth:b,...D}),a.jsxs(lg,{...T,children:[a.jsx(dg,{onClick:()=>f(Number(L))}),a.jsx(ug,{onClick:()=>f(Number(L))})]})]}),y&&a.jsx(tt,{size:"sm","aria-label":V("accessibility.reset"),tooltip:V("accessibility.reset"),icon:a.jsx(fte,{}),isDisabled:k,onClick:ae,...B})]})]})},jt=u.memo(pte),OO=u.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>a.jsx(Mn,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:a.jsx(Fe,{ref:s,...o,children:a.jsxs(Fe,{children:[a.jsx(pu,{children:e}),n&&a.jsx(pu,{size:"xs",color:"base.600",children:n})]})})}));OO.displayName="IAIMantineSelectItemWithTooltip";const tl=u.memo(OO),hte=le([ke],({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},Oe),mte=()=>{const e=se(),{autoAddBoardId:t,autoAssignBoardOnClick:n,isProcessing:r}=z(hte),o=u.useRef(null),{boards:s,hasBoards:i}=Fm(void 0,{selectFromResult:({data:f})=>{const p=[{label:"None",value:"none"}];return f==null||f.forEach(({board_id:h,board_name:m})=>{p.push({label:m,value:h})}),{boards:p,hasBoards:p.length>1}}}),c=u.useCallback(f=>{f&&e(Bm(f))},[e]);return a.jsx(Kn,{label:"Auto-Add Board",inputRef:o,autoFocus:!0,placeholder:"Select a Board",value:t,data:s,nothingFound:"No matching Boards",itemComponent:tl,disabled:!i||n||r,filter:(f,p)=>{var h;return((h=p.label)==null?void 0:h.toLowerCase().includes(f.toLowerCase().trim()))||p.value.toLowerCase().includes(f.toLowerCase().trim())},onChange:c})},gte=u.memo(mte),vte=e=>{const{label:t,...n}=e,{colorMode:r}=di();return a.jsx(Qm,{colorScheme:"accent",...n,children:a.jsx(Ee,{sx:{fontSize:"sm",color:qe("base.800","base.200")(r)},children:t})})},bo=u.memo(vte),bte=le([ke],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}},Oe),xte=()=>{const e=se(),{t}=Ie(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r,autoAssignBoardOnClick:o}=z(bte),s=u.useCallback(f=>{e(tC(f))},[e]),i=u.useCallback(()=>{e(tC(64))},[e]),c=u.useCallback(f=>{e(bR(f.target.checked))},[e]);return a.jsx(Rf,{triggerComponent:a.jsx(tt,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:a.jsx(qE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(jt,{value:n,onChange:s,min:45,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:i}),a.jsx(qn,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:c}),a.jsx(bo,{label:t("gallery.autoAssignBoardOnClick"),isChecked:o,onChange:f=>e(xR(f.target.checked))}),a.jsx(gte,{})]})})},yte=u.memo(xte),wte=e=>e.image?a.jsx(hg,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):a.jsx($,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(Wl,{size:"xl"})}),lo=e=>{const{icon:t=Fl,boxSize:n=16}=e;return a.jsxs($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",flexDir:"column",gap:2,userSelect:"none",opacity:.7,color:"base.700",_dark:{color:"base.500"},...e.sx},children:[t&&a.jsx(Tr,{as:t,boxSize:n,opacity:.7}),e.label&&a.jsx(Ee,{textAlign:"center",children:e.label})]})},zg=0,nl=1,Au=2,MO=4;function Cte(e,t){return n=>e(t(n))}function Ste(e,t){return t(e)}function RO(e,t){return n=>e(t,n)}function mj(e,t){return()=>e(t)}function Uy(e,t){return t(e),e}function Jl(...e){return e}function kte(e){e()}function gj(e){return()=>e}function jte(...e){return()=>{e.map(kte)}}function Bg(){}function yo(e,t){return e(nl,t)}function Nr(e,t){e(zg,t)}function Gy(e){e(Au)}function Hg(e){return e(MO)}function Gn(e,t){return yo(e,RO(t,zg))}function vj(e,t){const n=e(nl,r=>{n(),t(r)});return n}function kr(){const e=[];return(t,n)=>{switch(t){case Au:e.splice(0,e.length);return;case nl:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case zg:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function Qt(e){let t=e;const n=kr();return(r,o)=>{switch(r){case nl:o(t);break;case zg:t=o;break;case MO:return t}return n(r,o)}}function _te(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case nl:return s?n===s?void 0:(r(),n=s,t=yo(e,s),t):(r(),Bg);case Au:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function Od(e){return Uy(kr(),t=>Gn(e,t))}function Zc(e,t){return Uy(Qt(t),n=>Gn(e,n))}function Pte(...e){return t=>e.reduceRight(Ste,t)}function Yt(e,...t){const n=Pte(...t);return(r,o)=>{switch(r){case nl:return yo(e,n(o));case Au:Gy(e);return}}}function DO(e,t){return e===t}function Eo(e=DO){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Yr(e){return t=>n=>{e(n)&&t(n)}}function or(e){return t=>Cte(t,e)}function Ri(e){return t=>()=>t(e)}function Jp(e,t){return n=>r=>n(t=e(t,r))}function Ib(e){return t=>n=>{e>0?e--:t(n)}}function xd(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function bj(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function ga(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const c=Math.pow(2,i);yo(s,f=>{const p=n;n=n|c,t[i]=f,p!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const c=()=>s([i].concat(t));n===o?c():r=c}}function xj(...e){return function(t,n){switch(t){case nl:return jte(...e.map(r=>yo(r,n)));case Au:return;default:throw new Error(`unrecognized action ${t}`)}}}function wn(e,t=DO){return Yt(e,Eo(t))}function Ya(...e){const t=kr(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const c=Math.pow(2,i);yo(s,f=>{n[i]=f,r=r|c,r===o&&Nr(t,n)})}),function(s,i){switch(s){case nl:return r===o&&i(n),yo(t,i);case Au:return Gy(t);default:throw new Error(`unrecognized action ${s}`)}}}function Na(e,t=[],{singleton:n}={singleton:!0}){return{id:Ite(),constructor:e,dependencies:t,singleton:n}}const Ite=()=>Symbol();function Ete(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:i})=>{if(i&&t.has(r))return t.get(r);const c=o(s.map(f=>n(f)));return i&&t.set(r,c),c};return n(e)}function Ote(e,t){const n={},r={};let o=0;const s=e.length;for(;o(C[k]=j=>{const _=x[t.methods[k]];Nr(_,j)},C),{})}function h(x){return i.reduce((C,k)=>(C[k]=_te(x[t.events[k]]),C),{})}return{Component:H.forwardRef((x,C)=>{const{children:k,...j}=x,[_]=H.useState(()=>Uy(Ete(e),O=>f(O,j))),[I]=H.useState(mj(h,_));return Zp(()=>{for(const O of i)O in j&&yo(I[O],j[O]);return()=>{Object.values(I).map(Gy)}},[j,I,_]),Zp(()=>{f(_,j)}),H.useImperativeHandle(C,gj(p(_))),H.createElement(c.Provider,{value:_},n?H.createElement(n,Ote([...r,...o,...i],j),k):k)}),usePublisher:x=>H.useCallback(RO(Nr,H.useContext(c)[x]),[x]),useEmitterValue:x=>{const k=H.useContext(c)[x],[j,_]=H.useState(mj(Hg,k));return Zp(()=>yo(k,I=>{I!==j&&_(gj(I))}),[k,j]),j},useEmitter:(x,C)=>{const j=H.useContext(c)[x];Zp(()=>yo(j,C),[C,j])}}}const Rte=typeof document<"u"?H.useLayoutEffect:H.useEffect,Dte=Rte;var qy=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(qy||{});const Ate={0:"debug",1:"log",2:"warn",3:"error"},Nte=()=>typeof globalThis>"u"?window:globalThis,AO=Na(()=>{const e=Qt(3);return{log:Qt((n,r,o=1)=>{var s;const i=(s=Nte().VIRTUOSO_LOG_LEVEL)!=null?s:Hg(e);o>=i&&console[Ate[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function NO(e,t=!0){const n=H.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=H.useMemo(()=>new ResizeObserver(s=>{const i=s[0].target;i.offsetParent!==null&&e(i)}),[e]);r=s=>{s&&t?(o.observe(s),n.current=s):(n.current&&o.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function Wg(e,t=!0){return NO(e,t).callbackRef}function Em(e,t){return Math.round(e.getBoundingClientRect()[t])}function TO(e,t){return Math.abs(e-t)<1.01}function $O(e,t,n,r=Bg,o){const s=H.useRef(null),i=H.useRef(null),c=H.useRef(null),f=H.useCallback(m=>{const v=m.target,b=v===window||v===document,y=b?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,x=b?document.documentElement.scrollHeight:v.scrollHeight,C=b?window.innerHeight:v.offsetHeight,k=()=>{e({scrollTop:Math.max(y,0),scrollHeight:x,viewportHeight:C})};m.suppressFlushSync?k():yR.flushSync(k),i.current!==null&&(y===i.current||y<=0||y===x-C)&&(i.current=null,t(!0),c.current&&(clearTimeout(c.current),c.current=null))},[e,t]);H.useEffect(()=>{const m=o||s.current;return r(o||s.current),f({target:m,suppressFlushSync:!0}),m.addEventListener("scroll",f,{passive:!0}),()=>{r(null),m.removeEventListener("scroll",f)}},[s,f,n,r,o]);function p(m){const v=s.current;if(!v||"offsetHeight"in v&&v.offsetHeight===0)return;const b=m.behavior==="smooth";let y,x,C;v===window?(x=Math.max(Em(document.documentElement,"height"),document.documentElement.scrollHeight),y=window.innerHeight,C=document.documentElement.scrollTop):(x=v.scrollHeight,y=Em(v,"height"),C=v.scrollTop);const k=x-y;if(m.top=Math.ceil(Math.max(Math.min(k,m.top),0)),TO(y,x)||m.top===C){e({scrollTop:C,scrollHeight:x,viewportHeight:y}),b&&t(!0);return}b?(i.current=m.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,i.current=null,t(!0)},1e3)):i.current=null,v.scrollTo(m)}function h(m){s.current.scrollBy(m)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const Vg=Na(()=>{const e=kr(),t=kr(),n=Qt(0),r=kr(),o=Qt(0),s=kr(),i=kr(),c=Qt(0),f=Qt(0),p=Qt(0),h=Qt(0),m=kr(),v=kr(),b=Qt(!1);return Gn(Yt(e,or(({scrollTop:y})=>y)),t),Gn(Yt(e,or(({scrollHeight:y})=>y)),i),Gn(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:c,fixedHeaderHeight:f,fixedFooterHeight:p,footerHeight:h,scrollHeight:i,smoothScrollTargetReached:r,scrollTo:m,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:b}},[],{singleton:!0}),Tte=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function $te(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Tte)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const Om="up",Md="down",Lte="none",Fte={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},zte=0,LO=Na(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const i=Qt(!1),c=Qt(!0),f=kr(),p=kr(),h=Qt(4),m=Qt(zte),v=Zc(Yt(xj(Yt(wn(t),Ib(1),Ri(!0)),Yt(wn(t),Ib(1),Ri(!1),bj(100))),Eo()),!1),b=Zc(Yt(xj(Yt(s,Ri(!0)),Yt(s,Ri(!1),bj(200))),Eo()),!1);Gn(Yt(Ya(wn(t),wn(m)),or(([j,_])=>j<=_),Eo()),c),Gn(Yt(c,xd(50)),p);const y=Od(Yt(Ya(e,wn(n),wn(r),wn(o),wn(h)),Jp((j,[{scrollTop:_,scrollHeight:I},O,E,M,R])=>{const A=_+O-I>-R,D={viewportHeight:O,scrollTop:_,scrollHeight:I};if(A){let K,B;return _>j.state.scrollTop?(K="SCROLLED_DOWN",B=j.state.scrollTop-_):(K="SIZE_DECREASED",B=j.state.scrollTop-_||j.scrollTopDelta),{atBottom:!0,state:D,atBottomBecause:K,scrollTopDelta:B}}let T;return D.scrollHeight>j.state.scrollHeight?T="SIZE_INCREASED":Oj&&j.atBottom===_.atBottom))),x=Zc(Yt(e,Jp((j,{scrollTop:_,scrollHeight:I,viewportHeight:O})=>{if(TO(j.scrollHeight,I))return{scrollTop:_,scrollHeight:I,jump:0,changed:!1};{const E=I-(_+O)<1;return j.scrollTop!==_&&E?{scrollHeight:I,scrollTop:_,jump:j.scrollTop-_,changed:!0}:{scrollHeight:I,scrollTop:_,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Yr(j=>j.changed),or(j=>j.jump)),0);Gn(Yt(y,or(j=>j.atBottom)),i),Gn(Yt(i,xd(50)),f);const C=Qt(Md);Gn(Yt(e,or(({scrollTop:j})=>j),Eo(),Jp((j,_)=>Hg(b)?{direction:j.direction,prevScrollTop:_}:{direction:_j.direction)),C),Gn(Yt(e,xd(50),Ri(Lte)),C);const k=Qt(0);return Gn(Yt(v,Yr(j=>!j),Ri(0)),k),Gn(Yt(t,xd(100),ga(v),Yr(([j,_])=>!!_),Jp(([j,_],[I])=>[_,I],[0,0]),or(([j,_])=>_-j)),k),{isScrolling:v,isAtTop:c,isAtBottom:i,atBottomState:y,atTopStateChange:p,atBottomStateChange:f,scrollDirection:C,atBottomThreshold:h,atTopThreshold:m,scrollVelocity:k,lastJumpDueToItemResize:x}},Jl(Vg)),Bte=Na(([{log:e}])=>{const t=Qt(!1),n=Od(Yt(t,Yr(r=>r),Eo()));return yo(t,r=>{r&&Hg(e)("props updated",{},qy.DEBUG)}),{propsReady:t,didMount:n}},Jl(AO),{singleton:!0});function FO(e,t){e==0?t():requestAnimationFrame(()=>FO(e-1,t))}function Hte(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function Eb(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function Wte(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const Mm="top",Rm="bottom",yj="none";function wj(e,t,n){return typeof e=="number"?n===Om&&t===Mm||n===Md&&t===Rm?e:0:n===Om?t===Mm?e.main:e.reverse:t===Rm?e.main:e.reverse}function Cj(e,t){return typeof e=="number"?e:e[t]||0}const Vte=Na(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=kr(),i=Qt(0),c=Qt(0),f=Qt(0),p=Zc(Yt(Ya(wn(e),wn(t),wn(r),wn(s,Eb),wn(f),wn(i),wn(o),wn(n),wn(c)),or(([h,m,v,[b,y],x,C,k,j,_])=>{const I=h-j,O=C+k,E=Math.max(v-I,0);let M=yj;const R=Cj(_,Mm),A=Cj(_,Rm);return b-=j,b+=v+k,y+=v+k,y-=j,b>h+O-R&&(M=Om),yh!=null),Eo(Eb)),[0,0]);return{listBoundary:s,overscan:f,topListHeight:i,increaseViewportBy:c,visibleRange:p}},Jl(Vg),{singleton:!0}),Ute=Na(([{scrollVelocity:e}])=>{const t=Qt(!1),n=kr(),r=Qt(!1);return Gn(Yt(e,ga(r,t,n),Yr(([o,s])=>!!s),or(([o,s,i,c])=>{const{exit:f,enter:p}=s;if(i){if(f(o,c))return!1}else if(p(o,c))return!0;return i}),Eo()),t),yo(Yt(Ya(t,e,n),ga(r)),([[o,s,i],c])=>o&&c&&c.change&&c.change(s,i)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},Jl(LO),{singleton:!0});function Gte(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const qte=Na(([{scrollTo:e,scrollContainerState:t}])=>{const n=kr(),r=kr(),o=kr(),s=Qt(!1),i=Qt(void 0);return Gn(Yt(Ya(n,r),or(([{viewportHeight:c,scrollTop:f,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,f-h),scrollHeight:p,viewportHeight:c}))),t),Gn(Yt(e,ga(r),or(([c,{offsetTop:f}])=>({...c,top:c.top+f}))),o),{useWindowScroll:s,customScrollParent:i,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},Jl(Vg)),t1="-webkit-sticky",Sj="sticky",zO=Gte(()=>{if(typeof document>"u")return Sj;const e=document.createElement("div");return e.style.position=t1,e.style.position===t1?t1:Sj});function Kte(e,t){const n=H.useRef(null),r=H.useCallback(c=>{if(c===null||!c.offsetParent)return;const f=c.getBoundingClientRect(),p=f.width;let h,m;if(t){const v=t.getBoundingClientRect(),b=f.top-v.top;h=v.height-Math.max(0,b),m=b+t.scrollTop}else h=window.innerHeight-Math.max(0,f.top),m=f.top+window.pageYOffset;n.current={offsetTop:m,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=NO(r),i=H.useCallback(()=>{r(s.current)},[r,s]);return H.useEffect(()=>{if(t){t.addEventListener("scroll",i);const c=new ResizeObserver(i);return c.observe(t),()=>{t.removeEventListener("scroll",i),c.unobserve(t)}}else return window.addEventListener("scroll",i),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}},[i,t]),o}H.createContext(void 0);const BO=H.createContext(void 0);function Xte(e){return e}zO();const Qte={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},HO={width:"100%",height:"100%",position:"absolute",top:0};zO();function _l(e,t){if(typeof e!="string")return{context:t}}function Yte({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...c}){const f=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("scrollerRef"),v=n("context"),{scrollerRef:b,scrollByCallback:y,scrollToCallback:x}=$O(f,h,p,m);return t("scrollTo",x),t("scrollBy",y),H.createElement(p,{ref:b,style:{...Qte,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...c,..._l(p,v)},i)})}function Jte({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...c}){const f=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("totalListHeight"),v=n("deviation"),b=n("customScrollParent"),y=n("context"),{scrollerRef:x,scrollByCallback:C,scrollToCallback:k}=$O(f,h,p,Bg,b);return Dte(()=>(x.current=b||window,()=>{x.current=null}),[x,b]),t("windowScrollTo",k),t("scrollBy",C),H.createElement(p,{style:{position:"relative",...s,...m!==0?{height:m+v}:{}},"data-virtuoso-scroller":!0,...c,..._l(p,y)},i)})}const kj={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},Zte={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:jj,ceil:_j,floor:Dm,min:n1,max:Rd}=Math;function ene(e){return{...Zte,items:e}}function Pj(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>{const s=n===null?null:n[o+e];return{index:o+e,data:s}})}function tne(e,t){return e&&e.column===t.column&&e.row===t.row}function eh(e,t){return e&&e.width===t.width&&e.height===t.height}const nne=Na(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:i,smoothScrollTargetReached:c,scrollContainerState:f,footerHeight:p,headerHeight:h},m,v,{propsReady:b,didMount:y},{windowViewportRect:x,useWindowScroll:C,customScrollParent:k,windowScrollContainerState:j,windowScrollTo:_},I])=>{const O=Qt(0),E=Qt(0),M=Qt(kj),R=Qt({height:0,width:0}),A=Qt({height:0,width:0}),D=kr(),T=kr(),K=Qt(0),B=Qt(null),G=Qt({row:0,column:0}),Q=kr(),V=kr(),L=Qt(!1),X=Qt(0),F=Qt(!0),q=Qt(!1);yo(Yt(y,ga(X),Yr(([W,ne])=>!!ne)),()=>{Nr(F,!1),Nr(E,0)}),yo(Yt(Ya(y,F,A,R,X,q),Yr(([W,ne,ie,oe,,me])=>W&&!ne&&ie.height!==0&&oe.height!==0&&!me)),([,,,,W])=>{Nr(q,!0),FO(1,()=>{Nr(D,W)}),vj(Yt(r),()=>{Nr(n,[0,0]),Nr(F,!0)})}),Gn(Yt(V,Yr(W=>W!=null&&W.scrollTop>0),Ri(0)),E),yo(Yt(y,ga(V),Yr(([,W])=>W!=null)),([,W])=>{W&&(Nr(R,W.viewport),Nr(A,W==null?void 0:W.item),Nr(G,W.gap),W.scrollTop>0&&(Nr(L,!0),vj(Yt(r,Ib(1)),ne=>{Nr(L,!1)}),Nr(i,{top:W.scrollTop})))}),Gn(Yt(R,or(({height:W})=>W)),o),Gn(Yt(Ya(wn(R,eh),wn(A,eh),wn(G,(W,ne)=>W&&W.column===ne.column&&W.row===ne.row),wn(r)),or(([W,ne,ie,oe])=>({viewport:W,item:ne,gap:ie,scrollTop:oe}))),Q),Gn(Yt(Ya(wn(O),t,wn(G,tne),wn(A,eh),wn(R,eh),wn(B),wn(E),wn(L),wn(F),wn(X)),Yr(([,,,,,,,W])=>!W),or(([W,[ne,ie],oe,me,fe,he,Ce,,xe,de])=>{const{row:Ne,column:De}=oe,{height:Xe,width:It}=me,{width:lt}=fe;if(Ce===0&&(W===0||lt===0))return kj;if(It===0){const Nt=Hte(de,W),Lt=Nt===0?Math.max(Ce-1,0):Nt;return ene(Pj(Nt,Lt,he))}const on=WO(lt,It,De);let gt,bt;xe?ne===0&&ie===0&&Ce>0?(gt=0,bt=Ce-1):(gt=on*Dm((ne+Ne)/(Xe+Ne)),bt=on*_j((ie+Ne)/(Xe+Ne))-1,bt=n1(W-1,Rd(bt,on-1)),gt=n1(bt,Rd(0,gt))):(gt=0,bt=-1);const ye=Pj(gt,bt,he),{top:We,bottom:Et}=Ij(fe,oe,me,ye),zt=_j(W/on),xt=zt*Xe+(zt-1)*Ne-Et;return{items:ye,offsetTop:We,offsetBottom:xt,top:We,bottom:Et,itemHeight:Xe,itemWidth:It}})),M),Gn(Yt(B,Yr(W=>W!==null),or(W=>W.length)),O),Gn(Yt(Ya(R,A,M,G),Yr(([W,ne,{items:ie}])=>ie.length>0&&ne.height!==0&&W.height!==0),or(([W,ne,{items:ie},oe])=>{const{top:me,bottom:fe}=Ij(W,oe,ne,ie);return[me,fe]}),Eo(Eb)),n);const te=Qt(!1);Gn(Yt(r,ga(te),or(([W,ne])=>ne||W!==0)),te);const Y=Od(Yt(wn(M),Yr(({items:W})=>W.length>0),ga(O,te),Yr(([{items:W},ne,ie])=>ie&&W[W.length-1].index===ne-1),or(([,W])=>W-1),Eo())),ce=Od(Yt(wn(M),Yr(({items:W})=>W.length>0&&W[0].index===0),Ri(0),Eo())),ae=Od(Yt(wn(M),ga(L),Yr(([{items:W},ne])=>W.length>0&&!ne),or(([{items:W}])=>({startIndex:W[0].index,endIndex:W[W.length-1].index})),Eo(Wte),xd(0)));Gn(ae,v.scrollSeekRangeChanged),Gn(Yt(D,ga(R,A,O,G),or(([W,ne,ie,oe,me])=>{const fe=$te(W),{align:he,behavior:Ce,offset:xe}=fe;let de=fe.index;de==="LAST"&&(de=oe-1),de=Rd(0,de,n1(oe-1,de));let Ne=Ob(ne,me,ie,de);return he==="end"?Ne=jj(Ne-ne.height+ie.height):he==="center"&&(Ne=jj(Ne-ne.height/2+ie.height/2)),xe&&(Ne+=xe),{top:Ne,behavior:Ce}})),i);const U=Zc(Yt(M,or(W=>W.offsetBottom+W.bottom)),0);return Gn(Yt(x,or(W=>({width:W.visibleWidth,height:W.visibleHeight}))),R),{data:B,totalCount:O,viewportDimensions:R,itemDimensions:A,scrollTop:r,scrollHeight:T,overscan:e,scrollBy:s,scrollTo:i,scrollToIndex:D,smoothScrollTargetReached:c,windowViewportRect:x,windowScrollTo:_,useWindowScroll:C,customScrollParent:k,windowScrollContainerState:j,deviation:K,scrollContainerState:f,footerHeight:p,headerHeight:h,initialItemCount:E,gap:G,restoreStateFrom:V,...v,initialTopMostItemIndex:X,gridState:M,totalListHeight:U,...m,startReached:ce,endReached:Y,rangeChanged:ae,stateChanged:Q,propsReady:b,stateRestoreInProgress:L,...I}},Jl(Vte,Vg,LO,Ute,Bte,qte,AO));function Ij(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=Ob(e,t,n,r[0].index),i=Ob(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:i}}function Ob(e,t,n,r){const o=WO(e.width,n.width,t.column),s=Dm(r/o),i=s*n.height+Rd(0,s-1)*t.row;return i>0?i+t.row:i}function WO(e,t,n){return Rd(1,Dm((e+n)/(Dm(t)+n)))}const rne=Na(()=>{const e=Qt(p=>`Item ${p}`),t=Qt({}),n=Qt(null),r=Qt("virtuoso-grid-item"),o=Qt("virtuoso-grid-list"),s=Qt(Xte),i=Qt("div"),c=Qt(Bg),f=(p,h=null)=>Zc(Yt(t,or(m=>m[p]),Eo()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:i,scrollerRef:c,FooterComponent:f("Footer"),HeaderComponent:f("Header"),ListComponent:f("List","div"),ItemComponent:f("Item","div"),ScrollerComponent:f("Scroller","div"),ScrollSeekPlaceholder:f("ScrollSeekPlaceholder","div")}}),one=Na(([e,t])=>({...e,...t}),Jl(nne,rne)),sne=H.memo(function(){const t=dr("gridState"),n=dr("listClassName"),r=dr("itemClassName"),o=dr("itemContent"),s=dr("computeItemKey"),i=dr("isSeeking"),c=Us("scrollHeight"),f=dr("ItemComponent"),p=dr("ListComponent"),h=dr("ScrollSeekPlaceholder"),m=dr("context"),v=Us("itemDimensions"),b=Us("gap"),y=dr("log"),x=dr("stateRestoreInProgress"),C=Wg(k=>{const j=k.parentElement.parentElement.scrollHeight;c(j);const _=k.firstChild;if(_){const{width:I,height:O}=_.getBoundingClientRect();v({width:I,height:O})}b({row:Ej("row-gap",getComputedStyle(k).rowGap,y),column:Ej("column-gap",getComputedStyle(k).columnGap,y)})});return x?null:H.createElement(p,{ref:C,className:n,..._l(p,m),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map(k=>{const j=s(k.index,k.data,m);return i?H.createElement(h,{key:j,..._l(h,m),index:k.index,height:t.itemHeight,width:t.itemWidth}):H.createElement(f,{..._l(f,m),className:r,"data-index":k.index,key:j},o(k.index,k.data,m))}))}),ane=H.memo(function(){const t=dr("HeaderComponent"),n=Us("headerHeight"),r=dr("headerFooterTag"),o=Wg(i=>n(Em(i,"height"))),s=dr("context");return t?H.createElement(r,{ref:o},H.createElement(t,_l(t,s))):null}),ine=H.memo(function(){const t=dr("FooterComponent"),n=Us("footerHeight"),r=dr("headerFooterTag"),o=Wg(i=>n(Em(i,"height"))),s=dr("context");return t?H.createElement(r,{ref:o},H.createElement(t,_l(t,s))):null}),lne=({children:e})=>{const t=H.useContext(BO),n=Us("itemDimensions"),r=Us("viewportDimensions"),o=Wg(s=>{r(s.getBoundingClientRect())});return H.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),H.createElement("div",{style:HO,ref:o},e)},cne=({children:e})=>{const t=H.useContext(BO),n=Us("windowViewportRect"),r=Us("itemDimensions"),o=dr("customScrollParent"),s=Kte(n,o);return H.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),H.createElement("div",{ref:s,style:HO},e)},une=H.memo(function({...t}){const n=dr("useWindowScroll"),r=dr("customScrollParent"),o=r||n?pne:fne,s=r||n?cne:lne;return H.createElement(o,{...t},H.createElement(s,null,H.createElement(ane,null),H.createElement(sne,null),H.createElement(ine,null)))}),{Component:dne,usePublisher:Us,useEmitterValue:dr,useEmitter:VO}=Mte(one,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged"}},une),fne=Yte({usePublisher:Us,useEmitterValue:dr,useEmitter:VO}),pne=Jte({usePublisher:Us,useEmitterValue:dr,useEmitter:VO});function Ej(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,qy.WARN),t==="normal"?0:parseInt(t??"0",10)}const hne=dne,mne=e=>{const t=z(s=>s.gallery.galleryView),{data:n}=X_(e),{data:r}=Q_(e),o=u.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}},gne=({imageDTO:e})=>a.jsx($,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:a.jsxs(hi,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]})}),vne=u.memo(gne),Ky=({postUploadAction:e,isDisabled:t})=>{const n=z(f=>f.gallery.autoAddBoardId),[r]=H_(),o=u.useCallback(f=>{const p=f[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n==="none"?void 0:n})},[n,e,r]),{getRootProps:s,getInputProps:i,open:c}=iy({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:i,openUploader:c}},Ug=()=>{const e=se(),t=Kl(),{t:n}=Ie(),r=u.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),o=u.useCallback(()=>{t({title:n("toast.parameterNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),s=u.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),i=u.useCallback(()=>{t({title:n("toast.parametersNotSet"),status:"warning",duration:2500,isClosable:!0})},[n,t]),c=u.useCallback((E,M,R,A)=>{if(xp(E)||yp(M)||od(R)||lv(A)){xp(E)&&e(kd(E)),yp(M)&&e(jd(M)),od(R)&&e(_d(R)),od(A)&&e(Pd(A)),r();return}o()},[e,r,o]),f=u.useCallback(E=>{if(!xp(E)){o();return}e(kd(E)),r()},[e,r,o]),p=u.useCallback(E=>{if(!yp(E)){o();return}e(jd(E)),r()},[e,r,o]),h=u.useCallback(E=>{if(!od(E)){o();return}e(_d(E)),r()},[e,r,o]),m=u.useCallback(E=>{if(!lv(E)){o();return}e(Pd(E)),r()},[e,r,o]),v=u.useCallback(E=>{if(!nC(E)){o();return}e(bh(E)),r()},[e,r,o]),b=u.useCallback(E=>{if(!cv(E)){o();return}e(xh(E)),r()},[e,r,o]),y=u.useCallback(E=>{if(!rC(E)){o();return}e(w1(E)),r()},[e,r,o]),x=u.useCallback(E=>{if(!uv(E)){o();return}e(C1(E)),r()},[e,r,o]),C=u.useCallback(E=>{if(!dv(E)){o();return}e(yh(E)),r()},[e,r,o]),k=u.useCallback(E=>{if(!oC(E)){o();return}e(Ol(E)),r()},[e,r,o]),j=u.useCallback(E=>{if(!sC(E)){o();return}e(Ml(E)),r()},[e,r,o]),_=u.useCallback(E=>{if(!aC(E)){o();return}e(wh(E)),r()},[e,r,o]),I=u.useCallback(E=>{e(Hm(E))},[e]),O=u.useCallback(E=>{if(!E){i();return}const{cfg_scale:M,height:R,model:A,positive_prompt:D,negative_prompt:T,scheduler:K,seed:B,steps:G,width:Q,strength:V,positive_style_prompt:L,negative_style_prompt:X,refiner_model:F,refiner_cfg_scale:q,refiner_steps:te,refiner_scheduler:Y,refiner_positive_aesthetic_store:ce,refiner_negative_aesthetic_store:ae,refiner_start:U}=E;cv(M)&&e(xh(M)),rC(A)&&e(w1(A)),xp(D)&&e(kd(D)),yp(T)&&e(jd(T)),uv(K)&&e(C1(K)),nC(B)&&e(bh(B)),dv(G)&&e(yh(G)),oC(Q)&&e(Ol(Q)),sC(R)&&e(Ml(R)),aC(V)&&e(wh(V)),od(L)&&e(_d(L)),lv(X)&&e(Pd(X)),wR(F)&&e(J_(F)),dv(te)&&e(S1(te)),cv(q)&&e(k1(q)),uv(Y)&&e(Z_(Y)),CR(ce)&&e(j1(ce)),SR(ae)&&e(_1(ae)),kR(U)&&e(P1(U)),s()},[i,s,e]);return{recallBothPrompts:c,recallPositivePrompt:f,recallNegativePrompt:p,recallSDXLPositiveStylePrompt:h,recallSDXLNegativeStylePrompt:m,recallSeed:v,recallCfgScale:b,recallModel:y,recallScheduler:x,recallSteps:C,recallWidth:k,recallHeight:j,recallStrength:_,recallAllParameters:O,sendToImageToImage:I}},UO=()=>{const e=Kl(),{t}=Ie(),n=u.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=u.useCallback(async o=>{n||e({title:t("toast.problemCopyingImage"),description:"Your browser doesn't support the Clipboard API.",status:"error",duration:2500,isClosable:!0});try{const i=await(await fetch(o)).blob();await navigator.clipboard.write([new ClipboardItem({[i.type]:i})]),e({title:t("toast.imageCopied"),status:"success",duration:2500,isClosable:!0})}catch(s){e({title:t("toast.problemCopyingImage"),description:String(s),status:"error",duration:2500,isClosable:!0})}},[n,t,e]);return{isClipboardAPIAvailable:n,copyImageToClipboard:r}};function bne(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M16.5 9c-.42 0-.83.04-1.24.11L1.01 3 1 10l9 2-9 2 .01 7 8.07-3.46C9.59 21.19 12.71 24 16.5 24c4.14 0 7.5-3.36 7.5-7.5S20.64 9 16.5 9zm0 13c-3.03 0-5.5-2.47-5.5-5.5s2.47-5.5 5.5-5.5 5.5 2.47 5.5 5.5-2.47 5.5-5.5 5.5z"}},{tag:"path",attr:{d:"M18.27 14.03l-1.77 1.76-1.77-1.76-.7.7 1.76 1.77-1.76 1.77.7.7 1.77-1.76 1.77 1.76.7-.7-1.76-1.77 1.76-1.77z"}}]})(e)}function Gg(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"}}]})(e)}function xne(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}}]})(e)}function yne(e){return Je({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 wne(e){return Je({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)}function Xy(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}}]})(e)}function Qy(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}}]})(e)}function GO(e){return Je({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"}}]})(e)}rx("gallery/requestedBoardImagesDeletion");const Cne=rx("gallery/sentImageToCanvas"),qO=rx("gallery/sentImageToImg2Img"),Sne=e=>{const{imageDTO:t}=e,n=se(),{t:r}=Ie(),o=Kl(),s=Yn("unifiedCanvas").isFeatureEnabled,{metadata:i,workflow:c,isLoading:f}=ox(t.image_name,{selectFromResult:T=>{var K,B;return{isLoading:T.isFetching,metadata:(K=T==null?void 0:T.currentData)==null?void 0:K.metadata,workflow:(B=T==null?void 0:T.currentData)==null?void 0:B.workflow}}}),[p]=sx(),[h]=ax(),{isClipboardAPIAvailable:m,copyImageToClipboard:v}=UO(),b=u.useCallback(()=>{t&&n(Wm([t]))},[n,t]),{recallBothPrompts:y,recallSeed:x,recallAllParameters:C}=Ug(),k=u.useCallback(()=>{y(i==null?void 0:i.positive_prompt,i==null?void 0:i.negative_prompt,i==null?void 0:i.positive_style_prompt,i==null?void 0:i.negative_style_prompt)},[i==null?void 0:i.negative_prompt,i==null?void 0:i.positive_prompt,i==null?void 0:i.positive_style_prompt,i==null?void 0:i.negative_style_prompt,y]),j=u.useCallback(()=>{x(i==null?void 0:i.seed)},[i==null?void 0:i.seed,x]),_=u.useCallback(()=>{c&&(n(ix(c)),n(va("nodes")),n(Cn(_n({title:"Workflow Loaded",status:"success"}))))},[n,c]),I=u.useCallback(()=>{n(qO()),n(Hm(t))},[n,t]),O=u.useCallback(()=>{n(Cne()),n(e3(t)),n(va("unifiedCanvas")),o({title:r("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[n,t,r,o]),E=u.useCallback(()=>{C(i)},[i,C]),M=u.useCallback(()=>{n(t3([t])),n(tx(!0))},[n,t]),R=u.useCallback(()=>{v(t.image_url)},[v,t.image_url]),A=u.useCallback(()=>{t&&p({imageDTOs:[t]})},[p,t]),D=u.useCallback(()=>{t&&h({imageDTOs:[t]})},[h,t]);return a.jsxs(a.Fragment,{children:[a.jsx(Bn,{as:"a",href:t.image_url,target:"_blank",icon:a.jsx($E,{}),children:r("common.openInNewTab")}),m&&a.jsx(Bn,{icon:a.jsx(Du,{}),onClickCapture:R,children:r("parameters.copyImage")}),a.jsx(Bn,{as:"a",download:!0,href:t.image_url,target:"_blank",icon:a.jsx(Ig,{}),w:"100%",children:r("parameters.downloadImage")}),a.jsx(Bn,{icon:f?a.jsx(th,{}):a.jsx(Gg,{}),onClickCapture:_,isDisabled:f||!c,children:r("nodes.loadWorkflow")}),a.jsx(Bn,{icon:f?a.jsx(th,{}):a.jsx(WE,{}),onClickCapture:k,isDisabled:f||(i==null?void 0:i.positive_prompt)===void 0&&(i==null?void 0:i.negative_prompt)===void 0,children:r("parameters.usePrompt")}),a.jsx(Bn,{icon:f?a.jsx(th,{}):a.jsx(VE,{}),onClickCapture:j,isDisabled:f||(i==null?void 0:i.seed)===void 0,children:r("parameters.useSeed")}),a.jsx(Bn,{icon:f?a.jsx(th,{}):a.jsx(DE,{}),onClickCapture:E,isDisabled:f||!i,children:r("parameters.useAll")}),a.jsx(Bn,{icon:a.jsx(Lk,{}),onClickCapture:I,id:"send-to-img2img",children:r("parameters.sendToImg2Img")}),s&&a.jsx(Bn,{icon:a.jsx(Lk,{}),onClickCapture:O,id:"send-to-canvas",children:r("parameters.sendToUnifiedCanvas")}),a.jsx(Bn,{icon:a.jsx(LE,{}),onClickCapture:M,children:"Change Board"}),t.starred?a.jsx(Bn,{icon:a.jsx(Qy,{}),onClickCapture:D,children:"Unstar Image"}):a.jsx(Bn,{icon:a.jsx(Xy,{}),onClickCapture:A,children:"Star Image"}),a.jsx(Bn,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Jo,{}),onClickCapture:b,children:r("gallery.deleteImage")})]})},KO=u.memo(Sne),th=()=>a.jsx($,{w:"14px",alignItems:"center",justifyContent:"center",children:a.jsx(Wl,{size:"xs"})}),kne=()=>{const e=se(),t=z(h=>h.gallery.selection),[n]=sx(),[r]=ax(),o=u.useCallback(()=>{e(t3(t)),e(tx(!0))},[e,t]),s=u.useCallback(()=>{e(Wm(t))},[e,t]),i=u.useCallback(()=>{n({imageDTOs:t})},[n,t]),c=u.useCallback(()=>{r({imageDTOs:t})},[r,t]),f=u.useMemo(()=>t.every(h=>h.starred),[t]),p=u.useMemo(()=>t.every(h=>!h.starred),[t]);return a.jsxs(a.Fragment,{children:[f&&a.jsx(Bn,{icon:a.jsx(Xy,{}),onClickCapture:c,children:"Unstar All"}),(p||!f&&!p)&&a.jsx(Bn,{icon:a.jsx(Qy,{}),onClickCapture:i,children:"Star All"}),a.jsx(Bn,{icon:a.jsx(LE,{}),onClickCapture:o,children:"Change Board"}),a.jsx(Bn,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Jo,{}),onClickCapture:s,children:"Delete Selection"})]})},jne=u.memo(kne),_ne=le([ke],({gallery:e})=>({selectionCount:e.selection.length}),Oe),Pne=({imageDTO:e,children:t})=>{const{selectionCount:n}=z(_ne),r=u.useCallback(o=>{o.preventDefault()},[]);return a.jsx(Vy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?n>1?a.jsx(Ui,{sx:{visibility:"visible !important"},motionProps:au,onContextMenu:r,children:a.jsx(jne,{})}):a.jsx(Ui,{sx:{visibility:"visible !important"},motionProps:au,onContextMenu:r,children:a.jsx(KO,{imageDTO:e})}):null,children:t})},Ine=u.memo(Pne),Ene=e=>{const{data:t,disabled:n,...r}=e,o=u.useRef(Fi()),{attributes:s,listeners:i,setNodeRef:c}=Uee({id:o.current,disabled:n,data:t});return a.jsx(Fe,{ref:c,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...i,...r})},One=u.memo(Ene),Mne=a.jsx(Tr,{as:Mg,sx:{boxSize:16}}),Rne=a.jsx(lo,{icon:Fl}),Dne=e=>{const{imageDTO:t,onError:n,onClick:r,withMetadataOverlay:o=!1,isDropDisabled:s=!1,isDragDisabled:i=!1,isUploadDisabled:c=!1,minSize:f=24,postUploadAction:p,imageSx:h,fitContainer:m=!1,droppableData:v,draggableData:b,dropLabel:y,isSelected:x=!1,thumbnail:C=!1,noContentFallback:k=Rne,uploadElement:j=Mne,useThumbailFallback:_,withHoverOverlay:I=!1,children:O,onMouseOver:E,onMouseOut:M}=e,{colorMode:R}=di(),[A,D]=u.useState(!1),T=u.useCallback(V=>{E&&E(V),D(!0)},[E]),K=u.useCallback(V=>{M&&M(V),D(!1)},[M]),{getUploadButtonProps:B,getUploadInputProps:G}=Ky({postUploadAction:p,isDisabled:c}),Q=c?{}:{cursor:"pointer",bg:qe("base.200","base.700")(R),_hover:{bg:qe("base.300","base.650")(R),color:qe("base.500","base.300")(R)}};return a.jsx(Ine,{imageDTO:t,children:V=>a.jsxs($,{ref:V,onMouseOver:T,onMouseOut:K,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:f||void 0,minH:f||void 0,userSelect:"none",cursor:i||!t?"default":"pointer"},children:[t&&a.jsxs($,{sx:{w:"full",h:"full",position:m?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[a.jsx(Vl,{src:C?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:_?t.thumbnail_url:void 0,fallback:_?void 0:a.jsx(wte,{image:t}),onError:n,draggable:!1,sx:{w:t.width,objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...h}}),o&&a.jsx(vne,{imageDTO:t}),a.jsx(Wy,{isSelected:x,isHovered:I?A:!1})]}),!t&&!c&&a.jsx(a.Fragment,{children:a.jsxs($,{sx:{minH:f,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:qe("base.500","base.500")(R),...Q},...B(),children:[a.jsx("input",{...G()}),j]})}),!t&&c&&k,t&&!i&&a.jsx(One,{data:b,disabled:i||!t,onClick:r}),O,!s&&a.jsx(Hy,{data:v,disabled:s,dropLabel:y})]})})},ii=u.memo(Dne),Ane=()=>a.jsx(hg,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),Nne=u.memo(Ane),Tne=le([ke,lx],({gallery:e},t)=>{const n=e.selection;return{queryArgs:t,selection:n}},Oe),$ne=e=>{const t=se(),{queryArgs:n,selection:r}=z(Tne),{imageDTOs:o}=n3(n,{selectFromResult:p=>({imageDTOs:p.data?jR.selectAll(p.data):[]})}),s=Yn("multiselect").isFeatureEnabled,i=u.useCallback(p=>{var h;if(e){if(!s){t(sd([e]));return}if(p.shiftKey){const m=e.image_name,v=(h=r[r.length-1])==null?void 0:h.image_name,b=o.findIndex(x=>x.image_name===v),y=o.findIndex(x=>x.image_name===m);if(b>-1&&y>-1){const x=Math.min(b,y),C=Math.max(b,y),k=o.slice(x,C+1);t(sd(LC(r.concat(k))))}}else p.ctrlKey||p.metaKey?r.some(m=>m.image_name===e.image_name)&&r.length>1?t(sd(r.filter(m=>m.image_name!==e.image_name))):t(sd(LC(r.concat(e)))):t(sd([e]))}},[t,e,o,r,s]),c=u.useMemo(()=>e?r.some(p=>p.image_name===e.image_name):!1,[e,r]),f=u.useMemo(()=>r.length,[r.length]);return{selection:r,selectionCount:f,isSelected:c,handleClick:i}},Lne=e=>{const{onClick:t,tooltip:n,icon:r,styleOverrides:o}=e,s=Rl("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))");return a.jsx(tt,{onClick:t,"aria-label":n,tooltip:n,icon:r,size:"sm",variant:"link",sx:{position:"absolute",top:1,insetInlineEnd:1,p:0,minW:0,svg:{transitionProperty:"common",transitionDuration:"normal",fill:"base.100",_hover:{fill:"base.50"},filter:s},...o}})},eu=u.memo(Lne),Fne=e=>{const t=se(),{imageName:n}=e,{currentData:r}=qo(n),o=z(_=>_.hotkeys.shift),{handleClick:s,isSelected:i,selection:c,selectionCount:f}=$ne(r),p=u.useCallback(_=>{_.stopPropagation(),r&&t(Wm([r]))},[t,r]),h=u.useMemo(()=>{if(f>1)return{id:"gallery-image",payloadType:"IMAGE_DTOS",payload:{imageDTOs:c}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,c,f]),[m]=sx(),[v]=ax(),b=u.useCallback(()=>{r&&(r.starred&&v({imageDTOs:[r]}),r.starred||m({imageDTOs:[r]}))},[m,v,r]),[y,x]=u.useState(!1),C=u.useCallback(()=>{x(!0)},[]),k=u.useCallback(()=>{x(!1)},[]),j=u.useMemo(()=>{if(r!=null&&r.starred)return a.jsx(Qy,{size:"20"});if(!(r!=null&&r.starred)&&y)return a.jsx(Xy,{size:"20"})},[r==null?void 0:r.starred,y]);return r?a.jsx(Fe,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx($,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(ii,{onClick:s,imageDTO:r,draggableData:h,isSelected:i,minSize:0,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0,onMouseOver:C,onMouseOut:k,children:a.jsxs(a.Fragment,{children:[a.jsx(eu,{onClick:b,icon:j,tooltip:r.starred?"Unstar":"Star"}),y&&o&&a.jsx(eu,{onClick:p,icon:a.jsx(Jo,{}),tooltip:"Delete",styleOverrides:{bottom:2,top:"auto"}})]})})})}):a.jsx(Nne,{})},zne=u.memo(Fne),Bne=Te((e,t)=>a.jsx(Fe,{className:"item-container",ref:t,p:1.5,children:e.children})),Hne=u.memo(Bne),Wne=Te((e,t)=>{const n=z(r=>r.gallery.galleryImageMinimumWidth);return a.jsx(Vi,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),Vne=u.memo(Wne),Une={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},Gne=()=>{const{t:e}=Ie(),t=u.useRef(null),[n,r]=u.useState(null),[o,s]=SO(Une),i=z(C=>C.gallery.selectedBoardId),{currentViewTotal:c}=mne(i),f=z(lx),{currentData:p,isFetching:h,isSuccess:m,isError:v}=n3(f),[b]=r3(),y=u.useMemo(()=>!p||!c?!1:p.ids.length{y&&b({...f,offset:(p==null?void 0:p.ids.length)??0,limit:o3})},[y,b,f,p==null?void 0:p.ids.length]);return u.useEffect(()=>{const{current:C}=t;return n&&C&&o({target:C,elements:{viewport:n}}),()=>{var k;return(k=s())==null?void 0:k.destroy()}},[n,o,s]),p?m&&(p==null?void 0:p.ids.length)===0?a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(lo,{label:e("gallery.noImagesInGallery"),icon:Fl})}):m&&p?a.jsxs(a.Fragment,{children:[a.jsx(Fe,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(hne,{style:{height:"100%"},data:p.ids,endReached:x,components:{Item:Hne,List:Vne},scrollerRef:r,itemContent:(C,k)=>a.jsx(zne,{imageName:k},k)})}),a.jsx(Wt,{onClick:x,isDisabled:!y,isLoading:h,loadingText:"Loading",flexShrink:0,children:`Load More (${p.ids.length} of ${c})`})]}):v?a.jsx(Fe,{sx:{w:"full",h:"full"},children:a.jsx(lo,{label:"Unable to load Gallery",icon:fJ})}):null:a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(lo,{label:"Loading...",icon:Fl})})},qne=u.memo(Gne),Kne=le([ke],e=>{const{galleryView:t}=e.gallery;return{galleryView:t}},Oe),Xne=()=>{const e=u.useRef(null),t=u.useRef(null),{galleryView:n}=z(Kne),r=se(),{isOpen:o,onToggle:s}=Ao({defaultIsOpen:!0}),i=u.useCallback(()=>{r(iC("images"))},[r]),c=u.useCallback(()=>{r(iC("assets"))},[r]);return a.jsxs(W5,{layerStyle:"first",sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base",p:2},children:[a.jsxs(Fe,{sx:{w:"full"},children:[a.jsxs($,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[a.jsx(ute,{isOpen:o,onToggle:s}),a.jsx(yte,{})]}),a.jsx(Fe,{children:a.jsx(ite,{isOpen:o})})]}),a.jsxs($,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[a.jsx($,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:a.jsx(Gl,{index:n==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:a.jsx(ql,{children:a.jsxs(vr,{isAttached:!0,sx:{w:"full"},children:[a.jsx(Ro,{as:Wt,size:"sm",isChecked:n==="images",onClick:i,sx:{w:"full"},leftIcon:a.jsx(CJ,{}),children:"Images"}),a.jsx(Ro,{as:Wt,size:"sm",isChecked:n==="assets",onClick:c,sx:{w:"full"},leftIcon:a.jsx(RJ,{}),children:"Assets"})]})})})}),a.jsx(qne,{})]})]})},Qne=u.memo(Xne),Yne=le(Cs,e=>({isProcessing:e.isProcessing,isConnected:e.isConnected,isCancelable:e.isCancelable,currentIteration:e.currentIteration,totalIterations:e.totalIterations,sessionId:e.sessionId,cancelType:e.cancelType,isCancelScheduled:e.isCancelScheduled}),{memoizeOptions:{resultEqualityCheck:mn}}),Jne=e=>{const t=se(),{btnGroupWidth:n="auto",asIconButton:r=!1,...o}=e,{isProcessing:s,isConnected:i,isCancelable:c,cancelType:f,isCancelScheduled:p,sessionId:h}=z(Yne),m=u.useCallback(()=>{if(h){if(f==="scheduled"){t(_R());return}t(PR({session_id:h}))}},[t,h,f]),{t:v}=Ie(),b=u.useCallback(C=>{const k=Array.isArray(C)?C[0]:C;t(IR(k))},[t]);St("shift+x",()=>{(i||s)&&c&&m()},[i,s,c]);const y=u.useMemo(()=>v(p?"parameters.cancel.isScheduled":f==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[v,f,p]),x=u.useMemo(()=>p?a.jsx(Ph,{}):f==="immediate"?a.jsx(wne,{}):a.jsx(bne,{}),[f,p]);return a.jsxs(vr,{isAttached:!0,width:n,children:[r?a.jsx(tt,{icon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!c,onClick:m,colorScheme:"error",id:"cancel-button",...o}):a.jsx(Wt,{leftIcon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!c,onClick:m,colorScheme:"error",id:"cancel-button",...o,children:"Cancel"}),a.jsxs(yf,{closeOnSelect:!1,children:[a.jsx(wf,{as:tt,tooltip:v("parameters.cancel.setType"),"aria-label":v("parameters.cancel.setType"),icon:a.jsx(Bee,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...o}),a.jsx(Ui,{minWidth:"240px",children:a.jsxs(iP,{value:f,title:"Cancel Type",type:"radio",onChange:b,children:[a.jsx(Dh,{value:"immediate",children:v("parameters.cancel.immediate")}),a.jsx(Dh,{value:"scheduled",children:v("parameters.cancel.schedule")})]})})]})]})},XO=u.memo(Jne),Zne=le([ke,jr],(e,t)=>{const{generation:n,system:r,nodes:o}=e,{initialImage:s,model:i}=n,{isProcessing:c,isConnected:f}=r,p=[];return c&&p.push("System busy"),f||p.push("System disconnected"),t==="img2img"&&!s&&p.push("No initial image selected"),t==="nodes"&&o.shouldValidateGraph?(o.nodes.length||p.push("No nodes in graph"),o.nodes.forEach(h=>{if(!Er(h))return;const m=o.nodeTemplates[h.data.type];if(!m){p.push("Missing node template");return}const v=ER([h],o.edges);Wr(h.data.inputs,b=>{const y=m.inputs[b.name],x=v.some(C=>C.target===h.id&&C.targetHandle===b.name);if(!y){p.push("Missing field template");return}if(y.required&&!b.value&&!x){p.push(`${h.data.label||m.title} -> ${b.label||y.title} missing input`);return}})})):(i||p.push("No model selected"),e.controlNet.isEnabled&&uo(e.controlNet.controlNets).forEach((h,m)=>{h.isEnabled&&(h.model||p.push(`ControlNet ${m+1} has no model selected.`),(!h.controlImage||!h.processedControlImage&&h.processorType!=="none")&&p.push(`ControlNet ${m+1} has no control image`))})),{isReady:!p.length,isProcessing:c,reasons:p}},Oe),Df=()=>{const{isReady:e,isProcessing:t,reasons:n}=z(Zne);return{isReady:e,isProcessing:t,reasons:n}},ere=le(Cs,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:mn}}),tre=()=>{const{t:e}=Ie(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=z(ere),s=n?Math.round(n*100/r):0;return a.jsx(SP,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},nre=u.memo(tre);function QO(e){const{asIconButton:t=!1,sx:n,...r}=e,o=se(),{isReady:s,isProcessing:i}=Df(),c=z(jr),f=u.useCallback(()=>{o(af()),o(Vm(c))},[o,c]),{t:p}=Ie();return St(["ctrl+enter","meta+enter"],f,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,c]),a.jsx(Fe,{style:{flexGrow:4},position:"relative",children:a.jsxs(Fe,{style:{position:"relative"},children:[!s&&a.jsx(Fe,{sx:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip",borderRadius:"base",...n},...r,children:a.jsx(nre,{})}),t?a.jsx(tt,{"aria-label":p("parameters.invoke"),type:"submit",icon:a.jsx($k,{}),isDisabled:!s,onClick:f,tooltip:a.jsx(Mb,{}),colorScheme:"accent",isLoading:i,id:"invoke-button","data-progress":i,sx:{w:"full",flexGrow:1,...n},...r}):a.jsx(Wt,{tooltip:a.jsx(Mb,{}),"aria-label":p("parameters.invoke"),type:"submit","data-progress":i,isDisabled:!s,onClick:f,colorScheme:"accent",id:"invoke-button",leftIcon:i?void 0:a.jsx($k,{}),isLoading:i,loadingText:p("parameters.invoke"),sx:{w:"full",flexGrow:1,fontWeight:700,...n},...r,children:"Invoke"})]})})}const rre=le([ke],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},Oe),Mb=u.memo(()=>{const{isReady:e,reasons:t}=Df(),{autoAddBoardId:n}=z(rre),r=Fg(n);return a.jsxs($,{flexDir:"column",gap:1,children:[a.jsx(Ee,{fontWeight:600,children:e?"Ready to Invoke":"Unable to Invoke"}),t.length>0&&a.jsx(gf,{children:t.map((o,s)=>a.jsx(Fs,{children:a.jsx(Ee,{fontWeight:400,children:o})},`${o}.${s}`))}),a.jsx(Ko,{opacity:.2,borderColor:"base.50",_dark:{borderColor:"base.900"}}),a.jsxs(Ee,{fontWeight:400,fontStyle:"oblique 10deg",children:["Adding images to"," ",a.jsx(Ee,{as:"span",fontWeight:600,children:r||"Uncategorized"})]})]})});Mb.displayName="InvokeButtonTooltipContent";const ore=()=>a.jsxs($,{layerStyle:"first",sx:{gap:2,borderRadius:"base",p:2},children:[a.jsx(QO,{}),a.jsx(XO,{})]}),YO=u.memo(ore),{createElement:bu,createContext:sre,forwardRef:JO,useCallback:Wa,useContext:ZO,useEffect:ri,useImperativeHandle:eM,useLayoutEffect:are,useMemo:ire,useRef:Uo,useState:Dd}=ex,Oj=ex["useId".toString()],Ad=are,lre=typeof Oj=="function"?Oj:()=>null;let cre=0;function Yy(e=null){const t=lre(),n=Uo(e||t||null);return n.current===null&&(n.current=""+cre++),n.current}const qg=sre(null);qg.displayName="PanelGroupContext";function tM({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:i=null,maxSize:c=null,minSize:f,onCollapse:p=null,onResize:h=null,order:m=null,style:v={},tagName:b="div"}){const y=ZO(qg);if(y===null)throw Error("Panel components must be rendered within a PanelGroup container");const x=Yy(i),{collapsePanel:C,expandPanel:k,getPanelSize:j,getPanelStyle:_,registerPanel:I,resizePanel:O,units:E,unregisterPanel:M}=y;f==null&&(E==="percentages"?f=10:f=0);const R=Uo({onCollapse:p,onResize:h});ri(()=>{R.current.onCollapse=p,R.current.onResize=h});const A=_(x,o),D=Uo({size:Mj(A)}),T=Uo({callbacksRef:R,collapsedSize:n,collapsible:r,defaultSize:o,id:x,idWasAutoGenerated:i==null,maxSize:c,minSize:f,order:m});return Ad(()=>{D.current.size=Mj(A),T.current.callbacksRef=R,T.current.collapsedSize=n,T.current.collapsible=r,T.current.defaultSize=o,T.current.id=x,T.current.idWasAutoGenerated=i==null,T.current.maxSize=c,T.current.minSize=f,T.current.order=m}),Ad(()=>(I(x,T),()=>{M(x)}),[m,x,I,M]),eM(s,()=>({collapse:()=>C(x),expand:()=>k(x),getCollapsed(){return D.current.size===0},getId(){return x},getSize(K){return j(x,K)},resize:(K,B)=>O(x,K,B)}),[C,k,j,x,O]),bu(b,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":x,"data-panel-size":parseFloat(""+A.flexGrow).toFixed(1),id:`data-panel-id-${x}`,style:{...A,...v}})}const Wi=JO((e,t)=>bu(tM,{...e,forwardedRef:t}));tM.displayName="Panel";Wi.displayName="forwardRef(Panel)";function Mj(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const Hl=10;function yd(e,t,n,r,o,s,i,c){const{id:f,panels:p,units:h}=t,m=h==="pixels"?Di(f):NaN,{sizes:v}=c||{},b=v||s,y=Io(p),x=b.concat();let C=0;{const _=o<0?r:n,I=y.findIndex(R=>R.current.id===_),O=y[I],E=b[I],M=Rb(h,m,O,E,E+Math.abs(o),e);if(E===M)return b;M===0&&E>0&&i.set(_,E),o=o<0?E-M:M-E}let k=o<0?n:r,j=y.findIndex(_=>_.current.id===k);for(;;){const _=y[j],I=b[j],O=Math.abs(o)-Math.abs(C),E=Rb(h,m,_,I,I-O,e);if(I!==E&&(E===0&&I>0&&i.set(_.current.id,I),C+=I-E,x[j]=E,C.toPrecision(Hl).localeCompare(Math.abs(o).toPrecision(Hl),void 0,{numeric:!0})>=0))break;if(o<0){if(--j<0)break}else if(++j>=y.length)break}return C===0?b:(k=o<0?r:n,j=y.findIndex(_=>_.current.id===k),x[j]=b[j]+C,x)}function Sc(e,t,n){t.forEach((r,o)=>{const s=e[o];if(!s)return;const{callbacksRef:i,collapsedSize:c,collapsible:f,id:p}=s.current,h=n[p];if(h!==r){n[p]=r;const{onCollapse:m,onResize:v}=i.current;v&&v(r,h),f&&m&&((h==null||h===c)&&r!==c?m(!1):h!==c&&r===c&&m(!0))}})}function ure({groupId:e,panels:t,units:n}){const r=n==="pixels"?Di(e):NaN,o=Io(t),s=Array(o.length);let i=0,c=100;for(let f=0;fi.current.id===e);if(n<0)return[null,null];const r=n===t.length-1,o=r?t[n-1].current.id:e,s=r?e:t[n+1].current.id;return[o,s]}function Di(e){const t=Qd(e);if(t==null)return NaN;const n=t.getAttribute("data-panel-group-direction"),r=Jy(e);return n==="horizontal"?t.offsetWidth-r.reduce((o,s)=>o+s.offsetWidth,0):t.offsetHeight-r.reduce((o,s)=>o+s.offsetHeight,0)}function nM(e,t,n){if(e.size===1)return"100";const o=Io(e).findIndex(i=>i.current.id===t),s=n[o];return s==null?"0":s.toPrecision(Hl)}function dre(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function Qd(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function Kg(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function fre(e){return rM().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function rM(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function Jy(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function Zy(e,t,n){var f,p,h,m;const r=Kg(t),o=Jy(e),s=r?o.indexOf(r):-1,i=((p=(f=n[s])==null?void 0:f.current)==null?void 0:p.id)??null,c=((m=(h=n[s+1])==null?void 0:h.current)==null?void 0:m.id)??null;return[i,c]}function Io(e){return Array.from(e.values()).sort((t,n)=>{const r=t.current.order,o=n.current.order;return r==null&&o==null?0:r==null?-1:o==null?1:r-o})}function Rb(e,t,n,r,o,s=null){var h;let{collapsedSize:i,collapsible:c,maxSize:f,minSize:p}=n.current;if(e==="pixels"&&(i=i/t*100,f!=null&&(f=f/t*100),p=p/t*100),c){if(r>i){if(o<=p/2+i)return i}else if(!((h=s==null?void 0:s.type)==null?void 0:h.startsWith("key"))&&o100)&&(t.current.minSize=0),o!=null&&(o<0||e==="percentages"&&o>100)&&(t.current.maxSize=null),r!==null&&(r<0||e==="percentages"&&r>100?t.current.defaultSize=null:ro&&(t.current.defaultSize=o))}function o1({groupId:e,panels:t,nextSizes:n,prevSizes:r,units:o}){n=[...n];const s=Io(t),i=o==="pixels"?Di(e):NaN;let c=0;for(let f=0;f{const{direction:i,panels:c}=e.current,f=Qd(t);oM(f!=null,`No group found for id "${t}"`);const{height:p,width:h}=f.getBoundingClientRect(),v=Jy(t).map(b=>{const y=b.getAttribute("data-panel-resize-handle-id"),x=Io(c),[C,k]=Zy(t,y,x);if(C==null||k==null)return()=>{};let j=0,_=100,I=0,O=0;x.forEach(T=>{const{id:K,maxSize:B,minSize:G}=T.current;K===C?(j=G,_=B??100):(I+=G,O+=B??100)});const E=Math.min(_,100-I),M=Math.max(j,(x.length-1)*100-O),R=nM(c,C,o);b.setAttribute("aria-valuemax",""+Math.round(E)),b.setAttribute("aria-valuemin",""+Math.round(M)),b.setAttribute("aria-valuenow",""+Math.round(parseInt(R)));const A=T=>{if(!T.defaultPrevented)switch(T.key){case"Enter":{T.preventDefault();const K=x.findIndex(B=>B.current.id===C);if(K>=0){const B=x[K],G=o[K];if(G!=null){let Q=0;G.toPrecision(Hl)<=B.current.minSize.toPrecision(Hl)?Q=i==="horizontal"?h:p:Q=-(i==="horizontal"?h:p);const V=yd(T,e.current,C,k,Q,o,s.current,null);o!==V&&r(V)}}break}}};b.addEventListener("keydown",A);const D=dre(C);return D!=null&&b.setAttribute("aria-controls",D.id),()=>{b.removeAttribute("aria-valuemax"),b.removeAttribute("aria-valuemin"),b.removeAttribute("aria-valuenow"),b.removeEventListener("keydown",A),D!=null&&b.removeAttribute("aria-controls")}});return()=>{v.forEach(b=>b())}},[e,t,n,s,r,o])}function mre({disabled:e,handleId:t,resizeHandler:n}){ri(()=>{if(e||n==null)return;const r=Kg(t);if(r==null)return;const o=s=>{if(!s.defaultPrevented)switch(s.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{s.preventDefault(),n(s);break}case"F6":{s.preventDefault();const i=rM(),c=fre(t);oM(c!==null);const f=s.shiftKey?c>0?c-1:i.length-1:c+1{r.removeEventListener("keydown",o)}},[e,t,n])}function s1(e,t){if(e.length!==t.length)return!1;for(let n=0;nM.current.id===I),E=r[O];if(E.current.collapsible){const M=h[O];(M===0||M.toPrecision(Hl)===E.current.minSize.toPrecision(Hl))&&(k=k<0?-E.current.minSize*y:E.current.minSize*y)}return k}else return sM(e,n,o,c,f)}function vre(e){return e.type==="keydown"}function Db(e){return e.type.startsWith("mouse")}function Ab(e){return e.type.startsWith("touch")}let Nb=null,bl=null;function aM(e){switch(e){case"horizontal":return"ew-resize";case"horizontal-max":return"w-resize";case"horizontal-min":return"e-resize";case"vertical":return"ns-resize";case"vertical-max":return"n-resize";case"vertical-min":return"s-resize"}}function bre(){bl!==null&&(document.head.removeChild(bl),Nb=null,bl=null)}function a1(e){if(Nb===e)return;Nb=e;const t=aM(e);bl===null&&(bl=document.createElement("style"),document.head.appendChild(bl)),bl.innerHTML=`*{cursor: ${t}!important;}`}function xre(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function iM(e){return e.map(t=>{const{minSize:n,order:r}=t.current;return r?`${r}:${n}`:`${n}`}).sort((t,n)=>t.localeCompare(n)).join(",")}function lM(e,t){try{const n=t.getItem(`PanelGroup:sizes:${e}`);if(n){const r=JSON.parse(n);if(typeof r=="object"&&r!=null)return r}}catch{}return null}function yre(e,t,n){const r=lM(e,n);if(r){const o=iM(t);return r[o]??null}return null}function wre(e,t,n,r){const o=iM(t),s=lM(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(i){console.error(i)}}const i1={};function Rj(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}const wd={getItem:e=>(Rj(wd),wd.getItem(e)),setItem:(e,t)=>{Rj(wd),wd.setItem(e,t)}};function cM({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:i=null,onLayout:c,storage:f=wd,style:p={},tagName:h="div",units:m="percentages"}){const v=Yy(i),[b,y]=Dd(null),[x,C]=Dd(new Map),k=Uo(null);Uo({didLogDefaultSizeWarning:!1,didLogIdAndOrderWarning:!1,didLogInvalidLayoutWarning:!1,prevPanelIds:[]});const j=Uo({onLayout:c});ri(()=>{j.current.onLayout=c});const _=Uo({}),[I,O]=Dd([]),E=Uo(new Map),M=Uo(0),R=Uo({direction:r,id:v,panels:x,sizes:I,units:m});eM(s,()=>({getId:()=>v,getLayout:F=>{const{sizes:q,units:te}=R.current;if((F??te)==="pixels"){const ce=Di(v);return q.map(ae=>ae/100*ce)}else return q},setLayout:(F,q)=>{const{id:te,panels:Y,sizes:ce,units:ae}=R.current;if((q||ae)==="pixels"){const ie=Di(te);F=F.map(oe=>oe/ie*100)}const U=_.current,W=Io(Y),ne=o1({groupId:te,panels:Y,nextSizes:F,prevSizes:ce,units:ae});s1(ce,ne)||(O(ne),Sc(W,ne,U))}}),[v]),Ad(()=>{R.current.direction=r,R.current.id=v,R.current.panels=x,R.current.sizes=I,R.current.units=m}),hre({committedValuesRef:R,groupId:v,panels:x,setSizes:O,sizes:I,panelSizeBeforeCollapse:E}),ri(()=>{const{onLayout:F}=j.current,{panels:q,sizes:te}=R.current;if(te.length>0){F&&F(te);const Y=_.current,ce=Io(q);Sc(ce,te,Y)}},[I]),Ad(()=>{const{id:F,sizes:q,units:te}=R.current;if(q.length===x.size)return;let Y=null;if(e){const ce=Io(x);Y=yre(e,ce,f)}if(Y!=null){const ce=o1({groupId:F,panels:x,nextSizes:Y,prevSizes:Y,units:te});O(ce)}else{const ce=ure({groupId:F,panels:x,units:te});O(ce)}},[e,x,f]),ri(()=>{if(e){if(I.length===0||I.length!==x.size)return;const F=Io(x);i1[e]||(i1[e]=xre(wre,100)),i1[e](e,F,I,f)}},[e,x,I,f]),Ad(()=>{if(m==="pixels"){const F=new ResizeObserver(()=>{const{panels:q,sizes:te}=R.current,Y=o1({groupId:v,panels:q,nextSizes:te,prevSizes:te,units:m});s1(te,Y)||O(Y)});return F.observe(Qd(v)),()=>{F.disconnect()}}},[v,m]);const A=Wa((F,q)=>{const{panels:te,units:Y}=R.current,ae=Io(te).findIndex(ne=>ne.current.id===F),U=I[ae];if((q??Y)==="pixels"){const ne=Di(v);return U/100*ne}else return U},[v,I]),D=Wa((F,q)=>{const{panels:te}=R.current;return te.size===0?{flexBasis:0,flexGrow:q??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:nM(te,F,I),flexShrink:1,overflow:"hidden",pointerEvents:o&&b!==null?"none":void 0}},[b,o,I]),T=Wa((F,q)=>{const{units:te}=R.current;pre(te,q),C(Y=>{if(Y.has(F))return Y;const ce=new Map(Y);return ce.set(F,q),ce})},[]),K=Wa(F=>te=>{te.preventDefault();const{direction:Y,panels:ce,sizes:ae}=R.current,U=Io(ce),[W,ne]=Zy(v,F,U);if(W==null||ne==null)return;let ie=gre(te,v,F,U,Y,ae,k.current);if(ie===0)return;const me=Qd(v).getBoundingClientRect(),fe=Y==="horizontal";document.dir==="rtl"&&fe&&(ie=-ie);const he=fe?me.width:me.height,Ce=ie/he*100,xe=yd(te,R.current,W,ne,Ce,ae,E.current,k.current),de=!s1(ae,xe);if((Db(te)||Ab(te))&&M.current!=Ce&&a1(de?fe?"horizontal":"vertical":fe?ie<0?"horizontal-min":"horizontal-max":ie<0?"vertical-min":"vertical-max"),de){const Ne=_.current;O(xe),Sc(U,xe,Ne)}M.current=Ce},[v]),B=Wa(F=>{C(q=>{if(!q.has(F))return q;const te=new Map(q);return te.delete(F),te})},[]),G=Wa(F=>{const{panels:q,sizes:te}=R.current,Y=q.get(F);if(Y==null)return;const{collapsedSize:ce,collapsible:ae}=Y.current;if(!ae)return;const U=Io(q),W=U.indexOf(Y);if(W<0)return;const ne=te[W];if(ne===ce)return;E.current.set(F,ne);const[ie,oe]=r1(F,U);if(ie==null||oe==null)return;const fe=W===U.length-1?ne:ce-ne,he=yd(null,R.current,ie,oe,fe,te,E.current,null);if(te!==he){const Ce=_.current;O(he),Sc(U,he,Ce)}},[]),Q=Wa(F=>{const{panels:q,sizes:te}=R.current,Y=q.get(F);if(Y==null)return;const{collapsedSize:ce,minSize:ae}=Y.current,U=E.current.get(F)||ae;if(!U)return;const W=Io(q),ne=W.indexOf(Y);if(ne<0||te[ne]!==ce)return;const[oe,me]=r1(F,W);if(oe==null||me==null)return;const he=ne===W.length-1?ce-U:U,Ce=yd(null,R.current,oe,me,he,te,E.current,null);if(te!==Ce){const xe=_.current;O(Ce),Sc(W,Ce,xe)}},[]),V=Wa((F,q,te)=>{const{id:Y,panels:ce,sizes:ae,units:U}=R.current;if((te||U)==="pixels"){const It=Di(Y);q=q/It*100}const W=ce.get(F);if(W==null)return;let{collapsedSize:ne,collapsible:ie,maxSize:oe,minSize:me}=W.current;if(U==="pixels"){const It=Di(Y);me=me/It*100,oe!=null&&(oe=oe/It*100)}const fe=Io(ce),he=fe.indexOf(W);if(he<0)return;const Ce=ae[he];if(Ce===q)return;ie&&q===ne||(q=Math.min(oe??100,Math.max(me,q)));const[xe,de]=r1(F,fe);if(xe==null||de==null)return;const De=he===fe.length-1?Ce-q:q-Ce,Xe=yd(null,R.current,xe,de,De,ae,E.current,null);if(ae!==Xe){const It=_.current;O(Xe),Sc(fe,Xe,It)}},[]),L=ire(()=>({activeHandleId:b,collapsePanel:G,direction:r,expandPanel:Q,getPanelSize:A,getPanelStyle:D,groupId:v,registerPanel:T,registerResizeHandle:K,resizePanel:V,startDragging:(F,q)=>{if(y(F),Db(q)||Ab(q)){const te=Kg(F);k.current={dragHandleRect:te.getBoundingClientRect(),dragOffset:sM(q,F,r),sizes:R.current.sizes}}},stopDragging:()=>{bre(),y(null),k.current=null},units:m,unregisterPanel:B}),[b,G,r,Q,A,D,v,T,K,V,m,B]),X={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return bu(qg.Provider,{children:bu(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":v,"data-panel-group-units":m,style:{...X,...p}}),value:L})}const Xg=JO((e,t)=>bu(cM,{...e,forwardedRef:t}));cM.displayName="PanelGroup";Xg.displayName="forwardRef(PanelGroup)";function Tb({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:i="div"}){const c=Uo(null),f=Uo({onDragging:o});ri(()=>{f.current.onDragging=o});const p=ZO(qg);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:m,groupId:v,registerResizeHandle:b,startDragging:y,stopDragging:x}=p,C=Yy(r),k=h===C,[j,_]=Dd(!1),[I,O]=Dd(null),E=Wa(()=>{c.current.blur(),x();const{onDragging:A}=f.current;A&&A(!1)},[x]);ri(()=>{if(n)O(null);else{const R=b(C);O(()=>R)}},[n,C,b]),ri(()=>{if(n||I==null||!k)return;const R=K=>{I(K)},A=K=>{I(K)},T=c.current.ownerDocument;return T.body.addEventListener("contextmenu",E),T.body.addEventListener("mousemove",R),T.body.addEventListener("touchmove",R),T.body.addEventListener("mouseleave",A),window.addEventListener("mouseup",E),window.addEventListener("touchend",E),()=>{T.body.removeEventListener("contextmenu",E),T.body.removeEventListener("mousemove",R),T.body.removeEventListener("touchmove",R),T.body.removeEventListener("mouseleave",A),window.removeEventListener("mouseup",E),window.removeEventListener("touchend",E)}},[m,n,k,I,E]),mre({disabled:n,handleId:C,resizeHandler:I});const M={cursor:aM(m),touchAction:"none",userSelect:"none"};return bu(i,{children:e,className:t,"data-resize-handle-active":k?"pointer":j?"keyboard":void 0,"data-panel-group-direction":m,"data-panel-group-id":v,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":C,onBlur:()=>_(!1),onFocus:()=>_(!0),onMouseDown:R=>{y(C,R.nativeEvent);const{onDragging:A}=f.current;A&&A(!0)},onMouseUp:E,onTouchCancel:E,onTouchEnd:E,onTouchStart:R=>{y(C,R.nativeEvent);const{onDragging:A}=f.current;A&&A(!0)},ref:c,role:"separator",style:{...M,...s},tabIndex:0})}Tb.displayName="PanelResizeHandle";const Cre=e=>{const{direction:t="horizontal",collapsedDirection:n,isCollapsed:r=!1,...o}=e,s=Rl("base.100","base.850"),i=Rl("base.300","base.700");return t==="horizontal"?a.jsx(Tb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-horizontal",sx:{w:n?2.5:4,h:"full",justifyContent:n?n==="left"?"flex-start":"flex-end":"center",alignItems:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Fe,{sx:{w:1,h:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})}):a.jsx(Tb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-vertical",sx:{w:"full",h:n?2.5:4,alignItems:n?n==="top"?"flex-start":"flex-end":"center",justifyContent:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Fe,{sx:{h:1,w:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})})},Am=u.memo(Cre),e2=()=>{const e=se(),t=z(o=>o.ui.panels),n=u.useCallback(o=>t[o]??"",[t]),r=u.useCallback((o,s)=>{e(OR({name:o,value:s}))},[e]);return{getItem:n,setItem:r}};const Sre=e=>{const{label:t,data:n,fileName:r,withDownload:o=!0,withCopy:s=!0}=e,i=u.useMemo(()=>MR(n)?n:JSON.stringify(n,null,2),[n]),c=u.useCallback(()=>{navigator.clipboard.writeText(i)},[i]),f=u.useCallback(()=>{const p=new Blob([i]),h=document.createElement("a");h.href=URL.createObjectURL(p),h.download=`${r||t}.json`,document.body.appendChild(h),h.click(),h.remove()},[i,t,r]);return a.jsxs($,{layerStyle:"second",sx:{borderRadius:"base",flexGrow:1,w:"full",h:"full",position:"relative"},children:[a.jsx(Fe,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4,fontSize:"sm"},children:a.jsx($g,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsx("pre",{children:i})})}),a.jsxs($,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:[o&&a.jsx(Mn,{label:`Download ${t} JSON`,children:a.jsx(wa,{"aria-label":`Download ${t} JSON`,icon:a.jsx(Ig,{}),variant:"ghost",opacity:.7,onClick:f})}),s&&a.jsx(Mn,{label:`Copy ${t} JSON`,children:a.jsx(wa,{"aria-label":`Copy ${t} JSON`,icon:a.jsx(Du,{}),variant:"ghost",opacity:.7,onClick:c})})]})]})},Pl=u.memo(Sre),kre=le(ke,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(r=>r.id===t);return{data:n==null?void 0:n.data}},Oe),jre=()=>{const{data:e}=z(kre);return e?a.jsx(Pl,{data:e,label:"Node Data"}):a.jsx(lo,{label:"No node selected",icon:null})},_re=u.memo(jre),Pre=e=>a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Fe,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx($g,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:e.children})})}),t2=u.memo(Pre),Ire=({output:e})=>{const{image:t}=e,{data:n}=qo(t.image_name);return a.jsx(ii,{imageDTO:n})},Ere=u.memo(Ire),Ore=le(ke,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(s=>s.id===t),r=n?e.nodeTemplates[n.data.type]:void 0,o=e.nodeExecutionStates[t??"__UNKNOWN_NODE__"];return{node:n,template:r,nes:o}},Oe),Mre=()=>{const{node:e,template:t,nes:n}=z(Ore);return!e||!n||!Er(e)?a.jsx(lo,{label:"No node selected",icon:null}):n.outputs.length===0?a.jsx(lo,{label:"No outputs recorded",icon:null}):a.jsx(Fe,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(t2,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:(t==null?void 0:t.outputType)==="image_output"?n.outputs.map((r,o)=>a.jsx(Ere,{output:r},Dre(r,o))):a.jsx(Pl,{data:n.outputs,label:"Node Outputs"})})})})},Rre=u.memo(Mre),Dre=(e,t)=>`${e.type}-${t}`,Are=le(ke,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(o=>o.id===t);return{template:n?e.nodeTemplates[n.data.type]:void 0}},Oe),Nre=()=>{const{template:e}=z(Are);return e?a.jsx(Pl,{data:e,label:"Node Template"}):a.jsx(lo,{label:"No node selected",icon:null})},Tre=u.memo(Nre),$re=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Gl,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(ql,{children:[a.jsx(Ro,{children:"Outputs"}),a.jsx(Ro,{children:"Data"}),a.jsx(Ro,{children:"Template"})]}),a.jsxs(Ou,{children:[a.jsx(bs,{children:a.jsx(Rre,{})}),a.jsx(bs,{children:a.jsx(_re,{})}),a.jsx(bs,{children:a.jsx(Tre,{})})]})]})}),Lre=u.memo($re),n2=e=>{e.stopPropagation()},Fre={display:"flex",flexDirection:"row",alignItems:"center",gap:10},zre=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...i}=e,c=se(),f=u.useCallback(h=>{h.shiftKey&&c(Do(!0))},[c]),p=u.useCallback(h=>{h.shiftKey||c(Do(!1))},[c]);return a.jsxs(pr,{isInvalid:o,isDisabled:r,...s,style:n==="side"?Fre:void 0,children:[t!==""&&a.jsx(Jr,{children:t}),a.jsx(ng,{...i,onPaste:n2,onKeyDown:f,onKeyUp:p})]})},hs=u.memo(zre),Bre=Te((e,t)=>{const n=se(),r=u.useCallback(s=>{s.shiftKey&&n(Do(!0))},[n]),o=u.useCallback(s=>{s.shiftKey||n(Do(!1))},[n]);return a.jsx(zP,{ref:t,onPaste:n2,onKeyDown:r,onKeyUp:o,...e})}),li=u.memo(Bre),Hre=le(ke,({nodes:e})=>{const{author:t,name:n,description:r,tags:o,version:s,contact:i,notes:c}=e.workflow;return{name:n,author:t,description:r,tags:o,version:s,contact:i,notes:c}},Oe),Wre=()=>{const{author:e,name:t,description:n,tags:r,version:o,contact:s,notes:i}=z(Hre),c=se(),f=u.useCallback(x=>{c(RR(x.target.value))},[c]),p=u.useCallback(x=>{c(DR(x.target.value))},[c]),h=u.useCallback(x=>{c(AR(x.target.value))},[c]),m=u.useCallback(x=>{c(NR(x.target.value))},[c]),v=u.useCallback(x=>{c(TR(x.target.value))},[c]),b=u.useCallback(x=>{c($R(x.target.value))},[c]),y=u.useCallback(x=>{c(LR(x.target.value))},[c]);return a.jsx(t2,{children:a.jsxs($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:[a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(hs,{label:"Name",value:t,onChange:f}),a.jsx(hs,{label:"Version",value:o,onChange:m})]}),a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(hs,{label:"Author",value:e,onChange:p}),a.jsx(hs,{label:"Contact",value:s,onChange:h})]}),a.jsx(hs,{label:"Tags",value:r,onChange:b}),a.jsxs(pr,{as:$,sx:{flexDir:"column"},children:[a.jsx(Jr,{children:"Short Description"}),a.jsx(li,{onChange:v,value:n,fontSize:"sm",sx:{resize:"none"}})]}),a.jsxs(pr,{as:$,sx:{flexDir:"column",h:"full"},children:[a.jsx(Jr,{children:"Notes"}),a.jsx(li,{onChange:y,value:i,fontSize:"sm",sx:{h:"full",resize:"none"}})]})]})})},Vre=u.memo(Wre);function Ure(e,t,n){var r=this,o=u.useRef(null),s=u.useRef(0),i=u.useRef(null),c=u.useRef([]),f=u.useRef(),p=u.useRef(),h=u.useRef(e),m=u.useRef(!0);u.useEffect(function(){h.current=e},[e]);var v=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var b=!!(n=n||{}).leading,y=!("trailing"in n)||!!n.trailing,x="maxWait"in n,C=x?Math.max(+n.maxWait||0,t):null;u.useEffect(function(){return m.current=!0,function(){m.current=!1}},[]);var k=u.useMemo(function(){var j=function(R){var A=c.current,D=f.current;return c.current=f.current=null,s.current=R,p.current=h.current.apply(D,A)},_=function(R,A){v&&cancelAnimationFrame(i.current),i.current=v?requestAnimationFrame(R):setTimeout(R,A)},I=function(R){if(!m.current)return!1;var A=R-o.current;return!o.current||A>=t||A<0||x&&R-s.current>=C},O=function(R){return i.current=null,y&&c.current?j(R):(c.current=f.current=null,p.current)},E=function R(){var A=Date.now();if(I(A))return O(A);if(m.current){var D=t-(A-o.current),T=x?Math.min(D,C-(A-s.current)):D;_(R,T)}},M=function(){var R=Date.now(),A=I(R);if(c.current=[].slice.call(arguments),f.current=r,o.current=R,A){if(!i.current&&m.current)return s.current=o.current,_(E,t),b?j(o.current):p.current;if(x)return _(E,t),j(o.current)}return i.current||_(E,t),p.current};return M.cancel=function(){i.current&&(v?cancelAnimationFrame(i.current):clearTimeout(i.current)),s.current=0,c.current=o.current=f.current=i.current=null},M.isPending=function(){return!!i.current},M.flush=function(){return i.current?O(Date.now()):p.current},M},[b,x,t,C,y,v]);return k}function Gre(e,t){return e===t}function Dj(e){return typeof e=="function"?function(){return e}:e}function qre(e,t,n){var r,o,s=n&&n.equalityFn||Gre,i=(r=u.useState(Dj(e)),o=r[1],[r[0],u.useCallback(function(m){return o(Dj(m))},[])]),c=i[0],f=i[1],p=Ure(u.useCallback(function(m){return f(m)},[f]),t,n),h=u.useRef(e);return s(h.current,e)||(p(e),h.current=e),[c,p]}const uM=()=>{const e=z(r=>r.nodes),[t]=qre(e,300);return u.useMemo(()=>FR(t),[t])},Kre=()=>{const e=uM();return a.jsx($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:a.jsx(Pl,{data:e,label:"Workflow"})})},Xre=u.memo(Kre),Qre=({isSelected:e,isHovered:t})=>{const n=u.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.light";if(e)return"nodeSelected.light";if(t)return"nodeHovered.light"},[t,e]),r=u.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.dark";if(e)return"nodeSelected.dark";if(t)return"nodeHovered.dark"},[t,e]);return a.jsx(Fe,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e||t?1:.5,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:n,_dark:{shadow:r}}})},dM=u.memo(Qre),fM=e=>{const t=se(),n=u.useMemo(()=>le(ke,({nodes:i})=>i.mouseOverNode===e,Oe),[e]),r=z(n),o=u.useCallback(()=>{!r&&t(lC(e))},[t,e,r]),s=u.useCallback(()=>{r&&t(lC(null))},[t,r]);return{isMouseOverNode:r,handleMouseOver:o,handleMouseOut:s}},pM=(e,t)=>{const n=u.useMemo(()=>le(ke,({nodes:o})=>{var i;const s=o.nodes.find(c=>c.id===e);if(Er(s))return(i=s==null?void 0:s.data.inputs[t])==null?void 0:i.label},Oe),[t,e]);return z(n)},hM=(e,t,n)=>{const r=u.useMemo(()=>le(ke,({nodes:s})=>{var f;const i=s.nodes.find(p=>p.id===e);if(!Er(i))return;const c=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return(f=c==null?void 0:c[cx[n]][t])==null?void 0:f.title},Oe),[t,n,e]);return z(r)},mM=(e,t)=>{const n=u.useMemo(()=>le(ke,({nodes:o})=>{const s=o.nodes.find(i=>i.id===e);if(Er(s))return s==null?void 0:s.data.inputs[t]},Oe),[t,e]);return z(n)},Qg=(e,t,n)=>{const r=u.useMemo(()=>le(ke,({nodes:s})=>{const i=s.nodes.find(f=>f.id===e);if(!Er(i))return;const c=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return c==null?void 0:c[cx[n]][t]},Oe),[t,n,e]);return z(r)},Yre=({nodeId:e,fieldName:t,kind:n})=>{const r=mM(e,t),o=Qg(e,t,n),s=zR(o),i=u.useMemo(()=>BR(r)?r.label&&(o!=null&&o.title)?`${r.label} (${o.title})`:r.label&&!o?r.label:!r.label&&o?o.title:"Unknown Field":(o==null?void 0:o.title)||"Unknown Field",[r,o]);return a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(Ee,{sx:{fontWeight:600},children:i}),o&&a.jsx(Ee,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:o.description}),o&&a.jsxs(Ee,{children:["Type: ",lf[o.type].title]}),s&&a.jsxs(Ee,{children:["Input: ",HR(o.input)]})]})},r2=u.memo(Yre),Jre=Te((e,t)=>{const{nodeId:n,fieldName:r,kind:o,isMissingInput:s=!1,withTooltip:i=!1}=e,c=pM(n,r),f=hM(n,r,o),p=se(),[h,m]=u.useState(c||f||"Unknown Field"),v=u.useCallback(async y=>{y&&(y===c||y===f)||(m(y||f||"Unknown Field"),p(WR({nodeId:n,fieldName:r,label:y})))},[c,f,p,n,r]),b=u.useCallback(y=>{m(y)},[]);return u.useEffect(()=>{m(c||f||"Unknown Field")},[c,f]),a.jsx(Mn,{label:i?a.jsx(r2,{nodeId:n,fieldName:r,kind:"input"}):void 0,openDelay:Um,placement:"top",hasArrow:!0,children:a.jsx($,{ref:t,sx:{position:"relative",overflow:"hidden",alignItems:"center",justifyContent:"flex-start",gap:1,h:"full"},children:a.jsxs(Zm,{value:h,onChange:b,onSubmit:v,as:$,sx:{position:"relative",alignItems:"center",h:"full"},children:[a.jsx(Jm,{sx:{p:0,fontWeight:s?600:400,textAlign:"left",_hover:{fontWeight:"600 !important"}},noOfLines:1}),a.jsx(Ym,{className:"nodrag",sx:{p:0,w:"full",fontWeight:600,color:"base.900",_dark:{color:"base.100"},_focusVisible:{p:0,textAlign:"left",boxShadow:"none"}}}),a.jsx(vM,{})]})})})}),gM=u.memo(Jre),vM=u.memo(()=>{const{isEditing:e,getEditButtonProps:t}=Y3(),n=u.useCallback(r=>{const{onClick:o}=t();o&&(o(r),r.preventDefault())},[t]);return e?null:a.jsx($,{onClick:n,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,cursor:"text"})});vM.displayName="EditableControls";const Zre=e=>{const{nodeId:t,field:n}=e,r=se(),o=u.useCallback(s=>{r(VR({nodeId:t,fieldName:n.name,value:s.target.checked}))},[r,n.name,t]);return a.jsx(sy,{className:"nodrag",onChange:o,isChecked:n.value})},eoe=u.memo(Zre),toe=e=>null,noe=u.memo(toe),roe=e=>null,ooe=u.memo(roe),soe=e=>null,aoe=u.memo(soe);function Yg(){return(Yg=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function $b(e){var t=u.useRef(e),n=u.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var xu=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:C.buttons>0)&&o.current?s(Aj(o.current,C,c.current)):x(!1)},y=function(){return x(!1)};function x(C){var k=f.current,j=Lb(o.current),_=C?j.addEventListener:j.removeEventListener;_(k?"touchmove":"mousemove",b),_(k?"touchend":"mouseup",y)}return[function(C){var k=C.nativeEvent,j=o.current;if(j&&(Nj(k),!function(I,O){return O&&!Nd(I)}(k,f.current)&&j)){if(Nd(k)){f.current=!0;var _=k.changedTouches||[];_.length&&(c.current=_[0].identifier)}j.focus(),s(Aj(j,k,c.current)),x(!0)}},function(C){var k=C.which||C.keyCode;k<37||k>40||(C.preventDefault(),i({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},x]},[i,s]),h=p[0],m=p[1],v=p[2];return u.useEffect(function(){return v},[v]),H.createElement("div",Yg({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:m,tabIndex:0,role:"slider"}))}),Jg=function(e){return e.filter(Boolean).join(" ")},s2=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=Jg(["react-colorful__pointer",e.className]);return H.createElement("div",{className:s,style:{top:100*o+"%",left:100*n+"%"}},H.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},xo=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},xM=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:xo(e.h),s:xo(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:xo(o/2),a:xo(r,2)}},Fb=function(e){var t=xM(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},l1=function(e){var t=xM(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},ioe=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var s=Math.floor(t),i=r*(1-n),c=r*(1-(t-s)*n),f=r*(1-(1-t+s)*n),p=s%6;return{r:xo(255*[r,c,i,i,f,r][p]),g:xo(255*[f,r,r,c,i,i][p]),b:xo(255*[i,i,f,r,r,c][p]),a:xo(o,2)}},loe=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,s=Math.max(t,n,r),i=s-Math.min(t,n,r),c=i?s===t?(n-r)/i:s===n?2+(r-t)/i:4+(t-n)/i:0;return{h:xo(60*(c<0?c+6:c)),s:xo(s?i/s*100:0),v:xo(s/255*100),a:o}},coe=H.memo(function(e){var t=e.hue,n=e.onChange,r=Jg(["react-colorful__hue",e.className]);return H.createElement("div",{className:r},H.createElement(o2,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:xu(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":xo(t),"aria-valuemax":"360","aria-valuemin":"0"},H.createElement(s2,{className:"react-colorful__hue-pointer",left:t/360,color:Fb({h:t,s:100,v:100,a:1})})))}),uoe=H.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:Fb({h:t.h,s:100,v:100,a:1})};return H.createElement("div",{className:"react-colorful__saturation",style:r},H.createElement(o2,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:xu(t.s+100*o.left,0,100),v:xu(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+xo(t.s)+"%, Brightness "+xo(t.v)+"%"},H.createElement(s2,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Fb(t)})))}),yM=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function doe(e,t,n){var r=$b(n),o=u.useState(function(){return e.toHsva(t)}),s=o[0],i=o[1],c=u.useRef({color:t,hsva:s});u.useEffect(function(){if(!e.equal(t,c.current.color)){var p=e.toHsva(t);c.current={hsva:p,color:t},i(p)}},[t,e]),u.useEffect(function(){var p;yM(s,c.current.hsva)||e.equal(p=e.fromHsva(s),c.current.color)||(c.current={hsva:s,color:p},r(p))},[s,e,r]);var f=u.useCallback(function(p){i(function(h){return Object.assign({},h,p)})},[]);return[s,f]}var foe=typeof window<"u"?u.useLayoutEffect:u.useEffect,poe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},Tj=new Map,hoe=function(e){foe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!Tj.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}`,Tj.set(t,n);var r=poe();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},moe=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+l1(Object.assign({},n,{a:0}))+", "+l1(Object.assign({},n,{a:1}))+")"},s=Jg(["react-colorful__alpha",t]),i=xo(100*n.a);return H.createElement("div",{className:s},H.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),H.createElement(o2,{onMove:function(c){r({a:c.left})},onKey:function(c){r({a:xu(n.a+c.left)})},"aria-label":"Alpha","aria-valuetext":i+"%","aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":"100"},H.createElement(s2,{className:"react-colorful__alpha-pointer",left:n.a,color:l1(n)})))},goe=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,i=bM(e,["className","colorModel","color","onChange"]),c=u.useRef(null);hoe(c);var f=doe(n,o,s),p=f[0],h=f[1],m=Jg(["react-colorful",t]);return H.createElement("div",Yg({},i,{ref:c,className:m}),H.createElement(uoe,{hsva:p,onChange:h}),H.createElement(coe,{hue:p.h,onChange:h}),H.createElement(moe,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},voe={defaultColor:{r:0,g:0,b:0,a:1},toHsva:loe,fromHsva:ioe,equal:yM},wM=function(e){return H.createElement(goe,Yg({},e,{colorModel:voe}))};const boe=e=>{const{nodeId:t,field:n}=e,r=se(),o=u.useCallback(s=>{r(UR({nodeId:t,fieldName:n.name,value:s}))},[r,n.name,t]);return a.jsx(wM,{className:"nodrag",color:n.value,onChange:o})},xoe=u.memo(boe),yoe=e=>null,woe=u.memo(yoe),Coe=e=>null,Soe=u.memo(Coe),CM=e=>{const t=Su("models"),[n,r,o]=e.split("/"),s=GR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({controlNetModelId:e,errors:s.error.format()},"Failed to parse ControlNet model id");return}return s.data},koe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=se(),{data:s}=ux(),i=u.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/controlnet/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),c=u.useMemo(()=>{if(!s)return[];const p=[];return Wr(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:xr[h.base_model]})}),p},[s]),f=u.useCallback(p=>{if(!p)return;const h=CM(p);h&&o(qR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Zr,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:c,onChange:f,sx:{width:"100%"}})},joe=u.memo(koe),_oe=e=>null,Poe=u.memo(_oe),Ioe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=se(),s=u.useCallback(i=>{o(KR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return a.jsx(_P,{className:"nowheel nodrag",onChange:s,value:n.value,children:r.options.map(i=>a.jsx("option",{children:i},i))})},Eoe=u.memo(Ioe),Ooe=e=>{var c;const{nodeId:t,field:n}=e,r={id:`node-${t}-${n.name}`,actionType:"SET_MULTI_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}},{isOver:o,setNodeRef:s,active:i}=Fy({id:`node_${t}`,data:r});return a.jsxs($,{ref:s,sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",position:"relative",minH:"10rem"},children:[(c=n.value)==null?void 0:c.map(({image_name:f})=>a.jsx(Roe,{imageName:f},f)),zy(r,i)&&a.jsx(By,{isOver:o})]})},Moe=u.memo(Ooe),Roe=e=>{const{currentData:t}=qo(e.imageName);return a.jsx(ii,{imageDTO:t,isDropDisabled:!0,isDragDisabled:!0})},Doe=e=>{var p;const{nodeId:t,field:n}=e,r=se(),{currentData:o}=qo(((p=n.value)==null?void 0:p.image_name)??Yo.skipToken),s=u.useCallback(()=>{r(XR({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),i=u.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),c=u.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),f=u.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return a.jsx($,{className:"nodrag",sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(ii,{imageDTO:o,droppableData:c,draggableData:i,postUploadAction:f,useThumbailFallback:!0,uploadElement:a.jsx(SM,{}),dropLabel:a.jsx(kM,{}),minSize:8,children:a.jsx(eu,{onClick:s,icon:o?a.jsx(Og,{}):void 0,tooltip:"Reset Image"})})})},Aoe=u.memo(Doe),SM=u.memo(()=>a.jsx(Ee,{fontSize:16,fontWeight:600,children:"Drop or Upload"}));SM.displayName="UploadElement";const kM=u.memo(()=>a.jsx(Ee,{fontSize:16,fontWeight:600,children:"Drop"}));kM.displayName="DropLabel";const Noe=e=>null,Toe=u.memo(Noe),$oe=e=>{const t=Su("models"),[n,r,o]=e.split("/"),s=QR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({loraModelId:e,errors:s.error.format()},"Failed to parse LoRA model id");return}return s.data},Loe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=se(),{data:s}=Gm(),i=u.useMemo(()=>{if(!s)return[];const p=[];return Wr(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:xr[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),c=u.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/lora/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r==null?void 0:r.base_model,r==null?void 0:r.model_name]),f=u.useCallback(p=>{if(!p)return;const h=$oe(p);h&&o(YR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(Ee,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kn,{className:"nowheel nodrag",value:(c==null?void 0:c.id)??null,placeholder:i.length>0?"Select a LoRA":"No LoRAs available",data:i,nothingFound:"No matching LoRAs",itemComponent:tl,disabled:i.length===0,filter:(p,h)=>{var m;return((m=h.label)==null?void 0:m.toLowerCase().includes(p.toLowerCase().trim()))||h.value.toLowerCase().includes(p.toLowerCase().trim())},error:!c,onChange:f,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},Foe=u.memo(Loe),Zg=e=>{const t=Su("models"),[n,r,o]=e.split("/"),s=JR.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data};function Nu(e){const{iconMode:t=!1,...n}=e,r=se(),{t:o}=Ie(),[s,{isLoading:i}]=ZR(),c=()=>{s().unwrap().then(f=>{r(Cn(_n({title:`${o("modelManager.modelsSynced")}`,status:"success"})))}).catch(f=>{f&&r(Cn(_n({title:`${o("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?a.jsx(tt,{icon:a.jsx(GE,{}),tooltip:o("modelManager.syncModels"),"aria-label":o("modelManager.syncModels"),isLoading:i,onClick:c,size:"sm",...n}):a.jsx(Wt,{isLoading:i,onClick:c,minW:"max-content",...n,children:"Sync Models"})}const zoe=e=>{var b,y;const{nodeId:t,field:n}=e,r=se(),o=Yn("syncModels").isFeatureEnabled,{data:s,isLoading:i}=Td(cC),{data:c,isLoading:f}=Gs(cC),p=u.useMemo(()=>i||f,[i,f]),h=u.useMemo(()=>{if(!c)return[];const x=[];return Wr(c.entities,(C,k)=>{C&&x.push({value:k,label:C.model_name,group:xr[C.base_model]})}),s&&Wr(s.entities,(C,k)=>{C&&x.push({value:k,label:C.model_name,group:xr[C.base_model]})}),x},[c,s]),m=u.useMemo(()=>{var x,C,k,j;return((c==null?void 0:c.entities[`${(x=n.value)==null?void 0:x.base_model}/main/${(C=n.value)==null?void 0:C.model_name}`])||(s==null?void 0:s.entities[`${(k=n.value)==null?void 0:k.base_model}/onnx/${(j=n.value)==null?void 0:j.model_name}`]))??null},[(b=n.value)==null?void 0:b.base_model,(y=n.value)==null?void 0:y.model_name,c==null?void 0:c.entities,s==null?void 0:s.entities]),v=u.useCallback(x=>{if(!x)return;const C=Zg(x);C&&r(s3({nodeId:t,fieldName:n.name,value:C}))},[r,n.name,t]);return a.jsxs($,{sx:{w:"full",alignItems:"center",gap:2},children:[p?a.jsx(Ee,{variant:"subtext",children:"Loading..."}):a.jsx(Kn,{className:"nowheel nodrag",tooltip:m==null?void 0:m.description,value:m==null?void 0:m.id,placeholder:h.length>0?"Select a model":"No models available",data:h,error:!m,disabled:h.length===0,onChange:v,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),o&&a.jsx(Nu,{className:"nodrag",iconMode:!0})]})},Boe=u.memo(zoe),Nm=/^-?(0\.)?\.?$/,Hoe=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:i,min:c,max:f,isInteger:p=!0,formControlProps:h,formLabelProps:m,numberInputFieldProps:v,numberInputStepperProps:b,tooltipProps:y,...x}=e,C=se(),[k,j]=u.useState(String(s));u.useEffect(()=>{!k.match(Nm)&&s!==Number(k)&&j(String(s))},[s,k]);const _=M=>{j(M),M.match(Nm)||i(p?Math.floor(Number(M)):Number(M))},I=M=>{const R=El(p?Math.floor(Number(M.target.value)):Number(M.target.value),c,f);j(String(R)),i(R)},O=u.useCallback(M=>{M.shiftKey&&C(Do(!0))},[C]),E=u.useCallback(M=>{M.shiftKey||C(Do(!1))},[C]);return a.jsx(Mn,{...y,children:a.jsxs(pr,{isDisabled:n,isInvalid:o,...h,children:[t&&a.jsx(Jr,{...m,children:t}),a.jsxs(ig,{value:k,min:c,max:f,keepWithinRange:!0,clampValueOnBlur:!1,onChange:_,onBlur:I,...x,onPaste:n2,children:[a.jsx(cg,{...v,onKeyDown:O,onKeyUp:E}),r&&a.jsxs(lg,{children:[a.jsx(dg,{...b}),a.jsx(ug,{...b})]})]})]})})},Tu=u.memo(Hoe),Woe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=se(),[s,i]=u.useState(String(n.value)),c=u.useMemo(()=>r.type==="integer",[r.type]),f=p=>{i(p),p.match(Nm)||o(eD({nodeId:t,fieldName:n.name,value:c?Math.floor(Number(p)):Number(p)}))};return u.useEffect(()=>{!s.match(Nm)&&n.value!==Number(s)&&i(String(n.value))},[n.value,s]),a.jsxs(ig,{onChange:f,value:s,step:c?1:.1,precision:c?0:3,children:[a.jsx(cg,{className:"nodrag"}),a.jsxs(lg,{children:[a.jsx(dg,{}),a.jsx(ug,{})]})]})},Voe=u.memo(Woe),Uoe=e=>{var m,v;const{nodeId:t,field:n}=e,r=se(),{t:o}=Ie(),s=Yn("syncModels").isFeatureEnabled,{data:i,isLoading:c}=Gs(dx),f=u.useMemo(()=>{if(!i)return[];const b=[];return Wr(i.entities,(y,x)=>{y&&b.push({value:x,label:y.model_name,group:xr[y.base_model]})}),b},[i]),p=u.useMemo(()=>{var b,y;return(i==null?void 0:i.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(y=n.value)==null?void 0:y.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,i==null?void 0:i.entities]),h=u.useCallback(b=>{if(!b)return;const y=Zg(b);y&&r(tD({nodeId:t,fieldName:n.name,value:y}))},[r,n.name,t]);return c?a.jsx(Kn,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kn,{className:"nowheel nodrag",tooltip:p==null?void 0:p.description,value:p==null?void 0:p.id,placeholder:f.length>0?"Select a model":"No models available",data:f,error:!p,disabled:f.length===0,onChange:h,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Nu,{className:"nodrag",iconMode:!0})]})},Goe=u.memo(Uoe),qoe=e=>{var v,b;const{nodeId:t,field:n}=e,r=se(),{t:o}=Ie(),s=Yn("syncModels").isFeatureEnabled,{data:i}=Td(uC),{data:c,isLoading:f}=Gs(uC),p=u.useMemo(()=>{if(!c)return[];const y=[];return Wr(c.entities,(x,C)=>{!x||x.base_model!=="sdxl"||y.push({value:C,label:x.model_name,group:xr[x.base_model]})}),i&&Wr(i.entities,(x,C)=>{!x||x.base_model!=="sdxl"||y.push({value:C,label:x.model_name,group:xr[x.base_model]})}),y},[c,i]),h=u.useMemo(()=>{var y,x,C,k;return((c==null?void 0:c.entities[`${(y=n.value)==null?void 0:y.base_model}/main/${(x=n.value)==null?void 0:x.model_name}`])||(i==null?void 0:i.entities[`${(C=n.value)==null?void 0:C.base_model}/onnx/${(k=n.value)==null?void 0:k.model_name}`]))??null},[(v=n.value)==null?void 0:v.base_model,(b=n.value)==null?void 0:b.model_name,c==null?void 0:c.entities,i==null?void 0:i.entities]),m=u.useCallback(y=>{if(!y)return;const x=Zg(y);x&&r(s3({nodeId:t,fieldName:n.name,value:x}))},[r,n.name,t]);return f?a.jsx(Kn,{label:o("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kn,{className:"nowheel nodrag",tooltip:h==null?void 0:h.description,value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:!h,disabled:p.length===0,onChange:m,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Nu,{className:"nodrag",iconMode:!0})]})},Koe=u.memo(qoe),Xoe=le([ke],({ui:e})=>{const{favoriteSchedulers:t}=e;return{data:uo(zm,(r,o)=>({value:o,label:r,group:t.includes(o)?"Favorites":void 0})).sort((r,o)=>r.label.localeCompare(o.label))}},Oe),Qoe=e=>{const{nodeId:t,field:n}=e,r=se(),{data:o}=z(Xoe),s=u.useCallback(i=>{i&&r(nD({nodeId:t,fieldName:n.name,value:i}))},[r,n.name,t]);return a.jsx(Kn,{className:"nowheel nodrag",sx:{".mantine-Select-dropdown":{width:"14rem !important"}},value:n.value,data:o,onChange:s})},Yoe=u.memo(Qoe),Joe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=se(),s=u.useCallback(i=>{o(rD({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return r.ui_component==="textarea"?a.jsx(li,{className:"nodrag",onChange:s,value:n.value,rows:5,resize:"none"}):a.jsx(hs,{onChange:s,value:n.value})},Zoe=u.memo(Joe),ese=e=>null,tse=u.memo(ese),nse=e=>null,rse=u.memo(nse),jM=e=>{const t=Su("models"),[n,r,o]=e.split("/"),s=oD.safeParse({base_model:n,model_name:o});if(!s.success){t.error({vaeModelId:e,errors:s.error.format()},"Failed to parse VAE model id");return}return s.data},ose=e=>{const{nodeId:t,field:n}=e,r=n.value,o=se(),{data:s}=a3(),i=u.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Wr(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:xr[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),c=u.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r]),f=u.useCallback(p=>{if(!p)return;const h=jM(p);h&&o(sD({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Kn,{className:"nowheel nodrag",itemComponent:tl,tooltip:c==null?void 0:c.description,value:(c==null?void 0:c.id)??"default",placeholder:"Default",data:i,onChange:f,disabled:i.length===0,error:!c,clearable:!0,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},sse=u.memo(ose),ase=({nodeId:e,fieldName:t})=>{const n=mM(e,t),r=Qg(e,t,"input");return(r==null?void 0:r.fieldKind)==="output"?a.jsxs(Fe,{p:2,children:["Output field in input: ",n==null?void 0:n.type]}):(n==null?void 0:n.type)==="string"&&(r==null?void 0:r.type)==="string"?a.jsx(Zoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="boolean"&&(r==null?void 0:r.type)==="boolean"?a.jsx(eoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="integer"&&(r==null?void 0:r.type)==="integer"||(n==null?void 0:n.type)==="float"&&(r==null?void 0:r.type)==="float"?a.jsx(Voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="enum"&&(r==null?void 0:r.type)==="enum"?a.jsx(Eoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ImageField"&&(r==null?void 0:r.type)==="ImageField"?a.jsx(Aoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="LatentsField"&&(r==null?void 0:r.type)==="LatentsField"?a.jsx(Toe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="DenoiseMaskField"&&(r==null?void 0:r.type)==="DenoiseMaskField"?a.jsx(Poe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ConditioningField"&&(r==null?void 0:r.type)==="ConditioningField"?a.jsx(woe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="UNetField"&&(r==null?void 0:r.type)==="UNetField"?a.jsx(tse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ClipField"&&(r==null?void 0:r.type)==="ClipField"?a.jsx(noe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="VaeField"&&(r==null?void 0:r.type)==="VaeField"?a.jsx(rse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ControlField"&&(r==null?void 0:r.type)==="ControlField"?a.jsx(Soe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="MainModelField"&&(r==null?void 0:r.type)==="MainModelField"?a.jsx(Boe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLRefinerModelField"&&(r==null?void 0:r.type)==="SDXLRefinerModelField"?a.jsx(Goe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="VaeModelField"&&(r==null?void 0:r.type)==="VaeModelField"?a.jsx(sse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="LoRAModelField"&&(r==null?void 0:r.type)==="LoRAModelField"?a.jsx(Foe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ControlNetModelField"&&(r==null?void 0:r.type)==="ControlNetModelField"?a.jsx(joe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="Collection"&&(r==null?void 0:r.type)==="Collection"?a.jsx(ooe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="CollectionItem"&&(r==null?void 0:r.type)==="CollectionItem"?a.jsx(aoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ColorField"&&(r==null?void 0:r.type)==="ColorField"?a.jsx(xoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ImageCollection"&&(r==null?void 0:r.type)==="ImageCollection"?a.jsx(Moe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLMainModelField"&&(r==null?void 0:r.type)==="SDXLMainModelField"?a.jsx(Koe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="Scheduler"&&(r==null?void 0:r.type)==="Scheduler"?a.jsx(Yoe,{nodeId:e,field:n,fieldTemplate:r}):a.jsx(Fe,{p:1,children:a.jsxs(Ee,{sx:{fontSize:"sm",fontWeight:600,color:"error.400",_dark:{color:"error.300"}},children:["Unknown field type: ",n==null?void 0:n.type]})})},_M=u.memo(ase),ise=({nodeId:e,fieldName:t})=>{const n=se(),{isMouseOverNode:r,handleMouseOut:o,handleMouseOver:s}=fM(e),i=u.useCallback(()=>{n(i3({nodeId:e,fieldName:t}))},[n,t,e]);return a.jsxs($,{onMouseEnter:s,onMouseLeave:o,layerStyle:"second",sx:{position:"relative",borderRadius:"base",w:"full",p:2},children:[a.jsxs(pr,{as:$,sx:{flexDir:"column",gap:1,flexShrink:1},children:[a.jsxs(Jr,{sx:{display:"flex",alignItems:"center",mb:0},children:[a.jsx(gM,{nodeId:e,fieldName:t,kind:"input"}),a.jsx(Qi,{}),a.jsx(Mn,{label:a.jsx(r2,{nodeId:e,fieldName:t,kind:"input"}),openDelay:Um,placement:"top",hasArrow:!0,children:a.jsx($,{h:"full",alignItems:"center",children:a.jsx(Tr,{as:FE})})}),a.jsx(tt,{"aria-label":"Remove from Linear View",tooltip:"Remove from Linear View",variant:"ghost",size:"sm",onClick:i,icon:a.jsx(Jo,{})})]}),a.jsx(_M,{nodeId:e,fieldName:t})]}),a.jsx(dM,{isSelected:!1,isHovered:r})]})},lse=u.memo(ise),cse=le(ke,({nodes:e})=>({fields:e.workflow.exposedFields}),Oe),use=()=>{const{fields:e}=z(cse);return a.jsx(Fe,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(t2,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:e.length?e.map(({nodeId:t,fieldName:n})=>a.jsx(lse,{nodeId:t,fieldName:n},`${t}.${n}`)):a.jsx(lo,{label:"No fields added to Linear View",icon:null})})})})},dse=u.memo(use),fse=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Gl,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(ql,{children:[a.jsx(Ro,{children:"Linear"}),a.jsx(Ro,{children:"Details"}),a.jsx(Ro,{children:"JSON"})]}),a.jsxs(Ou,{children:[a.jsx(bs,{children:a.jsx(dse,{})}),a.jsx(bs,{children:a.jsx(Vre,{})}),a.jsx(bs,{children:a.jsx(Xre,{})})]})]})}),pse=u.memo(fse),hse=()=>{const[e,t]=u.useState(!1),[n,r]=u.useState(!1),o=u.useRef(null),s=e2(),i=u.useCallback(()=>{o.current&&o.current.setLayout([50,50])},[]);return a.jsxs($,{sx:{flexDir:"column",gap:2,height:"100%",width:"100%"},children:[a.jsx(YO,{}),a.jsxs(Xg,{ref:o,id:"workflow-panel-group",direction:"vertical",style:{height:"100%",width:"100%"},storage:s,children:[a.jsx(Wi,{id:"workflow",collapsible:!0,onCollapse:t,minSize:25,children:a.jsx(pse,{})}),a.jsx(Am,{direction:"vertical",onDoubleClick:i,collapsedDirection:e?"top":n?"bottom":void 0}),a.jsx(Wi,{id:"inspector",collapsible:!0,onCollapse:r,minSize:25,children:a.jsx(Lre,{})})]})]})},mse=u.memo(hse),$j=(e,t)=>{const n=u.useRef(null),[r,o]=u.useState(()=>{var p;return!!((p=n.current)!=null&&p.getCollapsed())}),s=u.useCallback(()=>{var p;(p=n.current)!=null&&p.getCollapsed()?fs.flushSync(()=>{var h;(h=n.current)==null||h.expand()}):fs.flushSync(()=>{var h;(h=n.current)==null||h.collapse()})},[]),i=u.useCallback(()=>{fs.flushSync(()=>{var p;(p=n.current)==null||p.expand()})},[]),c=u.useCallback(()=>{fs.flushSync(()=>{var p;(p=n.current)==null||p.collapse()})},[]),f=u.useCallback(()=>{fs.flushSync(()=>{var p;(p=n.current)==null||p.resize(e,t)})},[e,t]);return{ref:n,minSize:e,isCollapsed:r,setIsCollapsed:o,reset:f,toggle:s,expand:i,collapse:c}},gse=({isGalleryCollapsed:e,galleryPanelRef:t})=>{const{t:n}=Ie(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(uf,{children:a.jsx($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineEnd:"1.63rem",children:a.jsx(tt,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":n("common.showGalleryPanel"),onClick:r,icon:a.jsx(yne,{}),sx:{p:0,px:3,h:48,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"}})})}):null},vse=u.memo(gse),c1={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},bse=({isSidePanelCollapsed:e,sidePanelRef:t})=>{const{t:n}=Ie(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(uf,{children:a.jsxs($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"5.13rem",direction:"column",gap:2,children:[a.jsx(tt,{tooltip:"Show Side Panel (O, T)","aria-label":n("common.showOptionsPanel"),onClick:r,sx:c1,icon:a.jsx(UE,{})}),a.jsx(QO,{asIconButton:!0,sx:c1}),a.jsx(XO,{sx:c1,asIconButton:!0})]})}):null},xse=u.memo(bse),yse=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:i}=Ao({defaultIsOpen:o}),{colorMode:c}=di();return a.jsxs(Fe,{children:[a.jsxs($,{onClick:i,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:qe("base.250","base.750")(c),color:qe("base.900","base.100")(c),_hover:{bg:qe("base.300","base.700")(c)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,a.jsx(co,{children:n&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(Ee,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),a.jsx(Qi,{}),a.jsx(Lg,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),a.jsx(Xm,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:a.jsx(Fe,{sx:{p:4,pb:4,borderBottomRadius:"base",bg:"base.150",_dark:{bg:"base.800"}},children:r})})]})},wo=u.memo(yse),wse=le(ke,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},Oe),Cse=()=>{const{combinatorial:e,isDisabled:t}=z(wse),n=se(),r=u.useCallback(()=>{n(aD())},[n]);return a.jsx(qn,{isDisabled:t,label:"Combinatorial Generation",isChecked:e,onChange:r})},Sse=u.memo(Cse),kse=le(ke,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},Oe),jse=()=>{const e=se(),{isEnabled:t}=z(kse),n=u.useCallback(()=>{e(iD())},[e]);return a.jsx(qn,{label:"Enable Dynamic Prompts",isChecked:t,onChange:n})},_se=u.memo(jse),Pse=le(ke,e=>{const{maxPrompts:t,combinatorial:n,isEnabled:r}=e.dynamicPrompts,{min:o,sliderMax:s,inputMax:i}=e.config.sd.dynamicPrompts.maxPrompts;return{maxPrompts:t,min:o,sliderMax:s,inputMax:i,isDisabled:!r||!n}},Oe),Ise=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=z(Pse),s=se(),i=u.useCallback(f=>{s(lD(f))},[s]),c=u.useCallback(()=>{s(cD())},[s]);return a.jsx(jt,{label:"Max Prompts",isDisabled:o,min:t,max:n,value:e,onChange:i,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:c})},Ese=u.memo(Ise),Ose=le(ke,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},Oe),Mse=()=>{const{activeLabel:e}=z(Ose);return Yn("dynamicPrompting").isFeatureEnabled?a.jsx(wo,{label:"Dynamic Prompts",activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(_se,{}),a.jsx(Sse,{}),a.jsx(Ese,{})]})}):null},$u=u.memo(Mse),Rse=e=>{const t=se(),{lora:n}=e,r=u.useCallback(i=>{t(uD({id:n.id,weight:i}))},[t,n.id]),o=u.useCallback(()=>{t(dD(n.id))},[t,n.id]),s=u.useCallback(()=>{t(fD(n.id))},[t,n.id]);return a.jsxs($,{sx:{gap:2.5,alignItems:"flex-end"},children:[a.jsx(jt,{label:n.model_name,value:n.weight,onChange:r,min:-1,max:2,step:.01,withInput:!0,withReset:!0,handleReset:o,withSliderMarks:!0,sliderMarks:[-1,0,1,2],sliderNumberInputProps:{min:-50,max:50}}),a.jsx(tt,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:a.jsx(Jo,{}),colorScheme:"error"})]})},Dse=u.memo(Rse),Ase=le(ke,({lora:e})=>({lorasArray:uo(e.loras)}),Oe),Nse=()=>{const{lorasArray:e}=z(Ase);return a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[n>0&&a.jsx(Ko,{pt:1}),a.jsx(Dse,{lora:t})]},t.model_name))})},Tse=u.memo(Nse),$se=le(ke,({lora:e})=>({loras:e.loras}),Oe),Lse=()=>{const e=se(),{loras:t}=z($se),{data:n}=Gm(),r=z(i=>i.generation.model),o=u.useMemo(()=>{if(!n)return[];const i=[];return Wr(n.entities,(c,f)=>{if(!c||f in t)return;const p=(r==null?void 0:r.base_model)!==c.base_model;i.push({value:f,label:c.model_name,disabled:p,group:xr[c.base_model],tooltip:p?`Incompatible base model: ${c.base_model}`:void 0})}),i.sort((c,f)=>c.label&&!f.label?1:-1),i.sort((c,f)=>c.disabled&&!f.disabled?1:-1)},[t,n,r==null?void 0:r.base_model]),s=u.useCallback(i=>{if(!i)return;const c=n==null?void 0:n.entities[i];c&&e(pD(c))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(Ee,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kn,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:tl,disabled:o.length===0,filter:(i,c)=>{var f;return((f=c.label)==null?void 0:f.toLowerCase().includes(i.toLowerCase().trim()))||c.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},Fse=u.memo(Lse),zse=le(ke,e=>{const t=l3(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},Oe),Bse=()=>{const{activeLabel:e}=z(zse);return Yn("lora").isFeatureEnabled?a.jsx(wo,{label:"LoRA",activeLabel:e,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsx(Fse,{}),a.jsx(Tse,{})]})}):null},Lu=u.memo(Bse),Hse=le(ke,({generation:e})=>{const{model:t}=e;return{mainModel:t}},Oe),Wse=e=>{const{controlNetId:t,model:n,isEnabled:r}=e.controlNet,o=se(),s=z(Or),{mainModel:i}=z(Hse),{data:c}=ux(),f=u.useMemo(()=>{if(!c)return[];const m=[];return Wr(c.entities,(v,b)=>{if(!v)return;const y=(v==null?void 0:v.base_model)!==(i==null?void 0:i.base_model);m.push({value:b,label:v.model_name,group:xr[v.base_model],disabled:y,tooltip:y?`Incompatible base model: ${v.base_model}`:void 0})}),m},[c,i==null?void 0:i.base_model]),p=u.useMemo(()=>(c==null?void 0:c.entities[`${n==null?void 0:n.base_model}/controlnet/${n==null?void 0:n.model_name}`])??null,[n==null?void 0:n.base_model,n==null?void 0:n.model_name,c==null?void 0:c.entities]),h=u.useCallback(m=>{if(!m)return;const v=CM(m);v&&o(c3({controlNetId:t,model:v}))},[t,o]);return a.jsx(Kn,{itemComponent:tl,data:f,error:!p||(i==null?void 0:i.base_model)!==p.base_model,placeholder:"Select a model",value:(p==null?void 0:p.id)??null,onChange:h,disabled:s||!r,tooltip:p==null?void 0:p.description})},Vse=u.memo(Wse),Use=e=>{const{weight:t,isEnabled:n,controlNetId:r}=e.controlNet,o=se(),s=u.useCallback(i=>{o(hD({controlNetId:r,weight:i}))},[r,o]);return a.jsx(jt,{isDisabled:!n,label:"Weight",value:t,onChange:s,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},Gse=u.memo(Use),qse=le(ke,({controlNet:e,gallery:t})=>{const{pendingControlImages:n}=e,{autoAddBoardId:r}=t;return{pendingControlImages:n,autoAddBoardId:r}},Oe),Kse=({isSmall:e,controlNet:t})=>{const{controlImage:n,processedControlImage:r,processorType:o,isEnabled:s,controlNetId:i}=t,c=se(),{pendingControlImages:f,autoAddBoardId:p}=z(qse),h=z(jr),[m,v]=u.useState(!1),{currentData:b}=qo(n??Yo.skipToken),{currentData:y}=qo(r??Yo.skipToken),[x]=mD(),[C]=gD(),[k]=vD(),j=u.useCallback(()=>{c(bD({controlNetId:i,controlImage:null}))},[i,c]),_=u.useCallback(async()=>{y&&(await x({imageDTO:y,is_intermediate:!1}).unwrap(),p!=="none"?C({imageDTO:y,board_id:p}):k({imageDTO:y}))},[y,x,p,C,k]),I=u.useCallback(()=>{y&&(h==="unifiedCanvas"?c(Ls({width:y.width,height:y.height})):(c(Ol(y.width)),c(Ml(y.height))))},[y,h,c]),O=u.useCallback(()=>{v(!0)},[]),E=u.useCallback(()=>{v(!1)},[]),M=u.useMemo(()=>{if(b)return{id:i,payloadType:"IMAGE_DTO",payload:{imageDTO:b}}},[b,i]),R=u.useMemo(()=>({id:i,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:i}}),[i]),A=u.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:i}),[i]),D=b&&y&&!m&&!f.includes(i)&&o!=="none";return a.jsxs($,{onMouseEnter:O,onMouseLeave:E,sx:{position:"relative",w:"full",h:e?28:366,alignItems:"center",justifyContent:"center",pointerEvents:s?"auto":"none",opacity:s?1:.5},children:[a.jsx(ii,{draggableData:M,droppableData:R,imageDTO:b,isDropDisabled:D||!s,postUploadAction:A}),a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:D?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:a.jsx(ii,{draggableData:M,droppableData:R,imageDTO:y,isUploadDisabled:!0,isDropDisabled:!s})}),a.jsxs(a.Fragment,{children:[a.jsx(eu,{onClick:j,icon:b?a.jsx(Og,{}):void 0,tooltip:"Reset Control Image"}),a.jsx(eu,{onClick:_,icon:b?a.jsx(Eg,{size:16}):void 0,tooltip:"Save Control Image",styleOverrides:{marginTop:6}}),a.jsx(eu,{onClick:I,icon:b?a.jsx(OJ,{size:16}):void 0,tooltip:"Set Control Image Dimensions To W/H",styleOverrides:{marginTop:12}})]}),f.includes(i)&&a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",alignItems:"center",justifyContent:"center",opacity:.8,borderRadius:"base",bg:"base.400",_dark:{bg:"base.900"}},children:a.jsx(Wl,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},Lj=u.memo(Kse),Zs=()=>{const e=se();return u.useCallback((n,r)=>{e(xD({controlNetId:n,changes:r}))},[e])};function ea(e){return a.jsx($,{sx:{flexDirection:"column",gap:2},children:e.children})}const Fj=ws.canny_image_processor.default,Xse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,i=z(Or),c=Zs(),f=u.useCallback(v=>{c(t,{low_threshold:v})},[t,c]),p=u.useCallback(()=>{c(t,{low_threshold:Fj.low_threshold})},[t,c]),h=u.useCallback(v=>{c(t,{high_threshold:v})},[t,c]),m=u.useCallback(()=>{c(t,{high_threshold:Fj.high_threshold})},[t,c]);return a.jsxs(ea,{children:[a.jsx(jt,{isDisabled:i||!r,label:"Low Threshold",value:o,onChange:f,handleReset:p,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),a.jsx(jt,{isDisabled:i||!r,label:"High Threshold",value:s,onChange:h,handleReset:m,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},Qse=u.memo(Xse),fd=ws.content_shuffle_image_processor.default,Yse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:i,h:c,f}=n,p=Zs(),h=z(Or),m=u.useCallback(O=>{p(t,{detect_resolution:O})},[t,p]),v=u.useCallback(()=>{p(t,{detect_resolution:fd.detect_resolution})},[t,p]),b=u.useCallback(O=>{p(t,{image_resolution:O})},[t,p]),y=u.useCallback(()=>{p(t,{image_resolution:fd.image_resolution})},[t,p]),x=u.useCallback(O=>{p(t,{w:O})},[t,p]),C=u.useCallback(()=>{p(t,{w:fd.w})},[t,p]),k=u.useCallback(O=>{p(t,{h:O})},[t,p]),j=u.useCallback(()=>{p(t,{h:fd.h})},[t,p]),_=u.useCallback(O=>{p(t,{f:O})},[t,p]),I=u.useCallback(()=>{p(t,{f:fd.f})},[t,p]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:m,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:b,handleReset:y,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(jt,{label:"W",value:i,onChange:x,handleReset:C,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(jt,{label:"H",value:c,onChange:k,handleReset:j,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(jt,{label:"F",value:f,onChange:_,handleReset:I,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},Jse=u.memo(Yse),zj=ws.hed_image_processor.default,Zse=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,i=z(Or),c=Zs(),f=u.useCallback(b=>{c(t,{detect_resolution:b})},[t,c]),p=u.useCallback(b=>{c(t,{image_resolution:b})},[t,c]),h=u.useCallback(b=>{c(t,{scribble:b.target.checked})},[t,c]),m=u.useCallback(()=>{c(t,{detect_resolution:zj.detect_resolution})},[t,c]),v=u.useCallback(()=>{c(t,{image_resolution:zj.image_resolution})},[t,c]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:n,onChange:f,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(jt,{label:"Image Resolution",value:r,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(qn,{label:"Scribble",isChecked:o,onChange:h,isDisabled:i||!s})]})},eae=u.memo(Zse),Bj=ws.lineart_anime_image_processor.default,tae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=Zs(),c=z(Or),f=u.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=u.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=u.useCallback(()=>{i(t,{detect_resolution:Bj.detect_resolution})},[t,i]),m=u.useCallback(()=>{i(t,{image_resolution:Bj.image_resolution})},[t,i]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:f,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},nae=u.memo(tae),Hj=ws.lineart_image_processor.default,rae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:i}=n,c=Zs(),f=z(Or),p=u.useCallback(y=>{c(t,{detect_resolution:y})},[t,c]),h=u.useCallback(y=>{c(t,{image_resolution:y})},[t,c]),m=u.useCallback(()=>{c(t,{detect_resolution:Hj.detect_resolution})},[t,c]),v=u.useCallback(()=>{c(t,{image_resolution:Hj.image_resolution})},[t,c]),b=u.useCallback(y=>{c(t,{coarse:y.target.checked})},[t,c]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(qn,{label:"Coarse",isChecked:i,onChange:b,isDisabled:f||!r})]})},oae=u.memo(rae),Wj=ws.mediapipe_face_processor.default,sae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,i=Zs(),c=z(Or),f=u.useCallback(v=>{i(t,{max_faces:v})},[t,i]),p=u.useCallback(v=>{i(t,{min_confidence:v})},[t,i]),h=u.useCallback(()=>{i(t,{max_faces:Wj.max_faces})},[t,i]),m=u.useCallback(()=>{i(t,{min_confidence:Wj.min_confidence})},[t,i]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Max Faces",value:o,onChange:f,handleReset:h,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),a.jsx(jt,{label:"Min Confidence",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},aae=u.memo(sae),Vj=ws.midas_depth_image_processor.default,iae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,i=Zs(),c=z(Or),f=u.useCallback(v=>{i(t,{a_mult:v})},[t,i]),p=u.useCallback(v=>{i(t,{bg_th:v})},[t,i]),h=u.useCallback(()=>{i(t,{a_mult:Vj.a_mult})},[t,i]),m=u.useCallback(()=>{i(t,{bg_th:Vj.bg_th})},[t,i]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"a_mult",value:o,onChange:f,handleReset:h,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),a.jsx(jt,{label:"bg_th",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},lae=u.memo(iae),nh=ws.mlsd_image_processor.default,cae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:i,thr_v:c}=n,f=Zs(),p=z(Or),h=u.useCallback(j=>{f(t,{detect_resolution:j})},[t,f]),m=u.useCallback(j=>{f(t,{image_resolution:j})},[t,f]),v=u.useCallback(j=>{f(t,{thr_d:j})},[t,f]),b=u.useCallback(j=>{f(t,{thr_v:j})},[t,f]),y=u.useCallback(()=>{f(t,{detect_resolution:nh.detect_resolution})},[t,f]),x=u.useCallback(()=>{f(t,{image_resolution:nh.image_resolution})},[t,f]),C=u.useCallback(()=>{f(t,{thr_d:nh.thr_d})},[t,f]),k=u.useCallback(()=>{f(t,{thr_v:nh.thr_v})},[t,f]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:h,handleReset:y,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:m,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(jt,{label:"W",value:i,onChange:v,handleReset:C,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(jt,{label:"H",value:c,onChange:b,handleReset:k,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},uae=u.memo(cae),Uj=ws.normalbae_image_processor.default,dae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=Zs(),c=z(Or),f=u.useCallback(v=>{i(t,{detect_resolution:v})},[t,i]),p=u.useCallback(v=>{i(t,{image_resolution:v})},[t,i]),h=u.useCallback(()=>{i(t,{detect_resolution:Uj.detect_resolution})},[t,i]),m=u.useCallback(()=>{i(t,{image_resolution:Uj.image_resolution})},[t,i]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:f,handleReset:h,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:c||!r})]})},fae=u.memo(dae),Gj=ws.openpose_image_processor.default,pae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:i}=n,c=Zs(),f=z(Or),p=u.useCallback(y=>{c(t,{detect_resolution:y})},[t,c]),h=u.useCallback(y=>{c(t,{image_resolution:y})},[t,c]),m=u.useCallback(()=>{c(t,{detect_resolution:Gj.detect_resolution})},[t,c]),v=u.useCallback(()=>{c(t,{image_resolution:Gj.image_resolution})},[t,c]),b=u.useCallback(y=>{c(t,{hand_and_face:y.target.checked})},[t,c]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:f||!r}),a.jsx(qn,{label:"Hand and Face",isChecked:i,onChange:b,isDisabled:f||!r})]})},hae=u.memo(pae),qj=ws.pidi_image_processor.default,mae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:i,safe:c}=n,f=Zs(),p=z(Or),h=u.useCallback(C=>{f(t,{detect_resolution:C})},[t,f]),m=u.useCallback(C=>{f(t,{image_resolution:C})},[t,f]),v=u.useCallback(()=>{f(t,{detect_resolution:qj.detect_resolution})},[t,f]),b=u.useCallback(()=>{f(t,{image_resolution:qj.image_resolution})},[t,f]),y=u.useCallback(C=>{f(t,{scribble:C.target.checked})},[t,f]),x=u.useCallback(C=>{f(t,{safe:C.target.checked})},[t,f]);return a.jsxs(ea,{children:[a.jsx(jt,{label:"Detect Resolution",value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(jt,{label:"Image Resolution",value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(qn,{label:"Scribble",isChecked:i,onChange:y}),a.jsx(qn,{label:"Safe",isChecked:c,onChange:x,isDisabled:p||!r})]})},gae=u.memo(mae),vae=e=>null,bae=u.memo(vae),xae=e=>{const{controlNetId:t,isEnabled:n,processorNode:r}=e.controlNet;return r.type==="canny_image_processor"?a.jsx(Qse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="hed_image_processor"?a.jsx(eae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_image_processor"?a.jsx(oae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="content_shuffle_image_processor"?a.jsx(Jse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_anime_image_processor"?a.jsx(nae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mediapipe_face_processor"?a.jsx(aae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="midas_depth_image_processor"?a.jsx(lae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mlsd_image_processor"?a.jsx(uae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="normalbae_image_processor"?a.jsx(fae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="openpose_image_processor"?a.jsx(hae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="pidi_image_processor"?a.jsx(gae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="zoe_depth_image_processor"?a.jsx(bae,{controlNetId:t,processorNode:r,isEnabled:n}):null},yae=u.memo(xae),wae=e=>{const{controlNetId:t,isEnabled:n,shouldAutoConfig:r}=e.controlNet,o=se(),s=z(Or),i=u.useCallback(()=>{o(yD({controlNetId:t}))},[t,o]);return a.jsx(qn,{label:"Auto configure processor","aria-label":"Auto configure processor",isChecked:r,onChange:i,isDisabled:s||!n})},Cae=u.memo(wae),Sae=e=>{const{controlNet:t}=e,n=se(),r=u.useCallback(()=>{n(wD({controlNet:t}))},[t,n]),o=u.useCallback(()=>{n(CD({controlNet:t}))},[t,n]);return a.jsxs($,{sx:{gap:2},children:[a.jsx(tt,{size:"sm",icon:a.jsx(Fl,{}),tooltip:"Import Image From Canvas","aria-label":"Import Image From Canvas",onClick:r}),a.jsx(tt,{size:"sm",icon:a.jsx(HE,{}),tooltip:"Import Mask From Canvas","aria-label":"Import Mask From Canvas",onClick:o})]})},kae=u.memo(Sae),Kj=e=>`${Math.round(e*100)}%`,jae=e=>{const{beginStepPct:t,endStepPct:n,isEnabled:r,controlNetId:o}=e.controlNet,s=se(),i=u.useCallback(c=>{s(SD({controlNetId:o,beginStepPct:c[0]})),s(kD({controlNetId:o,endStepPct:c[1]}))},[o,s]);return a.jsxs(pr,{isDisabled:!r,children:[a.jsx(Jr,{children:"Begin / End Step Percentage"}),a.jsx(Fx,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(NP,{"aria-label":["Begin Step %","End Step %"],value:[t,n],onChange:i,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!r,children:[a.jsx(TP,{children:a.jsx($P,{})}),a.jsx(Mn,{label:Kj(t),placement:"top",hasArrow:!0,children:a.jsx(tb,{index:0})}),a.jsx(Mn,{label:Kj(n),placement:"top",hasArrow:!0,children:a.jsx(tb,{index:1})}),a.jsx(uh,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(uh,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(uh,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},_ae=u.memo(jae),Pae=[{label:"Balanced",value:"balanced"},{label:"Prompt",value:"more_prompt"},{label:"Control",value:"more_control"},{label:"Mega Control",value:"unbalanced"}];function Iae(e){const{controlMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=se(),s=u.useCallback(i=>{o(jD({controlNetId:r,controlMode:i}))},[r,o]);return a.jsx(Zr,{disabled:!n,label:"Control Mode",data:Pae,value:String(t),onChange:s})}const Eae=e=>e.config,Oae=le(Eae,e=>uo(ws,n=>({value:n.type,label:n.label})).sort((n,r)=>n.value==="none"?-1:r.value==="none"?1:n.label.localeCompare(r.label)).filter(n=>!e.sd.disabledControlNetProcessors.includes(n.value)),Oe),Mae=e=>{const t=se(),{controlNetId:n,isEnabled:r,processorNode:o}=e.controlNet,s=z(Or),i=z(Oae),c=u.useCallback(f=>{t(_D({controlNetId:n,processorType:f}))},[n,t]);return a.jsx(Kn,{label:"Processor",value:o.type??"canny_image_processor",data:i,onChange:c,disabled:s||!r})},Rae=u.memo(Mae),Dae=[{label:"Resize",value:"just_resize"},{label:"Crop",value:"crop_resize"},{label:"Fill",value:"fill_resize"}];function Aae(e){const{resizeMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=se(),s=u.useCallback(i=>{o(PD({controlNetId:r,resizeMode:i}))},[r,o]);return a.jsx(Zr,{disabled:!n,label:"Resize Mode",data:Dae,value:String(t),onChange:s})}const Nae=e=>{const{controlNet:t}=e,{controlNetId:n}=t,r=se(),o=z(jr),s=le(ke,({controlNet:b})=>{const y=b.controlNets[n];if(!y)return{isEnabled:!1,shouldAutoConfig:!1};const{isEnabled:x,shouldAutoConfig:C}=y;return{isEnabled:x,shouldAutoConfig:C}},Oe),{isEnabled:i,shouldAutoConfig:c}=z(s),[f,p]=BJ(!1),h=u.useCallback(()=>{r(ID({controlNetId:n}))},[n,r]),m=u.useCallback(()=>{r(ED({sourceControlNetId:n,newControlNetId:Fi()}))},[n,r]),v=u.useCallback(()=>{r(OD({controlNetId:n}))},[n,r]);return a.jsxs($,{sx:{flexDir:"column",gap:3,p:2,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(qn,{tooltip:"Toggle this ControlNet","aria-label":"Toggle this ControlNet",isChecked:i,onChange:v}),a.jsx(Fe,{sx:{w:"full",minW:0,opacity:i?1:.5,pointerEvents:i?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:a.jsx(Vse,{controlNet:t})}),o==="unifiedCanvas"&&a.jsx(kae,{controlNet:t}),a.jsx(tt,{size:"sm",tooltip:"Duplicate","aria-label":"Duplicate",onClick:m,icon:a.jsx(Du,{})}),a.jsx(tt,{size:"sm",tooltip:"Delete","aria-label":"Delete",colorScheme:"error",onClick:h,icon:a.jsx(Jo,{})}),a.jsx(tt,{size:"sm",tooltip:f?"Hide Advanced":"Show Advanced","aria-label":f?"Hide Advanced":"Show Advanced",onClick:p,variant:"ghost",sx:{_hover:{bg:"none"}},icon:a.jsx(Lg,{sx:{boxSize:4,color:"base.700",transform:f?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!c&&a.jsx(Fe,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),a.jsxs($,{sx:{w:"full",flexDirection:"column",gap:3},children:[a.jsxs($,{sx:{gap:4,w:"full",alignItems:"center"},children:[a.jsxs($,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:f?1:0,pb:2,justifyContent:"space-between"},children:[a.jsx(Gse,{controlNet:t}),a.jsx(_ae,{controlNet:t})]}),!f&&a.jsx($,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:a.jsx(Lj,{controlNet:t,isSmall:!0})})]}),a.jsxs($,{sx:{gap:2},children:[a.jsx(Iae,{controlNet:t}),a.jsx(Aae,{controlNet:t})]}),a.jsx(Rae,{controlNet:t})]}),f&&a.jsxs(a.Fragment,{children:[a.jsx(Lj,{controlNet:t}),a.jsx(Cae,{controlNet:t}),a.jsx(yae,{controlNet:t})]})]})},Tae=u.memo(Nae),$ae=le(ke,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},Oe),Lae=()=>{const{isEnabled:e}=z($ae),t=se(),n=u.useCallback(()=>{t(MD())},[t]);return a.jsx(qn,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},Fae=u.memo(Lae),zae=le([ke],({controlNet:e})=>{const{controlNets:t,isEnabled:n}=e,r=RD(t),o=n&&r.length>0?`${r.length} Active`:void 0;return{controlNetsArray:uo(t),activeLabel:o}},Oe),Bae=()=>{const{controlNetsArray:e,activeLabel:t}=z(zae),n=Yn("controlNet").isFeatureDisabled,r=se(),{firstModel:o}=ux(void 0,{selectFromResult:i=>({firstModel:i.data?DD.getSelectors().selectAll(i.data)[0]:void 0})}),s=u.useCallback(()=>{if(!o)return;const i=Fi();r(AD({controlNetId:i})),r(c3({controlNetId:i,model:o}))},[r,o]);return n?null:a.jsx(wo,{label:"Control Adapters",activeLabel:t,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsxs($,{sx:{w:"100%",gap:2,p:2,ps:3,borderRadius:"base",alignItems:"center",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(Fae,{}),a.jsx(tt,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:a.jsx(Yl,{}),isDisabled:!o,flexGrow:1,size:"sm",onClick:s})]}),e.map((i,c)=>a.jsxs(u.Fragment,{children:[c>0&&a.jsx(Ko,{}),a.jsx(Tae,{controlNet:i})]},i.controlNetId))]})})},Fu=u.memo(Bae),Hae=le(ke,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},Oe),Wae=()=>{const e=se(),{isDisabled:t,shouldUseCpuNoise:n}=z(Hae),r=o=>e(ND(o.target.checked));return a.jsx(qn,{isDisabled:t,label:"Use CPU Noise",isChecked:n,onChange:r})},Vae=le(ke,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},Oe);function Uae(){const e=se(),{threshold:t,isDisabled:n}=z(Vae),{t:r}=Ie();return a.jsx(jt,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(dC(o)),handleReset:()=>e(dC(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const Gae=()=>{const e=se(),t=z(r=>r.generation.shouldUseNoiseSettings),n=r=>e(TD(r.target.checked));return a.jsx(qn,{label:"Enable Noise Settings",isChecked:t,onChange:n})},qae=le(ke,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},Oe);function Kae(){const e=se(),{perlin:t,isDisabled:n}=z(qae),{t:r}=Ie();return a.jsx(jt,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(fC(o)),handleReset:()=>e(fC(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const Xae=le(ke,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},Oe),Qae=()=>{const{t:e}=Ie(),t=Yn("noise").isFeatureEnabled,n=Yn("perlinNoise").isFeatureEnabled,r=Yn("noiseThreshold").isFeatureEnabled,{activeLabel:o}=z(Xae);return t?a.jsx(wo,{label:e("parameters.noiseSettings"),activeLabel:o,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(Gae,{}),a.jsx(Wae,{}),n&&a.jsx(Kae,{}),r&&a.jsx(Uae,{})]})}):null},Af=u.memo(Qae),ta=e=>e.generation,Yae=le(ta,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},Oe),Jae=()=>{const{t:e}=Ie(),{seamlessXAxis:t}=z(Yae),n=se(),r=u.useCallback(o=>{n($D(o.target.checked))},[n]);return a.jsx(qn,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},Zae=u.memo(Jae),eie=le(ta,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},Oe),tie=()=>{const{t:e}=Ie(),{seamlessYAxis:t}=z(eie),n=se(),r=u.useCallback(o=>{n(LD(o.target.checked))},[n]);return a.jsx(qn,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},nie=u.memo(tie),rie=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},oie=le(ta,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:rie(t,n)}},Oe),sie=()=>{const{t:e}=Ie(),{activeLabel:t}=z(oie);return Yn("seamless").isFeatureEnabled?a.jsx(wo,{label:e("parameters.seamlessTiling"),activeLabel:t,children:a.jsxs($,{sx:{gap:5},children:[a.jsx(Fe,{flexGrow:1,children:a.jsx(Zae,{})}),a.jsx(Fe,{flexGrow:1,children:a.jsx(nie,{})})]})}):null},zu=u.memo(sie),aie=e=>{const{onClick:t}=e;return a.jsx(tt,{size:"sm","aria-label":"Add Embedding",tooltip:"Add Embedding",icon:a.jsx(NE,{}),sx:{p:2,color:"base.500",_hover:{color:"base.600"},_active:{color:"base.700"},_dark:{color:"base.500",_hover:{color:"base.400"},_active:{color:"base.300"}}},variant:"link",onClick:t})},e0=u.memo(aie),iie="28rem",lie=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=FD(),i=u.useRef(null),c=z(h=>h.generation.model),f=u.useMemo(()=>{if(!s)return[];const h=[];return Wr(s.entities,(m,v)=>{if(!m)return;const b=(c==null?void 0:c.base_model)!==m.base_model;h.push({value:m.model_name,label:m.model_name,group:xr[m.base_model],disabled:b,tooltip:b?`Incompatible base model: ${m.base_model}`:void 0})}),h.sort((m,v)=>{var b;return m.label&&v.label?(b=m.label)!=null&&b.localeCompare(v.label)?-1:1:-1}),h.sort((m,v)=>m.disabled&&!v.disabled?1:-1)},[s,c==null?void 0:c.base_model]),p=u.useCallback(h=>{h&&t(h)},[t]);return a.jsxs(fg,{initialFocusRef:i,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(Zx,{children:o}),a.jsx(pg,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(ey,{sx:{p:0,w:`calc(${iie} - 2rem )`},children:f.length===0?a.jsx($,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:a.jsx(Ee,{children:"No Embeddings Loaded"})}):a.jsx(Kn,{inputRef:i,autoFocus:!0,placeholder:"Add Embedding",value:null,data:f,nothingFound:"No matching Embeddings",itemComponent:tl,disabled:f.length===0,onDropdownClose:r,filter:(h,m)=>{var v;return((v=m.label)==null?void 0:v.toLowerCase().includes(h.toLowerCase().trim()))||m.value.toLowerCase().includes(h.toLowerCase().trim())},onChange:p})})})]})},t0=u.memo(lie),cie=()=>{const e=z(m=>m.generation.negativePrompt),t=u.useRef(null),{isOpen:n,onClose:r,onOpen:o}=Ao(),s=se(),{t:i}=Ie(),c=u.useCallback(m=>{s(jd(m.target.value))},[s]),f=u.useCallback(m=>{m.key==="<"&&o()},[o]),p=u.useCallback(m=>{if(!t.current)return;const v=t.current.selectionStart;if(v===void 0)return;let b=e.slice(0,v);b[b.length-1]!=="<"&&(b+="<"),b+=`${m}>`;const y=b.length;b+=e.slice(v),fs.flushSync(()=>{s(jd(b))}),t.current.selectionEnd=y,r()},[s,r,e]),h=Yn("embedding").isFeatureEnabled;return a.jsxs(pr,{children:[a.jsx(t0,{isOpen:n,onClose:r,onSelect:p,children:a.jsx(li,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:i("parameters.negativePromptPlaceholder"),onChange:c,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:f}})}),!n&&h&&a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(e0,{onClick:o})})]})},PM=u.memo(cie),uie=le([ke,jr],({generation:e},t)=>({prompt:e.positivePrompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:mn}}),die=()=>{const e=se(),{prompt:t,activeTabName:n}=z(uie),r=Df(),o=u.useRef(null),{isOpen:s,onClose:i,onOpen:c}=Ao(),{t:f}=Ie(),p=u.useCallback(b=>{e(kd(b.target.value))},[e]);St("alt+a",()=>{var b;(b=o.current)==null||b.focus()},[]);const h=u.useCallback(b=>{if(!o.current)return;const y=o.current.selectionStart;if(y===void 0)return;let x=t.slice(0,y);x[x.length-1]!=="<"&&(x+="<"),x+=`${b}>`;const C=x.length;x+=t.slice(y),fs.flushSync(()=>{e(kd(x))}),o.current.selectionStart=C,o.current.selectionEnd=C,i()},[e,i,t]),m=Yn("embedding").isFeatureEnabled,v=u.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&r&&(b.preventDefault(),e(af()),e(Vm(n))),m&&b.key==="<"&&c()},[r,e,n,c,m]);return a.jsxs(Fe,{position:"relative",children:[a.jsx(pr,{children:a.jsx(t0,{isOpen:s,onClose:i,onSelect:h,children:a.jsx(li,{id:"prompt",name:"prompt",ref:o,value:t,placeholder:f("parameters.positivePromptPlaceholder"),onChange:p,onKeyDown:v,resize:"vertical",minH:32})})}),!s&&m&&a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(e0,{onClick:c})})]})},IM=u.memo(die);function fie(){const e=z(r=>r.sdxl.shouldConcatSDXLStylePrompt),t=se(),n=()=>{t(zD(!e))};return a.jsx(tt,{"aria-label":"Concatenate Prompt & Style",tooltip:"Concatenate Prompt & Style",variant:"outline",isChecked:e,onClick:n,icon:a.jsx(zE,{}),size:"xs",sx:{position:"absolute",insetInlineEnd:1,top:6,border:"none",color:e?"accent.500":"base.500",_hover:{bg:"none"}}})}const Xj={position:"absolute",bg:"none",w:"full",minH:2,borderRadius:0,borderLeft:"none",borderRight:"none",zIndex:2,maskImage:"radial-gradient(circle at center, black, black 65%, black 30%, black 15%, transparent)"};function EM(){return a.jsxs($,{children:[a.jsx(Fe,{as:yr.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"1px",borderTop:"none",borderColor:"base.400",...Xj,_dark:{borderColor:"accent.500"}}}),a.jsx(Fe,{as:yr.div,initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,1],scale:[0,.75,1.5,1],transition:{duration:.42,times:[0,.25,.5,1]}},exit:{opacity:0,scale:0},sx:{zIndex:3,position:"absolute",left:"48%",top:"3px",p:1,borderRadius:4,bg:"accent.400",color:"base.50",_dark:{bg:"accent.500"}},children:a.jsx(zE,{size:12})}),a.jsx(Fe,{as:yr.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"17px",borderBottom:"none",borderColor:"base.400",...Xj,_dark:{borderColor:"accent.500"}}})]})}const pie=le([ke,jr],({sdxl:e},t)=>{const{negativeStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:mn}}),hie=()=>{const e=se(),t=Df(),n=u.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Ao(),{prompt:i,activeTabName:c,shouldConcatSDXLStylePrompt:f}=z(pie),p=u.useCallback(b=>{e(Pd(b.target.value))},[e]),h=u.useCallback(b=>{if(!n.current)return;const y=n.current.selectionStart;if(y===void 0)return;let x=i.slice(0,y);x[x.length-1]!=="<"&&(x+="<"),x+=`${b}>`;const C=x.length;x+=i.slice(y),fs.flushSync(()=>{e(Pd(x))}),n.current.selectionStart=C,n.current.selectionEnd=C,o()},[e,o,i]),m=Yn("embedding").isFeatureEnabled,v=u.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&t&&(b.preventDefault(),e(af()),e(Vm(c))),m&&b.key==="<"&&s()},[t,e,c,s,m]);return a.jsxs(Fe,{position:"relative",children:[a.jsx(co,{children:f&&a.jsx(Fe,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(EM,{})})}),a.jsx(pr,{children:a.jsx(t0,{isOpen:r,onClose:o,onSelect:h,children:a.jsx(li,{id:"prompt",name:"prompt",ref:n,value:i,placeholder:"Negative Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",fontSize:"sm",minH:16})})}),!r&&m&&a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(e0,{onClick:s})})]})},mie=u.memo(hie),gie=le([ke,jr],({sdxl:e},t)=>{const{positiveStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:mn}}),vie=()=>{const e=se(),t=Df(),n=u.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Ao(),{prompt:i,activeTabName:c,shouldConcatSDXLStylePrompt:f}=z(gie),p=u.useCallback(b=>{e(_d(b.target.value))},[e]),h=u.useCallback(b=>{if(!n.current)return;const y=n.current.selectionStart;if(y===void 0)return;let x=i.slice(0,y);x[x.length-1]!=="<"&&(x+="<"),x+=`${b}>`;const C=x.length;x+=i.slice(y),fs.flushSync(()=>{e(_d(x))}),n.current.selectionStart=C,n.current.selectionEnd=C,o()},[e,o,i]),m=Yn("embedding").isFeatureEnabled,v=u.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&t&&(b.preventDefault(),e(af()),e(Vm(c))),m&&b.key==="<"&&s()},[t,e,c,s,m]);return a.jsxs(Fe,{position:"relative",children:[a.jsx(co,{children:f&&a.jsx(Fe,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(EM,{})})}),a.jsx(pr,{children:a.jsx(t0,{isOpen:r,onClose:o,onSelect:h,children:a.jsx(li,{id:"prompt",name:"prompt",ref:n,value:i,placeholder:"Positive Style Prompt",onChange:p,onKeyDown:v,resize:"vertical",minH:16})})}),!r&&m&&a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(e0,{onClick:s})})]})},bie=u.memo(vie);function a2(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(IM,{}),a.jsx(fie,{}),a.jsx(bie,{}),a.jsx(PM,{}),a.jsx(mie,{})]})}const Zl=()=>{const{isRefinerAvailable:e}=Gs(dx,{selectFromResult:({data:t})=>({isRefinerAvailable:t?t.ids.length>0:!1})});return e},xie=le([ke],({sdxl:e,ui:t,hotkeys:n})=>{const{refinerCFGScale:r}=e,{shouldUseSliders:o}=t,{shift:s}=n;return{refinerCFGScale:r,shouldUseSliders:o,shift:s}},Oe),yie=()=>{const{refinerCFGScale:e,shouldUseSliders:t,shift:n}=z(xie),r=Zl(),o=se(),{t:s}=Ie(),i=u.useCallback(f=>o(k1(f)),[o]),c=u.useCallback(()=>o(k1(7)),[o]);return t?a.jsx(jt,{label:s("parameters.cfgScale"),step:n?.1:.5,min:1,max:20,onChange:i,handleReset:c,value:e,sliderNumberInputProps:{max:200},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!r}):a.jsx(Tu,{label:s("parameters.cfgScale"),step:.5,min:1,max:200,onChange:i,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"},isDisabled:!r})},wie=u.memo(yie),Cie=e=>{const t=Su("models"),[n,r,o]=e.split("/"),s=BD.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data},Sie=le(ke,e=>({model:e.sdxl.refinerModel}),Oe),kie=()=>{const e=se(),t=Yn("syncModels").isFeatureEnabled,{model:n}=z(Sie),{data:r,isLoading:o}=Gs(dx),s=u.useMemo(()=>{if(!r)return[];const f=[];return Wr(r.entities,(p,h)=>{p&&f.push({value:h,label:p.model_name,group:xr[p.base_model]})}),f},[r]),i=u.useMemo(()=>(r==null?void 0:r.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])??null,[r==null?void 0:r.entities,n]),c=u.useCallback(f=>{if(!f)return;const p=Cie(f);p&&e(J_(p))},[e]);return o?a.jsx(Kn,{label:"Refiner Model",placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kn,{tooltip:i==null?void 0:i.description,label:"Refiner Model",value:i==null?void 0:i.id,placeholder:s.length>0?"Select a model":"No models available",data:s,error:s.length===0,disabled:s.length===0,onChange:c,w:"100%"}),t&&a.jsx(Fe,{mt:7,children:a.jsx(Nu,{iconMode:!0})})]})},jie=u.memo(kie),_ie=le([ke],({sdxl:e,hotkeys:t})=>{const{refinerNegativeAestheticScore:n}=e,{shift:r}=t;return{refinerNegativeAestheticScore:n,shift:r}},Oe),Pie=()=>{const{refinerNegativeAestheticScore:e,shift:t}=z(_ie),n=Zl(),r=se(),o=u.useCallback(i=>r(_1(i)),[r]),s=u.useCallback(()=>r(_1(2.5)),[r]);return a.jsx(jt,{label:"Negative Aesthetic Score",step:t?.1:.5,min:1,max:10,onChange:o,handleReset:s,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Iie=u.memo(Pie),Eie=le([ke],({sdxl:e,hotkeys:t})=>{const{refinerPositiveAestheticScore:n}=e,{shift:r}=t;return{refinerPositiveAestheticScore:n,shift:r}},Oe),Oie=()=>{const{refinerPositiveAestheticScore:e,shift:t}=z(Eie),n=Zl(),r=se(),o=u.useCallback(i=>r(j1(i)),[r]),s=u.useCallback(()=>r(j1(6)),[r]);return a.jsx(jt,{label:"Positive Aesthetic Score",step:t?.1:.5,min:1,max:10,onChange:o,handleReset:s,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Mie=u.memo(Oie),Rie=le(ke,({ui:e,sdxl:t})=>{const{refinerScheduler:n}=t,{favoriteSchedulers:r}=e,o=uo(zm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{refinerScheduler:n,data:o}},Oe),Die=()=>{const e=se(),{t}=Ie(),{refinerScheduler:n,data:r}=z(Rie),o=Zl(),s=u.useCallback(i=>{i&&e(Z_(i))},[e]);return a.jsx(Kn,{w:"100%",label:t("parameters.scheduler"),value:n,data:r,onChange:s,disabled:!o})},Aie=u.memo(Die),Nie=le([ke],({sdxl:e})=>{const{refinerStart:t}=e;return{refinerStart:t}},Oe),Tie=()=>{const{refinerStart:e}=z(Nie),t=se(),n=Zl(),r=u.useCallback(s=>t(P1(s)),[t]),o=u.useCallback(()=>t(P1(.8)),[t]);return a.jsx(jt,{label:"Refiner Start",step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},$ie=u.memo(Tie),Lie=le([ke],({sdxl:e,ui:t})=>{const{refinerSteps:n}=e,{shouldUseSliders:r}=t;return{refinerSteps:n,shouldUseSliders:r}},Oe),Fie=()=>{const{refinerSteps:e,shouldUseSliders:t}=z(Lie),n=Zl(),r=se(),{t:o}=Ie(),s=u.useCallback(c=>{r(S1(c))},[r]),i=u.useCallback(()=>{r(S1(20))},[r]);return t?a.jsx(jt,{label:o("parameters.steps"),min:1,max:100,step:1,onChange:s,handleReset:i,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:500},isDisabled:!n}):a.jsx(Tu,{label:o("parameters.steps"),min:1,max:500,step:1,onChange:s,value:e,numberInputFieldProps:{textAlign:"center"},isDisabled:!n})},zie=u.memo(Fie);function Bie(){const e=z(o=>o.sdxl.shouldUseSDXLRefiner),t=Zl(),n=se(),r=o=>{n(HD(o.target.checked))};return a.jsx(qn,{label:"Use Refiner",isChecked:e,onChange:r,isDisabled:!t})}const Hie=le(ke,e=>{const{shouldUseSDXLRefiner:t}=e.sdxl,{shouldUseSliders:n}=e.ui;return{activeLabel:t?"Enabled":void 0,shouldUseSliders:n}},Oe),Wie=()=>{const{activeLabel:e,shouldUseSliders:t}=z(Hie);return a.jsx(wo,{label:"Refiner",activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(Bie,{}),a.jsx(jie,{}),a.jsxs($,{gap:2,flexDirection:t?"column":"row",children:[a.jsx(zie,{}),a.jsx(wie,{})]}),a.jsx(Aie,{}),a.jsx(Mie,{}),a.jsx(Iie,{}),a.jsx($ie,{})]})})},i2=u.memo(Wie),Vie=le([ke],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:c}=t.sd.guidance,{cfgScale:f}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:f,initial:o,min:s,sliderMax:i,inputMax:c,shouldUseSliders:p,shift:h}},Oe),Uie=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:i}=z(Vie),c=se(),{t:f}=Ie(),p=u.useCallback(m=>c(xh(m)),[c]),h=u.useCallback(()=>c(xh(t)),[c,t]);return s?a.jsx(jt,{label:f("parameters.cfgScale"),step:i?.1:.5,min:n,max:r,onChange:p,handleReset:h,value:e,sliderNumberInputProps:{max:o},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1}):a.jsx(Tu,{label:f("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},Pa=u.memo(Uie),Gie=le([ke],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:i}=e.config.sd.iterations,{iterations:c}=e.generation,{shouldUseSliders:f}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:i;return{iterations:c,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:f,isDisabled:p}},Oe),qie=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i,isDisabled:c}=z(Gie),f=se(),{t:p}=Ie(),h=u.useCallback(v=>{f(pC(v))},[f]),m=u.useCallback(()=>{f(pC(t))},[f,t]);return i?a.jsx(jt,{isDisabled:c,label:p("parameters.images"),step:s,min:n,max:r,onChange:h,handleReset:m,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Tu,{isDisabled:c,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},Ia=u.memo(qie),Kie=le(ke,e=>({model:e.generation.model}),Oe),Xie=()=>{const e=se(),{t}=Ie(),{model:n}=z(Kie),r=Yn("syncModels").isFeatureEnabled,{data:o,isLoading:s}=Gs(hC),{data:i,isLoading:c}=Td(hC),f=z(jr),p=u.useMemo(()=>{if(!o)return[];const v=[];return Wr(o.entities,(b,y)=>{b&&v.push({value:y,label:b.model_name,group:xr[b.base_model]})}),Wr(i==null?void 0:i.entities,(b,y)=>{!b||f==="unifiedCanvas"||f==="img2img"||v.push({value:y,label:b.model_name,group:xr[b.base_model]})}),v},[o,i,f]),h=u.useMemo(()=>((o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])||(i==null?void 0:i.entities[`${n==null?void 0:n.base_model}/onnx/${n==null?void 0:n.model_name}`]))??null,[o==null?void 0:o.entities,n,i==null?void 0:i.entities]),m=u.useCallback(v=>{if(!v)return;const b=Zg(v);b&&e(w1(b))},[e]);return s||c?a.jsx(Kn,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:3,children:[a.jsx(Kn,{tooltip:h==null?void 0:h.description,label:t("modelManager.model"),value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:p.length===0,disabled:p.length===0,onChange:m,w:"100%"}),r&&a.jsx(Fe,{mt:7,children:a.jsx(Nu,{iconMode:!0})})]})},Qie=u.memo(Xie),Yie=le(ke,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},Oe),Jie=()=>{const e=se(),{t}=Ie(),{model:n,vae:r}=z(Yie),{data:o}=a3(),s=u.useMemo(()=>{if(!o)return[];const f=[{value:"default",label:"Default",group:"Default"}];return Wr(o.entities,(p,h)=>{if(!p)return;const m=(n==null?void 0:n.base_model)!==p.base_model;f.push({value:h,label:p.model_name,group:xr[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),f.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),i=u.useMemo(()=>(o==null?void 0:o.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[o==null?void 0:o.entities,r]),c=u.useCallback(f=>{if(!f||f==="default"){e(mC(null));return}const p=jM(f);p&&e(mC(p))},[e]);return a.jsx(Kn,{itemComponent:tl,tooltip:i==null?void 0:i.description,label:t("modelManager.vae"),value:(i==null?void 0:i.id)??"default",placeholder:"Default",data:s,onChange:c,disabled:s.length===0,clearable:!0})},Zie=u.memo(Jie),ele=le([fx,ta],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=uo(zm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{scheduler:n,data:o}},Oe),tle=()=>{const e=se(),{t}=Ie(),{scheduler:n,data:r}=z(ele),o=u.useCallback(s=>{s&&e(C1(s))},[e]);return a.jsx(Kn,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},nle=u.memo(tle),rle=le(ke,({generation:e})=>{const{vaePrecision:t}=e;return{vaePrecision:t}},Oe),ole=["fp16","fp32"],sle=()=>{const e=se(),{vaePrecision:t}=z(rle),n=u.useCallback(r=>{r&&e(WD(r))},[e]);return a.jsx(Zr,{label:"VAE Precision",value:t,data:ole,onChange:n})},ale=u.memo(sle),ile=()=>{const e=Yn("vae").isFeatureEnabled;return a.jsxs($,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[a.jsx(Fe,{w:"full",children:a.jsx(Qie,{})}),a.jsx(Fe,{w:"full",children:a.jsx(nle,{})}),e&&a.jsxs($,{w:"full",gap:3,children:[a.jsx(Zie,{}),a.jsx(ale,{})]})]})},Ea=u.memo(ile),OM=[{name:"Free",value:null},{name:"2:3",value:2/3},{name:"16:9",value:16/9},{name:"1:1",value:1/1}],MM=OM.map(e=>e.value);function RM(){const e=z(o=>o.generation.aspectRatio),t=se(),n=z(o=>o.generation.shouldFitToWidthHeight),r=z(jr);return a.jsx($,{gap:2,flexGrow:1,children:a.jsx(vr,{isAttached:!0,children:OM.map(o=>a.jsx(Wt,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>{t(As(o.value)),t($d(!1))},children:o.name},o.name))})})}const lle=le([ke],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:c}=n.sd.height,{model:f,height:p}=e,{aspectRatio:h}=e,m=t.shift?i:c;return{model:f,height:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},Oe),cle=e=>{const{model:t,height:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:c}=z(lle),f=se(),{t:p}=Ie(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=u.useCallback(b=>{if(f(Ml(b)),c){const y=zs(b*c,8);f(Ol(y))}},[f,c]),v=u.useCallback(()=>{if(f(Ml(h)),c){const b=zs(h*c,8);f(Ol(b))}},[f,h,c]);return a.jsx(jt,{label:p("parameters.height"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},ule=u.memo(cle),dle=le([ke],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:c}=n.sd.width,{model:f,width:p,aspectRatio:h}=e,m=t.shift?i:c;return{model:f,width:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},Oe),fle=e=>{const{model:t,width:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:c}=z(dle),f=se(),{t:p}=Ie(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=u.useCallback(b=>{if(f(Ol(b)),c){const y=zs(b/c,8);f(Ml(y))}},[f,c]),v=u.useCallback(()=>{if(f(Ol(h)),c){const b=zs(h/c,8);f(Ml(b))}},[f,h,c]);return a.jsx(jt,{label:p("parameters.width"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},ple=u.memo(fle),hle=le([ta,jr],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}=e;return{activeTabName:t,shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}});function yu(){const{t:e}=Ie(),t=se(),{activeTabName:n,shouldFitToWidthHeight:r,shouldLockAspectRatio:o,width:s,height:i}=z(hle),c=u.useCallback(()=>{o?(t($d(!1)),MM.includes(s/i)?t(As(s/i)):t(As(null))):(t($d(!0)),t(As(s/i)))},[o,s,i,t]),f=u.useCallback(()=>{t(VD()),t(As(null)),o&&t(As(i/s))},[t,o,s,i]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(Ee,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),a.jsx(Qi,{}),a.jsx(RM,{}),a.jsx(tt,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:a.jsx(GO,{}),fontSize:20,isDisabled:n==="img2img"?!r:!1,onClick:f}),a.jsx(tt,{tooltip:e("ui.lockRatio"),"aria-label":e("ui.lockRatio"),size:"sm",icon:a.jsx(BE,{}),isChecked:o,isDisabled:n==="img2img"?!r:!1,onClick:c})]}),a.jsx($,{gap:2,alignItems:"center",children:a.jsxs($,{gap:2,flexDirection:"column",width:"full",children:[a.jsx(ple,{isDisabled:n==="img2img"?!r:!1}),a.jsx(ule,{isDisabled:n==="img2img"?!r:!1})]})})]})}const mle=le([ke],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:c,fineStep:f,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:m}=n,v=r.shift?f:p;return{steps:h,initial:o,min:s,sliderMax:i,inputMax:c,step:v,shouldUseSliders:m}},Oe),gle=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i}=z(mle),c=se(),{t:f}=Ie(),p=u.useCallback(v=>{c(yh(v))},[c]),h=u.useCallback(()=>{c(yh(t))},[c,t]),m=u.useCallback(()=>{c(af())},[c]);return i?a.jsx(jt,{label:f("parameters.steps"),min:n,max:r,step:s,onChange:p,handleReset:h,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Tu,{label:f("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:m})},Oa=u.memo(gle);function DM(){const e=se(),t=z(o=>o.generation.shouldFitToWidthHeight),n=o=>e(UD(o.target.checked)),{t:r}=Ie();return a.jsx(qn,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}function vle(){const e=z(i=>i.generation.seed),t=z(i=>i.generation.shouldRandomizeSeed),n=z(i=>i.generation.shouldGenerateVariations),{t:r}=Ie(),o=se(),s=i=>o(bh(i));return a.jsx(Tu,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:u3,max:d3,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e})}const ble=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function xle(){const e=se(),t=z(o=>o.generation.shouldRandomizeSeed),{t:n}=Ie(),r=()=>e(bh(ble(u3,d3)));return a.jsx(tt,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:a.jsx(IJ,{})})}const yle=()=>{const e=se(),{t}=Ie(),n=z(o=>o.generation.shouldRandomizeSeed),r=o=>e(GD(o.target.checked));return a.jsx(qn,{label:t("common.random"),isChecked:n,onChange:r})},wle=u.memo(yle),Cle=()=>a.jsxs($,{sx:{gap:3,alignItems:"flex-end"},children:[a.jsx(vle,{}),a.jsx(xle,{}),a.jsx(wle,{})]}),Ma=u.memo(Cle),AM=e=>a.jsxs($,{sx:{flexDir:"column",gap:2,bg:"base.100",px:4,pt:2,pb:4,borderRadius:"base",_dark:{bg:"base.750"}},children:[e.label&&a.jsx(Ee,{fontSize:"sm",fontWeight:"bold",sx:{color:"base.600",_dark:{color:"base.300"}},children:e.label}),e.children]});AM.displayName="SubSettingsWrapper";const wu=u.memo(AM),Sle=le([ke],({sdxl:e})=>{const{sdxlImg2ImgDenoisingStrength:t}=e;return{sdxlImg2ImgDenoisingStrength:t}},Oe),kle=()=>{const{sdxlImg2ImgDenoisingStrength:e}=z(Sle),t=se(),{t:n}=Ie(),r=u.useCallback(s=>t(gC(s)),[t]),o=u.useCallback(()=>{t(gC(.7))},[t]);return a.jsx(wu,{children:a.jsx(jt,{label:`${n("parameters.denoisingStrength")}`,step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0})})},NM=u.memo(kle),jle=le([fx,ta],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Oe),_le=()=>{const{shouldUseSliders:e,activeLabel:t}=z(jle);return a.jsx(wo,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{})]}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]}),a.jsx(NM,{}),a.jsx(DM,{})]})})},Ple=u.memo(_le),Ile=()=>a.jsxs(a.Fragment,{children:[a.jsx(a2,{}),a.jsx(Ple,{}),a.jsx(i2,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(Af,{}),a.jsx(zu,{})]}),Ele=u.memo(Ile),Ole=le(ke,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Oe),Mle=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Ole);return a.jsx(wo,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsx($,{sx:{flexDirection:"column",gap:3},children:e?a.jsxs(a.Fragment,{children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{})]}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]})})})},TM=u.memo(Mle),Rle=()=>a.jsxs(a.Fragment,{children:[a.jsx(a2,{}),a.jsx(TM,{}),a.jsx(i2,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(Af,{}),a.jsx(zu,{})]}),Dle=u.memo(Rle),Ale=()=>{const e=se(),t=z(r=>r.generation.canvasCoherenceSteps),{t:n}=Ie();return a.jsx(jt,{label:n("parameters.coherenceSteps"),min:1,max:100,step:1,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(vC(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(vC(20))}})},Nle=u.memo(Ale),Tle=()=>{const e=se(),t=z(r=>r.generation.canvasCoherenceStrength),{t:n}=Ie();return a.jsx(jt,{label:n("parameters.coherenceStrength"),min:0,max:1,step:.01,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(bC(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(bC(.3))}})},$le=u.memo(Tle);function Lle(){const e=se(),t=z(r=>r.generation.maskBlur),{t:n}=Ie();return a.jsx(jt,{label:n("parameters.maskBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(xC(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(xC(16))}})}const Fle=[{label:"Box Blur",value:"box"},{label:"Gaussian Blur",value:"gaussian"}];function zle(){const e=z(o=>o.generation.maskBlurMethod),t=se(),{t:n}=Ie(),r=o=>{o&&t(qD(o))};return a.jsx(Zr,{value:e,onChange:r,label:n("parameters.maskBlurMethod"),data:Fle})}const Ble=()=>{const{t:e}=Ie();return a.jsx(wo,{label:e("parameters.compositingSettingsHeader"),children:a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsxs(wu,{label:e("parameters.maskAdjustmentsHeader"),children:[a.jsx(Lle,{}),a.jsx(zle,{})]}),a.jsx(Ko,{}),a.jsxs(wu,{label:e("parameters.coherencePassHeader"),children:[a.jsx(Nle,{}),a.jsx($le,{})]})]})})},$M=u.memo(Ble),Hle=le([ke],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},Oe),Wle=()=>{const e=se(),{infillMethod:t}=z(Hle),{data:n,isLoading:r}=q_(),o=n==null?void 0:n.infill_methods.filter(c=>c!=="lama"),{t:s}=Ie(),i=u.useCallback(c=>{e(KD(c))},[e]);return a.jsx(Zr,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:i})},Vle=u.memo(Wle),Ule=le([ta],e=>{const{tileSize:t,infillMethod:n}=e;return{tileSize:t,infillMethod:n}},Oe),Gle=()=>{const e=se(),{tileSize:t,infillMethod:n}=z(Ule),{t:r}=Ie(),o=u.useCallback(i=>{e(yC(i))},[e]),s=u.useCallback(()=>{e(yC(32))},[e]);return a.jsx(jt,{isDisabled:n!=="tile",label:r("parameters.tileSize"),min:16,max:64,sliderNumberInputProps:{max:256},value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},qle=u.memo(Gle),An=e=>e.canvas,ks=le([An,jr,Cs],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),Kle=le([An],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},Oe),Xle=()=>{const e=se(),{boundingBoxScale:t}=z(Kle),{t:n}=Ie(),r=o=>{e(QD(o))};return a.jsx(Kn,{label:n("parameters.scaleBeforeProcessing"),data:XD,value:t,onChange:r})},Qle=u.memo(Xle),Yle=le([ta,An],(e,t)=>{const{scaledBoundingBoxDimensions:n,boundingBoxScaleMethod:r}=t,{model:o}=e;return{model:o,scaledBoundingBoxDimensions:n,isManual:r==="manual"}},Oe),Jle=()=>{const e=se(),{model:t,isManual:n,scaledBoundingBoxDimensions:r}=z(Yle),o=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:s}=Ie(),i=f=>{e(Ch({...r,height:Math.floor(f)}))},c=()=>{e(Ch({...r,height:Math.floor(o)}))};return a.jsx(jt,{isDisabled:!n,label:s("parameters.scaledHeight"),min:64,max:1536,step:64,value:r.height,onChange:i,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:c})},Zle=u.memo(Jle),ece=le([An,ta],(e,t)=>{const{boundingBoxScaleMethod:n,scaledBoundingBoxDimensions:r}=e,{model:o}=t;return{model:o,scaledBoundingBoxDimensions:r,isManual:n==="manual"}},Oe),tce=()=>{const e=se(),{model:t,isManual:n,scaledBoundingBoxDimensions:r}=z(ece),o=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:s}=Ie(),i=f=>{e(Ch({...r,width:Math.floor(f)}))},c=()=>{e(Ch({...r,width:Math.floor(o)}))};return a.jsx(jt,{isDisabled:!n,label:s("parameters.scaledWidth"),min:64,max:1536,step:64,value:r.width,onChange:i,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:c})},nce=u.memo(tce),rce=()=>{const{t:e}=Ie();return a.jsx(wo,{label:e("parameters.infillScalingHeader"),children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsxs(wu,{children:[a.jsx(Vle,{}),a.jsx(qle,{})]}),a.jsx(Ko,{}),a.jsxs(wu,{children:[a.jsx(Qle,{}),a.jsx(nce,{}),a.jsx(Zle,{})]})]})})},LM=u.memo(rce),oce=le([ke,ks],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},Oe),sce=()=>{const e=se(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=z(oce),{t:s}=Ie(),i=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,c=p=>{if(e(Ls({...n,height:Math.floor(p)})),o){const h=zs(p*o,64);e(Ls({width:h,height:Math.floor(p)}))}},f=()=>{if(e(Ls({...n,height:Math.floor(i)})),o){const p=zs(i*o,64);e(Ls({width:p,height:Math.floor(i)}))}};return a.jsx(jt,{label:s("parameters.boundingBoxHeight"),min:64,max:1536,step:64,value:n.height,onChange:c,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},ace=u.memo(sce),ice=le([ke,ks],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},Oe),lce=()=>{const e=se(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=z(ice),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Ie(),c=p=>{if(e(Ls({...n,width:Math.floor(p)})),o){const h=zs(p/o,64);e(Ls({width:Math.floor(p),height:h}))}},f=()=>{if(e(Ls({...n,width:Math.floor(s)})),o){const p=zs(s/o,64);e(Ls({width:Math.floor(s),height:p}))}};return a.jsx(jt,{label:i("parameters.boundingBoxWidth"),min:64,max:1536,step:64,value:n.width,onChange:c,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:f})},cce=u.memo(lce),uce=le([ta,An],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r}=e,{boundingBoxDimensions:o}=t;return{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,boundingBoxDimensions:o}});function Tm(){const e=se(),{t}=Ie(),{shouldLockAspectRatio:n,boundingBoxDimensions:r}=z(uce),o=u.useCallback(()=>{n?(e($d(!1)),MM.includes(r.width/r.height)?e(As(r.width/r.height)):e(As(null))):(e($d(!0)),e(As(r.width/r.height)))},[n,r,e]),s=u.useCallback(()=>{e(YD()),e(As(null)),n&&e(As(r.height/r.width))},[e,n,r]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.100",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(Ee,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),a.jsx(Qi,{}),a.jsx(RM,{}),a.jsx(tt,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:a.jsx(GO,{}),fontSize:20,onClick:s}),a.jsx(tt,{tooltip:t("ui.lockRatio"),"aria-label":t("ui.lockRatio"),size:"sm",icon:a.jsx(BE,{}),isChecked:n,onClick:o})]}),a.jsx(cce,{}),a.jsx(ace,{})]})}const dce=le(ke,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Oe),fce=()=>{const{shouldUseSliders:e,activeLabel:t}=z(dce);return a.jsx(wo,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(Tm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{})]}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(Tm,{})]}),a.jsx(NM,{})]})})},pce=u.memo(fce);function hce(){return a.jsxs(a.Fragment,{children:[a.jsx(a2,{}),a.jsx(pce,{}),a.jsx(i2,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(Af,{}),a.jsx(LM,{}),a.jsx($M,{}),a.jsx(zu,{})]})}function mce(){const e=z(f=>f.generation.clipSkip),{model:t}=z(f=>f.generation),n=se(),{t:r}=Ie(),o=u.useCallback(f=>{n(wC(f))},[n]),s=u.useCallback(()=>{n(wC(0))},[n]),i=u.useMemo(()=>t?wp[t.base_model].maxClip:wp["sd-1"].maxClip,[t]),c=u.useMemo(()=>t?wp[t.base_model].markers:wp["sd-1"].markers,[t]);return a.jsx(jt,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:i,step:1,value:e,onChange:o,withSliderMarks:!0,sliderMarks:c,withInput:!0,withReset:!0,handleReset:s})}const gce=le(ke,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),Oe);function l2(){const{activeLabel:e}=z(gce);return z(n=>n.generation.shouldShowAdvancedOptions)?a.jsx(wo,{label:"Advanced",activeLabel:e,children:a.jsx($,{sx:{flexDir:"column",gap:2},children:a.jsx(mce,{})})}):null}function c2(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(IM,{}),a.jsx(PM,{})]})}function vce(){const e=z(o=>o.generation.horizontalSymmetrySteps),t=z(o=>o.generation.steps),n=se(),{t:r}=Ie();return a.jsx(jt,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(CC(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(CC(0))})}function bce(){const e=z(o=>o.generation.verticalSymmetrySteps),t=z(o=>o.generation.steps),n=se(),{t:r}=Ie();return a.jsx(jt,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(SC(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(SC(0))})}function xce(){const e=z(n=>n.generation.shouldUseSymmetry),t=se();return a.jsx(qn,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(JD(n.target.checked))})}const yce=le(ke,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),Oe),wce=()=>{const{t:e}=Ie(),{activeLabel:t}=z(yce);return Yn("symmetry").isFeatureEnabled?a.jsx(wo,{label:e("parameters.symmetry"),activeLabel:t,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(xce,{}),a.jsx(vce,{}),a.jsx(bce,{})]})}):null},u2=u.memo(wce),Cce=le([ke],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:i,fineStep:c,coarseStep:f}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?c:f;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:i,step:h}},Oe),Sce=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=z(Cce),i=se(),{t:c}=Ie(),f=u.useCallback(h=>i(wh(h)),[i]),p=u.useCallback(()=>{i(wh(t))},[i,t]);return a.jsx(wu,{children:a.jsx(jt,{label:`${c("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:f,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})})},FM=u.memo(Sce),kce=le([fx,ta],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Oe),jce=()=>{const{shouldUseSliders:e,activeLabel:t}=z(kce);return a.jsx(wo,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{})]}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(yu,{})]}),a.jsx(FM,{}),a.jsx(DM,{})]})})},_ce=u.memo(jce),Pce=()=>a.jsxs(a.Fragment,{children:[a.jsx(c2,{}),a.jsx(_ce,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(Af,{}),a.jsx(u2,{}),a.jsx(zu,{}),a.jsx(l2,{})]}),Ice=u.memo(Pce),Ece=()=>a.jsxs(a.Fragment,{children:[a.jsx(c2,{}),a.jsx(TM,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(Af,{}),a.jsx(u2,{}),a.jsx(zu,{}),a.jsx(l2,{})]}),Oce=u.memo(Ece),Mce=le(ke,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},Oe),Rce=()=>{const{shouldUseSliders:e,activeLabel:t}=z(Mce);return a.jsx(wo,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(Tm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(Ia,{}),a.jsx(Oa,{}),a.jsx(Pa,{})]}),a.jsx(Ea,{}),a.jsx(Fe,{pt:2,children:a.jsx(Ma,{})}),a.jsx(Tm,{})]}),a.jsx(FM,{})]})})},Dce=u.memo(Rce),Ace=()=>a.jsxs(a.Fragment,{children:[a.jsx(c2,{}),a.jsx(Dce,{}),a.jsx(Fu,{}),a.jsx(Lu,{}),a.jsx($u,{}),a.jsx(u2,{}),a.jsx(LM,{}),a.jsx($M,{}),a.jsx(zu,{}),a.jsx(l2,{})]}),Nce=u.memo(Ace),Tce=()=>{const e=z(jr),t=z(n=>n.generation.model);return e==="txt2img"?a.jsx(mh,{children:t&&t.base_model==="sdxl"?a.jsx(Dle,{}):a.jsx(Oce,{})}):e==="img2img"?a.jsx(mh,{children:t&&t.base_model==="sdxl"?a.jsx(Ele,{}):a.jsx(Ice,{})}):e==="unifiedCanvas"?a.jsx(mh,{children:t&&t.base_model==="sdxl"?a.jsx(hce,{}):a.jsx(Nce,{})}):null},$ce=u.memo(Tce),mh=u.memo(e=>a.jsxs($,{sx:{w:"full",h:"full",flexDir:"column",gap:2},children:[a.jsx(YO,{}),a.jsx($,{layerStyle:"first",sx:{w:"full",h:"full",position:"relative",borderRadius:"base",p:2},children:a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Fe,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx($g,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:800,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:a.jsx($,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:e.children})})})})})]}));mh.displayName="ParametersPanelWrapper";const Lce=le([ke],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},Oe),Fce=()=>{const{initialImage:e}=z(Lce),{currentData:t}=qo((e==null?void 0:e.imageName)??Yo.skipToken),n=u.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),r=u.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return a.jsx(ii,{imageDTO:t,droppableData:r,draggableData:n,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:a.jsx(lo,{label:"No initial image selected"})})},zce=u.memo(Fce),Bce=le([ke],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},Oe),Hce={type:"SET_INITIAL_IMAGE"},Wce=()=>{const{isResetButtonDisabled:e}=z(Bce),t=se(),{getUploadButtonProps:n,getUploadInputProps:r}=Ky({postUploadAction:Hce}),o=u.useCallback(()=>{t(ZD())},[t]);return a.jsxs($,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:2,gap:4},children:[a.jsxs($,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[a.jsx(Ee,{sx:{ps:2,fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),a.jsx(Qi,{}),a.jsx(tt,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:a.jsx(Mg,{}),...n()}),a.jsx(tt,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:a.jsx(Og,{}),onClick:o,isDisabled:e})]}),a.jsx(zce,{}),a.jsx("input",{...r()})]})},Vce=u.memo(Wce),Uce=le([ke],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),Gce=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=Ie(),o=z(Uce);return a.jsx(tt,{onClick:t,icon:a.jsx(Jo,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},qce=[{label:"RealESRGAN x2 Plus",value:"RealESRGAN_x2plus.pth",tooltip:"Attempts to retain sharpness, low smoothing",group:"x2 Upscalers"},{label:"RealESRGAN x4 Plus",value:"RealESRGAN_x4plus.pth",tooltip:"Best for photos and highly detailed images, medium smoothing",group:"x4 Upscalers"},{label:"RealESRGAN x4 Plus (anime 6B)",value:"RealESRGAN_x4plus_anime_6B.pth",tooltip:"Best for anime/manga, high smoothing",group:"x4 Upscalers"},{label:"ESRGAN SRx4",value:"ESRGAN_SRx4_DF2KOST_official-ff704c30.pth",tooltip:"Retains sharpness, low smoothing",group:"x4 Upscalers"}];function Kce(){const e=z(r=>r.postprocessing.esrganModelName),t=se(),n=r=>t(eA(r));return a.jsx(Zr,{label:"ESRGAN Model",value:e,itemComponent:tl,onChange:n,data:qce})}const Xce=e=>{const{imageDTO:t}=e,n=se(),r=z(Or),{t:o}=Ie(),{isOpen:s,onOpen:i,onClose:c}=Ao(),f=u.useCallback(()=>{c(),t&&n(f3({image_name:t.image_name}))},[n,t,c]);return a.jsx(Rf,{isOpen:s,onClose:c,triggerComponent:a.jsx(tt,{onClick:i,icon:a.jsx(hJ,{}),"aria-label":o("parameters.upscale")}),children:a.jsxs($,{sx:{flexDirection:"column",gap:4},children:[a.jsx(Kce,{}),a.jsx(Wt,{size:"sm",isDisabled:!t||r,onClick:f,children:o("parameters.upscaleImage")})]})})},Qce=u.memo(Xce),Yce=le([ke,jr],({gallery:e,system:t,ui:n},r)=>{const{isProcessing:o,isConnected:s,shouldConfirmOnDelete:i,progressImage:c}=t,{shouldShowImageDetails:f,shouldHidePreview:p,shouldShowProgressInViewer:h}=n,m=e.selection[e.selection.length-1];return{canDeleteImage:s&&!o,shouldConfirmOnDelete:i,isProcessing:o,isConnected:s,shouldDisableToolbarButtons:!!c||!m,shouldShowImageDetails:f,activeTabName:r,shouldHidePreview:p,shouldShowProgressInViewer:h,lastSelectedImage:m}},{memoizeOptions:{resultEqualityCheck:mn}}),Jce=e=>{const t=se(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:i,shouldShowProgressInViewer:c}=z(Yce),f=Yn("upscaling").isFeatureEnabled,p=Kl(),{t:h}=Ie(),{recallBothPrompts:m,recallSeed:v,recallAllParameters:b}=Ug(),{currentData:y}=qo((i==null?void 0:i.image_name)??Yo.skipToken),{metadata:x,workflow:C,isLoading:k}=ox((i==null?void 0:i.image_name)??Yo.skipToken,{selectFromResult:T=>{var K,B;return{isLoading:T.isFetching,metadata:(K=T==null?void 0:T.currentData)==null?void 0:K.metadata,workflow:(B=T==null?void 0:T.currentData)==null?void 0:B.workflow}}}),j=u.useCallback(()=>{C&&(t(ix(C)),t(va("nodes")),t(Cn(_n({title:"Workflow Loaded",status:"success"}))))},[t,C]),_=u.useCallback(()=>{b(x)},[x,b]);St("a",()=>{},[x,b]);const I=u.useCallback(()=>{v(x==null?void 0:x.seed)},[x==null?void 0:x.seed,v]);St("s",I,[y]);const O=u.useCallback(()=>{m(x==null?void 0:x.positive_prompt,x==null?void 0:x.negative_prompt,x==null?void 0:x.positive_style_prompt,x==null?void 0:x.negative_style_prompt)},[x==null?void 0:x.negative_prompt,x==null?void 0:x.positive_prompt,x==null?void 0:x.positive_style_prompt,x==null?void 0:x.negative_style_prompt,m]);St("p",O,[y]),St("w",j,[C]);const E=u.useCallback(()=>{t(qO()),t(Hm(y))},[t,y]);St("shift+i",E,[y]);const M=u.useCallback(()=>{y&&t(f3({image_name:y.image_name}))},[t,y]),R=u.useCallback(()=>{y&&t(Wm([y]))},[t,y]);St("Shift+U",()=>{M()},{enabled:()=>!!(f&&!o&&r&&!n)},[f,y,o,r,n]);const A=u.useCallback(()=>t(tA(!s)),[t,s]);St("i",()=>{y?A():p({title:h("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[y,s,p]),St("delete",()=>{R()},[t,y]);const D=u.useCallback(()=>{t(K_(!c))},[t,c]);return a.jsx(a.Fragment,{children:a.jsxs($,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[a.jsx(vr,{isAttached:!0,isDisabled:o,children:a.jsxs(yf,{children:[a.jsx(wf,{as:tt,"aria-label":`${h("parameters.sendTo")}...`,tooltip:`${h("parameters.sendTo")}...`,isDisabled:!y,icon:a.jsx(DJ,{})}),a.jsx(Ui,{motionProps:au,children:y&&a.jsx(KO,{imageDTO:y})})]})}),a.jsxs(vr,{isAttached:!0,isDisabled:o,children:[a.jsx(tt,{isLoading:k,icon:a.jsx(Gg,{}),tooltip:`${h("nodes.loadWorkflow")} (W)`,"aria-label":`${h("nodes.loadWorkflow")} (W)`,isDisabled:!C,onClick:j}),a.jsx(tt,{isLoading:k,icon:a.jsx(WE,{}),tooltip:`${h("parameters.usePrompt")} (P)`,"aria-label":`${h("parameters.usePrompt")} (P)`,isDisabled:!(x!=null&&x.positive_prompt),onClick:O}),a.jsx(tt,{isLoading:k,icon:a.jsx(VE,{}),tooltip:`${h("parameters.useSeed")} (S)`,"aria-label":`${h("parameters.useSeed")} (S)`,isDisabled:!(x!=null&&x.seed),onClick:I}),a.jsx(tt,{isLoading:k,icon:a.jsx(DE,{}),tooltip:`${h("parameters.useAll")} (A)`,"aria-label":`${h("parameters.useAll")} (A)`,isDisabled:!x,onClick:_})]}),f&&a.jsx(vr,{isAttached:!0,isDisabled:o,children:f&&a.jsx(Qce,{imageDTO:y})}),a.jsx(vr,{isAttached:!0,isDisabled:o,children:a.jsx(tt,{icon:a.jsx(NE,{}),tooltip:`${h("parameters.info")} (I)`,"aria-label":`${h("parameters.info")} (I)`,isChecked:s,onClick:A})}),a.jsx(vr,{isAttached:!0,children:a.jsx(tt,{"aria-label":h("settings.displayInProgress"),tooltip:h("settings.displayInProgress"),icon:a.jsx(wJ,{}),isChecked:c,onClick:D})}),a.jsx(vr,{isAttached:!0,children:a.jsx(Gce,{onClick:R,isDisabled:o})})]})})},Zce=u.memo(Jce),eue=le([ke,lx],(e,t)=>{var j,_;const{data:n,status:r}=nA.endpoints.listImages.select(t)(e),{data:o}=e.gallery.galleryView==="images"?kC.endpoints.getBoardImagesTotal.select(t.board_id??"none")(e):kC.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(e),s=e.gallery.selection[e.gallery.selection.length-1],i=r==="pending";if(!n||!s||o===0)return{isFetching:i,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const c={...t,offset:n.ids.length,limit:o3},f=rA.getSelectors(),p=f.selectAll(n),h=p.findIndex(I=>I.image_name===s.image_name),m=El(h+1,0,p.length-1),v=El(h-1,0,p.length-1),b=(j=p[m])==null?void 0:j.image_name,y=(_=p[v])==null?void 0:_.image_name,x=b?f.selectById(n,b):void 0,C=y?f.selectById(n,y):void 0,k=p.length;return{loadedImagesCount:p.length,currentImageIndex:h,areMoreImagesAvailable:(o??0)>k,isFetching:r==="pending",nextImage:x,prevImage:C,queryArgs:c}},{memoizeOptions:{resultEqualityCheck:mn}}),zM=()=>{const e=se(),{nextImage:t,prevImage:n,areMoreImagesAvailable:r,isFetching:o,queryArgs:s,loadedImagesCount:i,currentImageIndex:c}=z(eue),f=u.useCallback(()=>{n&&e(jC(n))},[e,n]),p=u.useCallback(()=>{t&&e(jC(t))},[e,t]),[h]=r3(),m=u.useCallback(()=>{h(s)},[h,s]);return{handlePrevImage:f,handleNextImage:p,isOnFirstImage:c===0,isOnLastImage:c!==void 0&&c===i-1,nextImage:t,prevImage:n,areMoreImagesAvailable:r,handleLoadMoreImages:m,isFetching:o}};function tue(e){return Je({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 nue=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:i}=Ie();return t?a.jsxs($,{gap:2,children:[n&&a.jsx(Mn,{label:`Recall ${e}`,children:a.jsx(wa,{"aria-label":i("accessibility.useThisParameter"),icon:a.jsx(tue,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&a.jsx(Mn,{label:`Copy ${e}`,children:a.jsx(wa,{"aria-label":`Copy ${e}`,icon:a.jsx(Du,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),a.jsxs($,{direction:o?"column":"row",children:[a.jsxs(Ee,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?a.jsxs(rg,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",a.jsx(_O,{mx:"2px"})]}):a.jsx(Ee,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},is=u.memo(nue),rue=e=>{const{metadata:t}=e,{recallPositivePrompt:n,recallNegativePrompt:r,recallSeed:o,recallCfgScale:s,recallModel:i,recallScheduler:c,recallSteps:f,recallWidth:p,recallHeight:h,recallStrength:m}=Ug(),v=u.useCallback(()=>{n(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,n]),b=u.useCallback(()=>{r(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,r]),y=u.useCallback(()=>{o(t==null?void 0:t.seed)},[t==null?void 0:t.seed,o]),x=u.useCallback(()=>{i(t==null?void 0:t.model)},[t==null?void 0:t.model,i]),C=u.useCallback(()=>{p(t==null?void 0:t.width)},[t==null?void 0:t.width,p]),k=u.useCallback(()=>{h(t==null?void 0:t.height)},[t==null?void 0:t.height,h]),j=u.useCallback(()=>{c(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,c]),_=u.useCallback(()=>{f(t==null?void 0:t.steps)},[t==null?void 0:t.steps,f]),I=u.useCallback(()=>{s(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,s]),O=u.useCallback(()=>{m(t==null?void 0:t.strength)},[t==null?void 0:t.strength,m]);return!t||Object.keys(t).length===0?null:a.jsxs(a.Fragment,{children:[t.created_by&&a.jsx(is,{label:"Created By",value:t.created_by}),t.generation_mode&&a.jsx(is,{label:"Generation Mode",value:t.generation_mode}),t.positive_prompt&&a.jsx(is,{label:"Positive Prompt",labelPosition:"top",value:t.positive_prompt,onClick:v}),t.negative_prompt&&a.jsx(is,{label:"Negative Prompt",labelPosition:"top",value:t.negative_prompt,onClick:b}),t.seed!==void 0&&t.seed!==null&&a.jsx(is,{label:"Seed",value:t.seed,onClick:y}),t.model!==void 0&&t.model!==null&&a.jsx(is,{label:"Model",value:t.model.model_name,onClick:x}),t.width&&a.jsx(is,{label:"Width",value:t.width,onClick:C}),t.height&&a.jsx(is,{label:"Height",value:t.height,onClick:k}),t.scheduler&&a.jsx(is,{label:"Scheduler",value:t.scheduler,onClick:j}),t.steps&&a.jsx(is,{label:"Steps",value:t.steps,onClick:_}),t.cfg_scale!==void 0&&t.cfg_scale!==null&&a.jsx(is,{label:"CFG scale",value:t.cfg_scale,onClick:I}),t.strength&&a.jsx(is,{label:"Image to image strength",value:t.strength,onClick:O})]})},oue=u.memo(rue),sue=({image:e})=>{const{metadata:t,workflow:n}=ox(e.image_name,{selectFromResult:r=>{var o,s;return{metadata:(o=r==null?void 0:r.currentData)==null?void 0:o.metadata,workflow:(s=r==null?void 0:r.currentData)==null?void 0:s.workflow}}});return a.jsxs($,{layerStyle:"first",sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",borderRadius:"base",position:"absolute",overflow:"hidden"},children:[a.jsxs($,{gap:2,children:[a.jsx(Ee,{fontWeight:"semibold",children:"File:"}),a.jsxs(rg,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,a.jsx(_O,{mx:"2px"})]})]}),a.jsx(oue,{metadata:t}),a.jsxs(Gl,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(ql,{children:[a.jsx(Ro,{children:"Metadata"}),a.jsx(Ro,{children:"Image Details"}),a.jsx(Ro,{children:"Workflow"})]}),a.jsxs(Ou,{children:[a.jsx(bs,{children:t?a.jsx(Pl,{data:t,label:"Metadata"}):a.jsx(lo,{label:"No metadata found"})}),a.jsx(bs,{children:e?a.jsx(Pl,{data:e,label:"Image Details"}):a.jsx(lo,{label:"No image details found"})}),a.jsx(bs,{children:n?a.jsx(Pl,{data:n,label:"Workflow"}):a.jsx(lo,{label:"No workflow found"})})]})]})]})},aue=u.memo(sue),u1={color:"base.100",pointerEvents:"auto"},iue=()=>{const{t:e}=Ie(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:i,isFetching:c}=zM();return a.jsxs(Fe,{sx:{position:"relative",height:"100%",width:"100%"},children:[a.jsx(Fe,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&a.jsx(wa,{"aria-label":e("accessibility.previousImage"),icon:a.jsx(eJ,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:u1})}),a.jsxs(Fe,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&a.jsx(wa,{"aria-label":e("accessibility.nextImage"),icon:a.jsx(tJ,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:u1}),o&&i&&!c&&a.jsx(wa,{"aria-label":e("accessibility.loadMore"),icon:a.jsx(ZY,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:u1}),o&&i&&c&&a.jsx($,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:a.jsx(Wl,{opacity:.5,size:"xl"})})]})]})},BM=u.memo(iue),lue=le([ke,oA],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:i,shouldAntialiasProgressImage:c}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n==null?void 0:n.image_name,progressImage:i,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:c}},{memoizeOptions:{resultEqualityCheck:mn}}),cue=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=z(lue),{handlePrevImage:s,handleNextImage:i,isOnLastImage:c,handleLoadMoreImages:f,areMoreImagesAvailable:p,isFetching:h}=zM();St("left",()=>{s()},[s]),St("right",()=>{if(c&&p&&!h){f();return}c||i()},[c,p,f,h,i]);const{currentData:m}=qo(t??Yo.skipToken),v=u.useMemo(()=>{if(m)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:m}}},[m]),b=u.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[y,x]=u.useState(!1),C=u.useRef(0),k=u.useCallback(()=>{x(!0),window.clearTimeout(C.current)},[]),j=u.useCallback(()=>{C.current=window.setTimeout(()=>{x(!1)},500)},[]);return a.jsxs($,{onMouseOver:k,onMouseOut:j,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?a.jsx(Vl,{src:n.dataURL,width:n.width,height:n.height,draggable:!1,sx:{objectFit:"contain",maxWidth:"full",maxHeight:"full",height:"auto",position:"absolute",borderRadius:"base",imageRendering:o?"auto":"pixelated"}}):a.jsx(ii,{imageDTO:m,droppableData:b,draggableData:v,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:"Set as Current Image",noContentFallback:a.jsx(lo,{icon:Fl,label:"No image selected"})}),e&&m&&a.jsx(Fe,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:a.jsx(aue,{image:m})}),a.jsx(co,{children:!e&&m&&y&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:"0",width:"100%",height:"100%",pointerEvents:"none"},children:a.jsx(BM,{})},"nextPrevButtons")})]})},uue=u.memo(cue),due=()=>a.jsxs($,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[a.jsx(Zce,{}),a.jsx(uue,{})]}),fue=u.memo(due),pue=()=>a.jsx(Fe,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:2,borderRadius:"base"},children:a.jsx($,{sx:{width:"100%",height:"100%"},children:a.jsx(fue,{})})}),HM=u.memo(pue),hue=()=>{const e=u.useRef(null),t=u.useCallback(()=>{e.current&&e.current.setLayout([50,50])},[]),n=e2();return a.jsx(Fe,{sx:{w:"full",h:"full"},children:a.jsxs(Xg,{ref:e,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},storage:n,units:"percentages",children:[a.jsx(Wi,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:a.jsx(Vce,{})}),a.jsx(Am,{onDoubleClick:t}),a.jsx(Wi,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,children:a.jsx(HM,{})})]})})},mue=u.memo(hue);var gue=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,o,s;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(o=r;o--!==0;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(s=Object.keys(t),r=s.length,r!==Object.keys(n).length)return!1;for(o=r;o--!==0;)if(!Object.prototype.hasOwnProperty.call(n,s[o]))return!1;for(o=r;o--!==0;){var i=s[o];if(!e(t[i],n[i]))return!1}return!0}return t!==t&&n!==n};const Qj=Cu(gue);function zb(e){return e===null||typeof e!="object"?{}:Object.keys(e).reduce((t,n)=>{const r=e[n];return r!=null&&r!==!1&&(t[n]=r),t},{})}var vue=Object.defineProperty,Yj=Object.getOwnPropertySymbols,bue=Object.prototype.hasOwnProperty,xue=Object.prototype.propertyIsEnumerable,Jj=(e,t,n)=>t in e?vue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yue=(e,t)=>{for(var n in t||(t={}))bue.call(t,n)&&Jj(e,n,t[n]);if(Yj)for(var n of Yj(t))xue.call(t,n)&&Jj(e,n,t[n]);return e};function WM(e,t){if(t===null||typeof t!="object")return{};const n=yue({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const wue="__MANTINE_FORM_INDEX__";function Zj(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${wue}`)):!1:!1}function e_(e,t,n){typeof n.value=="object"&&(n.value=Lc(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function Lc(e){if(typeof e!="object")return e;var t=0,n,r,o,s=Object.prototype.toString.call(e);if(s==="[object Object]"?o=Object.create(e.__proto__||null):s==="[object Array]"?o=Array(e.length):s==="[object Set]"?(o=new Set,e.forEach(function(i){o.add(Lc(i))})):s==="[object Map]"?(o=new Map,e.forEach(function(i,c){o.set(Lc(c),Lc(i))})):s==="[object Date]"?o=new Date(+e):s==="[object RegExp]"?o=new RegExp(e.source,e.flags):s==="[object DataView]"?o=new e.constructor(Lc(e.buffer)):s==="[object ArrayBuffer]"?o=e.slice(0):s.slice(-6)==="Array]"&&(o=new e.constructor(e)),o){for(r=Object.getOwnPropertySymbols(e);t0,errors:t}}function Bb(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const i=e[s],c=`${n===""?"":`${n}.`}${s}`,f=Xa(c,t);let p=!1;return typeof i=="function"&&(o[c]=i(f,t,c)),typeof i=="object"&&Array.isArray(f)&&(p=!0,f.forEach((h,m)=>Bb(i,t,`${c}.${m}`,o))),typeof i=="object"&&typeof f=="object"&&f!==null&&(p||Bb(i,t,c,o)),o},r)}function Hb(e,t){return t_(typeof e=="function"?e(t):Bb(e,t))}function rh(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=Hb(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((i,c)=>i===s.split(".")[c]));return{hasError:!!o,error:o?r.errors[o]:null}}function Cue(e,{from:t,to:n},r){const o=Xa(e,r);if(!Array.isArray(o))return r;const s=[...o],i=o[t];return s.splice(t,1),s.splice(n,0,i),n0(e,s,r)}var Sue=Object.defineProperty,n_=Object.getOwnPropertySymbols,kue=Object.prototype.hasOwnProperty,jue=Object.prototype.propertyIsEnumerable,r_=(e,t,n)=>t in e?Sue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_ue=(e,t)=>{for(var n in t||(t={}))kue.call(t,n)&&r_(e,n,t[n]);if(n_)for(var n of n_(t))jue.call(t,n)&&r_(e,n,t[n]);return e};function Pue(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,i=_ue({},r);return Object.keys(r).every(c=>{let f,p;if(c.startsWith(o)&&(f=c,p=c.replace(o,s)),c.startsWith(s)&&(f=c.replace(s,o),p=c),f&&p){const h=i[f],m=i[p];return m===void 0?delete i[f]:i[f]=m,h===void 0?delete i[p]:i[p]=h,!1}return!0}),i}function Iue(e,t,n){const r=Xa(e,n);return Array.isArray(r)?n0(e,r.filter((o,s)=>s!==t),n):n}var Eue=Object.defineProperty,o_=Object.getOwnPropertySymbols,Oue=Object.prototype.hasOwnProperty,Mue=Object.prototype.propertyIsEnumerable,s_=(e,t,n)=>t in e?Eue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rue=(e,t)=>{for(var n in t||(t={}))Oue.call(t,n)&&s_(e,n,t[n]);if(o_)for(var n of o_(t))Mue.call(t,n)&&s_(e,n,t[n]);return e};function a_(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function i_(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=WM(`${o}.${t}`,s));const i=Rue({},s),c=new Set;return Object.entries(s).filter(([f])=>{if(!f.startsWith(`${o}.`))return!1;const p=a_(f,o);return Number.isNaN(p)?!1:p>=t}).forEach(([f,p])=>{const h=a_(f,o),m=f.replace(`${o}.${h}`,`${o}.${h+r}`);i[m]=p,c.add(m),c.has(f)||delete i[f]}),i}function Due(e,t,n,r){const o=Xa(e,r);if(!Array.isArray(o))return r;const s=[...o];return s.splice(typeof n=="number"?n:s.length,0,t),n0(e,s,r)}function l_(e,t){const n=Object.keys(e);if(typeof t=="string"){const r=n.filter(o=>o.startsWith(`${t}.`));return e[t]||r.some(o=>e[o])||!1}return n.some(r=>e[r])}function Aue(e){return t=>{if(!t)e(t);else if(typeof t=="function")e(t);else if(typeof t=="object"&&"nativeEvent"in t){const{currentTarget:n}=t;n instanceof HTMLInputElement?n.type==="checkbox"?e(n.checked):e(n.value):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&e(n.value)}else e(t)}}var Nue=Object.defineProperty,Tue=Object.defineProperties,$ue=Object.getOwnPropertyDescriptors,c_=Object.getOwnPropertySymbols,Lue=Object.prototype.hasOwnProperty,Fue=Object.prototype.propertyIsEnumerable,u_=(e,t,n)=>t in e?Nue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ii=(e,t)=>{for(var n in t||(t={}))Lue.call(t,n)&&u_(e,n,t[n]);if(c_)for(var n of c_(t))Fue.call(t,n)&&u_(e,n,t[n]);return e},d1=(e,t)=>Tue(e,$ue(t));function ec({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:i=!1,transformValues:c=p=>p,validate:f}={}){const[p,h]=u.useState(r),[m,v]=u.useState(n),[b,y]=u.useState(e),[x,C]=u.useState(zb(t)),k=u.useRef(e),j=U=>{k.current=U},_=u.useCallback(()=>h({}),[]),I=U=>{const W=U?Ii(Ii({},b),U):b;j(W),v({})},O=u.useCallback(U=>C(W=>zb(typeof U=="function"?U(W):U)),[]),E=u.useCallback(()=>C({}),[]),M=u.useCallback(()=>{y(e),E(),j(e),v({}),_()},[]),R=u.useCallback((U,W)=>O(ne=>d1(Ii({},ne),{[U]:W})),[]),A=u.useCallback(U=>O(W=>{if(typeof U!="string")return W;const ne=Ii({},W);return delete ne[U],ne}),[]),D=u.useCallback(U=>v(W=>{if(typeof U!="string")return W;const ne=WM(U,W);return delete ne[U],ne}),[]),T=u.useCallback((U,W)=>{const ne=Zj(U,s);D(U),h(ie=>d1(Ii({},ie),{[U]:!0})),y(ie=>{const oe=n0(U,W,ie);if(ne){const me=rh(U,f,oe);me.hasError?R(U,me.error):A(U)}return oe}),!ne&&o&&R(U,null)},[]),K=u.useCallback(U=>{y(W=>{const ne=typeof U=="function"?U(W):U;return Ii(Ii({},W),ne)}),o&&E()},[]),B=u.useCallback((U,W)=>{D(U),y(ne=>Cue(U,W,ne)),C(ne=>Pue(U,W,ne))},[]),G=u.useCallback((U,W)=>{D(U),y(ne=>Iue(U,W,ne)),C(ne=>i_(U,W,ne,-1))},[]),Q=u.useCallback((U,W,ne)=>{D(U),y(ie=>Due(U,W,ne,ie)),C(ie=>i_(U,ne,ie,1))},[]),V=u.useCallback(()=>{const U=Hb(f,b);return C(U.errors),U},[b,f]),L=u.useCallback(U=>{const W=rh(U,f,b);return W.hasError?R(U,W.error):A(U),W},[b,f]),X=(U,{type:W="input",withError:ne=!0,withFocus:ie=!0}={})=>{const me={onChange:Aue(fe=>T(U,fe))};return ne&&(me.error=x[U]),W==="checkbox"?me.checked=Xa(U,b):me.value=Xa(U,b),ie&&(me.onFocus=()=>h(fe=>d1(Ii({},fe),{[U]:!0})),me.onBlur=()=>{if(Zj(U,i)){const fe=rh(U,f,b);fe.hasError?R(U,fe.error):A(U)}}),me},F=(U,W)=>ne=>{ne==null||ne.preventDefault();const ie=V();ie.hasErrors?W==null||W(ie.errors,b,ne):U==null||U(c(b),ne)},q=U=>c(U||b),te=u.useCallback(U=>{U.preventDefault(),M()},[]),Y=U=>{if(U){const ne=Xa(U,m);if(typeof ne=="boolean")return ne;const ie=Xa(U,b),oe=Xa(U,k.current);return!Qj(ie,oe)}return Object.keys(m).length>0?l_(m):!Qj(b,k.current)},ce=u.useCallback(U=>l_(p,U),[p]),ae=u.useCallback(U=>U?!rh(U,f,b).hasError:!Hb(f,b).hasErrors,[b,f]);return{values:b,errors:x,setValues:K,setErrors:O,setFieldValue:T,setFieldError:R,clearFieldError:A,clearErrors:E,reset:M,validate:V,validateField:L,reorderListItem:B,removeListItem:G,insertListItem:Q,getInputProps:X,onSubmit:F,onReset:te,isDirty:Y,isTouched:ce,setTouched:h,setDirty:v,resetTouched:_,resetDirty:I,isValid:ae,getTransformedValues:q}}function br(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:i,base700:c,base900:f,accent500:p,accent300:h}=Ef(),{colorMode:m}=di();return a.jsx(jE,{styles:()=>({input:{color:qe(f,r)(m),backgroundColor:qe(n,f)(m),borderColor:qe(o,i)(m),borderWidth:2,outline:"none",":focus":{borderColor:qe(h,p)(m)}},label:{color:qe(c,s)(m),fontWeight:"normal",marginBottom:4}}),...t})}const zue=[{value:"sd-1",label:xr["sd-1"]},{value:"sd-2",label:xr["sd-2"]},{value:"sdxl",label:xr.sdxl},{value:"sdxl-refiner",label:xr["sdxl-refiner"]}];function Nf(e){const{...t}=e,{t:n}=Ie();return a.jsx(Zr,{label:n("modelManager.baseModel"),data:zue,...t})}function UM(e){const{data:t}=p3(),{...n}=e;return a.jsx(Zr,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const Bue=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function r0(e){const{...t}=e,{t:n}=Ie();return a.jsx(Zr,{label:n("modelManager.variant"),data:Bue,...t})}function GM(e){var p;const{t}=Ie(),n=se(),{model_path:r}=e,o=ec({initialValues:{model_name:((p=r==null?void 0:r.split("\\").splice(-1)[0])==null?void 0:p.split(".")[0])??"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"checkpoint",error:void 0,vae:"",variant:"normal",config:"configs\\stable-diffusion\\v1-inference.yaml"}}),[s]=h3(),[i,c]=u.useState(!1),f=h=>{s({body:h}).unwrap().then(m=>{n(Cn(_n({title:`Model Added: ${h.model_name}`,status:"success"}))),o.reset(),r&&n(cf(null))}).catch(m=>{m&&n(Cn(_n({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:o.onSubmit(h=>f(h)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(br,{label:"Model Name",required:!0,...o.getInputProps("model_name")}),a.jsx(Nf,{...o.getInputProps("base_model")}),a.jsx(br,{label:"Model Location",required:!0,...o.getInputProps("path")}),a.jsx(br,{label:"Description",...o.getInputProps("description")}),a.jsx(br,{label:"VAE Location",...o.getInputProps("vae")}),a.jsx(r0,{...o.getInputProps("variant")}),a.jsxs($,{flexDirection:"column",width:"100%",gap:2,children:[i?a.jsx(br,{required:!0,label:"Custom Config File Location",...o.getInputProps("config")}):a.jsx(UM,{required:!0,width:"100%",...o.getInputProps("config")}),a.jsx(bo,{isChecked:i,onChange:()=>c(!i),label:"Use Custom Config"}),a.jsx(Wt,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function qM(e){const{t}=Ie(),n=se(),{model_path:r}=e,[o]=h3(),s=ec({initialValues:{model_name:(r==null?void 0:r.split("\\").splice(-1)[0])??"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"diffusers",error:void 0,vae:"",variant:"normal"}}),i=c=>{o({body:c}).unwrap().then(f=>{n(Cn(_n({title:`Model Added: ${c.model_name}`,status:"success"}))),s.reset(),r&&n(cf(null))}).catch(f=>{f&&n(Cn(_n({title:"Model Add Failed",status:"error"})))})};return a.jsx("form",{onSubmit:s.onSubmit(c=>i(c)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(br,{required:!0,label:"Model Name",...s.getInputProps("model_name")}),a.jsx(Nf,{...s.getInputProps("base_model")}),a.jsx(br,{required:!0,label:"Model Location",placeholder:"Provide the path to a local folder where your Diffusers Model is stored",...s.getInputProps("path")}),a.jsx(br,{label:"Description",...s.getInputProps("description")}),a.jsx(br,{label:"VAE Location",...s.getInputProps("vae")}),a.jsx(r0,{...s.getInputProps("variant")}),a.jsx(Wt,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const KM=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function Hue(){const[e,t]=u.useState("diffusers");return a.jsxs($,{flexDirection:"column",gap:4,width:"100%",children:[a.jsx(Zr,{label:"Model Type",value:e,data:KM,onChange:n=>{n&&t(n)}}),a.jsxs($,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&a.jsx(qM,{}),e==="checkpoint"&&a.jsx(GM,{})]})]})}const Wue=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function Vue(){const e=se(),{t}=Ie(),n=z(c=>c.system.isProcessing),[r,{isLoading:o}]=m3(),s=ec({initialValues:{location:"",prediction_type:void 0}}),i=c=>{const f={location:c.location,prediction_type:c.prediction_type==="none"?void 0:c.prediction_type};r({body:f}).unwrap().then(p=>{e(Cn(_n({title:"Model Added",status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(Cn(_n({title:`${p.data.detail} `,status:"error"}))))})};return a.jsx("form",{onSubmit:s.onSubmit(c=>i(c)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",width:"100%",gap:4,children:[a.jsx(br,{label:"Model Location",placeholder:"Provide a path to a local Diffusers model, local checkpoint / safetensors model a HuggingFace Repo ID, or a checkpoint/diffusers model URL.",w:"100%",...s.getInputProps("location")}),a.jsx(Zr,{label:"Prediction Type (for Stable Diffusion 2.x Models only)",data:Wue,defaultValue:"none",...s.getInputProps("prediction_type")}),a.jsx(Wt,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function Uue(){const[e,t]=u.useState("simple");return a.jsxs($,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[a.jsxs(vr,{isAttached:!0,children:[a.jsx(Wt,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),a.jsx(Wt,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),a.jsxs($,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&a.jsx(Vue,{}),e==="advanced"&&a.jsx(Hue,{})]})]})}function Gue(e){const{...t}=e;return a.jsx(b6,{w:"100%",...t,children:e.children})}function que(){const e=z(x=>x.modelmanager.searchFolder),[t,n]=u.useState(""),{data:r}=Gs(vl),{foundModels:o,alreadyInstalled:s,filteredModels:i}=g3({search_path:e||""},{selectFromResult:({data:x})=>{const C=g9(r==null?void 0:r.entities),k=uo(C,"path"),j=h9(x,k),_=w9(x,k);return{foundModels:x,alreadyInstalled:d_(_,t),filteredModels:d_(j,t)}}}),[c,{isLoading:f}]=m3(),p=se(),{t:h}=Ie(),m=u.useCallback(x=>{const C=x.currentTarget.id.split("\\").splice(-1)[0];c({body:{location:x.currentTarget.id}}).unwrap().then(k=>{p(Cn(_n({title:`Added Model: ${C}`,status:"success"})))}).catch(k=>{k&&p(Cn(_n({title:"Failed To Add Model",status:"error"})))})},[p,c]),v=u.useCallback(x=>{n(x.target.value)},[]),b=({models:x,showActions:C=!0})=>x.map(k=>a.jsxs($,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[a.jsx(Ee,{sx:{fontWeight:600},children:k.split("\\").slice(-1)[0]}),a.jsx(Ee,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:k})]}),C?a.jsxs($,{gap:2,children:[a.jsx(Wt,{id:k,onClick:m,isLoading:f,children:"Quick Add"}),a.jsx(Wt,{onClick:()=>p(cf(k)),isLoading:f,children:"Advanced"})]}):a.jsx(Ee,{sx:{fontWeight:600,p:2,borderRadius:4,color:"accent.50",bg:"accent.400",_dark:{color:"accent.100",bg:"accent.600"}},children:"Installed"})]},k));return(()=>e?!o||o.length===0?a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(Ee,{variant:"subtext",children:"No Models Found"})}):a.jsxs($,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[a.jsx(hs,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),a.jsxs($,{p:2,gap:2,children:[a.jsxs(Ee,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),a.jsxs(Ee,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",i.length]})]}),a.jsx(Gue,{offsetScrollbars:!0,children:a.jsxs($,{gap:2,flexDirection:"column",children:[b({models:i}),b({models:s,showActions:!1})]})})]}):null)()}const d_=(e,t)=>{const n=[];return Wr(e,r=>{if(!r)return null;r.includes(t)&&n.push(r)}),n};function Kue(){const e=z(i=>i.modelmanager.advancedAddScanModel),[t,n]=u.useState("diffusers"),[r,o]=u.useState(!0);u.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(i=>e.endsWith(i))?n("checkpoint"):n("diffusers")},[e,n,r]);const s=se();return e?a.jsxs(Fe,{as:yr.div,initial:{x:-100,opacity:0},animate:{x:0,opacity:1,transition:{duration:.2}},sx:{display:"flex",flexDirection:"column",minWidth:"40%",maxHeight:window.innerHeight-300,overflow:"scroll",p:4,gap:4,borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(Ee,{size:"xl",fontWeight:600,children:r||t==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),a.jsx(tt,{icon:a.jsx(NJ,{}),"aria-label":"Close Advanced",onClick:()=>s(cf(null)),size:"sm"})]}),a.jsx(Zr,{label:"Model Type",value:t,data:KM,onChange:i=>{i&&(n(i),o(i==="checkpoint"))}}),r?a.jsx(GM,{model_path:e},e):a.jsx(qM,{model_path:e},e)]}):null}function Xue(){const e=se(),{t}=Ie(),n=z(c=>c.modelmanager.searchFolder),{refetch:r}=g3({search_path:n||""}),o=ec({initialValues:{folder:""}}),s=u.useCallback(c=>{e(_C(c.folder))},[e]),i=()=>{r()};return a.jsx("form",{onSubmit:o.onSubmit(c=>s(c)),style:{width:"100%"},children:a.jsxs($,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[a.jsxs($,{w:"100%",alignItems:"center",gap:4,minH:12,children:[a.jsx(Ee,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?a.jsx($,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):a.jsx(hs,{w:"100%",size:"md",...o.getInputProps("folder")})]}),a.jsxs($,{gap:2,children:[n?a.jsx(tt,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:a.jsx(GE,{}),onClick:i,fontSize:18,size:"sm"}):a.jsx(tt,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:a.jsx(MJ,{}),fontSize:18,size:"sm",type:"submit"}),a.jsx(tt,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:a.jsx(Jo,{}),size:"sm",onClick:()=>{e(_C(null)),e(cf(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const Que=u.memo(Xue);function Yue(){return a.jsxs($,{flexDirection:"column",w:"100%",gap:4,children:[a.jsx(Que,{}),a.jsxs($,{gap:4,children:[a.jsx($,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:a.jsx(que,{})}),a.jsx(Kue,{})]})]})}function Jue(){const[e,t]=u.useState("add"),{t:n}=Ie();return a.jsxs($,{flexDirection:"column",gap:4,children:[a.jsxs(vr,{isAttached:!0,children:[a.jsx(Wt,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),a.jsx(Wt,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&a.jsx(Uue,{}),e=="scan"&&a.jsx(Yue,{})]})}const Zue=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function ede(){var L,X;const{t:e}=Ie(),t=se(),{data:n}=Gs(vl),[r,{isLoading:o}]=sA(),[s,i]=u.useState("sd-1"),c=TC(n==null?void 0:n.entities,(F,q)=>(F==null?void 0:F.model_format)==="diffusers"&&(F==null?void 0:F.base_model)==="sd-1"),f=TC(n==null?void 0:n.entities,(F,q)=>(F==null?void 0:F.model_format)==="diffusers"&&(F==null?void 0:F.base_model)==="sd-2"),p=u.useMemo(()=>({"sd-1":c,"sd-2":f}),[c,f]),[h,m]=u.useState(((L=Object.keys(p[s]))==null?void 0:L[0])??null),[v,b]=u.useState(((X=Object.keys(p[s]))==null?void 0:X[1])??null),[y,x]=u.useState(null),[C,k]=u.useState(""),[j,_]=u.useState(.5),[I,O]=u.useState("weighted_sum"),[E,M]=u.useState("root"),[R,A]=u.useState(""),[D,T]=u.useState(!1),K=Object.keys(p[s]).filter(F=>F!==v&&F!==y),B=Object.keys(p[s]).filter(F=>F!==h&&F!==y),G=Object.keys(p[s]).filter(F=>F!==h&&F!==v),Q=F=>{i(F),m(null),b(null)},V=()=>{const F=[];let q=[h,v,y];q=q.filter(Y=>Y!==null),q.forEach(Y=>{var ae;const ce=(ae=Y==null?void 0:Y.split("/"))==null?void 0:ae[2];ce&&F.push(ce)});const te={model_names:F,merged_model_name:C!==""?C:F.join("-"),alpha:j,interp:I,force:D,merge_dest_directory:E==="root"?void 0:R};r({base_model:s,body:te}).unwrap().then(Y=>{t(Cn(_n({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(Y=>{Y&&t(Cn(_n({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsxs($,{sx:{flexDirection:"column",rowGap:1},children:[a.jsx(Ee,{children:e("modelManager.modelMergeHeaderHelp1")}),a.jsx(Ee,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),a.jsxs($,{columnGap:4,children:[a.jsx(Zr,{label:"Model Type",w:"100%",data:Zue,value:s,onChange:Q}),a.jsx(Kn,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:K,onChange:F=>m(F)}),a.jsx(Kn,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:B,onChange:F=>b(F)}),a.jsx(Kn,{label:e("modelManager.modelThree"),data:G,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:F=>{F?(x(F),O("weighted_sum")):(x(null),O("add_difference"))}})]}),a.jsx(hs,{label:e("modelManager.mergedModelName"),value:C,onChange:F=>k(F.target.value)}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(jt,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:j,onChange:F=>_(F),withInput:!0,withReset:!0,handleReset:()=>_(.5),withSliderMarks:!0}),a.jsx(Ee,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),a.jsxs($,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Ee,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),a.jsx(Ah,{value:I,onChange:F=>O(F),children:a.jsx($,{columnGap:4,children:y===null?a.jsxs(a.Fragment,{children:[a.jsx(Va,{value:"weighted_sum",children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.weightedSum")})}),a.jsx(Va,{value:"sigmoid",children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.sigmoid")})}),a.jsx(Va,{value:"inv_sigmoid",children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):a.jsx(Va,{value:"add_difference",children:a.jsx(Mn,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[a.jsxs($,{columnGap:4,children:[a.jsx(Ee,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),a.jsx(Ah,{value:E,onChange:F=>M(F),children:a.jsxs($,{columnGap:4,children:[a.jsx(Va,{value:"root",children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),a.jsx(Va,{value:"custom",children:a.jsx(Ee,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),E==="custom"&&a.jsx(hs,{label:e("modelManager.mergedModelCustomSaveLocation"),value:R,onChange:F=>A(F.target.value)})]}),a.jsx(bo,{label:e("modelManager.ignoreMismatch"),isChecked:D,onChange:F=>T(F.target.checked),fontWeight:"500"}),a.jsx(Wt,{onClick:V,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const tde=Te((e,t)=>{const{t:n}=Ie(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:i,children:c,title:f,triggerComponent:p}=e,{isOpen:h,onOpen:m,onClose:v}=Ao(),b=u.useRef(null),y=()=>{o(),v()},x=()=>{i&&i(),v()};return a.jsxs(a.Fragment,{children:[u.cloneElement(p,{onClick:m,ref:t}),a.jsx(Cf,{isOpen:h,leastDestructiveRef:b,onClose:v,isCentered:!0,children:a.jsx(Ks,{children:a.jsxs(Sf,{children:[a.jsx(qs,{fontSize:"lg",fontWeight:"bold",children:f}),a.jsx(Xs,{children:c}),a.jsxs(ka,{children:[a.jsx(Wt,{ref:b,onClick:x,children:s}),a.jsx(Wt,{colorScheme:"error",onClick:y,ml:3,children:r})]})]})})})]})}),d2=u.memo(tde);function nde(e){const{model:t}=e,n=se(),{t:r}=Ie(),[o,{isLoading:s}]=aA(),[i,c]=u.useState("InvokeAIRoot"),[f,p]=u.useState("");u.useEffect(()=>{c("InvokeAIRoot")},[t]);const h=()=>{c("InvokeAIRoot")},m=()=>{const v={base_model:t.base_model,model_name:t.model_name,convert_dest_directory:i==="Custom"?f:void 0};if(i==="Custom"&&f===""){n(Cn(_n({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(Cn(_n({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"info"}))),o(v).unwrap().then(()=>{n(Cn(_n({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(()=>{n(Cn(_n({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return a.jsxs(d2,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:m,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:a.jsxs(Wt,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsx(Ee,{children:r("modelManager.convertToDiffusersHelpText1")}),a.jsxs(gf,{children:[a.jsx(Fs,{children:r("modelManager.convertToDiffusersHelpText2")}),a.jsx(Fs,{children:r("modelManager.convertToDiffusersHelpText3")}),a.jsx(Fs,{children:r("modelManager.convertToDiffusersHelpText4")}),a.jsx(Fs,{children:r("modelManager.convertToDiffusersHelpText5")})]}),a.jsx(Ee,{children:r("modelManager.convertToDiffusersHelpText6")})]}),a.jsxs($,{flexDir:"column",gap:2,children:[a.jsxs($,{marginTop:4,flexDir:"column",gap:2,children:[a.jsx(Ee,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),a.jsx(Ah,{value:i,onChange:v=>c(v),children:a.jsxs($,{gap:4,children:[a.jsx(Va,{value:"InvokeAIRoot",children:a.jsx(Mn,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),a.jsx(Va,{value:"Custom",children:a.jsx(Mn,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),i==="Custom"&&a.jsxs($,{flexDirection:"column",rowGap:2,children:[a.jsx(Ee,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),a.jsx(hs,{value:f,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function rde(e){const t=z(Or),{model:n}=e,[r,{isLoading:o}]=v3(),{data:s}=p3(),[i,c]=u.useState(!1);u.useEffect(()=>{s!=null&&s.includes(n.config)||c(!0)},[s,n.config]);const f=se(),{t:p}=Ie(),h=ec({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"checkpoint",vae:n.vae?n.vae:"",config:n.config?n.config:"",variant:n.variant},validate:{path:v=>v.trim().length===0?"Must provide a path":null}}),m=u.useCallback(v=>{const b={base_model:n.base_model,model_name:n.model_name,body:v};r(b).unwrap().then(y=>{h.setValues(y),f(Cn(_n({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(y=>{h.reset(),f(Cn(_n({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,f,n.base_model,n.model_name,p,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(Ee,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(Ee,{fontSize:"sm",color:"base.400",children:[xr[n.base_model]," Model"]})]}),[""].includes(n.base_model)?a.jsx(hi,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):a.jsx(nde,{model:n})]}),a.jsx(Ko,{}),a.jsx($,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:a.jsx("form",{onSubmit:h.onSubmit(v=>m(v)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(br,{label:p("modelManager.name"),...h.getInputProps("model_name")}),a.jsx(br,{label:p("modelManager.description"),...h.getInputProps("description")}),a.jsx(Nf,{required:!0,...h.getInputProps("base_model")}),a.jsx(r0,{required:!0,...h.getInputProps("variant")}),a.jsx(br,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),a.jsx(br,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),a.jsxs($,{flexDirection:"column",gap:2,children:[i?a.jsx(br,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):a.jsx(UM,{required:!0,...h.getInputProps("config")}),a.jsx(bo,{isChecked:i,onChange:()=>c(!i),label:"Use Custom Config"})]}),a.jsx(Wt,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function ode(e){const t=z(Or),{model:n}=e,[r,{isLoading:o}]=v3(),s=se(),{t:i}=Ie(),c=ec({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"diffusers",vae:n.vae?n.vae:"",variant:n.variant},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),f=u.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{c.setValues(m),s(Cn(_n({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{c.reset(),s(Cn(_n({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[c,s,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(Ee,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(Ee,{fontSize:"sm",color:"base.400",children:[xr[n.base_model]," Model"]})]}),a.jsx(Ko,{}),a.jsx("form",{onSubmit:c.onSubmit(p=>f(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(br,{label:i("modelManager.name"),...c.getInputProps("model_name")}),a.jsx(br,{label:i("modelManager.description"),...c.getInputProps("description")}),a.jsx(Nf,{required:!0,...c.getInputProps("base_model")}),a.jsx(r0,{required:!0,...c.getInputProps("variant")}),a.jsx(br,{required:!0,label:i("modelManager.modelLocation"),...c.getInputProps("path")}),a.jsx(br,{label:i("modelManager.vaeLocation"),...c.getInputProps("vae")}),a.jsx(Wt,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function sde(e){const t=z(Or),{model:n}=e,[r,{isLoading:o}]=iA(),s=se(),{t:i}=Ie(),c=ec({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"lora",path:n.path?n.path:"",description:n.description?n.description:"",model_format:n.model_format},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),f=u.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{c.setValues(m),s(Cn(_n({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{c.reset(),s(Cn(_n({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[s,c,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(Ee,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(Ee,{fontSize:"sm",color:"base.400",children:[xr[n.base_model]," Model ⋅"," ",lA[n.model_format]," format"]})]}),a.jsx(Ko,{}),a.jsx("form",{onSubmit:c.onSubmit(p=>f(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(br,{label:i("modelManager.name"),...c.getInputProps("model_name")}),a.jsx(br,{label:i("modelManager.description"),...c.getInputProps("description")}),a.jsx(Nf,{...c.getInputProps("base_model")}),a.jsx(br,{label:i("modelManager.modelLocation"),...c.getInputProps("path")}),a.jsx(Wt,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function ade(e){const t=z(Or),{t:n}=Ie(),r=se(),[o]=cA(),[s]=uA(),{model:i,isSelected:c,setSelectedModelId:f}=e,p=u.useCallback(()=>{f(i.id)},[i.id,f]),h=u.useCallback(()=>{const m={main:o,lora:s,onnx:o}[i.model_type];m(i).unwrap().then(v=>{r(Cn(_n({title:`${n("modelManager.modelDeleted")}: ${i.model_name}`,status:"success"})))}).catch(v=>{v&&r(Cn(_n({title:`${n("modelManager.modelDeleteFailed")}: ${i.model_name}`,status:"error"})))}),f(void 0)},[o,s,i,f,r,n]);return a.jsxs($,{sx:{gap:2,alignItems:"center",w:"full"},children:[a.jsx($,{as:Wt,isChecked:c,sx:{justifyContent:"start",p:2,borderRadius:"base",w:"full",alignItems:"center",bg:c?"accent.400":"base.100",color:c?"base.50":"base.800",_hover:{bg:c?"accent.500":"base.300",color:c?"base.50":"base.800"},_dark:{color:c?"base.50":"base.100",bg:c?"accent.600":"base.850",_hover:{color:c?"base.50":"base.100",bg:c?"accent.550":"base.700"}}},onClick:p,children:a.jsxs($,{gap:4,alignItems:"center",children:[a.jsx(hi,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:dA[i.base_model]}),a.jsx(Mn,{label:i.description,hasArrow:!0,placement:"bottom",children:a.jsx(Ee,{sx:{fontWeight:500},children:i.model_name})})]})}),a.jsx(d2,{title:n("modelManager.deleteModel"),acceptCallback:h,acceptButtonText:n("modelManager.delete"),triggerComponent:a.jsx(tt,{icon:a.jsx(zee,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:a.jsxs($,{rowGap:4,flexDirection:"column",children:[a.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),a.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const ide=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=Ie(),[o,s]=u.useState(""),[i,c]=u.useState("all"),{filteredDiffusersModels:f,isLoadingDiffusersModels:p}=Gs(vl,{selectFromResult:({data:_,isLoading:I})=>({filteredDiffusersModels:pd(_,"main","diffusers",o),isLoadingDiffusersModels:I})}),{filteredCheckpointModels:h,isLoadingCheckpointModels:m}=Gs(vl,{selectFromResult:({data:_,isLoading:I})=>({filteredCheckpointModels:pd(_,"main","checkpoint",o),isLoadingCheckpointModels:I})}),{filteredLoraModels:v,isLoadingLoraModels:b}=Gm(void 0,{selectFromResult:({data:_,isLoading:I})=>({filteredLoraModels:pd(_,"lora",void 0,o),isLoadingLoraModels:I})}),{filteredOnnxModels:y,isLoadingOnnxModels:x}=Td(vl,{selectFromResult:({data:_,isLoading:I})=>({filteredOnnxModels:pd(_,"onnx","onnx",o),isLoadingOnnxModels:I})}),{filteredOliveModels:C,isLoadingOliveModels:k}=Td(vl,{selectFromResult:({data:_,isLoading:I})=>({filteredOliveModels:pd(_,"onnx","olive",o),isLoadingOliveModels:I})}),j=u.useCallback(_=>{s(_.target.value)},[]);return a.jsx($,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:a.jsxs($,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[a.jsxs(vr,{isAttached:!0,children:[a.jsx(Wt,{onClick:()=>c("all"),isChecked:i==="all",size:"sm",children:r("modelManager.allModels")}),a.jsx(Wt,{size:"sm",onClick:()=>c("diffusers"),isChecked:i==="diffusers",children:r("modelManager.diffusersModels")}),a.jsx(Wt,{size:"sm",onClick:()=>c("checkpoint"),isChecked:i==="checkpoint",children:r("modelManager.checkpointModels")}),a.jsx(Wt,{size:"sm",onClick:()=>c("onnx"),isChecked:i==="onnx",children:r("modelManager.onnxModels")}),a.jsx(Wt,{size:"sm",onClick:()=>c("olive"),isChecked:i==="olive",children:r("modelManager.oliveModels")}),a.jsx(Wt,{size:"sm",onClick:()=>c("lora"),isChecked:i==="lora",children:r("modelManager.loraModels")})]}),a.jsx(hs,{onChange:j,label:r("modelManager.search"),labelPos:"side"}),a.jsxs($,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[p&&a.jsx(Rc,{loadingMessage:"Loading Diffusers..."}),["all","diffusers"].includes(i)&&!p&&f.length>0&&a.jsx(Mc,{title:"Diffusers",modelList:f,selected:{selectedModelId:t,setSelectedModelId:n}},"diffusers"),m&&a.jsx(Rc,{loadingMessage:"Loading Checkpoints..."}),["all","checkpoint"].includes(i)&&!m&&h.length>0&&a.jsx(Mc,{title:"Checkpoints",modelList:h,selected:{selectedModelId:t,setSelectedModelId:n}},"checkpoints"),b&&a.jsx(Rc,{loadingMessage:"Loading LoRAs..."}),["all","lora"].includes(i)&&!b&&v.length>0&&a.jsx(Mc,{title:"LoRAs",modelList:v,selected:{selectedModelId:t,setSelectedModelId:n}},"loras"),k&&a.jsx(Rc,{loadingMessage:"Loading Olives..."}),["all","olive"].includes(i)&&!k&&C.length>0&&a.jsx(Mc,{title:"Olives",modelList:C,selected:{selectedModelId:t,setSelectedModelId:n}},"olive"),x&&a.jsx(Rc,{loadingMessage:"Loading ONNX..."}),["all","onnx"].includes(i)&&!x&&y.length>0&&a.jsx(Mc,{title:"ONNX",modelList:y,selected:{selectedModelId:t,setSelectedModelId:n}},"onnx")]})]})})},lde=u.memo(ide),pd=(e,t,n,r)=>{const o=[];return Wr(e==null?void 0:e.entities,s=>{if(!s)return;const i=s.model_name.toLowerCase().includes(r.toLowerCase()),c=n===void 0||s.model_format===n,f=s.model_type===t;i&&c&&f&&o.push(s)}),o},f2=u.memo(e=>a.jsx($,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children}));f2.displayName="StyledModelContainer";const Mc=u.memo(e=>{const{title:t,modelList:n,selected:r}=e;return a.jsx(f2,{children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(Ee,{variant:"subtext",fontSize:"sm",children:t}),n.map(o=>a.jsx(ade,{model:o,isSelected:r.selectedModelId===o.id,setSelectedModelId:r.setSelectedModelId},o.id))]})})});Mc.displayName="ModelListWrapper";const Rc=u.memo(({loadingMessage:e})=>a.jsx(f2,{children:a.jsxs($,{justifyContent:"center",alignItems:"center",flexDirection:"column",p:4,gap:8,children:[a.jsx(Wl,{}),a.jsx(Ee,{variant:"subtext",children:e||"Fetching..."})]})}));Rc.displayName="FetchingModelsLoader";function cde(){const[e,t]=u.useState(),{mainModel:n}=Gs(vl,{selectFromResult:({data:s})=>({mainModel:e?s==null?void 0:s.entities[e]:void 0})}),{loraModel:r}=Gm(void 0,{selectFromResult:({data:s})=>({loraModel:e?s==null?void 0:s.entities[e]:void 0})}),o=n||r;return a.jsxs($,{sx:{gap:8,w:"full",h:"full"},children:[a.jsx(lde,{selectedModelId:e,setSelectedModelId:t}),a.jsx(ude,{model:o})]})}const ude=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?a.jsx(rde,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?a.jsx(ode,{model:t},t.id):(t==null?void 0:t.model_type)==="lora"?a.jsx(sde,{model:t},t.id):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:a.jsx(Ee,{variant:"subtext",children:"No Model Selected"})})};function dde(){const{t:e}=Ie();return a.jsxs($,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(Ee,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),a.jsx(Ee,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),a.jsx(Nu,{})]})}function fde(){return a.jsx($,{children:a.jsx(dde,{})})}const f_=[{id:"modelManager",label:Sr.t("modelManager.modelManager"),content:a.jsx(cde,{})},{id:"importModels",label:Sr.t("modelManager.importModels"),content:a.jsx(Jue,{})},{id:"mergeModels",label:Sr.t("modelManager.mergeModels"),content:a.jsx(ede,{})},{id:"settings",label:Sr.t("modelManager.settings"),content:a.jsx(fde,{})}],pde=()=>a.jsxs(Gl,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[a.jsx(ql,{children:f_.map(e=>a.jsx(Ro,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),a.jsx(Ou,{sx:{w:"full",h:"full"},children:f_.map(e=>a.jsx(bs,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),hde=u.memo(pde),mde=(e,t)=>{const n={id:e,name:t.name,type:t.type,label:"",fieldKind:"input"};return t.type==="string"&&(n.value=t.default??""),t.type==="integer"&&(n.value=t.default??0),t.type==="float"&&(n.value=t.default??0),t.type==="boolean"&&(n.value=t.default??!1),t.type==="enum"&&(t.enumType==="number"&&(n.value=t.default??0),t.enumType==="string"&&(n.value=t.default??"")),t.type==="Collection"&&(n.value=t.default??1),t.type==="ImageField"&&(n.value=void 0),t.type==="ImageCollection"&&(n.value=[]),t.type==="DenoiseMaskField"&&(n.value=void 0),t.type==="LatentsField"&&(n.value=void 0),t.type==="ConditioningField"&&(n.value=void 0),t.type==="UNetField"&&(n.value=void 0),t.type==="ClipField"&&(n.value=void 0),t.type==="VaeField"&&(n.value=void 0),t.type==="ControlField"&&(n.value=void 0),t.type==="MainModelField"&&(n.value=void 0),t.type==="SDXLRefinerModelField"&&(n.value=void 0),t.type==="VaeModelField"&&(n.value=void 0),t.type==="LoRAModelField"&&(n.value=void 0),t.type==="ControlNetModelField"&&(n.value=void 0),t.type==="Scheduler"&&(n.value="euler"),n},gde=le([e=>e.nodes],e=>e.nodeTemplates),f1={dragHandle:`.${Ul}`},vde=()=>{const e=z(gde),t=px();return u.useCallback(n=>{var b;const r=Fi();let o=window.innerWidth/2,s=window.innerHeight/2;const i=(b=document.querySelector("#workflow-editor"))==null?void 0:b.getBoundingClientRect();i&&(o=i.width/2-I1/2,s=i.height/2-I1/2);const{x:c,y:f}=t.project({x:o,y:s});if(n==="current_image")return{...f1,id:r,type:"current_image",position:{x:c,y:f},data:{id:r,type:"current_image",isOpen:!0,label:"Current Image"}};if(n==="notes")return{...f1,id:r,type:"notes",position:{x:c,y:f},data:{id:r,isOpen:!0,label:"Notes",notes:"",type:"notes"}};const p=e[n];if(p===void 0){console.error(`Unable to find template ${n}.`);return}const h=PC(p.inputs,(y,x,C)=>{const k=Fi(),j=mde(k,x);return y[C]=j,y},{}),m=PC(p.outputs,(y,x,C)=>{const j={id:Fi(),name:C,type:x.type,fieldKind:"output"};return y[C]=j,y},{});return{...f1,id:r,type:"invocation",position:{x:c,y:f},data:{id:r,type:n,inputs:h,outputs:m,isOpen:!0,label:"",notes:"",embedWorkflow:!1,isIntermediate:!0}}},[e,t])},XM=u.forwardRef(({label:e,description:t,...n},r)=>a.jsx("div",{ref:r,...n,children:a.jsxs("div",{children:[a.jsx(Ee,{fontWeight:600,children:e}),a.jsx(Ee,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));XM.displayName="AddNodePopoverSelectItem";const bde=(e,t)=>{const n=new RegExp(e.trim().replace(/[-[\]{}()*+!<=:?./\\^$|#,]/g,"").split(" ").join(".*"),"gi");return n.test(t.label)||n.test(t.description)||t.tags.some(r=>n.test(r))},xde=le([ke],({nodes:e})=>{const t=uo(e.nodeTemplates,n=>({label:n.title,value:n.type,description:n.description,tags:n.tags}));return t.push({label:"Progress Image",value:"current_image",description:"Displays the current image in the Node Editor",tags:["progress"]}),t.push({label:"Notes",value:"notes",description:"Add notes about your workflow",tags:["notes"]}),t.sort((n,r)=>n.label.localeCompare(r.label)),{data:t}},Oe),yde=()=>{const e=se(),t=vde(),n=Kl(),{data:r}=z(xde),o=z(v=>v.nodes.isAddNodePopoverOpen),s=u.useRef(null),i=u.useCallback(v=>{const b=t(v);if(!b){n({status:"error",title:`Unknown Invocation type ${v}`});return}e(fA(b))},[e,t,n]),c=u.useCallback(v=>{v&&i(v)},[i]),f=u.useCallback(()=>{e(pA())},[e]),p=u.useCallback(()=>{e(b3())},[e]),h=u.useCallback(v=>{v.preventDefault(),p(),setTimeout(()=>{var b;(b=s.current)==null||b.focus()},0)},[p]),m=u.useCallback(()=>{f()},[f]);return St(["shift+a","space"],h),St(["escape"],m),a.jsxs(fg,{initialFocusRef:s,isOpen:o,onClose:f,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(bP,{children:a.jsx($,{sx:{position:"absolute",top:"15%",insetInlineStart:"50%",pointerEvents:"none"}})}),a.jsx(pg,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(ey,{sx:{p:0},children:a.jsx(Kn,{inputRef:s,selectOnBlur:!1,placeholder:"Search for nodes",value:null,data:r,maxDropdownHeight:400,nothingFound:"No matching nodes",itemComponent:XM,filter:bde,onChange:c,hoverOnSearchChange:!0,onDropdownClose:f,sx:{width:"32rem",input:{padding:"0.5rem"}}})})})]})},wde=u.memo(yde);var Cde="\0",fl="\0",p_="",Po,xl,Vo,Zd,tu,nu,cs,pa,Ai,ha,Ni,Ua,Ga,ru,ou,qa,Ds,ef,Wb,M_;let Sde=(M_=class{constructor(t){rr(this,ef);rr(this,Po,!0);rr(this,xl,!1);rr(this,Vo,!1);rr(this,Zd,void 0);rr(this,tu,()=>{});rr(this,nu,()=>{});rr(this,cs,{});rr(this,pa,{});rr(this,Ai,{});rr(this,ha,{});rr(this,Ni,{});rr(this,Ua,{});rr(this,Ga,{});rr(this,ru,0);rr(this,ou,0);rr(this,qa,void 0);rr(this,Ds,void 0);t&&(as(this,Po,t.hasOwnProperty("directed")?t.directed:!0),as(this,xl,t.hasOwnProperty("multigraph")?t.multigraph:!1),as(this,Vo,t.hasOwnProperty("compound")?t.compound:!1)),Pe(this,Vo)&&(as(this,qa,{}),as(this,Ds,{}),Pe(this,Ds)[fl]={})}isDirected(){return Pe(this,Po)}isMultigraph(){return Pe(this,xl)}isCompound(){return Pe(this,Vo)}setGraph(t){return as(this,Zd,t),this}graph(){return Pe(this,Zd)}setDefaultNodeLabel(t){return as(this,tu,t),typeof t!="function"&&as(this,tu,()=>t),this}nodeCount(){return Pe(this,ru)}nodes(){return Object.keys(Pe(this,cs))}sources(){var t=this;return this.nodes().filter(n=>Object.keys(Pe(t,pa)[n]).length===0)}sinks(){var t=this;return this.nodes().filter(n=>Object.keys(Pe(t,ha)[n]).length===0)}setNodes(t,n){var r=arguments,o=this;return t.forEach(function(s){r.length>1?o.setNode(s,n):o.setNode(s)}),this}setNode(t,n){return Pe(this,cs).hasOwnProperty(t)?(arguments.length>1&&(Pe(this,cs)[t]=n),this):(Pe(this,cs)[t]=arguments.length>1?n:Pe(this,tu).call(this,t),Pe(this,Vo)&&(Pe(this,qa)[t]=fl,Pe(this,Ds)[t]={},Pe(this,Ds)[fl][t]=!0),Pe(this,pa)[t]={},Pe(this,Ai)[t]={},Pe(this,ha)[t]={},Pe(this,Ni)[t]={},++rd(this,ru)._,this)}node(t){return Pe(this,cs)[t]}hasNode(t){return Pe(this,cs).hasOwnProperty(t)}removeNode(t){var n=this;if(Pe(this,cs).hasOwnProperty(t)){var r=o=>n.removeEdge(Pe(n,Ua)[o]);delete Pe(this,cs)[t],Pe(this,Vo)&&(da(this,ef,Wb).call(this,t),delete Pe(this,qa)[t],this.children(t).forEach(function(o){n.setParent(o)}),delete Pe(this,Ds)[t]),Object.keys(Pe(this,pa)[t]).forEach(r),delete Pe(this,pa)[t],delete Pe(this,Ai)[t],Object.keys(Pe(this,ha)[t]).forEach(r),delete Pe(this,ha)[t],delete Pe(this,Ni)[t],--rd(this,ru)._}return this}setParent(t,n){if(!Pe(this,Vo))throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n=fl;else{n+="";for(var r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),da(this,ef,Wb).call(this,t),Pe(this,qa)[t]=n,Pe(this,Ds)[n][t]=!0,this}parent(t){if(Pe(this,Vo)){var n=Pe(this,qa)[t];if(n!==fl)return n}}children(t=fl){if(Pe(this,Vo)){var n=Pe(this,Ds)[t];if(n)return Object.keys(n)}else{if(t===fl)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var n=Pe(this,Ai)[t];if(n)return Object.keys(n)}successors(t){var n=Pe(this,Ni)[t];if(n)return Object.keys(n)}neighbors(t){var n=this.predecessors(t);if(n){const o=new Set(n);for(var r of this.successors(t))o.add(r);return Array.from(o.values())}}isLeaf(t){var n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){var n=new this.constructor({directed:Pe(this,Po),multigraph:Pe(this,xl),compound:Pe(this,Vo)});n.setGraph(this.graph());var r=this;Object.entries(Pe(this,cs)).forEach(function([i,c]){t(i)&&n.setNode(i,c)}),Object.values(Pe(this,Ua)).forEach(function(i){n.hasNode(i.v)&&n.hasNode(i.w)&&n.setEdge(i,r.edge(i))});var o={};function s(i){var c=r.parent(i);return c===void 0||n.hasNode(c)?(o[i]=c,c):c in o?o[c]:s(c)}return Pe(this,Vo)&&n.nodes().forEach(i=>n.setParent(i,s(i))),n}setDefaultEdgeLabel(t){return as(this,nu,t),typeof t!="function"&&as(this,nu,()=>t),this}edgeCount(){return Pe(this,ou)}edges(){return Object.values(Pe(this,Ua))}setPath(t,n){var r=this,o=arguments;return t.reduce(function(s,i){return o.length>1?r.setEdge(s,i,n):r.setEdge(s,i),i}),this}setEdge(){var t,n,r,o,s=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(t=i.v,n=i.w,r=i.name,arguments.length===2&&(o=arguments[1],s=!0)):(t=i,n=arguments[1],r=arguments[3],arguments.length>2&&(o=arguments[2],s=!0)),t=""+t,n=""+n,r!==void 0&&(r=""+r);var c=Cd(Pe(this,Po),t,n,r);if(Pe(this,Ga).hasOwnProperty(c))return s&&(Pe(this,Ga)[c]=o),this;if(r!==void 0&&!Pe(this,xl))throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(n),Pe(this,Ga)[c]=s?o:Pe(this,nu).call(this,t,n,r);var f=kde(Pe(this,Po),t,n,r);return t=f.v,n=f.w,Object.freeze(f),Pe(this,Ua)[c]=f,h_(Pe(this,Ai)[n],t),h_(Pe(this,Ni)[t],n),Pe(this,pa)[n][c]=f,Pe(this,ha)[t][c]=f,rd(this,ou)._++,this}edge(t,n,r){var o=arguments.length===1?p1(Pe(this,Po),arguments[0]):Cd(Pe(this,Po),t,n,r);return Pe(this,Ga)[o]}edgeAsObj(){const t=this.edge(...arguments);return typeof t!="object"?{label:t}:t}hasEdge(t,n,r){var o=arguments.length===1?p1(Pe(this,Po),arguments[0]):Cd(Pe(this,Po),t,n,r);return Pe(this,Ga).hasOwnProperty(o)}removeEdge(t,n,r){var o=arguments.length===1?p1(Pe(this,Po),arguments[0]):Cd(Pe(this,Po),t,n,r),s=Pe(this,Ua)[o];return s&&(t=s.v,n=s.w,delete Pe(this,Ga)[o],delete Pe(this,Ua)[o],m_(Pe(this,Ai)[n],t),m_(Pe(this,Ni)[t],n),delete Pe(this,pa)[n][o],delete Pe(this,ha)[t][o],rd(this,ou)._--),this}inEdges(t,n){var r=Pe(this,pa)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.v===n):o}}outEdges(t,n){var r=Pe(this,ha)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.w===n):o}}nodeEdges(t,n){var r=this.inEdges(t,n);if(r)return r.concat(this.outEdges(t,n))}},Po=new WeakMap,xl=new WeakMap,Vo=new WeakMap,Zd=new WeakMap,tu=new WeakMap,nu=new WeakMap,cs=new WeakMap,pa=new WeakMap,Ai=new WeakMap,ha=new WeakMap,Ni=new WeakMap,Ua=new WeakMap,Ga=new WeakMap,ru=new WeakMap,ou=new WeakMap,qa=new WeakMap,Ds=new WeakMap,ef=new WeakSet,Wb=function(t){delete Pe(this,Ds)[Pe(this,qa)[t]][t]},M_);function h_(e,t){e[t]?e[t]++:e[t]=1}function m_(e,t){--e[t]||delete e[t]}function Cd(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}return o+p_+s+p_+(r===void 0?Cde:r)}function kde(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}var c={v:o,w:s};return r&&(c.name=r),c}function p1(e,t){return Cd(e,t.v,t.w,t.name)}var p2=Sde,jde="2.1.13",_de={Graph:p2,version:jde},Pde=p2,Ide={write:Ede,read:Rde};function Ede(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Ode(e),edges:Mde(e)};return e.graph()!==void 0&&(t.value=structuredClone(e.graph())),t}function Ode(e){return e.nodes().map(function(t){var n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function Mde(e){return e.edges().map(function(t){var n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function Rde(e){var t=new Pde(e.options).setGraph(e.value);return e.nodes.forEach(function(n){t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(function(n){t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var Dde=Ade;function Ade(e){var t={},n=[],r;function o(s){t.hasOwnProperty(s)||(t[s]=!0,r.push(s),e.successors(s).forEach(o),e.predecessors(s).forEach(o))}return e.nodes().forEach(function(s){r=[],o(s),r.length&&n.push(r)}),n}var so,Ka,tf,Vb,nf,Ub,su,gh,R_;let Nde=(R_=class{constructor(){rr(this,tf);rr(this,nf);rr(this,su);rr(this,so,[]);rr(this,Ka,{})}size(){return Pe(this,so).length}keys(){return Pe(this,so).map(function(t){return t.key})}has(t){return Pe(this,Ka).hasOwnProperty(t)}priority(t){var n=Pe(this,Ka)[t];if(n!==void 0)return Pe(this,so)[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return Pe(this,so)[0].key}add(t,n){var r=Pe(this,Ka);if(t=String(t),!r.hasOwnProperty(t)){var o=Pe(this,so),s=o.length;return r[t]=s,o.push({key:t,priority:n}),da(this,nf,Ub).call(this,s),!0}return!1}removeMin(){da(this,su,gh).call(this,0,Pe(this,so).length-1);var t=Pe(this,so).pop();return delete Pe(this,Ka)[t.key],da(this,tf,Vb).call(this,0),t.key}decrease(t,n){var r=Pe(this,Ka)[t];if(n>Pe(this,so)[r].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+Pe(this,so)[r].priority+" New: "+n);Pe(this,so)[r].priority=n,da(this,nf,Ub).call(this,r)}},so=new WeakMap,Ka=new WeakMap,tf=new WeakSet,Vb=function(t){var n=Pe(this,so),r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function Lde(e,t,n,r){return Fde(e,String(t),n||$de,r||function(o){return e.outEdges(o)})}function Fde(e,t,n,r){var o={},s=new Tde,i,c,f=function(p){var h=p.v!==i?p.v:p.w,m=o[h],v=n(p),b=c.distance+v;if(v<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+p+" Weight: "+v);b0&&(i=s.removeMin(),c=o[i],c.distance!==Number.POSITIVE_INFINITY);)r(i).forEach(f);return o}var zde=YM,Bde=Hde;function Hde(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=zde(e,o,t,n),r},{})}var JM=Wde;function Wde(e){var t=0,n=[],r={},o=[];function s(i){var c=r[i]={onStack:!0,lowlink:t,index:t++};if(n.push(i),e.successors(i).forEach(function(h){r.hasOwnProperty(h)?r[h].onStack&&(c.lowlink=Math.min(c.lowlink,r[h].index)):(s(h),c.lowlink=Math.min(c.lowlink,r[h].lowlink))}),c.lowlink===c.index){var f=[],p;do p=n.pop(),r[p].onStack=!1,f.push(p);while(i!==p);o.push(f)}}return e.nodes().forEach(function(i){r.hasOwnProperty(i)||s(i)}),o}var Vde=JM,Ude=Gde;function Gde(e){return Vde(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var qde=Xde,Kde=()=>1;function Xde(e,t,n){return Qde(e,t||Kde,n||function(r){return e.outEdges(r)})}function Qde(e,t,n){var r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0},o.forEach(function(i){s!==i&&(r[s][i]={distance:Number.POSITIVE_INFINITY})}),n(s).forEach(function(i){var c=i.v===s?i.w:i.v,f=t(i);r[s][c]={distance:f,predecessor:s}})}),o.forEach(function(s){var i=r[s];o.forEach(function(c){var f=r[c];o.forEach(function(p){var h=f[s],m=i[p],v=f[p],b=h.distance+m.distance;be.successors(c):c=>e.neighbors(c),o=n==="post"?efe:tfe,s=[],i={};return t.forEach(c=>{if(!e.hasNode(c))throw new Error("Graph does not have node: "+c);o(c,r,i,s)}),s}function efe(e,t,n,r){for(var o=[[e,!1]];o.length>0;){var s=o.pop();s[1]?r.push(s[0]):n.hasOwnProperty(s[0])||(n[s[0]]=!0,o.push([s[0],!0]),n8(t(s[0]),i=>o.push([i,!1])))}}function tfe(e,t,n,r){for(var o=[e];o.length>0;){var s=o.pop();n.hasOwnProperty(s)||(n[s]=!0,r.push(s),n8(t(s),i=>o.push(i)))}}function n8(e,t){for(var n=e.length;n--;)t(e[n],n,e);return e}var nfe=t8,rfe=ofe;function ofe(e,t){return nfe(e,t,"post")}var sfe=t8,afe=ife;function ife(e,t){return sfe(e,t,"pre")}var lfe=p2,cfe=QM,ufe=dfe;function dfe(e,t){var n=new lfe,r={},o=new cfe,s;function i(f){var p=f.v===s?f.w:f.v,h=o.priority(p);if(h!==void 0){var m=t(f);m0;){if(s=o.removeMin(),r.hasOwnProperty(s))n.setEdge(s,r[s]);else{if(c)throw new Error("Input graph is not connected: "+e);c=!0}e.nodeEdges(s).forEach(i)}return n}var ffe={components:Dde,dijkstra:YM,dijkstraAll:Bde,findCycles:Ude,floydWarshall:qde,isAcyclic:Yde,postorder:rfe,preorder:afe,prim:ufe,tarjan:JM,topsort:e8},v_=_de,pfe={Graph:v_.Graph,json:Ide,alg:ffe,version:v_.version};const b_=Cu(pfe),hfe=()=>{const e=px(),t=z(r=>r.nodes.shouldValidateGraph);return u.useCallback(({source:r,sourceHandle:o,target:s,targetHandle:i})=>{var b,y;if(!t)return!0;const c=e.getEdges(),f=e.getNodes();if(!(r&&o&&s&&i))return!1;const p=e.getNode(r),h=e.getNode(s);if(!(p&&h&&p.data&&h.data))return!1;const m=(b=p.data.outputs[o])==null?void 0:b.type,v=(y=h.data.inputs[i])==null?void 0:y.type;return!m||!v||c.find(x=>x.target===s&&x.targetHandle===i)&&v!=="CollectionItem"||m!==v&&m!=="CollectionItem"&&v!=="CollectionItem"&&!(Sh.includes(v)&&Sh.includes(m))?!1:r8(r,s,f,c)},[e,t])},r8=(e,t,n,r)=>{const o=new b_.Graph;return n.forEach(s=>{o.setNode(s.id)}),r.forEach(s=>{o.setEdge(s.source,s.target)}),o.setEdge(e,t),b_.alg.isAcyclic(o)},Yd=e=>`var(--invokeai-colors-${e.split(".").join("-")}`,mfe=le(ke,({nodes:e})=>{const{shouldAnimateEdges:t,currentConnectionFieldType:n,shouldColorEdges:r}=e,o=Yd(n&&r?lf[n].color:"base.500");let s="react-flow__custom_connection-path";return t&&(s=s.concat(" animated")),{stroke:o,className:s}}),gfe=({fromX:e,fromY:t,fromPosition:n,toX:r,toY:o,toPosition:s})=>{const{stroke:i,className:c}=z(mfe),f={sourceX:e,sourceY:t,sourcePosition:n,targetX:r,targetY:o,targetPosition:s},[p]=hx(f);return a.jsx("g",{children:a.jsx("path",{fill:"none",stroke:i,strokeWidth:2,className:c,d:p,style:{opacity:.8}})})},vfe=u.memo(gfe),o8=(e,t,n,r,o)=>le(ke,({nodes:s})=>{var v,b;const i=s.nodes.find(y=>y.id===e),c=s.nodes.find(y=>y.id===n),f=Er(i)&&Er(c),p=(i==null?void 0:i.selected)||(c==null?void 0:c.selected)||o,h=f?(b=(v=i==null?void 0:i.data)==null?void 0:v.outputs[t||""])==null?void 0:b.type:void 0,m=h&&s.shouldColorEdges?Yd(lf[h].color):Yd("base.500");return{isSelected:p,shouldAnimate:s.shouldAnimateEdges&&p,stroke:m}},Oe),bfe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,data:c,selected:f,source:p,target:h,sourceHandleId:m,targetHandleId:v})=>{const b=u.useMemo(()=>o8(p,m,h,v,f),[f,p,m,h,v]),{isSelected:y,shouldAnimate:x}=z(b),[C,k,j]=hx({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s}),{base500:_}=Ef();return a.jsxs(a.Fragment,{children:[a.jsx(x3,{path:C,markerEnd:i,style:{strokeWidth:y?3:2,stroke:_,opacity:y?.8:.5,animation:x?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:x?5:"none"}}),(c==null?void 0:c.count)&&c.count>1&&a.jsx(hA,{children:a.jsx($,{sx:{position:"absolute",transform:`translate(-50%, -50%) translate(${k}px,${j}px)`},className:"nodrag nopan",children:a.jsx(hi,{variant:"solid",sx:{bg:"base.500",opacity:y?.8:.5,boxShadow:"base"},children:c.count})})})]})},xfe=u.memo(bfe),yfe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,selected:c,source:f,target:p,sourceHandleId:h,targetHandleId:m})=>{const v=u.useMemo(()=>o8(f,h,p,m,c),[f,h,p,m,c]),{isSelected:b,shouldAnimate:y,stroke:x}=z(v),[C]=hx({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s});return a.jsx(x3,{path:C,markerEnd:i,style:{strokeWidth:b?3:2,stroke:x,opacity:b?.8:.5,animation:y?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:y?5:"none"}})},wfe=u.memo(yfe),Cfe=e=>{const{nodeId:t,width:n,children:r,selected:o}=e,{isMouseOverNode:s,handleMouseOut:i,handleMouseOver:c}=fM(t),f=u.useMemo(()=>le(ke,({nodes:j})=>{var _;return((_=j.nodeExecutionStates[t])==null?void 0:_.status)===Qa.IN_PROGRESS}),[t]),p=z(f),[h,m,v,b]=xa("shadows",["nodeInProgress.light","nodeInProgress.dark","shadows.xl","shadows.base"]),y=se(),x=Rl(h,m),C=z(j=>j.nodes.nodeOpacity),k=u.useCallback(()=>{y(y3())},[y]);return a.jsxs(Fe,{onClick:k,onMouseEnter:c,onMouseLeave:i,className:Ul,sx:{h:"full",position:"relative",borderRadius:"base",w:n??I1,transitionProperty:"common",transitionDuration:"0.1s",cursor:"grab",opacity:C},children:[a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",pointerEvents:"none",shadow:`${v}, ${b}, ${b}`,zIndex:-1}}),a.jsx(Fe,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"md",pointerEvents:"none",transitionProperty:"common",transitionDuration:"normal",opacity:.7,shadow:p?x:void 0,zIndex:-1}}),r,a.jsx(dM,{isSelected:o,isHovered:s})]})},o0=u.memo(Cfe),Sfe=le(ke,({system:e,gallery:t})=>({imageDTO:t.selection[t.selection.length-1],progressImage:e.progressImage})),kfe=e=>{const{progressImage:t,imageDTO:n}=mA(Sfe);return t?a.jsx(h1,{nodeProps:e,children:a.jsx(Vl,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain",borderRadius:"base"}})}):n?a.jsx(h1,{nodeProps:e,children:a.jsx(ii,{imageDTO:n,isDragDisabled:!0,useThumbailFallback:!0})}):a.jsx(h1,{nodeProps:e,children:a.jsx(lo,{})})},jfe=u.memo(kfe),h1=e=>{const[t,n]=u.useState(!1),r=()=>{n(!0)},o=()=>{n(!1)};return a.jsx(o0,{nodeId:e.nodeProps.id,selected:e.nodeProps.selected,width:384,children:a.jsxs($,{onMouseEnter:r,onMouseLeave:o,className:Ul,sx:{position:"relative",flexDirection:"column"},children:[a.jsx($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",alignItems:"center",justifyContent:"center",h:8},children:a.jsx(Ee,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",_dark:{color:"base.200"}},children:"Current Image"})}),a.jsxs($,{layerStyle:"nodeBody",sx:{w:"full",h:"full",borderBottomRadius:"base",p:2},children:[e.children,t&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:40,left:-2,right:-2,bottom:0,pointerEvents:"none"},children:a.jsx(BM,{})},"nextPrevButtons")]})]})})},_fe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Er(o)?o.data.embedWorkflow:!1},Oe),[e]);return z(t)},s8=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Er(o)?$s(o.data.outputs,s=>gA.includes(s.type)):!1},Oe),[e]);return z(t)},Pfe=({nodeId:e})=>{const t=se(),n=s8(e),r=_fe(e),o=u.useCallback(s=>{t(vA({nodeId:e,embedWorkflow:s.target.checked}))},[t,e]);return n?a.jsxs(pr,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Jr,{sx:{fontSize:"xs",mb:"1px"},children:"Embed Workflow"}),a.jsx(Qm,{className:"nopan",size:"sm",onChange:o,isChecked:r})]}):null},Ife=u.memo(Pfe),Efe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Er(o)?o.data.isIntermediate:!1},Oe),[e]);return z(t)},Ofe=({nodeId:e})=>{const t=se(),n=s8(e),r=Efe(e),o=u.useCallback(s=>{t(bA({nodeId:e,isIntermediate:!s.target.checked}))},[t,e]);return n?a.jsxs(pr,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Jr,{sx:{fontSize:"xs",mb:"1px"},children:"Save to Gallery"}),a.jsx(Qm,{className:"nopan",size:"sm",onChange:o,isChecked:!r})]}):null},Mfe=u.memo(Ofe),Rfe=({nodeId:e})=>a.jsxs($,{className:Ul,layerStyle:"nodeFooter",sx:{w:"full",borderBottomRadius:"base",px:2,py:0,h:6,justifyContent:"space-between"},children:[a.jsx(Ife,{nodeId:e}),a.jsx(Mfe,{nodeId:e})]}),Dfe=u.memo(Rfe),Afe=({nodeId:e,isOpen:t})=>{const n=se(),r=xA(),o=u.useCallback(()=>{n(yA({nodeId:e,isOpen:!t})),r(e)},[n,t,e,r]);return a.jsx(tt,{className:"nodrag",onClick:o,"aria-label":"Minimize",sx:{minW:8,w:8,h:8,color:"base.500",_dark:{color:"base.500"},_hover:{color:"base.700",_dark:{color:"base.300"}}},variant:"link",icon:a.jsx(Lg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})})},h2=u.memo(Afe),a8=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Er(o)?o.data.label:!1},Oe),[e]);return z(t)},i8=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Er(o))return!1;const s=o?r.nodeTemplates[o.data.type]:void 0;return s==null?void 0:s.title},Oe),[e]);return z(t)},Nfe=({nodeId:e,title:t})=>{const n=se(),r=a8(e),o=i8(e),[s,i]=u.useState(""),c=u.useCallback(async p=>{n(wA({nodeId:e,label:p})),i(p||t||o||"Problem Setting Title")},[n,e,t,o]),f=u.useCallback(p=>{i(p)},[]);return u.useEffect(()=>{i(r||t||o||"Problem Setting Title")},[r,o,t]),a.jsx($,{sx:{overflow:"hidden",w:"full",h:"full",alignItems:"center",justifyContent:"center",cursor:"text"},children:a.jsxs(Zm,{as:$,value:s,onChange:f,onSubmit:c,sx:{alignItems:"center",position:"relative",w:"full",h:"full"},children:[a.jsx(Jm,{fontSize:"sm",sx:{p:0,w:"full"},noOfLines:1}),a.jsx(Ym,{className:"nodrag",fontSize:"sm",sx:{p:0,fontWeight:700,_focusVisible:{p:0,boxShadow:"none"}}}),a.jsx(Tfe,{})]})})},l8=u.memo(Nfe);function Tfe(){const{isEditing:e,getEditButtonProps:t}=Y3(),n=u.useCallback(r=>{const{onClick:o}=t();o&&o(r)},[t]);return e?null:a.jsx(Fe,{className:Ul,onDoubleClick:n,sx:{position:"absolute",w:"full",h:"full",top:0,cursor:"grab"}})}const m2=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return o==null?void 0:o.data},Oe),[e]);return z(t)},$fe=({nodeId:e})=>{const t=m2(e),{base400:n,base600:r}=Ef(),o=Rl(n,r),s=u.useMemo(()=>({borderWidth:0,borderRadius:"3px",width:"1rem",height:"1rem",backgroundColor:o,zIndex:-1}),[o]);return mx(t)?a.jsxs(a.Fragment,{children:[a.jsx(vd,{type:"target",id:`${t.id}-collapsed-target`,isConnectable:!1,position:Dc.Left,style:{...s,left:"-0.5rem"}}),uo(t.inputs,i=>a.jsx(vd,{type:"target",id:i.name,isConnectable:!1,position:Dc.Left,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-input-handle`)),a.jsx(vd,{type:"source",id:`${t.id}-collapsed-source`,isConnectable:!1,position:Dc.Right,style:{...s,right:"-0.5rem"}}),uo(t.outputs,i=>a.jsx(vd,{type:"source",id:i.name,isConnectable:!1,position:Dc.Right,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-output-handle`))]}):null},Lfe=u.memo($fe),Ffe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);return r.nodeTemplates[(o==null?void 0:o.data.type)??""]},Oe),[e]);return z(t)},zfe=({nodeId:e})=>{const t=se(),n=m2(e),r=u.useCallback(o=>{t(CA({nodeId:e,notes:o.target.value}))},[t,e]);return mx(n)?a.jsxs(pr,{children:[a.jsx(Jr,{children:"Notes"}),a.jsx(li,{value:n==null?void 0:n.notes,onChange:r,rows:10})]}):null},Bfe=u.memo(zfe),Hfe=({nodeId:e})=>{const{isOpen:t,onOpen:n,onClose:r}=Ao(),o=a8(e),s=i8(e);return a.jsxs(a.Fragment,{children:[a.jsx(Mn,{label:a.jsx(c8,{nodeId:e}),placement:"top",shouldWrapChildren:!0,children:a.jsx($,{className:"nodrag",onClick:n,sx:{alignItems:"center",justifyContent:"center",w:8,h:8,cursor:"pointer"},children:a.jsx(Tr,{as:FE,sx:{boxSize:4,w:8,color:"base.400"}})})}),a.jsxs(Tl,{isOpen:t,onClose:r,isCentered:!0,children:[a.jsx(Ks,{}),a.jsxs($l,{children:[a.jsx(qs,{children:o||s||"Unknown Node"}),a.jsx(kf,{}),a.jsx(Xs,{children:a.jsx(Bfe,{nodeId:e})}),a.jsx(ka,{})]})]})]})},Wfe=u.memo(Hfe),c8=u.memo(({nodeId:e})=>{const t=m2(e),n=Ffe(e),r=u.useMemo(()=>t!=null&&t.label&&(n!=null&&n.title)?`${t.label} (${n.title})`:t!=null&&t.label&&!n?t.label:!(t!=null&&t.label)&&n?n.title:"Unknown Node",[t,n]);return mx(t)?a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(Ee,{sx:{fontWeight:600},children:r}),a.jsx(Ee,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:n==null?void 0:n.description}),(t==null?void 0:t.notes)&&a.jsx(Ee,{children:t.notes})]}):a.jsx(Ee,{sx:{fontWeight:600},children:"Unknown Node"})});c8.displayName="TooltipContent";const m1=3,x_={circle:{transitionProperty:"none",transitionDuration:"0s"},".chakra-progress__track":{stroke:"transparent"}},Vfe=({nodeId:e})=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>r.nodeExecutionStates[e]),[e]),n=z(t);return n?a.jsx(Mn,{label:a.jsx(u8,{nodeExecutionState:n}),placement:"top",children:a.jsx($,{className:Ul,sx:{w:5,h:"full",alignItems:"center",justifyContent:"flex-end"},children:a.jsx(d8,{nodeExecutionState:n})})}):null},Ufe=u.memo(Vfe),u8=u.memo(({nodeExecutionState:e})=>{const{status:t,progress:n,progressImage:r}=e;return t===Qa.PENDING?a.jsx(Ee,{children:"Pending"}):t===Qa.IN_PROGRESS?r?a.jsxs($,{sx:{pos:"relative",pt:1.5,pb:.5},children:[a.jsx(Vl,{src:r.dataURL,sx:{w:32,h:32,borderRadius:"base",objectFit:"contain"}}),n!==null&&a.jsxs(hi,{variant:"solid",sx:{pos:"absolute",top:2.5,insetInlineEnd:1},children:[Math.round(n*100),"%"]})]}):n!==null?a.jsxs(Ee,{children:["In Progress (",Math.round(n*100),"%)"]}):a.jsx(Ee,{children:"In Progress"}):t===Qa.COMPLETED?a.jsx(Ee,{children:"Completed"}):t===Qa.FAILED?a.jsx(Ee,{children:"nodeExecutionState.error"}):null});u8.displayName="TooltipLabel";const d8=u.memo(e=>{const{progress:t,status:n}=e.nodeExecutionState;return n===Qa.PENDING?a.jsx(Tr,{as:uJ,sx:{boxSize:m1,color:"base.600",_dark:{color:"base.300"}}}):n===Qa.IN_PROGRESS?t===null?a.jsx(J1,{isIndeterminate:!0,size:"14px",color:"base.500",thickness:14,sx:x_}):a.jsx(J1,{value:Math.round(t*100),size:"14px",color:"base.500",thickness:14,sx:x_}):n===Qa.COMPLETED?a.jsx(Tr,{as:AE,sx:{boxSize:m1,color:"ok.600",_dark:{color:"ok.300"}}}):n===Qa.FAILED?a.jsx(Tr,{as:pJ,sx:{boxSize:m1,color:"error.600",_dark:{color:"error.300"}}}):null});d8.displayName="StatusIcon";const Gfe=({nodeId:e,isOpen:t})=>a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",justifyContent:"space-between",h:8,textAlign:"center",fontWeight:500,color:"base.700",_dark:{color:"base.200"}},children:[a.jsx(h2,{nodeId:e,isOpen:t}),a.jsx(l8,{nodeId:e}),a.jsxs($,{alignItems:"center",children:[a.jsx(Ufe,{nodeId:e}),a.jsx(Wfe,{nodeId:e})]}),!t&&a.jsx(Lfe,{nodeId:e})]}),qfe=u.memo(Gfe),Kfe=(e,t,n,r)=>le(ke,o=>{if(!r)return"No field type";const{currentConnectionFieldType:s,connectionStartParams:i,nodes:c,edges:f}=o.nodes;if(!o.nodes.shouldValidateGraph)return null;if(!i||!s)return"No connection in progress";const{handleType:p,nodeId:h,handleId:m}=i;if(!p||!h||!m)return"No connection data";const v=n==="target"?r:s,b=n==="source"?r:s;return e===h?"Cannot connect to self":n===p?n==="source"?"Cannot connect output to output":"Cannot connect input to input":r!==s&&r!=="CollectionItem"&&s!=="CollectionItem"&&!(Sh.includes(v)&&Sh.includes(b))?"Field types must match":n==="target"&&f.find(x=>x.target===e&&x.targetHandle===t)&&v!=="CollectionItem"?"Inputs may only have one connection":r8(p==="source"?h:e,p==="source"?e:h,c,f)?null:"Connection would create a cycle"}),Xfe=(e,t,n)=>{const r=u.useMemo(()=>le(ke,({nodes:s})=>{var c;const i=s.nodes.find(f=>f.id===e);if(Er(i))return(c=i==null?void 0:i.data[cx[n]][t])==null?void 0:c.type},Oe),[t,n,e]);return z(r)},Qfe=le(ke,({nodes:e})=>e.currentConnectionFieldType!==null&&e.connectionStartParams!==null),f8=({nodeId:e,fieldName:t,kind:n})=>{const r=Xfe(e,t,n),o=u.useMemo(()=>le(ke,({nodes:v})=>!!v.edges.filter(b=>(n==="input"?b.target:b.source)===e&&(n==="input"?b.targetHandle:b.sourceHandle)===t).length),[t,n,e]),s=u.useMemo(()=>Kfe(e,t,n==="input"?"target":"source",r),[e,t,n,r]),i=u.useMemo(()=>le(ke,({nodes:v})=>{var b,y,x;return((b=v.connectionStartParams)==null?void 0:b.nodeId)===e&&((y=v.connectionStartParams)==null?void 0:y.handleId)===t&&((x=v.connectionStartParams)==null?void 0:x.handleType)==={input:"target",output:"source"}[n]}),[t,n,e]),c=z(o),f=z(Qfe),p=z(i),h=z(s),m=u.useMemo(()=>!!(f&&h&&!p),[h,f,p]);return{isConnected:c,isConnectionInProgress:f,isConnectionStartField:p,connectionError:h,shouldDim:m}},Yfe=e=>{const{fieldTemplate:t,handleType:n,isConnectionInProgress:r,isConnectionStartField:o,connectionError:s}=e,{name:i,type:c}=t,{color:f,title:p}=lf[c],h=u.useMemo(()=>{const v={backgroundColor:Yd(f),position:"absolute",width:"1rem",height:"1rem",borderWidth:0,zIndex:1};return n==="target"?v.insetInlineStart="-1rem":v.insetInlineEnd="-1rem",r&&!o&&s&&(v.filter="opacity(0.4) grayscale(0.7)"),r&&s?o?v.cursor="grab":v.cursor="not-allowed":v.cursor="crosshair",v},[f,s,n,r,o]),m=u.useMemo(()=>r&&o?p:r&&s?s??p:p,[s,r,o,p]);return a.jsx(Mn,{label:m,placement:n==="target"?"start":"end",hasArrow:!0,openDelay:Um,children:a.jsx(vd,{type:n,id:i,position:n==="target"?Dc.Left:Dc.Right,style:h})})},p8=u.memo(Yfe),Jfe=({nodeId:e,fieldName:t})=>{const n=Qg(e,t,"output"),{isConnected:r,isConnectionInProgress:o,isConnectionStartField:s,connectionError:i,shouldDim:c}=f8({nodeId:e,fieldName:t,kind:"output"});return(n==null?void 0:n.fieldKind)!=="output"?a.jsx(qb,{shouldDim:c,children:a.jsxs(pr,{sx:{color:"error.400",textAlign:"right",fontSize:"sm"},children:["Unknown output: ",t]})}):a.jsxs(qb,{shouldDim:c,children:[a.jsx(Mn,{label:a.jsx(r2,{nodeId:e,fieldName:t,kind:"output"}),openDelay:Um,placement:"top",shouldWrapChildren:!0,hasArrow:!0,children:a.jsx(pr,{isDisabled:r,pe:2,children:a.jsx(Jr,{sx:{mb:0,fontWeight:500},children:n==null?void 0:n.title})})}),a.jsx(p8,{fieldTemplate:n,handleType:"source",isConnectionInProgress:o,isConnectionStartField:s,connectionError:i})]})},Zfe=u.memo(Jfe),qb=u.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",justifyContent:"flex-end"},children:t}));qb.displayName="OutputFieldWrapper";const epe=(e,t)=>{const n=u.useMemo(()=>le(ke,({nodes:o})=>{var i;const s=o.nodes.find(c=>c.id===e);if(Er(s))return!!((i=s==null?void 0:s.data.inputs[t])!=null&&i.value)},Oe),[t,e]);return z(n)},tpe=(e,t)=>{const n=u.useMemo(()=>le(ke,({nodes:o})=>{const s=o.nodes.find(f=>f.id===e);if(!Er(s))return;const i=o.nodeTemplates[(s==null?void 0:s.data.type)??""],c=i==null?void 0:i.inputs[t];return c==null?void 0:c.input},Oe),[t,e]);return z(n)},npe=({nodeId:e,fieldName:t,kind:n,children:r})=>{const o=se(),s=pM(e,t),i=hM(e,t,n),c=tpe(e,t),f=u.useCallback(x=>{x.preventDefault()},[]),p=u.useMemo(()=>le(ke,({nodes:x})=>({isExposed:!!x.workflow.exposedFields.find(k=>k.nodeId===e&&k.fieldName===t)}),Oe),[t,e]),h=u.useMemo(()=>["any","direct"].includes(c??"__UNKNOWN_INPUT__"),[c]),{isExposed:m}=z(p),v=u.useCallback(()=>{o(SA({nodeId:e,fieldName:t}))},[o,t,e]),b=u.useCallback(()=>{o(i3({nodeId:e,fieldName:t}))},[o,t,e]),y=u.useMemo(()=>{const x=[];return h&&!m&&x.push(a.jsx(Bn,{icon:a.jsx(Yl,{}),onClick:v,children:"Add to Linear View"},`${e}.${t}.expose-field`)),h&&m&&x.push(a.jsx(Bn,{icon:a.jsx(_J,{}),onClick:b,children:"Remove from Linear View"},`${e}.${t}.unexpose-field`)),x},[t,v,b,m,h,e]);return a.jsx(Vy,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>y.length?a.jsx(Ui,{sx:{visibility:"visible !important"},motionProps:au,onContextMenu:f,children:a.jsx(fu,{title:s||i||"Unknown Field",children:y})}):null,children:r})},rpe=u.memo(npe),ope=({nodeId:e,fieldName:t})=>{const n=Qg(e,t,"input"),r=epe(e,t),{isConnected:o,isConnectionInProgress:s,isConnectionStartField:i,connectionError:c,shouldDim:f}=f8({nodeId:e,fieldName:t,kind:"input"}),p=u.useMemo(()=>{if((n==null?void 0:n.fieldKind)!=="input"||!n.required)return!1;if(!o&&n.input==="connection"||!r&&!o&&n.input==="any")return!0},[n,o,r]);return(n==null?void 0:n.fieldKind)!=="input"?a.jsx(Kb,{shouldDim:f,children:a.jsxs(pr,{sx:{color:"error.400",textAlign:"left",fontSize:"sm"},children:["Unknown input: ",t]})}):a.jsxs(Kb,{shouldDim:f,children:[a.jsxs(pr,{isInvalid:p,isDisabled:o,sx:{alignItems:"stretch",justifyContent:"space-between",ps:n.input==="direct"?0:2,gap:2,h:"full",w:"full"},children:[a.jsx(rpe,{nodeId:e,fieldName:t,kind:"input",children:h=>a.jsx(Jr,{sx:{display:"flex",alignItems:"center",mb:0,px:1,gap:2},children:a.jsx(gM,{ref:h,nodeId:e,fieldName:t,kind:"input",isMissingInput:p,withTooltip:!0})})}),a.jsx(Fe,{children:a.jsx(_M,{nodeId:e,fieldName:t})})]}),n.input!=="direct"&&a.jsx(p8,{fieldTemplate:n,handleType:"target",isConnectionInProgress:s,isConnectionStartField:i,connectionError:c})]})},y_=u.memo(ope),Kb=u.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",w:"full",h:"full"},children:t}));Kb.displayName="InputFieldWrapper";const spe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Er(o))return[];const s=r.nodeTemplates[o.data.type];return s?uo(s.outputs).filter(i=>!i.ui_hidden).sort((i,c)=>(i.ui_order??0)-(c.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Oe),[e]);return z(t)},ape=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Er(o)?$s(o.data.outputs,s=>kA.includes(s.type)):!1},Oe),[e]);return z(t)},ipe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Er(o))return[];const s=r.nodeTemplates[o.data.type];return s?uo(s.inputs).filter(i=>i.input==="connection").filter(i=>!i.ui_hidden).sort((i,c)=>(i.ui_order??0)-(c.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Oe),[e]);return z(t)},lpe=e=>{const t=u.useMemo(()=>le(ke,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Er(o))return[];const s=r.nodeTemplates[o.data.type];return s?uo(s.inputs).filter(i=>["any","direct"].includes(i.input)).filter(i=>!i.ui_hidden).sort((i,c)=>(i.ui_order??0)-(c.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},Oe),[e]);return z(t)},cpe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>{const s=ipe(e),i=lpe(e),c=spe(e),f=ape(e);return a.jsxs(o0,{nodeId:e,selected:o,children:[a.jsx(qfe,{nodeId:e,isOpen:t,label:n,selected:o,type:r}),t&&a.jsxs(a.Fragment,{children:[a.jsx($,{layerStyle:"nodeBody",sx:{flexDirection:"column",w:"full",h:"full",py:2,gap:1,borderBottomRadius:f?0:"base"},children:a.jsxs($,{sx:{flexDir:"column",px:2,w:"full",h:"full"},children:[a.jsxs(Vi,{gridTemplateColumns:"1fr auto",gridAutoRows:"1fr",children:[s.map((p,h)=>a.jsx(Bd,{gridColumnStart:1,gridRowStart:h+1,children:a.jsx(y_,{nodeId:e,fieldName:p})},`${e}.${p}.input-field`)),c.map((p,h)=>a.jsx(Bd,{gridColumnStart:2,gridRowStart:h+1,children:a.jsx(Zfe,{nodeId:e,fieldName:p})},`${e}.${p}.output-field`))]}),i.map(p=>a.jsx(y_,{nodeId:e,fieldName:p},`${e}.${p}.input-field`))]})}),f&&a.jsx(Dfe,{nodeId:e})]})]})},upe=u.memo(cpe),dpe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>a.jsxs(o0,{nodeId:e,selected:o,children:[a.jsxs($,{className:Ul,layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",h:8,fontWeight:600,fontSize:"sm"},children:[a.jsx(h2,{nodeId:e,isOpen:t}),a.jsx(Ee,{sx:{w:"full",textAlign:"center",pe:8,color:"error.500",_dark:{color:"error.300"}},children:n?`${n} (${r})`:r})]}),t&&a.jsx($,{layerStyle:"nodeBody",sx:{userSelect:"auto",flexDirection:"column",w:"full",h:"full",p:4,gap:1,borderBottomRadius:"base",fontSize:"sm"},children:a.jsxs(Fe,{children:[a.jsx(Ee,{as:"span",children:"Unknown node type: "}),a.jsx(Ee,{as:"span",fontWeight:600,children:r})]})})]}),fpe=u.memo(dpe),ppe=e=>{const{data:t,selected:n}=e,{id:r,type:o,isOpen:s,label:i}=t,c=u.useMemo(()=>le(ke,({nodes:p})=>!!p.nodeTemplates[o]),[o]);return z(c)?a.jsx(upe,{nodeId:r,isOpen:s,label:i,type:o,selected:n}):a.jsx(fpe,{nodeId:r,isOpen:s,label:i,type:o,selected:n})},hpe=u.memo(ppe),mpe=e=>{const{id:t,data:n,selected:r}=e,{notes:o,isOpen:s}=n,i=se(),c=u.useCallback(f=>{i(jA({nodeId:t,value:f.target.value}))},[i,t]);return a.jsxs(o0,{nodeId:t,selected:r,children:[a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:s?0:"base",alignItems:"center",justifyContent:"space-between",h:8},children:[a.jsx(h2,{nodeId:t,isOpen:s}),a.jsx(l8,{nodeId:t,title:"Notes"}),a.jsx(Fe,{minW:8})]}),s&&a.jsx(a.Fragment,{children:a.jsx($,{layerStyle:"nodeBody",className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"base",w:"full",h:"full",p:2,gap:1},children:a.jsx($,{className:"nopan",sx:{flexDir:"column",w:"full",h:"full"},children:a.jsx(li,{value:o,onChange:c,rows:8,resize:"none",sx:{fontSize:"xs"}})})})})]})},gpe=u.memo(mpe),vpe=["Delete","Backspace"],bpe={collapsed:xfe,default:wfe},xpe={invocation:hpe,current_image:jfe,notes:gpe},ype={hideAttribution:!0},wpe=le(ke,({nodes:e})=>{const{shouldSnapToGrid:t,selectionMode:n}=e;return{shouldSnapToGrid:t,selectionMode:n}},Oe),Cpe=()=>{const e=se(),t=z(j=>j.nodes.nodes),n=z(j=>j.nodes.edges),r=z(j=>j.nodes.viewport),{shouldSnapToGrid:o,selectionMode:s}=z(wpe),i=hfe(),[c]=xa("radii",["base"]),f=u.useCallback(j=>{e(_A(j))},[e]),p=u.useCallback(j=>{e(PA(j))},[e]),h=u.useCallback((j,_)=>{e(IA(_))},[e]),m=u.useCallback(j=>{e(EA(j))},[e]),v=u.useCallback(()=>{e(OA())},[e]),b=u.useCallback(j=>{e(MA(j))},[e]),y=u.useCallback(j=>{e(RA(j))},[e]),x=u.useCallback(({nodes:j,edges:_})=>{e(DA(j?j.map(I=>I.id):[])),e(AA(_?_.map(I=>I.id):[]))},[e]),C=u.useCallback((j,_)=>{e(NA(_))},[e]),k=u.useCallback(()=>{e(y3())},[e]);return St(["Ctrl+c","Meta+c"],j=>{j.preventDefault(),e(TA())}),St(["Ctrl+a","Meta+a"],j=>{j.preventDefault(),e($A())}),St(["Ctrl+v","Meta+v"],j=>{j.preventDefault(),e(LA())}),a.jsx(FA,{id:"workflow-editor",defaultViewport:r,nodeTypes:xpe,edgeTypes:bpe,nodes:t,edges:n,onNodesChange:f,onEdgesChange:p,onEdgesDelete:b,onNodesDelete:y,onConnectStart:h,onConnect:m,onConnectEnd:v,onMoveEnd:C,connectionLineComponent:vfe,onSelectionChange:x,isValidConnection:i,minZoom:.1,snapToGrid:o,snapGrid:[25,25],connectionRadius:30,proOptions:ype,style:{borderRadius:c},onPaneClick:k,deleteKeyCode:vpe,selectionMode:s,children:a.jsx(G9,{})})},Spe=()=>{const e=se(),t=u.useCallback(()=>{e(b3())},[e]);return a.jsx($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:2},children:a.jsx(tt,{tooltip:"Add Node (Shift+A, Space)","aria-label":"Add Node",icon:a.jsx(Yl,{}),onClick:t})})},kpe=u.memo(Spe),jpe=()=>{const e=se(),t=HP("nodes");return u.useCallback(r=>{if(!r)return;const o=new FileReader;o.onload=async()=>{const s=o.result;try{const i=JSON.parse(String(s)),c=zA.safeParse(i);if(!c.success){const{message:f}=BA(c.error,{prefix:"Workflow Validation Error"});t.error({error:HA(c.error)},f),e(Cn(_n({title:"Unable to Validate Workflow",status:"error",duration:5e3}))),o.abort();return}if(e(ix(c.data.workflow)),!c.data.warnings.length){e(Cn(_n({title:"Workflow Loaded",status:"success"}))),o.abort();return}e(Cn(_n({title:"Workflow Loaded with Warnings",status:"warning"}))),c.data.warnings.forEach(({message:f,...p})=>{t.warn(p,f)}),o.abort()}catch{e(Cn(_n({title:"Unable to Load Workflow",status:"error"})))}},o.readAsText(r)},[e,t])},_pe=u.memo(e=>e.error.issues[0]?a.jsx(Ee,{children:IC(e.error.issues[0],{prefix:null}).toString()}):a.jsx(gf,{children:e.error.issues.map((t,n)=>a.jsx(Fs,{children:a.jsx(Ee,{children:IC(t,{prefix:null}).toString()})},n))}));_pe.displayName="WorkflowValidationErrorContent";const Ppe=()=>{const{t:e}=Ie(),t=u.useRef(null),n=jpe();return a.jsx(cE,{resetRef:t,accept:"application/json",onChange:n,children:r=>a.jsx(tt,{icon:a.jsx(Mg,{}),tooltip:e("nodes.loadWorkflow"),"aria-label":e("nodes.loadWorkflow"),...r})})},Ipe=u.memo(Ppe),Epe=()=>{const{t:e}=Ie(),t=se(),{isOpen:n,onOpen:r,onClose:o}=Ao(),s=u.useRef(null),i=z(f=>f.nodes.nodes.length),c=u.useCallback(()=>{t(WA()),t(Cn(_n({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return a.jsxs(a.Fragment,{children:[a.jsx(tt,{icon:a.jsx(Jo,{}),tooltip:e("nodes.resetWorkflow"),"aria-label":e("nodes.resetWorkflow"),onClick:r,isDisabled:!i,colorScheme:"error"}),a.jsxs(Cf,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[a.jsx(Ks,{}),a.jsxs(Sf,{children:[a.jsx(qs,{fontSize:"lg",fontWeight:"bold",children:e("nodes.resetWorkflow")}),a.jsx(Xs,{py:4,children:a.jsxs($,{flexDir:"column",gap:2,children:[a.jsx(Ee,{children:e("nodes.resetWorkflowDesc")}),a.jsx(Ee,{variant:"subtext",children:e("nodes.resetWorkflowDesc2")})]})}),a.jsxs(ka,{children:[a.jsx(iu,{ref:s,onClick:o,children:e("common.cancel")}),a.jsx(iu,{colorScheme:"error",ml:3,onClick:c,children:e("common.accept")})]})]})]})]})},Ope=u.memo(Epe),Mpe=()=>{const{t:e}=Ie(),t=uM(),n=u.useCallback(()=>{const r=new Blob([JSON.stringify(t,null,2)]),o=document.createElement("a");o.href=URL.createObjectURL(r),o.download=`${t.name||"My Workflow"}.json`,document.body.appendChild(o),o.click(),o.remove()},[t]);return a.jsx(tt,{icon:a.jsx(Ig,{}),tooltip:e("nodes.downloadWorkflow"),"aria-label":e("nodes.downloadWorkflow"),onClick:n})},Rpe=u.memo(Mpe),Dpe=()=>a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:"50%",transform:"translate(-50%)"},children:[a.jsx(Rpe,{}),a.jsx(Ipe,{}),a.jsx(Ope,{})]}),Ape=u.memo(Dpe),Npe=()=>a.jsx($,{sx:{gap:2,flexDir:"column"},children:uo(lf,({title:e,description:t,color:n},r)=>a.jsx(Mn,{label:t,children:a.jsx(hi,{sx:{userSelect:"none",color:parseInt(n.split(".")[1]??"0",10)<500?"base.800":"base.50",bg:n},textAlign:"center",children:e})},r))}),Tpe=u.memo(Npe),$pe=()=>{const{t:e}=Ie(),t=se(),n=u.useCallback(()=>{t(VA())},[t]);return a.jsx(Wt,{leftIcon:a.jsx(AJ,{}),tooltip:e("nodes.reloadNodeTemplates"),"aria-label":e("nodes.reloadNodeTemplates"),onClick:n,children:e("nodes.reloadNodeTemplates")})},Lpe=u.memo($pe),hd={fontWeight:600},Fpe=le(ke,({nodes:e})=>{const{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionMode:s}=e;return{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionModeIsChecked:s===UA.Full}},Oe),zpe=Te((e,t)=>{const{isOpen:n,onOpen:r,onClose:o}=Ao(),s=se(),{shouldAnimateEdges:i,shouldValidateGraph:c,shouldSnapToGrid:f,shouldColorEdges:p,selectionModeIsChecked:h}=z(Fpe),m=u.useCallback(C=>{s(GA(C.target.checked))},[s]),v=u.useCallback(C=>{s(qA(C.target.checked))},[s]),b=u.useCallback(C=>{s(KA(C.target.checked))},[s]),y=u.useCallback(C=>{s(XA(C.target.checked))},[s]),x=u.useCallback(C=>{s(QA(C.target.checked))},[s]);return a.jsxs(a.Fragment,{children:[a.jsx(tt,{ref:t,"aria-label":"Workflow Editor Settings",tooltip:"Workflow Editor Settings",icon:a.jsx(TE,{}),onClick:r}),a.jsxs(Tl,{isOpen:n,onClose:o,size:"2xl",isCentered:!0,children:[a.jsx(Ks,{}),a.jsxs($l,{children:[a.jsx(qs,{children:"Workflow Editor Settings"}),a.jsx(kf,{}),a.jsx(Xs,{children:a.jsxs($,{sx:{flexDirection:"column",gap:4,py:4},children:[a.jsx(ds,{size:"sm",children:"General"}),a.jsx(qn,{formLabelProps:hd,onChange:v,isChecked:i,label:"Animated Edges",helperText:"Animate selected edges and edges connected to selected nodes"}),a.jsx(Ko,{}),a.jsx(qn,{formLabelProps:hd,isChecked:f,onChange:b,label:"Snap to Grid",helperText:"Snap nodes to grid when moved"}),a.jsx(Ko,{}),a.jsx(qn,{formLabelProps:hd,isChecked:p,onChange:y,label:"Color-Code Edges",helperText:"Color-code edges according to their connected fields"}),a.jsx(qn,{formLabelProps:hd,isChecked:h,onChange:x,label:"Fully Contain Nodes to Select",helperText:"Nodes must be fully inside the selection box to be selected"}),a.jsx(ds,{size:"sm",pt:4,children:"Advanced"}),a.jsx(qn,{formLabelProps:hd,isChecked:c,onChange:m,label:"Validate Connections and Graph",helperText:"Prevent invalid connections from being made, and invalid graphs from being invoked"}),a.jsx(Lpe,{})]})})]})]})]})}),Bpe=u.memo(zpe),Hpe=()=>{const e=z(t=>t.nodes.shouldShowFieldTypeLegend);return a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineEnd:2},children:[a.jsx(Bpe,{}),e&&a.jsx(Tpe,{})]})},Wpe=u.memo(Hpe);function Vpe(){const e=se(),t=z(r=>r.nodes.nodeOpacity),n=u.useCallback(r=>{e(YA(r))},[e]);return a.jsx($,{alignItems:"center",children:a.jsxs(ty,{"aria-label":"Node Opacity",value:t,min:.5,max:1,step:.01,onChange:n,orientation:"vertical",defaultValue:30,h:"calc(100% - 0.5rem)",children:[a.jsx(ry,{children:a.jsx(oy,{})}),a.jsx(ny,{})]})})}function Upe(e){return Je({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"}}]})(e)}function Gpe(e){return Je({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z"}}]})(e)}function qpe(e){return Je({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"}}]})(e)}const Kpe=()=>{const{t:e}=Ie(),{zoomIn:t,zoomOut:n,fitView:r}=px(),o=se(),s=z(h=>h.nodes.shouldShowMinimapPanel),i=u.useCallback(()=>{t()},[t]),c=u.useCallback(()=>{n()},[n]),f=u.useCallback(()=>{r()},[r]),p=u.useCallback(()=>{o(JA(!s))},[s,o]);return a.jsxs(vr,{isAttached:!0,orientation:"vertical",children:[a.jsx(tt,{tooltip:e("nodes.zoomInNodes"),"aria-label":e("nodes.zoomInNodes"),onClick:i,icon:a.jsx(qpe,{})}),a.jsx(tt,{tooltip:e("nodes.zoomOutNodes"),"aria-label":e("nodes.zoomOutNodes"),onClick:c,icon:a.jsx(Gpe,{})}),a.jsx(tt,{tooltip:e("nodes.fitViewportNodes"),"aria-label":e("nodes.fitViewportNodes"),onClick:f,icon:a.jsx(mJ,{})}),a.jsx(tt,{tooltip:e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),"aria-label":e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),isChecked:s,onClick:p,icon:a.jsx(jJ,{})})]})},Xpe=u.memo(Kpe),Qpe=()=>a.jsxs($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineStart:2},children:[a.jsx(Xpe,{}),a.jsx(Vpe,{})]}),Ype=u.memo(Qpe),Jpe=Me(z9),Zpe=()=>{const e=z(r=>r.nodes.shouldShowMinimapPanel),t=Rl("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-600)"),n=Rl("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return a.jsx($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineEnd:2},children:e&&a.jsx(Jpe,{pannable:!0,zoomable:!0,nodeBorderRadius:15,sx:{m:"0 !important",backgroundColor:"base.200 !important",borderRadius:"base",_dark:{backgroundColor:"base.500 !important"},svg:{borderRadius:"inherit"}},nodeColor:t,maskColor:n})})},ehe=u.memo(Zpe),the=()=>{const e=z(t=>t.nodes.isReady);return a.jsxs($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center"},children:[a.jsx(co,{children:e&&a.jsxs(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"relative",width:"100%",height:"100%"},children:[a.jsx(Cpe,{}),a.jsx(wde,{}),a.jsx(kpe,{}),a.jsx(Ape,{}),a.jsx(Wpe,{}),a.jsx(Ype,{}),a.jsx(ehe,{})]})}),a.jsx(co,{children:!e&&a.jsx(yr.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"absolute",width:"100%",height:"100%"},children:a.jsx($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:a.jsx(lo,{label:"Loading Nodes...",icon:Gg})})})})]})},nhe=u.memo(the),rhe=()=>a.jsx(ZA,{children:a.jsx(nhe,{})}),ohe=u.memo(rhe),she=()=>a.jsx(HM,{}),ahe=u.memo(she);var Xb={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=EC;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=EC;e.exports=r.Konva})(Xb,Xb.exports);var ihe=Xb.exports;const Jd=Cu(ihe);var h8={exports:{}};/** - * @license React - * react-reconciler.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 lhe=function(t){var n={},r=u,o=oh,s=Object.assign;function i(l){for(var d="https://reactjs.org/docs/error-decoder.html?invariant="+l,g=1;gZ||S[N]!==P[Z]){var pe=` -`+S[N].replace(" at new "," at ");return l.displayName&&pe.includes("")&&(pe=pe.replace("",l.displayName)),pe}while(1<=N&&0<=Z);break}}}finally{Xt=!1,Error.prepareStackTrace=g}return(l=l?l.displayName||l.name:"")?$t(l):""}var en=Object.prototype.hasOwnProperty,qt=[],Be=-1;function vt(l){return{current:l}}function Dt(l){0>Be||(l.current=qt[Be],qt[Be]=null,Be--)}function Ut(l,d){Be++,qt[Be]=l.current,l.current=d}var In={},Kt=vt(In),un=vt(!1),sn=In;function Mr(l,d){var g=l.type.contextTypes;if(!g)return In;var w=l.stateNode;if(w&&w.__reactInternalMemoizedUnmaskedChildContext===d)return w.__reactInternalMemoizedMaskedChildContext;var S={},P;for(P in g)S[P]=d[P];return w&&(l=l.stateNode,l.__reactInternalMemoizedUnmaskedChildContext=d,l.__reactInternalMemoizedMaskedChildContext=S),S}function Zn(l){return l=l.childContextTypes,l!=null}function Pt(){Dt(un),Dt(Kt)}function En(l,d,g){if(Kt.current!==In)throw Error(i(168));Ut(Kt,d),Ut(un,g)}function Rn(l,d,g){var w=l.stateNode;if(d=d.childContextTypes,typeof w.getChildContext!="function")return g;w=w.getChildContext();for(var S in w)if(!(S in d))throw Error(i(108,R(l)||"Unknown",S));return s({},g,w)}function er(l){return l=(l=l.stateNode)&&l.__reactInternalMemoizedMergedChildContext||In,sn=Kt.current,Ut(Kt,l),Ut(un,un.current),!0}function hr(l,d,g){var w=l.stateNode;if(!w)throw Error(i(169));g?(l=Rn(l,d,sn),w.__reactInternalMemoizedMergedChildContext=l,Dt(un),Dt(Kt),Ut(Kt,l)):Dt(un),Ut(un,g)}var Tn=Math.clz32?Math.clz32:Sn,$n=Math.log,dn=Math.LN2;function Sn(l){return l>>>=0,l===0?32:31-($n(l)/dn|0)|0}var On=64,bn=4194304;function xn(l){switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return l&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return l}}function Ye(l,d){var g=l.pendingLanes;if(g===0)return 0;var w=0,S=l.suspendedLanes,P=l.pingedLanes,N=g&268435455;if(N!==0){var Z=N&~S;Z!==0?w=xn(Z):(P&=N,P!==0&&(w=xn(P)))}else N=g&~S,N!==0?w=xn(N):P!==0&&(w=xn(P));if(w===0)return 0;if(d!==0&&d!==w&&!(d&S)&&(S=w&-w,P=d&-d,S>=P||S===16&&(P&4194240)!==0))return d;if(w&4&&(w|=g&16),d=l.entangledLanes,d!==0)for(l=l.entanglements,d&=w;0g;g++)d.push(l);return d}function ht(l,d,g){l.pendingLanes|=d,d!==536870912&&(l.suspendedLanes=0,l.pingedLanes=0),l=l.eventTimes,d=31-Tn(d),l[d]=g}function ot(l,d){var g=l.pendingLanes&~d;l.pendingLanes=d,l.suspendedLanes=0,l.pingedLanes=0,l.expiredLanes&=d,l.mutableReadLanes&=d,l.entangledLanes&=d,d=l.entanglements;var w=l.eventTimes;for(l=l.expirationTimes;0>=N,S-=N,zo=1<<32-Tn(d)+S|g<kn?(Hr=Zt,Zt=null):Hr=Zt.sibling;var jn=it(ue,Zt,be[kn],ut);if(jn===null){Zt===null&&(Zt=Hr);break}l&&Zt&&jn.alternate===null&&d(ue,Zt),re=P(jn,re,kn),rn===null?Tt=jn:rn.sibling=jn,rn=jn,Zt=Hr}if(kn===be.length)return g(ue,Zt),tr&&ol(ue,kn),Tt;if(Zt===null){for(;knkn?(Hr=Zt,Zt=null):Hr=Zt.sibling;var ji=it(ue,Zt,jn.value,ut);if(ji===null){Zt===null&&(Zt=Hr);break}l&&Zt&&ji.alternate===null&&d(ue,Zt),re=P(ji,re,kn),rn===null?Tt=ji:rn.sibling=ji,rn=ji,Zt=Hr}if(jn.done)return g(ue,Zt),tr&&ol(ue,kn),Tt;if(Zt===null){for(;!jn.done;kn++,jn=be.next())jn=Jt(ue,jn.value,ut),jn!==null&&(re=P(jn,re,kn),rn===null?Tt=jn:rn.sibling=jn,rn=jn);return tr&&ol(ue,kn),Tt}for(Zt=w(ue,Zt);!jn.done;kn++,jn=be.next())jn=Qn(Zt,ue,kn,jn.value,ut),jn!==null&&(l&&jn.alternate!==null&&Zt.delete(jn.key===null?kn:jn.key),re=P(jn,re,kn),rn===null?Tt=jn:rn.sibling=jn,rn=jn);return l&&Zt.forEach(function(r7){return d(ue,r7)}),tr&&ol(ue,kn),Tt}function Ha(ue,re,be,ut){if(typeof be=="object"&&be!==null&&be.type===h&&be.key===null&&(be=be.props.children),typeof be=="object"&&be!==null){switch(be.$$typeof){case f:e:{for(var Tt=be.key,rn=re;rn!==null;){if(rn.key===Tt){if(Tt=be.type,Tt===h){if(rn.tag===7){g(ue,rn.sibling),re=S(rn,be.props.children),re.return=ue,ue=re;break e}}else if(rn.elementType===Tt||typeof Tt=="object"&&Tt!==null&&Tt.$$typeof===_&&D2(Tt)===rn.type){g(ue,rn.sibling),re=S(rn,be.props),re.ref=Hu(ue,rn,be),re.return=ue,ue=re;break e}g(ue,rn);break}else d(ue,rn);rn=rn.sibling}be.type===h?(re=dl(be.props.children,ue.mode,ut,be.key),re.return=ue,ue=re):(ut=gp(be.type,be.key,be.props,null,ue.mode,ut),ut.ref=Hu(ue,re,be),ut.return=ue,ue=ut)}return N(ue);case p:e:{for(rn=be.key;re!==null;){if(re.key===rn)if(re.tag===4&&re.stateNode.containerInfo===be.containerInfo&&re.stateNode.implementation===be.implementation){g(ue,re.sibling),re=S(re,be.children||[]),re.return=ue,ue=re;break e}else{g(ue,re);break}else d(ue,re);re=re.sibling}re=av(be,ue.mode,ut),re.return=ue,ue=re}return N(ue);case _:return rn=be._init,Ha(ue,re,rn(be._payload),ut)}if(Q(be))return Fn(ue,re,be,ut);if(E(be))return jo(ue,re,be,ut);Vf(ue,be)}return typeof be=="string"&&be!==""||typeof be=="number"?(be=""+be,re!==null&&re.tag===6?(g(ue,re.sibling),re=S(re,be),re.return=ue,ue=re):(g(ue,re),re=sv(be,ue.mode,ut),re.return=ue,ue=re),N(ue)):g(ue,re)}return Ha}var sc=A2(!0),N2=A2(!1),Wu={},ns=vt(Wu),Vu=vt(Wu),ac=vt(Wu);function aa(l){if(l===Wu)throw Error(i(174));return l}function x0(l,d){Ut(ac,d),Ut(Vu,l),Ut(ns,Wu),l=L(d),Dt(ns),Ut(ns,l)}function ic(){Dt(ns),Dt(Vu),Dt(ac)}function T2(l){var d=aa(ac.current),g=aa(ns.current);d=X(g,l.type,d),g!==d&&(Ut(Vu,l),Ut(ns,d))}function y0(l){Vu.current===l&&(Dt(ns),Dt(Vu))}var lr=vt(0);function Uf(l){for(var d=l;d!==null;){if(d.tag===13){var g=d.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||Fr(g)||na(g)))return d}else if(d.tag===19&&d.memoizedProps.revealOrder!==void 0){if(d.flags&128)return d}else if(d.child!==null){d.child.return=d,d=d.child;continue}if(d===l)break;for(;d.sibling===null;){if(d.return===null||d.return===l)return null;d=d.return}d.sibling.return=d.return,d=d.sibling}return null}var w0=[];function C0(){for(var l=0;lg?g:4,l(!0);var w=S0.transition;S0.transition={};try{l(!1),d()}finally{Re=g,S0.transition=w}}function ew(){return rs().memoizedState}function O8(l,d,g){var w=Ci(l);if(g={lane:w,action:g,hasEagerState:!1,eagerState:null,next:null},tw(l))nw(d,g);else if(g=j2(l,d,g,w),g!==null){var S=oo();os(g,l,w,S),rw(g,d,w)}}function M8(l,d,g){var w=Ci(l),S={lane:w,action:g,hasEagerState:!1,eagerState:null,next:null};if(tw(l))nw(d,S);else{var P=l.alternate;if(l.lanes===0&&(P===null||P.lanes===0)&&(P=d.lastRenderedReducer,P!==null))try{var N=d.lastRenderedState,Z=P(N,g);if(S.hasEagerState=!0,S.eagerState=Z,fn(Z,N)){var pe=d.interleaved;pe===null?(S.next=S,m0(d)):(S.next=pe.next,pe.next=S),d.interleaved=S;return}}catch{}finally{}g=j2(l,d,S,w),g!==null&&(S=oo(),os(g,l,w,S),rw(g,d,w))}}function tw(l){var d=l.alternate;return l===cr||d!==null&&d===cr}function nw(l,d){Uu=qf=!0;var g=l.pending;g===null?d.next=d:(d.next=g.next,g.next=d),l.pending=d}function rw(l,d,g){if(g&4194240){var w=d.lanes;w&=l.pendingLanes,g|=w,d.lanes=g,Ae(l,g)}}var Qf={readContext:ts,useCallback:to,useContext:to,useEffect:to,useImperativeHandle:to,useInsertionEffect:to,useLayoutEffect:to,useMemo:to,useReducer:to,useRef:to,useState:to,useDebugValue:to,useDeferredValue:to,useTransition:to,useMutableSource:to,useSyncExternalStore:to,useId:to,unstable_isNewReconciler:!1},R8={readContext:ts,useCallback:function(l,d){return ia().memoizedState=[l,d===void 0?null:d],l},useContext:ts,useEffect:G2,useImperativeHandle:function(l,d,g){return g=g!=null?g.concat([l]):null,Kf(4194308,4,X2.bind(null,d,l),g)},useLayoutEffect:function(l,d){return Kf(4194308,4,l,d)},useInsertionEffect:function(l,d){return Kf(4,2,l,d)},useMemo:function(l,d){var g=ia();return d=d===void 0?null:d,l=l(),g.memoizedState=[l,d],l},useReducer:function(l,d,g){var w=ia();return d=g!==void 0?g(d):d,w.memoizedState=w.baseState=d,l={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:d},w.queue=l,l=l.dispatch=O8.bind(null,cr,l),[w.memoizedState,l]},useRef:function(l){var d=ia();return l={current:l},d.memoizedState=l},useState:V2,useDebugValue:O0,useDeferredValue:function(l){return ia().memoizedState=l},useTransition:function(){var l=V2(!1),d=l[0];return l=E8.bind(null,l[1]),ia().memoizedState=l,[d,l]},useMutableSource:function(){},useSyncExternalStore:function(l,d,g){var w=cr,S=ia();if(tr){if(g===void 0)throw Error(i(407));g=g()}else{if(g=d(),Br===null)throw Error(i(349));al&30||F2(w,d,g)}S.memoizedState=g;var P={value:g,getSnapshot:d};return S.queue=P,G2(B2.bind(null,w,P,l),[l]),w.flags|=2048,Ku(9,z2.bind(null,w,P,g,d),void 0,null),g},useId:function(){var l=ia(),d=Br.identifierPrefix;if(tr){var g=eo,w=zo;g=(w&~(1<<32-Tn(w)-1)).toString(32)+g,d=":"+d+"R"+g,g=Gu++,0Y0&&(d.flags|=128,w=!0,Yu(S,!1),d.lanes=4194304)}else{if(!w)if(l=Uf(P),l!==null){if(d.flags|=128,w=!0,l=l.updateQueue,l!==null&&(d.updateQueue=l,d.flags|=4),Yu(S,!0),S.tail===null&&S.tailMode==="hidden"&&!P.alternate&&!tr)return no(d),null}else 2*Ue()-S.renderingStartTime>Y0&&g!==1073741824&&(d.flags|=128,w=!0,Yu(S,!1),d.lanes=4194304);S.isBackwards?(P.sibling=d.child,d.child=P):(l=S.last,l!==null?l.sibling=P:d.child=P,S.last=P)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=Ue(),d.sibling=null,l=lr.current,Ut(lr,w?l&1|2:l&1),d):(no(d),null);case 22:case 23:return nv(),g=d.memoizedState!==null,l!==null&&l.memoizedState!==null!==g&&(d.flags|=8192),g&&d.mode&1?Ho&1073741824&&(no(d),fe&&d.subtreeFlags&6&&(d.flags|=8192)):no(d),null;case 24:return null;case 25:return null}throw Error(i(156,d.tag))}function z8(l,d){switch(i0(d),d.tag){case 1:return Zn(d.type)&&Pt(),l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 3:return ic(),Dt(un),Dt(Kt),C0(),l=d.flags,l&65536&&!(l&128)?(d.flags=l&-65537|128,d):null;case 5:return y0(d),null;case 13:if(Dt(lr),l=d.memoizedState,l!==null&&l.dehydrated!==null){if(d.alternate===null)throw Error(i(340));nc()}return l=d.flags,l&65536?(d.flags=l&-65537|128,d):null;case 19:return Dt(lr),null;case 4:return ic(),null;case 10:return p0(d.type._context),null;case 22:case 23:return nv(),null;case 24:return null;default:return null}}var tp=!1,ro=!1,B8=typeof WeakSet=="function"?WeakSet:Set,pt=null;function cc(l,d){var g=l.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(w){nr(l,d,w)}else g.current=null}function F0(l,d,g){try{g()}catch(w){nr(l,d,w)}}var Cw=!1;function H8(l,d){for(F(l.containerInfo),pt=d;pt!==null;)if(l=pt,d=l.child,(l.subtreeFlags&1028)!==0&&d!==null)d.return=l,pt=d;else for(;pt!==null;){l=pt;try{var g=l.alternate;if(l.flags&1024)switch(l.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var w=g.memoizedProps,S=g.memoizedState,P=l.stateNode,N=P.getSnapshotBeforeUpdate(l.elementType===l.type?w:Is(l.type,w),S);P.__reactInternalSnapshotBeforeUpdate=N}break;case 3:fe&&ln(l.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(Z){nr(l,l.return,Z)}if(d=l.sibling,d!==null){d.return=l.return,pt=d;break}pt=l.return}return g=Cw,Cw=!1,g}function Ju(l,d,g){var w=d.updateQueue;if(w=w!==null?w.lastEffect:null,w!==null){var S=w=w.next;do{if((S.tag&l)===l){var P=S.destroy;S.destroy=void 0,P!==void 0&&F0(d,g,P)}S=S.next}while(S!==w)}}function np(l,d){if(d=d.updateQueue,d=d!==null?d.lastEffect:null,d!==null){var g=d=d.next;do{if((g.tag&l)===l){var w=g.create;g.destroy=w()}g=g.next}while(g!==d)}}function z0(l){var d=l.ref;if(d!==null){var g=l.stateNode;switch(l.tag){case 5:l=V(g);break;default:l=g}typeof d=="function"?d(l):d.current=l}}function Sw(l){var d=l.alternate;d!==null&&(l.alternate=null,Sw(d)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(d=l.stateNode,d!==null&&De(d)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}function kw(l){return l.tag===5||l.tag===3||l.tag===4}function jw(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||kw(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function B0(l,d,g){var w=l.tag;if(w===5||w===6)l=l.stateNode,d?vn(g,l,d):xt(g,l);else if(w!==4&&(l=l.child,l!==null))for(B0(l,d,g),l=l.sibling;l!==null;)B0(l,d,g),l=l.sibling}function H0(l,d,g){var w=l.tag;if(w===5||w===6)l=l.stateNode,d?Ke(g,l,d):we(g,l);else if(w!==4&&(l=l.child,l!==null))for(H0(l,d,g),l=l.sibling;l!==null;)H0(l,d,g),l=l.sibling}var Xr=null,Es=!1;function ca(l,d,g){for(g=g.child;g!==null;)W0(l,d,g),g=g.sibling}function W0(l,d,g){if(gn&&typeof gn.onCommitFiberUnmount=="function")try{gn.onCommitFiberUnmount(Xn,g)}catch{}switch(g.tag){case 5:ro||cc(g,d);case 6:if(fe){var w=Xr,S=Es;Xr=null,ca(l,d,g),Xr=w,Es=S,Xr!==null&&(Es?Ze(Xr,g.stateNode):_e(Xr,g.stateNode))}else ca(l,d,g);break;case 18:fe&&Xr!==null&&(Es?He(Xr,g.stateNode):yt(Xr,g.stateNode));break;case 4:fe?(w=Xr,S=Es,Xr=g.stateNode.containerInfo,Es=!0,ca(l,d,g),Xr=w,Es=S):(he&&(w=g.stateNode.containerInfo,S=wr(w),Vn(w,S)),ca(l,d,g));break;case 0:case 11:case 14:case 15:if(!ro&&(w=g.updateQueue,w!==null&&(w=w.lastEffect,w!==null))){S=w=w.next;do{var P=S,N=P.destroy;P=P.tag,N!==void 0&&(P&2||P&4)&&F0(g,d,N),S=S.next}while(S!==w)}ca(l,d,g);break;case 1:if(!ro&&(cc(g,d),w=g.stateNode,typeof w.componentWillUnmount=="function"))try{w.props=g.memoizedProps,w.state=g.memoizedState,w.componentWillUnmount()}catch(Z){nr(g,d,Z)}ca(l,d,g);break;case 21:ca(l,d,g);break;case 22:g.mode&1?(ro=(w=ro)||g.memoizedState!==null,ca(l,d,g),ro=w):ca(l,d,g);break;default:ca(l,d,g)}}function _w(l){var d=l.updateQueue;if(d!==null){l.updateQueue=null;var g=l.stateNode;g===null&&(g=l.stateNode=new B8),d.forEach(function(w){var S=Y8.bind(null,l,w);g.has(w)||(g.add(w),w.then(S,S))})}}function Os(l,d){var g=d.deletions;if(g!==null)for(var w=0;w";case op:return":has("+(G0(l)||"")+")";case sp:return'[role="'+l.value+'"]';case ip:return'"'+l.value+'"';case ap:return'[data-testname="'+l.value+'"]';default:throw Error(i(365))}}function Rw(l,d){var g=[];l=[l,0];for(var w=0;wS&&(S=N),w&=~P}if(w=S,w=Ue()-w,w=(120>w?120:480>w?480:1080>w?1080:1920>w?1920:3e3>w?3e3:4320>w?4320:1960*V8(w/1960))-w,10l?16:l,wi===null)var w=!1;else{if(l=wi,wi=null,fp=0,an&6)throw Error(i(331));var S=an;for(an|=4,pt=l.current;pt!==null;){var P=pt,N=P.child;if(pt.flags&16){var Z=P.deletions;if(Z!==null){for(var pe=0;peUe()-Q0?ll(l,0):X0|=g),ko(l,d)}function Bw(l,d){d===0&&(l.mode&1?(d=bn,bn<<=1,!(bn&130023424)&&(bn=4194304)):d=1);var g=oo();l=sa(l,d),l!==null&&(ht(l,d,g),ko(l,g))}function Q8(l){var d=l.memoizedState,g=0;d!==null&&(g=d.retryLane),Bw(l,g)}function Y8(l,d){var g=0;switch(l.tag){case 13:var w=l.stateNode,S=l.memoizedState;S!==null&&(g=S.retryLane);break;case 19:w=l.stateNode;break;default:throw Error(i(314))}w!==null&&w.delete(d),Bw(l,g)}var Hw;Hw=function(l,d,g){if(l!==null)if(l.memoizedProps!==d.pendingProps||un.current)Co=!0;else{if(!(l.lanes&g)&&!(d.flags&128))return Co=!1,L8(l,d,g);Co=!!(l.flags&131072)}else Co=!1,tr&&d.flags&1048576&&x2(d,ho,d.index);switch(d.lanes=0,d.tag){case 2:var w=d.type;Jf(l,d),l=d.pendingProps;var S=Mr(d,Kt.current);oc(d,g),S=j0(null,d,w,l,S,g);var P=_0();return d.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(d.tag=1,d.memoizedState=null,d.updateQueue=null,Zn(w)?(P=!0,er(d)):P=!1,d.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,g0(d),S.updater=Wf,d.stateNode=S,S._reactInternals=d,b0(d,w,l,g),d=A0(null,d,w,!0,P,g)):(d.tag=0,tr&&P&&a0(d),vo(null,d,S,g),d=d.child),d;case 16:w=d.elementType;e:{switch(Jf(l,d),l=d.pendingProps,S=w._init,w=S(w._payload),d.type=w,S=d.tag=Z8(w),l=Is(w,l),S){case 0:d=D0(null,d,w,l,g);break e;case 1:d=hw(null,d,w,l,g);break e;case 11:d=cw(null,d,w,l,g);break e;case 14:d=uw(null,d,w,Is(w.type,l),g);break e}throw Error(i(306,w,""))}return d;case 0:return w=d.type,S=d.pendingProps,S=d.elementType===w?S:Is(w,S),D0(l,d,w,S,g);case 1:return w=d.type,S=d.pendingProps,S=d.elementType===w?S:Is(w,S),hw(l,d,w,S,g);case 3:e:{if(mw(d),l===null)throw Error(i(387));w=d.pendingProps,P=d.memoizedState,S=P.element,_2(l,d),Hf(d,w,null,g);var N=d.memoizedState;if(w=N.element,Ce&&P.isDehydrated)if(P={element:w,isDehydrated:!1,cache:N.cache,pendingSuspenseBoundaries:N.pendingSuspenseBoundaries,transitions:N.transitions},d.updateQueue.baseState=P,d.memoizedState=P,d.flags&256){S=lc(Error(i(423)),d),d=gw(l,d,w,g,S);break e}else if(w!==S){S=lc(Error(i(424)),d),d=gw(l,d,w,g,S);break e}else for(Ce&&(es=ee(d.stateNode.containerInfo),Bo=d,tr=!0,Ps=null,Bu=!1),g=N2(d,null,w,g),d.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(nc(),w===S){d=za(l,d,g);break e}vo(l,d,w,g)}d=d.child}return d;case 5:return T2(d),l===null&&c0(d),w=d.type,S=d.pendingProps,P=l!==null?l.memoizedProps:null,N=S.children,U(w,S)?N=null:P!==null&&U(w,P)&&(d.flags|=32),pw(l,d),vo(l,d,N,g),d.child;case 6:return l===null&&c0(d),null;case 13:return vw(l,d,g);case 4:return x0(d,d.stateNode.containerInfo),w=d.pendingProps,l===null?d.child=sc(d,null,w,g):vo(l,d,w,g),d.child;case 11:return w=d.type,S=d.pendingProps,S=d.elementType===w?S:Is(w,S),cw(l,d,w,S,g);case 7:return vo(l,d,d.pendingProps,g),d.child;case 8:return vo(l,d,d.pendingProps.children,g),d.child;case 12:return vo(l,d,d.pendingProps.children,g),d.child;case 10:e:{if(w=d.type._context,S=d.pendingProps,P=d.memoizedProps,N=S.value,k2(d,w,N),P!==null)if(fn(P.value,N)){if(P.children===S.children&&!un.current){d=za(l,d,g);break e}}else for(P=d.child,P!==null&&(P.return=d);P!==null;){var Z=P.dependencies;if(Z!==null){N=P.child;for(var pe=Z.firstContext;pe!==null;){if(pe.context===w){if(P.tag===1){pe=Fa(-1,g&-g),pe.tag=2;var ze=P.updateQueue;if(ze!==null){ze=ze.shared;var mt=ze.pending;mt===null?pe.next=pe:(pe.next=mt.next,mt.next=pe),ze.pending=pe}}P.lanes|=g,pe=P.alternate,pe!==null&&(pe.lanes|=g),h0(P.return,g,d),Z.lanes|=g;break}pe=pe.next}}else if(P.tag===10)N=P.type===d.type?null:P.child;else if(P.tag===18){if(N=P.return,N===null)throw Error(i(341));N.lanes|=g,Z=N.alternate,Z!==null&&(Z.lanes|=g),h0(N,g,d),N=P.sibling}else N=P.child;if(N!==null)N.return=P;else for(N=P;N!==null;){if(N===d){N=null;break}if(P=N.sibling,P!==null){P.return=N.return,N=P;break}N=N.return}P=N}vo(l,d,S.children,g),d=d.child}return d;case 9:return S=d.type,w=d.pendingProps.children,oc(d,g),S=ts(S),w=w(S),d.flags|=1,vo(l,d,w,g),d.child;case 14:return w=d.type,S=Is(w,d.pendingProps),S=Is(w.type,S),uw(l,d,w,S,g);case 15:return dw(l,d,d.type,d.pendingProps,g);case 17:return w=d.type,S=d.pendingProps,S=d.elementType===w?S:Is(w,S),Jf(l,d),d.tag=1,Zn(w)?(l=!0,er(d)):l=!1,oc(d,g),M2(d,w,S),b0(d,w,S,g),A0(null,d,w,!0,l,g);case 19:return xw(l,d,g);case 22:return fw(l,d,g)}throw Error(i(156,d.tag))};function Ww(l,d){return Ve(l,d)}function J8(l,d,g,w){this.tag=l,this.key=g,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=d,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=w,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ss(l,d,g,w){return new J8(l,d,g,w)}function ov(l){return l=l.prototype,!(!l||!l.isReactComponent)}function Z8(l){if(typeof l=="function")return ov(l)?1:0;if(l!=null){if(l=l.$$typeof,l===x)return 11;if(l===j)return 14}return 2}function ki(l,d){var g=l.alternate;return g===null?(g=ss(l.tag,d,l.key,l.mode),g.elementType=l.elementType,g.type=l.type,g.stateNode=l.stateNode,g.alternate=l,l.alternate=g):(g.pendingProps=d,g.type=l.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=l.flags&14680064,g.childLanes=l.childLanes,g.lanes=l.lanes,g.child=l.child,g.memoizedProps=l.memoizedProps,g.memoizedState=l.memoizedState,g.updateQueue=l.updateQueue,d=l.dependencies,g.dependencies=d===null?null:{lanes:d.lanes,firstContext:d.firstContext},g.sibling=l.sibling,g.index=l.index,g.ref=l.ref,g}function gp(l,d,g,w,S,P){var N=2;if(w=l,typeof l=="function")ov(l)&&(N=1);else if(typeof l=="string")N=5;else e:switch(l){case h:return dl(g.children,S,P,d);case m:N=8,S|=8;break;case v:return l=ss(12,g,d,S|2),l.elementType=v,l.lanes=P,l;case C:return l=ss(13,g,d,S),l.elementType=C,l.lanes=P,l;case k:return l=ss(19,g,d,S),l.elementType=k,l.lanes=P,l;case I:return vp(g,S,P,d);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case b:N=10;break e;case y:N=9;break e;case x:N=11;break e;case j:N=14;break e;case _:N=16,w=null;break e}throw Error(i(130,l==null?l:typeof l,""))}return d=ss(N,g,d,S),d.elementType=l,d.type=w,d.lanes=P,d}function dl(l,d,g,w){return l=ss(7,l,w,d),l.lanes=g,l}function vp(l,d,g,w){return l=ss(22,l,w,d),l.elementType=I,l.lanes=g,l.stateNode={isHidden:!1},l}function sv(l,d,g){return l=ss(6,l,null,d),l.lanes=g,l}function av(l,d,g){return d=ss(4,l.children!==null?l.children:[],l.key,d),d.lanes=g,d.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},d}function e7(l,d,g,w,S){this.tag=d,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=oe,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Bt(0),this.expirationTimes=Bt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Bt(0),this.identifierPrefix=w,this.onRecoverableError=S,Ce&&(this.mutableSourceEagerHydrationData=null)}function Vw(l,d,g,w,S,P,N,Z,pe){return l=new e7(l,d,g,Z,pe),d===1?(d=1,P===!0&&(d|=8)):d=0,P=ss(3,null,null,d),l.current=P,P.stateNode=l,P.memoizedState={element:w,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},g0(P),l}function Uw(l){if(!l)return In;l=l._reactInternals;e:{if(A(l)!==l||l.tag!==1)throw Error(i(170));var d=l;do{switch(d.tag){case 3:d=d.stateNode.context;break e;case 1:if(Zn(d.type)){d=d.stateNode.__reactInternalMemoizedMergedChildContext;break e}}d=d.return}while(d!==null);throw Error(i(171))}if(l.tag===1){var g=l.type;if(Zn(g))return Rn(l,g,d)}return d}function Gw(l){var d=l._reactInternals;if(d===void 0)throw typeof l.render=="function"?Error(i(188)):(l=Object.keys(l).join(","),Error(i(268,l)));return l=K(d),l===null?null:l.stateNode}function qw(l,d){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var g=l.retryLane;l.retryLane=g!==0&&g=ze&&P>=Jt&&S<=mt&&N<=it){l.splice(d,1);break}else if(w!==ze||g.width!==pe.width||itN){if(!(P!==Jt||g.height!==pe.height||mtS)){ze>w&&(pe.width+=ze-w,pe.x=w),mtP&&(pe.height+=Jt-P,pe.y=P),itg&&(g=N)),N ")+` - -No matching component was found for: - `)+l.join(" > ")}return null},n.getPublicRootInstance=function(l){if(l=l.current,!l.child)return null;switch(l.child.tag){case 5:return V(l.child.stateNode);default:return l.child.stateNode}},n.injectIntoDevTools=function(l){if(l={bundleType:l.bundleType,version:l.version,rendererPackageName:l.rendererPackageName,rendererConfig:l.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:c.ReactCurrentDispatcher,findHostInstanceByFiber:t7,findFiberByHostInstance:l.findFiberByHostInstance||n7,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")l=!1;else{var d=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(d.isDisabled||!d.supportsFiber)l=!0;else{try{Xn=d.inject(l),gn=d}catch{}l=!!d.checkDCE}}return l},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(l,d,g,w){if(!lt)throw Error(i(363));l=q0(l,d);var S=zt(l,g,w).disconnect;return{disconnect:function(){S()}}},n.registerMutableSourceForHydration=function(l,d){var g=d._getVersion;g=g(d._source),l.mutableSourceEagerHydrationData==null?l.mutableSourceEagerHydrationData=[d,g]:l.mutableSourceEagerHydrationData.push(d,g)},n.runWithPriority=function(l,d){var g=Re;try{return Re=l,d()}finally{Re=g}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(l,d,g,w){var S=d.current,P=oo(),N=Ci(S);return g=Uw(g),d.context===null?d.context=g:d.pendingContext=g,d=Fa(P,N),d.payload={element:l},w=w===void 0?null:w,w!==null&&(d.callback=w),l=xi(S,d,N),l!==null&&(os(l,S,N,P),Bf(l,S,N)),N},n};h8.exports=lhe;var che=h8.exports;const uhe=Cu(che);var m8={exports:{}},tc={};/** - * @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. - */tc.ConcurrentRoot=1;tc.ContinuousEventPriority=4;tc.DefaultEventPriority=16;tc.DiscreteEventPriority=1;tc.IdleEventPriority=536870912;tc.LegacyRoot=0;m8.exports=tc;var g8=m8.exports;const w_={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let C_=!1,S_=!1;const g2=".react-konva-event",dhe=`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 -`,fhe=`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 -`,phe={};function s0(e,t,n=phe){if(!C_&&"zIndex"in t&&(console.warn(fhe),C_=!0),!S_&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(dhe),S_=!0)}for(var s in n)if(!w_[s]){var i=s.slice(0,2)==="on",c=n[s]!==t[s];if(i&&c){var f=s.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),e.off(f,n[s])}var p=!t.hasOwnProperty(s);p&&e.setAttr(s,void 0)}var h=t._useStrictMode,m={},v=!1;const b={};for(var s in t)if(!w_[s]){var i=s.slice(0,2)==="on",y=n[s]!==t[s];if(i&&y){var f=s.substr(2).toLowerCase();f.substr(0,7)==="content"&&(f="content"+f.substr(7,1).toUpperCase()+f.substr(8)),t[s]&&(b[f]=t[s])}!i&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,m[s]=t[s])}v&&(e.setAttrs(m),rl(e));for(var f in b)e.on(f+g2,b[f])}function rl(e){if(!eN.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const v8={},hhe={};Jd.Node.prototype._applyProps=s0;function mhe(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),rl(e)}function ghe(e,t,n){let r=Jd[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=Jd.Group);const o={},s={};for(var i in t){var c=i.slice(0,2)==="on";c?s[i]=t[i]:o[i]=t[i]}const f=new r(o);return s0(f,s),f}function vhe(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function bhe(e,t,n){return!1}function xhe(e){return e}function yhe(){return null}function whe(){return null}function Che(e,t,n,r){return hhe}function She(){}function khe(e){}function jhe(e,t){return!1}function _he(){return v8}function Phe(){return v8}const Ihe=setTimeout,Ehe=clearTimeout,Ohe=-1;function Mhe(e,t){return!1}const Rhe=!1,Dhe=!0,Ahe=!0;function Nhe(e,t){t.parent===e?t.moveToTop():e.add(t),rl(e)}function The(e,t){t.parent===e?t.moveToTop():e.add(t),rl(e)}function b8(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),rl(e)}function $he(e,t,n){b8(e,t,n)}function Lhe(e,t){t.destroy(),t.off(g2),rl(e)}function Fhe(e,t){t.destroy(),t.off(g2),rl(e)}function zhe(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function Bhe(e,t,n){}function Hhe(e,t,n,r,o){s0(e,o,r)}function Whe(e){e.hide(),rl(e)}function Vhe(e){}function Uhe(e,t){(t.visible==null||t.visible)&&e.show()}function Ghe(e,t){}function qhe(e){}function Khe(){}const Xhe=()=>g8.DefaultEventPriority,Qhe=Object.freeze(Object.defineProperty({__proto__:null,appendChild:Nhe,appendChildToContainer:The,appendInitialChild:mhe,cancelTimeout:Ehe,clearContainer:qhe,commitMount:Bhe,commitTextUpdate:zhe,commitUpdate:Hhe,createInstance:ghe,createTextInstance:vhe,detachDeletedInstance:Khe,finalizeInitialChildren:bhe,getChildHostContext:Phe,getCurrentEventPriority:Xhe,getPublicInstance:xhe,getRootHostContext:_he,hideInstance:Whe,hideTextInstance:Vhe,idlePriority:oh.unstable_IdlePriority,insertBefore:b8,insertInContainerBefore:$he,isPrimaryRenderer:Rhe,noTimeout:Ohe,now:oh.unstable_now,prepareForCommit:yhe,preparePortalMount:whe,prepareUpdate:Che,removeChild:Lhe,removeChildFromContainer:Fhe,resetAfterCommit:She,resetTextContent:khe,run:oh.unstable_runWithPriority,scheduleTimeout:Ihe,shouldDeprioritizeSubtree:jhe,shouldSetTextContent:Mhe,supportsMutation:Ahe,unhideInstance:Uhe,unhideTextInstance:Ghe,warnsIfNotActing:Dhe},Symbol.toStringTag,{value:"Module"}));var Yhe=Object.defineProperty,Jhe=Object.defineProperties,Zhe=Object.getOwnPropertyDescriptors,k_=Object.getOwnPropertySymbols,eme=Object.prototype.hasOwnProperty,tme=Object.prototype.propertyIsEnumerable,j_=(e,t,n)=>t in e?Yhe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__=(e,t)=>{for(var n in t||(t={}))eme.call(t,n)&&j_(e,n,t[n]);if(k_)for(var n of k_(t))tme.call(t,n)&&j_(e,n,t[n]);return e},nme=(e,t)=>Jhe(e,Zhe(t));function x8(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=x8(r,t,n);if(o)return o;r=t?null:r.sibling}}function y8(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const v2=y8(u.createContext(null));class w8 extends u.Component{render(){return u.createElement(v2.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:P_,ReactCurrentDispatcher:I_}=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function rme(){const e=u.useContext(v2);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=u.useId();return u.useMemo(()=>{for(const r of[P_==null?void 0:P_.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=x8(r,!1,s=>{let i=s.memoizedState;for(;i;){if(i.memoizedState===t)return!0;i=i.next}});if(o)return o}},[e,t])}function ome(){var e,t;const n=rme(),[r]=u.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==v2&&!r.has(s)&&r.set(s,(t=I_==null?void 0:I_.current)==null?void 0:t.readContext(y8(s))),o=o.return}return r}function sme(){const e=ome();return u.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>u.createElement(t,null,u.createElement(n.Provider,nme(__({},r),{value:e.get(n)}))),t=>u.createElement(w8,__({},t))),[e])}function ame(e){const t=H.useRef({});return H.useLayoutEffect(()=>{t.current=e}),H.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const ime=e=>{const t=H.useRef(),n=H.useRef(),r=H.useRef(),o=ame(e),s=sme(),i=c=>{const{forwardedRef:f}=e;f&&(typeof f=="function"?f(c):f.current=c)};return H.useLayoutEffect(()=>(n.current=new Jd.Stage({width:e.width,height:e.height,container:t.current}),i(n.current),r.current=Sd.createContainer(n.current,g8.LegacyRoot,!1,null),Sd.updateContainer(H.createElement(s,{},e.children),r.current),()=>{Jd.isBrowser&&(i(null),Sd.updateContainer(null,r.current,null),n.current.destroy())}),[]),H.useLayoutEffect(()=>{i(n.current),s0(n.current,e,o),Sd.updateContainer(H.createElement(s,{},e.children),r.current,null)}),H.createElement("div",{ref:t,id:e.id,accessKey:e.accessKey,className:e.className,role:e.role,style:e.style,tabIndex:e.tabIndex,title:e.title})},md="Layer",ci="Group",Ra="Rect",pl="Circle",$m="Line",C8="Image",lme="Transformer",Sd=uhe(Qhe);Sd.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:H.version,rendererPackageName:"react-konva"});const cme=H.forwardRef((e,t)=>H.createElement(w8,{},H.createElement(ime,{...e,forwardedRef:t}))),ume=le([An,ks],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:mn}}),dme=()=>{const e=se(),{tool:t,isStaging:n,isMovingBoundingBox:r}=z(ume);return{handleDragStart:u.useCallback(()=>{(t==="move"||n)&&!r&&e(kh(!0))},[e,r,n,t]),handleDragMove:u.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(w3(s))},[e,r,n,t]),handleDragEnd:u.useCallback(()=>{(t==="move"||n)&&!r&&e(kh(!1))},[e,r,n,t])}},fme=le([An,jr,ks],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isMaskEnabled:c,shouldSnapToGrid:f}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isStaging:n,isMaskEnabled:c,shouldSnapToGrid:f}},{memoizeOptions:{resultEqualityCheck:mn}}),pme=()=>{const e=se(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:i}=z(fme),c=u.useRef(null),f=C3(),p=()=>e(S3());St(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(gx(!s));St(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),St(["n"],()=>{e(jh(!i))},{enabled:!0,preventDefault:!0},[i]),St("esc",()=>{e(tN())},{enabled:()=>!0,preventDefault:!0}),St("shift+h",()=>{e(nN(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),St(["space"],m=>{m.repeat||(f==null||f.container().focus(),r!=="move"&&(c.current=r,e(Bc("move"))),r==="move"&&c.current&&c.current!=="move"&&(e(Bc(c.current)),c.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,c])},b2=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}},S8=()=>{const e=se(),t=E1(),n=C3();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=rN.pixelRatio,[s,i,c,f]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;f&&s&&i&&c&&e(oN({r:s,g:i,b:c,a:f}))},commitColorUnderCursor:()=>{e(sN())}}},hme=le([jr,An,ks],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:mn}}),mme=e=>{const t=se(),{tool:n,isStaging:r}=z(hme),{commitColorUnderCursor:o}=S8();return u.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(kh(!0));return}if(n==="colorPicker"){o();return}const i=b2(e.current);i&&(s.evt.preventDefault(),t(k3(!0)),t(aN([i.x,i.y])))},[e,n,r,t,o])},gme=le([jr,An,ks],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:mn}}),vme=(e,t,n)=>{const r=se(),{isDrawing:o,tool:s,isStaging:i}=z(gme),{updateColorUnderCursor:c}=S8();return u.useCallback(()=>{if(!e.current)return;const f=b2(e.current);if(f){if(r(iN(f)),n.current=f,s==="colorPicker"){c();return}!o||s==="move"||i||(t.current=!0,r(j3([f.x,f.y])))}},[t,r,o,i,n,e,s,c])},bme=()=>{const e=se();return u.useCallback(()=>{e(lN())},[e])},xme=le([jr,An,ks],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:mn}}),yme=(e,t)=>{const n=se(),{tool:r,isDrawing:o,isStaging:s}=z(xme);return u.useCallback(()=>{if(r==="move"||s){n(kh(!1));return}if(!t.current&&o&&e.current){const i=b2(e.current);if(!i)return;n(j3([i.x,i.y]))}else t.current=!1;n(k3(!1))},[t,n,o,s,e,r])},wme=le([An],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:mn}}),Cme=e=>{const t=se(),{isMoveStageKeyHeld:n,stageScale:r}=z(wme);return u.useCallback(o=>{if(!e.current||n)return;o.evt.preventDefault();const s=e.current.getPointerPosition();if(!s)return;const i={x:(s.x-e.current.x())/r,y:(s.y-e.current.y())/r};let c=o.evt.deltaY;o.evt.ctrlKey&&(c=-c);const f=El(r*dN**c,uN,cN),p={x:s.x-i.x*f,y:s.y-i.y*f};t(fN(f)),t(w3(p))},[e,n,r,t])},Sme=le(An,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageDimensions:r,stageScale:o,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i,stageDimensions:r,stageScale:o}},{memoizeOptions:{resultEqualityCheck:mn}}),kme=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=z(Sme);return a.jsxs(ci,{children:[a.jsx(Ra,{offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fill:"rgba(0,0,0,0.4)",listening:!1,visible:n}),a.jsx(Ra,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},jme=u.memo(kme),_me=le([An],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:mn}}),Pme=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=z(_me),{colorMode:r}=di(),[o,s]=u.useState([]),[i,c]=xa("colors",["base.800","base.200"]),f=u.useCallback(p=>p/e,[e]);return u.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:m,y:v}=t,b={x1:0,y1:0,x2:p,y2:h,offset:{x:f(m),y:f(v)}},y={x:Math.ceil(f(m)/64)*64,y:Math.ceil(f(v)/64)*64},x={x1:-y.x,y1:-y.y,x2:f(p)-y.x+64,y2:f(h)-y.y+64},k={x1:Math.min(b.x1,x.x1),y1:Math.min(b.y1,x.y1),x2:Math.max(b.x2,x.x2),y2:Math.max(b.y2,x.y2)},j=k.x2-k.x1,_=k.y2-k.y1,I=Math.round(j/64)+1,O=Math.round(_/64)+1,E=$C(0,I).map(R=>a.jsx($m,{x:k.x1+R*64,y:k.y1,points:[0,0,0,_],stroke:r==="dark"?i:c,strokeWidth:1},`x_${R}`)),M=$C(0,O).map(R=>a.jsx($m,{x:k.x1,y:k.y1+R*64,points:[0,0,j,0],stroke:r==="dark"?i:c,strokeWidth:1},`y_${R}`));s(E.concat(M))},[e,t,n,f,r,i,c]),a.jsx(ci,{children:o})},Ime=u.memo(Pme),Eme=le([Cs,An],(e,t)=>{const{progressImage:n,sessionId:r}=e,{sessionId:o,boundingBox:s}=t.layerState.stagingArea;return{boundingBox:s,progressImage:r===o?n:void 0}},{memoizeOptions:{resultEqualityCheck:mn}}),Ome=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=z(Eme),[o,s]=u.useState(null);return u.useEffect(()=>{if(!n)return;const i=new Image;i.onload=()=>{s(i)},i.src=n.dataURL},[n]),n&&r&&o?a.jsx(C8,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},Mme=u.memo(Ome),Il=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},Rme=le(An,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:Il(t)}}),E_=e=>`data:image/svg+xml;utf8, - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`.replaceAll("black",e),Dme=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=z(Rme),[i,c]=u.useState(null),[f,p]=u.useState(0),h=u.useRef(null),m=u.useCallback(()=>{p(f+1),setTimeout(m,500)},[f]);return u.useEffect(()=>{if(i)return;const v=new Image;v.onload=()=>{c(v)},v.src=E_(n)},[i,n]),u.useEffect(()=>{i&&(i.src=E_(n))},[i,n]),u.useEffect(()=>{const v=setInterval(()=>p(b=>(b+1)%5),50);return()=>clearInterval(v)},[]),!i||!pc(r.x)||!pc(r.y)||!pc(s)||!pc(o.width)||!pc(o.height)?null:a.jsx(Ra,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:i,fillPatternOffsetY:pc(f)?f:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},Ame=u.memo(Dme),Nme=le([An],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:mn}}),Tme=e=>{const{...t}=e,{objects:n}=z(Nme);return a.jsx(ci,{listening:!1,...t,children:n.filter(pN).map((r,o)=>a.jsx($m,{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"},o))})},$me=u.memo(Tme);var hl=u,Lme=function(t,n,r){const o=hl.useRef("loading"),s=hl.useRef(),[i,c]=hl.useState(0),f=hl.useRef(),p=hl.useRef(),h=hl.useRef();return(f.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,f.current=t,p.current=n,h.current=r),hl.useLayoutEffect(function(){if(!t)return;var m=document.createElement("img");function v(){o.current="loaded",s.current=m,c(Math.random())}function b(){o.current="failed",s.current=void 0,c(Math.random())}return m.addEventListener("load",v),m.addEventListener("error",b),n&&(m.crossOrigin=n),r&&(m.referrerPolicy=r),m.src=t,function(){m.removeEventListener("load",v),m.removeEventListener("error",b)}},[t,n,r]),[s.current,o.current]};const Fme=Cu(Lme),zme=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:i,isError:c}=qo(s??Yo.skipToken),[f]=Fme((i==null?void 0:i.image_url)??"",hN.get()?"use-credentials":"anonymous");return c?a.jsx(Ra,{x:r,y:o,width:t,height:n,fill:"red"}):a.jsx(C8,{x:r,y:o,image:f,listening:!1})},k8=u.memo(zme),Bme=le([An],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:mn}}),Hme=()=>{const{objects:e}=z(Bme);return e?a.jsx(ci,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(mN(t))return a.jsx(k8,{canvasImage:t},n);if(gN(t)){const r=a.jsx($m,{points:t.points,stroke:t.color?Il(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?a.jsx(ci,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(vN(t))return a.jsx(Ra,{x:t.x,y:t.y,width:t.width,height:t.height,fill:Il(t.color)},n);if(bN(t))return a.jsx(Ra,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},Wme=u.memo(Hme),Vme=le([An],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:i,height:c}}=e,{selectedImageIndex:f,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&f!==void 0?p[f]:void 0,isOnFirstImage:f===0,isOnLastImage:f===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:i,height:c}},{memoizeOptions:{resultEqualityCheck:mn}}),Ume=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:i,width:c,height:f}=z(Vme);return a.jsxs(ci,{...t,children:[r&&n&&a.jsx(k8,{canvasImage:n}),o&&a.jsxs(ci,{children:[a.jsx(Ra,{x:s,y:i,width:c,height:f,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),a.jsx(Ra,{x:s,y:i,width:c,height:f,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},Gme=u.memo(Ume),qme=le([An],e=>{const{layerState:{stagingArea:{images:t,selectedImageIndex:n,sessionId:r}},shouldShowStagingOutline:o,shouldShowStagingImage:s}=e;return{currentStagingAreaImage:t.length>0?t[n]:void 0,isOnFirstImage:n===0,isOnLastImage:n===t.length-1,shouldShowStagingImage:s,shouldShowStagingOutline:o,sessionId:r}},{memoizeOptions:{resultEqualityCheck:mn}}),Kme=()=>{const e=se(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=z(qme),{t:i}=Ie(),c=u.useCallback(()=>{e(OC(!0))},[e]),f=u.useCallback(()=>{e(OC(!1))},[e]);St(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),St(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),St(["enter"],()=>{m()},{enabled:()=>!0,preventDefault:!0});const p=u.useCallback(()=>e(xN()),[e]),h=u.useCallback(()=>e(yN()),[e]),m=u.useCallback(()=>e(wN(s)),[e,s]),{data:v}=qo((r==null?void 0:r.imageName)??Yo.skipToken);return r?a.jsx($,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",onMouseOver:c,onMouseOut:f,children:a.jsxs(vr,{isAttached:!0,borderRadius:"base",shadow:"dark-lg",children:[a.jsx(tt,{tooltip:`${i("unifiedCanvas.previous")} (Left)`,"aria-label":`${i("unifiedCanvas.previous")} (Left)`,icon:a.jsx(nJ,{}),onClick:p,colorScheme:"accent",isDisabled:t}),a.jsx(tt,{tooltip:`${i("unifiedCanvas.next")} (Right)`,"aria-label":`${i("unifiedCanvas.next")} (Right)`,icon:a.jsx(rJ,{}),onClick:h,colorScheme:"accent",isDisabled:n}),a.jsx(tt,{tooltip:`${i("unifiedCanvas.accept")} (Enter)`,"aria-label":`${i("unifiedCanvas.accept")} (Enter)`,icon:a.jsx(AE,{}),onClick:m,colorScheme:"accent"}),a.jsx(tt,{tooltip:i("unifiedCanvas.showHide"),"aria-label":i("unifiedCanvas.showHide"),"data-alert":!o,icon:o?a.jsx(bJ,{}):a.jsx(vJ,{}),onClick:()=>e(CN(!o)),colorScheme:"accent"}),a.jsx(tt,{tooltip:i("unifiedCanvas.saveToGallery"),"aria-label":i("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:a.jsx(Eg,{}),onClick:()=>{v&&e(SN({imageDTO:v}))},colorScheme:"accent"}),a.jsx(tt,{tooltip:i("unifiedCanvas.discardAll"),"aria-label":i("unifiedCanvas.discardAll"),icon:a.jsx(Yl,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(kN()),colorScheme:"error",fontSize:20})]})}):null},Xme=u.memo(Kme),Qme=()=>{const e=z(c=>c.canvas.layerState),t=z(c=>c.canvas.boundingBoxCoordinates),n=z(c=>c.canvas.boundingBoxDimensions),r=z(c=>c.canvas.isMaskEnabled),o=z(c=>c.canvas.shouldPreserveMaskedArea),[s,i]=u.useState();return u.useEffect(()=>{i(void 0)},[e,t,n,r,o]),WJ(async()=>{const c=await jN(e,t,n,r,o);if(!c)return;const{baseImageData:f,maskImageData:p}=c,h=_N(f,p);i(h)},1e3,[e,t,n,r,o]),s},Yme={txt2img:"Text to Image",img2img:"Image to Image",inpaint:"Inpaint",outpaint:"Inpaint"},Jme=()=>{const e=Qme();return a.jsxs(Fe,{children:["Mode: ",e?Yme[e]:"..."]})},Zme=u.memo(Jme),Fc=e=>Math.round(e*100)/100,ege=le([An],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${Fc(n)}, ${Fc(r)})`}},{memoizeOptions:{resultEqualityCheck:mn}});function tge(){const{cursorCoordinatesString:e}=z(ege),{t}=Ie();return a.jsx(Fe,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const Qb="var(--invokeai-colors-warning-500)",nge=le([An],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:i},scaledBoundingBoxDimensions:{width:c,height:f},boundingBoxCoordinates:{x:p,y:h},stageScale:m,shouldShowCanvasDebugInfo:v,layer:b,boundingBoxScaleMethod:y,shouldPreserveMaskedArea:x}=e;let C="inherit";return(y==="none"&&(s<512||i<512)||y==="manual"&&c*f<512*512)&&(C=Qb),{activeLayerColor:b==="mask"?Qb:"inherit",activeLayerString:b.charAt(0).toUpperCase()+b.slice(1),boundingBoxColor:C,boundingBoxCoordinatesString:`(${Fc(p)}, ${Fc(h)})`,boundingBoxDimensionsString:`${s}×${i}`,scaledBoundingBoxDimensionsString:`${c}×${f}`,canvasCoordinatesString:`${Fc(r)}×${Fc(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(m*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:y!=="auto",shouldShowScaledBoundingBox:y!=="none",shouldPreserveMaskedArea:x}},{memoizeOptions:{resultEqualityCheck:mn}}),rge=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:i,canvasCoordinatesString:c,canvasDimensionsString:f,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:m,shouldPreserveMaskedArea:v}=z(nge),{t:b}=Ie();return a.jsxs($,{sx:{flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,opacity:.65,display:"flex",fontSize:"sm",padding:1,px:2,minWidth:48,margin:1,borderRadius:"base",pointerEvents:"none",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Zme,{}),a.jsx(Fe,{style:{color:e},children:`${b("unifiedCanvas.activeLayer")}: ${t}`}),a.jsx(Fe,{children:`${b("unifiedCanvas.canvasScale")}: ${p}%`}),v&&a.jsx(Fe,{style:{color:Qb},children:"Preserve Masked Area: On"}),m&&a.jsx(Fe,{style:{color:n},children:`${b("unifiedCanvas.boundingBox")}: ${o}`}),i&&a.jsx(Fe,{style:{color:n},children:`${b("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&a.jsxs(a.Fragment,{children:[a.jsx(Fe,{children:`${b("unifiedCanvas.boundingBoxPosition")}: ${r}`}),a.jsx(Fe,{children:`${b("unifiedCanvas.canvasDimensions")}: ${f}`}),a.jsx(Fe,{children:`${b("unifiedCanvas.canvasPosition")}: ${c}`}),a.jsx(tge,{})]})]})},oge=u.memo(rge),sge=le([ke],({canvas:e,generation:t})=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:i,isMovingBoundingBox:c,tool:f,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:c,isTransformingBoundingBox:i,stageScale:o,shouldSnapToGrid:p,tool:f,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:mn}}),age=e=>{const{...t}=e,n=se(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:i,isTransformingBoundingBox:c,stageScale:f,shouldSnapToGrid:p,tool:h,hitStrokeWidth:m,aspectRatio:v}=z(sge),b=u.useRef(null),y=u.useRef(null),[x,C]=u.useState(!1);u.useEffect(()=>{var B;!b.current||!y.current||(b.current.nodes([y.current]),(B=b.current.getLayer())==null||B.batchDraw())},[]);const k=64*f;St("N",()=>{n(jh(!p))});const j=u.useCallback(B=>{if(!p){n(fv({x:Math.floor(B.target.x()),y:Math.floor(B.target.y())}));return}const G=B.target.x(),Q=B.target.y(),V=zs(G,64),L=zs(Q,64);B.target.x(V),B.target.y(L),n(fv({x:V,y:L}))},[n,p]),_=u.useCallback(()=>{if(!y.current)return;const B=y.current,G=B.scaleX(),Q=B.scaleY(),V=Math.round(B.width()*G),L=Math.round(B.height()*Q),X=Math.round(B.x()),F=Math.round(B.y());if(v){const q=zs(V/v,64);n(Ls({width:V,height:q}))}else n(Ls({width:V,height:L}));n(fv({x:p?gd(X,64):X,y:p?gd(F,64):F})),B.scaleX(1),B.scaleY(1)},[n,p,v]),I=u.useCallback((B,G,Q)=>{const V=B.x%k,L=B.y%k;return{x:gd(G.x,k)+V,y:gd(G.y,k)+L}},[k]),O=()=>{n(pv(!0))},E=()=>{n(pv(!1)),n(hv(!1)),n(Cp(!1)),C(!1)},M=()=>{n(hv(!0))},R=()=>{n(pv(!1)),n(hv(!1)),n(Cp(!1)),C(!1)},A=()=>{C(!0)},D=()=>{!c&&!i&&C(!1)},T=()=>{n(Cp(!0))},K=()=>{n(Cp(!1))};return a.jsxs(ci,{...t,children:[a.jsx(Ra,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:T,onMouseOver:T,onMouseLeave:K,onMouseOut:K}),a.jsx(Ra,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:m,listening:!s&&h==="move",onDragStart:M,onDragEnd:R,onDragMove:j,onMouseDown:M,onMouseOut:D,onMouseOver:A,onMouseEnter:A,onMouseUp:R,onTransform:_,onTransformEnd:E,ref:y,stroke:x?"rgba(255,255,255,0.7)":"white",strokeWidth:(x?8:1)/f,width:o.width,x:r.x,y:r.y}),a.jsx(lme,{anchorCornerRadius:3,anchorDragBoundFunc:I,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:!s&&h==="move",onDragStart:M,onDragEnd:R,onMouseDown:O,onMouseUp:E,onTransformEnd:E,ref:b,rotateEnabled:!1})]})},ige=u.memo(age),lge=le(An,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:i,layer:c,shouldShowBrush:f,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:m,stageDimensions:v,boundingBoxCoordinates:b,boundingBoxDimensions:y,shouldRestrictStrokesToBox:x}=e,C=x?{clipX:b.x,clipY:b.y,clipWidth:y.width,clipHeight:y.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:MC/m,colorPickerInnerRadius:(MC-O1+1)/m,maskColorString:Il({...o,a:.5}),brushColorString:Il(s),colorPickerColorString:Il(r),tool:i,layer:c,shouldShowBrush:f,shouldDrawBrushPreview:!(p||h||!t)&&f,strokeWidth:1.5/m,dotRadius:1.5/m,clip:C}},{memoizeOptions:{resultEqualityCheck:mn}}),cge=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:i,layer:c,shouldDrawBrushPreview:f,dotRadius:p,strokeWidth:h,brushColorString:m,colorPickerColorString:v,colorPickerInnerRadius:b,colorPickerOuterRadius:y,clip:x}=z(lge);return f?a.jsxs(ci,{listening:!1,...x,...t,children:[i==="colorPicker"?a.jsxs(a.Fragment,{children:[a.jsx(pl,{x:n,y:r,radius:y,stroke:m,strokeWidth:O1,strokeScaleEnabled:!1}),a.jsx(pl,{x:n,y:r,radius:b,stroke:v,strokeWidth:O1,strokeScaleEnabled:!1})]}):a.jsxs(a.Fragment,{children:[a.jsx(pl,{x:n,y:r,radius:o,fill:c==="mask"?s:m,globalCompositeOperation:i==="eraser"?"destination-out":"source-out"}),a.jsx(pl,{x:n,y:r,radius:o,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),a.jsx(pl,{x:n,y:r,radius:o,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),a.jsx(pl,{x:n,y:r,radius:p*2,fill:"rgba(255,255,255,0.4)",listening:!1}),a.jsx(pl,{x:n,y:r,radius:p,fill:"rgba(0,0,0,1)",listening:!1})]}):null},uge=u.memo(cge),dge=le([An,ks],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:i,isMovingBoundingBox:c,stageDimensions:f,stageCoordinates:p,tool:h,isMovingStage:m,shouldShowIntermediates:v,shouldShowGrid:b,shouldRestrictStrokesToBox:y,shouldAntialias:x}=e;let C="none";return h==="move"||t?m?C="grabbing":C="grab":s?C=void 0:y&&!i&&(C="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||c,shouldShowBoundingBox:o,shouldShowGrid:b,stageCoordinates:p,stageCursor:C,stageDimensions:f,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:x}},Oe),fge=Me(cme,{shouldForwardProp:e=>!["sx"].includes(e)}),pge=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:i,stageScale:c,tool:f,isStaging:p,shouldShowIntermediates:h,shouldAntialias:m}=z(dge);pme();const v=se(),b=u.useRef(null),y=u.useRef(null),x=u.useRef(null),C=u.useCallback(K=>{IN(K),y.current=K},[]),k=u.useCallback(K=>{EN(K),x.current=K},[]),j=u.useRef({x:0,y:0}),_=u.useRef(!1),I=Cme(y),O=mme(y),E=yme(y,_),M=vme(y,_,j),R=bme(),{handleDragStart:A,handleDragMove:D,handleDragEnd:T}=dme();return u.useEffect(()=>{if(!b.current)return;const K=new ResizeObserver(B=>{for(const G of B)if(G.contentBoxSize){const{width:Q,height:V}=G.contentRect;v(PN({width:Q,height:V}))}});return K.observe(b.current),()=>{K.disconnect()}},[v]),a.jsxs($,{id:"canvas-container",ref:b,sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:[a.jsx(Fe,{sx:{position:"absolute"},children:a.jsxs(fge,{tabIndex:-1,ref:C,sx:{outline:"none",overflow:"hidden",cursor:s||void 0,canvas:{outline:"none"}},x:o.x,y:o.y,width:i.width,height:i.height,scale:{x:c,y:c},onTouchStart:O,onTouchMove:M,onTouchEnd:E,onMouseDown:O,onMouseLeave:R,onMouseMove:M,onMouseUp:E,onDragStart:A,onDragMove:D,onDragEnd:T,onContextMenu:K=>K.evt.preventDefault(),onWheel:I,draggable:(f==="move"||p)&&!t,children:[a.jsx(md,{id:"grid",visible:r,children:a.jsx(Ime,{})}),a.jsx(md,{id:"base",ref:k,listening:!1,imageSmoothingEnabled:m,children:a.jsx(Wme,{})}),a.jsxs(md,{id:"mask",visible:e,listening:!1,children:[a.jsx($me,{visible:!0,listening:!1}),a.jsx(Ame,{listening:!1})]}),a.jsx(md,{children:a.jsx(jme,{})}),a.jsxs(md,{id:"preview",imageSmoothingEnabled:m,children:[!p&&a.jsx(uge,{visible:f!=="move",listening:!1}),a.jsx(Gme,{visible:p}),h&&a.jsx(Mme,{}),a.jsx(ige,{visible:n&&!p})]})]})}),a.jsx(oge,{}),a.jsx(Xme,{})]})},hge=u.memo(pge);function mge(e,t,n=250){const[r,o]=u.useState(0);return u.useEffect(()=>{const s=setTimeout(()=>{r===1&&e(),o(0)},n);return r===2&&t(),()=>clearTimeout(s)},[r,e,t,n]),()=>o(s=>s+1)}const gge=Me(wM,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),g1={width:6,height:6,borderColor:"base.100"},vge=e=>{const{styleClass:t="",...n}=e;return a.jsx(gge,{sx:{".react-colorful__hue-pointer":g1,".react-colorful__saturation-pointer":g1,".react-colorful__alpha-pointer":g1},className:t,...n})},j8=u.memo(vge),bge=le([An,ks],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:Il(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:mn}}),xge=()=>{const e=se(),{t}=Ie(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:i}=z(bge);St(["q"],()=>{c()},{enabled:()=>!i,preventDefault:!0},[n]),St(["shift+c"],()=>{f()},{enabled:()=>!i,preventDefault:!0},[]),St(["h"],()=>{p()},{enabled:()=>!i,preventDefault:!0},[o]);const c=()=>{e(_3(n==="mask"?"base":"mask"))},f=()=>e(S3()),p=()=>e(gx(!o)),h=async()=>{e(RN())};return a.jsx(Rf,{triggerComponent:a.jsx(vr,{children:a.jsx(tt,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:a.jsx(HE,{}),isChecked:n==="mask",isDisabled:i})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(bo,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),a.jsx(bo,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:m=>e(ON(m.target.checked))}),a.jsx(j8,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:m=>e(MN(m))}),a.jsx(Wt,{size:"sm",leftIcon:a.jsx(Eg,{}),onClick:h,children:"Save Mask"}),a.jsxs(Wt,{size:"sm",leftIcon:a.jsx(Jo,{}),onClick:f,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},yge=u.memo(xge),wge=le([An,jr,Cs],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:mn}});function Cge(){const e=se(),{canRedo:t,activeTabName:n}=z(wge),{t:r}=Ie(),o=()=>{e(DN())};return St(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),a.jsx(tt,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:a.jsx(EJ,{}),onClick:o,isDisabled:!t})}const Sge=()=>{const e=z(ks),t=se(),{t:n}=Ie();return a.jsxs(d2,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(AN()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:a.jsx(Wt,{size:"sm",leftIcon:a.jsx(Jo,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),a.jsx("br",{}),a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},kge=u.memo(Sge),jge=le([An],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:c,shouldRestrictStrokesToBox:f,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:c,shouldRestrictStrokesToBox:f,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:mn}}),_ge=()=>{const e=se(),{t}=Ie(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:i,shouldShowIntermediates:c,shouldSnapToGrid:f,shouldRestrictStrokesToBox:p,shouldAntialias:h}=z(jge);St(["n"],()=>{e(jh(!f))},{enabled:!0,preventDefault:!0},[f]);const m=v=>e(jh(v.target.checked));return a.jsx(Rf,{isLazy:!1,triggerComponent:a.jsx(tt,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx(qE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(bo,{label:t("unifiedCanvas.showIntermediates"),isChecked:c,onChange:v=>e(NN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.showGrid"),isChecked:i,onChange:v=>e(TN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.snapToGrid"),isChecked:f,onChange:m}),a.jsx(bo,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e($N(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(LN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(FN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(zN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(BN(v.target.checked))}),a.jsx(bo,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(HN(v.target.checked))}),a.jsx(kge,{})]})})},Pge=u.memo(_ge),Ige=le([An,ks,Cs],(e,t,n)=>{const{isProcessing:r}=n,{tool:o,brushColor:s,brushSize:i}=e;return{tool:o,isStaging:t,isProcessing:r,brushColor:s,brushSize:i}},{memoizeOptions:{resultEqualityCheck:mn}}),Ege=()=>{const e=se(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=z(Ige),{t:s}=Ie();St(["b"],()=>{i()},{enabled:()=>!o,preventDefault:!0},[]),St(["e"],()=>{c()},{enabled:()=>!o,preventDefault:!0},[t]),St(["c"],()=>{f()},{enabled:()=>!o,preventDefault:!0},[t]),St(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),St(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),St(["BracketLeft"],()=>{e(mv(Math.max(r-5,5)))},{enabled:()=>!o,preventDefault:!0},[r]),St(["BracketRight"],()=>{e(mv(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),St(["Shift+BracketLeft"],()=>{e(gv({...n,a:El(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),St(["Shift+BracketRight"],()=>{e(gv({...n,a:El(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const i=()=>e(Bc("brush")),c=()=>e(Bc("eraser")),f=()=>e(Bc("colorPicker")),p=()=>e(WN()),h=()=>e(VN());return a.jsxs(vr,{isAttached:!0,children:[a.jsx(tt,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:a.jsx(PJ,{}),isChecked:t==="brush"&&!o,onClick:i,isDisabled:o}),a.jsx(tt,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:a.jsx(dJ,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:c}),a.jsx(tt,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx(xJ,{}),isDisabled:o,onClick:p}),a.jsx(tt,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(Yl,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),a.jsx(tt,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(gJ,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:f}),a.jsx(Rf,{triggerComponent:a.jsx(tt,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:a.jsx(UE,{})}),children:a.jsxs($,{minWidth:60,direction:"column",gap:4,width:"100%",children:[a.jsx($,{gap:4,justifyContent:"space-between",children:a.jsx(jt,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:m=>e(mv(m)),sliderNumberInputProps:{max:500}})}),a.jsx(j8,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:m=>e(gv(m))})]})})]})},Oge=u.memo(Ege),Mge=le([An,jr,Cs],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:mn}});function Rge(){const e=se(),{t}=Ie(),{canUndo:n,activeTabName:r}=z(Mge),o=()=>{e(UN())};return St(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),a.jsx(tt,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:a.jsx(Og,{}),onClick:o,isDisabled:!n})}const Dge=le([Cs,An,ks],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:i,isMaskEnabled:c}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:c,tool:o,layer:i,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:mn}}),Age=()=>{const e=se(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=z(Dge),i=E1(),{t:c}=Ie(),{isClipboardAPIAvailable:f}=UO(),{getUploadButtonProps:p,getUploadInputProps:h}=Ky({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});St(["v"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[]),St(["r"],()=>{b()},{enabled:()=>!0,preventDefault:!0},[i]),St(["shift+m"],()=>{x()},{enabled:()=>!n,preventDefault:!0},[i,t]),St(["shift+s"],()=>{C()},{enabled:()=>!n,preventDefault:!0},[i,t]),St(["meta+c","ctrl+c"],()=>{k()},{enabled:()=>!n&&f,preventDefault:!0},[i,t,f]),St(["shift+d"],()=>{j()},{enabled:()=>!n,preventDefault:!0},[i,t]);const m=()=>e(Bc("move")),v=mge(()=>b(!1),()=>b(!0)),b=(I=!1)=>{const O=E1();if(!O)return;const E=O.getClientRect({skipTransform:!0});e(qN({contentRect:E,shouldScaleTo1:I}))},y=()=>{e(G_())},x=()=>{e(KN())},C=()=>{e(XN())},k=()=>{f&&e(QN())},j=()=>{e(YN())},_=I=>{const O=I;e(_3(O)),O==="mask"&&!r&&e(gx(!0))};return a.jsxs($,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[a.jsx(Fe,{w:24,children:a.jsx(Zr,{tooltip:`${c("unifiedCanvas.layer")} (Q)`,value:o,data:GN,onChange:_,disabled:n})}),a.jsx(yge,{}),a.jsx(Oge,{}),a.jsxs(vr,{isAttached:!0,children:[a.jsx(tt,{"aria-label":`${c("unifiedCanvas.move")} (V)`,tooltip:`${c("unifiedCanvas.move")} (V)`,icon:a.jsx(oJ,{}),isChecked:s==="move"||n,onClick:m}),a.jsx(tt,{"aria-label":`${c("unifiedCanvas.resetView")} (R)`,tooltip:`${c("unifiedCanvas.resetView")} (R)`,icon:a.jsx(lJ,{}),onClick:v})]}),a.jsxs(vr,{isAttached:!0,children:[a.jsx(tt,{"aria-label":`${c("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${c("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(kJ,{}),onClick:x,isDisabled:n}),a.jsx(tt,{"aria-label":`${c("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${c("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(Eg,{}),onClick:C,isDisabled:n}),f&&a.jsx(tt,{"aria-label":`${c("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${c("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(Du,{}),onClick:k,isDisabled:n}),a.jsx(tt,{"aria-label":`${c("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${c("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(Ig,{}),onClick:j,isDisabled:n})]}),a.jsxs(vr,{isAttached:!0,children:[a.jsx(Rge,{}),a.jsx(Cge,{})]}),a.jsxs(vr,{isAttached:!0,children:[a.jsx(tt,{"aria-label":`${c("common.upload")}`,tooltip:`${c("common.upload")}`,icon:a.jsx(Mg,{}),isDisabled:n,...p()}),a.jsx("input",{...h()}),a.jsx(tt,{"aria-label":`${c("unifiedCanvas.clearCanvas")}`,tooltip:`${c("unifiedCanvas.clearCanvas")}`,icon:a.jsx(Jo,{}),onClick:y,colorScheme:"error",isDisabled:n})]}),a.jsx(vr,{isAttached:!0,children:a.jsx(Pge,{})})]})},Nge=u.memo(Age),O_={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},Tge=()=>{const{isOver:e,setNodeRef:t,active:n}=Fy({id:"unifiedCanvas",data:O_});return a.jsxs($,{layerStyle:"first",ref:t,tabIndex:-1,sx:{flexDirection:"column",alignItems:"center",gap:4,p:2,borderRadius:"base",w:"full",h:"full"},children:[a.jsx(Nge,{}),a.jsx(hge,{}),zy(O_,n)&&a.jsx(By,{isOver:e,label:"Set Canvas Initial Image"})]})},$ge=u.memo(Tge),Lge=()=>a.jsx($ge,{}),Fge=u.memo(Lge),zge=[{id:"txt2img",translationKey:"common.txt2img",icon:a.jsx(Tr,{as:yJ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(ahe,{})},{id:"img2img",translationKey:"common.img2img",icon:a.jsx(Tr,{as:Fl,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(mue,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:a.jsx(Tr,{as:xne,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Fge,{})},{id:"nodes",translationKey:"common.nodes",icon:a.jsx(Tr,{as:Gg,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(ohe,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:a.jsx(Tr,{as:cJ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(hde,{})}],Bge=le([ke],({config:e})=>{const{disabledTabs:t}=e;return zge.filter(r=>!t.includes(r.id))},{memoizeOptions:{resultEqualityCheck:mn}}),Hge=448,Wge=448,Vge=360,Uge=["modelManager"],Gge=["modelManager"],qge=()=>{const e=z(JN),t=z(jr),n=z(Bge),{t:r}=Ie(),o=se(),s=u.useCallback(D=>{D.target instanceof HTMLElement&&D.target.blur()},[]),i=u.useMemo(()=>n.map(D=>a.jsx(Mn,{hasArrow:!0,label:String(r(D.translationKey)),placement:"end",children:a.jsxs(Ro,{onClick:s,children:[a.jsx(H3,{children:String(r(D.translationKey))}),D.icon]})},D.id)),[n,r,s]),c=u.useMemo(()=>n.map(D=>a.jsx(bs,{children:D.content},D.id)),[n]),f=u.useCallback(D=>{const T=ZN[D];T&&o(va(T))},[o]),{minSize:p,isCollapsed:h,setIsCollapsed:m,ref:v,reset:b,expand:y,collapse:x,toggle:C}=$j(Hge,"pixels"),{ref:k,minSize:j,isCollapsed:_,setIsCollapsed:I,reset:O,expand:E,collapse:M,toggle:R}=$j(Vge,"pixels");St("f",()=>{_||h?(E(),y()):(x(),M())},[o,_,h]),St(["t","o"],()=>{C()},[o]),St("g",()=>{R()},[o]);const A=e2();return a.jsxs(Gl,{variant:"appTabs",defaultIndex:e,index:e,onChange:f,sx:{flexGrow:1,gap:4},isLazy:!0,children:[a.jsxs(ql,{sx:{pt:2,gap:4,flexDir:"column"},children:[i,a.jsx(Qi,{}),a.jsx(fZ,{})]}),a.jsxs(Xg,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},storage:A,units:"pixels",children:[!Gge.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(Wi,{order:0,id:"side",ref:v,defaultSize:p,minSize:p,onCollapse:m,collapsible:!0,children:t==="nodes"?a.jsx(mse,{}):a.jsx($ce,{})}),a.jsx(Am,{onDoubleClick:b,collapsedDirection:h?"left":void 0}),a.jsx(xse,{isSidePanelCollapsed:h,sidePanelRef:v})]}),a.jsx(Wi,{id:"main",order:1,minSize:Wge,children:a.jsx(Ou,{style:{height:"100%",width:"100%"},children:c})}),!Uge.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(Am,{onDoubleClick:O,collapsedDirection:_?"right":void 0}),a.jsx(Wi,{id:"gallery",ref:k,order:2,defaultSize:j,minSize:j,onCollapse:I,collapsible:!0,children:a.jsx(Qne,{})}),a.jsx(vse,{isGalleryCollapsed:_,galleryPanelRef:k})]})]})]})},Kge=u.memo(qge),Xge=u.createContext(null),v1={didCatch:!1,error:null};class Qge extends u.Component{constructor(t){super(t),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=v1}static getDerivedStateFromError(t){return{didCatch:!0,error:t}}resetErrorBoundary(){const{error:t}=this.state;if(t!==null){for(var n,r,o=arguments.length,s=new Array(o),i=0;i0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.length!==t.length||e.some((n,r)=>!Object.is(n,t[r]))}const Jge=()=>{const e=se(),[t,n]=u.useState(),[r,o]=u.useState(),{recallAllParameters:s}=Ug(),i=Kl(),{currentData:c}=qo(t??Yo.skipToken),{currentData:f}=e9(r??Yo.skipToken);return{handlePreselectedImage:u.useCallback(h=>{h&&(h.action==="sendToCanvas"&&(n(h==null?void 0:h.imageName),c&&(e(e3(c)),e(va("unifiedCanvas")),i({title:t9("toast.sentToUnifiedCanvas"),status:"info",duration:2500,isClosable:!0}))),h.action==="sendToImg2Img"&&(n(h==null?void 0:h.imageName),c&&e(Hm(c))),h.action==="useAllParameters"&&(o(h==null?void 0:h.imageName),f&&s(f.metadata)))},[e,c,f,s,i])}};function Zge(e={}){let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");const n=new URL(`${t}/issues/new`),r=["body","title","labels","template","milestone","assignee","projects"];for(const o of r){let s=e[o];if(s!==void 0){if(o==="labels"||o==="projects"){if(!Array.isArray(s))throw new TypeError(`The \`${o}\` option should be an array`);s=s.join(",")}n.searchParams.set(o,s)}}return n.toString()}const e0e=({error:e,resetErrorBoundary:t})=>{const n=A3(),r=u.useCallback(()=>{const s=JSON.stringify(n9(e),null,2);navigator.clipboard.writeText(`\`\`\` -${s} -\`\`\``),n({title:"Error Copied"})},[e,n]),o=u.useMemo(()=>Zge({user:"invoke-ai",repo:"InvokeAI",template:"BUG_REPORT.yml",title:`[bug]: ${e.name}: ${e.message}`}),[e.message,e.name]);return a.jsx($,{layerStyle:"body",sx:{w:"100vw",h:"100vh",alignItems:"center",justifyContent:"center",p:4},children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",borderRadius:"base",justifyContent:"center",gap:8,p:16},children:[a.jsx(ds,{children:"Something went wrong"}),a.jsx($,{layerStyle:"second",sx:{px:8,py:4,borderRadius:"base",gap:4,justifyContent:"space-between",alignItems:"center"},children:a.jsxs(Ee,{sx:{fontWeight:600,color:"error.500",_dark:{color:"error.400"}},children:[e.name,": ",e.message]})}),a.jsxs($,{sx:{gap:4},children:[a.jsx(Wt,{leftIcon:a.jsx(Upe,{}),onClick:t,children:"Reset UI"}),a.jsx(Wt,{leftIcon:a.jsx(Du,{}),onClick:r,children:"Copy Error"}),a.jsx(rg,{href:o,isExternal:!0,children:a.jsx(Wt,{leftIcon:a.jsx($E,{}),children:"Create Issue"})})]})]})})},t0e=u.memo(e0e),n0e=le([ke],({hotkeys:e})=>{const{shift:t,ctrl:n,meta:r}=e;return{shift:t,ctrl:n,meta:r}},{memoizeOptions:{resultEqualityCheck:mn}}),r0e=()=>{const e=se(),{shift:t,ctrl:n,meta:r}=z(n0e);return St("*",()=>{fh("shift")?!t&&e(Do(!0)):t&&e(Do(!1)),fh("ctrl")?!n&&e(RC(!0)):n&&e(RC(!1)),fh("meta")?!r&&e(DC(!0)):r&&e(DC(!1))},{keyup:!0,keydown:!0},[t,n,r]),St("1",()=>{e(va("txt2img"))}),St("2",()=>{e(va("img2img"))}),St("3",()=>{e(va("unifiedCanvas"))}),St("4",()=>{e(va("nodes"))}),St("5",()=>{e(va("modelManager"))}),null},o0e=u.memo(r0e),s0e={},a0e=({config:e=s0e,headerComponent:t,selectedImage:n})=>{const r=z(BP),o=HP("system"),s=se(),{handlePreselectedImage:i}=Jge(),c=u.useCallback(()=>(localStorage.clear(),location.reload(),!1),[]);return u.useEffect(()=>{Sr.changeLanguage(r)},[r]),u.useEffect(()=>{l3(e)&&(o.info({config:e},"Received config"),s(r9(e)))},[s,e,o]),u.useEffect(()=>{s(o9())},[s]),u.useEffect(()=>{i(n)},[i,n]),a.jsxs(Qge,{onReset:c,FallbackComponent:t0e,children:[a.jsx(Vi,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:a.jsx(OV,{children:a.jsxs(Vi,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[t||a.jsx(cZ,{}),a.jsx($,{sx:{gap:4,w:"full",h:"full"},children:a.jsx(Kge,{})})]})})}),a.jsx(KY,{}),a.jsx(WY,{}),a.jsx(xW,{}),a.jsx(o0e,{})]})},m0e=u.memo(a0e);export{m0e as default}; diff --git a/invokeai/frontend/web/dist/assets/App-dbf8f111.js b/invokeai/frontend/web/dist/assets/App-dbf8f111.js new file mode 100644 index 0000000000..c3d486e7b6 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/App-dbf8f111.js @@ -0,0 +1,169 @@ +var U0=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var Se=(e,t,n)=>(U0(e,t,"read from private field"),n?n.call(e):t.get(e)),en=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},ro=(e,t,n,r)=>(U0(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var bu=(e,t,n,r)=>({set _(o){ro(e,t,o,n)},get _(){return Se(e,t,r)}}),os=(e,t,n)=>(U0(e,t,"access private method"),n);import{a as bd,b as Pj,S as Ij,c as Ej,d as Mj,e as t1,f as Oj,i as n1,g as g7,k as v7,h as TC,j as Dj,t as b7,l as x7,m as y7,n as C7,o as w7,p as S7,q as k7,r as G0,s as _7,u as d,v as a,w as Rb,x as Vp,y as j7,z as P7,A as I7,B as E7,P as M7,C as Ab,D as O7,E as D7,F as R7,G as A7,H as Rj,I as Pe,J as N7,K as _e,L as et,M as Fe,N as xd,O as nr,Q as vn,R as Wn,T as Yt,U as Xi,V as Qa,W as at,X as po,Y as Zl,Z as ia,_ as fm,$ as Nb,a0 as Rc,a1 as rn,a2 as T7,a3 as H,a4 as $C,a5 as $7,a6 as Aj,a7 as r1,a8 as yd,a9 as L7,aa as Nj,ab as Tj,ac as ds,ad as z7,ae as ie,af as we,ag as _t,ah as L,ai as F7,aj as LC,ak as B7,al as H7,am as W7,an as Yi,ao as ee,ap as V7,aq as Tt,ar as Ft,as as Ie,at as $,au as io,av as xe,aw as wn,ax as $j,ay as U7,az as G7,aA as K7,aB as q7,aC as Fr,aD as Tb,aE as la,aF as Ir,aG as pm,aH as X7,aI as Y7,aJ as zC,aK as $b,aL as ye,aM as Br,aN as Q7,aO as Lj,aP as zj,aQ as FC,aR as Z7,aS as J7,aT as eD,aU as Qi,aV as Fj,aW as vt,aX as tD,aY as nD,aZ as rD,a_ as Bj,a$ as rr,b0 as hm,b1 as oD,b2 as BC,b3 as Hj,b4 as sD,b5 as aD,b6 as iD,b7 as lD,b8 as cD,b9 as uD,ba as dD,bb as fD,bc as Wj,bd as pD,be as hD,bf as mD,bg as gD,bh as vD,bi as Er,bj as bD,bk as xD,bl as yD,bm as HC,bn as CD,bo as wD,bp as Ba,bq as mm,br as Vj,bs as Uj,bt as Wr,bu as Gj,bv as SD,bw as Ni,bx as Mu,by as WC,bz as kD,bA as _D,bB as jD,bC as Gf,bD as Kf,bE as xu,bF as K0,bG as Lu,bH as zu,bI as Fu,bJ as Bu,bK as VC,bL as Up,bM as q0,bN as Gp,bO as UC,bP as o1,bQ as X0,bR as s1,bS as Y0,bT as Kp,bU as GC,bV as Ti,bW as KC,bX as $i,bY as qC,bZ as qp,b_ as Cd,b$ as PD,c0 as Kj,c1 as XC,c2 as gm,c3 as ID,c4 as qj,c5 as a1,c6 as i1,c7 as Xj,c8 as ED,c9 as l1,ca as MD,cb as c1,cc as OD,cd as u1,ce as Lb,cf as zb,cg as Fb,ch as Bb,ci as Hb,cj as vm,ck as Wb,cl as Aa,cm as Yj,cn as Qj,co as Vb,cp as Zj,cq as DD,cr as yu,cs as Li,ct as Jj,cu as e5,cv as YC,cw as RD,cx as AD,cy as ND,cz as Cn,cA as TD,cB as Pn,cC as wd,cD as bm,cE as $D,cF as LD,cG as zD,cH as FD,cI as BD,cJ as HD,cK as WD,cL as VD,cM as UD,cN as GD,cO as QC,cP as Ub,cQ as KD,cR as qD,cS as Sd,cT as XD,cU as YD,cV as xm,cW as QD,cX as ZD,cY as JD,cZ as Gb,c_ as eR,c$ as on,d0 as tR,d1 as nR,d2 as rR,d3 as oR,d4 as sR,d5 as aR,d6 as Yu,d7 as ZC,d8 as Bo,d9 as t5,da as iR,db as Kb,dc as lR,dd as JC,de as cR,df as uR,dg as dR,dh as n5,di as fR,dj as pR,dk as r5,dl as hR,dm as o5,dn as mR,dp as gR,dq as vR,dr as bR,ds as xR,dt as yR,du as CR,dv as wR,dw as s5,dx as a5,dy as SR,dz as kR,dA as _R,dB as jR,dC as PR,dD as No,dE as IR,dF as bo,dG as ER,dH as MR,dI as OR,dJ as DR,dK as RR,dL as AR,dM as NR,dN as TR,dO as $R,dP as LR,dQ as zR,dR as FR,dS as BR,dT as HR,dU as WR,dV as VR,dW as ew,dX as UR,dY as GR,dZ as KR,d_ as qR,d$ as XR,e0 as tw,e1 as YR,e2 as nw,e3 as QR,e4 as ZR,e5 as JR,e6 as eA,e7 as tA,e8 as nA,e9 as rw,ea as ow,eb as sw,ec as qb,ed as rA,ee as Do,ef as Qu,eg as fr,eh as oA,ei as sA,ej as i5,ek as l5,el as aA,em as aw,en as iA,eo as iw,ep as lw,eq as cw,er as lA,es as cA,et as uw,eu as dw,ev as uA,ew as dA,ex as Xp,ey as fA,ez as fw,eA as qf,eB as pw,eC as hw,eD as pA,eE as hA,eF as mA,eG as c5,eH as gA,eI as vA,eJ as mw,eK as bA,eL as gw,eM as xA,eN as u5,eO as d5,eP as kd,eQ as f5,eR as Ci,eS as p5,eT as vw,eU as yA,eV as CA,eW as h5,eX as wA,eY as SA,eZ as kA,e_ as _A,e$ as jA,f0 as Xb,f1 as d1,f2 as bw,f3 as Zi,f4 as PA,f5 as IA,f6 as m5,f7 as Us,f8 as Gs,f9 as g5,fa as v5,fb as Yb,fc as b5,fd as EA,fe as Ks,ff as MA,fg as x5,fh as OA,fi as DA,fj as RA,fk as AA,fl as NA,fm as TA,fn as $A,fo as Yp,fp as Ou,fq as Ul,fr as LA,fs as zA,ft as FA,fu as BA,fv as HA,fw as WA,fx as VA,fy as UA,fz as GA,fA as KA,fB as qA,fC as XA,fD as YA,fE as QA,fF as ZA,fG as JA,fH as e9,fI as t9,fJ as n9,fK as r9,fL as xw,fM as o9,fN as s9,fO as a9,fP as i9,fQ as l9,fR as c9,fS as u9,fT as d9,fU as f9,fV as p9,fW as h9,fX as m9,fY as g9,fZ as v9,f_ as yw,f$ as Dp,g0 as b9,g1 as Qp,g2 as y5,g3 as Zp,g4 as x9,g5 as y9,g6 as Jl,g7 as C5,g8 as w5,g9 as Qb,ga as C9,gb as w9,gc as S9,gd as f1,ge as S5,gf as k9,gg as _9,gh as k5,gi as j9,gj as P9,gk as I9,gl as E9,gm as M9,gn as _l,go as O9,gp as D9,gq as R9,gr as A9,gs as N9,gt as T9,gu as Cw,gv as $9,gw as L9,gx as z9,gy as F9,gz as B9,gA as H9,gB as W9,gC as V9,gD as Q0,gE as Z0,gF as J0,gG as Xf,gH as ww,gI as p1,gJ as Sw,gK as U9,gL as G9,gM as K9,gN as q9,gO as _5,gP as X9,gQ as Y9,gR as Q9,gS as Z9,gT as J9,gU as eN,gV as tN,gW as nN,gX as rN,gY as oN,gZ as sN,g_ as Yf,g$ as ev,h0 as aN,h1 as iN,h2 as lN,h3 as cN,h4 as uN,h5 as dN,h6 as fN,h7 as pN,h8 as hN,h9 as mN,ha as gN,hb as vN,hc as bN,hd as xN,he as kw,hf as _w,hg as yN,hh as CN,hi as wN}from"./index-f6c3f475.js";import{I as Tn,u as SN,c as kN,a as $t,b as nn,d as ca,P as _d,C as _N,e as Z,f as j5,g as ua,h as jN,r as Oe,i as PN,j as jw,k as ut,l as Sn,m as vc}from"./menu-c9cc8c3d.js";var IN=200;function EN(e,t,n,r){var o=-1,s=Ej,i=!0,l=e.length,u=[],p=t.length;if(!l)return u;n&&(t=bd(t,Pj(n))),r?(s=Mj,i=!1):t.length>=IN&&(s=t1,i=!1,t=new Ij(t));e:for(;++o=120&&h.length>=120)?new Ij(i&&h):void 0}h=e[0];var m=-1,v=l[0];e:for(;++m{r.has(s)&&n(o,s)})}function KN(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,s;for(s=0;s=0)&&(n[o]=e[o]);return n}const P5=({id:e,x:t,y:n,width:r,height:o,style:s,color:i,strokeColor:l,strokeWidth:u,className:p,borderRadius:h,shapeRendering:m,onClick:v,selected:b})=>{const{background:y,backgroundColor:x}=s||{},w=i||y||x;return a.jsx("rect",{className:Rb(["react-flow__minimap-node",{selected:b},p]),x:t,y:n,rx:h,ry:h,width:r,height:o,fill:w,stroke:l,strokeWidth:u,shapeRendering:m,onClick:v?k=>v(k,e):void 0})};P5.displayName="MiniMapNode";var qN=d.memo(P5);const XN=e=>e.nodeOrigin,YN=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),tv=e=>e instanceof Function?e:()=>e;function QN({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:s=qN,onClick:i}){const l=Vp(YN,Ab),u=Vp(XN),p=tv(t),h=tv(e),m=tv(n),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return a.jsx(a.Fragment,{children:l.map(b=>{const{x:y,y:x}=j7(b,u).positionAbsolute;return a.jsx(s,{x:y,y:x,width:b.width,height:b.height,style:b.style,selected:b.selected,className:m(b),color:p(b),borderRadius:r,strokeColor:h(b),strokeWidth:o,shapeRendering:v,onClick:i,id:b.id},b.id)})})}var ZN=d.memo(QN);const JN=200,eT=150,tT=e=>{const t=e.getNodes(),n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:t.length>0?R7(A7(t,e.nodeOrigin),n):n,rfId:e.rfId}},nT="react-flow__minimap-desc";function I5({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:s=5,nodeStrokeWidth:i=2,nodeComponent:l,maskColor:u="rgb(240, 240, 240, 0.6)",maskStrokeColor:p="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:v,onNodeClick:b,pannable:y=!1,zoomable:x=!1,ariaLabel:w="React Flow mini map",inversePan:k=!1,zoomStep:_=10,offsetScale:j=5}){const I=P7(),E=d.useRef(null),{boundingRect:M,viewBB:D,rfId:R}=Vp(tT,Ab),A=(e==null?void 0:e.width)??JN,O=(e==null?void 0:e.height)??eT,T=M.width/A,K=M.height/O,F=Math.max(T,K),V=F*A,X=F*O,W=j*F,z=M.x-(V-M.width)/2-W,Y=M.y-(X-M.height)/2-W,B=V+W*2,q=X+W*2,re=`${nT}-${R}`,Q=d.useRef(0);Q.current=F,d.useEffect(()=>{if(E.current){const U=I7(E.current),G=oe=>{const{transform:pe,d3Selection:ue,d3Zoom:me}=I.getState();if(oe.sourceEvent.type!=="wheel"||!ue||!me)return;const Ce=-oe.sourceEvent.deltaY*(oe.sourceEvent.deltaMode===1?.05:oe.sourceEvent.deltaMode?1:.002)*_,ge=pe[2]*Math.pow(2,Ce);me.scaleTo(ue,ge)},te=oe=>{const{transform:pe,d3Selection:ue,d3Zoom:me,translateExtent:Ce,width:ge,height:fe}=I.getState();if(oe.sourceEvent.type!=="mousemove"||!ue||!me)return;const De=Q.current*Math.max(1,pe[2])*(k?-1:1),je={x:pe[0]-oe.sourceEvent.movementX*De,y:pe[1]-oe.sourceEvent.movementY*De},Be=[[0,0],[ge,fe]],rt=O7.translate(je.x,je.y).scale(pe[2]),Ue=me.constrain()(rt,Be,Ce);me.transform(ue,Ue)},ae=E7().on("zoom",y?te:null).on("zoom.wheel",x?G:null);return U.call(ae),()=>{U.on("zoom",null)}}},[y,x,k,_]);const le=v?U=>{const G=D7(U);v(U,{x:G[0],y:G[1]})}:void 0,se=b?(U,G)=>{const te=I.getState().nodeInternals.get(G);b(U,te)}:void 0;return a.jsx(M7,{position:m,style:e,className:Rb(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:a.jsxs("svg",{width:A,height:O,viewBox:`${z} ${Y} ${B} ${q}`,role:"img","aria-labelledby":re,ref:E,onClick:le,children:[w&&a.jsx("title",{id:re,children:w}),a.jsx(ZN,{onClick:se,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:s,nodeClassName:o,nodeStrokeWidth:i,nodeComponent:l}),a.jsx("path",{className:"react-flow__minimap-mask",d:`M${z-W},${Y-W}h${B+W*2}v${q+W*2}h${-B-W*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fill:u,fillRule:"evenodd",stroke:p,strokeWidth:h,pointerEvents:"none"})]})})}I5.displayName="MiniMap";var rT=d.memo(I5),To;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(To||(To={}));function oT({color:e,dimensions:t,lineWidth:n}){return a.jsx("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function sT({color:e,radius:t}){return a.jsx("circle",{cx:t,cy:t,r:t,fill:e})}const aT={[To.Dots]:"#91919a",[To.Lines]:"#eee",[To.Cross]:"#e2e2e2"},iT={[To.Dots]:1,[To.Lines]:1,[To.Cross]:6},lT=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function E5({id:e,variant:t=To.Dots,gap:n=20,size:r,lineWidth:o=1,offset:s=2,color:i,style:l,className:u}){const p=d.useRef(null),{transform:h,patternId:m}=Vp(lT,Ab),v=i||aT[t],b=r||iT[t],y=t===To.Dots,x=t===To.Cross,w=Array.isArray(n)?n:[n,n],k=[w[0]*h[2]||1,w[1]*h[2]||1],_=b*h[2],j=x?[_,_]:k,I=y?[_/s,_/s]:[j[0]/s,j[1]/s];return a.jsxs("svg",{className:Rb(["react-flow__background",u]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:p,"data-testid":"rf__background",children:[a.jsx("pattern",{id:m+e,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${I[0]},-${I[1]})`,children:y?a.jsx(sT,{color:v,radius:_/s}):a.jsx(oT,{dimensions:j,color:v,lineWidth:o})}),a.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+e})`})]})}E5.displayName="Background";var cT=d.memo(E5);const Mw=(e,t,n)=>{uT(n);const r=Rj(e,t);return M5[n].includes(r)},M5={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Ow=Object.keys(M5),uT=e=>{if(typeof e!="string")throw new TypeError(`Invalid operator type, expected string but got ${typeof e}`);if(Ow.indexOf(e)===-1)throw new Error(`Invalid operator, expected one of ${Ow.join("|")}`)};function dT(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}var fT=dT();const O5=1/60*1e3,pT=typeof performance<"u"?()=>performance.now():()=>Date.now(),D5=typeof window<"u"?e=>window.requestAnimationFrame(e):e=>setTimeout(()=>e(pT()),O5);function hT(e){let t=[],n=[],r=0,o=!1,s=!1;const i=new WeakSet,l={schedule:(u,p=!1,h=!1)=>{const m=h&&o,v=m?t:n;return p&&i.add(u),v.indexOf(u)===-1&&(v.push(u),m&&o&&(r=t.length)),u},cancel:u=>{const p=n.indexOf(u);p!==-1&&n.splice(p,1),i.delete(u)},process:u=>{if(o){s=!0;return}if(o=!0,[t,n]=[n,t],n.length=0,r=t.length,r)for(let p=0;p(e[t]=hT(()=>Zu=!0),e),{}),gT=jd.reduce((e,t)=>{const n=ym[t];return e[t]=(r,o=!1,s=!1)=>(Zu||xT(),n.schedule(r,o,s)),e},{}),vT=jd.reduce((e,t)=>(e[t]=ym[t].cancel,e),{});jd.reduce((e,t)=>(e[t]=()=>ym[t].process(ec),e),{});const bT=e=>ym[e].process(ec),R5=e=>{Zu=!1,ec.delta=h1?O5:Math.max(Math.min(e-ec.timestamp,mT),1),ec.timestamp=e,m1=!0,jd.forEach(bT),m1=!1,Zu&&(h1=!1,D5(R5))},xT=()=>{Zu=!0,h1=!0,m1||D5(R5)},Dw=()=>ec;function Pd(e){const{viewBox:t="0 0 24 24",d:n,displayName:r,defaultProps:o={}}=e,s=d.Children.toArray(e.path),i=Pe((l,u)=>a.jsx(Tn,{ref:u,viewBox:t,...o,...l,children:s.length?s:a.jsx("path",{fill:"currentColor",d:n})}));return i.displayName=r,i}function A5(e){const{theme:t}=N7(),n=SN();return d.useMemo(()=>kN(t.direction,{...n,...e}),[e,t.direction,n])}var yT=Object.defineProperty,CT=(e,t,n)=>t in e?yT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hn=(e,t,n)=>(CT(e,typeof t!="symbol"?t+"":t,n),n);function Rw(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 wT=e=>typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE;function Aw(e,t,n){let r=e+1;return n&&r>=t&&(r=0),r}function Nw(e,t,n){let r=e-1;return n&&r<0&&(r=t),r}var g1=typeof window<"u"?d.useLayoutEffect:d.useEffect,Jp=e=>e,ST=class{constructor(){hn(this,"descendants",new Map),hn(this,"register",e=>{if(e!=null)return wT(e)?this.registerNode(e):t=>{this.registerNode(t,e)}}),hn(this,"unregister",e=>{this.descendants.delete(e);const t=Rw(Array.from(this.descendants.keys()));this.assignIndex(t)}),hn(this,"destroy",()=>{this.descendants.clear()}),hn(this,"assignIndex",e=>{this.descendants.forEach(t=>{const n=e.indexOf(t.node);t.index=n,t.node.dataset.index=t.index.toString()})}),hn(this,"count",()=>this.descendants.size),hn(this,"enabledCount",()=>this.enabledValues().length),hn(this,"values",()=>Array.from(this.descendants.values()).sort((t,n)=>t.index-n.index)),hn(this,"enabledValues",()=>this.values().filter(e=>!e.disabled)),hn(this,"item",e=>{if(this.count()!==0)return this.values()[e]}),hn(this,"enabledItem",e=>{if(this.enabledCount()!==0)return this.enabledValues()[e]}),hn(this,"first",()=>this.item(0)),hn(this,"firstEnabled",()=>this.enabledItem(0)),hn(this,"last",()=>this.item(this.descendants.size-1)),hn(this,"lastEnabled",()=>{const e=this.enabledValues().length-1;return this.enabledItem(e)}),hn(this,"indexOf",e=>{var t,n;return e&&(n=(t=this.descendants.get(e))==null?void 0:t.index)!=null?n:-1}),hn(this,"enabledIndexOf",e=>e==null?-1:this.enabledValues().findIndex(t=>t.node.isSameNode(e))),hn(this,"next",(e,t=!0)=>{const n=Aw(e,this.count(),t);return this.item(n)}),hn(this,"nextEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Aw(r,this.enabledCount(),t);return this.enabledItem(o)}),hn(this,"prev",(e,t=!0)=>{const n=Nw(e,this.count()-1,t);return this.item(n)}),hn(this,"prevEnabled",(e,t=!0)=>{const n=this.item(e);if(!n)return;const r=this.enabledIndexOf(n.node),o=Nw(r,this.enabledCount()-1,t);return this.enabledItem(o)}),hn(this,"registerNode",(e,t)=>{if(!e||this.descendants.has(e))return;const n=Array.from(this.descendants.keys()).concat(e),r=Rw(n);t!=null&&t.disabled&&(t.disabled=!!t.disabled);const o={node:e,index:-1,...t};this.descendants.set(e,o),this.assignIndex(r)})}};function kT(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 Ct(...e){return t=>{e.forEach(n=>{kT(n,t)})}}function _T(...e){return d.useMemo(()=>Ct(...e),e)}function jT(){const e=d.useRef(new ST);return g1(()=>()=>e.current.destroy()),e.current}var[PT,N5]=$t({name:"DescendantsProvider",errorMessage:"useDescendantsContext must be used within DescendantsProvider"});function IT(e){const t=N5(),[n,r]=d.useState(-1),o=d.useRef(null);g1(()=>()=>{o.current&&t.unregister(o.current)},[]),g1(()=>{if(!o.current)return;const i=Number(o.current.dataset.index);n!=i&&!Number.isNaN(i)&&r(i)});const s=Jp(e?t.register(e):t.register);return{descendants:t,index:n,enabledIndex:t.enabledIndexOf(o.current),register:Ct(s,o)}}function Zb(){return[Jp(PT),()=>Jp(N5()),()=>jT(),o=>IT(o)]}var[ET,Cm]=$t({name:"AccordionStylesContext",hookName:"useAccordionStyles",providerName:""}),[MT,Jb]=$t({name:"AccordionItemContext",hookName:"useAccordionItemContext",providerName:""}),[OT,P0e,DT,RT]=Zb(),Tl=Pe(function(t,n){const{getButtonProps:r}=Jb(),o=r(t,n),i={display:"flex",alignItems:"center",width:"100%",outline:0,...Cm().button};return a.jsx(_e.button,{...o,className:et("chakra-accordion__button",t.className),__css:i})});Tl.displayName="AccordionButton";function Ac(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=(v,b)=>v!==b}=e,s=nn(r),i=nn(o),[l,u]=d.useState(n),p=t!==void 0,h=p?t:l,m=nn(v=>{const y=typeof v=="function"?v(h):v;i(h,y)&&(p||u(y),s(y))},[p,s,h,i]);return[h,m]}function AT(e){const{onChange:t,defaultIndex:n,index:r,allowMultiple:o,allowToggle:s,...i}=e;$T(e),LT(e);const l=DT(),[u,p]=d.useState(-1);d.useEffect(()=>()=>{p(-1)},[]);const[h,m]=Ac({value:r,defaultValue(){return o?n??[]:n??-1},onChange:t});return{index:h,setIndex:m,htmlProps:i,getAccordionItemProps:b=>{let y=!1;return b!==null&&(y=Array.isArray(h)?h.includes(b):h===b),{isOpen:y,onChange:w=>{if(b!==null)if(o&&Array.isArray(h)){const k=w?h.concat(b):h.filter(_=>_!==b);m(k)}else w?m(b):s&&m(-1)}}},focusedIndex:u,setFocusedIndex:p,descendants:l}}var[NT,ex]=$t({name:"AccordionContext",hookName:"useAccordionContext",providerName:"Accordion"});function TT(e){const{isDisabled:t,isFocusable:n,id:r,...o}=e,{getAccordionItemProps:s,setFocusedIndex:i}=ex(),l=d.useRef(null),u=d.useId(),p=r??u,h=`accordion-button-${p}`,m=`accordion-panel-${p}`;zT(e);const{register:v,index:b,descendants:y}=RT({disabled:t&&!n}),{isOpen:x,onChange:w}=s(b===-1?null:b);FT({isOpen:x,isDisabled:t});const k=()=>{w==null||w(!0)},_=()=>{w==null||w(!1)},j=d.useCallback(()=>{w==null||w(!x),i(b)},[b,i,x,w]),I=d.useCallback(R=>{const O={ArrowDown:()=>{const T=y.nextEnabled(b);T==null||T.node.focus()},ArrowUp:()=>{const T=y.prevEnabled(b);T==null||T.node.focus()},Home:()=>{const T=y.firstEnabled();T==null||T.node.focus()},End:()=>{const T=y.lastEnabled();T==null||T.node.focus()}}[R.key];O&&(R.preventDefault(),O(R))},[y,b]),E=d.useCallback(()=>{i(b)},[i,b]),M=d.useCallback(function(A={},O=null){return{...A,type:"button",ref:Ct(v,l,O),id:h,disabled:!!t,"aria-expanded":!!x,"aria-controls":m,onClick:Fe(A.onClick,j),onFocus:Fe(A.onFocus,E),onKeyDown:Fe(A.onKeyDown,I)}},[h,t,x,j,E,I,m,v]),D=d.useCallback(function(A={},O=null){return{...A,ref:O,role:"region",id:m,"aria-labelledby":h,hidden:!x}},[h,x,m]);return{isOpen:x,isDisabled:t,isFocusable:n,onOpen:k,onClose:_,getButtonProps:M,getPanelProps:D,htmlProps:o}}function $T(e){const t=e.index||e.defaultIndex,n=t!=null&&!Array.isArray(t)&&e.allowMultiple;xd({condition:!!n,message:`If 'allowMultiple' is passed, then 'index' or 'defaultIndex' must be an array. You passed: ${typeof t},`})}function LT(e){xd({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 zT(e){xd({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 FT(e){xd({condition:e.isOpen&&!!e.isDisabled,message:"Cannot open a disabled accordion item"})}function $l(e){const{isOpen:t,isDisabled:n}=Jb(),{reduceMotion:r}=ex(),o=et("chakra-accordion__icon",e.className),s=Cm(),i={opacity:n?.4:1,transform:t?"rotate(-180deg)":void 0,transition:r?void 0:"transform 0.2s",transformOrigin:"center",...s.icon};return a.jsx(Tn,{viewBox:"0 0 24 24","aria-hidden":!0,className:o,__css:i,...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})})}$l.displayName="AccordionIcon";var Ll=Pe(function(t,n){const{children:r,className:o}=t,{htmlProps:s,...i}=TT(t),u={...Cm().container,overflowAnchor:"none"},p=d.useMemo(()=>i,[i]);return a.jsx(MT,{value:p,children:a.jsx(_e.div,{ref:n,...s,className:et("chakra-accordion__item",o),__css:u,children:typeof r=="function"?r({isExpanded:!!i.isOpen,isDisabled:!!i.isDisabled}):r})})});Ll.displayName="AccordionItem";var Gl={ease:[.25,.1,.25,1],easeIn:[.4,0,1,1],easeOut:[0,0,.2,1],easeInOut:[.4,0,.2,1]},ki={enter:{duration:.2,ease:Gl.easeOut},exit:{duration:.1,ease:Gl.easeIn}},Xs={enter:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.enter}),exit:(e,t)=>({...e,delay:typeof t=="number"?t:t==null?void 0:t.exit})},BT=e=>e!=null&&parseInt(e.toString(),10)>0,Tw={exit:{height:{duration:.2,ease:Gl.ease},opacity:{duration:.3,ease:Gl.ease}},enter:{height:{duration:.3,ease:Gl.ease},opacity:{duration:.4,ease:Gl.ease}}},HT={exit:({animateOpacity:e,startingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:BT(t)?1:0},height:t,transitionEnd:r==null?void 0:r.exit,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(Tw.exit,o)}},enter:({animateOpacity:e,endingHeight:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{...e&&{opacity:1},height:t,transitionEnd:r==null?void 0:r.enter,transition:(s=n==null?void 0:n.enter)!=null?s:Xs.enter(Tw.enter,o)}}},wm=d.forwardRef((e,t)=>{const{in:n,unmountOnExit:r,animateOpacity:o=!0,startingHeight:s=0,endingHeight:i="auto",style:l,className:u,transition:p,transitionEnd:h,...m}=e,[v,b]=d.useState(!1);d.useEffect(()=>{const _=setTimeout(()=>{b(!0)});return()=>clearTimeout(_)},[]),xd({condition:Number(s)>0&&!!r,message:"startingHeight and unmountOnExit are mutually exclusive. You can't use them together"});const y=parseFloat(s.toString())>0,x={startingHeight:s,endingHeight:i,animateOpacity:o,transition:v?p:{enter:{duration:0}},transitionEnd:{enter:h==null?void 0:h.enter,exit:r?h==null?void 0:h.exit:{...h==null?void 0:h.exit,display:y?"block":"none"}}},w=r?n:!0,k=n||r?"enter":"exit";return a.jsx(nr,{initial:!1,custom:x,children:w&&a.jsx(vn.div,{ref:t,...m,className:et("chakra-collapse",u),style:{overflow:"hidden",display:"block",...l},custom:x,variants:HT,initial:r?"exit":!1,animate:k,exit:"exit"})})});wm.displayName="Collapse";var WT={enter:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:1,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({transition:e,transitionEnd:t,delay:n}={})=>{var r;return{opacity:0,transition:(r=e==null?void 0:e.exit)!=null?r:Xs.exit(ki.exit,n),transitionEnd:t==null?void 0:t.exit}}},T5={initial:"exit",animate:"enter",exit:"exit",variants:WT},VT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,className:s,transition:i,transitionEnd:l,delay:u,...p}=t,h=o||r?"enter":"exit",m=r?o&&r:!0,v={transition:i,transitionEnd:l,delay:u};return a.jsx(nr,{custom:v,children:m&&a.jsx(vn.div,{ref:n,className:et("chakra-fade",s),custom:v,...T5,animate:h,...p})})});VT.displayName="Fade";var UT={exit:({reverse:e,initialScale:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,...e?{scale:t,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{scale:t,...r==null?void 0:r.exit}},transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o)}},enter:({transitionEnd:e,transition:t,delay:n})=>{var r;return{opacity:1,scale:1,transition:(r=t==null?void 0:t.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:e==null?void 0:e.enter}}},$5={initial:"exit",animate:"enter",exit:"exit",variants:UT},GT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,initialScale:i=.95,className:l,transition:u,transitionEnd:p,delay:h,...m}=t,v=r?o&&r:!0,b=o||r?"enter":"exit",y={initialScale:i,reverse:s,transition:u,transitionEnd:p,delay:h};return a.jsx(nr,{custom:y,children:v&&a.jsx(vn.div,{ref:n,className:et("chakra-offset-slide",l),...$5,animate:b,custom:y,...m})})});GT.displayName="ScaleFade";var KT={initial:({offsetX:e,offsetY:t,transition:n,transitionEnd:r,delay:o})=>{var s;return{opacity:0,x:e,y:t,transition:(s=n==null?void 0:n.exit)!=null?s:Xs.exit(ki.exit,o),transitionEnd:r==null?void 0:r.exit}},enter:({transition:e,transitionEnd:t,delay:n})=>{var r;return{opacity:1,x:0,y:0,transition:(r=e==null?void 0:e.enter)!=null?r:Xs.enter(ki.enter,n),transitionEnd:t==null?void 0:t.enter}},exit:({offsetY:e,offsetX:t,transition:n,transitionEnd:r,reverse:o,delay:s})=>{var i;const l={x:t,y:e};return{opacity:0,transition:(i=n==null?void 0:n.exit)!=null?i:Xs.exit(ki.exit,s),...o?{...l,transitionEnd:r==null?void 0:r.exit}:{transitionEnd:{...l,...r==null?void 0:r.exit}}}}},v1={initial:"initial",animate:"enter",exit:"exit",variants:KT},qT=d.forwardRef(function(t,n){const{unmountOnExit:r,in:o,reverse:s=!0,className:i,offsetX:l=0,offsetY:u=8,transition:p,transitionEnd:h,delay:m,...v}=t,b=r?o&&r:!0,y=o||r?"enter":"exit",x={offsetX:l,offsetY:u,reverse:s,transition:p,transitionEnd:h,delay:m};return a.jsx(nr,{custom:x,children:b&&a.jsx(vn.div,{ref:n,className:et("chakra-offset-slide",i),custom:x,...v1,animate:y,...v})})});qT.displayName="SlideFade";var zl=Pe(function(t,n){const{className:r,motionProps:o,...s}=t,{reduceMotion:i}=ex(),{getPanelProps:l,isOpen:u}=Jb(),p=l(s,n),h=et("chakra-accordion__panel",r),m=Cm();i||delete p.hidden;const v=a.jsx(_e.div,{...p,__css:m.panel,className:h});return i?v:a.jsx(wm,{in:u,...o,children:v})});zl.displayName="AccordionPanel";var L5=Pe(function({children:t,reduceMotion:n,...r},o){const s=Wn("Accordion",r),i=Yt(r),{htmlProps:l,descendants:u,...p}=AT(i),h=d.useMemo(()=>({...p,reduceMotion:!!n}),[p,n]);return a.jsx(OT,{value:u,children:a.jsx(NT,{value:h,children:a.jsx(ET,{value:s,children:a.jsx(_e.div,{ref:o,...l,className:et("chakra-accordion",r.className),__css:s.root,children:t})})})})});L5.displayName="Accordion";function Id(e){return d.Children.toArray(e).filter(t=>d.isValidElement(t))}var[XT,YT]=$t({strict:!1,name:"ButtonGroupContext"}),QT={horizontal:{"> *: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}},vertical:{"> *:first-of-type:not(:last-of-type)":{borderBottomRadius:0},"> *:not(:first-of-type):not(:last-of-type)":{borderRadius:0},"> *:not(:first-of-type):last-of-type":{borderTopRadius:0}}},ZT={horizontal:e=>({"& > *:not(style) ~ *:not(style)":{marginStart:e}}),vertical:e=>({"& > *:not(style) ~ *:not(style)":{marginTop:e}})},mn=Pe(function(t,n){const{size:r,colorScheme:o,variant:s,className:i,spacing:l="0.5rem",isAttached:u,isDisabled:p,orientation:h="horizontal",...m}=t,v=et("chakra-button__group",i),b=d.useMemo(()=>({size:r,colorScheme:o,variant:s,isDisabled:p}),[r,o,s,p]);let y={display:"inline-flex",...u?QT[h]:ZT[h](l)};const x=h==="vertical";return a.jsx(XT,{value:b,children:a.jsx(_e.div,{ref:n,role:"group",__css:y,className:v,"data-attached":u?"":void 0,"data-orientation":h,flexDir:x?"column":void 0,...m})})});mn.displayName="ButtonGroup";function JT(e){const[t,n]=d.useState(!e);return{ref:d.useCallback(s=>{s&&n(s.tagName==="BUTTON")},[]),type:t?"button":void 0}}function b1(e){const{children:t,className:n,...r}=e,o=d.isValidElement(t)?d.cloneElement(t,{"aria-hidden":!0,focusable:!1}):t,s=et("chakra-button__icon",n);return a.jsx(_e.span,{display:"inline-flex",alignSelf:"center",flexShrink:0,...r,className:s,children:o})}b1.displayName="ButtonIcon";function eh(e){const{label:t,placement:n,spacing:r="0.5rem",children:o=a.jsx(Xi,{color:"currentColor",width:"1em",height:"1em"}),className:s,__css:i,...l}=e,u=et("chakra-button__spinner",s),p=n==="start"?"marginEnd":"marginStart",h=d.useMemo(()=>({display:"flex",alignItems:"center",position:t?"relative":"absolute",[p]:t?r:0,fontSize:"1em",lineHeight:"normal",...i}),[i,t,p,r]);return a.jsx(_e.div,{className:u,...l,__css:h,children:o})}eh.displayName="ButtonSpinner";var bc=Pe((e,t)=>{const n=YT(),r=Qa("Button",{...n,...e}),{isDisabled:o=n==null?void 0:n.isDisabled,isLoading:s,isActive:i,children:l,leftIcon:u,rightIcon:p,loadingText:h,iconSpacing:m="0.5rem",type:v,spinner:b,spinnerPlacement:y="start",className:x,as:w,...k}=Yt(e),_=d.useMemo(()=>{const M={...r==null?void 0: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:M}}},[r,n]),{ref:j,type:I}=JT(w),E={rightIcon:p,leftIcon:u,iconSpacing:m,children:l};return a.jsxs(_e.button,{ref:_T(t,j),as:w,type:v??I,"data-active":at(i),"data-loading":at(s),__css:_,className:et("chakra-button",x),...k,disabled:o||s,children:[s&&y==="start"&&a.jsx(eh,{className:"chakra-button__spinner--start",label:h,placement:"start",spacing:m,children:b}),s?h||a.jsx(_e.span,{opacity:0,children:a.jsx($w,{...E})}):a.jsx($w,{...E}),s&&y==="end"&&a.jsx(eh,{className:"chakra-button__spinner--end",label:h,placement:"end",spacing:m,children:b})]})});bc.displayName="Button";function $w(e){const{leftIcon:t,rightIcon:n,children:r,iconSpacing:o}=e;return a.jsxs(a.Fragment,{children:[t&&a.jsx(b1,{marginEnd:o,children:t}),r,n&&a.jsx(b1,{marginStart:o,children:n})]})}var ps=Pe((e,t)=>{const{icon:n,children:r,isRound:o,"aria-label":s,...i}=e,l=n||r,u=d.isValidElement(l)?d.cloneElement(l,{"aria-hidden":!0,focusable:!1}):null;return a.jsx(bc,{padding:"0",borderRadius:o?"full":void 0,ref:t,"aria-label":s,...i,children:u})});ps.displayName="IconButton";var[I0e,e$]=$t({name:"CheckboxGroupContext",strict:!1});function t$(e){const[t,n]=d.useState(e),[r,o]=d.useState(!1);return e!==t&&(o(!0),n(e)),r}function n$(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 12 10",style:{fill:"none",strokeWidth:2,stroke:"currentColor",strokeDasharray:16},...e,children:a.jsx("polyline",{points:"1.5 6 4.5 9 10.5 1"})})}function r$(e){return a.jsx(_e.svg,{width:"1.2em",viewBox:"0 0 24 24",style:{stroke:"currentColor",strokeWidth:4},...e,children:a.jsx("line",{x1:"21",x2:"3",y1:"12",y2:"12"})})}function o$(e){const{isIndeterminate:t,isChecked:n,...r}=e,o=t?r$:n$;return n||t?a.jsx(_e.div,{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:a.jsx(o,{...r})}):null}var[s$,z5]=$t({name:"FormControlStylesContext",errorMessage:`useFormControlStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[a$,Ed]=$t({strict:!1,name:"FormControlContext"});function i$(e){const{id:t,isRequired:n,isInvalid:r,isDisabled:o,isReadOnly:s,...i}=e,l=d.useId(),u=t||`field-${l}`,p=`${u}-label`,h=`${u}-feedback`,m=`${u}-helptext`,[v,b]=d.useState(!1),[y,x]=d.useState(!1),[w,k]=d.useState(!1),_=d.useCallback((D={},R=null)=>({id:m,...D,ref:Ct(R,A=>{A&&x(!0)})}),[m]),j=d.useCallback((D={},R=null)=>({...D,ref:R,"data-focus":at(w),"data-disabled":at(o),"data-invalid":at(r),"data-readonly":at(s),id:D.id!==void 0?D.id:p,htmlFor:D.htmlFor!==void 0?D.htmlFor:u}),[u,o,w,r,s,p]),I=d.useCallback((D={},R=null)=>({id:h,...D,ref:Ct(R,A=>{A&&b(!0)}),"aria-live":"polite"}),[h]),E=d.useCallback((D={},R=null)=>({...D,...i,ref:R,role:"group"}),[i]),M=d.useCallback((D={},R=null)=>({...D,ref:R,role:"presentation","aria-hidden":!0,children:D.children||"*"}),[]);return{isRequired:!!n,isInvalid:!!r,isReadOnly:!!s,isDisabled:!!o,isFocused:!!w,onFocus:()=>k(!0),onBlur:()=>k(!1),hasFeedbackText:v,setHasFeedbackText:b,hasHelpText:y,setHasHelpText:x,id:u,labelId:p,feedbackId:h,helpTextId:m,htmlProps:i,getHelpTextProps:_,getErrorMessageProps:I,getRootProps:E,getLabelProps:j,getRequiredIndicatorProps:M}}var sn=Pe(function(t,n){const r=Wn("Form",t),o=Yt(t),{getRootProps:s,htmlProps:i,...l}=i$(o),u=et("chakra-form-control",t.className);return a.jsx(a$,{value:l,children:a.jsx(s$,{value:r,children:a.jsx(_e.div,{...s({},n),className:u,__css:r.container})})})});sn.displayName="FormControl";var F5=Pe(function(t,n){const r=Ed(),o=z5(),s=et("chakra-form__helper-text",t.className);return a.jsx(_e.div,{...r==null?void 0:r.getHelpTextProps(t,n),__css:o.helperText,className:s})});F5.displayName="FormHelperText";var Hn=Pe(function(t,n){var r;const o=Qa("FormLabel",t),s=Yt(t),{className:i,children:l,requiredIndicator:u=a.jsx(B5,{}),optionalIndicator:p=null,...h}=s,m=Ed(),v=(r=m==null?void 0:m.getLabelProps(h,n))!=null?r:{ref:n,...h};return a.jsxs(_e.label,{...v,className:et("chakra-form__label",s.className),__css:{display:"block",textAlign:"start",...o},children:[l,m!=null&&m.isRequired?u:p]})});Hn.displayName="FormLabel";var B5=Pe(function(t,n){const r=Ed(),o=z5();if(!(r!=null&&r.isRequired))return null;const s=et("chakra-form__required-indicator",t.className);return a.jsx(_e.span,{...r==null?void 0:r.getRequiredIndicatorProps(t,n),__css:o.requiredIndicator,className:s})});B5.displayName="RequiredIndicator";function tx(e){const{isDisabled:t,isInvalid:n,isReadOnly:r,isRequired:o,...s}=nx(e);return{...s,disabled:t,readOnly:r,required:o,"aria-invalid":po(n),"aria-required":po(o),"aria-readonly":po(r)}}function nx(e){var t,n,r;const o=Ed(),{id:s,disabled:i,readOnly:l,required:u,isRequired:p,isInvalid:h,isReadOnly:m,isDisabled:v,onFocus:b,onBlur:y,...x}=e,w=e["aria-describedby"]?[e["aria-describedby"]]:[];return o!=null&&o.hasFeedbackText&&(o!=null&&o.isInvalid)&&w.push(o.feedbackId),o!=null&&o.hasHelpText&&w.push(o.helpTextId),{...x,"aria-describedby":w.join(" ")||void 0,id:s??(o==null?void 0:o.id),isDisabled:(t=i??v)!=null?t:o==null?void 0:o.isDisabled,isReadOnly:(n=l??m)!=null?n:o==null?void 0:o.isReadOnly,isRequired:(r=u??p)!=null?r:o==null?void 0:o.isRequired,isInvalid:h??(o==null?void 0:o.isInvalid),onFocus:Fe(o==null?void 0:o.onFocus,b),onBlur:Fe(o==null?void 0:o.onBlur,y)}}var rx={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},H5=_e("span",{baseStyle:rx});H5.displayName="VisuallyHidden";var l$=_e("input",{baseStyle:rx});l$.displayName="VisuallyHiddenInput";const c$=()=>typeof document<"u";let Lw=!1,Md=null,zi=!1,x1=!1;const y1=new Set;function ox(e,t){y1.forEach(n=>n(e,t))}const u$=typeof window<"u"&&window.navigator!=null?/^Mac/.test(window.navigator.platform):!1;function d$(e){return!(e.metaKey||!u$&&e.altKey||e.ctrlKey||e.key==="Control"||e.key==="Shift"||e.key==="Meta")}function zw(e){zi=!0,d$(e)&&(Md="keyboard",ox("keyboard",e))}function jl(e){if(Md="pointer",e.type==="mousedown"||e.type==="pointerdown"){zi=!0;const t=e.composedPath?e.composedPath()[0]:e.target;let n=!1;try{n=t.matches(":focus-visible")}catch{}if(n)return;ox("pointer",e)}}function f$(e){return e.mozInputSource===0&&e.isTrusted?!0:e.detail===0&&!e.pointerType}function p$(e){f$(e)&&(zi=!0,Md="virtual")}function h$(e){e.target===window||e.target===document||(!zi&&!x1&&(Md="virtual",ox("virtual",e)),zi=!1,x1=!1)}function m$(){zi=!1,x1=!0}function Fw(){return Md!=="pointer"}function g$(){if(!c$()||Lw)return;const{focus:e}=HTMLElement.prototype;HTMLElement.prototype.focus=function(...n){zi=!0,e.apply(this,n)},document.addEventListener("keydown",zw,!0),document.addEventListener("keyup",zw,!0),document.addEventListener("click",p$,!0),window.addEventListener("focus",h$,!0),window.addEventListener("blur",m$,!1),typeof PointerEvent<"u"?(document.addEventListener("pointerdown",jl,!0),document.addEventListener("pointermove",jl,!0),document.addEventListener("pointerup",jl,!0)):(document.addEventListener("mousedown",jl,!0),document.addEventListener("mousemove",jl,!0),document.addEventListener("mouseup",jl,!0)),Lw=!0}function W5(e){g$(),e(Fw());const t=()=>e(Fw());return y1.add(t),()=>{y1.delete(t)}}function v$(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function V5(e={}){const t=nx(e),{isDisabled:n,isReadOnly:r,isRequired:o,isInvalid:s,id:i,onBlur:l,onFocus:u,"aria-describedby":p}=t,{defaultChecked:h,isChecked:m,isFocusable:v,onChange:b,isIndeterminate:y,name:x,value:w,tabIndex:k=void 0,"aria-label":_,"aria-labelledby":j,"aria-invalid":I,...E}=e,M=v$(E,["isDisabled","isReadOnly","isRequired","isInvalid","id","onBlur","onFocus","aria-describedby"]),D=nn(b),R=nn(l),A=nn(u),[O,T]=d.useState(!1),[K,F]=d.useState(!1),[V,X]=d.useState(!1),[W,z]=d.useState(!1);d.useEffect(()=>W5(T),[]);const Y=d.useRef(null),[B,q]=d.useState(!0),[re,Q]=d.useState(!!h),le=m!==void 0,se=le?m:re,U=d.useCallback(fe=>{if(r||n){fe.preventDefault();return}le||Q(se?fe.target.checked:y?!0:fe.target.checked),D==null||D(fe)},[r,n,se,le,y,D]);Zl(()=>{Y.current&&(Y.current.indeterminate=!!y)},[y]),ca(()=>{n&&F(!1)},[n,F]),Zl(()=>{const fe=Y.current;if(!(fe!=null&&fe.form))return;const De=()=>{Q(!!h)};return fe.form.addEventListener("reset",De),()=>{var je;return(je=fe.form)==null?void 0:je.removeEventListener("reset",De)}},[]);const G=n&&!v,te=d.useCallback(fe=>{fe.key===" "&&z(!0)},[z]),ae=d.useCallback(fe=>{fe.key===" "&&z(!1)},[z]);Zl(()=>{if(!Y.current)return;Y.current.checked!==se&&Q(Y.current.checked)},[Y.current]);const oe=d.useCallback((fe={},De=null)=>{const je=Be=>{K&&Be.preventDefault(),z(!0)};return{...fe,ref:De,"data-active":at(W),"data-hover":at(V),"data-checked":at(se),"data-focus":at(K),"data-focus-visible":at(K&&O),"data-indeterminate":at(y),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r),"aria-hidden":!0,onMouseDown:Fe(fe.onMouseDown,je),onMouseUp:Fe(fe.onMouseUp,()=>z(!1)),onMouseEnter:Fe(fe.onMouseEnter,()=>X(!0)),onMouseLeave:Fe(fe.onMouseLeave,()=>X(!1))}},[W,se,n,K,O,V,y,s,r]),pe=d.useCallback((fe={},De=null)=>({...fe,ref:De,"data-active":at(W),"data-hover":at(V),"data-checked":at(se),"data-focus":at(K),"data-focus-visible":at(K&&O),"data-indeterminate":at(y),"data-disabled":at(n),"data-invalid":at(s),"data-readonly":at(r)}),[W,se,n,K,O,V,y,s,r]),ue=d.useCallback((fe={},De=null)=>({...M,...fe,ref:Ct(De,je=>{je&&q(je.tagName==="LABEL")}),onClick:Fe(fe.onClick,()=>{var je;B||((je=Y.current)==null||je.click(),requestAnimationFrame(()=>{var Be;(Be=Y.current)==null||Be.focus({preventScroll:!0})}))}),"data-disabled":at(n),"data-checked":at(se),"data-invalid":at(s)}),[M,n,se,s,B]),me=d.useCallback((fe={},De=null)=>({...fe,ref:Ct(Y,De),type:"checkbox",name:x,value:w,id:i,tabIndex:k,onChange:Fe(fe.onChange,U),onBlur:Fe(fe.onBlur,R,()=>F(!1)),onFocus:Fe(fe.onFocus,A,()=>F(!0)),onKeyDown:Fe(fe.onKeyDown,te),onKeyUp:Fe(fe.onKeyUp,ae),required:o,checked:se,disabled:G,readOnly:r,"aria-label":_,"aria-labelledby":j,"aria-invalid":I?!!I:s,"aria-describedby":p,"aria-disabled":n,style:rx}),[x,w,i,U,R,A,te,ae,o,se,G,r,_,j,I,s,p,n,k]),Ce=d.useCallback((fe={},De=null)=>({...fe,ref:De,onMouseDown:Fe(fe.onMouseDown,b$),"data-disabled":at(n),"data-checked":at(se),"data-invalid":at(s)}),[se,n,s]);return{state:{isInvalid:s,isFocused:K,isChecked:se,isActive:W,isHovered:V,isIndeterminate:y,isDisabled:n,isReadOnly:r,isRequired:o},getRootProps:ue,getCheckboxProps:oe,getIndicatorProps:pe,getInputProps:me,getLabelProps:Ce,htmlProps:M}}function b$(e){e.preventDefault(),e.stopPropagation()}var x$={display:"inline-flex",alignItems:"center",justifyContent:"center",verticalAlign:"top",userSelect:"none",flexShrink:0},y$={cursor:"pointer",display:"inline-flex",alignItems:"center",verticalAlign:"top",position:"relative"},C$=ia({from:{opacity:0,strokeDashoffset:16,transform:"scale(0.95)"},to:{opacity:1,strokeDashoffset:0,transform:"scale(1)"}}),w$=ia({from:{opacity:0},to:{opacity:1}}),S$=ia({from:{transform:"scaleX(0.65)"},to:{transform:"scaleX(1)"}}),Sm=Pe(function(t,n){const r=e$(),o={...r,...t},s=Wn("Checkbox",o),i=Yt(t),{spacing:l="0.5rem",className:u,children:p,iconColor:h,iconSize:m,icon:v=a.jsx(o$,{}),isChecked:b,isDisabled:y=r==null?void 0:r.isDisabled,onChange:x,inputProps:w,...k}=i;let _=b;r!=null&&r.value&&i.value&&(_=r.value.includes(i.value));let j=x;r!=null&&r.onChange&&i.value&&(j=fm(r.onChange,x));const{state:I,getInputProps:E,getCheckboxProps:M,getLabelProps:D,getRootProps:R}=V5({...k,isDisabled:y,isChecked:_,onChange:j}),A=t$(I.isChecked),O=d.useMemo(()=>({animation:A?I.isIndeterminate?`${w$} 20ms linear, ${S$} 200ms linear`:`${C$} 200ms linear`:void 0,fontSize:m,color:h,...s.icon}),[h,m,A,I.isIndeterminate,s.icon]),T=d.cloneElement(v,{__css:O,isIndeterminate:I.isIndeterminate,isChecked:I.isChecked});return a.jsxs(_e.label,{__css:{...y$,...s.container},className:et("chakra-checkbox",u),...R(),children:[a.jsx("input",{className:"chakra-checkbox__input",...E(w,n)}),a.jsx(_e.span,{__css:{...x$,...s.control},className:"chakra-checkbox__control",...M(),children:T}),p&&a.jsx(_e.span,{className:"chakra-checkbox__label",...D(),__css:{marginStart:l,...s.label},children:p})]})});Sm.displayName="Checkbox";function k$(e){const t=parseFloat(e);return typeof t!="number"||Number.isNaN(t)?0:t}function sx(e,t){let n=k$(e);const r=10**(t??10);return n=Math.round(n*r)/r,t?n.toFixed(t):n.toString()}function C1(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 th(e,t,n){return(e-t)*100/(n-t)}function U5(e,t,n){return(n-t)*e+t}function w1(e,t,n){const r=Math.round((e-t)/n)*n+t,o=C1(n);return sx(r,o)}function tc(e,t,n){return e==null?e:(n{var O;return r==null?"":(O=nv(r,s,n))!=null?O:""}),v=typeof o<"u",b=v?o:h,y=G5(Ma(b),s),x=n??y,w=d.useCallback(O=>{O!==b&&(v||m(O.toString()),p==null||p(O.toString(),Ma(O)))},[p,v,b]),k=d.useCallback(O=>{let T=O;return u&&(T=tc(T,i,l)),sx(T,x)},[x,u,l,i]),_=d.useCallback((O=s)=>{let T;b===""?T=Ma(O):T=Ma(b)+O,T=k(T),w(T)},[k,s,w,b]),j=d.useCallback((O=s)=>{let T;b===""?T=Ma(-O):T=Ma(b)-O,T=k(T),w(T)},[k,s,w,b]),I=d.useCallback(()=>{var O;let T;r==null?T="":T=(O=nv(r,s,n))!=null?O:i,w(T)},[r,n,s,w,i]),E=d.useCallback(O=>{var T;const K=(T=nv(O,s,x))!=null?T:i;w(K)},[x,s,w,i]),M=Ma(b);return{isOutOfRange:M>l||M" `}),[P$,ax]=$t({name:"EditableContext",errorMessage:"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in ``"}),q5={fontSize:"inherit",fontWeight:"inherit",textAlign:"inherit",bg:"transparent"},km=Pe(function(t,n){const{getInputProps:r}=ax(),o=K5(),s=r(t,n),i=et("chakra-editable__input",t.className);return a.jsx(_e.input,{...s,__css:{outline:0,...q5,...o.input},className:i})});km.displayName="EditableInput";var _m=Pe(function(t,n){const{getPreviewProps:r}=ax(),o=K5(),s=r(t,n),i=et("chakra-editable__preview",t.className);return a.jsx(_e.span,{...s,__css:{cursor:"text",display:"inline-block",...q5,...o.preview},className:i})});_m.displayName="EditablePreview";function _i(e,t,n,r){const o=nn(n);return d.useEffect(()=>{const s=typeof e=="function"?e():e??document;if(!(!n||!s))return s.addEventListener(t,o,r),()=>{s.removeEventListener(t,o,r)}},[t,e,r,o,n]),()=>{const s=typeof e=="function"?e():e??document;s==null||s.removeEventListener(t,o,r)}}function I$(e){return"current"in e}var X5=()=>typeof window<"u";function E$(){var e;const t=navigator.userAgentData;return(e=t==null?void 0:t.platform)!=null?e:navigator.platform}var M$=e=>X5()&&e.test(navigator.vendor),O$=e=>X5()&&e.test(E$()),D$=()=>O$(/mac|iphone|ipad|ipod/i),R$=()=>D$()&&M$(/apple/i);function Y5(e){const{ref:t,elements:n,enabled:r}=e,o=()=>{var s,i;return(i=(s=t.current)==null?void 0:s.ownerDocument)!=null?i:document};_i(o,"pointerdown",s=>{if(!R$()||!r)return;const i=s.target,u=(n??[t]).some(p=>{const h=I$(p)?p.current:p;return(h==null?void 0:h.contains(i))||h===i});o().activeElement!==i&&u&&(s.preventDefault(),i.focus())})}function Bw(e,t){return e?e===t||e.contains(t):!1}function A$(e={}){const{onChange:t,onCancel:n,onSubmit:r,onBlur:o,value:s,isDisabled:i,defaultValue:l,startWithEditView:u,isPreviewFocusable:p=!0,submitOnBlur:h=!0,selectAllOnFocus:m=!0,placeholder:v,onEdit:b,finalFocusRef:y,...x}=e,w=nn(b),k=!!(u&&!i),[_,j]=d.useState(k),[I,E]=Ac({defaultValue:l||"",value:s,onChange:t}),[M,D]=d.useState(I),R=d.useRef(null),A=d.useRef(null),O=d.useRef(null),T=d.useRef(null),K=d.useRef(null);Y5({ref:R,enabled:_,elements:[T,K]});const F=!_&&!i;Zl(()=>{var oe,pe;_&&((oe=R.current)==null||oe.focus(),m&&((pe=R.current)==null||pe.select()))},[]),ca(()=>{var oe,pe,ue,me;if(!_){y?(oe=y.current)==null||oe.focus():(pe=O.current)==null||pe.focus();return}(ue=R.current)==null||ue.focus(),m&&((me=R.current)==null||me.select()),w==null||w()},[_,w,m]);const V=d.useCallback(()=>{F&&j(!0)},[F]),X=d.useCallback(()=>{D(I)},[I]),W=d.useCallback(()=>{j(!1),E(M),n==null||n(M),o==null||o(M)},[n,o,E,M]),z=d.useCallback(()=>{j(!1),D(I),r==null||r(I),o==null||o(M)},[I,r,o,M]);d.useEffect(()=>{if(_)return;const oe=R.current;(oe==null?void 0:oe.ownerDocument.activeElement)===oe&&(oe==null||oe.blur())},[_]);const Y=d.useCallback(oe=>{E(oe.currentTarget.value)},[E]),B=d.useCallback(oe=>{const pe=oe.key,me={Escape:W,Enter:Ce=>{!Ce.shiftKey&&!Ce.metaKey&&z()}}[pe];me&&(oe.preventDefault(),me(oe))},[W,z]),q=d.useCallback(oe=>{const pe=oe.key,me={Escape:W}[pe];me&&(oe.preventDefault(),me(oe))},[W]),re=I.length===0,Q=d.useCallback(oe=>{var pe;if(!_)return;const ue=oe.currentTarget.ownerDocument,me=(pe=oe.relatedTarget)!=null?pe:ue.activeElement,Ce=Bw(T.current,me),ge=Bw(K.current,me);!Ce&&!ge&&(h?z():W())},[h,z,W,_]),le=d.useCallback((oe={},pe=null)=>{const ue=F&&p?0:void 0;return{...oe,ref:Ct(pe,A),children:re?v:I,hidden:_,"aria-disabled":po(i),tabIndex:ue,onFocus:Fe(oe.onFocus,V,X)}},[i,_,F,p,re,V,X,v,I]),se=d.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:Ct(pe,R),disabled:i,"aria-disabled":po(i),value:I,onBlur:Fe(oe.onBlur,Q),onChange:Fe(oe.onChange,Y),onKeyDown:Fe(oe.onKeyDown,B),onFocus:Fe(oe.onFocus,X)}),[i,_,Q,Y,B,X,v,I]),U=d.useCallback((oe={},pe=null)=>({...oe,hidden:!_,placeholder:v,ref:Ct(pe,R),disabled:i,"aria-disabled":po(i),value:I,onBlur:Fe(oe.onBlur,Q),onChange:Fe(oe.onChange,Y),onKeyDown:Fe(oe.onKeyDown,q),onFocus:Fe(oe.onFocus,X)}),[i,_,Q,Y,q,X,v,I]),G=d.useCallback((oe={},pe=null)=>({"aria-label":"Edit",...oe,type:"button",onClick:Fe(oe.onClick,V),ref:Ct(pe,O),disabled:i}),[V,i]),te=d.useCallback((oe={},pe=null)=>({...oe,"aria-label":"Submit",ref:Ct(K,pe),type:"button",onClick:Fe(oe.onClick,z),disabled:i}),[z,i]),ae=d.useCallback((oe={},pe=null)=>({"aria-label":"Cancel",id:"cancel",...oe,ref:Ct(T,pe),type:"button",onClick:Fe(oe.onClick,W),disabled:i}),[W,i]);return{isEditing:_,isDisabled:i,isValueEmpty:re,value:I,onEdit:V,onCancel:W,onSubmit:z,getPreviewProps:le,getInputProps:se,getTextareaProps:U,getEditButtonProps:G,getSubmitButtonProps:te,getCancelButtonProps:ae,htmlProps:x}}var jm=Pe(function(t,n){const r=Wn("Editable",t),o=Yt(t),{htmlProps:s,...i}=A$(o),{isEditing:l,onSubmit:u,onCancel:p,onEdit:h}=i,m=et("chakra-editable",t.className),v=Nb(t.children,{isEditing:l,onSubmit:u,onCancel:p,onEdit:h});return a.jsx(P$,{value:i,children:a.jsx(j$,{value:r,children:a.jsx(_e.div,{ref:n,...s,className:m,children:v})})})});jm.displayName="Editable";function Q5(){const{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}=ax();return{isEditing:e,getEditButtonProps:t,getCancelButtonProps:n,getSubmitButtonProps:r}}var Z5={exports:{}},N$="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",T$=N$,$$=T$;function J5(){}function e3(){}e3.resetWarningCache=J5;var L$=function(){function e(r,o,s,i,l,u){if(u!==$$){var p=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 p.name="Invariant Violation",p}}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:e3,resetWarningCache:J5};return n.PropTypes=n,n};Z5.exports=L$();var z$=Z5.exports;const Ht=Rc(z$);var S1="data-focus-lock",t3="data-focus-lock-disabled",F$="data-no-focus-lock",B$="data-autofocus-inside",H$="data-no-autofocus";function W$(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function V$(e,t){var n=d.useState(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(r){var o=n.value;o!==r&&(n.value=r,n.callback(r,o))}}}})[0];return n.callback=t,n.facade}function n3(e,t){return V$(t||null,function(n){return e.forEach(function(r){return W$(r,n)})})}var rv={width:"1px",height:"0px",padding:0,overflow:"hidden",position:"fixed",top:"1px",left:"1px"},us=function(){return us=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&s[s.length-1])&&(p[0]===6||p[0]===2)){n=0;continue}if(p[0]===3&&(!s||p[1]>s[0]&&p[1]0)&&!(o=r.next()).done;)s.push(o.value)}catch(l){i={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(i)throw i.error}}return s}function k1(e,t,n){if(n||arguments.length===2)for(var r=0,o=t.length,s;r=0}).sort(oL)},sL=["button:enabled","select:enabled","textarea:enabled","input:enabled","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]","[tabindex]","[contenteditable]","[autofocus]"],ux=sL.join(","),aL="".concat(ux,", [data-focus-guard]"),y3=function(e,t){return _s((e.shadowRoot||e).children).reduce(function(n,r){return n.concat(r.matches(t?aL:ux)?[r]:[],y3(r))},[])},iL=function(e,t){var n;return e instanceof HTMLIFrameElement&&(!((n=e.contentDocument)===null||n===void 0)&&n.body)?Pm([e.contentDocument.body],t):[e]},Pm=function(e,t){return e.reduce(function(n,r){var o,s=y3(r,t),i=(o=[]).concat.apply(o,s.map(function(l){return iL(l,t)}));return n.concat(i,r.parentNode?_s(r.parentNode.querySelectorAll(ux)).filter(function(l){return l===r}):[])},[])},lL=function(e){var t=e.querySelectorAll("[".concat(B$,"]"));return _s(t).map(function(n){return Pm([n])}).reduce(function(n,r){return n.concat(r)},[])},dx=function(e,t){return _s(e).filter(function(n){return h3(t,n)}).filter(function(n){return tL(n)})},Ww=function(e,t){return t===void 0&&(t=new Map),_s(e).filter(function(n){return m3(t,n)})},j1=function(e,t,n){return x3(dx(Pm(e,n),t),!0,n)},Vw=function(e,t){return x3(dx(Pm(e),t),!1)},cL=function(e,t){return dx(lL(e),t)},nc=function(e,t){return e.shadowRoot?nc(e.shadowRoot,t):Object.getPrototypeOf(e).contains!==void 0&&Object.getPrototypeOf(e).contains.call(e,t)?!0:_s(e.children).some(function(n){var r;if(n instanceof HTMLIFrameElement){var o=(r=n.contentDocument)===null||r===void 0?void 0:r.body;return o?nc(o,t):!1}return nc(n,t)})},uL=function(e){for(var t=new Set,n=e.length,r=0;r0&&t.add(o),(s&Node.DOCUMENT_POSITION_CONTAINS)>0&&t.add(r)}return e.filter(function(i,l){return!t.has(l)})},C3=function(e){return e.parentNode?C3(e.parentNode):e},fx=function(e){var t=nh(e);return t.filter(Boolean).reduce(function(n,r){var o=r.getAttribute(S1);return n.push.apply(n,o?uL(_s(C3(r).querySelectorAll("[".concat(S1,'="').concat(o,'"]:not([').concat(t3,'="disabled"])')))):[r]),n},[])},dL=function(e){try{return e()}catch{return}},Ju=function(e){if(e===void 0&&(e=document),!(!e||!e.activeElement)){var t=e.activeElement;return t.shadowRoot?Ju(t.shadowRoot):t instanceof HTMLIFrameElement&&dL(function(){return t.contentWindow.document})?Ju(t.contentWindow.document):t}},fL=function(e,t){return e===t},pL=function(e,t){return!!_s(e.querySelectorAll("iframe")).some(function(n){return fL(n,t)})},w3=function(e,t){return t===void 0&&(t=Ju(d3(e).ownerDocument)),!t||t.dataset&&t.dataset.focusGuard?!1:fx(e).some(function(n){return nc(n,t)||pL(n,t)})},hL=function(e){e===void 0&&(e=document);var t=Ju(e);return t?_s(e.querySelectorAll("[".concat(F$,"]"))).some(function(n){return nc(n,t)}):!1},mL=function(e,t){return t.filter(b3).filter(function(n){return n.name===e.name}).filter(function(n){return n.checked})[0]||e},px=function(e,t){return b3(e)&&e.name?mL(e,t):e},gL=function(e){var t=new Set;return e.forEach(function(n){return t.add(px(n,e))}),e.filter(function(n){return t.has(n)})},Uw=function(e){return e[0]&&e.length>1?px(e[0],e):e[0]},Gw=function(e,t){return e.length>1?e.indexOf(px(e[t],e)):t},S3="NEW_FOCUS",vL=function(e,t,n,r){var o=e.length,s=e[0],i=e[o-1],l=cx(n);if(!(n&&e.indexOf(n)>=0)){var u=n!==void 0?t.indexOf(n):-1,p=r?t.indexOf(r):u,h=r?e.indexOf(r):-1,m=u-p,v=t.indexOf(s),b=t.indexOf(i),y=gL(t),x=n!==void 0?y.indexOf(n):-1,w=x-(r?y.indexOf(r):u),k=Gw(e,0),_=Gw(e,o-1);if(u===-1||h===-1)return S3;if(!m&&h>=0)return h;if(u<=v&&l&&Math.abs(m)>1)return _;if(u>=b&&l&&Math.abs(m)>1)return k;if(m&&Math.abs(w)>1)return h;if(u<=v)return _;if(u>b)return k;if(m)return Math.abs(m)>1?h:(o+h+m)%o}},bL=function(e){return function(t){var n,r=(n=g3(t))===null||n===void 0?void 0:n.autofocus;return t.autofocus||r!==void 0&&r!=="false"||e.indexOf(t)>=0}},xL=function(e,t,n){var r=e.map(function(s){var i=s.node;return i}),o=Ww(r.filter(bL(n)));return o&&o.length?Uw(o):Uw(Ww(t))},P1=function(e,t){return t===void 0&&(t=[]),t.push(e),e.parentNode&&P1(e.parentNode.host||e.parentNode,t),t},ov=function(e,t){for(var n=P1(e),r=P1(t),o=0;o=0)return s}return!1},k3=function(e,t,n){var r=nh(e),o=nh(t),s=r[0],i=!1;return o.filter(Boolean).forEach(function(l){i=ov(i||l,l)||i,n.filter(Boolean).forEach(function(u){var p=ov(s,u);p&&(!i||nc(p,i)?i=p:i=ov(p,i))})}),i},yL=function(e,t){return e.reduce(function(n,r){return n.concat(cL(r,t))},[])},CL=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(rL)},wL=function(e,t){var n=Ju(nh(e).length>0?document:d3(e).ownerDocument),r=fx(e).filter(rh),o=k3(n||e,e,r),s=new Map,i=Vw(r,s),l=j1(r,s).filter(function(b){var y=b.node;return rh(y)});if(!(!l[0]&&(l=i,!l[0]))){var u=Vw([o],s).map(function(b){var y=b.node;return y}),p=CL(u,l),h=p.map(function(b){var y=b.node;return y}),m=vL(h,u,n,t);if(m===S3){var v=xL(i,h,yL(r,s));if(v)return{node:v};console.warn("focus-lock: cannot find any node to move focus into");return}return m===void 0?m:p[m]}},SL=function(e){var t=fx(e).filter(rh),n=k3(e,e,t),r=new Map,o=j1([n],r,!0),s=j1(t,r).filter(function(i){var l=i.node;return rh(l)}).map(function(i){var l=i.node;return l});return o.map(function(i){var l=i.node,u=i.index;return{node:l,index:u,lockItem:s.indexOf(l)>=0,guard:cx(l)}})},kL=function(e,t){"focus"in e&&e.focus(t),"contentWindow"in e&&e.contentWindow&&e.contentWindow.focus()},sv=0,av=!1,_3=function(e,t,n){n===void 0&&(n={});var r=wL(e,t);if(!av&&r){if(sv>2){console.error("FocusLock: focus-fighting detected. Only one focus management system could be active. See https://github.com/theKashey/focus-lock/#focus-fighting"),av=!0,setTimeout(function(){av=!1},1);return}sv++,kL(r.node,n.focusOptions),sv--}};function hx(e){setTimeout(e,1)}var _L=function(){return document&&document.activeElement===document.body},jL=function(){return _L()||hL()},rc=null,Kl=null,oc=null,ed=!1,PL=function(){return!0},IL=function(t){return(rc.whiteList||PL)(t)},EL=function(t,n){oc={observerNode:t,portaledElement:n}},ML=function(t){return oc&&oc.portaledElement===t};function Kw(e,t,n,r){var o=null,s=e;do{var i=r[s];if(i.guard)i.node.dataset.focusAutoGuard&&(o=i);else if(i.lockItem){if(s!==e)return;o=null}else break}while((s+=n)!==t);o&&(o.node.tabIndex=0)}var OL=function(t){return t&&"current"in t?t.current:t},DL=function(t){return t?!!ed:ed==="meanwhile"},RL=function e(t,n,r){return n&&(n.host===t&&(!n.activeElement||r.contains(n.activeElement))||n.parentNode&&e(t,n.parentNode,r))},AL=function(t,n){return n.some(function(r){return RL(t,r,r)})},oh=function(){var t=!1;if(rc){var n=rc,r=n.observed,o=n.persistentFocus,s=n.autoFocus,i=n.shards,l=n.crossFrame,u=n.focusOptions,p=r||oc&&oc.portaledElement,h=document&&document.activeElement;if(p){var m=[p].concat(i.map(OL).filter(Boolean));if((!h||IL(h))&&(o||DL(l)||!jL()||!Kl&&s)&&(p&&!(w3(m)||h&&AL(h,m)||ML(h))&&(document&&!Kl&&h&&!s?(h.blur&&h.blur(),document.body.focus()):(t=_3(m,Kl,{focusOptions:u}),oc={})),ed=!1,Kl=document&&document.activeElement),document){var v=document&&document.activeElement,b=SL(m),y=b.map(function(x){var w=x.node;return w}).indexOf(v);y>-1&&(b.filter(function(x){var w=x.guard,k=x.node;return w&&k.dataset.focusAutoGuard}).forEach(function(x){var w=x.node;return w.removeAttribute("tabIndex")}),Kw(y,b.length,1,b),Kw(y,-1,-1,b))}}}return t},j3=function(t){oh()&&t&&(t.stopPropagation(),t.preventDefault())},mx=function(){return hx(oh)},NL=function(t){var n=t.target,r=t.currentTarget;r.contains(n)||EL(r,n)},TL=function(){return null},P3=function(){ed="just",hx(function(){ed="meanwhile"})},$L=function(){document.addEventListener("focusin",j3),document.addEventListener("focusout",mx),window.addEventListener("blur",P3)},LL=function(){document.removeEventListener("focusin",j3),document.removeEventListener("focusout",mx),window.removeEventListener("blur",P3)};function zL(e){return e.filter(function(t){var n=t.disabled;return!n})}function FL(e){var t=e.slice(-1)[0];t&&!rc&&$L();var n=rc,r=n&&t&&t.id===n.id;rc=t,n&&!r&&(n.onDeactivation(),e.filter(function(o){var s=o.id;return s===n.id}).length||n.returnFocus(!t)),t?(Kl=null,(!r||n.observed!==t.observed)&&t.onActivation(),oh(),hx(oh)):(LL(),Kl=null)}l3.assignSyncMedium(NL);c3.assignMedium(mx);G$.assignMedium(function(e){return e({moveFocusInside:_3,focusInside:w3})});const BL=Y$(zL,FL)(TL);var I3=d.forwardRef(function(t,n){return d.createElement(u3,rn({sideCar:BL,ref:n},t))}),E3=u3.propTypes||{};E3.sideCar;KN(E3,["sideCar"]);I3.propTypes={};const qw=I3;function M3(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function gx(e){var t;if(!M3(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function HL(e){var t,n;return(n=(t=O3(e))==null?void 0:t.defaultView)!=null?n:window}function O3(e){return M3(e)?e.ownerDocument:document}function WL(e){return O3(e).activeElement}function VL(e){const t=e.ownerDocument.defaultView||window,{overflow:n,overflowX:r,overflowY:o}=t.getComputedStyle(e);return/auto|scroll|overlay|hidden/.test(n+o+r)}function UL(e){return e.localName==="html"?e:e.assignedSlot||e.parentElement||e.ownerDocument.documentElement}function D3(e){return["html","body","#document"].includes(e.localName)?e.ownerDocument.body:gx(e)&&VL(e)?e:D3(UL(e))}var R3=e=>e.hasAttribute("tabindex"),GL=e=>R3(e)&&e.tabIndex===-1;function KL(e){return!!e.getAttribute("disabled")||!!e.getAttribute("aria-disabled")}function A3(e){return e.parentElement&&A3(e.parentElement)?!0:e.hidden}function qL(e){const t=e.getAttribute("contenteditable");return t!=="false"&&t!=null}function N3(e){if(!gx(e)||A3(e)||KL(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]():qL(e)?!0:R3(e)}function XL(e){return e?gx(e)&&N3(e)&&!GL(e):!1}var YL=["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]"],QL=YL.join(),ZL=e=>e.offsetWidth>0&&e.offsetHeight>0;function T3(e){const t=Array.from(e.querySelectorAll(QL));return t.unshift(e),t.filter(n=>N3(n)&&ZL(n))}var Xw,JL=(Xw=qw.default)!=null?Xw:qw,$3=e=>{const{initialFocusRef:t,finalFocusRef:n,contentRef:r,restoreFocus:o,children:s,isDisabled:i,autoFocus:l,persistentFocus:u,lockFocusAcrossFrames:p}=e,h=d.useCallback(()=>{t!=null&&t.current?t.current.focus():r!=null&&r.current&&T3(r.current).length===0&&requestAnimationFrame(()=>{var y;(y=r.current)==null||y.focus()})},[t,r]),m=d.useCallback(()=>{var b;(b=n==null?void 0:n.current)==null||b.focus()},[n]),v=o&&!n;return a.jsx(JL,{crossFrame:p,persistentFocus:u,autoFocus:l,disabled:i,onActivation:h,onDeactivation:m,returnFocus:v,children:s})};$3.displayName="FocusLock";var ez=fT?d.useLayoutEffect:d.useEffect;function I1(e,t=[]){const n=d.useRef(e);return ez(()=>{n.current=e}),d.useCallback((...r)=>{var o;return(o=n.current)==null?void 0:o.call(n,...r)},t)}function tz(e,t,n,r){const o=I1(t);return d.useEffect(()=>{var s;const i=(s=$C(n))!=null?s:document;if(t)return i.addEventListener(e,o,r),()=>{i.removeEventListener(e,o,r)}},[e,n,r,o,t]),()=>{var s;((s=$C(n))!=null?s:document).removeEventListener(e,o,r)}}function nz(e,t){const n=d.useId();return d.useMemo(()=>e||[t,n].filter(Boolean).join("-"),[e,t,n])}function rz(e,t){const n=e!==void 0;return[n,n&&typeof e<"u"?e:t]}function Mr(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=I1(n),i=I1(t),[l,u]=d.useState(e.defaultIsOpen||!1),[p,h]=rz(r,l),m=nz(o,"disclosure"),v=d.useCallback(()=>{p||u(!1),i==null||i()},[p,i]),b=d.useCallback(()=>{p||u(!0),s==null||s()},[p,s]),y=d.useCallback(()=>{(h?v:b)()},[h,b,v]);return{isOpen:!!h,onOpen:b,onClose:v,onToggle:y,isControlled:p,getButtonProps:(x={})=>({...x,"aria-expanded":h,"aria-controls":m,onClick:$7(x.onClick,y)}),getDisclosureProps:(x={})=>({...x,hidden:!h,id:m})}}var[oz,sz]=$t({name:"InputGroupStylesContext",errorMessage:`useInputGroupStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),L3=Pe(function(t,n){const r=Wn("Input",t),{children:o,className:s,...i}=Yt(t),l=et("chakra-input__group",s),u={},p=Id(o),h=r.field;p.forEach(v=>{var b,y;r&&(h&&v.type.id==="InputLeftElement"&&(u.paddingStart=(b=h.height)!=null?b:h.h),h&&v.type.id==="InputRightElement"&&(u.paddingEnd=(y=h.height)!=null?y:h.h),v.type.id==="InputRightAddon"&&(u.borderEndRadius=0),v.type.id==="InputLeftAddon"&&(u.borderStartRadius=0))});const m=p.map(v=>{var b,y;const x=Aj({size:((b=v.props)==null?void 0:b.size)||t.size,variant:((y=v.props)==null?void 0:y.variant)||t.variant});return v.type.id!=="Input"?d.cloneElement(v,x):d.cloneElement(v,Object.assign(x,u,v.props))});return a.jsx(_e.div,{className:l,ref:n,__css:{width:"100%",display:"flex",position:"relative",isolation:"isolate",...r.group},"data-group":!0,...i,children:a.jsx(oz,{value:r,children:m})})});L3.displayName="InputGroup";var az=_e("div",{baseStyle:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0",zIndex:2}}),Im=Pe(function(t,n){var r,o;const{placement:s="left",...i}=t,l=sz(),u=l.field,h={[s==="left"?"insetStart":"insetEnd"]:"0",width:(r=u==null?void 0:u.height)!=null?r:u==null?void 0:u.h,height:(o=u==null?void 0:u.height)!=null?o:u==null?void 0:u.h,fontSize:u==null?void 0:u.fontSize,...l.element};return a.jsx(az,{ref:n,__css:h,...i})});Im.id="InputElement";Im.displayName="InputElement";var z3=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__left-element",r);return a.jsx(Im,{ref:n,placement:"left",className:s,...o})});z3.id="InputLeftElement";z3.displayName="InputLeftElement";var vx=Pe(function(t,n){const{className:r,...o}=t,s=et("chakra-input__right-element",r);return a.jsx(Im,{ref:n,placement:"right",className:s,...o})});vx.id="InputRightElement";vx.displayName="InputRightElement";var Em=Pe(function(t,n){const{htmlSize:r,...o}=t,s=Wn("Input",o),i=Yt(o),l=tx(i),u=et("chakra-input",t.className);return a.jsx(_e.input,{size:r,...l,__css:s.field,ref:n,className:u})});Em.displayName="Input";Em.id="Input";var Mm=Pe(function(t,n){const r=Qa("Link",t),{className:o,isExternal:s,...i}=Yt(t);return a.jsx(_e.a,{target:s?"_blank":void 0,rel:s?"noopener":void 0,ref:n,className:et("chakra-link",o),...i,__css:r})});Mm.displayName="Link";var[iz,F3]=$t({name:"ListStylesContext",errorMessage:`useListStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),bx=Pe(function(t,n){const r=Wn("List",t),{children:o,styleType:s="none",stylePosition:i,spacing:l,...u}=Yt(t),p=Id(o),m=l?{["& > *:not(style) ~ *:not(style)"]:{mt:l}}:{};return a.jsx(iz,{value:r,children:a.jsx(_e.ul,{ref:n,listStyleType:s,listStylePosition:i,role:"list",__css:{...r.container,...m},...u,children:p})})});bx.displayName="List";var lz=Pe((e,t)=>{const{as:n,...r}=e;return a.jsx(bx,{ref:t,as:"ol",styleType:"decimal",marginStart:"1em",...r})});lz.displayName="OrderedList";var Od=Pe(function(t,n){const{as:r,...o}=t;return a.jsx(bx,{ref:n,as:"ul",styleType:"initial",marginStart:"1em",...o})});Od.displayName="UnorderedList";var lo=Pe(function(t,n){const r=F3();return a.jsx(_e.li,{ref:n,...t,__css:r.item})});lo.displayName="ListItem";var cz=Pe(function(t,n){const r=F3();return a.jsx(Tn,{ref:n,role:"presentation",...t,__css:r.icon})});cz.displayName="ListIcon";var Ga=Pe(function(t,n){const{templateAreas:r,gap:o,rowGap:s,columnGap:i,column:l,row:u,autoFlow:p,autoRows:h,templateRows:m,autoColumns:v,templateColumns:b,...y}=t,x={display:"grid",gridTemplateAreas:r,gridGap:o,gridRowGap:s,gridColumnGap:i,gridAutoColumns:v,gridColumn:l,gridRow:u,gridAutoFlow:p,gridAutoRows:h,gridTemplateRows:m,gridTemplateColumns:b};return a.jsx(_e.div,{ref:n,__css:x,...y})});Ga.displayName="Grid";function B3(e,t){return Array.isArray(e)?e.map(n=>n===null?null:t(n)):r1(e)?Object.keys(e).reduce((n,r)=>(n[r]=t(e[r]),n),{}):e!=null?t(e):null}var Za=_e("div",{baseStyle:{flex:1,justifySelf:"stretch",alignSelf:"stretch"}});Za.displayName="Spacer";var H3=e=>a.jsx(_e.div,{className:"chakra-stack__item",...e,__css:{display:"inline-block",flex:"0 0 auto",minWidth:0,...e.__css}});H3.displayName="StackItem";function uz(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{"&":B3(n,o=>r[o])}}var xx=Pe((e,t)=>{const{isInline:n,direction:r,align:o,justify:s,spacing:i="0.5rem",wrap:l,children:u,divider:p,className:h,shouldWrapChildren:m,...v}=e,b=n?"row":r??"column",y=d.useMemo(()=>uz({spacing:i,direction:b}),[i,b]),x=!!p,w=!m&&!x,k=d.useMemo(()=>{const j=Id(u);return w?j:j.map((I,E)=>{const M=typeof I.key<"u"?I.key:E,D=E+1===j.length,A=m?a.jsx(H3,{children:I},M):I;if(!x)return A;const O=d.cloneElement(p,{__css:y}),T=D?null:O;return a.jsxs(d.Fragment,{children:[A,T]},M)})},[p,y,x,w,m,u]),_=et("chakra-stack",h);return a.jsx(_e.div,{ref:t,display:"flex",alignItems:o,justifyContent:s,flexDirection:b,flexWrap:l,gap:x?void 0:i,className:_,...v,children:k})});xx.displayName="Stack";var W3=Pe((e,t)=>a.jsx(xx,{align:"center",...e,direction:"column",ref:t}));W3.displayName="VStack";var Om=Pe((e,t)=>a.jsx(xx,{align:"center",...e,direction:"row",ref:t}));Om.displayName="HStack";function Yw(e){return B3(e,t=>t==="auto"?"auto":`span ${t}/span ${t}`)}var td=Pe(function(t,n){const{area:r,colSpan:o,colStart:s,colEnd:i,rowEnd:l,rowSpan:u,rowStart:p,...h}=t,m=Aj({gridArea:r,gridColumn:Yw(o),gridRow:Yw(u),gridColumnStart:s,gridColumnEnd:i,gridRowStart:p,gridRowEnd:l});return a.jsx(_e.div,{ref:n,__css:m,...h})});td.displayName="GridItem";var da=Pe(function(t,n){const r=Qa("Badge",t),{className:o,...s}=Yt(t);return a.jsx(_e.span,{ref:n,className:et("chakra-badge",t.className),...s,__css:{display:"inline-block",whiteSpace:"nowrap",verticalAlign:"middle",...r}})});da.displayName="Badge";var Vr=Pe(function(t,n){const{borderLeftWidth:r,borderBottomWidth:o,borderTopWidth:s,borderRightWidth:i,borderWidth:l,borderStyle:u,borderColor:p,...h}=Qa("Divider",t),{className:m,orientation:v="horizontal",__css:b,...y}=Yt(t),x={vertical:{borderLeftWidth:r||i||l||"1px",height:"100%"},horizontal:{borderBottomWidth:o||s||l||"1px",width:"100%"}};return a.jsx(_e.hr,{ref:n,"aria-orientation":v,...y,__css:{...h,border:"0",borderColor:p,borderStyle:u,...x[v],...b},className:et("chakra-divider",m)})});Vr.displayName="Divider";function dz(e){const{key:t}=e;return t.length===1||t.length>1&&/[^a-zA-Z0-9]/.test(t)}function fz(e={}){const{timeout:t=300,preventDefault:n=()=>!0}=e,[r,o]=d.useState([]),s=d.useRef(),i=()=>{s.current&&(clearTimeout(s.current),s.current=null)},l=()=>{i(),s.current=setTimeout(()=>{o([]),s.current=null},t)};d.useEffect(()=>i,[]);function u(p){return h=>{if(h.key==="Backspace"){const m=[...r];m.pop(),o(m);return}if(dz(h)){const m=r.concat(h.key);n(h)&&(h.preventDefault(),h.stopPropagation()),o(m),p(m.join("")),l()}}}return u}function pz(e,t,n,r){if(t==null)return r;if(!r)return e.find(i=>n(i).toLowerCase().startsWith(t.toLowerCase()));const o=e.filter(s=>n(s).toLowerCase().startsWith(t.toLowerCase()));if(o.length>0){let s;return o.includes(r)?(s=o.indexOf(r)+1,s===o.length&&(s=0),o[s]):(s=e.indexOf(o[0]),e[s])}return r}function hz(){const e=d.useRef(new Map),t=e.current,n=d.useCallback((o,s,i,l)=>{e.current.set(i,{type:s,el:o,options:l}),o.addEventListener(s,i,l)},[]),r=d.useCallback((o,s,i,l)=>{o.removeEventListener(s,i,l),e.current.delete(i)},[]);return d.useEffect(()=>()=>{t.forEach((o,s)=>{r(o.el,o.type,s,o.options)})},[r,t]),{add:n,remove:r}}function iv(e){const t=e.target,{tagName:n,isContentEditable:r}=t;return n!=="INPUT"&&n!=="TEXTAREA"&&r!==!0}function V3(e={}){const{ref:t,isDisabled:n,isFocusable:r,clickOnEnter:o=!0,clickOnSpace:s=!0,onMouseDown:i,onMouseUp:l,onClick:u,onKeyDown:p,onKeyUp:h,tabIndex:m,onMouseOver:v,onMouseLeave:b,...y}=e,[x,w]=d.useState(!0),[k,_]=d.useState(!1),j=hz(),I=z=>{z&&z.tagName!=="BUTTON"&&w(!1)},E=x?m:m||0,M=n&&!r,D=d.useCallback(z=>{if(n){z.stopPropagation(),z.preventDefault();return}z.currentTarget.focus(),u==null||u(z)},[n,u]),R=d.useCallback(z=>{k&&iv(z)&&(z.preventDefault(),z.stopPropagation(),_(!1),j.remove(document,"keyup",R,!1))},[k,j]),A=d.useCallback(z=>{if(p==null||p(z),n||z.defaultPrevented||z.metaKey||!iv(z.nativeEvent)||x)return;const Y=o&&z.key==="Enter";s&&z.key===" "&&(z.preventDefault(),_(!0)),Y&&(z.preventDefault(),z.currentTarget.click()),j.add(document,"keyup",R,!1)},[n,x,p,o,s,j,R]),O=d.useCallback(z=>{if(h==null||h(z),n||z.defaultPrevented||z.metaKey||!iv(z.nativeEvent)||x)return;s&&z.key===" "&&(z.preventDefault(),_(!1),z.currentTarget.click())},[s,x,n,h]),T=d.useCallback(z=>{z.button===0&&(_(!1),j.remove(document,"mouseup",T,!1))},[j]),K=d.useCallback(z=>{if(z.button!==0)return;if(n){z.stopPropagation(),z.preventDefault();return}x||_(!0),z.currentTarget.focus({preventScroll:!0}),j.add(document,"mouseup",T,!1),i==null||i(z)},[n,x,i,j,T]),F=d.useCallback(z=>{z.button===0&&(x||_(!1),l==null||l(z))},[l,x]),V=d.useCallback(z=>{if(n){z.preventDefault();return}v==null||v(z)},[n,v]),X=d.useCallback(z=>{k&&(z.preventDefault(),_(!1)),b==null||b(z)},[k,b]),W=Ct(t,I);return x?{...y,ref:W,type:"button","aria-disabled":M?void 0:n,disabled:M,onClick:D,onMouseDown:i,onMouseUp:l,onKeyUp:h,onKeyDown:p,onMouseOver:v,onMouseLeave:b}:{...y,ref:W,role:"button","data-active":at(k),"aria-disabled":n?"true":void 0,tabIndex:M?void 0:E,onClick:D,onMouseDown:K,onMouseUp:F,onKeyUp:O,onKeyDown:A,onMouseOver:V,onMouseLeave:X}}function mz(e){const t=e.current;if(!t)return!1;const n=WL(t);return!n||t.contains(n)?!1:!!XL(n)}function U3(e,t){const{shouldFocus:n,visible:r,focusRef:o}=t,s=n&&!r;ca(()=>{if(!s||mz(e))return;const i=(o==null?void 0:o.current)||e.current;let l;if(i)return l=requestAnimationFrame(()=>{i.focus({preventScroll:!0})}),()=>{cancelAnimationFrame(l)}},[s,e,o])}var gz={preventScroll:!0,shouldFocus:!1};function vz(e,t=gz){const{focusRef:n,preventScroll:r,shouldFocus:o,visible:s}=t,i=bz(e)?e.current:e,l=o&&s,u=d.useRef(l),p=d.useRef(s);Zl(()=>{!p.current&&s&&(u.current=l),p.current=s},[s,l]);const h=d.useCallback(()=>{if(!(!s||!i||!u.current)&&(u.current=!1,!i.contains(document.activeElement)))if(n!=null&&n.current)requestAnimationFrame(()=>{var m;(m=n.current)==null||m.focus({preventScroll:r})});else{const m=T3(i);m.length>0&&requestAnimationFrame(()=>{m[0].focus({preventScroll:r})})}},[s,r,i,n]);ca(()=>{h()},[h]),_i(i,"transitionend",h)}function bz(e){return"current"in e}var Pl=(e,t)=>({var:e,varRef:t?`var(${e}, ${t})`:`var(${e})`}),jn={arrowShadowColor:Pl("--popper-arrow-shadow-color"),arrowSize:Pl("--popper-arrow-size","8px"),arrowSizeHalf:Pl("--popper-arrow-size-half"),arrowBg:Pl("--popper-arrow-bg"),transformOrigin:Pl("--popper-transform-origin"),arrowOffset:Pl("--popper-arrow-offset")};function xz(e){if(e.includes("top"))return"1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("bottom"))return"-1px -1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("right"))return"-1px 1px 0px 0 var(--popper-arrow-shadow-color)";if(e.includes("left"))return"1px -1px 0px 0 var(--popper-arrow-shadow-color)"}var yz={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"},Cz=e=>yz[e],Qw={scroll:!0,resize:!0};function wz(e){let t;return typeof e=="object"?t={enabled:!0,options:{...Qw,...e}}:t={enabled:e,options:Qw},t}var Sz={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`}},kz={name:"transformOrigin",enabled:!0,phase:"write",fn:({state:e})=>{Zw(e)},effect:({state:e})=>()=>{Zw(e)}},Zw=e=>{e.elements.popper.style.setProperty(jn.transformOrigin.var,Cz(e.placement))},_z={name:"positionArrow",enabled:!0,phase:"afterWrite",fn:({state:e})=>{jz(e)}},jz=e=>{var t;if(!e.placement)return;const n=Pz(e.placement);if((t=e.elements)!=null&&t.arrow&&n){Object.assign(e.elements.arrow.style,{[n.property]:n.value,width:jn.arrowSize.varRef,height:jn.arrowSize.varRef,zIndex:-1});const r={[jn.arrowSizeHalf.var]:`calc(${jn.arrowSize.varRef} / 2 - 1px)`,[jn.arrowOffset.var]:`calc(${jn.arrowSizeHalf.varRef} * -1)`};for(const o in r)e.elements.arrow.style.setProperty(o,r[o])}},Pz=e=>{if(e.startsWith("top"))return{property:"bottom",value:jn.arrowOffset.varRef};if(e.startsWith("bottom"))return{property:"top",value:jn.arrowOffset.varRef};if(e.startsWith("left"))return{property:"right",value:jn.arrowOffset.varRef};if(e.startsWith("right"))return{property:"left",value:jn.arrowOffset.varRef}},Iz={name:"innerArrow",enabled:!0,phase:"main",requires:["arrow"],fn:({state:e})=>{Jw(e)},effect:({state:e})=>()=>{Jw(e)}},Jw=e=>{if(!e.elements.arrow)return;const t=e.elements.arrow.querySelector("[data-popper-arrow-inner]");if(!t)return;const n=xz(e.placement);n&&t.style.setProperty("--popper-arrow-default-shadow",n),Object.assign(t.style,{transform:"rotate(45deg)",background:jn.arrowBg.varRef,top:0,left:0,width:"100%",height:"100%",position:"absolute",zIndex:"inherit",boxShadow:"var(--popper-arrow-shadow, var(--popper-arrow-default-shadow))"})},Ez={"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"}},Mz={"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 Oz(e,t="ltr"){var n,r;const o=((n=Ez[e])==null?void 0:n[t])||e;return t==="ltr"?o:(r=Mz[e])!=null?r:o}var _r="top",go="bottom",vo="right",jr="left",yx="auto",Dd=[_r,go,vo,jr],xc="start",nd="end",Dz="clippingParents",G3="viewport",Cu="popper",Rz="reference",eS=Dd.reduce(function(e,t){return e.concat([t+"-"+xc,t+"-"+nd])},[]),K3=[].concat(Dd,[yx]).reduce(function(e,t){return e.concat([t,t+"-"+xc,t+"-"+nd])},[]),Az="beforeRead",Nz="read",Tz="afterRead",$z="beforeMain",Lz="main",zz="afterMain",Fz="beforeWrite",Bz="write",Hz="afterWrite",Wz=[Az,Nz,Tz,$z,Lz,zz,Fz,Bz,Hz];function ms(e){return e?(e.nodeName||"").toLowerCase():null}function Ur(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Fi(e){var t=Ur(e).Element;return e instanceof t||e instanceof Element}function ho(e){var t=Ur(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Cx(e){if(typeof ShadowRoot>"u")return!1;var t=Ur(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Vz(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},s=t.elements[n];!ho(s)||!ms(s)||(Object.assign(s.style,r),Object.keys(o).forEach(function(i){var l=o[i];l===!1?s.removeAttribute(i):s.setAttribute(i,l===!0?"":l)}))})}function Uz(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 o=t.elements[r],s=t.attributes[r]||{},i=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),l=i.reduce(function(u,p){return u[p]="",u},{});!ho(o)||!ms(o)||(Object.assign(o.style,l),Object.keys(s).forEach(function(u){o.removeAttribute(u)}))})}}const Gz={name:"applyStyles",enabled:!0,phase:"write",fn:Vz,effect:Uz,requires:["computeStyles"]};function hs(e){return e.split("-")[0]}var ji=Math.max,sh=Math.min,yc=Math.round;function E1(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function q3(){return!/^((?!chrome|android).)*safari/i.test(E1())}function Cc(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var r=e.getBoundingClientRect(),o=1,s=1;t&&ho(e)&&(o=e.offsetWidth>0&&yc(r.width)/e.offsetWidth||1,s=e.offsetHeight>0&&yc(r.height)/e.offsetHeight||1);var i=Fi(e)?Ur(e):window,l=i.visualViewport,u=!q3()&&n,p=(r.left+(u&&l?l.offsetLeft:0))/o,h=(r.top+(u&&l?l.offsetTop:0))/s,m=r.width/o,v=r.height/s;return{width:m,height:v,top:h,right:p+m,bottom:h+v,left:p,x:p,y:h}}function wx(e){var t=Cc(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 X3(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Cx(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function ta(e){return Ur(e).getComputedStyle(e)}function Kz(e){return["table","td","th"].indexOf(ms(e))>=0}function Ja(e){return((Fi(e)?e.ownerDocument:e.document)||window.document).documentElement}function Dm(e){return ms(e)==="html"?e:e.assignedSlot||e.parentNode||(Cx(e)?e.host:null)||Ja(e)}function tS(e){return!ho(e)||ta(e).position==="fixed"?null:e.offsetParent}function qz(e){var t=/firefox/i.test(E1()),n=/Trident/i.test(E1());if(n&&ho(e)){var r=ta(e);if(r.position==="fixed")return null}var o=Dm(e);for(Cx(o)&&(o=o.host);ho(o)&&["html","body"].indexOf(ms(o))<0;){var s=ta(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Rd(e){for(var t=Ur(e),n=tS(e);n&&Kz(n)&&ta(n).position==="static";)n=tS(n);return n&&(ms(n)==="html"||ms(n)==="body"&&ta(n).position==="static")?t:n||qz(e)||t}function Sx(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Hu(e,t,n){return ji(e,sh(t,n))}function Xz(e,t,n){var r=Hu(e,t,n);return r>n?n:r}function Y3(){return{top:0,right:0,bottom:0,left:0}}function Q3(e){return Object.assign({},Y3(),e)}function Z3(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var Yz=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,Q3(typeof t!="number"?t:Z3(t,Dd))};function Qz(e){var t,n=e.state,r=e.name,o=e.options,s=n.elements.arrow,i=n.modifiersData.popperOffsets,l=hs(n.placement),u=Sx(l),p=[jr,vo].indexOf(l)>=0,h=p?"height":"width";if(!(!s||!i)){var m=Yz(o.padding,n),v=wx(s),b=u==="y"?_r:jr,y=u==="y"?go:vo,x=n.rects.reference[h]+n.rects.reference[u]-i[u]-n.rects.popper[h],w=i[u]-n.rects.reference[u],k=Rd(s),_=k?u==="y"?k.clientHeight||0:k.clientWidth||0:0,j=x/2-w/2,I=m[b],E=_-v[h]-m[y],M=_/2-v[h]/2+j,D=Hu(I,M,E),R=u;n.modifiersData[r]=(t={},t[R]=D,t.centerOffset=D-M,t)}}function Zz(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||X3(t.elements.popper,o)&&(t.elements.arrow=o))}const Jz={name:"arrow",enabled:!0,phase:"main",fn:Qz,effect:Zz,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function wc(e){return e.split("-")[1]}var eF={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tF(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:yc(n*o)/o||0,y:yc(r*o)/o||0}}function nS(e){var t,n=e.popper,r=e.popperRect,o=e.placement,s=e.variation,i=e.offsets,l=e.position,u=e.gpuAcceleration,p=e.adaptive,h=e.roundOffsets,m=e.isFixed,v=i.x,b=v===void 0?0:v,y=i.y,x=y===void 0?0:y,w=typeof h=="function"?h({x:b,y:x}):{x:b,y:x};b=w.x,x=w.y;var k=i.hasOwnProperty("x"),_=i.hasOwnProperty("y"),j=jr,I=_r,E=window;if(p){var M=Rd(n),D="clientHeight",R="clientWidth";if(M===Ur(n)&&(M=Ja(n),ta(M).position!=="static"&&l==="absolute"&&(D="scrollHeight",R="scrollWidth")),M=M,o===_r||(o===jr||o===vo)&&s===nd){I=go;var A=m&&M===E&&E.visualViewport?E.visualViewport.height:M[D];x-=A-r.height,x*=u?1:-1}if(o===jr||(o===_r||o===go)&&s===nd){j=vo;var O=m&&M===E&&E.visualViewport?E.visualViewport.width:M[R];b-=O-r.width,b*=u?1:-1}}var T=Object.assign({position:l},p&&eF),K=h===!0?tF({x:b,y:x},Ur(n)):{x:b,y:x};if(b=K.x,x=K.y,u){var F;return Object.assign({},T,(F={},F[I]=_?"0":"",F[j]=k?"0":"",F.transform=(E.devicePixelRatio||1)<=1?"translate("+b+"px, "+x+"px)":"translate3d("+b+"px, "+x+"px, 0)",F))}return Object.assign({},T,(t={},t[I]=_?x+"px":"",t[j]=k?b+"px":"",t.transform="",t))}function nF(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,s=n.adaptive,i=s===void 0?!0:s,l=n.roundOffsets,u=l===void 0?!0:l,p={placement:hs(t.placement),variation:wc(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,nS(Object.assign({},p,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:u})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,nS(Object.assign({},p,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:u})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const rF={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:nF,data:{}};var Qf={passive:!0};function oF(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,s=o===void 0?!0:o,i=r.resize,l=i===void 0?!0:i,u=Ur(t.elements.popper),p=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&p.forEach(function(h){h.addEventListener("scroll",n.update,Qf)}),l&&u.addEventListener("resize",n.update,Qf),function(){s&&p.forEach(function(h){h.removeEventListener("scroll",n.update,Qf)}),l&&u.removeEventListener("resize",n.update,Qf)}}const sF={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:oF,data:{}};var aF={left:"right",right:"left",bottom:"top",top:"bottom"};function Rp(e){return e.replace(/left|right|bottom|top/g,function(t){return aF[t]})}var iF={start:"end",end:"start"};function rS(e){return e.replace(/start|end/g,function(t){return iF[t]})}function kx(e){var t=Ur(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function _x(e){return Cc(Ja(e)).left+kx(e).scrollLeft}function lF(e,t){var n=Ur(e),r=Ja(e),o=n.visualViewport,s=r.clientWidth,i=r.clientHeight,l=0,u=0;if(o){s=o.width,i=o.height;var p=q3();(p||!p&&t==="fixed")&&(l=o.offsetLeft,u=o.offsetTop)}return{width:s,height:i,x:l+_x(e),y:u}}function cF(e){var t,n=Ja(e),r=kx(e),o=(t=e.ownerDocument)==null?void 0:t.body,s=ji(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=ji(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),l=-r.scrollLeft+_x(e),u=-r.scrollTop;return ta(o||n).direction==="rtl"&&(l+=ji(n.clientWidth,o?o.clientWidth:0)-s),{width:s,height:i,x:l,y:u}}function jx(e){var t=ta(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function J3(e){return["html","body","#document"].indexOf(ms(e))>=0?e.ownerDocument.body:ho(e)&&jx(e)?e:J3(Dm(e))}function Wu(e,t){var n;t===void 0&&(t=[]);var r=J3(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Ur(r),i=o?[s].concat(s.visualViewport||[],jx(r)?r:[]):r,l=t.concat(i);return o?l:l.concat(Wu(Dm(i)))}function M1(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function uF(e,t){var n=Cc(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 oS(e,t,n){return t===G3?M1(lF(e,n)):Fi(t)?uF(t,n):M1(cF(Ja(e)))}function dF(e){var t=Wu(Dm(e)),n=["absolute","fixed"].indexOf(ta(e).position)>=0,r=n&&ho(e)?Rd(e):e;return Fi(r)?t.filter(function(o){return Fi(o)&&X3(o,r)&&ms(o)!=="body"}):[]}function fF(e,t,n,r){var o=t==="clippingParents"?dF(e):[].concat(t),s=[].concat(o,[n]),i=s[0],l=s.reduce(function(u,p){var h=oS(e,p,r);return u.top=ji(h.top,u.top),u.right=sh(h.right,u.right),u.bottom=sh(h.bottom,u.bottom),u.left=ji(h.left,u.left),u},oS(e,i,r));return l.width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l}function eP(e){var t=e.reference,n=e.element,r=e.placement,o=r?hs(r):null,s=r?wc(r):null,i=t.x+t.width/2-n.width/2,l=t.y+t.height/2-n.height/2,u;switch(o){case _r:u={x:i,y:t.y-n.height};break;case go:u={x:i,y:t.y+t.height};break;case vo:u={x:t.x+t.width,y:l};break;case jr:u={x:t.x-n.width,y:l};break;default:u={x:t.x,y:t.y}}var p=o?Sx(o):null;if(p!=null){var h=p==="y"?"height":"width";switch(s){case xc:u[p]=u[p]-(t[h]/2-n[h]/2);break;case nd:u[p]=u[p]+(t[h]/2-n[h]/2);break}}return u}function rd(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,s=n.strategy,i=s===void 0?e.strategy:s,l=n.boundary,u=l===void 0?Dz:l,p=n.rootBoundary,h=p===void 0?G3:p,m=n.elementContext,v=m===void 0?Cu:m,b=n.altBoundary,y=b===void 0?!1:b,x=n.padding,w=x===void 0?0:x,k=Q3(typeof w!="number"?w:Z3(w,Dd)),_=v===Cu?Rz:Cu,j=e.rects.popper,I=e.elements[y?_:v],E=fF(Fi(I)?I:I.contextElement||Ja(e.elements.popper),u,h,i),M=Cc(e.elements.reference),D=eP({reference:M,element:j,strategy:"absolute",placement:o}),R=M1(Object.assign({},j,D)),A=v===Cu?R:M,O={top:E.top-A.top+k.top,bottom:A.bottom-E.bottom+k.bottom,left:E.left-A.left+k.left,right:A.right-E.right+k.right},T=e.modifiersData.offset;if(v===Cu&&T){var K=T[o];Object.keys(O).forEach(function(F){var V=[vo,go].indexOf(F)>=0?1:-1,X=[_r,go].indexOf(F)>=0?"y":"x";O[F]+=K[X]*V})}return O}function pF(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,s=n.rootBoundary,i=n.padding,l=n.flipVariations,u=n.allowedAutoPlacements,p=u===void 0?K3:u,h=wc(r),m=h?l?eS:eS.filter(function(y){return wc(y)===h}):Dd,v=m.filter(function(y){return p.indexOf(y)>=0});v.length===0&&(v=m);var b=v.reduce(function(y,x){return y[x]=rd(e,{placement:x,boundary:o,rootBoundary:s,padding:i})[hs(x)],y},{});return Object.keys(b).sort(function(y,x){return b[y]-b[x]})}function hF(e){if(hs(e)===yx)return[];var t=Rp(e);return[rS(e),t,rS(t)]}function mF(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!0:i,u=n.fallbackPlacements,p=n.padding,h=n.boundary,m=n.rootBoundary,v=n.altBoundary,b=n.flipVariations,y=b===void 0?!0:b,x=n.allowedAutoPlacements,w=t.options.placement,k=hs(w),_=k===w,j=u||(_||!y?[Rp(w)]:hF(w)),I=[w].concat(j).reduce(function(se,U){return se.concat(hs(U)===yx?pF(t,{placement:U,boundary:h,rootBoundary:m,padding:p,flipVariations:y,allowedAutoPlacements:x}):U)},[]),E=t.rects.reference,M=t.rects.popper,D=new Map,R=!0,A=I[0],O=0;O=0,X=V?"width":"height",W=rd(t,{placement:T,boundary:h,rootBoundary:m,altBoundary:v,padding:p}),z=V?F?vo:jr:F?go:_r;E[X]>M[X]&&(z=Rp(z));var Y=Rp(z),B=[];if(s&&B.push(W[K]<=0),l&&B.push(W[z]<=0,W[Y]<=0),B.every(function(se){return se})){A=T,R=!1;break}D.set(T,B)}if(R)for(var q=y?3:1,re=function(U){var G=I.find(function(te){var ae=D.get(te);if(ae)return ae.slice(0,U).every(function(oe){return oe})});if(G)return A=G,"break"},Q=q;Q>0;Q--){var le=re(Q);if(le==="break")break}t.placement!==A&&(t.modifiersData[r]._skip=!0,t.placement=A,t.reset=!0)}}const gF={name:"flip",enabled:!0,phase:"main",fn:mF,requiresIfExists:["offset"],data:{_skip:!1}};function sS(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 aS(e){return[_r,vo,go,jr].some(function(t){return e[t]>=0})}function vF(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,s=t.modifiersData.preventOverflow,i=rd(t,{elementContext:"reference"}),l=rd(t,{altBoundary:!0}),u=sS(i,r),p=sS(l,o,s),h=aS(u),m=aS(p);t.modifiersData[n]={referenceClippingOffsets:u,popperEscapeOffsets:p,isReferenceHidden:h,hasPopperEscaped:m},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":m})}const bF={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:vF};function xF(e,t,n){var r=hs(e),o=[jr,_r].indexOf(r)>=0?-1:1,s=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,i=s[0],l=s[1];return i=i||0,l=(l||0)*o,[jr,vo].indexOf(r)>=0?{x:l,y:i}:{x:i,y:l}}function yF(e){var t=e.state,n=e.options,r=e.name,o=n.offset,s=o===void 0?[0,0]:o,i=K3.reduce(function(h,m){return h[m]=xF(m,t.rects,s),h},{}),l=i[t.placement],u=l.x,p=l.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=p),t.modifiersData[r]=i}const CF={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:yF};function wF(e){var t=e.state,n=e.name;t.modifiersData[n]=eP({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const SF={name:"popperOffsets",enabled:!0,phase:"read",fn:wF,data:{}};function kF(e){return e==="x"?"y":"x"}function _F(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=o===void 0?!0:o,i=n.altAxis,l=i===void 0?!1:i,u=n.boundary,p=n.rootBoundary,h=n.altBoundary,m=n.padding,v=n.tether,b=v===void 0?!0:v,y=n.tetherOffset,x=y===void 0?0:y,w=rd(t,{boundary:u,rootBoundary:p,padding:m,altBoundary:h}),k=hs(t.placement),_=wc(t.placement),j=!_,I=Sx(k),E=kF(I),M=t.modifiersData.popperOffsets,D=t.rects.reference,R=t.rects.popper,A=typeof x=="function"?x(Object.assign({},t.rects,{placement:t.placement})):x,O=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,K={x:0,y:0};if(M){if(s){var F,V=I==="y"?_r:jr,X=I==="y"?go:vo,W=I==="y"?"height":"width",z=M[I],Y=z+w[V],B=z-w[X],q=b?-R[W]/2:0,re=_===xc?D[W]:R[W],Q=_===xc?-R[W]:-D[W],le=t.elements.arrow,se=b&&le?wx(le):{width:0,height:0},U=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Y3(),G=U[V],te=U[X],ae=Hu(0,D[W],se[W]),oe=j?D[W]/2-q-ae-G-O.mainAxis:re-ae-G-O.mainAxis,pe=j?-D[W]/2+q+ae+te+O.mainAxis:Q+ae+te+O.mainAxis,ue=t.elements.arrow&&Rd(t.elements.arrow),me=ue?I==="y"?ue.clientTop||0:ue.clientLeft||0:0,Ce=(F=T==null?void 0:T[I])!=null?F:0,ge=z+oe-Ce-me,fe=z+pe-Ce,De=Hu(b?sh(Y,ge):Y,z,b?ji(B,fe):B);M[I]=De,K[I]=De-z}if(l){var je,Be=I==="x"?_r:jr,rt=I==="x"?go:vo,Ue=M[E],wt=E==="y"?"height":"width",Ye=Ue+w[Be],tt=Ue-w[rt],be=[_r,jr].indexOf(k)!==-1,Re=(je=T==null?void 0:T[E])!=null?je:0,st=be?Ye:Ue-D[wt]-R[wt]-Re+O.altAxis,mt=be?Ue+D[wt]+R[wt]-Re-O.altAxis:tt,ve=b&&be?Xz(st,Ue,mt):Hu(b?st:Ye,Ue,b?mt:tt);M[E]=ve,K[E]=ve-Ue}t.modifiersData[r]=K}}const jF={name:"preventOverflow",enabled:!0,phase:"main",fn:_F,requiresIfExists:["offset"]};function PF(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function IF(e){return e===Ur(e)||!ho(e)?kx(e):PF(e)}function EF(e){var t=e.getBoundingClientRect(),n=yc(t.width)/e.offsetWidth||1,r=yc(t.height)/e.offsetHeight||1;return n!==1||r!==1}function MF(e,t,n){n===void 0&&(n=!1);var r=ho(t),o=ho(t)&&EF(t),s=Ja(t),i=Cc(e,o,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&((ms(t)!=="body"||jx(s))&&(l=IF(t)),ho(t)?(u=Cc(t,!0),u.x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=_x(s))),{x:i.left+l.scrollLeft-u.x,y:i.top+l.scrollTop-u.y,width:i.width,height:i.height}}function OF(e){var t=new Map,n=new Set,r=[];e.forEach(function(s){t.set(s.name,s)});function o(s){n.add(s.name);var i=[].concat(s.requires||[],s.requiresIfExists||[]);i.forEach(function(l){if(!n.has(l)){var u=t.get(l);u&&o(u)}}),r.push(s)}return e.forEach(function(s){n.has(s.name)||o(s)}),r}function DF(e){var t=OF(e);return Wz.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function RF(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function AF(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var iS={placement:"bottom",modifiers:[],strategy:"absolute"};function lS(){for(var e=arguments.length,t=new Array(e),n=0;n{}),j=d.useCallback(()=>{var O;!t||!y.current||!x.current||((O=_.current)==null||O.call(_),w.current=$F(y.current,x.current,{placement:k,modifiers:[Iz,_z,kz,{...Sz,enabled:!!v},{name:"eventListeners",...wz(i)},{name:"arrow",options:{padding:s}},{name:"offset",options:{offset:l??[0,u]}},{name:"flip",enabled:!!p,options:{padding:8}},{name:"preventOverflow",enabled:!!m,options:{boundary:h}},...n??[]],strategy:o}),w.current.forceUpdate(),_.current=w.current.destroy)},[k,t,n,v,i,s,l,u,p,m,h,o]);d.useEffect(()=>()=>{var O;!y.current&&!x.current&&((O=w.current)==null||O.destroy(),w.current=null)},[]);const I=d.useCallback(O=>{y.current=O,j()},[j]),E=d.useCallback((O={},T=null)=>({...O,ref:Ct(I,T)}),[I]),M=d.useCallback(O=>{x.current=O,j()},[j]),D=d.useCallback((O={},T=null)=>({...O,ref:Ct(M,T),style:{...O.style,position:o,minWidth:v?void 0:"max-content",inset:"0 auto auto 0"}}),[o,M,v]),R=d.useCallback((O={},T=null)=>{const{size:K,shadowColor:F,bg:V,style:X,...W}=O;return{...W,ref:T,"data-popper-arrow":"",style:LF(O)}},[]),A=d.useCallback((O={},T=null)=>({...O,ref:T,"data-popper-arrow-inner":""}),[]);return{update(){var O;(O=w.current)==null||O.update()},forceUpdate(){var O;(O=w.current)==null||O.forceUpdate()},transformOrigin:jn.transformOrigin.varRef,referenceRef:I,popperRef:M,getPopperProps:D,getArrowProps:R,getArrowInnerProps:A,getReferenceProps:E}}function LF(e){const{size:t,shadowColor:n,bg:r,style:o}=e,s={...o,position:"absolute"};return t&&(s["--popper-arrow-size"]=t),n&&(s["--popper-arrow-shadow-color"]=n),r&&(s["--popper-arrow-bg"]=r),s}function Ix(e={}){const{onClose:t,onOpen:n,isOpen:r,id:o}=e,s=nn(n),i=nn(t),[l,u]=d.useState(e.defaultIsOpen||!1),p=r!==void 0?r:l,h=r!==void 0,m=d.useId(),v=o??`disclosure-${m}`,b=d.useCallback(()=>{h||u(!1),i==null||i()},[h,i]),y=d.useCallback(()=>{h||u(!0),s==null||s()},[h,s]),x=d.useCallback(()=>{p?b():y()},[p,y,b]);function w(_={}){return{..._,"aria-expanded":p,"aria-controls":v,onClick(j){var I;(I=_.onClick)==null||I.call(_,j),x()}}}function k(_={}){return{..._,hidden:!p,id:v}}return{isOpen:p,onOpen:y,onClose:b,onToggle:x,isControlled:h,getButtonProps:w,getDisclosureProps:k}}function zF(e){const{ref:t,handler:n,enabled:r=!0}=e,o=nn(n),i=d.useRef({isPointerDown:!1,ignoreEmulatedMouseEvents:!1}).current;d.useEffect(()=>{if(!r)return;const l=m=>{lv(m,t)&&(i.isPointerDown=!0)},u=m=>{if(i.ignoreEmulatedMouseEvents){i.ignoreEmulatedMouseEvents=!1;return}i.isPointerDown&&n&&lv(m,t)&&(i.isPointerDown=!1,o(m))},p=m=>{i.ignoreEmulatedMouseEvents=!0,n&&i.isPointerDown&&lv(m,t)&&(i.isPointerDown=!1,o(m))},h=tP(t.current);return h.addEventListener("mousedown",l,!0),h.addEventListener("mouseup",u,!0),h.addEventListener("touchstart",l,!0),h.addEventListener("touchend",p,!0),()=>{h.removeEventListener("mousedown",l,!0),h.removeEventListener("mouseup",u,!0),h.removeEventListener("touchstart",l,!0),h.removeEventListener("touchend",p,!0)}},[n,t,o,i,r])}function lv(e,t){var n;const r=e.target;return r&&!tP(r).contains(r)?!1:!((n=t.current)!=null&&n.contains(r))}function tP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function nP(e){const{isOpen:t,ref:n}=e,[r,o]=d.useState(t),[s,i]=d.useState(!1);return d.useEffect(()=>{s||(o(t),i(!0))},[t,s,r]),_i(()=>n.current,"animationend",()=>{o(t)}),{present:!(t?!1:!r),onComplete(){var u;const p=HL(n.current),h=new p.CustomEvent("animationend",{bubbles:!0});(u=n.current)==null||u.dispatchEvent(h)}}}function Ex(e){const{wasSelected:t,enabled:n,isSelected:r,mode:o="unmount"}=e;return!!(!n||r||o==="keepMounted"&&t)}var[FF,BF,HF,WF]=Zb(),[VF,Ad]=$t({strict:!1,name:"MenuContext"});function UF(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}function rP(e){var t;return(t=e==null?void 0:e.ownerDocument)!=null?t:document}function cS(e){return rP(e).activeElement===e}function GF(e={}){const{id:t,closeOnSelect:n=!0,closeOnBlur:r=!0,initialFocusRef:o,autoSelect:s=!0,isLazy:i,isOpen:l,defaultIsOpen:u,onClose:p,onOpen:h,placement:m="bottom-start",lazyBehavior:v="unmount",direction:b,computePositionOnMount:y=!1,...x}=e,w=d.useRef(null),k=d.useRef(null),_=HF(),j=d.useCallback(()=>{requestAnimationFrame(()=>{var le;(le=w.current)==null||le.focus({preventScroll:!1})})},[]),I=d.useCallback(()=>{const le=setTimeout(()=>{var se;if(o)(se=o.current)==null||se.focus();else{const U=_.firstEnabled();U&&F(U.index)}});Y.current.add(le)},[_,o]),E=d.useCallback(()=>{const le=setTimeout(()=>{const se=_.lastEnabled();se&&F(se.index)});Y.current.add(le)},[_]),M=d.useCallback(()=>{h==null||h(),s?I():j()},[s,I,j,h]),{isOpen:D,onOpen:R,onClose:A,onToggle:O}=Ix({isOpen:l,defaultIsOpen:u,onClose:p,onOpen:M});zF({enabled:D&&r,ref:w,handler:le=>{var se;(se=k.current)!=null&&se.contains(le.target)||A()}});const T=Px({...x,enabled:D||y,placement:m,direction:b}),[K,F]=d.useState(-1);ca(()=>{D||F(-1)},[D]),U3(w,{focusRef:k,visible:D,shouldFocus:!0});const V=nP({isOpen:D,ref:w}),[X,W]=UF(t,"menu-button","menu-list"),z=d.useCallback(()=>{R(),j()},[R,j]),Y=d.useRef(new Set([]));eB(()=>{Y.current.forEach(le=>clearTimeout(le)),Y.current.clear()});const B=d.useCallback(()=>{R(),I()},[I,R]),q=d.useCallback(()=>{R(),E()},[R,E]),re=d.useCallback(()=>{var le,se;const U=rP(w.current),G=(le=w.current)==null?void 0:le.contains(U.activeElement);if(!(D&&!G))return;const ae=(se=_.item(K))==null?void 0:se.node;ae==null||ae.focus()},[D,K,_]),Q=d.useRef(null);return{openAndFocusMenu:z,openAndFocusFirstItem:B,openAndFocusLastItem:q,onTransitionEnd:re,unstable__animationState:V,descendants:_,popper:T,buttonId:X,menuId:W,forceUpdate:T.forceUpdate,orientation:"vertical",isOpen:D,onToggle:O,onOpen:R,onClose:A,menuRef:w,buttonRef:k,focusedIndex:K,closeOnSelect:n,closeOnBlur:r,autoSelect:s,setFocusedIndex:F,isLazy:i,lazyBehavior:v,initialFocusRef:o,rafId:Q}}function KF(e={},t=null){const n=Ad(),{onToggle:r,popper:o,openAndFocusFirstItem:s,openAndFocusLastItem:i}=n,l=d.useCallback(u=>{const p=u.key,m={Enter:s,ArrowDown:s,ArrowUp:i}[p];m&&(u.preventDefault(),u.stopPropagation(),m(u))},[s,i]);return{...e,ref:Ct(n.buttonRef,t,o.referenceRef),id:n.buttonId,"data-active":at(n.isOpen),"aria-expanded":n.isOpen,"aria-haspopup":"menu","aria-controls":n.menuId,onClick:Fe(e.onClick,r),onKeyDown:Fe(e.onKeyDown,l)}}function O1(e){var t;return ZF(e)&&!!((t=e==null?void 0:e.getAttribute("role"))!=null&&t.startsWith("menuitem"))}function qF(e={},t=null){const n=Ad();if(!n)throw new Error("useMenuContext: context is undefined. Seems you forgot to wrap component within ");const{focusedIndex:r,setFocusedIndex:o,menuRef:s,isOpen:i,onClose:l,menuId:u,isLazy:p,lazyBehavior:h,unstable__animationState:m}=n,v=BF(),b=fz({preventDefault:k=>k.key!==" "&&O1(k.target)}),y=d.useCallback(k=>{if(!k.currentTarget.contains(k.target))return;const _=k.key,I={Tab:M=>M.preventDefault(),Escape:l,ArrowDown:()=>{const M=v.nextEnabled(r);M&&o(M.index)},ArrowUp:()=>{const M=v.prevEnabled(r);M&&o(M.index)}}[_];if(I){k.preventDefault(),I(k);return}const E=b(M=>{const D=pz(v.values(),M,R=>{var A,O;return(O=(A=R==null?void 0:R.node)==null?void 0:A.textContent)!=null?O:""},v.item(r));if(D){const R=v.indexOf(D.node);o(R)}});O1(k.target)&&E(k)},[v,r,b,l,o]),x=d.useRef(!1);i&&(x.current=!0);const w=Ex({wasSelected:x.current,enabled:p,mode:h,isSelected:m.present});return{...e,ref:Ct(s,t),children:w?e.children:null,tabIndex:-1,role:"menu",id:u,style:{...e.style,transformOrigin:"var(--popper-transform-origin)"},"aria-orientation":"vertical",onKeyDown:Fe(e.onKeyDown,y)}}function XF(e={}){const{popper:t,isOpen:n}=Ad();return t.getPopperProps({...e,style:{visibility:n?"visible":"hidden",...e.style}})}function oP(e={},t=null){const{onMouseEnter:n,onMouseMove:r,onMouseLeave:o,onClick:s,onFocus:i,isDisabled:l,isFocusable:u,closeOnSelect:p,type:h,...m}=e,v=Ad(),{setFocusedIndex:b,focusedIndex:y,closeOnSelect:x,onClose:w,menuRef:k,isOpen:_,menuId:j,rafId:I}=v,E=d.useRef(null),M=`${j}-menuitem-${d.useId()}`,{index:D,register:R}=WF({disabled:l&&!u}),A=d.useCallback(z=>{n==null||n(z),!l&&b(D)},[b,D,l,n]),O=d.useCallback(z=>{r==null||r(z),E.current&&!cS(E.current)&&A(z)},[A,r]),T=d.useCallback(z=>{o==null||o(z),!l&&b(-1)},[b,l,o]),K=d.useCallback(z=>{s==null||s(z),O1(z.currentTarget)&&(p??x)&&w()},[w,s,x,p]),F=d.useCallback(z=>{i==null||i(z),b(D)},[b,i,D]),V=D===y,X=l&&!u;ca(()=>{_&&(V&&!X&&E.current?(I.current&&cancelAnimationFrame(I.current),I.current=requestAnimationFrame(()=>{var z;(z=E.current)==null||z.focus(),I.current=null})):k.current&&!cS(k.current)&&k.current.focus({preventScroll:!0}))},[V,X,k,_]);const W=V3({onClick:K,onFocus:F,onMouseEnter:A,onMouseMove:O,onMouseLeave:T,ref:Ct(R,E,t),isDisabled:l,isFocusable:u});return{...m,...W,type:h??W.type,id:M,role:"menuitem",tabIndex:V?0:-1}}function YF(e={},t=null){const{type:n="radio",isChecked:r,...o}=e;return{...oP(o,t),role:`menuitem${n}`,"aria-checked":r}}function QF(e={}){const{children:t,type:n="radio",value:r,defaultValue:o,onChange:s,...i}=e,u=n==="radio"?"":[],[p,h]=Ac({defaultValue:o??u,value:r,onChange:s}),m=d.useCallback(y=>{if(n==="radio"&&typeof p=="string"&&h(y),n==="checkbox"&&Array.isArray(p)){const x=p.includes(y)?p.filter(w=>w!==y):p.concat(y);h(x)}},[p,h,n]),b=Id(t).map(y=>{if(y.type.id!=="MenuItemOption")return y;const x=k=>{var _,j;m(y.props.value),(j=(_=y.props).onClick)==null||j.call(_,k)},w=n==="radio"?y.props.value===p:p.includes(y.props.value);return d.cloneElement(y,{type:n,onClick:x,isChecked:w})});return{...i,children:b}}function ZF(e){var t;if(!JF(e))return!1;const n=(t=e.ownerDocument.defaultView)!=null?t:window;return e instanceof n.HTMLElement}function JF(e){return e!=null&&typeof e=="object"&&"nodeType"in e&&e.nodeType===Node.ELEMENT_NODE}function eB(e,t=[]){return d.useEffect(()=>()=>e(),t)}var[tB,$c]=$t({name:"MenuStylesContext",errorMessage:`useMenuStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Nd=e=>{const{children:t}=e,n=Wn("Menu",e),r=Yt(e),{direction:o}=yd(),{descendants:s,...i}=GF({...r,direction:o}),l=d.useMemo(()=>i,[i]),{isOpen:u,onClose:p,forceUpdate:h}=l;return a.jsx(FF,{value:s,children:a.jsx(VF,{value:l,children:a.jsx(tB,{value:n,children:Nb(t,{isOpen:u,onClose:p,forceUpdate:h})})})})};Nd.displayName="Menu";var sP=Pe((e,t)=>{const n=$c();return a.jsx(_e.span,{ref:t,...e,__css:n.command,className:"chakra-menu__command"})});sP.displayName="MenuCommand";var aP=Pe((e,t)=>{const{type:n,...r}=e,o=$c(),s=r.as||n?n??void 0:"button",i=d.useMemo(()=>({textDecoration:"none",color:"inherit",userSelect:"none",display:"flex",width:"100%",alignItems:"center",textAlign:"start",flex:"0 0 auto",outline:0,...o.item}),[o.item]);return a.jsx(_e.button,{ref:t,type:s,...r,__css:i})}),Mx=e=>{const{className:t,children:n,...r}=e,o=$c(),s=d.Children.only(n),i=d.isValidElement(s)?d.cloneElement(s,{focusable:"false","aria-hidden":!0,className:et("chakra-menu__icon",s.props.className)}):null,l=et("chakra-menu__icon-wrapper",t);return a.jsx(_e.span,{className:l,...r,__css:o.icon,children:i})};Mx.displayName="MenuIcon";var Wt=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",command:o,commandSpacing:s="0.75rem",children:i,...l}=e,u=oP(l,t),h=n||o?a.jsx("span",{style:{pointerEvents:"none",flex:1},children:i}):i;return a.jsxs(aP,{...u,className:et("chakra-menu__menuitem",u.className),children:[n&&a.jsx(Mx,{fontSize:"0.8em",marginEnd:r,children:n}),h,o&&a.jsx(sP,{marginStart:s,children:o})]})});Wt.displayName="MenuItem";var nB={enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.2,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.1,easings:"easeOut"}}},rB=_e(vn.div),Ka=Pe(function(t,n){var r,o;const{rootProps:s,motionProps:i,...l}=t,{isOpen:u,onTransitionEnd:p,unstable__animationState:h}=Ad(),m=qF(l,n),v=XF(s),b=$c();return a.jsx(_e.div,{...v,__css:{zIndex:(o=t.zIndex)!=null?o:(r=b.list)==null?void 0:r.zIndex},children:a.jsx(rB,{variants:nB,initial:!1,animate:u?"enter":"exit",__css:{outline:0,...b.list},...i,className:et("chakra-menu__menu-list",m.className),...m,onUpdate:p,onAnimationComplete:fm(h.onComplete,m.onAnimationComplete)})})});Ka.displayName="MenuList";var Sc=Pe((e,t)=>{const{title:n,children:r,className:o,...s}=e,i=et("chakra-menu__group__title",o),l=$c();return a.jsxs("div",{ref:t,className:"chakra-menu__group",role:"group",children:[n&&a.jsx(_e.p,{className:i,...s,__css:l.groupTitle,children:n}),r]})});Sc.displayName="MenuGroup";var iP=e=>{const{className:t,title:n,...r}=e,o=QF(r);return a.jsx(Sc,{title:n,className:et("chakra-menu__option-group",t),...o})};iP.displayName="MenuOptionGroup";var oB=Pe((e,t)=>{const n=$c();return a.jsx(_e.button,{ref:t,...e,__css:{display:"inline-flex",appearance:"none",alignItems:"center",outline:0,...n.button}})}),Td=Pe((e,t)=>{const{children:n,as:r,...o}=e,s=KF(o,t),i=r||oB;return a.jsx(i,{...s,className:et("chakra-menu__menu-button",e.className),children:a.jsx(_e.span,{__css:{pointerEvents:"none",flex:"1 1 auto",minW:0},children:e.children})})});Td.displayName="MenuButton";var sB=e=>a.jsx("svg",{viewBox:"0 0 14 14",width:"1em",height:"1em",...e,children:a.jsx("polygon",{fill:"currentColor",points:"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"})}),ah=Pe((e,t)=>{const{icon:n,iconSpacing:r="0.75rem",...o}=e,s=YF(o,t);return a.jsxs(aP,{...s,className:et("chakra-menu__menuitem-option",o.className),children:[n!==null&&a.jsx(Mx,{fontSize:"0.8em",marginEnd:r,opacity:e.isChecked?1:0,children:n||a.jsx(sB,{})}),a.jsx("span",{style:{flex:1},children:s.children})]})});ah.id="MenuItemOption";ah.displayName="MenuItemOption";var aB={slideInBottom:{...v1,custom:{offsetY:16,reverse:!0}},slideInRight:{...v1,custom:{offsetX:16,reverse:!0}},scale:{...$5,custom:{initialScale:.95,reverse:!0}},none:{}},iB=_e(vn.section),lB=e=>aB[e||"none"],lP=d.forwardRef((e,t)=>{const{preset:n,motionProps:r=lB(n),...o}=e;return a.jsx(iB,{ref:t,...r,...o})});lP.displayName="ModalTransition";var cB=Object.defineProperty,uB=(e,t,n)=>t in e?cB(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dB=(e,t,n)=>(uB(e,typeof t!="symbol"?t+"":t,n),n),fB=class{constructor(){dB(this,"modals"),this.modals=new Map}add(e){return this.modals.set(e,this.modals.size+1),this.modals.size}remove(e){this.modals.delete(e)}isTopModal(e){return e?this.modals.get(e)===this.modals.size:!1}},D1=new fB;function cP(e,t){const[n,r]=d.useState(0);return d.useEffect(()=>{const o=e.current;if(o){if(t){const s=D1.add(o);r(s)}return()=>{D1.remove(o),r(0)}}},[t,e]),n}var pB=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Il=new WeakMap,Zf=new WeakMap,Jf={},cv=0,uP=function(e){return e&&(e.host||uP(e.parentNode))},hB=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=uP(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},mB=function(e,t,n,r){var o=hB(t,Array.isArray(e)?e:[e]);Jf[n]||(Jf[n]=new WeakMap);var s=Jf[n],i=[],l=new Set,u=new Set(o),p=function(m){!m||l.has(m)||(l.add(m),p(m.parentNode))};o.forEach(p);var h=function(m){!m||u.has(m)||Array.prototype.forEach.call(m.children,function(v){if(l.has(v))h(v);else{var b=v.getAttribute(r),y=b!==null&&b!=="false",x=(Il.get(v)||0)+1,w=(s.get(v)||0)+1;Il.set(v,x),s.set(v,w),i.push(v),x===1&&y&&Zf.set(v,!0),w===1&&v.setAttribute(n,"true"),y||v.setAttribute(r,"true")}})};return h(t),l.clear(),cv++,function(){i.forEach(function(m){var v=Il.get(m)-1,b=s.get(m)-1;Il.set(m,v),s.set(m,b),v||(Zf.has(m)||m.removeAttribute(r),Zf.delete(m)),b||m.removeAttribute(n)}),cv--,cv||(Il=new WeakMap,Il=new WeakMap,Zf=new WeakMap,Jf={})}},gB=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||pB(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),mB(r,o,n,"aria-hidden")):function(){return null}};function vB(e){const{isOpen:t,onClose:n,id:r,closeOnOverlayClick:o=!0,closeOnEsc:s=!0,useInert:i=!0,onOverlayClick:l,onEsc:u}=e,p=d.useRef(null),h=d.useRef(null),[m,v,b]=xB(r,"chakra-modal","chakra-modal--header","chakra-modal--body");bB(p,t&&i);const y=cP(p,t),x=d.useRef(null),w=d.useCallback(A=>{x.current=A.target},[]),k=d.useCallback(A=>{A.key==="Escape"&&(A.stopPropagation(),s&&(n==null||n()),u==null||u())},[s,n,u]),[_,j]=d.useState(!1),[I,E]=d.useState(!1),M=d.useCallback((A={},O=null)=>({role:"dialog",...A,ref:Ct(O,p),id:m,tabIndex:-1,"aria-modal":!0,"aria-labelledby":_?v:void 0,"aria-describedby":I?b:void 0,onClick:Fe(A.onClick,T=>T.stopPropagation())}),[b,I,m,v,_]),D=d.useCallback(A=>{A.stopPropagation(),x.current===A.target&&D1.isTopModal(p.current)&&(o&&(n==null||n()),l==null||l())},[n,o,l]),R=d.useCallback((A={},O=null)=>({...A,ref:Ct(O,h),onClick:Fe(A.onClick,D),onKeyDown:Fe(A.onKeyDown,k),onMouseDown:Fe(A.onMouseDown,w)}),[k,w,D]);return{isOpen:t,onClose:n,headerId:v,bodyId:b,setBodyMounted:E,setHeaderMounted:j,dialogRef:p,overlayRef:h,getDialogProps:M,getDialogContainerProps:R,index:y}}function bB(e,t){const n=e.current;d.useEffect(()=>{if(!(!e.current||!t))return gB(e.current)},[t,e,n])}function xB(e,...t){const n=d.useId(),r=e||n;return d.useMemo(()=>t.map(o=>`${o}-${r}`),[r,t])}var[yB,Lc]=$t({name:"ModalStylesContext",errorMessage:`useModalStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[CB,Bi]=$t({strict:!0,name:"ModalContext",errorMessage:"useModalContext: `context` is undefined. Seems you forgot to wrap modal components in ``"}),Hi=e=>{const t={scrollBehavior:"outside",autoFocus:!0,trapFocus:!0,returnFocusOnClose:!0,blockScrollOnMount:!0,allowPinchZoom:!1,motionPreset:"scale",lockFocusAcrossFrames:!0,...e},{portalProps:n,children:r,autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:u,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b,onCloseComplete:y}=t,x=Wn("Modal",t),k={...vB(t),autoFocus:o,trapFocus:s,initialFocusRef:i,finalFocusRef:l,returnFocusOnClose:u,blockScrollOnMount:p,allowPinchZoom:h,preserveScrollBarGap:m,motionPreset:v,lockFocusAcrossFrames:b};return a.jsx(CB,{value:k,children:a.jsx(yB,{value:x,children:a.jsx(nr,{onExitComplete:y,children:k.isOpen&&a.jsx(_d,{...n,children:r})})})})};Hi.displayName="Modal";var Ap="right-scroll-bar-position",Np="width-before-scroll-bar",wB="with-scroll-bars-hidden",SB="--removed-body-scroll-bar-size",dP=a3(),uv=function(){},Rm=d.forwardRef(function(e,t){var n=d.useRef(null),r=d.useState({onScrollCapture:uv,onWheelCapture:uv,onTouchMoveCapture:uv}),o=r[0],s=r[1],i=e.forwardProps,l=e.children,u=e.className,p=e.removeScrollBar,h=e.enabled,m=e.shards,v=e.sideCar,b=e.noIsolation,y=e.inert,x=e.allowPinchZoom,w=e.as,k=w===void 0?"div":w,_=e.gapMode,j=r3(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),I=v,E=n3([n,t]),M=us(us({},j),o);return d.createElement(d.Fragment,null,h&&d.createElement(I,{sideCar:dP,removeScrollBar:p,shards:m,noIsolation:b,inert:y,setCallbacks:s,allowPinchZoom:!!x,lockRef:n,gapMode:_}),i?d.cloneElement(d.Children.only(l),us(us({},M),{ref:E})):d.createElement(k,us({},M,{className:u,ref:E}),l))});Rm.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Rm.classNames={fullWidth:Np,zeroRight:Ap};var uS,kB=function(){if(uS)return uS;if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function _B(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=kB();return t&&e.setAttribute("nonce",t),e}function jB(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function PB(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var IB=function(){var e=0,t=null;return{add:function(n){e==0&&(t=_B())&&(jB(t,n),PB(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},EB=function(){var e=IB();return function(t,n){d.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},fP=function(){var e=EB(),t=function(n){var r=n.styles,o=n.dynamic;return e(r,o),null};return t},MB={left:0,top:0,right:0,gap:0},dv=function(e){return parseInt(e||"",10)||0},OB=function(e){var t=window.getComputedStyle(document.body),n=t[e==="padding"?"paddingLeft":"marginLeft"],r=t[e==="padding"?"paddingTop":"marginTop"],o=t[e==="padding"?"paddingRight":"marginRight"];return[dv(n),dv(r),dv(o)]},DB=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return MB;var t=OB(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])}},RB=fP(),AB=function(e,t,n,r){var o=e.left,s=e.top,i=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat(wB,` { + overflow: hidden `).concat(r,`; + padding-right: `).concat(l,"px ").concat(r,`; + } + body { + overflow: hidden `).concat(r,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` + padding-left: `.concat(o,`px; + padding-top: `).concat(s,`px; + padding-right: `).concat(i,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(l,"px ").concat(r,`; + `),n==="padding"&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),` + } + + .`).concat(Ap,` { + right: `).concat(l,"px ").concat(r,`; + } + + .`).concat(Np,` { + margin-right: `).concat(l,"px ").concat(r,`; + } + + .`).concat(Ap," .").concat(Ap,` { + right: 0 `).concat(r,`; + } + + .`).concat(Np," .").concat(Np,` { + margin-right: 0 `).concat(r,`; + } + + body { + `).concat(SB,": ").concat(l,`px; + } +`)},NB=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r,s=d.useMemo(function(){return DB(o)},[o]);return d.createElement(RB,{styles:AB(s,!t,o,n?"":"!important")})},R1=!1;if(typeof window<"u")try{var ep=Object.defineProperty({},"passive",{get:function(){return R1=!0,!0}});window.addEventListener("test",ep,ep),window.removeEventListener("test",ep,ep)}catch{R1=!1}var El=R1?{passive:!1}:!1,TB=function(e){return e.tagName==="TEXTAREA"},pP=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!TB(e)&&n[t]==="visible")},$B=function(e){return pP(e,"overflowY")},LB=function(e){return pP(e,"overflowX")},dS=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=hP(e,r);if(o){var s=mP(e,r),i=s[1],l=s[2];if(i>l)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},zB=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},FB=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},hP=function(e,t){return e==="v"?$B(t):LB(t)},mP=function(e,t){return e==="v"?zB(t):FB(t)},BB=function(e,t){return e==="h"&&t==="rtl"?-1:1},HB=function(e,t,n,r,o){var s=BB(e,window.getComputedStyle(t).direction),i=s*r,l=n.target,u=t.contains(l),p=!1,h=i>0,m=0,v=0;do{var b=mP(e,l),y=b[0],x=b[1],w=b[2],k=x-w-s*y;(y||k)&&hP(e,l)&&(m+=k,v+=y),l=l.parentNode}while(!u&&l!==document.body||u&&(t.contains(l)||t===l));return(h&&(o&&m===0||!o&&i>m)||!h&&(o&&v===0||!o&&-i>v))&&(p=!0),p},tp=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},fS=function(e){return[e.deltaX,e.deltaY]},pS=function(e){return e&&"current"in e?e.current:e},WB=function(e,t){return e[0]===t[0]&&e[1]===t[1]},VB=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},UB=0,Ml=[];function GB(e){var t=d.useRef([]),n=d.useRef([0,0]),r=d.useRef(),o=d.useState(UB++)[0],s=d.useState(fP)[0],i=d.useRef(e);d.useEffect(function(){i.current=e},[e]),d.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var x=k1([e.lockRef.current],(e.shards||[]).map(pS),!0).filter(Boolean);return x.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),x.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=d.useCallback(function(x,w){if("touches"in x&&x.touches.length===2)return!i.current.allowPinchZoom;var k=tp(x),_=n.current,j="deltaX"in x?x.deltaX:_[0]-k[0],I="deltaY"in x?x.deltaY:_[1]-k[1],E,M=x.target,D=Math.abs(j)>Math.abs(I)?"h":"v";if("touches"in x&&D==="h"&&M.type==="range")return!1;var R=dS(D,M);if(!R)return!0;if(R?E=D:(E=D==="v"?"h":"v",R=dS(D,M)),!R)return!1;if(!r.current&&"changedTouches"in x&&(j||I)&&(r.current=E),!E)return!0;var A=r.current||E;return HB(A,w,x,A==="h"?j:I,!0)},[]),u=d.useCallback(function(x){var w=x;if(!(!Ml.length||Ml[Ml.length-1]!==s)){var k="deltaY"in w?fS(w):tp(w),_=t.current.filter(function(E){return E.name===w.type&&E.target===w.target&&WB(E.delta,k)})[0];if(_&&_.should){w.cancelable&&w.preventDefault();return}if(!_){var j=(i.current.shards||[]).map(pS).filter(Boolean).filter(function(E){return E.contains(w.target)}),I=j.length>0?l(w,j[0]):!i.current.noIsolation;I&&w.cancelable&&w.preventDefault()}}},[]),p=d.useCallback(function(x,w,k,_){var j={name:x,delta:w,target:k,should:_};t.current.push(j),setTimeout(function(){t.current=t.current.filter(function(I){return I!==j})},1)},[]),h=d.useCallback(function(x){n.current=tp(x),r.current=void 0},[]),m=d.useCallback(function(x){p(x.type,fS(x),x.target,l(x,e.lockRef.current))},[]),v=d.useCallback(function(x){p(x.type,tp(x),x.target,l(x,e.lockRef.current))},[]);d.useEffect(function(){return Ml.push(s),e.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:v}),document.addEventListener("wheel",u,El),document.addEventListener("touchmove",u,El),document.addEventListener("touchstart",h,El),function(){Ml=Ml.filter(function(x){return x!==s}),document.removeEventListener("wheel",u,El),document.removeEventListener("touchmove",u,El),document.removeEventListener("touchstart",h,El)}},[]);var b=e.removeScrollBar,y=e.inert;return d.createElement(d.Fragment,null,y?d.createElement(s,{styles:VB(o)}):null,b?d.createElement(NB,{gapMode:e.gapMode}):null)}const KB=U$(dP,GB);var gP=d.forwardRef(function(e,t){return d.createElement(Rm,us({},e,{ref:t,sideCar:KB}))});gP.classNames=Rm.classNames;const qB=gP;function XB(e){const{autoFocus:t,trapFocus:n,dialogRef:r,initialFocusRef:o,blockScrollOnMount:s,allowPinchZoom:i,finalFocusRef:l,returnFocusOnClose:u,preserveScrollBarGap:p,lockFocusAcrossFrames:h,isOpen:m}=Bi(),[v,b]=L7();d.useEffect(()=>{!v&&b&&setTimeout(b)},[v,b]);const y=cP(r,m);return a.jsx($3,{autoFocus:t,isDisabled:!n,initialFocusRef:o,finalFocusRef:l,restoreFocus:u,contentRef:r,lockFocusAcrossFrames:h,children:a.jsx(qB,{removeScrollBar:!p,allowPinchZoom:i,enabled:y===1&&s,forwardProps:!0,children:e.children})})}var Wi=Pe((e,t)=>{const{className:n,children:r,containerProps:o,motionProps:s,...i}=e,{getDialogProps:l,getDialogContainerProps:u}=Bi(),p=l(i,t),h=u(o),m=et("chakra-modal__content",n),v=Lc(),b={display:"flex",flexDirection:"column",position:"relative",width:"100%",outline:0,...v.dialog},y={display:"flex",width:"100vw",height:"$100vh",position:"fixed",left:0,top:0,...v.dialogContainer},{motionPreset:x}=Bi();return a.jsx(XB,{children:a.jsx(_e.div,{...h,className:"chakra-modal__content-container",tabIndex:-1,__css:y,children:a.jsx(lP,{preset:x,motionProps:s,className:m,...p,__css:b,children:r})})})});Wi.displayName="ModalContent";function $d(e){const{leastDestructiveRef:t,...n}=e;return a.jsx(Hi,{...n,initialFocusRef:t})}var Ld=Pe((e,t)=>a.jsx(Wi,{ref:t,role:"alertdialog",...e})),gs=Pe((e,t)=>{const{className:n,...r}=e,o=et("chakra-modal__footer",n),i={display:"flex",alignItems:"center",justifyContent:"flex-end",...Lc().footer};return a.jsx(_e.footer,{ref:t,...r,__css:i,className:o})});gs.displayName="ModalFooter";var Ho=Pe((e,t)=>{const{className:n,...r}=e,{headerId:o,setHeaderMounted:s}=Bi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__header",n),u={flex:0,...Lc().header};return a.jsx(_e.header,{ref:t,className:i,id:o,...r,__css:u})});Ho.displayName="ModalHeader";var YB=_e(vn.div),Wo=Pe((e,t)=>{const{className:n,transition:r,motionProps:o,...s}=e,i=et("chakra-modal__overlay",n),u={pos:"fixed",left:"0",top:"0",w:"100vw",h:"100vh",...Lc().overlay},{motionPreset:p}=Bi(),m=o||(p==="none"?{}:T5);return a.jsx(YB,{...m,__css:u,ref:t,className:i,...s})});Wo.displayName="ModalOverlay";var Vo=Pe((e,t)=>{const{className:n,...r}=e,{bodyId:o,setBodyMounted:s}=Bi();d.useEffect(()=>(s(!0),()=>s(!1)),[s]);const i=et("chakra-modal__body",n),l=Lc();return a.jsx(_e.div,{ref:t,className:i,id:o,...r,__css:l.body})});Vo.displayName="ModalBody";var zd=Pe((e,t)=>{const{onClick:n,className:r,...o}=e,{onClose:s}=Bi(),i=et("chakra-modal__close-btn",r),l=Lc();return a.jsx(_N,{ref:t,__css:l.closeButton,className:i,onClick:Fe(n,u=>{u.stopPropagation(),s()}),...o})});zd.displayName="ModalCloseButton";var QB=e=>a.jsx(Tn,{viewBox:"0 0 24 24",...e,children:a.jsx("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"})}),ZB=e=>a.jsx(Tn,{viewBox:"0 0 24 24",...e,children:a.jsx("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 hS(e,t,n,r){d.useEffect(()=>{var o;if(!e.current||!r)return;const s=(o=e.current.ownerDocument.defaultView)!=null?o:window,i=Array.isArray(t)?t:[t],l=new s.MutationObserver(u=>{for(const p of u)p.type==="attributes"&&p.attributeName&&i.includes(p.attributeName)&&n(p)});return l.observe(e.current,{attributes:!0,attributeFilter:i}),()=>l.disconnect()})}function JB(e,t){const n=nn(e);d.useEffect(()=>{let r=null;const o=()=>n();return t!==null&&(r=window.setInterval(o,t)),()=>{r&&window.clearInterval(r)}},[t,n])}var eH=50,mS=300;function tH(e,t){const[n,r]=d.useState(!1),[o,s]=d.useState(null),[i,l]=d.useState(!0),u=d.useRef(null),p=()=>clearTimeout(u.current);JB(()=>{o==="increment"&&e(),o==="decrement"&&t()},n?eH:null);const h=d.useCallback(()=>{i&&e(),u.current=setTimeout(()=>{l(!1),r(!0),s("increment")},mS)},[e,i]),m=d.useCallback(()=>{i&&t(),u.current=setTimeout(()=>{l(!1),r(!0),s("decrement")},mS)},[t,i]),v=d.useCallback(()=>{l(!0),r(!1),p()},[]);return d.useEffect(()=>()=>p(),[]),{up:h,down:m,stop:v,isSpinning:n}}var nH=/^[Ee0-9+\-.]$/;function rH(e){return nH.test(e)}function oH(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 sH(e={}){const{focusInputOnChange:t=!0,clampValueOnBlur:n=!0,keepWithinRange:r=!0,min:o=Number.MIN_SAFE_INTEGER,max:s=Number.MAX_SAFE_INTEGER,step:i=1,isReadOnly:l,isDisabled:u,isRequired:p,isInvalid:h,pattern:m="[0-9]*(.[0-9]+)?",inputMode:v="decimal",allowMouseWheel:b,id:y,onChange:x,precision:w,name:k,"aria-describedby":_,"aria-label":j,"aria-labelledby":I,onFocus:E,onBlur:M,onInvalid:D,getAriaValueText:R,isValidCharacter:A,format:O,parse:T,...K}=e,F=nn(E),V=nn(M),X=nn(D),W=nn(A??rH),z=nn(R),Y=_$(e),{update:B,increment:q,decrement:re}=Y,[Q,le]=d.useState(!1),se=!(l||u),U=d.useRef(null),G=d.useRef(null),te=d.useRef(null),ae=d.useRef(null),oe=d.useCallback(ve=>ve.split("").filter(W).join(""),[W]),pe=d.useCallback(ve=>{var Qe;return(Qe=T==null?void 0:T(ve))!=null?Qe:ve},[T]),ue=d.useCallback(ve=>{var Qe;return((Qe=O==null?void 0:O(ve))!=null?Qe:ve).toString()},[O]);ca(()=>{(Y.valueAsNumber>s||Y.valueAsNumber{if(!U.current)return;if(U.current.value!=Y.value){const Qe=pe(U.current.value);Y.setValue(oe(Qe))}},[pe,oe]);const me=d.useCallback((ve=i)=>{se&&q(ve)},[q,se,i]),Ce=d.useCallback((ve=i)=>{se&&re(ve)},[re,se,i]),ge=tH(me,Ce);hS(te,"disabled",ge.stop,ge.isSpinning),hS(ae,"disabled",ge.stop,ge.isSpinning);const fe=d.useCallback(ve=>{if(ve.nativeEvent.isComposing)return;const ot=pe(ve.currentTarget.value);B(oe(ot)),G.current={start:ve.currentTarget.selectionStart,end:ve.currentTarget.selectionEnd}},[B,oe,pe]),De=d.useCallback(ve=>{var Qe,ot,lt;F==null||F(ve),G.current&&(ve.target.selectionStart=(ot=G.current.start)!=null?ot:(Qe=ve.currentTarget.value)==null?void 0:Qe.length,ve.currentTarget.selectionEnd=(lt=G.current.end)!=null?lt:ve.currentTarget.selectionStart)},[F]),je=d.useCallback(ve=>{if(ve.nativeEvent.isComposing)return;oH(ve,W)||ve.preventDefault();const Qe=Be(ve)*i,ot=ve.key,Me={ArrowUp:()=>me(Qe),ArrowDown:()=>Ce(Qe),Home:()=>B(o),End:()=>B(s)}[ot];Me&&(ve.preventDefault(),Me(ve))},[W,i,me,Ce,B,o,s]),Be=ve=>{let Qe=1;return(ve.metaKey||ve.ctrlKey)&&(Qe=.1),ve.shiftKey&&(Qe=10),Qe},rt=d.useMemo(()=>{const ve=z==null?void 0:z(Y.value);if(ve!=null)return ve;const Qe=Y.value.toString();return Qe||void 0},[Y.value,z]),Ue=d.useCallback(()=>{let ve=Y.value;if(Y.value==="")return;/^[eE]/.test(Y.value.toString())?Y.setValue(""):(Y.valueAsNumbers&&(ve=s),Y.cast(ve))},[Y,s,o]),wt=d.useCallback(()=>{le(!1),n&&Ue()},[n,le,Ue]),Ye=d.useCallback(()=>{t&&requestAnimationFrame(()=>{var ve;(ve=U.current)==null||ve.focus()})},[t]),tt=d.useCallback(ve=>{ve.preventDefault(),ge.up(),Ye()},[Ye,ge]),be=d.useCallback(ve=>{ve.preventDefault(),ge.down(),Ye()},[Ye,ge]);_i(()=>U.current,"wheel",ve=>{var Qe,ot;const Me=((ot=(Qe=U.current)==null?void 0:Qe.ownerDocument)!=null?ot:document).activeElement===U.current;if(!b||!Me)return;ve.preventDefault();const $e=Be(ve)*i,At=Math.sign(ve.deltaY);At===-1?me($e):At===1&&Ce($e)},{passive:!1});const Re=d.useCallback((ve={},Qe=null)=>{const ot=u||r&&Y.isAtMax;return{...ve,ref:Ct(Qe,te),role:"button",tabIndex:-1,onPointerDown:Fe(ve.onPointerDown,lt=>{lt.button!==0||ot||tt(lt)}),onPointerLeave:Fe(ve.onPointerLeave,ge.stop),onPointerUp:Fe(ve.onPointerUp,ge.stop),disabled:ot,"aria-disabled":po(ot)}},[Y.isAtMax,r,tt,ge.stop,u]),st=d.useCallback((ve={},Qe=null)=>{const ot=u||r&&Y.isAtMin;return{...ve,ref:Ct(Qe,ae),role:"button",tabIndex:-1,onPointerDown:Fe(ve.onPointerDown,lt=>{lt.button!==0||ot||be(lt)}),onPointerLeave:Fe(ve.onPointerLeave,ge.stop),onPointerUp:Fe(ve.onPointerUp,ge.stop),disabled:ot,"aria-disabled":po(ot)}},[Y.isAtMin,r,be,ge.stop,u]),mt=d.useCallback((ve={},Qe=null)=>{var ot,lt,Me,$e;return{name:k,inputMode:v,type:"text",pattern:m,"aria-labelledby":I,"aria-label":j,"aria-describedby":_,id:y,disabled:u,...ve,readOnly:(ot=ve.readOnly)!=null?ot:l,"aria-readonly":(lt=ve.readOnly)!=null?lt:l,"aria-required":(Me=ve.required)!=null?Me:p,required:($e=ve.required)!=null?$e:p,ref:Ct(U,Qe),value:ue(Y.value),role:"spinbutton","aria-valuemin":o,"aria-valuemax":s,"aria-valuenow":Number.isNaN(Y.valueAsNumber)?void 0:Y.valueAsNumber,"aria-invalid":po(h??Y.isOutOfRange),"aria-valuetext":rt,autoComplete:"off",autoCorrect:"off",onChange:Fe(ve.onChange,fe),onKeyDown:Fe(ve.onKeyDown,je),onFocus:Fe(ve.onFocus,De,()=>le(!0)),onBlur:Fe(ve.onBlur,V,wt)}},[k,v,m,I,j,ue,_,y,u,p,l,h,Y.value,Y.valueAsNumber,Y.isOutOfRange,o,s,rt,fe,je,De,V,wt]);return{value:ue(Y.value),valueAsNumber:Y.valueAsNumber,isFocused:Q,isDisabled:u,isReadOnly:l,getIncrementButtonProps:Re,getDecrementButtonProps:st,getInputProps:mt,htmlProps:K}}var[aH,Am]=$t({name:"NumberInputStylesContext",errorMessage:`useNumberInputStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),[iH,Ox]=$t({name:"NumberInputContext",errorMessage:"useNumberInputContext: `context` is undefined. Seems you forgot to wrap number-input's components within "}),Nm=Pe(function(t,n){const r=Wn("NumberInput",t),o=Yt(t),s=nx(o),{htmlProps:i,...l}=sH(s),u=d.useMemo(()=>l,[l]);return a.jsx(iH,{value:u,children:a.jsx(aH,{value:r,children:a.jsx(_e.div,{...i,ref:n,className:et("chakra-numberinput",t.className),__css:{position:"relative",zIndex:0,...r.root}})})})});Nm.displayName="NumberInput";var Tm=Pe(function(t,n){const r=Am();return a.jsx(_e.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}})});Tm.displayName="NumberInputStepper";var $m=Pe(function(t,n){const{getInputProps:r}=Ox(),o=r(t,n),s=Am();return a.jsx(_e.input,{...o,className:et("chakra-numberinput__field",t.className),__css:{width:"100%",...s.field}})});$m.displayName="NumberInputField";var vP=_e("div",{baseStyle:{display:"flex",justifyContent:"center",alignItems:"center",flex:1,transitionProperty:"common",transitionDuration:"normal",userSelect:"none",cursor:"pointer",lineHeight:"normal"}}),Lm=Pe(function(t,n){var r;const o=Am(),{getDecrementButtonProps:s}=Ox(),i=s(t,n);return a.jsx(vP,{...i,__css:o.stepper,children:(r=t.children)!=null?r:a.jsx(QB,{})})});Lm.displayName="NumberDecrementStepper";var zm=Pe(function(t,n){var r;const{getIncrementButtonProps:o}=Ox(),s=o(t,n),i=Am();return a.jsx(vP,{...s,__css:i.stepper,children:(r=t.children)!=null?r:a.jsx(ZB,{})})});zm.displayName="NumberIncrementStepper";var[lH,zc]=$t({name:"PopoverContext",errorMessage:"usePopoverContext: `context` is undefined. Seems you forgot to wrap all popover components within ``"}),[cH,Dx]=$t({name:"PopoverStylesContext",errorMessage:`usePopoverStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `});function Rx(e){const t=d.Children.only(e.children),{getTriggerProps:n}=zc();return d.cloneElement(t,n(t.props,t.ref))}Rx.displayName="PopoverTrigger";var Ol={click:"click",hover:"hover"};function uH(e={}){const{closeOnBlur:t=!0,closeOnEsc:n=!0,initialFocusRef:r,id:o,returnFocusOnClose:s=!0,autoFocus:i=!0,arrowSize:l,arrowShadowColor:u,trigger:p=Ol.click,openDelay:h=200,closeDelay:m=200,isLazy:v,lazyBehavior:b="unmount",computePositionOnMount:y,...x}=e,{isOpen:w,onClose:k,onOpen:_,onToggle:j}=Ix(e),I=d.useRef(null),E=d.useRef(null),M=d.useRef(null),D=d.useRef(!1),R=d.useRef(!1);w&&(R.current=!0);const[A,O]=d.useState(!1),[T,K]=d.useState(!1),F=d.useId(),V=o??F,[X,W,z,Y]=["popover-trigger","popover-content","popover-header","popover-body"].map(fe=>`${fe}-${V}`),{referenceRef:B,getArrowProps:q,getPopperProps:re,getArrowInnerProps:Q,forceUpdate:le}=Px({...x,enabled:w||!!y}),se=nP({isOpen:w,ref:M});Y5({enabled:w,ref:E}),U3(M,{focusRef:E,visible:w,shouldFocus:s&&p===Ol.click}),vz(M,{focusRef:r,visible:w,shouldFocus:i&&p===Ol.click});const U=Ex({wasSelected:R.current,enabled:v,mode:b,isSelected:se.present}),G=d.useCallback((fe={},De=null)=>{const je={...fe,style:{...fe.style,transformOrigin:jn.transformOrigin.varRef,[jn.arrowSize.var]:l?`${l}px`:void 0,[jn.arrowShadowColor.var]:u},ref:Ct(M,De),children:U?fe.children:null,id:W,tabIndex:-1,role:"dialog",onKeyDown:Fe(fe.onKeyDown,Be=>{n&&Be.key==="Escape"&&k()}),onBlur:Fe(fe.onBlur,Be=>{const rt=gS(Be),Ue=fv(M.current,rt),wt=fv(E.current,rt);w&&t&&(!Ue&&!wt)&&k()}),"aria-labelledby":A?z:void 0,"aria-describedby":T?Y:void 0};return p===Ol.hover&&(je.role="tooltip",je.onMouseEnter=Fe(fe.onMouseEnter,()=>{D.current=!0}),je.onMouseLeave=Fe(fe.onMouseLeave,Be=>{Be.nativeEvent.relatedTarget!==null&&(D.current=!1,setTimeout(()=>k(),m))})),je},[U,W,A,z,T,Y,p,n,k,w,t,m,u,l]),te=d.useCallback((fe={},De=null)=>re({...fe,style:{visibility:w?"visible":"hidden",...fe.style}},De),[w,re]),ae=d.useCallback((fe,De=null)=>({...fe,ref:Ct(De,I,B)}),[I,B]),oe=d.useRef(),pe=d.useRef(),ue=d.useCallback(fe=>{I.current==null&&B(fe)},[B]),me=d.useCallback((fe={},De=null)=>{const je={...fe,ref:Ct(E,De,ue),id:X,"aria-haspopup":"dialog","aria-expanded":w,"aria-controls":W};return p===Ol.click&&(je.onClick=Fe(fe.onClick,j)),p===Ol.hover&&(je.onFocus=Fe(fe.onFocus,()=>{oe.current===void 0&&_()}),je.onBlur=Fe(fe.onBlur,Be=>{const rt=gS(Be),Ue=!fv(M.current,rt);w&&t&&Ue&&k()}),je.onKeyDown=Fe(fe.onKeyDown,Be=>{Be.key==="Escape"&&k()}),je.onMouseEnter=Fe(fe.onMouseEnter,()=>{D.current=!0,oe.current=window.setTimeout(()=>_(),h)}),je.onMouseLeave=Fe(fe.onMouseLeave,()=>{D.current=!1,oe.current&&(clearTimeout(oe.current),oe.current=void 0),pe.current=window.setTimeout(()=>{D.current===!1&&k()},m)})),je},[X,w,W,p,ue,j,_,t,k,h,m]);d.useEffect(()=>()=>{oe.current&&clearTimeout(oe.current),pe.current&&clearTimeout(pe.current)},[]);const Ce=d.useCallback((fe={},De=null)=>({...fe,id:z,ref:Ct(De,je=>{O(!!je)})}),[z]),ge=d.useCallback((fe={},De=null)=>({...fe,id:Y,ref:Ct(De,je=>{K(!!je)})}),[Y]);return{forceUpdate:le,isOpen:w,onAnimationComplete:se.onComplete,onClose:k,getAnchorProps:ae,getArrowProps:q,getArrowInnerProps:Q,getPopoverPositionerProps:te,getPopoverProps:G,getTriggerProps:me,getHeaderProps:Ce,getBodyProps:ge}}function fv(e,t){return e===t||(e==null?void 0:e.contains(t))}function gS(e){var t;const n=e.currentTarget.ownerDocument.activeElement;return(t=e.relatedTarget)!=null?t:n}function Fm(e){const t=Wn("Popover",e),{children:n,...r}=Yt(e),o=yd(),s=uH({...r,direction:o.direction});return a.jsx(lH,{value:s,children:a.jsx(cH,{value:t,children:Nb(n,{isOpen:s.isOpen,onClose:s.onClose,forceUpdate:s.forceUpdate})})})}Fm.displayName="Popover";function bP(e){const t=d.Children.only(e.children),{getAnchorProps:n}=zc();return d.cloneElement(t,n(t.props,t.ref))}bP.displayName="PopoverAnchor";var pv=(e,t)=>t?`${e}.${t}, ${t}`:void 0;function xP(e){var t;const{bg:n,bgColor:r,backgroundColor:o,shadow:s,boxShadow:i,shadowColor:l}=e,{getArrowProps:u,getArrowInnerProps:p}=zc(),h=Dx(),m=(t=n??r)!=null?t:o,v=s??i;return a.jsx(_e.div,{...u(),className:"chakra-popover__arrow-positioner",children:a.jsx(_e.div,{className:et("chakra-popover__arrow",e.className),...p(e),__css:{"--popper-arrow-shadow-color":pv("colors",l),"--popper-arrow-bg":pv("colors",m),"--popper-arrow-shadow":pv("shadows",v),...h.arrow}})})}xP.displayName="PopoverArrow";var Ax=Pe(function(t,n){const{getBodyProps:r}=zc(),o=Dx();return a.jsx(_e.div,{...r(t,n),className:et("chakra-popover__body",t.className),__css:o.body})});Ax.displayName="PopoverBody";function dH(e){if(e)return{enter:{...e.enter,visibility:"visible"},exit:{...e.exit,transitionEnd:{visibility:"hidden"}}}}var fH={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]}}},pH=_e(vn.section),yP=Pe(function(t,n){const{variants:r=fH,...o}=t,{isOpen:s}=zc();return a.jsx(pH,{ref:n,variants:dH(r),initial:!1,animate:s?"enter":"exit",...o})});yP.displayName="PopoverTransition";var Bm=Pe(function(t,n){const{rootProps:r,motionProps:o,...s}=t,{getPopoverProps:i,getPopoverPositionerProps:l,onAnimationComplete:u}=zc(),p=Dx(),h={position:"relative",display:"flex",flexDirection:"column",...p.content};return a.jsx(_e.div,{...l(r),__css:p.popper,className:"chakra-popover__popper",children:a.jsx(yP,{...o,...i(s,n),onAnimationComplete:fm(u,s.onAnimationComplete),className:et("chakra-popover__content",t.className),__css:h})})});Bm.displayName="PopoverContent";var A1=e=>a.jsx(_e.circle,{cx:50,cy:50,r:42,fill:"transparent",...e});A1.displayName="Circle";function hH(e,t,n){return(e-t)*100/(n-t)}var mH=ia({"0%":{strokeDasharray:"1, 400",strokeDashoffset:"0"},"50%":{strokeDasharray:"400, 400",strokeDashoffset:"-100"},"100%":{strokeDasharray:"400, 400",strokeDashoffset:"-260"}}),gH=ia({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),vH=ia({"0%":{left:"-40%"},"100%":{left:"100%"}}),bH=ia({from:{backgroundPosition:"1rem 0"},to:{backgroundPosition:"0 0"}});function CP(e){const{value:t=0,min:n,max:r,valueText:o,getValueText:s,isIndeterminate:i,role:l="progressbar"}=e,u=hH(t,n,r);return{bind:{"data-indeterminate":i?"":void 0,"aria-valuemax":r,"aria-valuemin":n,"aria-valuenow":i?void 0:t,"aria-valuetext":(()=>{if(t!=null)return typeof s=="function"?s(t,u):o})(),role:l},percent:u,value:t}}var wP=e=>{const{size:t,isIndeterminate:n,...r}=e;return a.jsx(_e.svg,{viewBox:"0 0 100 100",__css:{width:t,height:t,animation:n?`${gH} 2s linear infinite`:void 0},...r})};wP.displayName="Shape";var N1=Pe((e,t)=>{var n;const{size:r="48px",max:o=100,min:s=0,valueText:i,getValueText:l,value:u,capIsRound:p,children:h,thickness:m="10px",color:v="#0078d4",trackColor:b="#edebe9",isIndeterminate:y,...x}=e,w=CP({min:s,max:o,value:u,valueText:i,getValueText:l,isIndeterminate:y}),k=y?void 0:((n=w.percent)!=null?n:0)*2.64,_=k==null?void 0:`${k} ${264-k}`,j=y?{css:{animation:`${mH} 1.5s linear infinite`}}:{strokeDashoffset:66,strokeDasharray:_,transitionProperty:"stroke-dasharray, stroke",transitionDuration:"0.6s",transitionTimingFunction:"ease"},I={display:"inline-block",position:"relative",verticalAlign:"middle",fontSize:r};return a.jsxs(_e.div,{ref:t,className:"chakra-progress",...w.bind,...x,__css:I,children:[a.jsxs(wP,{size:r,isIndeterminate:y,children:[a.jsx(A1,{stroke:b,strokeWidth:m,className:"chakra-progress__track"}),a.jsx(A1,{stroke:v,strokeWidth:m,className:"chakra-progress__indicator",strokeLinecap:p?"round":void 0,opacity:w.value===0&&!y?0:void 0,...j})]}),h]})});N1.displayName="CircularProgress";var[xH,yH]=$t({name:"ProgressStylesContext",errorMessage:`useProgressStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),CH=Pe((e,t)=>{const{min:n,max:r,value:o,isIndeterminate:s,role:i,...l}=e,u=CP({value:o,min:n,max:r,isIndeterminate:s,role:i}),h={height:"100%",...yH().filledTrack};return a.jsx(_e.div,{ref:t,style:{width:`${u.percent}%`,...l.style},...u.bind,...l,__css:h})}),SP=Pe((e,t)=>{var n;const{value:r,min:o=0,max:s=100,hasStripe:i,isAnimated:l,children:u,borderRadius:p,isIndeterminate:h,"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,title:y,role:x,...w}=Yt(e),k=Wn("Progress",e),_=p??((n=k.track)==null?void 0:n.borderRadius),j={animation:`${bH} 1s linear infinite`},M={...!h&&i&&l&&j,...h&&{position:"absolute",willChange:"left",minWidth:"50%",animation:`${vH} 1s ease infinite normal none running`}},D={overflow:"hidden",position:"relative",...k.track};return a.jsx(_e.div,{ref:t,borderRadius:_,__css:D,...w,children:a.jsxs(xH,{value:k,children:[a.jsx(CH,{"aria-label":m,"aria-labelledby":v,"aria-valuetext":b,min:o,max:s,value:r,isIndeterminate:h,css:M,borderRadius:_,title:y,role:x}),u]})})});SP.displayName="Progress";function wH(e){return e&&r1(e)&&r1(e.target)}function SH(e={}){const{onChange:t,value:n,defaultValue:r,name:o,isDisabled:s,isFocusable:i,isNative:l,...u}=e,[p,h]=d.useState(r||""),m=typeof n<"u",v=m?n:p,b=d.useRef(null),y=d.useCallback(()=>{const E=b.current;if(!E)return;let M="input:not(:disabled):checked";const D=E.querySelector(M);if(D){D.focus();return}M="input:not(:disabled)";const R=E.querySelector(M);R==null||R.focus()},[]),w=`radio-${d.useId()}`,k=o||w,_=d.useCallback(E=>{const M=wH(E)?E.target.value:E;m||h(M),t==null||t(String(M))},[t,m]),j=d.useCallback((E={},M=null)=>({...E,ref:Ct(M,b),role:"radiogroup"}),[]),I=d.useCallback((E={},M=null)=>({...E,ref:M,name:k,[l?"checked":"isChecked"]:v!=null?E.value===v:void 0,onChange(R){_(R)},"data-radiogroup":!0}),[l,k,_,v]);return{getRootProps:j,getRadioProps:I,name:k,ref:b,focus:y,setValue:h,value:v,onChange:_,isDisabled:s,isFocusable:i,htmlProps:u}}var[kH,kP]=$t({name:"RadioGroupContext",strict:!1}),ih=Pe((e,t)=>{const{colorScheme:n,size:r,variant:o,children:s,className:i,isDisabled:l,isFocusable:u,...p}=e,{value:h,onChange:m,getRootProps:v,name:b,htmlProps:y}=SH(p),x=d.useMemo(()=>({name:b,size:r,onChange:m,colorScheme:n,value:h,variant:o,isDisabled:l,isFocusable:u}),[b,r,m,n,h,o,l,u]);return a.jsx(kH,{value:x,children:a.jsx(_e.div,{...v(y,t),className:et("chakra-radio-group",i),children:s})})});ih.displayName="RadioGroup";var _H={border:"0",clip:"rect(0, 0, 0, 0)",height:"1px",width:"1px",margin:"-1px",padding:"0",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"};function jH(e={}){const{defaultChecked:t,isChecked:n,isFocusable:r,isDisabled:o,isReadOnly:s,isRequired:i,onChange:l,isInvalid:u,name:p,value:h,id:m,"data-radiogroup":v,"aria-describedby":b,...y}=e,x=`radio-${d.useId()}`,w=Ed(),_=!!kP()||!!v;let I=!!w&&!_?w.id:x;I=m??I;const E=o??(w==null?void 0:w.isDisabled),M=s??(w==null?void 0:w.isReadOnly),D=i??(w==null?void 0:w.isRequired),R=u??(w==null?void 0:w.isInvalid),[A,O]=d.useState(!1),[T,K]=d.useState(!1),[F,V]=d.useState(!1),[X,W]=d.useState(!1),[z,Y]=d.useState(!!t),B=typeof n<"u",q=B?n:z;d.useEffect(()=>W5(O),[]);const re=d.useCallback(ue=>{if(M||E){ue.preventDefault();return}B||Y(ue.target.checked),l==null||l(ue)},[B,E,M,l]),Q=d.useCallback(ue=>{ue.key===" "&&W(!0)},[W]),le=d.useCallback(ue=>{ue.key===" "&&W(!1)},[W]),se=d.useCallback((ue={},me=null)=>({...ue,ref:me,"data-active":at(X),"data-hover":at(F),"data-disabled":at(E),"data-invalid":at(R),"data-checked":at(q),"data-focus":at(T),"data-focus-visible":at(T&&A),"data-readonly":at(M),"aria-hidden":!0,onMouseDown:Fe(ue.onMouseDown,()=>W(!0)),onMouseUp:Fe(ue.onMouseUp,()=>W(!1)),onMouseEnter:Fe(ue.onMouseEnter,()=>V(!0)),onMouseLeave:Fe(ue.onMouseLeave,()=>V(!1))}),[X,F,E,R,q,T,M,A]),{onFocus:U,onBlur:G}=w??{},te=d.useCallback((ue={},me=null)=>{const Ce=E&&!r;return{...ue,id:I,ref:me,type:"radio",name:p,value:h,onChange:Fe(ue.onChange,re),onBlur:Fe(G,ue.onBlur,()=>K(!1)),onFocus:Fe(U,ue.onFocus,()=>K(!0)),onKeyDown:Fe(ue.onKeyDown,Q),onKeyUp:Fe(ue.onKeyUp,le),checked:q,disabled:Ce,readOnly:M,required:D,"aria-invalid":po(R),"aria-disabled":po(Ce),"aria-required":po(D),"data-readonly":at(M),"aria-describedby":b,style:_H}},[E,r,I,p,h,re,G,U,Q,le,q,M,D,R,b]);return{state:{isInvalid:R,isFocused:T,isChecked:q,isActive:X,isHovered:F,isDisabled:E,isReadOnly:M,isRequired:D},getCheckboxProps:se,getRadioProps:se,getInputProps:te,getLabelProps:(ue={},me=null)=>({...ue,ref:me,onMouseDown:Fe(ue.onMouseDown,PH),"data-disabled":at(E),"data-checked":at(q),"data-invalid":at(R)}),getRootProps:(ue,me=null)=>({...ue,ref:me,"data-disabled":at(E),"data-checked":at(q),"data-invalid":at(R)}),htmlProps:y}}function PH(e){e.preventDefault(),e.stopPropagation()}function IH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var zs=Pe((e,t)=>{var n;const r=kP(),{onChange:o,value:s}=e,i=Wn("Radio",{...r,...e}),l=Yt(e),{spacing:u="0.5rem",children:p,isDisabled:h=r==null?void 0:r.isDisabled,isFocusable:m=r==null?void 0:r.isFocusable,inputProps:v,...b}=l;let y=e.isChecked;(r==null?void 0:r.value)!=null&&s!=null&&(y=r.value===s);let x=o;r!=null&&r.onChange&&s!=null&&(x=fm(r.onChange,o));const w=(n=e==null?void 0:e.name)!=null?n:r==null?void 0:r.name,{getInputProps:k,getCheckboxProps:_,getLabelProps:j,getRootProps:I,htmlProps:E}=jH({...b,isChecked:y,isFocusable:m,isDisabled:h,onChange:x,name:w}),[M,D]=IH(E,Nj),R=_(D),A=k(v,t),O=j(),T=Object.assign({},M,I()),K={display:"inline-flex",alignItems:"center",verticalAlign:"top",cursor:"pointer",position:"relative",...i.container},F={display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,...i.control},V={userSelect:"none",marginStart:u,...i.label};return a.jsxs(_e.label,{className:"chakra-radio",...T,__css:K,children:[a.jsx("input",{className:"chakra-radio__input",...A}),a.jsx(_e.span,{className:"chakra-radio__control",...R,__css:F}),p&&a.jsx(_e.span,{className:"chakra-radio__label",...O,__css:V,children:p})]})});zs.displayName="Radio";var _P=Pe(function(t,n){const{children:r,placeholder:o,className:s,...i}=t;return a.jsxs(_e.select,{...i,ref:n,className:et("chakra-select",s),children:[o&&a.jsx("option",{value:"",children:o}),r]})});_P.displayName="SelectField";function EH(e,t){const n={},r={};for(const[o,s]of Object.entries(e))t.includes(o)?n[o]=s:r[o]=s;return[n,r]}var jP=Pe((e,t)=>{var n;const r=Wn("Select",e),{rootProps:o,placeholder:s,icon:i,color:l,height:u,h:p,minH:h,minHeight:m,iconColor:v,iconSize:b,...y}=Yt(e),[x,w]=EH(y,Nj),k=tx(w),_={width:"100%",height:"fit-content",position:"relative",color:l},j={paddingEnd:"2rem",...r.field,_focus:{zIndex:"unset",...(n=r.field)==null?void 0:n._focus}};return a.jsxs(_e.div,{className:"chakra-select__wrapper",__css:_,...x,...o,children:[a.jsx(_P,{ref:t,height:p??u,minH:h??m,placeholder:s,...k,__css:j,children:e.children}),a.jsx(PP,{"data-disabled":at(k.disabled),...(v||l)&&{color:v||l},__css:r.icon,...b&&{fontSize:b},children:i})]})});jP.displayName="Select";var MH=e=>a.jsx("svg",{viewBox:"0 0 24 24",...e,children:a.jsx("path",{fill:"currentColor",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"})}),OH=_e("div",{baseStyle:{position:"absolute",display:"inline-flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",top:"50%",transform:"translateY(-50%)"}}),PP=e=>{const{children:t=a.jsx(MH,{}),...n}=e,r=d.cloneElement(t,{role:"presentation",className:"chakra-select__icon",focusable:!1,"aria-hidden":!0,style:{width:"1em",height:"1em",color:"currentColor"}});return a.jsx(OH,{...n,className:"chakra-select__icon-wrapper",children:d.isValidElement(t)?r:null})};PP.displayName="SelectIcon";function DH(){const e=d.useRef(!0);return d.useEffect(()=>{e.current=!1},[]),e.current}function RH(e){const t=d.useRef();return d.useEffect(()=>{t.current=e},[e]),t.current}var AH=_e("div",{baseStyle:{boxShadow:"none",backgroundClip:"padding-box",cursor:"default",color:"transparent",pointerEvents:"none",userSelect:"none","&::before, &::after, *":{visibility:"hidden"}}}),T1=Tj("skeleton-start-color"),$1=Tj("skeleton-end-color"),NH=ia({from:{opacity:0},to:{opacity:1}}),TH=ia({from:{borderColor:T1.reference,background:T1.reference},to:{borderColor:$1.reference,background:$1.reference}}),Hm=Pe((e,t)=>{const n={...e,fadeDuration:typeof e.fadeDuration=="number"?e.fadeDuration:.4,speed:typeof e.speed=="number"?e.speed:.8},r=Qa("Skeleton",n),o=DH(),{startColor:s="",endColor:i="",isLoaded:l,fadeDuration:u,speed:p,className:h,fitContent:m,...v}=Yt(n),[b,y]=ds("colors",[s,i]),x=RH(l),w=et("chakra-skeleton",h),k={...b&&{[T1.variable]:b},...y&&{[$1.variable]:y}};if(l){const _=o||x?"none":`${NH} ${u}s`;return a.jsx(_e.div,{ref:t,className:w,__css:{animation:_},...v})}return a.jsx(AH,{ref:t,className:w,...v,__css:{width:m?"fit-content":void 0,...r,...k,_dark:{...r._dark,...k},animation:`${p}s linear infinite alternate ${TH}`}})});Hm.displayName="Skeleton";var ao=e=>e?"":void 0,sc=e=>e?!0:void 0,ei=(...e)=>e.filter(Boolean).join(" ");function ac(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function $H(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 Du(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}var Tp={width:0,height:0},np=e=>e||Tp;function IP(e){const{orientation:t,thumbPercents:n,thumbRects:r,isReversed:o}=e,s=x=>{var w;const k=(w=r[x])!=null?w:Tp;return{position:"absolute",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none",touchAction:"none",...Du({orientation:t,vertical:{bottom:`calc(${n[x]}% - ${k.height/2}px)`},horizontal:{left:`calc(${n[x]}% - ${k.width/2}px)`}})}},i=t==="vertical"?r.reduce((x,w)=>np(x).height>np(w).height?x:w,Tp):r.reduce((x,w)=>np(x).width>np(w).width?x:w,Tp),l={position:"relative",touchAction:"none",WebkitTapHighlightColor:"rgba(0,0,0,0)",userSelect:"none",outline:0,...Du({orientation:t,vertical:i?{paddingLeft:i.width/2,paddingRight:i.width/2}:{},horizontal:i?{paddingTop:i.height/2,paddingBottom:i.height/2}:{}})},u={position:"absolute",...Du({orientation:t,vertical:{left:"50%",transform:"translateX(-50%)",height:"100%"},horizontal:{top:"50%",transform:"translateY(-50%)",width:"100%"}})},p=n.length===1,h=[0,o?100-n[0]:n[0]],m=p?h:n;let v=m[0];!p&&o&&(v=100-v);const b=Math.abs(m[m.length-1]-m[0]),y={...u,...Du({orientation:t,vertical:o?{height:`${b}%`,top:`${v}%`}:{height:`${b}%`,bottom:`${v}%`},horizontal:o?{width:`${b}%`,right:`${v}%`}:{width:`${b}%`,left:`${v}%`}})};return{trackStyle:u,innerTrackStyle:y,rootStyle:l,getThumbStyle:s}}function EP(e){const{isReversed:t,direction:n,orientation:r}=e;return n==="ltr"||r==="vertical"?t:!t}function LH(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function zH(e){const t=BH(e);return typeof t.PointerEvent<"u"&&e instanceof t.PointerEvent?e.pointerType==="mouse":e instanceof t.MouseEvent}function MP(e){return!!e.touches}function FH(e){return MP(e)&&e.touches.length>1}function BH(e){var t;return(t=e.view)!=null?t:window}function HH(e,t="page"){const n=e.touches[0]||e.changedTouches[0];return{x:n[`${t}X`],y:n[`${t}Y`]}}function WH(e,t="page"){return{x:e[`${t}X`],y:e[`${t}Y`]}}function OP(e,t="page"){return MP(e)?HH(e,t):WH(e,t)}function VH(e){return t=>{const n=zH(t);(!n||n&&t.button===0)&&e(t)}}function UH(e,t=!1){function n(o){e(o,{point:OP(o)})}return t?VH(n):n}function $p(e,t,n,r){return LH(e,t,UH(n,t==="pointerdown"),r)}var GH=Object.defineProperty,KH=(e,t,n)=>t in e?GH(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Eo=(e,t,n)=>(KH(e,typeof t!="symbol"?t+"":t,n),n),qH=class{constructor(e,t,n){Eo(this,"history",[]),Eo(this,"startEvent",null),Eo(this,"lastEvent",null),Eo(this,"lastEventInfo",null),Eo(this,"handlers",{}),Eo(this,"removeListeners",()=>{}),Eo(this,"threshold",3),Eo(this,"win"),Eo(this,"updatePoint",()=>{if(!(this.lastEvent&&this.lastEventInfo))return;const l=hv(this.lastEventInfo,this.history),u=this.startEvent!==null,p=ZH(l.offset,{x:0,y:0})>=this.threshold;if(!u&&!p)return;const{timestamp:h}=Dw();this.history.push({...l.point,timestamp:h});const{onStart:m,onMove:v}=this.handlers;u||(m==null||m(this.lastEvent,l),this.startEvent=this.lastEvent),v==null||v(this.lastEvent,l)}),Eo(this,"onPointerMove",(l,u)=>{this.lastEvent=l,this.lastEventInfo=u,gT.update(this.updatePoint,!0)}),Eo(this,"onPointerUp",(l,u)=>{const p=hv(u,this.history),{onEnd:h,onSessionEnd:m}=this.handlers;m==null||m(l,p),this.end(),!(!h||!this.startEvent)&&(h==null||h(l,p))});var r;if(this.win=(r=e.view)!=null?r:window,FH(e))return;this.handlers=t,n&&(this.threshold=n),e.stopPropagation(),e.preventDefault();const o={point:OP(e)},{timestamp:s}=Dw();this.history=[{...o.point,timestamp:s}];const{onSessionStart:i}=t;i==null||i(e,hv(o,this.history)),this.removeListeners=QH($p(this.win,"pointermove",this.onPointerMove),$p(this.win,"pointerup",this.onPointerUp),$p(this.win,"pointercancel",this.onPointerUp))}updateHandlers(e){this.handlers=e}end(){var e;(e=this.removeListeners)==null||e.call(this),vT.update(this.updatePoint)}};function vS(e,t){return{x:e.x-t.x,y:e.y-t.y}}function hv(e,t){return{point:e.point,delta:vS(e.point,t[t.length-1]),offset:vS(e.point,t[0]),velocity:YH(t,.1)}}var XH=e=>e*1e3;function YH(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=e[e.length-1];for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>XH(t)));)n--;if(!r)return{x:0,y:0};const s=(o.timestamp-r.timestamp)/1e3;if(s===0)return{x:0,y:0};const i={x:(o.x-r.x)/s,y:(o.y-r.y)/s};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function QH(...e){return t=>e.reduce((n,r)=>r(n),t)}function mv(e,t){return Math.abs(e-t)}function bS(e){return"x"in e&&"y"in e}function ZH(e,t){if(typeof e=="number"&&typeof t=="number")return mv(e,t);if(bS(e)&&bS(t)){const n=mv(e.x,t.x),r=mv(e.y,t.y);return Math.sqrt(n**2+r**2)}return 0}function DP(e){const t=d.useRef(null);return t.current=e,t}function RP(e,t){const{onPan:n,onPanStart:r,onPanEnd:o,onPanSessionStart:s,onPanSessionEnd:i,threshold:l}=t,u=!!(n||r||o||s||i),p=d.useRef(null),h=DP({onSessionStart:s,onSessionEnd:i,onStart:r,onMove:n,onEnd(m,v){p.current=null,o==null||o(m,v)}});d.useEffect(()=>{var m;(m=p.current)==null||m.updateHandlers(h.current)}),d.useEffect(()=>{const m=e.current;if(!m||!u)return;function v(b){p.current=new qH(b,h.current,l)}return $p(m,"pointerdown",v)},[e,u,h,l]),d.useEffect(()=>()=>{var m;(m=p.current)==null||m.end(),p.current=null},[])}function JH(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(o=>{if(!Array.isArray(o)||!o.length)return;const[s]=o;let i,l;if("borderBoxSize"in s){const u=s.borderBoxSize,p=Array.isArray(u)?u[0]:u;i=p.inlineSize,l=p.blockSize}else i=e.offsetWidth,l=e.offsetHeight;t({width:i,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}var eW=globalThis!=null&&globalThis.document?d.useLayoutEffect:d.useEffect;function tW(e,t){var n,r;if(!e||!e.parentElement)return;const o=(r=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?r:window,s=new o.MutationObserver(()=>{t()});return s.observe(e.parentElement,{childList:!0}),()=>{s.disconnect()}}function AP({getNodes:e,observeMutation:t=!0}){const[n,r]=d.useState([]),[o,s]=d.useState(0);return eW(()=>{const i=e(),l=i.map((u,p)=>JH(u,h=>{r(m=>[...m.slice(0,p),h,...m.slice(p+1)])}));if(t){const u=i[0];l.push(tW(u,()=>{s(p=>p+1)}))}return()=>{l.forEach(u=>{u==null||u()})}},[o]),n}function nW(e){return typeof e=="object"&&e!==null&&"current"in e}function rW(e){const[t]=AP({observeMutation:!1,getNodes(){return[nW(e)?e.current:e]}});return t}function oW(e){const{min:t=0,max:n=100,onChange:r,value:o,defaultValue:s,isReversed:i,direction:l="ltr",orientation:u="horizontal",id:p,isDisabled:h,isReadOnly:m,onChangeStart:v,onChangeEnd:b,step:y=1,getAriaValueText:x,"aria-valuetext":w,"aria-label":k,"aria-labelledby":_,name:j,focusThumbOnChange:I=!0,minStepsBetweenThumbs:E=0,...M}=e,D=nn(v),R=nn(b),A=nn(x),O=EP({isReversed:i,direction:l,orientation:u}),[T,K]=Ac({value:o,defaultValue:s??[25,75],onChange:r});if(!Array.isArray(T))throw new TypeError(`[range-slider] You passed an invalid value for \`value\` or \`defaultValue\`, expected \`Array\` but got \`${typeof T}\``);const[F,V]=d.useState(!1),[X,W]=d.useState(!1),[z,Y]=d.useState(-1),B=!(h||m),q=d.useRef(T),re=T.map(ke=>tc(ke,t,n)),Q=E*y,le=sW(re,t,n,Q),se=d.useRef({eventSource:null,value:[],valueBounds:[]});se.current.value=re,se.current.valueBounds=le;const U=re.map(ke=>n-ke+t),te=(O?U:re).map(ke=>th(ke,t,n)),ae=u==="vertical",oe=d.useRef(null),pe=d.useRef(null),ue=AP({getNodes(){const ke=pe.current,ze=ke==null?void 0:ke.querySelectorAll("[role=slider]");return ze?Array.from(ze):[]}}),me=d.useId(),ge=$H(p??me),fe=d.useCallback(ke=>{var ze,Le;if(!oe.current)return;se.current.eventSource="pointer";const Ve=oe.current.getBoundingClientRect(),{clientX:ct,clientY:bn}=(Le=(ze=ke.touches)==null?void 0:ze[0])!=null?Le:ke,jt=ae?Ve.bottom-bn:ct-Ve.left,Pt=ae?Ve.height:Ve.width;let sr=jt/Pt;return O&&(sr=1-sr),U5(sr,t,n)},[ae,O,n,t]),De=(n-t)/10,je=y||(n-t)/100,Be=d.useMemo(()=>({setValueAtIndex(ke,ze){if(!B)return;const Le=se.current.valueBounds[ke];ze=parseFloat(w1(ze,Le.min,je)),ze=tc(ze,Le.min,Le.max);const Ve=[...se.current.value];Ve[ke]=ze,K(Ve)},setActiveIndex:Y,stepUp(ke,ze=je){const Le=se.current.value[ke],Ve=O?Le-ze:Le+ze;Be.setValueAtIndex(ke,Ve)},stepDown(ke,ze=je){const Le=se.current.value[ke],Ve=O?Le+ze:Le-ze;Be.setValueAtIndex(ke,Ve)},reset(){K(q.current)}}),[je,O,K,B]),rt=d.useCallback(ke=>{const ze=ke.key,Ve={ArrowRight:()=>Be.stepUp(z),ArrowUp:()=>Be.stepUp(z),ArrowLeft:()=>Be.stepDown(z),ArrowDown:()=>Be.stepDown(z),PageUp:()=>Be.stepUp(z,De),PageDown:()=>Be.stepDown(z,De),Home:()=>{const{min:ct}=le[z];Be.setValueAtIndex(z,ct)},End:()=>{const{max:ct}=le[z];Be.setValueAtIndex(z,ct)}}[ze];Ve&&(ke.preventDefault(),ke.stopPropagation(),Ve(ke),se.current.eventSource="keyboard")},[Be,z,De,le]),{getThumbStyle:Ue,rootStyle:wt,trackStyle:Ye,innerTrackStyle:tt}=d.useMemo(()=>IP({isReversed:O,orientation:u,thumbRects:ue,thumbPercents:te}),[O,u,te,ue]),be=d.useCallback(ke=>{var ze;const Le=ke??z;if(Le!==-1&&I){const Ve=ge.getThumb(Le),ct=(ze=pe.current)==null?void 0:ze.ownerDocument.getElementById(Ve);ct&&setTimeout(()=>ct.focus())}},[I,z,ge]);ca(()=>{se.current.eventSource==="keyboard"&&(R==null||R(se.current.value))},[re,R]);const Re=ke=>{const ze=fe(ke)||0,Le=se.current.value.map(Pt=>Math.abs(Pt-ze)),Ve=Math.min(...Le);let ct=Le.indexOf(Ve);const bn=Le.filter(Pt=>Pt===Ve);bn.length>1&&ze>se.current.value[ct]&&(ct=ct+bn.length-1),Y(ct),Be.setValueAtIndex(ct,ze),be(ct)},st=ke=>{if(z==-1)return;const ze=fe(ke)||0;Y(z),Be.setValueAtIndex(z,ze),be(z)};RP(pe,{onPanSessionStart(ke){B&&(V(!0),Re(ke),D==null||D(se.current.value))},onPanSessionEnd(){B&&(V(!1),R==null||R(se.current.value))},onPan(ke){B&&st(ke)}});const mt=d.useCallback((ke={},ze=null)=>({...ke,...M,id:ge.root,ref:Ct(ze,pe),tabIndex:-1,"aria-disabled":sc(h),"data-focused":ao(X),style:{...ke.style,...wt}}),[M,h,X,wt,ge]),ve=d.useCallback((ke={},ze=null)=>({...ke,ref:Ct(ze,oe),id:ge.track,"data-disabled":ao(h),style:{...ke.style,...Ye}}),[h,Ye,ge]),Qe=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:ge.innerTrack,style:{...ke.style,...tt}}),[tt,ge]),ot=d.useCallback((ke,ze=null)=>{var Le;const{index:Ve,...ct}=ke,bn=re[Ve];if(bn==null)throw new TypeError(`[range-slider > thumb] Cannot find value at index \`${Ve}\`. The \`value\` or \`defaultValue\` length is : ${re.length}`);const jt=le[Ve];return{...ct,ref:ze,role:"slider",tabIndex:B?0:void 0,id:ge.getThumb(Ve),"data-active":ao(F&&z===Ve),"aria-valuetext":(Le=A==null?void 0:A(bn))!=null?Le:w==null?void 0:w[Ve],"aria-valuemin":jt.min,"aria-valuemax":jt.max,"aria-valuenow":bn,"aria-orientation":u,"aria-disabled":sc(h),"aria-readonly":sc(m),"aria-label":k==null?void 0:k[Ve],"aria-labelledby":k!=null&&k[Ve]||_==null?void 0:_[Ve],style:{...ke.style,...Ue(Ve)},onKeyDown:ac(ke.onKeyDown,rt),onFocus:ac(ke.onFocus,()=>{W(!0),Y(Ve)}),onBlur:ac(ke.onBlur,()=>{W(!1),Y(-1)})}},[ge,re,le,B,F,z,A,w,u,h,m,k,_,Ue,rt,W]),lt=d.useCallback((ke={},ze=null)=>({...ke,ref:ze,id:ge.output,htmlFor:re.map((Le,Ve)=>ge.getThumb(Ve)).join(" "),"aria-live":"off"}),[ge,re]),Me=d.useCallback((ke,ze=null)=>{const{value:Le,...Ve}=ke,ct=!(Len),bn=Le>=re[0]&&Le<=re[re.length-1];let jt=th(Le,t,n);jt=O?100-jt:jt;const Pt={position:"absolute",pointerEvents:"none",...Du({orientation:u,vertical:{bottom:`${jt}%`},horizontal:{left:`${jt}%`}})};return{...Ve,ref:ze,id:ge.getMarker(ke.value),role:"presentation","aria-hidden":!0,"data-disabled":ao(h),"data-invalid":ao(!ct),"data-highlighted":ao(bn),style:{...ke.style,...Pt}}},[h,O,n,t,u,re,ge]),$e=d.useCallback((ke,ze=null)=>{const{index:Le,...Ve}=ke;return{...Ve,ref:ze,id:ge.getInput(Le),type:"hidden",value:re[Le],name:Array.isArray(j)?j[Le]:`${j}-${Le}`}},[j,re,ge]);return{state:{value:re,isFocused:X,isDragging:F,getThumbPercent:ke=>te[ke],getThumbMinValue:ke=>le[ke].min,getThumbMaxValue:ke=>le[ke].max},actions:Be,getRootProps:mt,getTrackProps:ve,getInnerTrackProps:Qe,getThumbProps:ot,getMarkerProps:Me,getInputProps:$e,getOutputProps:lt}}function sW(e,t,n,r){return e.map((o,s)=>{const i=s===0?t:e[s-1]+r,l=s===e.length-1?n:e[s+1]-r;return{min:i,max:l}})}var[aW,Wm]=$t({name:"SliderContext",errorMessage:"useSliderContext: `context` is undefined. Seems you forgot to wrap all slider components within "}),[iW,Vm]=$t({name:"RangeSliderStylesContext",errorMessage:`useRangeSliderStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Nx=Pe(function(t,n){const r={orientation:"horizontal",...t},o=Wn("Slider",r),s=Yt(r),{direction:i}=yd();s.direction=i;const{getRootProps:l,...u}=oW(s),p=d.useMemo(()=>({...u,name:r.name}),[u,r.name]);return a.jsx(aW,{value:p,children:a.jsx(iW,{value:o,children:a.jsx(_e.div,{...l({},n),className:"chakra-slider",__css:o.container,children:r.children})})})});Nx.displayName="RangeSlider";var od=Pe(function(t,n){const{getThumbProps:r,getInputProps:o,name:s}=Wm(),i=Vm(),l=r(t,n);return a.jsxs(_e.div,{...l,className:ei("chakra-slider__thumb",t.className),__css:i.thumb,children:[l.children,s&&a.jsx("input",{...o({index:t.index})})]})});od.displayName="RangeSliderThumb";var Tx=Pe(function(t,n){const{getTrackProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__track",t.className),__css:o.track,"data-testid":"chakra-range-slider-track"})});Tx.displayName="RangeSliderTrack";var $x=Pe(function(t,n){const{getInnerTrackProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:"chakra-slider__filled-track",__css:o.filledTrack})});$x.displayName="RangeSliderFilledTrack";var Pi=Pe(function(t,n){const{getMarkerProps:r}=Wm(),o=Vm(),s=r(t,n);return a.jsx(_e.div,{...s,className:ei("chakra-slider__marker",t.className),__css:o.mark})});Pi.displayName="RangeSliderMark";function lW(e){var t;const{min:n=0,max:r=100,onChange:o,value:s,defaultValue:i,isReversed:l,direction:u="ltr",orientation:p="horizontal",id:h,isDisabled:m,isReadOnly:v,onChangeStart:b,onChangeEnd:y,step:x=1,getAriaValueText:w,"aria-valuetext":k,"aria-label":_,"aria-labelledby":j,name:I,focusThumbOnChange:E=!0,...M}=e,D=nn(b),R=nn(y),A=nn(w),O=EP({isReversed:l,direction:u,orientation:p}),[T,K]=Ac({value:s,defaultValue:i??uW(n,r),onChange:o}),[F,V]=d.useState(!1),[X,W]=d.useState(!1),z=!(m||v),Y=(r-n)/10,B=x||(r-n)/100,q=tc(T,n,r),re=r-q+n,le=th(O?re:q,n,r),se=p==="vertical",U=DP({min:n,max:r,step:x,isDisabled:m,value:q,isInteractive:z,isReversed:O,isVertical:se,eventSource:null,focusThumbOnChange:E,orientation:p}),G=d.useRef(null),te=d.useRef(null),ae=d.useRef(null),oe=d.useId(),pe=h??oe,[ue,me]=[`slider-thumb-${pe}`,`slider-track-${pe}`],Ce=d.useCallback(Me=>{var $e,At;if(!G.current)return;const ke=U.current;ke.eventSource="pointer";const ze=G.current.getBoundingClientRect(),{clientX:Le,clientY:Ve}=(At=($e=Me.touches)==null?void 0:$e[0])!=null?At:Me,ct=se?ze.bottom-Ve:Le-ze.left,bn=se?ze.height:ze.width;let jt=ct/bn;O&&(jt=1-jt);let Pt=U5(jt,ke.min,ke.max);return ke.step&&(Pt=parseFloat(w1(Pt,ke.min,ke.step))),Pt=tc(Pt,ke.min,ke.max),Pt},[se,O,U]),ge=d.useCallback(Me=>{const $e=U.current;$e.isInteractive&&(Me=parseFloat(w1(Me,$e.min,B)),Me=tc(Me,$e.min,$e.max),K(Me))},[B,K,U]),fe=d.useMemo(()=>({stepUp(Me=B){const $e=O?q-Me:q+Me;ge($e)},stepDown(Me=B){const $e=O?q+Me:q-Me;ge($e)},reset(){ge(i||0)},stepTo(Me){ge(Me)}}),[ge,O,q,B,i]),De=d.useCallback(Me=>{const $e=U.current,ke={ArrowRight:()=>fe.stepUp(),ArrowUp:()=>fe.stepUp(),ArrowLeft:()=>fe.stepDown(),ArrowDown:()=>fe.stepDown(),PageUp:()=>fe.stepUp(Y),PageDown:()=>fe.stepDown(Y),Home:()=>ge($e.min),End:()=>ge($e.max)}[Me.key];ke&&(Me.preventDefault(),Me.stopPropagation(),ke(Me),$e.eventSource="keyboard")},[fe,ge,Y,U]),je=(t=A==null?void 0:A(q))!=null?t:k,Be=rW(te),{getThumbStyle:rt,rootStyle:Ue,trackStyle:wt,innerTrackStyle:Ye}=d.useMemo(()=>{const Me=U.current,$e=Be??{width:0,height:0};return IP({isReversed:O,orientation:Me.orientation,thumbRects:[$e],thumbPercents:[le]})},[O,Be,le,U]),tt=d.useCallback(()=>{U.current.focusThumbOnChange&&setTimeout(()=>{var $e;return($e=te.current)==null?void 0:$e.focus()})},[U]);ca(()=>{const Me=U.current;tt(),Me.eventSource==="keyboard"&&(R==null||R(Me.value))},[q,R]);function be(Me){const $e=Ce(Me);$e!=null&&$e!==U.current.value&&K($e)}RP(ae,{onPanSessionStart(Me){const $e=U.current;$e.isInteractive&&(V(!0),tt(),be(Me),D==null||D($e.value))},onPanSessionEnd(){const Me=U.current;Me.isInteractive&&(V(!1),R==null||R(Me.value))},onPan(Me){U.current.isInteractive&&be(Me)}});const Re=d.useCallback((Me={},$e=null)=>({...Me,...M,ref:Ct($e,ae),tabIndex:-1,"aria-disabled":sc(m),"data-focused":ao(X),style:{...Me.style,...Ue}}),[M,m,X,Ue]),st=d.useCallback((Me={},$e=null)=>({...Me,ref:Ct($e,G),id:me,"data-disabled":ao(m),style:{...Me.style,...wt}}),[m,me,wt]),mt=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,style:{...Me.style,...Ye}}),[Ye]),ve=d.useCallback((Me={},$e=null)=>({...Me,ref:Ct($e,te),role:"slider",tabIndex:z?0:void 0,id:ue,"data-active":ao(F),"aria-valuetext":je,"aria-valuemin":n,"aria-valuemax":r,"aria-valuenow":q,"aria-orientation":p,"aria-disabled":sc(m),"aria-readonly":sc(v),"aria-label":_,"aria-labelledby":_?void 0:j,style:{...Me.style,...rt(0)},onKeyDown:ac(Me.onKeyDown,De),onFocus:ac(Me.onFocus,()=>W(!0)),onBlur:ac(Me.onBlur,()=>W(!1))}),[z,ue,F,je,n,r,q,p,m,v,_,j,rt,De]),Qe=d.useCallback((Me,$e=null)=>{const At=!(Me.valuer),ke=q>=Me.value,ze=th(Me.value,n,r),Le={position:"absolute",pointerEvents:"none",...cW({orientation:p,vertical:{bottom:O?`${100-ze}%`:`${ze}%`},horizontal:{left:O?`${100-ze}%`:`${ze}%`}})};return{...Me,ref:$e,role:"presentation","aria-hidden":!0,"data-disabled":ao(m),"data-invalid":ao(!At),"data-highlighted":ao(ke),style:{...Me.style,...Le}}},[m,O,r,n,p,q]),ot=d.useCallback((Me={},$e=null)=>({...Me,ref:$e,type:"hidden",value:q,name:I}),[I,q]);return{state:{value:q,isFocused:X,isDragging:F},actions:fe,getRootProps:Re,getTrackProps:st,getInnerTrackProps:mt,getThumbProps:ve,getMarkerProps:Qe,getInputProps:ot}}function cW(e){const{orientation:t,vertical:n,horizontal:r}=e;return t==="vertical"?n:r}function uW(e,t){return t"}),[fW,Gm]=$t({name:"SliderStylesContext",hookName:"useSliderStyles",providerName:""}),Lx=Pe((e,t)=>{var n;const r={...e,orientation:(n=e==null?void 0:e.orientation)!=null?n:"horizontal"},o=Wn("Slider",r),s=Yt(r),{direction:i}=yd();s.direction=i;const{getInputProps:l,getRootProps:u,...p}=lW(s),h=u(),m=l({},t);return a.jsx(dW,{value:p,children:a.jsx(fW,{value:o,children:a.jsxs(_e.div,{...h,className:ei("chakra-slider",r.className),__css:o.container,children:[r.children,a.jsx("input",{...m})]})})})});Lx.displayName="Slider";var zx=Pe((e,t)=>{const{getThumbProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__thumb",e.className),__css:r.thumb})});zx.displayName="SliderThumb";var Fx=Pe((e,t)=>{const{getTrackProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__track",e.className),__css:r.track})});Fx.displayName="SliderTrack";var Bx=Pe((e,t)=>{const{getInnerTrackProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__filled-track",e.className),__css:r.filledTrack})});Bx.displayName="SliderFilledTrack";var Fl=Pe((e,t)=>{const{getMarkerProps:n}=Um(),r=Gm(),o=n(e,t);return a.jsx(_e.div,{...o,className:ei("chakra-slider__marker",e.className),__css:r.mark})});Fl.displayName="SliderMark";var Hx=Pe(function(t,n){const r=Wn("Switch",t),{spacing:o="0.5rem",children:s,...i}=Yt(t),{getIndicatorProps:l,getInputProps:u,getCheckboxProps:p,getRootProps:h,getLabelProps:m}=V5(i),v=d.useMemo(()=>({display:"inline-block",position:"relative",verticalAlign:"middle",lineHeight:0,...r.container}),[r.container]),b=d.useMemo(()=>({display:"inline-flex",flexShrink:0,justifyContent:"flex-start",boxSizing:"content-box",cursor:"pointer",...r.track}),[r.track]),y=d.useMemo(()=>({userSelect:"none",marginStart:o,...r.label}),[o,r.label]);return a.jsxs(_e.label,{...h(),className:et("chakra-switch",t.className),__css:v,children:[a.jsx("input",{className:"chakra-switch__input",...u({},n)}),a.jsx(_e.span,{...p(),className:"chakra-switch__track",__css:b,children:a.jsx(_e.span,{__css:r.thumb,className:"chakra-switch__thumb",...l()})}),s&&a.jsx(_e.span,{className:"chakra-switch__label",...m(),__css:y,children:s})]})});Hx.displayName="Switch";var[pW,hW,mW,gW]=Zb();function vW(e){var t;const{defaultIndex:n,onChange:r,index:o,isManual:s,isLazy:i,lazyBehavior:l="unmount",orientation:u="horizontal",direction:p="ltr",...h}=e,[m,v]=d.useState(n??0),[b,y]=Ac({defaultValue:n??0,value:o,onChange:r});d.useEffect(()=>{o!=null&&v(o)},[o]);const x=mW(),w=d.useId();return{id:`tabs-${(t=e.id)!=null?t:w}`,selectedIndex:b,focusedIndex:m,setSelectedIndex:y,setFocusedIndex:v,isManual:s,isLazy:i,lazyBehavior:l,orientation:u,descendants:x,direction:p,htmlProps:h}}var[bW,Km]=$t({name:"TabsContext",errorMessage:"useTabsContext: `context` is undefined. Seems you forgot to wrap all tabs components within "});function xW(e){const{focusedIndex:t,orientation:n,direction:r}=Km(),o=hW(),s=d.useCallback(i=>{const l=()=>{var _;const j=o.nextEnabled(t);j&&((_=j.node)==null||_.focus())},u=()=>{var _;const j=o.prevEnabled(t);j&&((_=j.node)==null||_.focus())},p=()=>{var _;const j=o.firstEnabled();j&&((_=j.node)==null||_.focus())},h=()=>{var _;const j=o.lastEnabled();j&&((_=j.node)==null||_.focus())},m=n==="horizontal",v=n==="vertical",b=i.key,y=r==="ltr"?"ArrowLeft":"ArrowRight",x=r==="ltr"?"ArrowRight":"ArrowLeft",k={[y]:()=>m&&u(),[x]:()=>m&&l(),ArrowDown:()=>v&&l(),ArrowUp:()=>v&&u(),Home:p,End:h}[b];k&&(i.preventDefault(),k(i))},[o,t,n,r]);return{...e,role:"tablist","aria-orientation":n,onKeyDown:Fe(e.onKeyDown,s)}}function yW(e){const{isDisabled:t=!1,isFocusable:n=!1,...r}=e,{setSelectedIndex:o,isManual:s,id:i,setFocusedIndex:l,selectedIndex:u}=Km(),{index:p,register:h}=gW({disabled:t&&!n}),m=p===u,v=()=>{o(p)},b=()=>{l(p),!s&&!(t&&n)&&o(p)},y=V3({...r,ref:Ct(h,e.ref),isDisabled:t,isFocusable:n,onClick:Fe(e.onClick,v)}),x="button";return{...y,id:NP(i,p),role:"tab",tabIndex:m?0:-1,type:x,"aria-selected":m,"aria-controls":TP(i,p),onFocus:t?void 0:Fe(e.onFocus,b)}}var[CW,wW]=$t({});function SW(e){const t=Km(),{id:n,selectedIndex:r}=t,s=Id(e.children).map((i,l)=>d.createElement(CW,{key:l,value:{isSelected:l===r,id:TP(n,l),tabId:NP(n,l),selectedIndex:r}},i));return{...e,children:s}}function kW(e){const{children:t,...n}=e,{isLazy:r,lazyBehavior:o}=Km(),{isSelected:s,id:i,tabId:l}=wW(),u=d.useRef(!1);s&&(u.current=!0);const p=Ex({wasSelected:u.current,isSelected:s,enabled:r,mode:o});return{tabIndex:0,...n,children:p?t:null,role:"tabpanel","aria-labelledby":l,hidden:!s,id:i}}function NP(e,t){return`${e}--tab-${t}`}function TP(e,t){return`${e}--tabpanel-${t}`}var[_W,qm]=$t({name:"TabsStylesContext",errorMessage:`useTabsStyles returned is 'undefined'. Seems you forgot to wrap the components in "" `}),Ji=Pe(function(t,n){const r=Wn("Tabs",t),{children:o,className:s,...i}=Yt(t),{htmlProps:l,descendants:u,...p}=vW(i),h=d.useMemo(()=>p,[p]),{isFitted:m,...v}=l;return a.jsx(pW,{value:u,children:a.jsx(bW,{value:h,children:a.jsx(_W,{value:r,children:a.jsx(_e.div,{className:et("chakra-tabs",s),ref:n,...v,__css:r.root,children:o})})})})});Ji.displayName="Tabs";var el=Pe(function(t,n){const r=xW({...t,ref:n}),s={display:"flex",...qm().tablist};return a.jsx(_e.div,{...r,className:et("chakra-tabs__tablist",t.className),__css:s})});el.displayName="TabList";var mo=Pe(function(t,n){const r=kW({...t,ref:n}),o=qm();return a.jsx(_e.div,{outline:"0",...r,className:et("chakra-tabs__tab-panel",t.className),__css:o.tabpanel})});mo.displayName="TabPanel";var Fc=Pe(function(t,n){const r=SW(t),o=qm();return a.jsx(_e.div,{...r,width:"100%",ref:n,className:et("chakra-tabs__tab-panels",t.className),__css:o.tabpanels})});Fc.displayName="TabPanels";var Pr=Pe(function(t,n){const r=qm(),o=yW({...t,ref:n}),s={outline:"0",display:"flex",alignItems:"center",justifyContent:"center",...r.tab};return a.jsx(_e.button,{...o,className:et("chakra-tabs__tab",t.className),__css:s})});Pr.displayName="Tab";function jW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var PW=["h","minH","height","minHeight"],$P=Pe((e,t)=>{const n=Qa("Textarea",e),{className:r,rows:o,...s}=Yt(e),i=tx(s),l=o?jW(n,PW):n;return a.jsx(_e.textarea,{ref:t,rows:o,...i,className:et("chakra-textarea",r),__css:l})});$P.displayName="Textarea";var IW={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]}}}},L1=e=>{var t;return((t=e.current)==null?void 0:t.ownerDocument)||document},Lp=e=>{var t,n;return((n=(t=e.current)==null?void 0:t.ownerDocument)==null?void 0:n.defaultView)||window};function EW(e={}){const{openDelay:t=0,closeDelay:n=0,closeOnClick:r=!0,closeOnMouseDown:o,closeOnScroll:s,closeOnPointerDown:i=o,closeOnEsc:l=!0,onOpen:u,onClose:p,placement:h,id:m,isOpen:v,defaultIsOpen:b,arrowSize:y=10,arrowShadowColor:x,arrowPadding:w,modifiers:k,isDisabled:_,gutter:j,offset:I,direction:E,...M}=e,{isOpen:D,onOpen:R,onClose:A}=Ix({isOpen:v,defaultIsOpen:b,onOpen:u,onClose:p}),{referenceRef:O,getPopperProps:T,getArrowInnerProps:K,getArrowProps:F}=Px({enabled:D,placement:h,arrowPadding:w,modifiers:k,gutter:j,offset:I,direction:E}),V=d.useId(),W=`tooltip-${m??V}`,z=d.useRef(null),Y=d.useRef(),B=d.useCallback(()=>{Y.current&&(clearTimeout(Y.current),Y.current=void 0)},[]),q=d.useRef(),re=d.useCallback(()=>{q.current&&(clearTimeout(q.current),q.current=void 0)},[]),Q=d.useCallback(()=>{re(),A()},[A,re]),le=MW(z,Q),se=d.useCallback(()=>{if(!_&&!Y.current){D&&le();const me=Lp(z);Y.current=me.setTimeout(R,t)}},[le,_,D,R,t]),U=d.useCallback(()=>{B();const me=Lp(z);q.current=me.setTimeout(Q,n)},[n,Q,B]),G=d.useCallback(()=>{D&&r&&U()},[r,U,D]),te=d.useCallback(()=>{D&&i&&U()},[i,U,D]),ae=d.useCallback(me=>{D&&me.key==="Escape"&&U()},[D,U]);_i(()=>L1(z),"keydown",l?ae:void 0),_i(()=>{const me=z.current;if(!me)return null;const Ce=D3(me);return Ce.localName==="body"?Lp(z):Ce},"scroll",()=>{D&&s&&Q()},{passive:!0,capture:!0}),d.useEffect(()=>{_&&(B(),D&&A())},[_,D,A,B]),d.useEffect(()=>()=>{B(),re()},[B,re]),_i(()=>z.current,"pointerleave",U);const oe=d.useCallback((me={},Ce=null)=>({...me,ref:Ct(z,Ce,O),onPointerEnter:Fe(me.onPointerEnter,fe=>{fe.pointerType!=="touch"&&se()}),onClick:Fe(me.onClick,G),onPointerDown:Fe(me.onPointerDown,te),onFocus:Fe(me.onFocus,se),onBlur:Fe(me.onBlur,U),"aria-describedby":D?W:void 0}),[se,U,te,D,W,G,O]),pe=d.useCallback((me={},Ce=null)=>T({...me,style:{...me.style,[jn.arrowSize.var]:y?`${y}px`:void 0,[jn.arrowShadowColor.var]:x}},Ce),[T,y,x]),ue=d.useCallback((me={},Ce=null)=>{const ge={...me.style,position:"relative",transformOrigin:jn.transformOrigin.varRef};return{ref:Ce,...M,...me,id:W,role:"tooltip",style:ge}},[M,W]);return{isOpen:D,show:se,hide:U,getTriggerProps:oe,getTooltipProps:ue,getTooltipPositionerProps:pe,getArrowProps:F,getArrowInnerProps:K}}var gv="chakra-ui:close-tooltip";function MW(e,t){return d.useEffect(()=>{const n=L1(e);return n.addEventListener(gv,t),()=>n.removeEventListener(gv,t)},[t,e]),()=>{const n=L1(e),r=Lp(e);n.dispatchEvent(new r.CustomEvent(gv))}}function OW(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function DW(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}var RW=_e(vn.div),Rt=Pe((e,t)=>{var n,r;const o=Qa("Tooltip",e),s=Yt(e),i=yd(),{children:l,label:u,shouldWrapChildren:p,"aria-label":h,hasArrow:m,bg:v,portalProps:b,background:y,backgroundColor:x,bgColor:w,motionProps:k,..._}=s,j=(r=(n=y??x)!=null?n:v)!=null?r:w;if(j){o.bg=j;const T=z7(i,"colors",j);o[jn.arrowBg.var]=T}const I=EW({..._,direction:i.direction}),E=typeof l=="string"||p;let M;if(E)M=a.jsx(_e.span,{display:"inline-block",tabIndex:0,...I.getTriggerProps(),children:l});else{const T=d.Children.only(l);M=d.cloneElement(T,I.getTriggerProps(T.props,T.ref))}const D=!!h,R=I.getTooltipProps({},t),A=D?OW(R,["role","id"]):R,O=DW(R,["role","id"]);return u?a.jsxs(a.Fragment,{children:[M,a.jsx(nr,{children:I.isOpen&&a.jsx(_d,{...b,children:a.jsx(_e.div,{...I.getTooltipPositionerProps(),__css:{zIndex:o.zIndex,pointerEvents:"none"},children:a.jsxs(RW,{variants:IW,initial:"exit",animate:"enter",exit:"exit",...k,...A,__css:o,children:[u,D&&a.jsx(_e.span,{srOnly:!0,...O,children:h}),m&&a.jsx(_e.div,{"data-popper-arrow":!0,className:"chakra-tooltip__arrow-wrapper",children:a.jsx(_e.div,{"data-popper-arrow-inner":!0,className:"chakra-tooltip__arrow",__css:{bg:o.bg}})})]})})})})]}):a.jsx(a.Fragment,{children:l})});Rt.displayName="Tooltip";const xo=e=>e.system,AW=e=>e.system.toastQueue,LP=ie(xo,e=>e.language,we),En=ie(e=>e,e=>e.system.isProcessing||!e.system.isConnected),NW=ie(xo,e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=e;return{consoleLogLevel:t,shouldLogToConsole:n}},{memoizeOptions:{resultEqualityCheck:_t}}),zP=e=>{const{consoleLogLevel:t,shouldLogToConsole:n}=L(NW);return d.useEffect(()=>{n?(localStorage.setItem("ROARR_LOG","true"),localStorage.setItem("ROARR_FILTER",`context.logLevel:>=${F7[t]}`)):localStorage.setItem("ROARR_LOG","false"),LC.ROARR.write=B7.createLogWriter()},[t,n]),d.useEffect(()=>{const o={...H7};W7.set(LC.Roarr.child(o))},[]),d.useMemo(()=>Yi(e),[e])},TW=()=>{const e=ee(),t=L(AW),n=A5();return d.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(V7())},[e,n,t]),null},tl=()=>{const e=ee();return d.useCallback(n=>e(Tt(Ft(n))),[e])},$W=d.memo(TW);var LW=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 Fd(e,t){var n=zW(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 zW(e){var t=e.name,n=t&&t.lastIndexOf(".")!==-1;if(n&&!e.type){var r=t.split(".").pop().toLowerCase(),o=LW.get(r);o&&Object.defineProperty(e,"type",{value:o,writable:!1,configurable:!1,enumerable:!0})}return e}var FW=[".DS_Store","Thumbs.db"];function BW(e){return Nc(this,void 0,void 0,function(){return Tc(this,function(t){return lh(e)&&HW(e.dataTransfer)?[2,GW(e.dataTransfer,e.type)]:WW(e)?[2,VW(e)]:Array.isArray(e)&&e.every(function(n){return"getFile"in n&&typeof n.getFile=="function"})?[2,UW(e)]:[2,[]]})})}function HW(e){return lh(e)}function WW(e){return lh(e)&&lh(e.target)}function lh(e){return typeof e=="object"&&e!==null}function VW(e){return z1(e.target.files).map(function(t){return Fd(t)})}function UW(e){return Nc(this,void 0,void 0,function(){var t;return Tc(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 Fd(r)})]}})})}function GW(e,t){return Nc(this,void 0,void 0,function(){var n,r;return Tc(this,function(o){switch(o.label){case 0:return e.items?(n=z1(e.items).filter(function(s){return s.kind==="file"}),t!=="drop"?[2,n]:[4,Promise.all(n.map(KW))]):[3,2];case 1:return r=o.sent(),[2,xS(FP(r))];case 2:return[2,xS(z1(e.files).map(function(s){return Fd(s)}))]}})})}function xS(e){return e.filter(function(t){return FW.indexOf(t.name)===-1})}function z1(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,kS(n)];if(e.sizen)return[!1,kS(n)]}return[!0,null]}function xi(e){return e!=null}function cV(e){var t=e.files,n=e.accept,r=e.minSize,o=e.maxSize,s=e.multiple,i=e.maxFiles,l=e.validator;return!s&&t.length>1||s&&i>=1&&t.length>i?!1:t.every(function(u){var p=VP(u,n),h=sd(p,1),m=h[0],v=UP(u,r,o),b=sd(v,1),y=b[0],x=l?l(u):null;return m&&y&&!x})}function ch(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function rp(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 jS(e){e.preventDefault()}function uV(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function dV(e){return e.indexOf("Edge/")!==-1}function fV(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return uV(e)||dV(e)}function ss(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),i=1;ie.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 EV(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,s;for(s=0;s=0)&&(n[o]=e[o]);return n}var Wx=d.forwardRef(function(e,t){var n=e.children,r=uh(e,bV),o=Vx(r),s=o.open,i=uh(o,xV);return d.useImperativeHandle(t,function(){return{open:s}},[s]),H.createElement(d.Fragment,null,n(un(un({},i),{},{open:s})))});Wx.displayName="Dropzone";var XP={disabled:!1,getFilesFromEvent:BW,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};Wx.defaultProps=XP;Wx.propTypes={children:Ht.func,accept:Ht.objectOf(Ht.arrayOf(Ht.string)),multiple:Ht.bool,preventDropOnDocument:Ht.bool,noClick:Ht.bool,noKeyboard:Ht.bool,noDrag:Ht.bool,noDragEventsBubbling:Ht.bool,minSize:Ht.number,maxSize:Ht.number,maxFiles:Ht.number,disabled:Ht.bool,getFilesFromEvent:Ht.func,onFileDialogCancel:Ht.func,onFileDialogOpen:Ht.func,useFsAccessApi:Ht.bool,autoFocus:Ht.bool,onDragEnter:Ht.func,onDragLeave:Ht.func,onDragOver:Ht.func,onDrop:Ht.func,onDropAccepted:Ht.func,onDropRejected:Ht.func,onError:Ht.func,validator:Ht.func};var W1={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function Vx(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=un(un({},XP),e),n=t.accept,r=t.disabled,o=t.getFilesFromEvent,s=t.maxSize,i=t.minSize,l=t.multiple,u=t.maxFiles,p=t.onDragEnter,h=t.onDragLeave,m=t.onDragOver,v=t.onDrop,b=t.onDropAccepted,y=t.onDropRejected,x=t.onFileDialogCancel,w=t.onFileDialogOpen,k=t.useFsAccessApi,_=t.autoFocus,j=t.preventDropOnDocument,I=t.noClick,E=t.noKeyboard,M=t.noDrag,D=t.noDragEventsBubbling,R=t.onError,A=t.validator,O=d.useMemo(function(){return mV(n)},[n]),T=d.useMemo(function(){return hV(n)},[n]),K=d.useMemo(function(){return typeof w=="function"?w:IS},[w]),F=d.useMemo(function(){return typeof x=="function"?x:IS},[x]),V=d.useRef(null),X=d.useRef(null),W=d.useReducer(MV,W1),z=vv(W,2),Y=z[0],B=z[1],q=Y.isFocused,re=Y.isFileDialogActive,Q=d.useRef(typeof window<"u"&&window.isSecureContext&&k&&pV()),le=function(){!Q.current&&re&&setTimeout(function(){if(X.current){var Re=X.current.files;Re.length||(B({type:"closeDialog"}),F())}},300)};d.useEffect(function(){return window.addEventListener("focus",le,!1),function(){window.removeEventListener("focus",le,!1)}},[X,re,F,Q]);var se=d.useRef([]),U=function(Re){V.current&&V.current.contains(Re.target)||(Re.preventDefault(),se.current=[])};d.useEffect(function(){return j&&(document.addEventListener("dragover",jS,!1),document.addEventListener("drop",U,!1)),function(){j&&(document.removeEventListener("dragover",jS),document.removeEventListener("drop",U))}},[V,j]),d.useEffect(function(){return!r&&_&&V.current&&V.current.focus(),function(){}},[V,_,r]);var G=d.useCallback(function(be){R?R(be):console.error(be)},[R]),te=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be),se.current=[].concat(wV(se.current),[be.target]),rp(be)&&Promise.resolve(o(be)).then(function(Re){if(!(ch(be)&&!D)){var st=Re.length,mt=st>0&&cV({files:Re,accept:O,minSize:i,maxSize:s,multiple:l,maxFiles:u,validator:A}),ve=st>0&&!mt;B({isDragAccept:mt,isDragReject:ve,isDragActive:!0,type:"setDraggedFiles"}),p&&p(be)}}).catch(function(Re){return G(Re)})},[o,p,G,D,O,i,s,l,u,A]),ae=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be);var Re=rp(be);if(Re&&be.dataTransfer)try{be.dataTransfer.dropEffect="copy"}catch{}return Re&&m&&m(be),!1},[m,D]),oe=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be);var Re=se.current.filter(function(mt){return V.current&&V.current.contains(mt)}),st=Re.indexOf(be.target);st!==-1&&Re.splice(st,1),se.current=Re,!(Re.length>0)&&(B({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),rp(be)&&h&&h(be))},[V,h,D]),pe=d.useCallback(function(be,Re){var st=[],mt=[];be.forEach(function(ve){var Qe=VP(ve,O),ot=vv(Qe,2),lt=ot[0],Me=ot[1],$e=UP(ve,i,s),At=vv($e,2),ke=At[0],ze=At[1],Le=A?A(ve):null;if(lt&&ke&&!Le)st.push(ve);else{var Ve=[Me,ze];Le&&(Ve=Ve.concat(Le)),mt.push({file:ve,errors:Ve.filter(function(ct){return ct})})}}),(!l&&st.length>1||l&&u>=1&&st.length>u)&&(st.forEach(function(ve){mt.push({file:ve,errors:[lV]})}),st.splice(0)),B({acceptedFiles:st,fileRejections:mt,type:"setFiles"}),v&&v(st,mt,Re),mt.length>0&&y&&y(mt,Re),st.length>0&&b&&b(st,Re)},[B,l,O,i,s,u,v,b,y,A]),ue=d.useCallback(function(be){be.preventDefault(),be.persist(),Ue(be),se.current=[],rp(be)&&Promise.resolve(o(be)).then(function(Re){ch(be)&&!D||pe(Re,be)}).catch(function(Re){return G(Re)}),B({type:"reset"})},[o,pe,G,D]),me=d.useCallback(function(){if(Q.current){B({type:"openDialog"}),K();var be={multiple:l,types:T};window.showOpenFilePicker(be).then(function(Re){return o(Re)}).then(function(Re){pe(Re,null),B({type:"closeDialog"})}).catch(function(Re){gV(Re)?(F(Re),B({type:"closeDialog"})):vV(Re)?(Q.current=!1,X.current?(X.current.value=null,X.current.click()):G(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."))):G(Re)});return}X.current&&(B({type:"openDialog"}),K(),X.current.value=null,X.current.click())},[B,K,F,k,pe,G,T,l]),Ce=d.useCallback(function(be){!V.current||!V.current.isEqualNode(be.target)||(be.key===" "||be.key==="Enter"||be.keyCode===32||be.keyCode===13)&&(be.preventDefault(),me())},[V,me]),ge=d.useCallback(function(){B({type:"focus"})},[]),fe=d.useCallback(function(){B({type:"blur"})},[]),De=d.useCallback(function(){I||(fV()?setTimeout(me,0):me())},[I,me]),je=function(Re){return r?null:Re},Be=function(Re){return E?null:je(Re)},rt=function(Re){return M?null:je(Re)},Ue=function(Re){D&&Re.stopPropagation()},wt=d.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=be.refKey,st=Re===void 0?"ref":Re,mt=be.role,ve=be.onKeyDown,Qe=be.onFocus,ot=be.onBlur,lt=be.onClick,Me=be.onDragEnter,$e=be.onDragOver,At=be.onDragLeave,ke=be.onDrop,ze=uh(be,yV);return un(un(H1({onKeyDown:Be(ss(ve,Ce)),onFocus:Be(ss(Qe,ge)),onBlur:Be(ss(ot,fe)),onClick:je(ss(lt,De)),onDragEnter:rt(ss(Me,te)),onDragOver:rt(ss($e,ae)),onDragLeave:rt(ss(At,oe)),onDrop:rt(ss(ke,ue)),role:typeof mt=="string"&&mt!==""?mt:"presentation"},st,V),!r&&!E?{tabIndex:0}:{}),ze)}},[V,Ce,ge,fe,De,te,ae,oe,ue,E,M,r]),Ye=d.useCallback(function(be){be.stopPropagation()},[]),tt=d.useMemo(function(){return function(){var be=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Re=be.refKey,st=Re===void 0?"ref":Re,mt=be.onChange,ve=be.onClick,Qe=uh(be,CV),ot=H1({accept:O,multiple:l,type:"file",style:{display:"none"},onChange:je(ss(mt,ue)),onClick:je(ss(ve,Ye)),tabIndex:-1},st,X);return un(un({},ot),Qe)}},[X,n,l,ue,r]);return un(un({},Y),{},{isFocused:q&&!r,getRootProps:wt,getInputProps:tt,rootRef:V,inputRef:X,open:je(me)})}function MV(e,t){switch(t.type){case"focus":return un(un({},e),{},{isFocused:!0});case"blur":return un(un({},e),{},{isFocused:!1});case"openDialog":return un(un({},W1),{},{isFileDialogActive:!0});case"closeDialog":return un(un({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return un(un({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return un(un({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return un({},W1);default:return e}}function IS(){}function V1(){return V1=Object.assign?Object.assign.bind():function(e){for(var t=1;t'),!0):t?e.some(function(n){return t.includes(n)})||e.includes("*"):!0}var $V=function(t,n,r){r===void 0&&(r=!1);var o=n.alt,s=n.meta,i=n.mod,l=n.shift,u=n.ctrl,p=n.keys,h=t.key,m=t.code,v=t.ctrlKey,b=t.metaKey,y=t.shiftKey,x=t.altKey,w=La(m),k=h.toLowerCase();if(!r){if(o===!x&&k!=="alt"||l===!y&&k!=="shift")return!1;if(i){if(!b&&!v)return!1}else if(s===!b&&k!=="meta"&&k!=="os"||u===!v&&k!=="ctrl"&&k!=="control")return!1}return p&&p.length===1&&(p.includes(k)||p.includes(w))?!0:p?zp(p):!p},LV=d.createContext(void 0),zV=function(){return d.useContext(LV)};function eI(e,t){return e&&t&&typeof e=="object"&&typeof t=="object"?Object.keys(e).length===Object.keys(t).length&&Object.keys(e).reduce(function(n,r){return n&&eI(e[r],t[r])},!0):e===t}var FV=d.createContext({hotkeys:[],enabledScopes:[],toggleScope:function(){},enableScope:function(){},disableScope:function(){}}),BV=function(){return d.useContext(FV)};function HV(e){var t=d.useRef(void 0);return eI(t.current,e)||(t.current=e),t.current}var ES=function(t){t.stopPropagation(),t.preventDefault(),t.stopImmediatePropagation()},WV=typeof window<"u"?d.useLayoutEffect:d.useEffect;function Ze(e,t,n,r){var o=d.useRef(null),s=d.useRef(!1),i=n instanceof Array?r instanceof Array?void 0:r:n,l=Ux(e)?e.join(i==null?void 0:i.splitKey):e,u=n instanceof Array?n:r instanceof Array?r:void 0,p=d.useCallback(t,u??[]),h=d.useRef(p);u?h.current=p:h.current=t;var m=HV(i),v=BV(),b=v.enabledScopes,y=zV();return WV(function(){if(!((m==null?void 0:m.enabled)===!1||!TV(b,m==null?void 0:m.scopes))){var x=function(I,E){var M;if(E===void 0&&(E=!1),!(NV(I)&&!JP(I,m==null?void 0:m.enableOnFormTags))&&!(m!=null&&m.ignoreEventWhen!=null&&m.ignoreEventWhen(I))){if(o.current!==null&&document.activeElement!==o.current&&!o.current.contains(document.activeElement)){ES(I);return}(M=I.target)!=null&&M.isContentEditable&&!(m!=null&&m.enableOnContentEditable)||bv(l,m==null?void 0:m.splitKey).forEach(function(D){var R,A=xv(D,m==null?void 0:m.combinationKey);if($V(I,A,m==null?void 0:m.ignoreModifiers)||(R=A.keys)!=null&&R.includes("*")){if(E&&s.current)return;if(RV(I,A,m==null?void 0:m.preventDefault),!AV(I,A,m==null?void 0:m.enabled)){ES(I);return}h.current(I,A),E||(s.current=!0)}})}},w=function(I){I.key!==void 0&&(QP(La(I.code)),((m==null?void 0:m.keydown)===void 0&&(m==null?void 0:m.keyup)!==!0||m!=null&&m.keydown)&&x(I))},k=function(I){I.key!==void 0&&(ZP(La(I.code)),s.current=!1,m!=null&&m.keyup&&x(I,!0))},_=o.current||(i==null?void 0:i.document)||document;return _.addEventListener("keyup",k),_.addEventListener("keydown",w),y&&bv(l,m==null?void 0:m.splitKey).forEach(function(j){return y.addHotkey(xv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))}),function(){_.removeEventListener("keyup",k),_.removeEventListener("keydown",w),y&&bv(l,m==null?void 0:m.splitKey).forEach(function(j){return y.removeHotkey(xv(j,m==null?void 0:m.combinationKey,m==null?void 0:m.description))})}}},[l,m,b]),o}const VV=e=>{const{isDragAccept:t,isDragReject:n,setIsHandlingUpload:r}=e;return Ze("esc",()=>{r(!1)}),a.jsxs(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"100vw",height:"100vh",zIndex:999,backdropFilter:"blur(20px)"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:"base.700",_dark:{bg:"base.900"},opacity:.7,alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,width:"full",height:"full",alignItems:"center",justifyContent:"center",p:4},children:a.jsx($,{sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",flexDir:"column",gap:4,borderWidth:3,borderRadius:"xl",borderStyle:"dashed",color:"base.100",borderColor:"base.100",_dark:{borderColor:"base.200"}},children:t?a.jsx(io,{size:"lg",children:"Drop to Upload"}):a.jsxs(a.Fragment,{children:[a.jsx(io,{size:"lg",children:"Invalid Upload"}),a.jsx(io,{size:"md",children:"Must be single JPEG or PNG image"})]})})})]})},UV=d.memo(VV),GV=ie([xe,wn],({gallery:e},t)=>{let n={type:"TOAST"};t==="unifiedCanvas"&&(n={type:"SET_CANVAS_INITIAL_IMAGE"}),t==="img2img"&&(n={type:"SET_INITIAL_IMAGE"});const{autoAddBoardId:r}=e;return{autoAddBoardId:r,postUploadAction:n}},we),KV=e=>{const{children:t}=e,{autoAddBoardId:n,postUploadAction:r}=L(GV),o=L(En),s=tl(),{t:i}=Z(),[l,u]=d.useState(!1),[p]=$j(),h=d.useCallback(j=>{u(!0),s({title:i("toast.uploadFailed"),description:j.errors.map(I=>I.message).join(` +`),status:"error"})},[i,s]),m=d.useCallback(async j=>{p({file:j,image_category:"user",is_intermediate:!1,postUploadAction:r,board_id:n==="none"?void 0:n})},[n,r,p]),v=d.useCallback((j,I)=>{if(I.length>1){s({title:i("toast.uploadFailed"),description:i("toast.uploadFailedInvalidUploadDesc"),status:"error"});return}I.forEach(E=>{h(E)}),j.forEach(E=>{m(E)})},[i,s,m,h]),{getRootProps:b,getInputProps:y,isDragAccept:x,isDragReject:w,isDragActive:k,inputRef:_}=Vx({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:v,onDragOver:()=>u(!0),disabled:o,multiple:!1});return d.useEffect(()=>{const j=async I=>{var E,M;_.current&&(E=I.clipboardData)!=null&&E.files&&(_.current.files=I.clipboardData.files,(M=_.current)==null||M.dispatchEvent(new Event("change",{bubbles:!0})))};return document.addEventListener("paste",j),()=>{document.removeEventListener("paste",j)}},[_]),a.jsxs(Ie,{...b({style:{}}),onKeyDown:j=>{j.key},children:[a.jsx("input",{...y()}),t,a.jsx(nr,{children:k&&l&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(UV,{isDragAccept:x,isDragReject:w,setIsHandlingUpload:u})},"image-upload-overlay")})]})},qV=d.memo(KV),XV=Pe((e,t)=>{const{children:n,tooltip:r="",tooltipProps:{placement:o="top",hasArrow:s=!0,...i}={},isChecked:l,...u}=e;return a.jsx(Rt,{label:r,placement:o,hasArrow:s,...i,children:a.jsx(bc,{ref:t,colorScheme:l?"accent":"base",...u,children:n})})}),it=d.memo(XV);function YV(e){const t=d.createContext(null);return[({children:o,value:s})=>H.createElement(t.Provider,{value:s},o),()=>{const o=d.useContext(t);if(o===null)throw new Error(e);return o}]}function tI(e){return Array.isArray(e)?e:[e]}const QV=()=>{};function ZV(e,t={active:!0}){return typeof e!="function"||!t.active?t.onKeyDown||QV:n=>{var r;n.key==="Escape"&&(e(n),(r=t.onTrigger)==null||r.call(t))}}function nI({data:e}){const t=[],n=[],r=e.reduce((o,s,i)=>(s.group?o[s.group]?o[s.group].push(i):o[s.group]=[i]:n.push(i),o),{});return Object.keys(r).forEach(o=>{t.push(...r[o].map(s=>e[s]))}),t.push(...n.map(o=>e[o])),t}function rI(e){return Array.isArray(e)||e===null?!1:typeof e=="object"?e.type!==H.Fragment:!1}function oI(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;tr===t[o]).indexOf(!1)>=0)&&(n.current={v:e(),prevDeps:[...t]}),n.current.v}const tU=U7({key:"mantine",prepend:!0});function nU(){return j5()||tU}var rU=Object.defineProperty,MS=Object.getOwnPropertySymbols,oU=Object.prototype.hasOwnProperty,sU=Object.prototype.propertyIsEnumerable,OS=(e,t,n)=>t in e?rU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,aU=(e,t)=>{for(var n in t||(t={}))oU.call(t,n)&&OS(e,n,t[n]);if(MS)for(var n of MS(t))sU.call(t,n)&&OS(e,n,t[n]);return e};const yv="ref";function iU(e){let t;if(e.length!==1)return{args:e,ref:t};const[n]=e;if(!(n instanceof Object))return{args:e,ref:t};if(!(yv in n))return{args:e,ref:t};t=n[yv];const r=aU({},n);return delete r[yv],{args:[r],ref:t}}const{cssFactory:lU}=(()=>{function e(n,r,o){const s=[],i=q7(n,s,o);return s.length<2?o:i+r(s)}function t(n){const{cache:r}=n,o=(...i)=>{const{ref:l,args:u}=iU(i),p=G7(u,r.registered);return K7(r,p,!1),`${r.key}-${p.name}${l===void 0?"":` ${l}`}`};return{css:o,cx:(...i)=>e(r.registered,o,sI(i))}}return{cssFactory:t}})();function aI(){const e=nU();return eU(()=>lU({cache:e}),[e])}function cU({cx:e,classes:t,context:n,classNames:r,name:o,cache:s}){const i=n.reduce((l,u)=>(Object.keys(u.classNames).forEach(p=>{typeof l[p]!="string"?l[p]=`${u.classNames[p]}`:l[p]=`${l[p]} ${u.classNames[p]}`}),l),{});return Object.keys(t).reduce((l,u)=>(l[u]=e(t[u],i[u],r!=null&&r[u],Array.isArray(o)?o.filter(Boolean).map(p=>`${(s==null?void 0:s.key)||"mantine"}-${p}-${u}`).join(" "):o?`${(s==null?void 0:s.key)||"mantine"}-${o}-${u}`:null),l),{})}var uU=Object.defineProperty,DS=Object.getOwnPropertySymbols,dU=Object.prototype.hasOwnProperty,fU=Object.prototype.propertyIsEnumerable,RS=(e,t,n)=>t in e?uU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cv=(e,t)=>{for(var n in t||(t={}))dU.call(t,n)&&RS(e,n,t[n]);if(DS)for(var n of DS(t))fU.call(t,n)&&RS(e,n,t[n]);return e};function U1(e,t){return t&&Object.keys(t).forEach(n=>{e[n]?e[n]=Cv(Cv({},e[n]),t[n]):e[n]=Cv({},t[n])}),e}function AS(e,t,n,r){const o=s=>typeof s=="function"?s(t,n||{},r):s||{};return Array.isArray(e)?e.map(s=>o(s.styles)).reduce((s,i)=>U1(s,i),{}):o(e)}function pU({ctx:e,theme:t,params:n,variant:r,size:o}){return e.reduce((s,i)=>(i.variants&&r in i.variants&&U1(s,i.variants[r](t,n,{variant:r,size:o})),i.sizes&&o in i.sizes&&U1(s,i.sizes[o](t,n,{variant:r,size:o})),s),{})}function or(e){const t=typeof e=="function"?e:()=>e;function n(r,o){const s=ua(),i=jN(o==null?void 0:o.name),l=j5(),u={variant:o==null?void 0:o.variant,size:o==null?void 0:o.size},{css:p,cx:h}=aI(),m=t(s,r,u),v=AS(o==null?void 0:o.styles,s,r,u),b=AS(i,s,r,u),y=pU({ctx:i,theme:s,params:r,variant:o==null?void 0:o.variant,size:o==null?void 0:o.size}),x=Object.fromEntries(Object.keys(m).map(w=>{const k=h({[p(m[w])]:!(o!=null&&o.unstyled)},p(y[w]),p(b[w]),p(v[w]));return[w,k]}));return{classes:cU({cx:h,classes:x,context:i,classNames:o==null?void 0:o.classNames,name:o==null?void 0:o.name,cache:l}),cx:h,theme:s}}return n}function NS(e){return`___ref-${e||""}`}var hU=Object.defineProperty,mU=Object.defineProperties,gU=Object.getOwnPropertyDescriptors,TS=Object.getOwnPropertySymbols,vU=Object.prototype.hasOwnProperty,bU=Object.prototype.propertyIsEnumerable,$S=(e,t,n)=>t in e?hU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wu=(e,t)=>{for(var n in t||(t={}))vU.call(t,n)&&$S(e,n,t[n]);if(TS)for(var n of TS(t))bU.call(t,n)&&$S(e,n,t[n]);return e},Su=(e,t)=>mU(e,gU(t));const ku={in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:`scale(.9) translateY(${Oe(10)})`},transitionProperty:"transform, opacity"},op={fade:{in:{opacity:1},out:{opacity:0},transitionProperty:"opacity"},scale:{in:{opacity:1,transform:"scale(1)"},out:{opacity:0,transform:"scale(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-y":{in:{opacity:1,transform:"scaleY(1)"},out:{opacity:0,transform:"scaleY(0)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"scale-x":{in:{opacity:1,transform:"scaleX(1)"},out:{opacity:0,transform:"scaleX(0)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"skew-up":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(-${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"skew-down":{in:{opacity:1,transform:"translateY(0) skew(0deg, 0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) skew(-10deg, -5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-left":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(-5deg)`},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"rotate-right":{in:{opacity:1,transform:"translateY(0) rotate(0deg)"},out:{opacity:0,transform:`translateY(${Oe(20)}) rotate(5deg)`},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-down":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(-100%)"},common:{transformOrigin:"top"},transitionProperty:"transform, opacity"},"slide-up":{in:{opacity:1,transform:"translateY(0)"},out:{opacity:0,transform:"translateY(100%)"},common:{transformOrigin:"bottom"},transitionProperty:"transform, opacity"},"slide-left":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(100%)"},common:{transformOrigin:"left"},transitionProperty:"transform, opacity"},"slide-right":{in:{opacity:1,transform:"translateX(0)"},out:{opacity:0,transform:"translateX(-100%)"},common:{transformOrigin:"right"},transitionProperty:"transform, opacity"},pop:Su(wu({},ku),{common:{transformOrigin:"center center"}}),"pop-bottom-left":Su(wu({},ku),{common:{transformOrigin:"bottom left"}}),"pop-bottom-right":Su(wu({},ku),{common:{transformOrigin:"bottom right"}}),"pop-top-left":Su(wu({},ku),{common:{transformOrigin:"top left"}}),"pop-top-right":Su(wu({},ku),{common:{transformOrigin:"top right"}})},LS=["mousedown","touchstart"];function xU(e,t,n){const r=d.useRef();return d.useEffect(()=>{const o=s=>{const{target:i}=s??{};if(Array.isArray(n)){const l=(i==null?void 0:i.hasAttribute("data-ignore-outside-clicks"))||!document.body.contains(i)&&i.tagName!=="HTML";n.every(p=>!!p&&!s.composedPath().includes(p))&&!l&&e()}else r.current&&!r.current.contains(i)&&e()};return(t||LS).forEach(s=>document.addEventListener(s,o)),()=>{(t||LS).forEach(s=>document.removeEventListener(s,o))}},[r,e,n]),r}function yU(e,t){try{return e.addEventListener("change",t),()=>e.removeEventListener("change",t)}catch{return e.addListener(t),()=>e.removeListener(t)}}function CU(e,t){return typeof t=="boolean"?t:typeof window<"u"&&"matchMedia"in window?window.matchMedia(e).matches:!1}function wU(e,t,{getInitialValueInEffect:n}={getInitialValueInEffect:!0}){const[r,o]=d.useState(n?t:CU(e,t)),s=d.useRef();return d.useEffect(()=>{if("matchMedia"in window)return s.current=window.matchMedia(e),o(s.current.matches),yU(s.current,i=>o(i.matches))},[e]),r}const iI=typeof document<"u"?d.useLayoutEffect:d.useEffect;function $o(e,t){const n=d.useRef(!1);d.useEffect(()=>()=>{n.current=!1},[]),d.useEffect(()=>{if(n.current)return e();n.current=!0},t)}function SU({opened:e,shouldReturnFocus:t=!0}){const n=d.useRef(),r=()=>{var o;n.current&&"focus"in n.current&&typeof n.current.focus=="function"&&((o=n.current)==null||o.focus({preventScroll:!0}))};return $o(()=>{let o=-1;const s=i=>{i.key==="Tab"&&window.clearTimeout(o)};return document.addEventListener("keydown",s),e?n.current=document.activeElement:t&&(o=window.setTimeout(r,10)),()=>{window.clearTimeout(o),document.removeEventListener("keydown",s)}},[e,t]),r}const kU=/input|select|textarea|button|object/,lI="a, input, select, textarea, button, object, [tabindex]";function _U(e){return e.style.display==="none"}function jU(e){if(e.getAttribute("aria-hidden")||e.getAttribute("hidden")||e.getAttribute("type")==="hidden")return!1;let n=e;for(;n&&!(n===document.body||n.nodeType===11);){if(_U(n))return!1;n=n.parentNode}return!0}function cI(e){let t=e.getAttribute("tabindex");return t===null&&(t=void 0),parseInt(t,10)}function G1(e){const t=e.nodeName.toLowerCase(),n=!Number.isNaN(cI(e));return(kU.test(t)&&!e.disabled||e instanceof HTMLAnchorElement&&e.href||n)&&jU(e)}function uI(e){const t=cI(e);return(Number.isNaN(t)||t>=0)&&G1(e)}function PU(e){return Array.from(e.querySelectorAll(lI)).filter(uI)}function IU(e,t){const n=PU(e);if(!n.length){t.preventDefault();return}const r=n[t.shiftKey?0:n.length-1],o=e.getRootNode();if(!(r===o.activeElement||e===o.activeElement))return;t.preventDefault();const i=n[t.shiftKey?n.length-1:0];i&&i.focus()}function Kx(){return`mantine-${Math.random().toString(36).slice(2,11)}`}function EU(e,t="body > :not(script)"){const n=Kx(),r=Array.from(document.querySelectorAll(t)).map(o=>{var s;if((s=o==null?void 0:o.shadowRoot)!=null&&s.contains(e)||o.contains(e))return;const i=o.getAttribute("aria-hidden"),l=o.getAttribute("data-hidden"),u=o.getAttribute("data-focus-id");return o.setAttribute("data-focus-id",n),i===null||i==="false"?o.setAttribute("aria-hidden","true"):!l&&!u&&o.setAttribute("data-hidden",i),{node:o,ariaHidden:l||null}});return()=>{r.forEach(o=>{!o||n!==o.node.getAttribute("data-focus-id")||(o.ariaHidden===null?o.node.removeAttribute("aria-hidden"):o.node.setAttribute("aria-hidden",o.ariaHidden),o.node.removeAttribute("data-focus-id"),o.node.removeAttribute("data-hidden"))})}}function MU(e=!0){const t=d.useRef(),n=d.useRef(null),r=s=>{let i=s.querySelector("[data-autofocus]");if(!i){const l=Array.from(s.querySelectorAll(lI));i=l.find(uI)||l.find(G1)||null,!i&&G1(s)&&(i=s)}i&&i.focus({preventScroll:!0})},o=d.useCallback(s=>{if(e){if(s===null){n.current&&(n.current(),n.current=null);return}n.current=EU(s),t.current!==s&&(s?(setTimeout(()=>{s.getRootNode()&&r(s)}),t.current=s):t.current=null)}},[e]);return d.useEffect(()=>{if(!e)return;t.current&&setTimeout(()=>r(t.current));const s=i=>{i.key==="Tab"&&t.current&&IU(t.current,i)};return document.addEventListener("keydown",s),()=>{document.removeEventListener("keydown",s),n.current&&n.current()}},[e]),o}const OU=H["useId".toString()]||(()=>{});function DU(){const e=OU();return e?`mantine-${e.replace(/:/g,"")}`:""}function qx(e){const t=DU(),[n,r]=d.useState(t);return iI(()=>{r(Kx())},[]),typeof e=="string"?e:typeof window>"u"?t:n}function zS(e,t,n){d.useEffect(()=>(window.addEventListener(e,t,n),()=>window.removeEventListener(e,t,n)),[e,t])}function dI(e,t){typeof e=="function"?e(t):typeof e=="object"&&e!==null&&"current"in e&&(e.current=t)}function RU(...e){return t=>{e.forEach(n=>dI(n,t))}}function Bd(...e){return d.useCallback(RU(...e),e)}function ad({value:e,defaultValue:t,finalValue:n,onChange:r=()=>{}}){const[o,s]=d.useState(t!==void 0?t:n),i=l=>{s(l),r==null||r(l)};return e!==void 0?[e,r,!0]:[o,i,!1]}function fI(e,t){return wU("(prefers-reduced-motion: reduce)",e,t)}const AU=e=>e<.5?2*e*e:-1+(4-2*e)*e,NU=({axis:e,target:t,parent:n,alignment:r,offset:o,isList:s})=>{if(!t||!n&&typeof document>"u")return 0;const i=!!n,u=(n||document.body).getBoundingClientRect(),p=t.getBoundingClientRect(),h=m=>p[m]-u[m];if(e==="y"){const m=h("top");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.height*(s?0:1)||!s?b:0}const v=i?u.height:window.innerHeight;if(r==="end"){const b=m+o-v+p.height;return b>=-p.height*(s?0:1)||!s?b:0}return r==="center"?m-v/2+p.height/2:0}if(e==="x"){const m=h("left");if(m===0)return 0;if(r==="start"){const b=m-o;return b<=p.width||!s?b:0}const v=i?u.width:window.innerWidth;if(r==="end"){const b=m+o-v+p.width;return b>=-p.width||!s?b:0}return r==="center"?m-v/2+p.width/2:0}return 0},TU=({axis:e,parent:t})=>{if(!t&&typeof document>"u")return 0;const n=e==="y"?"scrollTop":"scrollLeft";if(t)return t[n];const{body:r,documentElement:o}=document;return r[n]+o[n]},$U=({axis:e,parent:t,distance:n})=>{if(!t&&typeof document>"u")return;const r=e==="y"?"scrollTop":"scrollLeft";if(t)t[r]=n;else{const{body:o,documentElement:s}=document;o[r]=n,s[r]=n}};function pI({duration:e=1250,axis:t="y",onScrollFinish:n,easing:r=AU,offset:o=0,cancelable:s=!0,isList:i=!1}={}){const l=d.useRef(0),u=d.useRef(0),p=d.useRef(!1),h=d.useRef(null),m=d.useRef(null),v=fI(),b=()=>{l.current&&cancelAnimationFrame(l.current)},y=d.useCallback(({alignment:w="start"}={})=>{var k;p.current=!1,l.current&&b();const _=(k=TU({parent:h.current,axis:t}))!=null?k:0,j=NU({parent:h.current,target:m.current,axis:t,alignment:w,offset:o,isList:i})-(h.current?0:_);function I(){u.current===0&&(u.current=performance.now());const M=performance.now()-u.current,D=v||e===0?1:M/e,R=_+j*r(D);$U({parent:h.current,axis:t,distance:R}),!p.current&&D<1?l.current=requestAnimationFrame(I):(typeof n=="function"&&n(),u.current=0,l.current=0,b())}I()},[t,e,r,i,o,n,v]),x=()=>{s&&(p.current=!0)};return zS("wheel",x,{passive:!0}),zS("touchmove",x,{passive:!0}),d.useEffect(()=>b,[]),{scrollableRef:h,targetRef:m,scrollIntoView:y,cancel:b}}var FS=Object.getOwnPropertySymbols,LU=Object.prototype.hasOwnProperty,zU=Object.prototype.propertyIsEnumerable,FU=(e,t)=>{var n={};for(var r in e)LU.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&FS)for(var r of FS(e))t.indexOf(r)<0&&zU.call(e,r)&&(n[r]=e[r]);return n};function Xm(e){const t=e,{m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:u,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:w,c:k,opacity:_,ff:j,fz:I,fw:E,lts:M,ta:D,lh:R,fs:A,tt:O,td:T,w:K,miw:F,maw:V,h:X,mih:W,mah:z,bgsz:Y,bgp:B,bgr:q,bga:re,pos:Q,top:le,left:se,bottom:U,right:G,inset:te,display:ae}=t,oe=FU(t,["m","mx","my","mt","mb","ml","mr","p","px","py","pt","pb","pl","pr","bg","c","opacity","ff","fz","fw","lts","ta","lh","fs","tt","td","w","miw","maw","h","mih","mah","bgsz","bgp","bgr","bga","pos","top","left","bottom","right","inset","display"]);return{systemStyles:PN({m:n,mx:r,my:o,mt:s,mb:i,ml:l,mr:u,p,px:h,py:m,pt:v,pb:b,pl:y,pr:x,bg:w,c:k,opacity:_,ff:j,fz:I,fw:E,lts:M,ta:D,lh:R,fs:A,tt:O,td:T,w:K,miw:F,maw:V,h:X,mih:W,mah:z,bgsz:Y,bgp:B,bgr:q,bga:re,pos:Q,top:le,left:se,bottom:U,right:G,inset:te,display:ae}),rest:oe}}function BU(e,t){const n=Object.keys(e).filter(r=>r!=="base").sort((r,o)=>jw(ut({size:r,sizes:t.breakpoints}))-jw(ut({size:o,sizes:t.breakpoints})));return"base"in e?["base",...n]:n}function HU({value:e,theme:t,getValue:n,property:r}){if(e==null)return;if(typeof e=="object")return BU(e,t).reduce((i,l)=>{if(l==="base"&&e.base!==void 0){const p=n(e.base,t);return Array.isArray(r)?(r.forEach(h=>{i[h]=p}),i):(i[r]=p,i)}const u=n(e[l],t);return Array.isArray(r)?(i[t.fn.largerThan(l)]={},r.forEach(p=>{i[t.fn.largerThan(l)][p]=u}),i):(i[t.fn.largerThan(l)]={[r]:u},i)},{});const o=n(e,t);return Array.isArray(r)?r.reduce((s,i)=>(s[i]=o,s),{}):{[r]:o}}function WU(e,t){return e==="dimmed"?t.colorScheme==="dark"?t.colors.dark[2]:t.colors.gray[6]:t.fn.variant({variant:"filled",color:e,primaryFallback:!1}).background}function VU(e){return Oe(e)}function UU(e){return e}function GU(e,t){return ut({size:e,sizes:t.fontSizes})}const KU=["-xs","-sm","-md","-lg","-xl"];function qU(e,t){return KU.includes(e)?`calc(${ut({size:e.replace("-",""),sizes:t.spacing})} * -1)`:ut({size:e,sizes:t.spacing})}const XU={identity:UU,color:WU,size:VU,fontSize:GU,spacing:qU},YU={m:{type:"spacing",property:"margin"},mt:{type:"spacing",property:"marginTop"},mb:{type:"spacing",property:"marginBottom"},ml:{type:"spacing",property:"marginLeft"},mr:{type:"spacing",property:"marginRight"},mx:{type:"spacing",property:["marginRight","marginLeft"]},my:{type:"spacing",property:["marginTop","marginBottom"]},p:{type:"spacing",property:"padding"},pt:{type:"spacing",property:"paddingTop"},pb:{type:"spacing",property:"paddingBottom"},pl:{type:"spacing",property:"paddingLeft"},pr:{type:"spacing",property:"paddingRight"},px:{type:"spacing",property:["paddingRight","paddingLeft"]},py:{type:"spacing",property:["paddingTop","paddingBottom"]},bg:{type:"color",property:"background"},c:{type:"color",property:"color"},opacity:{type:"identity",property:"opacity"},ff:{type:"identity",property:"fontFamily"},fz:{type:"fontSize",property:"fontSize"},fw:{type:"identity",property:"fontWeight"},lts:{type:"size",property:"letterSpacing"},ta:{type:"identity",property:"textAlign"},lh:{type:"identity",property:"lineHeight"},fs:{type:"identity",property:"fontStyle"},tt:{type:"identity",property:"textTransform"},td:{type:"identity",property:"textDecoration"},w:{type:"spacing",property:"width"},miw:{type:"spacing",property:"minWidth"},maw:{type:"spacing",property:"maxWidth"},h:{type:"spacing",property:"height"},mih:{type:"spacing",property:"minHeight"},mah:{type:"spacing",property:"maxHeight"},bgsz:{type:"size",property:"backgroundSize"},bgp:{type:"identity",property:"backgroundPosition"},bgr:{type:"identity",property:"backgroundRepeat"},bga:{type:"identity",property:"backgroundAttachment"},pos:{type:"identity",property:"position"},top:{type:"identity",property:"top"},left:{type:"size",property:"left"},bottom:{type:"size",property:"bottom"},right:{type:"size",property:"right"},inset:{type:"size",property:"inset"},display:{type:"identity",property:"display"}};var QU=Object.defineProperty,BS=Object.getOwnPropertySymbols,ZU=Object.prototype.hasOwnProperty,JU=Object.prototype.propertyIsEnumerable,HS=(e,t,n)=>t in e?QU(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WS=(e,t)=>{for(var n in t||(t={}))ZU.call(t,n)&&HS(e,n,t[n]);if(BS)for(var n of BS(t))JU.call(t,n)&&HS(e,n,t[n]);return e};function VS(e,t,n=YU){return Object.keys(n).reduce((o,s)=>(s in e&&e[s]!==void 0&&o.push(HU({value:e[s],getValue:XU[n[s].type],property:n[s].property,theme:t})),o),[]).reduce((o,s)=>(Object.keys(s).forEach(i=>{typeof s[i]=="object"&&s[i]!==null&&i in o?o[i]=WS(WS({},o[i]),s[i]):o[i]=s[i]}),o),{})}function US(e,t){return typeof e=="function"?e(t):e}function eG(e,t,n){const r=ua(),{css:o,cx:s}=aI();return Array.isArray(e)?s(n,o(VS(t,r)),e.map(i=>o(US(i,r)))):s(n,o(US(e,r)),o(VS(t,r)))}var tG=Object.defineProperty,dh=Object.getOwnPropertySymbols,hI=Object.prototype.hasOwnProperty,mI=Object.prototype.propertyIsEnumerable,GS=(e,t,n)=>t in e?tG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nG=(e,t)=>{for(var n in t||(t={}))hI.call(t,n)&&GS(e,n,t[n]);if(dh)for(var n of dh(t))mI.call(t,n)&&GS(e,n,t[n]);return e},rG=(e,t)=>{var n={};for(var r in e)hI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&dh)for(var r of dh(e))t.indexOf(r)<0&&mI.call(e,r)&&(n[r]=e[r]);return n};const gI=d.forwardRef((e,t)=>{var n=e,{className:r,component:o,style:s,sx:i}=n,l=rG(n,["className","component","style","sx"]);const{systemStyles:u,rest:p}=Xm(l),h=o||"div";return H.createElement(h,nG({ref:t,className:eG(i,u,r),style:s},p))});gI.displayName="@mantine/core/Box";const Or=gI;var oG=Object.defineProperty,sG=Object.defineProperties,aG=Object.getOwnPropertyDescriptors,KS=Object.getOwnPropertySymbols,iG=Object.prototype.hasOwnProperty,lG=Object.prototype.propertyIsEnumerable,qS=(e,t,n)=>t in e?oG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,XS=(e,t)=>{for(var n in t||(t={}))iG.call(t,n)&&qS(e,n,t[n]);if(KS)for(var n of KS(t))lG.call(t,n)&&qS(e,n,t[n]);return e},cG=(e,t)=>sG(e,aG(t)),uG=or(e=>({root:cG(XS(XS({},e.fn.focusStyles()),e.fn.fontStyles()),{cursor:"pointer",border:0,padding:0,appearance:"none",fontSize:e.fontSizes.md,backgroundColor:"transparent",textAlign:"left",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,textDecoration:"none",boxSizing:"border-box"})}));const dG=uG;var fG=Object.defineProperty,fh=Object.getOwnPropertySymbols,vI=Object.prototype.hasOwnProperty,bI=Object.prototype.propertyIsEnumerable,YS=(e,t,n)=>t in e?fG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,pG=(e,t)=>{for(var n in t||(t={}))vI.call(t,n)&&YS(e,n,t[n]);if(fh)for(var n of fh(t))bI.call(t,n)&&YS(e,n,t[n]);return e},hG=(e,t)=>{var n={};for(var r in e)vI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&fh)for(var r of fh(e))t.indexOf(r)<0&&bI.call(e,r)&&(n[r]=e[r]);return n};const xI=d.forwardRef((e,t)=>{const n=Sn("UnstyledButton",{},e),{className:r,component:o="button",unstyled:s,variant:i}=n,l=hG(n,["className","component","unstyled","variant"]),{classes:u,cx:p}=dG(null,{name:"UnstyledButton",unstyled:s,variant:i});return H.createElement(Or,pG({component:o,ref:t,className:p(u.root,r),type:o==="button"?"button":void 0},l))});xI.displayName="@mantine/core/UnstyledButton";const mG=xI;var gG=Object.defineProperty,vG=Object.defineProperties,bG=Object.getOwnPropertyDescriptors,QS=Object.getOwnPropertySymbols,xG=Object.prototype.hasOwnProperty,yG=Object.prototype.propertyIsEnumerable,ZS=(e,t,n)=>t in e?gG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,K1=(e,t)=>{for(var n in t||(t={}))xG.call(t,n)&&ZS(e,n,t[n]);if(QS)for(var n of QS(t))yG.call(t,n)&&ZS(e,n,t[n]);return e},JS=(e,t)=>vG(e,bG(t));const CG=["subtle","filled","outline","light","default","transparent","gradient"],sp={xs:Oe(18),sm:Oe(22),md:Oe(28),lg:Oe(34),xl:Oe(44)};function wG({variant:e,theme:t,color:n,gradient:r}){const o=t.fn.variant({color:n,variant:e,gradient:r});return e==="gradient"?{border:0,backgroundImage:o.background,color:o.color,"&:hover":t.fn.hover({backgroundSize:"200%"})}:CG.includes(e)?K1({border:`${Oe(1)} solid ${o.border}`,backgroundColor:o.background,color:o.color},t.fn.hover({backgroundColor:o.hover})):null}var SG=or((e,{radius:t,color:n,gradient:r},{variant:o,size:s})=>({root:JS(K1({position:"relative",borderRadius:e.fn.radius(t),padding:0,lineHeight:1,display:"flex",alignItems:"center",justifyContent:"center",height:ut({size:s,sizes:sp}),minHeight:ut({size:s,sizes:sp}),width:ut({size:s,sizes:sp}),minWidth:ut({size:s,sizes:sp})},wG({variant:o,theme:e,color:n,gradient:r})),{"&:active":e.activeStyles,"& [data-action-icon-loader]":{maxWidth:"70%"},"&:disabled, &[data-disabled]":{color:e.colors.gray[e.colorScheme==="dark"?6:4],cursor:"not-allowed",backgroundColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),borderColor:o==="transparent"?void 0:e.fn.themeColor("gray",e.colorScheme==="dark"?8:1),backgroundImage:"none",pointerEvents:"none","&:active":{transform:"none"}},"&[data-loading]":{pointerEvents:"none","&::before":JS(K1({content:'""'},e.fn.cover(Oe(-1))),{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.colors.dark[7],.5):"rgba(255, 255, 255, .5)",borderRadius:e.fn.radius(t),cursor:"not-allowed"})}})}));const kG=SG;var _G=Object.defineProperty,ph=Object.getOwnPropertySymbols,yI=Object.prototype.hasOwnProperty,CI=Object.prototype.propertyIsEnumerable,e4=(e,t,n)=>t in e?_G(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,t4=(e,t)=>{for(var n in t||(t={}))yI.call(t,n)&&e4(e,n,t[n]);if(ph)for(var n of ph(t))CI.call(t,n)&&e4(e,n,t[n]);return e},n4=(e,t)=>{var n={};for(var r in e)yI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ph)for(var r of ph(e))t.indexOf(r)<0&&CI.call(e,r)&&(n[r]=e[r]);return n};function jG(e){var t=e,{size:n,color:r}=t,o=n4(t,["size","color"]);const s=o,{style:i}=s,l=n4(s,["style"]);return H.createElement("svg",t4({viewBox:"0 0 135 140",xmlns:"http://www.w3.org/2000/svg",fill:r,style:t4({width:n},i)},l),H.createElement("rect",{y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"30",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"60",width:"15",height:"140",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"90",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.25s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.25s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("rect",{x:"120",y:"10",width:"15",height:"120",rx:"6"},H.createElement("animate",{attributeName:"height",begin:"0.5s",dur:"1s",values:"120;110;100;90;80;70;60;50;40;140;120",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"y",begin:"0.5s",dur:"1s",values:"10;15;20;25;30;35;40;45;50;0;10",calcMode:"linear",repeatCount:"indefinite"})))}var PG=Object.defineProperty,hh=Object.getOwnPropertySymbols,wI=Object.prototype.hasOwnProperty,SI=Object.prototype.propertyIsEnumerable,r4=(e,t,n)=>t in e?PG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,o4=(e,t)=>{for(var n in t||(t={}))wI.call(t,n)&&r4(e,n,t[n]);if(hh)for(var n of hh(t))SI.call(t,n)&&r4(e,n,t[n]);return e},s4=(e,t)=>{var n={};for(var r in e)wI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&hh)for(var r of hh(e))t.indexOf(r)<0&&SI.call(e,r)&&(n[r]=e[r]);return n};function IG(e){var t=e,{size:n,color:r}=t,o=s4(t,["size","color"]);const s=o,{style:i}=s,l=s4(s,["style"]);return H.createElement("svg",o4({viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",stroke:r,style:o4({width:n,height:n},i)},l),H.createElement("g",{fill:"none",fillRule:"evenodd"},H.createElement("g",{transform:"translate(2.5 2.5)",strokeWidth:"5"},H.createElement("circle",{strokeOpacity:".5",cx:"16",cy:"16",r:"16"}),H.createElement("path",{d:"M32 16c0-9.94-8.06-16-16-16"},H.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"1s",repeatCount:"indefinite"})))))}var EG=Object.defineProperty,mh=Object.getOwnPropertySymbols,kI=Object.prototype.hasOwnProperty,_I=Object.prototype.propertyIsEnumerable,a4=(e,t,n)=>t in e?EG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,i4=(e,t)=>{for(var n in t||(t={}))kI.call(t,n)&&a4(e,n,t[n]);if(mh)for(var n of mh(t))_I.call(t,n)&&a4(e,n,t[n]);return e},l4=(e,t)=>{var n={};for(var r in e)kI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&mh)for(var r of mh(e))t.indexOf(r)<0&&_I.call(e,r)&&(n[r]=e[r]);return n};function MG(e){var t=e,{size:n,color:r}=t,o=l4(t,["size","color"]);const s=o,{style:i}=s,l=l4(s,["style"]);return H.createElement("svg",i4({viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:r,style:i4({width:n},i)},l),H.createElement("circle",{cx:"15",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"60",cy:"15",r:"9",fillOpacity:"0.3"},H.createElement("animate",{attributeName:"r",from:"9",to:"9",begin:"0s",dur:"0.8s",values:"9;15;9",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"0.5",to:"0.5",begin:"0s",dur:"0.8s",values:".5;1;.5",calcMode:"linear",repeatCount:"indefinite"})),H.createElement("circle",{cx:"105",cy:"15",r:"15"},H.createElement("animate",{attributeName:"r",from:"15",to:"15",begin:"0s",dur:"0.8s",values:"15;9;15",calcMode:"linear",repeatCount:"indefinite"}),H.createElement("animate",{attributeName:"fill-opacity",from:"1",to:"1",begin:"0s",dur:"0.8s",values:"1;.5;1",calcMode:"linear",repeatCount:"indefinite"})))}var OG=Object.defineProperty,gh=Object.getOwnPropertySymbols,jI=Object.prototype.hasOwnProperty,PI=Object.prototype.propertyIsEnumerable,c4=(e,t,n)=>t in e?OG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,DG=(e,t)=>{for(var n in t||(t={}))jI.call(t,n)&&c4(e,n,t[n]);if(gh)for(var n of gh(t))PI.call(t,n)&&c4(e,n,t[n]);return e},RG=(e,t)=>{var n={};for(var r in e)jI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&gh)for(var r of gh(e))t.indexOf(r)<0&&PI.call(e,r)&&(n[r]=e[r]);return n};const wv={bars:jG,oval:IG,dots:MG},AG={xs:Oe(18),sm:Oe(22),md:Oe(36),lg:Oe(44),xl:Oe(58)},NG={size:"md"};function II(e){const t=Sn("Loader",NG,e),{size:n,color:r,variant:o}=t,s=RG(t,["size","color","variant"]),i=ua(),l=o in wv?o:i.loader;return H.createElement(Or,DG({role:"presentation",component:wv[l]||wv.bars,size:ut({size:n,sizes:AG}),color:i.fn.variant({variant:"filled",primaryFallback:!1,color:r||i.primaryColor}).background},s))}II.displayName="@mantine/core/Loader";var TG=Object.defineProperty,vh=Object.getOwnPropertySymbols,EI=Object.prototype.hasOwnProperty,MI=Object.prototype.propertyIsEnumerable,u4=(e,t,n)=>t in e?TG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,d4=(e,t)=>{for(var n in t||(t={}))EI.call(t,n)&&u4(e,n,t[n]);if(vh)for(var n of vh(t))MI.call(t,n)&&u4(e,n,t[n]);return e},$G=(e,t)=>{var n={};for(var r in e)EI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&vh)for(var r of vh(e))t.indexOf(r)<0&&MI.call(e,r)&&(n[r]=e[r]);return n};const LG={color:"gray",size:"md",variant:"subtle"},OI=d.forwardRef((e,t)=>{const n=Sn("ActionIcon",LG,e),{className:r,color:o,children:s,radius:i,size:l,variant:u,gradient:p,disabled:h,loaderProps:m,loading:v,unstyled:b,__staticSelector:y}=n,x=$G(n,["className","color","children","radius","size","variant","gradient","disabled","loaderProps","loading","unstyled","__staticSelector"]),{classes:w,cx:k,theme:_}=kG({radius:i,color:o,gradient:p},{name:["ActionIcon",y],unstyled:b,size:l,variant:u}),j=H.createElement(II,d4({color:_.fn.variant({color:o,variant:u}).color,size:"100%","data-action-icon-loader":!0},m));return H.createElement(mG,d4({className:k(w.root,r),ref:t,disabled:h,"data-disabled":h||void 0,"data-loading":v||void 0,unstyled:b},x),v?j:s)});OI.displayName="@mantine/core/ActionIcon";const zG=OI;var FG=Object.defineProperty,BG=Object.defineProperties,HG=Object.getOwnPropertyDescriptors,bh=Object.getOwnPropertySymbols,DI=Object.prototype.hasOwnProperty,RI=Object.prototype.propertyIsEnumerable,f4=(e,t,n)=>t in e?FG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,WG=(e,t)=>{for(var n in t||(t={}))DI.call(t,n)&&f4(e,n,t[n]);if(bh)for(var n of bh(t))RI.call(t,n)&&f4(e,n,t[n]);return e},VG=(e,t)=>BG(e,HG(t)),UG=(e,t)=>{var n={};for(var r in e)DI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&bh)for(var r of bh(e))t.indexOf(r)<0&&RI.call(e,r)&&(n[r]=e[r]);return n};function AI(e){const t=Sn("Portal",{},e),{children:n,target:r,className:o,innerRef:s}=t,i=UG(t,["children","target","className","innerRef"]),l=ua(),[u,p]=d.useState(!1),h=d.useRef();return iI(()=>(p(!0),h.current=r?typeof r=="string"?document.querySelector(r):r:document.createElement("div"),r||document.body.appendChild(h.current),()=>{!r&&document.body.removeChild(h.current)}),[r]),u?Fr.createPortal(H.createElement("div",VG(WG({className:o,dir:l.dir},i),{ref:s}),n),h.current):null}AI.displayName="@mantine/core/Portal";var GG=Object.defineProperty,xh=Object.getOwnPropertySymbols,NI=Object.prototype.hasOwnProperty,TI=Object.prototype.propertyIsEnumerable,p4=(e,t,n)=>t in e?GG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KG=(e,t)=>{for(var n in t||(t={}))NI.call(t,n)&&p4(e,n,t[n]);if(xh)for(var n of xh(t))TI.call(t,n)&&p4(e,n,t[n]);return e},qG=(e,t)=>{var n={};for(var r in e)NI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&xh)for(var r of xh(e))t.indexOf(r)<0&&TI.call(e,r)&&(n[r]=e[r]);return n};function $I(e){var t=e,{withinPortal:n=!0,children:r}=t,o=qG(t,["withinPortal","children"]);return n?H.createElement(AI,KG({},o),r):H.createElement(H.Fragment,null,r)}$I.displayName="@mantine/core/OptionalPortal";var XG=Object.defineProperty,yh=Object.getOwnPropertySymbols,LI=Object.prototype.hasOwnProperty,zI=Object.prototype.propertyIsEnumerable,h4=(e,t,n)=>t in e?XG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,m4=(e,t)=>{for(var n in t||(t={}))LI.call(t,n)&&h4(e,n,t[n]);if(yh)for(var n of yh(t))zI.call(t,n)&&h4(e,n,t[n]);return e},YG=(e,t)=>{var n={};for(var r in e)LI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&yh)for(var r of yh(e))t.indexOf(r)<0&&zI.call(e,r)&&(n[r]=e[r]);return n};function FI(e){const t=e,{width:n,height:r,style:o}=t,s=YG(t,["width","height","style"]);return H.createElement("svg",m4({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:m4({width:n,height:r},o)},s),H.createElement("path",{d:"M11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}FI.displayName="@mantine/core/CloseIcon";var QG=Object.defineProperty,Ch=Object.getOwnPropertySymbols,BI=Object.prototype.hasOwnProperty,HI=Object.prototype.propertyIsEnumerable,g4=(e,t,n)=>t in e?QG(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ZG=(e,t)=>{for(var n in t||(t={}))BI.call(t,n)&&g4(e,n,t[n]);if(Ch)for(var n of Ch(t))HI.call(t,n)&&g4(e,n,t[n]);return e},JG=(e,t)=>{var n={};for(var r in e)BI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ch)for(var r of Ch(e))t.indexOf(r)<0&&HI.call(e,r)&&(n[r]=e[r]);return n};const eK={xs:Oe(12),sm:Oe(16),md:Oe(20),lg:Oe(28),xl:Oe(34)},tK={size:"sm"},WI=d.forwardRef((e,t)=>{const n=Sn("CloseButton",tK,e),{iconSize:r,size:o,children:s}=n,i=JG(n,["iconSize","size","children"]),l=Oe(r||eK[o]);return H.createElement(zG,ZG({ref:t,__staticSelector:"CloseButton",size:o},i),s||H.createElement(FI,{width:l,height:l}))});WI.displayName="@mantine/core/CloseButton";const VI=WI;var nK=Object.defineProperty,rK=Object.defineProperties,oK=Object.getOwnPropertyDescriptors,v4=Object.getOwnPropertySymbols,sK=Object.prototype.hasOwnProperty,aK=Object.prototype.propertyIsEnumerable,b4=(e,t,n)=>t in e?nK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,ap=(e,t)=>{for(var n in t||(t={}))sK.call(t,n)&&b4(e,n,t[n]);if(v4)for(var n of v4(t))aK.call(t,n)&&b4(e,n,t[n]);return e},iK=(e,t)=>rK(e,oK(t));function lK({underline:e,strikethrough:t}){const n=[];return e&&n.push("underline"),t&&n.push("line-through"),n.length>0?n.join(" "):"none"}function cK({theme:e,color:t}){return t==="dimmed"?e.fn.dimmed():typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?e.fn.variant({variant:"filled",color:t}).background:t||"inherit"}function uK(e){return typeof e=="number"?{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitLineClamp:e,WebkitBoxOrient:"vertical"}:null}function dK({theme:e,truncate:t}){return t==="start"?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",direction:e.dir==="ltr"?"rtl":"ltr",textAlign:e.dir==="ltr"?"right":"left"}:t?{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}:null}var fK=or((e,{color:t,lineClamp:n,truncate:r,inline:o,inherit:s,underline:i,gradient:l,weight:u,transform:p,align:h,strikethrough:m,italic:v},{size:b})=>{const y=e.fn.variant({variant:"gradient",gradient:l});return{root:iK(ap(ap(ap(ap({},e.fn.fontStyles()),e.fn.focusStyles()),uK(n)),dK({theme:e,truncate:r})),{color:cK({color:t,theme:e}),fontFamily:s?"inherit":e.fontFamily,fontSize:s||b===void 0?"inherit":ut({size:b,sizes:e.fontSizes}),lineHeight:s?"inherit":o?1:e.lineHeight,textDecoration:lK({underline:i,strikethrough:m}),WebkitTapHighlightColor:"transparent",fontWeight:s?"inherit":u,textTransform:p,textAlign:h,fontStyle:v?"italic":void 0}),gradient:{backgroundImage:y.background,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"}}});const pK=fK;var hK=Object.defineProperty,wh=Object.getOwnPropertySymbols,UI=Object.prototype.hasOwnProperty,GI=Object.prototype.propertyIsEnumerable,x4=(e,t,n)=>t in e?hK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mK=(e,t)=>{for(var n in t||(t={}))UI.call(t,n)&&x4(e,n,t[n]);if(wh)for(var n of wh(t))GI.call(t,n)&&x4(e,n,t[n]);return e},gK=(e,t)=>{var n={};for(var r in e)UI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&wh)for(var r of wh(e))t.indexOf(r)<0&&GI.call(e,r)&&(n[r]=e[r]);return n};const vK={variant:"text"},KI=d.forwardRef((e,t)=>{const n=Sn("Text",vK,e),{className:r,size:o,weight:s,transform:i,color:l,align:u,variant:p,lineClamp:h,truncate:m,gradient:v,inline:b,inherit:y,underline:x,strikethrough:w,italic:k,classNames:_,styles:j,unstyled:I,span:E,__staticSelector:M}=n,D=gK(n,["className","size","weight","transform","color","align","variant","lineClamp","truncate","gradient","inline","inherit","underline","strikethrough","italic","classNames","styles","unstyled","span","__staticSelector"]),{classes:R,cx:A}=pK({color:l,lineClamp:h,truncate:m,inline:b,inherit:y,underline:x,strikethrough:w,italic:k,weight:s,transform:i,align:u,gradient:v},{unstyled:I,name:M||"Text",variant:p,size:o});return H.createElement(Or,mK({ref:t,className:A(R.root,{[R.gradient]:p==="gradient"},r),component:E?"span":"div"},D))});KI.displayName="@mantine/core/Text";const kc=KI,ip={xs:Oe(1),sm:Oe(2),md:Oe(3),lg:Oe(4),xl:Oe(5)};function lp(e,t){const n=e.fn.variant({variant:"outline",color:t}).border;return typeof t=="string"&&(t in e.colors||t.split(".")[0]in e.colors)?n:t===void 0?e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]:t}var bK=or((e,{color:t},{size:n,variant:r})=>({root:{},withLabel:{borderTop:"0 !important"},left:{"&::before":{display:"none"}},right:{"&::after":{display:"none"}},label:{display:"flex",alignItems:"center","&::before":{content:'""',flex:1,height:Oe(1),borderTop:`${ut({size:n,sizes:ip})} ${r} ${lp(e,t)}`,marginRight:e.spacing.xs},"&::after":{content:'""',flex:1,borderTop:`${ut({size:n,sizes:ip})} ${r} ${lp(e,t)}`,marginLeft:e.spacing.xs}},labelDefaultStyles:{color:t==="dark"?e.colors.dark[1]:e.fn.themeColor(t,e.colorScheme==="dark"?5:e.fn.primaryShade(),!1)},horizontal:{border:0,borderTopWidth:Oe(ut({size:n,sizes:ip})),borderTopColor:lp(e,t),borderTopStyle:r,margin:0},vertical:{border:0,alignSelf:"stretch",height:"auto",borderLeftWidth:Oe(ut({size:n,sizes:ip})),borderLeftColor:lp(e,t),borderLeftStyle:r}}));const xK=bK;var yK=Object.defineProperty,CK=Object.defineProperties,wK=Object.getOwnPropertyDescriptors,Sh=Object.getOwnPropertySymbols,qI=Object.prototype.hasOwnProperty,XI=Object.prototype.propertyIsEnumerable,y4=(e,t,n)=>t in e?yK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,C4=(e,t)=>{for(var n in t||(t={}))qI.call(t,n)&&y4(e,n,t[n]);if(Sh)for(var n of Sh(t))XI.call(t,n)&&y4(e,n,t[n]);return e},SK=(e,t)=>CK(e,wK(t)),kK=(e,t)=>{var n={};for(var r in e)qI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Sh)for(var r of Sh(e))t.indexOf(r)<0&&XI.call(e,r)&&(n[r]=e[r]);return n};const _K={orientation:"horizontal",size:"xs",labelPosition:"left",variant:"solid"},q1=d.forwardRef((e,t)=>{const n=Sn("Divider",_K,e),{className:r,color:o,orientation:s,size:i,label:l,labelPosition:u,labelProps:p,variant:h,styles:m,classNames:v,unstyled:b}=n,y=kK(n,["className","color","orientation","size","label","labelPosition","labelProps","variant","styles","classNames","unstyled"]),{classes:x,cx:w}=xK({color:o},{classNames:v,styles:m,unstyled:b,name:"Divider",variant:h,size:i}),k=s==="vertical",_=s==="horizontal",j=!!l&&_,I=!(p!=null&&p.color);return H.createElement(Or,C4({ref:t,className:w(x.root,{[x.vertical]:k,[x.horizontal]:_,[x.withLabel]:j},r),role:"separator"},y),j&&H.createElement(kc,SK(C4({},p),{size:(p==null?void 0:p.size)||"xs",mt:Oe(2),className:w(x.label,x[u],{[x.labelDefaultStyles]:I})}),l))});q1.displayName="@mantine/core/Divider";var jK=Object.defineProperty,PK=Object.defineProperties,IK=Object.getOwnPropertyDescriptors,w4=Object.getOwnPropertySymbols,EK=Object.prototype.hasOwnProperty,MK=Object.prototype.propertyIsEnumerable,S4=(e,t,n)=>t in e?jK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k4=(e,t)=>{for(var n in t||(t={}))EK.call(t,n)&&S4(e,n,t[n]);if(w4)for(var n of w4(t))MK.call(t,n)&&S4(e,n,t[n]);return e},OK=(e,t)=>PK(e,IK(t)),DK=or((e,t,{size:n})=>({item:OK(k4({},e.fn.fontStyles()),{boxSizing:"border-box",wordBreak:"break-all",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`,cursor:"pointer",fontSize:ut({size:n,sizes:e.fontSizes}),color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,borderRadius:e.fn.radius(),"&[data-hovered]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[1]},"&[data-selected]":k4({backgroundColor:e.fn.variant({variant:"filled"}).background,color:e.fn.variant({variant:"filled"}).color},e.fn.hover({backgroundColor:e.fn.variant({variant:"filled"}).hover})),"&[data-disabled]":{cursor:"default",color:e.colors.dark[2]}}),nothingFound:{boxSizing:"border-box",color:e.colors.gray[6],paddingTop:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,paddingBottom:`calc(${ut({size:n,sizes:e.spacing})} / 2)`,textAlign:"center"},separator:{boxSizing:"border-box",textAlign:"left",width:"100%",padding:`calc(${ut({size:n,sizes:e.spacing})} / 1.5) ${ut({size:n,sizes:e.spacing})}`},separatorLabel:{color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]}}));const RK=DK;var AK=Object.defineProperty,_4=Object.getOwnPropertySymbols,NK=Object.prototype.hasOwnProperty,TK=Object.prototype.propertyIsEnumerable,j4=(e,t,n)=>t in e?AK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$K=(e,t)=>{for(var n in t||(t={}))NK.call(t,n)&&j4(e,n,t[n]);if(_4)for(var n of _4(t))TK.call(t,n)&&j4(e,n,t[n]);return e};function Xx({data:e,hovered:t,classNames:n,styles:r,isItemSelected:o,uuid:s,__staticSelector:i,onItemHover:l,onItemSelect:u,itemsRefs:p,itemComponent:h,size:m,nothingFound:v,creatable:b,createLabel:y,unstyled:x,variant:w}){const{classes:k}=RK(null,{classNames:n,styles:r,unstyled:x,name:i,variant:w,size:m}),_=[],j=[];let I=null;const E=(D,R)=>{const A=typeof o=="function"?o(D.value):!1;return H.createElement(h,$K({key:D.value,className:k.item,"data-disabled":D.disabled||void 0,"data-hovered":!D.disabled&&t===R||void 0,"data-selected":!D.disabled&&A||void 0,selected:A,onMouseEnter:()=>l(R),id:`${s}-${R}`,role:"option",tabIndex:-1,"aria-selected":t===R,ref:O=>{p&&p.current&&(p.current[D.value]=O)},onMouseDown:D.disabled?null:O=>{O.preventDefault(),u(D)},disabled:D.disabled,variant:w},D))};let M=null;if(e.forEach((D,R)=>{D.creatable?I=R:D.group?(M!==D.group&&(M=D.group,j.push(H.createElement("div",{className:k.separator,key:`__mantine-divider-${R}`},H.createElement(q1,{classNames:{label:k.separatorLabel},label:D.group})))),j.push(E(D,R))):_.push(E(D,R))}),b){const D=e[I];_.push(H.createElement("div",{key:Kx(),className:k.item,"data-hovered":t===I||void 0,onMouseEnter:()=>l(I),onMouseDown:R=>{R.preventDefault(),u(D)},tabIndex:-1,ref:R=>{p&&p.current&&(p.current[D.value]=R)}},y))}return j.length>0&&_.length>0&&_.unshift(H.createElement("div",{className:k.separator,key:"empty-group-separator"},H.createElement(q1,null))),j.length>0||_.length>0?H.createElement(H.Fragment,null,j,_):H.createElement(kc,{size:m,unstyled:x,className:k.nothingFound},v)}Xx.displayName="@mantine/core/SelectItems";var LK=Object.defineProperty,kh=Object.getOwnPropertySymbols,YI=Object.prototype.hasOwnProperty,QI=Object.prototype.propertyIsEnumerable,P4=(e,t,n)=>t in e?LK(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zK=(e,t)=>{for(var n in t||(t={}))YI.call(t,n)&&P4(e,n,t[n]);if(kh)for(var n of kh(t))QI.call(t,n)&&P4(e,n,t[n]);return e},FK=(e,t)=>{var n={};for(var r in e)YI.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&kh)for(var r of kh(e))t.indexOf(r)<0&&QI.call(e,r)&&(n[r]=e[r]);return n};const Yx=d.forwardRef((e,t)=>{var n=e,{label:r,value:o}=n,s=FK(n,["label","value"]);return H.createElement("div",zK({ref:t},s),r||o)});Yx.displayName="@mantine/core/DefaultItem";function BK(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function ZI(...e){return t=>e.forEach(n=>BK(n,t))}function nl(...e){return d.useCallback(ZI(...e),e)}const JI=d.forwardRef((e,t)=>{const{children:n,...r}=e,o=d.Children.toArray(n),s=o.find(WK);if(s){const i=s.props.children,l=o.map(u=>u===s?d.Children.count(i)>1?d.Children.only(null):d.isValidElement(i)?i.props.children:null:u);return d.createElement(X1,rn({},r,{ref:t}),d.isValidElement(i)?d.cloneElement(i,void 0,l):null)}return d.createElement(X1,rn({},r,{ref:t}),n)});JI.displayName="Slot";const X1=d.forwardRef((e,t)=>{const{children:n,...r}=e;return d.isValidElement(n)?d.cloneElement(n,{...VK(r,n.props),ref:ZI(t,n.ref)}):d.Children.count(n)>1?d.Children.only(null):null});X1.displayName="SlotClone";const HK=({children:e})=>d.createElement(d.Fragment,null,e);function WK(e){return d.isValidElement(e)&&e.type===HK}function VK(e,t){const n={...t};for(const r in t){const o=e[r],s=t[r];/^on[A-Z]/.test(r)?o&&s?n[r]=(...l)=>{s(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...s}:r==="className"&&(n[r]=[o,s].filter(Boolean).join(" "))}return{...e,...n}}const UK=["a","button","div","h2","h3","img","label","li","nav","ol","p","span","svg","ul"],Hd=UK.reduce((e,t)=>{const n=d.forwardRef((r,o)=>{const{asChild:s,...i}=r,l=s?JI:t;return d.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),d.createElement(l,rn({},i,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Y1=globalThis!=null&&globalThis.document?d.useLayoutEffect:()=>{};function GK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const Wd=e=>{const{present:t,children:n}=e,r=KK(t),o=typeof n=="function"?n({present:r.isPresent}):d.Children.only(n),s=nl(r.ref,o.ref);return typeof n=="function"||r.isPresent?d.cloneElement(o,{ref:s}):null};Wd.displayName="Presence";function KK(e){const[t,n]=d.useState(),r=d.useRef({}),o=d.useRef(e),s=d.useRef("none"),i=e?"mounted":"unmounted",[l,u]=GK(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return d.useEffect(()=>{const p=cp(r.current);s.current=l==="mounted"?p:"none"},[l]),Y1(()=>{const p=r.current,h=o.current;if(h!==e){const v=s.current,b=cp(p);e?u("MOUNT"):b==="none"||(p==null?void 0:p.display)==="none"?u("UNMOUNT"):u(h&&v!==b?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,u]),Y1(()=>{if(t){const p=m=>{const b=cp(r.current).includes(m.animationName);m.target===t&&b&&Fr.flushSync(()=>u("ANIMATION_END"))},h=m=>{m.target===t&&(s.current=cp(r.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:d.useCallback(p=>{p&&(r.current=getComputedStyle(p)),n(p)},[])}}function cp(e){return(e==null?void 0:e.animationName)||"none"}function qK(e,t=[]){let n=[];function r(s,i){const l=d.createContext(i),u=n.length;n=[...n,i];function p(m){const{scope:v,children:b,...y}=m,x=(v==null?void 0:v[e][u])||l,w=d.useMemo(()=>y,Object.values(y));return d.createElement(x.Provider,{value:w},b)}function h(m,v){const b=(v==null?void 0:v[e][u])||l,y=d.useContext(b);if(y)return y;if(i!==void 0)return i;throw new Error(`\`${m}\` must be used within \`${s}\``)}return p.displayName=s+"Provider",[p,h]}const o=()=>{const s=n.map(i=>d.createContext(i));return function(l){const u=(l==null?void 0:l[e])||s;return d.useMemo(()=>({[`__scope${e}`]:{...l,[e]:u}}),[l,u])}};return o.scopeName=e,[r,XK(o,...t)]}function XK(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(s){const i=r.reduce((l,{useScope:u,scopeName:p})=>{const m=u(s)[`__scope${p}`];return{...l,...m}},{});return d.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return n.scopeName=t.scopeName,n}function yi(e){const t=d.useRef(e);return d.useEffect(()=>{t.current=e}),d.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}const YK=d.createContext(void 0);function QK(e){const t=d.useContext(YK);return e||t||"ltr"}function ZK(e,[t,n]){return Math.min(n,Math.max(t,e))}function Ii(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function JK(e,t){return d.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const e6="ScrollArea",[t6,E0e]=qK(e6),[eq,yo]=t6(e6),tq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,type:r="hover",dir:o,scrollHideDelay:s=600,...i}=e,[l,u]=d.useState(null),[p,h]=d.useState(null),[m,v]=d.useState(null),[b,y]=d.useState(null),[x,w]=d.useState(null),[k,_]=d.useState(0),[j,I]=d.useState(0),[E,M]=d.useState(!1),[D,R]=d.useState(!1),A=nl(t,T=>u(T)),O=QK(o);return d.createElement(eq,{scope:n,type:r,dir:O,scrollHideDelay:s,scrollArea:l,viewport:p,onViewportChange:h,content:m,onContentChange:v,scrollbarX:b,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:M,scrollbarY:x,onScrollbarYChange:w,scrollbarYEnabled:D,onScrollbarYEnabledChange:R,onCornerWidthChange:_,onCornerHeightChange:I},d.createElement(Hd.div,rn({dir:O},i,{ref:A,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})))}),nq="ScrollAreaViewport",rq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,children:r,...o}=e,s=yo(nq,n),i=d.useRef(null),l=nl(t,i,s.onViewportChange);return d.createElement(d.Fragment,null,d.createElement("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"}}),d.createElement(Hd.div,rn({"data-radix-scroll-area-viewport":""},o,{ref:l,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style}}),d.createElement("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"}},r)))}),fa="ScrollAreaScrollbar",oq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=o,l=e.orientation==="horizontal";return d.useEffect(()=>(l?s(!0):i(!0),()=>{l?s(!1):i(!1)}),[l,s,i]),o.type==="hover"?d.createElement(sq,rn({},r,{ref:t,forceMount:n})):o.type==="scroll"?d.createElement(aq,rn({},r,{ref:t,forceMount:n})):o.type==="auto"?d.createElement(n6,rn({},r,{ref:t,forceMount:n})):o.type==="always"?d.createElement(Qx,rn({},r,{ref:t})):null}),sq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),[s,i]=d.useState(!1);return d.useEffect(()=>{const l=o.scrollArea;let u=0;if(l){const p=()=>{window.clearTimeout(u),i(!0)},h=()=>{u=window.setTimeout(()=>i(!1),o.scrollHideDelay)};return l.addEventListener("pointerenter",p),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(u),l.removeEventListener("pointerenter",p),l.removeEventListener("pointerleave",h)}}},[o.scrollArea,o.scrollHideDelay]),d.createElement(Wd,{present:n||s},d.createElement(n6,rn({"data-state":s?"visible":"hidden"},r,{ref:t})))}),aq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=yo(fa,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Qm(()=>u("SCROLL_END"),100),[l,u]=JK("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return d.useEffect(()=>{if(l==="idle"){const p=window.setTimeout(()=>u("HIDE"),o.scrollHideDelay);return()=>window.clearTimeout(p)}},[l,o.scrollHideDelay,u]),d.useEffect(()=>{const p=o.viewport,h=s?"scrollLeft":"scrollTop";if(p){let m=p[h];const v=()=>{const b=p[h];m!==b&&(u("SCROLL"),i()),m=b};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[o.viewport,s,u,i]),d.createElement(Wd,{present:n||l!=="hidden"},d.createElement(Qx,rn({"data-state":l==="hidden"?"hidden":"visible"},r,{ref:t,onPointerEnter:Ii(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:Ii(e.onPointerLeave,()=>u("POINTER_LEAVE"))})))}),n6=d.forwardRef((e,t)=>{const n=yo(fa,e.__scopeScrollArea),{forceMount:r,...o}=e,[s,i]=d.useState(!1),l=e.orientation==="horizontal",u=Qm(()=>{if(n.viewport){const p=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=e,o=yo(fa,e.__scopeScrollArea),s=d.useRef(null),i=d.useRef(0),[l,u]=d.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=a6(l.viewport,l.content),h={...r,sizes:l,onSizesChange:u,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function m(v,b){return hq(v,i.current,l,b)}return n==="horizontal"?d.createElement(iq,rn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollLeft,b=I4(v,l,o.dir);s.current.style.transform=`translate3d(${b}px, 0, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollLeft=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollLeft=m(v,o.dir))}})):n==="vertical"?d.createElement(lq,rn({},h,{ref:t,onThumbPositionChange:()=>{if(o.viewport&&s.current){const v=o.viewport.scrollTop,b=I4(v,l);s.current.style.transform=`translate3d(0, ${b}px, 0)`}},onWheelScroll:v=>{o.viewport&&(o.viewport.scrollTop=v)},onDragScroll:v=>{o.viewport&&(o.viewport.scrollTop=m(v))}})):null}),iq=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=yo(fa,e.__scopeScrollArea),[i,l]=d.useState(),u=d.useRef(null),p=nl(t,u,s.onScrollbarXChange);return d.useEffect(()=>{u.current&&l(getComputedStyle(u.current))},[u]),d.createElement(o6,rn({"data-orientation":"horizontal"},o,{ref:p,sizes:n,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Ym(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.x),onDragScroll:h=>e.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollLeft+h.deltaX;e.onWheelScroll(v),l6(v,m)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&r({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:_h(i.paddingLeft),paddingEnd:_h(i.paddingRight)}})}}))}),lq=d.forwardRef((e,t)=>{const{sizes:n,onSizesChange:r,...o}=e,s=yo(fa,e.__scopeScrollArea),[i,l]=d.useState(),u=d.useRef(null),p=nl(t,u,s.onScrollbarYChange);return d.useEffect(()=>{u.current&&l(getComputedStyle(u.current))},[u]),d.createElement(o6,rn({"data-orientation":"vertical"},o,{ref:p,sizes:n,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Ym(n)+"px",...e.style},onThumbPointerDown:h=>e.onThumbPointerDown(h.y),onDragScroll:h=>e.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(s.viewport){const v=s.viewport.scrollTop+h.deltaY;e.onWheelScroll(v),l6(v,m)&&h.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&r({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:_h(i.paddingTop),paddingEnd:_h(i.paddingBottom)}})}}))}),[cq,r6]=t6(fa),o6=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:o,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:l,onThumbPositionChange:u,onDragScroll:p,onWheelScroll:h,onResize:m,...v}=e,b=yo(fa,n),[y,x]=d.useState(null),w=nl(t,A=>x(A)),k=d.useRef(null),_=d.useRef(""),j=b.viewport,I=r.content-r.viewport,E=yi(h),M=yi(u),D=Qm(m,10);function R(A){if(k.current){const O=A.clientX-k.current.left,T=A.clientY-k.current.top;p({x:O,y:T})}}return d.useEffect(()=>{const A=O=>{const T=O.target;(y==null?void 0:y.contains(T))&&E(O,I)};return document.addEventListener("wheel",A,{passive:!1}),()=>document.removeEventListener("wheel",A,{passive:!1})},[j,y,I,E]),d.useEffect(M,[r,M]),_c(y,D),_c(b.content,D),d.createElement(cq,{scope:n,scrollbar:y,hasThumb:o,onThumbChange:yi(s),onThumbPointerUp:yi(i),onThumbPositionChange:M,onThumbPointerDown:yi(l)},d.createElement(Hd.div,rn({},v,{ref:w,style:{position:"absolute",...v.style},onPointerDown:Ii(e.onPointerDown,A=>{A.button===0&&(A.target.setPointerCapture(A.pointerId),k.current=y.getBoundingClientRect(),_.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",R(A))}),onPointerMove:Ii(e.onPointerMove,R),onPointerUp:Ii(e.onPointerUp,A=>{const O=A.target;O.hasPointerCapture(A.pointerId)&&O.releasePointerCapture(A.pointerId),document.body.style.webkitUserSelect=_.current,k.current=null})})))}),Q1="ScrollAreaThumb",uq=d.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=r6(Q1,e.__scopeScrollArea);return d.createElement(Wd,{present:n||o.hasThumb},d.createElement(dq,rn({ref:t},r)))}),dq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,style:r,...o}=e,s=yo(Q1,n),i=r6(Q1,n),{onThumbPositionChange:l}=i,u=nl(t,m=>i.onThumbChange(m)),p=d.useRef(),h=Qm(()=>{p.current&&(p.current(),p.current=void 0)},100);return d.useEffect(()=>{const m=s.viewport;if(m){const v=()=>{if(h(),!p.current){const b=mq(m,l);p.current=b,l()}};return l(),m.addEventListener("scroll",v),()=>m.removeEventListener("scroll",v)}},[s.viewport,h,l]),d.createElement(Hd.div,rn({"data-state":i.hasThumb?"visible":"hidden"},o,{ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:Ii(e.onPointerDownCapture,m=>{const b=m.target.getBoundingClientRect(),y=m.clientX-b.left,x=m.clientY-b.top;i.onThumbPointerDown({x:y,y:x})}),onPointerUp:Ii(e.onPointerUp,i.onThumbPointerUp)}))}),s6="ScrollAreaCorner",fq=d.forwardRef((e,t)=>{const n=yo(s6,e.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?d.createElement(pq,rn({},e,{ref:t})):null}),pq=d.forwardRef((e,t)=>{const{__scopeScrollArea:n,...r}=e,o=yo(s6,n),[s,i]=d.useState(0),[l,u]=d.useState(0),p=!!(s&&l);return _c(o.scrollbarX,()=>{var h;const m=((h=o.scrollbarX)===null||h===void 0?void 0:h.offsetHeight)||0;o.onCornerHeightChange(m),u(m)}),_c(o.scrollbarY,()=>{var h;const m=((h=o.scrollbarY)===null||h===void 0?void 0:h.offsetWidth)||0;o.onCornerWidthChange(m),i(m)}),p?d.createElement(Hd.div,rn({},r,{ref:t,style:{width:s,height:l,position:"absolute",right:o.dir==="ltr"?0:void 0,left:o.dir==="rtl"?0:void 0,bottom:0,...e.style}})):null});function _h(e){return e?parseInt(e,10):0}function a6(e,t){const n=e/t;return isNaN(n)?0:n}function Ym(e){const t=a6(e.viewport,e.content),n=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,r=(e.scrollbar.size-n)*t;return Math.max(r,18)}function hq(e,t,n,r="ltr"){const o=Ym(n),s=o/2,i=t||s,l=o-i,u=n.scrollbar.paddingStart+i,p=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return i6([u,p],m)(e)}function I4(e,t,n="ltr"){const r=Ym(t),o=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-o,i=t.content-t.viewport,l=s-r,u=n==="ltr"?[0,i]:[i*-1,0],p=ZK(e,u);return i6([0,i],[0,l])(p)}function i6(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function l6(e,t){return e>0&&e{})=>{let n={left:e.scrollLeft,top:e.scrollTop},r=0;return function o(){const s={left:e.scrollLeft,top:e.scrollTop},i=n.left!==s.left,l=n.top!==s.top;(i||l)&&t(),n=s,r=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(r)};function Qm(e,t){const n=yi(e),r=d.useRef(0);return d.useEffect(()=>()=>window.clearTimeout(r.current),[]),d.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,t)},[n,t])}function _c(e,t){const n=yi(t);Y1(()=>{let r=0;if(e){const o=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return o.observe(e),()=>{window.cancelAnimationFrame(r),o.unobserve(e)}}},[e,n])}const gq=tq,vq=rq,E4=oq,M4=uq,bq=fq;var xq=or((e,{scrollbarSize:t,offsetScrollbars:n,scrollbarHovered:r,hidden:o})=>({root:{overflow:"hidden"},viewport:{width:"100%",height:"100%",paddingRight:n?Oe(t):void 0,paddingBottom:n?Oe(t):void 0},scrollbar:{display:o?"none":"flex",userSelect:"none",touchAction:"none",boxSizing:"border-box",padding:`calc(${Oe(t)} / 5)`,transition:"background-color 150ms ease, opacity 150ms ease","&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[8]:e.colors.gray[0],[`& .${NS("thumb")}`]:{backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.5):e.fn.rgba(e.black,.5)}},'&[data-orientation="vertical"]':{width:Oe(t)},'&[data-orientation="horizontal"]':{flexDirection:"column",height:Oe(t)},'&[data-state="hidden"]':{display:"none",opacity:0}},thumb:{ref:NS("thumb"),flex:1,backgroundColor:e.colorScheme==="dark"?e.fn.rgba(e.white,.4):e.fn.rgba(e.black,.4),borderRadius:Oe(t),position:"relative",transition:"background-color 150ms ease",display:o?"none":void 0,overflow:"hidden","&::before":{content:'""',position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"100%",height:"100%",minWidth:Oe(44),minHeight:Oe(44)}},corner:{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],transition:"opacity 150ms ease",opacity:r?1:0,display:o?"none":void 0}}));const yq=xq;var Cq=Object.defineProperty,wq=Object.defineProperties,Sq=Object.getOwnPropertyDescriptors,jh=Object.getOwnPropertySymbols,c6=Object.prototype.hasOwnProperty,u6=Object.prototype.propertyIsEnumerable,O4=(e,t,n)=>t in e?Cq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Z1=(e,t)=>{for(var n in t||(t={}))c6.call(t,n)&&O4(e,n,t[n]);if(jh)for(var n of jh(t))u6.call(t,n)&&O4(e,n,t[n]);return e},d6=(e,t)=>wq(e,Sq(t)),f6=(e,t)=>{var n={};for(var r in e)c6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&jh)for(var r of jh(e))t.indexOf(r)<0&&u6.call(e,r)&&(n[r]=e[r]);return n};const p6={scrollbarSize:12,scrollHideDelay:1e3,type:"hover",offsetScrollbars:!1},Zm=d.forwardRef((e,t)=>{const n=Sn("ScrollArea",p6,e),{children:r,className:o,classNames:s,styles:i,scrollbarSize:l,scrollHideDelay:u,type:p,dir:h,offsetScrollbars:m,viewportRef:v,onScrollPositionChange:b,unstyled:y,variant:x,viewportProps:w}=n,k=f6(n,["children","className","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","variant","viewportProps"]),[_,j]=d.useState(!1),I=ua(),{classes:E,cx:M}=yq({scrollbarSize:l,offsetScrollbars:m,scrollbarHovered:_,hidden:p==="never"},{name:"ScrollArea",classNames:s,styles:i,unstyled:y,variant:x});return H.createElement(gq,{type:p==="never"?"always":p,scrollHideDelay:u,dir:h||I.dir,ref:t,asChild:!0},H.createElement(Or,Z1({className:M(E.root,o)},k),H.createElement(vq,d6(Z1({},w),{className:E.viewport,ref:v,onScroll:typeof b=="function"?({currentTarget:D})=>b({x:D.scrollLeft,y:D.scrollTop}):void 0}),r),H.createElement(E4,{orientation:"horizontal",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(M4,{className:E.thumb})),H.createElement(E4,{orientation:"vertical",className:E.scrollbar,forceMount:!0,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1)},H.createElement(M4,{className:E.thumb})),H.createElement(bq,{className:E.corner})))}),h6=d.forwardRef((e,t)=>{const n=Sn("ScrollAreaAutosize",p6,e),{children:r,classNames:o,styles:s,scrollbarSize:i,scrollHideDelay:l,type:u,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,sx:y,variant:x,viewportProps:w}=n,k=f6(n,["children","classNames","styles","scrollbarSize","scrollHideDelay","type","dir","offsetScrollbars","viewportRef","onScrollPositionChange","unstyled","sx","variant","viewportProps"]);return H.createElement(Or,d6(Z1({},k),{ref:t,sx:[{display:"flex"},...tI(y)]}),H.createElement(Or,{sx:{display:"flex",flexDirection:"column",flex:1}},H.createElement(Zm,{classNames:o,styles:s,scrollHideDelay:l,scrollbarSize:i,type:u,dir:p,offsetScrollbars:h,viewportRef:m,onScrollPositionChange:v,unstyled:b,variant:x,viewportProps:w},r)))});h6.displayName="@mantine/core/ScrollAreaAutosize";Zm.displayName="@mantine/core/ScrollArea";Zm.Autosize=h6;const m6=Zm;var kq=Object.defineProperty,_q=Object.defineProperties,jq=Object.getOwnPropertyDescriptors,Ph=Object.getOwnPropertySymbols,g6=Object.prototype.hasOwnProperty,v6=Object.prototype.propertyIsEnumerable,D4=(e,t,n)=>t in e?kq(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,R4=(e,t)=>{for(var n in t||(t={}))g6.call(t,n)&&D4(e,n,t[n]);if(Ph)for(var n of Ph(t))v6.call(t,n)&&D4(e,n,t[n]);return e},Pq=(e,t)=>_q(e,jq(t)),Iq=(e,t)=>{var n={};for(var r in e)g6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ph)for(var r of Ph(e))t.indexOf(r)<0&&v6.call(e,r)&&(n[r]=e[r]);return n};const Jm=d.forwardRef((e,t)=>{var n=e,{style:r}=n,o=Iq(n,["style"]);return H.createElement(m6,Pq(R4({},o),{style:R4({width:"100%"},r),viewportProps:{tabIndex:-1},viewportRef:t}),o.children)});Jm.displayName="@mantine/core/SelectScrollArea";var Eq=or(()=>({dropdown:{},itemsWrapper:{padding:Oe(4),display:"flex",width:"100%",boxSizing:"border-box"}}));const Mq=Eq;function Bc(e){return e.split("-")[1]}function Zx(e){return e==="y"?"height":"width"}function Lo(e){return e.split("-")[0]}function ti(e){return["top","bottom"].includes(Lo(e))?"x":"y"}function A4(e,t,n){let{reference:r,floating:o}=e;const s=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=ti(t),u=Zx(l),p=r[u]/2-o[u]/2,h=l==="x";let m;switch(Lo(t)){case"top":m={x:s,y:r.y-o.height};break;case"bottom":m={x:s,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:i};break;case"left":m={x:r.x-o.width,y:i};break;default:m={x:r.x,y:r.y}}switch(Bc(t)){case"start":m[l]-=p*(n&&h?-1:1);break;case"end":m[l]+=p*(n&&h?-1:1)}return m}const Oq=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,l=s.filter(Boolean),u=await(i.isRTL==null?void 0:i.isRTL(t));let p=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:h,y:m}=A4(p,r,u),v=r,b={},y=0;for(let x=0;x({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:i,elements:l}=t,{element:u,padding:p=0}=na(e,t)||{};if(u==null)return{};const h=Jx(p),m={x:n,y:r},v=ti(o),b=Zx(v),y=await i.getDimensions(u),x=v==="y",w=x?"top":"left",k=x?"bottom":"right",_=x?"clientHeight":"clientWidth",j=s.reference[b]+s.reference[v]-m[v]-s.floating[b],I=m[v]-s.reference[v],E=await(i.getOffsetParent==null?void 0:i.getOffsetParent(u));let M=E?E[_]:0;M&&await(i.isElement==null?void 0:i.isElement(E))||(M=l.floating[_]||s.floating[b]);const D=j/2-I/2,R=M/2-y[b]/2-1,A=qa(h[w],R),O=qa(h[k],R),T=A,K=M-y[b]-O,F=M/2-y[b]/2+D,V=J1(T,F,K),X=Bc(o)!=null&&F!=V&&s.reference[b]/2-(Fe.concat(t,t+"-start",t+"-end"),[]);const Rq={left:"right",right:"left",bottom:"top",top:"bottom"};function Ih(e){return e.replace(/left|right|bottom|top/g,t=>Rq[t])}function Aq(e,t,n){n===void 0&&(n=!1);const r=Bc(e),o=ti(e),s=Zx(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=Ih(i)),{main:i,cross:Ih(i)}}const Nq={start:"end",end:"start"};function Sv(e){return e.replace(/start|end/g,t=>Nq[t])}const Tq=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:s,initialPlacement:i,platform:l,elements:u}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:v="bestFit",fallbackAxisSideDirection:b="none",flipAlignment:y=!0,...x}=na(e,t),w=Lo(r),k=Lo(i)===i,_=await(l.isRTL==null?void 0:l.isRTL(u.floating)),j=m||(k||!y?[Ih(i)]:function(T){const K=Ih(T);return[Sv(T),K,Sv(K)]}(i));m||b==="none"||j.push(...function(T,K,F,V){const X=Bc(T);let W=function(z,Y,B){const q=["left","right"],re=["right","left"],Q=["top","bottom"],le=["bottom","top"];switch(z){case"top":case"bottom":return B?Y?re:q:Y?q:re;case"left":case"right":return Y?Q:le;default:return[]}}(Lo(T),F==="start",V);return X&&(W=W.map(z=>z+"-"+X),K&&(W=W.concat(W.map(Sv)))),W}(i,y,b,_));const I=[i,...j],E=await ey(t,x),M=[];let D=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&M.push(E[w]),h){const{main:T,cross:K}=Aq(r,s,_);M.push(E[T],E[K])}if(D=[...D,{placement:r,overflows:M}],!M.every(T=>T<=0)){var R,A;const T=(((R=o.flip)==null?void 0:R.index)||0)+1,K=I[T];if(K)return{data:{index:T,overflows:D},reset:{placement:K}};let F=(A=D.filter(V=>V.overflows[0]<=0).sort((V,X)=>V.overflows[1]-X.overflows[1])[0])==null?void 0:A.placement;if(!F)switch(v){case"bestFit":{var O;const V=(O=D.map(X=>[X.placement,X.overflows.filter(W=>W>0).reduce((W,z)=>W+z,0)]).sort((X,W)=>X[1]-W[1])[0])==null?void 0:O[0];V&&(F=V);break}case"initialPlacement":F=i}if(r!==F)return{reset:{placement:F}}}return{}}}};function T4(e){const t=qa(...e.map(r=>r.left)),n=qa(...e.map(r=>r.top));return{x:t,y:n,width:ls(...e.map(r=>r.right))-t,height:ls(...e.map(r=>r.bottom))-n}}const $q=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){const{placement:n,elements:r,rects:o,platform:s,strategy:i}=t,{padding:l=2,x:u,y:p}=na(e,t),h=Array.from(await(s.getClientRects==null?void 0:s.getClientRects(r.reference))||[]),m=function(x){const w=x.slice().sort((j,I)=>j.y-I.y),k=[];let _=null;for(let j=0;j_.height/2?k.push([I]):k[k.length-1].push(I),_=I}return k.map(j=>jc(T4(j)))}(h),v=jc(T4(h)),b=Jx(l),y=await s.getElementRects({reference:{getBoundingClientRect:function(){if(m.length===2&&m[0].left>m[1].right&&u!=null&&p!=null)return m.find(x=>u>x.left-b.left&&ux.top-b.top&&p=2){if(ti(n)==="x"){const E=m[0],M=m[m.length-1],D=Lo(n)==="top",R=E.top,A=M.bottom,O=D?E.left:M.left,T=D?E.right:M.right;return{top:R,bottom:A,left:O,right:T,width:T-O,height:A-R,x:O,y:R}}const x=Lo(n)==="left",w=ls(...m.map(E=>E.right)),k=qa(...m.map(E=>E.left)),_=m.filter(E=>x?E.left===k:E.right===w),j=_[0].top,I=_[_.length-1].bottom;return{top:j,bottom:I,left:k,right:w,width:w-k,height:I-j,x:k,y:j}}return v}},floating:r.floating,strategy:i});return o.reference.x!==y.reference.x||o.reference.y!==y.reference.y||o.reference.width!==y.reference.width||o.reference.height!==y.reference.height?{reset:{rects:y}}:{}}}},Lq=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(s,i){const{placement:l,platform:u,elements:p}=s,h=await(u.isRTL==null?void 0:u.isRTL(p.floating)),m=Lo(l),v=Bc(l),b=ti(l)==="x",y=["left","top"].includes(m)?-1:1,x=h&&b?-1:1,w=na(i,s);let{mainAxis:k,crossAxis:_,alignmentAxis:j}=typeof w=="number"?{mainAxis:w,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...w};return v&&typeof j=="number"&&(_=v==="end"?-1*j:j),b?{x:_*x,y:k*y}:{x:k*y,y:_*x}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function b6(e){return e==="x"?"y":"x"}const zq=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:l={fn:w=>{let{x:k,y:_}=w;return{x:k,y:_}}},...u}=na(e,t),p={x:n,y:r},h=await ey(t,u),m=ti(Lo(o)),v=b6(m);let b=p[m],y=p[v];if(s){const w=m==="y"?"bottom":"right";b=J1(b+h[m==="y"?"top":"left"],b,b-h[w])}if(i){const w=v==="y"?"bottom":"right";y=J1(y+h[v==="y"?"top":"left"],y,y-h[w])}const x=l.fn({...t,[m]:b,[v]:y});return{...x,data:{x:x.x-n,y:x.y-r}}}}},Fq=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:l=0,mainAxis:u=!0,crossAxis:p=!0}=na(e,t),h={x:n,y:r},m=ti(o),v=b6(m);let b=h[m],y=h[v];const x=na(l,t),w=typeof x=="number"?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(u){const j=m==="y"?"height":"width",I=s.reference[m]-s.floating[j]+w.mainAxis,E=s.reference[m]+s.reference[j]-w.mainAxis;bE&&(b=E)}if(p){var k,_;const j=m==="y"?"width":"height",I=["top","left"].includes(Lo(o)),E=s.reference[v]-s.floating[j]+(I&&((k=i.offset)==null?void 0:k[v])||0)+(I?0:w.crossAxis),M=s.reference[v]+s.reference[j]+(I?0:((_=i.offset)==null?void 0:_[v])||0)-(I?w.crossAxis:0);yM&&(y=M)}return{[m]:b,[v]:y}}}},Bq=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:s}=t,{apply:i=()=>{},...l}=na(e,t),u=await ey(t,l),p=Lo(n),h=Bc(n),m=ti(n)==="x",{width:v,height:b}=r.floating;let y,x;p==="top"||p==="bottom"?(y=p,x=h===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=p,y=h==="end"?"top":"bottom");const w=b-u[y],k=v-u[x],_=!t.middlewareData.shift;let j=w,I=k;if(m){const M=v-u.left-u.right;I=h||_?qa(k,M):M}else{const M=b-u.top-u.bottom;j=h||_?qa(w,M):M}if(_&&!h){const M=ls(u.left,0),D=ls(u.right,0),R=ls(u.top,0),A=ls(u.bottom,0);m?I=v-2*(M!==0||D!==0?M+D:ls(u.left,u.right)):j=b-2*(R!==0||A!==0?R+A:ls(u.top,u.bottom))}await i({...t,availableWidth:I,availableHeight:j});const E=await o.getDimensions(s.floating);return v!==E.width||b!==E.height?{reset:{rects:!0}}:{}}}};function Hr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function vs(e){return Hr(e).getComputedStyle(e)}function x6(e){return e instanceof Hr(e).Node}function Xa(e){return x6(e)?(e.nodeName||"").toLowerCase():"#document"}function Uo(e){return e instanceof HTMLElement||e instanceof Hr(e).HTMLElement}function $4(e){return typeof ShadowRoot<"u"&&(e instanceof Hr(e).ShadowRoot||e instanceof ShadowRoot)}function id(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=vs(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Hq(e){return["table","td","th"].includes(Xa(e))}function eb(e){const t=ty(),n=vs(e);return n.transform!=="none"||n.perspective!=="none"||!!n.containerType&&n.containerType!=="normal"||!t&&!!n.backdropFilter&&n.backdropFilter!=="none"||!t&&!!n.filter&&n.filter!=="none"||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function ty(){return!(typeof CSS>"u"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function eg(e){return["html","body","#document"].includes(Xa(e))}const tb=Math.min,ic=Math.max,Eh=Math.round,up=Math.floor,Ya=e=>({x:e,y:e});function y6(e){const t=vs(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Uo(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Eh(n)!==s||Eh(r)!==i;return l&&(n=s,r=i),{width:n,height:r,$:l}}function Ys(e){return e instanceof Element||e instanceof Hr(e).Element}function ny(e){return Ys(e)?e:e.contextElement}function lc(e){const t=ny(e);if(!Uo(t))return Ya(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=y6(t);let i=(s?Eh(n.width):n.width)/r,l=(s?Eh(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Wq=Ya(0);function C6(e){const t=Hr(e);return ty()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:Wq}function Vi(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=ny(e);let i=Ya(1);t&&(r?Ys(r)&&(i=lc(r)):i=lc(e));const l=function(v,b,y){return b===void 0&&(b=!1),!(!y||b&&y!==Hr(v))&&b}(s,n,r)?C6(s):Ya(0);let u=(o.left+l.x)/i.x,p=(o.top+l.y)/i.y,h=o.width/i.x,m=o.height/i.y;if(s){const v=Hr(s),b=r&&Ys(r)?Hr(r):r;let y=v.frameElement;for(;y&&r&&b!==v;){const x=lc(y),w=y.getBoundingClientRect(),k=getComputedStyle(y),_=w.left+(y.clientLeft+parseFloat(k.paddingLeft))*x.x,j=w.top+(y.clientTop+parseFloat(k.paddingTop))*x.y;u*=x.x,p*=x.y,h*=x.x,m*=x.y,u+=_,p+=j,y=Hr(y).frameElement}}return jc({width:h,height:m,x:u,y:p})}function tg(e){return Ys(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Qs(e){var t;return(t=(x6(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function w6(e){return Vi(Qs(e)).left+tg(e).scrollLeft}function Pc(e){if(Xa(e)==="html")return e;const t=e.assignedSlot||e.parentNode||$4(e)&&e.host||Qs(e);return $4(t)?t.host:t}function S6(e){const t=Pc(e);return eg(t)?e.ownerDocument?e.ownerDocument.body:e.body:Uo(t)&&id(t)?t:S6(t)}function Mh(e,t){var n;t===void 0&&(t=[]);const r=S6(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),s=Hr(r);return o?t.concat(s,s.visualViewport||[],id(r)?r:[]):t.concat(r,Mh(r))}function L4(e,t,n){let r;if(t==="viewport")r=function(o,s){const i=Hr(o),l=Qs(o),u=i.visualViewport;let p=l.clientWidth,h=l.clientHeight,m=0,v=0;if(u){p=u.width,h=u.height;const b=ty();(!b||b&&s==="fixed")&&(m=u.offsetLeft,v=u.offsetTop)}return{width:p,height:h,x:m,y:v}}(e,n);else if(t==="document")r=function(o){const s=Qs(o),i=tg(o),l=o.ownerDocument.body,u=ic(s.scrollWidth,s.clientWidth,l.scrollWidth,l.clientWidth),p=ic(s.scrollHeight,s.clientHeight,l.scrollHeight,l.clientHeight);let h=-i.scrollLeft+w6(o);const m=-i.scrollTop;return vs(l).direction==="rtl"&&(h+=ic(s.clientWidth,l.clientWidth)-u),{width:u,height:p,x:h,y:m}}(Qs(e));else if(Ys(t))r=function(o,s){const i=Vi(o,!0,s==="fixed"),l=i.top+o.clientTop,u=i.left+o.clientLeft,p=Uo(o)?lc(o):Ya(1);return{width:o.clientWidth*p.x,height:o.clientHeight*p.y,x:u*p.x,y:l*p.y}}(t,n);else{const o=C6(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return jc(r)}function k6(e,t){const n=Pc(e);return!(n===t||!Ys(n)||eg(n))&&(vs(n).position==="fixed"||k6(n,t))}function Vq(e,t,n){const r=Uo(t),o=Qs(t),s=n==="fixed",i=Vi(e,!0,s,t);let l={scrollLeft:0,scrollTop:0};const u=Ya(0);if(r||!r&&!s)if((Xa(t)!=="body"||id(o))&&(l=tg(t)),Uo(t)){const p=Vi(t,!0,s,t);u.x=p.x+t.clientLeft,u.y=p.y+t.clientTop}else o&&(u.x=w6(o));return{x:i.left+l.scrollLeft-u.x,y:i.top+l.scrollTop-u.y,width:i.width,height:i.height}}function z4(e,t){return Uo(e)&&vs(e).position!=="fixed"?t?t(e):e.offsetParent:null}function F4(e,t){const n=Hr(e);if(!Uo(e))return n;let r=z4(e,t);for(;r&&Hq(r)&&vs(r).position==="static";)r=z4(r,t);return r&&(Xa(r)==="html"||Xa(r)==="body"&&vs(r).position==="static"&&!eb(r))?n:r||function(o){let s=Pc(o);for(;Uo(s)&&!eg(s);){if(eb(s))return s;s=Pc(s)}return null}(e)||n}const Uq={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Uo(n),s=Qs(n);if(n===s)return t;let i={scrollLeft:0,scrollTop:0},l=Ya(1);const u=Ya(0);if((o||!o&&r!=="fixed")&&((Xa(n)!=="body"||id(s))&&(i=tg(n)),Uo(n))){const p=Vi(n);l=lc(n),u.x=p.x+n.clientLeft,u.y=p.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+u.x,y:t.y*l.y-i.scrollTop*l.y+u.y}},getDocumentElement:Qs,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?function(u,p){const h=p.get(u);if(h)return h;let m=Mh(u).filter(x=>Ys(x)&&Xa(x)!=="body"),v=null;const b=vs(u).position==="fixed";let y=b?Pc(u):u;for(;Ys(y)&&!eg(y);){const x=vs(y),w=eb(y);w||x.position!=="fixed"||(v=null),(b?!w&&!v:!w&&x.position==="static"&&v&&["absolute","fixed"].includes(v.position)||id(y)&&!w&&k6(u,y))?m=m.filter(k=>k!==y):v=x,y=Pc(y)}return p.set(u,m),m}(t,this._c):[].concat(n),r],i=s[0],l=s.reduce((u,p)=>{const h=L4(t,p,o);return u.top=ic(h.top,u.top),u.right=tb(h.right,u.right),u.bottom=tb(h.bottom,u.bottom),u.left=ic(h.left,u.left),u},L4(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:F4,getElementRects:async function(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||F4,s=this.getDimensions;return{reference:Vq(t,await o(n),r),floating:{x:0,y:0,...await s(n)}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){return y6(e)},getScale:lc,isElement:Ys,isRTL:function(e){return getComputedStyle(e).direction==="rtl"}};function Gq(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:u=!1}=r,p=ny(e),h=o||s?[...p?Mh(p):[],...Mh(t)]:[];h.forEach(w=>{o&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const m=p&&l?function(w,k){let _,j=null;const I=Qs(w);function E(){clearTimeout(_),j&&j.disconnect(),j=null}return function M(D,R){D===void 0&&(D=!1),R===void 0&&(R=1),E();const{left:A,top:O,width:T,height:K}=w.getBoundingClientRect();if(D||k(),!T||!K)return;const F={rootMargin:-up(O)+"px "+-up(I.clientWidth-(A+T))+"px "+-up(I.clientHeight-(O+K))+"px "+-up(A)+"px",threshold:ic(0,tb(1,R))||1};let V=!0;function X(W){const z=W[0].intersectionRatio;if(z!==R){if(!V)return M();z?M(!1,z):_=setTimeout(()=>{M(!1,1e-7)},100)}V=!1}try{j=new IntersectionObserver(X,{...F,root:I.ownerDocument})}catch{j=new IntersectionObserver(X,F)}j.observe(w)}(!0),E}(p,n):null;let v,b=-1,y=null;i&&(y=new ResizeObserver(w=>{let[k]=w;k&&k.target===p&&y&&(y.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{y&&y.observe(t)})),n()}),p&&!u&&y.observe(p),y.observe(t));let x=u?Vi(e):null;return u&&function w(){const k=Vi(e);!x||k.x===x.x&&k.y===x.y&&k.width===x.width&&k.height===x.height||n(),x=k,v=requestAnimationFrame(w)}(),n(),()=>{h.forEach(w=>{o&&w.removeEventListener("scroll",n),s&&w.removeEventListener("resize",n)}),m&&m(),y&&y.disconnect(),y=null,u&&cancelAnimationFrame(v)}}const Kq=(e,t,n)=>{const r=new Map,o={platform:Uq,...n},s={...o.platform,_c:r};return Oq(e,t,{...o,platform:s})},qq=e=>{const{element:t,padding:n}=e;function r(o){return Object.prototype.hasOwnProperty.call(o,"current")}return{name:"arrow",options:e,fn(o){return r(t)?t.current!=null?N4({element:t.current,padding:n}).fn(o):{}:t?N4({element:t,padding:n}).fn(o):{}}}};var Fp=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Oh(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,o;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(!Oh(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!Oh(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function B4(e){const t=d.useRef(e);return Fp(()=>{t.current=e}),t}function Xq(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,whileElementsMounted:s,open:i}=e,[l,u]=d.useState({x:null,y:null,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=d.useState(r);Oh(p,r)||h(r);const m=d.useRef(null),v=d.useRef(null),b=d.useRef(l),y=B4(s),x=B4(o),[w,k]=d.useState(null),[_,j]=d.useState(null),I=d.useCallback(O=>{m.current!==O&&(m.current=O,k(O))},[]),E=d.useCallback(O=>{v.current!==O&&(v.current=O,j(O))},[]),M=d.useCallback(()=>{if(!m.current||!v.current)return;const O={placement:t,strategy:n,middleware:p};x.current&&(O.platform=x.current),Kq(m.current,v.current,O).then(T=>{const K={...T,isPositioned:!0};D.current&&!Oh(b.current,K)&&(b.current=K,Fr.flushSync(()=>{u(K)}))})},[p,t,n,x]);Fp(()=>{i===!1&&b.current.isPositioned&&(b.current.isPositioned=!1,u(O=>({...O,isPositioned:!1})))},[i]);const D=d.useRef(!1);Fp(()=>(D.current=!0,()=>{D.current=!1}),[]),Fp(()=>{if(w&&_){if(y.current)return y.current(w,_,M);M()}},[w,_,M,y]);const R=d.useMemo(()=>({reference:m,floating:v,setReference:I,setFloating:E}),[I,E]),A=d.useMemo(()=>({reference:w,floating:_}),[w,_]);return d.useMemo(()=>({...l,update:M,refs:R,elements:A,reference:I,floating:E}),[l,M,R,A,I,E])}var Yq=typeof document<"u"?d.useLayoutEffect:d.useEffect;function Qq(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){e.set(t,(e.get(t)||[]).filter(r=>r!==n))}}}const Zq=d.createContext(null),Jq=()=>d.useContext(Zq);function eX(e){return(e==null?void 0:e.ownerDocument)||document}function tX(e){return eX(e).defaultView||window}function dp(e){return e?e instanceof tX(e).Element:!1}const nX=Tb["useInsertionEffect".toString()],rX=nX||(e=>e());function oX(e){const t=d.useRef(()=>{});return rX(()=>{t.current=e}),d.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;oQq())[0],[p,h]=d.useState(null),m=d.useCallback(k=>{const _=dp(k)?{getBoundingClientRect:()=>k.getBoundingClientRect(),contextElement:k}:k;o.refs.setReference(_)},[o.refs]),v=d.useCallback(k=>{(dp(k)||k===null)&&(i.current=k,h(k)),(dp(o.refs.reference.current)||o.refs.reference.current===null||k!==null&&!dp(k))&&o.refs.setReference(k)},[o.refs]),b=d.useMemo(()=>({...o.refs,setReference:v,setPositionReference:m,domReference:i}),[o.refs,v,m]),y=d.useMemo(()=>({...o.elements,domReference:p}),[o.elements,p]),x=oX(n),w=d.useMemo(()=>({...o,refs:b,elements:y,dataRef:l,nodeId:r,events:u,open:t,onOpenChange:x}),[o,r,u,t,x,b,y]);return Yq(()=>{const k=s==null?void 0:s.nodesRef.current.find(_=>_.id===r);k&&(k.context=w)}),d.useMemo(()=>({...o,context:w,refs:b,reference:v,positionReference:m}),[o,b,w,v,m])}function aX({opened:e,floating:t,position:n,positionDependencies:r}){const[o,s]=d.useState(0);d.useEffect(()=>{if(t.refs.reference.current&&t.refs.floating.current)return Gq(t.refs.reference.current,t.refs.floating.current,t.update)},[t.refs.reference.current,t.refs.floating.current,e,o,n]),$o(()=>{t.update()},r),$o(()=>{s(i=>i+1)},[e])}function iX(e){const t=[Lq(e.offset)];return e.middlewares.shift&&t.push(zq({limiter:Fq()})),e.middlewares.flip&&t.push(Tq()),e.middlewares.inline&&t.push($q()),t.push(qq({element:e.arrowRef,padding:e.arrowOffset})),t}function lX(e){const[t,n]=ad({value:e.opened,defaultValue:e.defaultOpened,finalValue:!1,onChange:e.onChange}),r=()=>{var i;(i=e.onClose)==null||i.call(e),n(!1)},o=()=>{var i,l;t?((i=e.onClose)==null||i.call(e),n(!1)):((l=e.onOpen)==null||l.call(e),n(!0))},s=sX({placement:e.position,middleware:[...iX(e),...e.width==="target"?[Bq({apply({rects:i}){var l,u;Object.assign((u=(l=s.refs.floating.current)==null?void 0:l.style)!=null?u:{},{width:`${i.reference.width}px`})}})]:[]]});return aX({opened:e.opened,position:e.position,positionDependencies:e.positionDependencies,floating:s}),$o(()=>{var i;(i=e.onPositionChange)==null||i.call(e,s.placement)},[s.placement]),$o(()=>{var i,l;e.opened?(l=e.onOpen)==null||l.call(e):(i=e.onClose)==null||i.call(e)},[e.opened]),{floating:s,controlled:typeof e.opened=="boolean",opened:t,onClose:r,onToggle:o}}const _6={context:"Popover component was not found in the tree",children:"Popover.Target component children should be an element or a component that accepts ref. Fragments, strings, numbers and other primitive values are not supported"},[cX,j6]=YV(_6.context);var uX=Object.defineProperty,dX=Object.defineProperties,fX=Object.getOwnPropertyDescriptors,Dh=Object.getOwnPropertySymbols,P6=Object.prototype.hasOwnProperty,I6=Object.prototype.propertyIsEnumerable,H4=(e,t,n)=>t in e?uX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fp=(e,t)=>{for(var n in t||(t={}))P6.call(t,n)&&H4(e,n,t[n]);if(Dh)for(var n of Dh(t))I6.call(t,n)&&H4(e,n,t[n]);return e},pX=(e,t)=>dX(e,fX(t)),hX=(e,t)=>{var n={};for(var r in e)P6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Dh)for(var r of Dh(e))t.indexOf(r)<0&&I6.call(e,r)&&(n[r]=e[r]);return n};const mX={refProp:"ref",popupType:"dialog"},E6=d.forwardRef((e,t)=>{const n=Sn("PopoverTarget",mX,e),{children:r,refProp:o,popupType:s}=n,i=hX(n,["children","refProp","popupType"]);if(!rI(r))throw new Error(_6.children);const l=i,u=j6(),p=Bd(u.reference,r.ref,t),h=u.withRoles?{"aria-haspopup":s,"aria-expanded":u.opened,"aria-controls":u.getDropdownId(),id:u.getTargetId()}:{};return d.cloneElement(r,fp(pX(fp(fp(fp({},l),h),u.targetProps),{className:sI(u.targetProps.className,l.className,r.props.className),[o]:p}),u.controlled?null:{onClick:u.onToggle}))});E6.displayName="@mantine/core/PopoverTarget";var gX=or((e,{radius:t,shadow:n})=>({dropdown:{position:"absolute",backgroundColor:e.white,background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,padding:`${e.spacing.sm} ${e.spacing.md}`,boxShadow:e.shadows[n]||n||"none",borderRadius:e.fn.radius(t),"&:focus":{outline:0}},arrow:{backgroundColor:"inherit",border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[2]}`,zIndex:1}}));const vX=gX;var bX=Object.defineProperty,W4=Object.getOwnPropertySymbols,xX=Object.prototype.hasOwnProperty,yX=Object.prototype.propertyIsEnumerable,V4=(e,t,n)=>t in e?bX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Dl=(e,t)=>{for(var n in t||(t={}))xX.call(t,n)&&V4(e,n,t[n]);if(W4)for(var n of W4(t))yX.call(t,n)&&V4(e,n,t[n]);return e};const U4={entering:"in",entered:"in",exiting:"out",exited:"out","pre-exiting":"out","pre-entering":"out"};function CX({transition:e,state:t,duration:n,timingFunction:r}){const o={transitionDuration:`${n}ms`,transitionTimingFunction:r};return typeof e=="string"?e in op?Dl(Dl(Dl({transitionProperty:op[e].transitionProperty},o),op[e].common),op[e][U4[t]]):null:Dl(Dl(Dl({transitionProperty:e.transitionProperty},o),e.common),e[U4[t]])}function wX({duration:e,exitDuration:t,timingFunction:n,mounted:r,onEnter:o,onExit:s,onEntered:i,onExited:l}){const u=ua(),p=fI(),h=u.respectReducedMotion?p:!1,[m,v]=d.useState(h?0:e),[b,y]=d.useState(r?"entered":"exited"),x=d.useRef(-1),w=k=>{const _=k?o:s,j=k?i:l;y(k?"pre-entering":"pre-exiting"),window.clearTimeout(x.current);const I=h?0:k?e:t;if(v(I),I===0)typeof _=="function"&&_(),typeof j=="function"&&j(),y(k?"entered":"exited");else{const E=window.setTimeout(()=>{typeof _=="function"&&_(),y(k?"entering":"exiting")},10);x.current=window.setTimeout(()=>{window.clearTimeout(E),typeof j=="function"&&j(),y(k?"entered":"exited")},I)}};return $o(()=>{w(r)},[r]),d.useEffect(()=>()=>window.clearTimeout(x.current),[]),{transitionDuration:m,transitionStatus:b,transitionTimingFunction:n||u.transitionTimingFunction}}function M6({keepMounted:e,transition:t,duration:n=250,exitDuration:r=n,mounted:o,children:s,timingFunction:i,onExit:l,onEntered:u,onEnter:p,onExited:h}){const{transitionDuration:m,transitionStatus:v,transitionTimingFunction:b}=wX({mounted:o,exitDuration:r,duration:n,timingFunction:i,onExit:l,onEntered:u,onEnter:p,onExited:h});return m===0?o?H.createElement(H.Fragment,null,s({})):e?s({display:"none"}):null:v==="exited"?e?s({display:"none"}):null:H.createElement(H.Fragment,null,s(CX({transition:t,duration:m,state:v,timingFunction:b})))}M6.displayName="@mantine/core/Transition";function O6({children:e,active:t=!0,refProp:n="ref"}){const r=MU(t),o=Bd(r,e==null?void 0:e.ref);return rI(e)?d.cloneElement(e,{[n]:o}):e}O6.displayName="@mantine/core/FocusTrap";var SX=Object.defineProperty,kX=Object.defineProperties,_X=Object.getOwnPropertyDescriptors,G4=Object.getOwnPropertySymbols,jX=Object.prototype.hasOwnProperty,PX=Object.prototype.propertyIsEnumerable,K4=(e,t,n)=>t in e?SX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Pa=(e,t)=>{for(var n in t||(t={}))jX.call(t,n)&&K4(e,n,t[n]);if(G4)for(var n of G4(t))PX.call(t,n)&&K4(e,n,t[n]);return e},pp=(e,t)=>kX(e,_X(t));function q4(e,t,n,r){return e==="center"||r==="center"?{top:t}:e==="end"?{bottom:n}:e==="start"?{top:n}:{}}function X4(e,t,n,r,o){return e==="center"||r==="center"?{left:t}:e==="end"?{[o==="ltr"?"right":"left"]:n}:e==="start"?{[o==="ltr"?"left":"right"]:n}:{}}const IX={bottom:"borderTopLeftRadius",left:"borderTopRightRadius",right:"borderBottomLeftRadius",top:"borderBottomRightRadius"};function EX({position:e,arrowSize:t,arrowOffset:n,arrowRadius:r,arrowPosition:o,arrowX:s,arrowY:i,dir:l}){const[u,p="center"]=e.split("-"),h={width:Oe(t),height:Oe(t),transform:"rotate(45deg)",position:"absolute",[IX[u]]:Oe(r)},m=Oe(-t/2);return u==="left"?pp(Pa(Pa({},h),q4(p,i,n,o)),{right:m,borderLeftColor:"transparent",borderBottomColor:"transparent"}):u==="right"?pp(Pa(Pa({},h),q4(p,i,n,o)),{left:m,borderRightColor:"transparent",borderTopColor:"transparent"}):u==="top"?pp(Pa(Pa({},h),X4(p,s,n,o,l)),{bottom:m,borderTopColor:"transparent",borderLeftColor:"transparent"}):u==="bottom"?pp(Pa(Pa({},h),X4(p,s,n,o,l)),{top:m,borderBottomColor:"transparent",borderRightColor:"transparent"}):{}}var MX=Object.defineProperty,OX=Object.defineProperties,DX=Object.getOwnPropertyDescriptors,Rh=Object.getOwnPropertySymbols,D6=Object.prototype.hasOwnProperty,R6=Object.prototype.propertyIsEnumerable,Y4=(e,t,n)=>t in e?MX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,RX=(e,t)=>{for(var n in t||(t={}))D6.call(t,n)&&Y4(e,n,t[n]);if(Rh)for(var n of Rh(t))R6.call(t,n)&&Y4(e,n,t[n]);return e},AX=(e,t)=>OX(e,DX(t)),NX=(e,t)=>{var n={};for(var r in e)D6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Rh)for(var r of Rh(e))t.indexOf(r)<0&&R6.call(e,r)&&(n[r]=e[r]);return n};const A6=d.forwardRef((e,t)=>{var n=e,{position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,visible:u,arrowX:p,arrowY:h}=n,m=NX(n,["position","arrowSize","arrowOffset","arrowRadius","arrowPosition","visible","arrowX","arrowY"]);const v=ua();return u?H.createElement("div",AX(RX({},m),{ref:t,style:EX({position:r,arrowSize:o,arrowOffset:s,arrowRadius:i,arrowPosition:l,dir:v.dir,arrowX:p,arrowY:h})})):null});A6.displayName="@mantine/core/FloatingArrow";var TX=Object.defineProperty,$X=Object.defineProperties,LX=Object.getOwnPropertyDescriptors,Ah=Object.getOwnPropertySymbols,N6=Object.prototype.hasOwnProperty,T6=Object.prototype.propertyIsEnumerable,Q4=(e,t,n)=>t in e?TX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Rl=(e,t)=>{for(var n in t||(t={}))N6.call(t,n)&&Q4(e,n,t[n]);if(Ah)for(var n of Ah(t))T6.call(t,n)&&Q4(e,n,t[n]);return e},hp=(e,t)=>$X(e,LX(t)),zX=(e,t)=>{var n={};for(var r in e)N6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Ah)for(var r of Ah(e))t.indexOf(r)<0&&T6.call(e,r)&&(n[r]=e[r]);return n};const FX={};function $6(e){var t;const n=Sn("PopoverDropdown",FX,e),{style:r,className:o,children:s,onKeyDownCapture:i}=n,l=zX(n,["style","className","children","onKeyDownCapture"]),u=j6(),{classes:p,cx:h}=vX({radius:u.radius,shadow:u.shadow},{name:u.__staticSelector,classNames:u.classNames,styles:u.styles,unstyled:u.unstyled,variant:u.variant}),m=SU({opened:u.opened,shouldReturnFocus:u.returnFocus}),v=u.withRoles?{"aria-labelledby":u.getTargetId(),id:u.getDropdownId(),role:"dialog"}:{};return u.disabled?null:H.createElement($I,hp(Rl({},u.portalProps),{withinPortal:u.withinPortal}),H.createElement(M6,hp(Rl({mounted:u.opened},u.transitionProps),{transition:u.transitionProps.transition||"fade",duration:(t=u.transitionProps.duration)!=null?t:150,keepMounted:u.keepMounted,exitDuration:typeof u.transitionProps.exitDuration=="number"?u.transitionProps.exitDuration:u.transitionProps.duration}),b=>{var y,x;return H.createElement(O6,{active:u.trapFocus},H.createElement(Or,Rl(hp(Rl({},v),{tabIndex:-1,ref:u.floating,style:hp(Rl(Rl({},r),b),{zIndex:u.zIndex,top:(y=u.y)!=null?y:0,left:(x=u.x)!=null?x:0,width:u.width==="target"?void 0:Oe(u.width)}),className:h(p.dropdown,o),onKeyDownCapture:ZV(u.onClose,{active:u.closeOnEscape,onTrigger:m,onKeyDown:i}),"data-position":u.placement}),l),s,H.createElement(A6,{ref:u.arrowRef,arrowX:u.arrowX,arrowY:u.arrowY,visible:u.withArrow,position:u.placement,arrowSize:u.arrowSize,arrowRadius:u.arrowRadius,arrowOffset:u.arrowOffset,arrowPosition:u.arrowPosition,className:p.arrow})))}))}$6.displayName="@mantine/core/PopoverDropdown";function BX(e,t){if(e==="rtl"&&(t.includes("right")||t.includes("left"))){const[n,r]=t.split("-"),o=n==="right"?"left":"right";return r===void 0?o:`${o}-${r}`}return t}var Z4=Object.getOwnPropertySymbols,HX=Object.prototype.hasOwnProperty,WX=Object.prototype.propertyIsEnumerable,VX=(e,t)=>{var n={};for(var r in e)HX.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Z4)for(var r of Z4(e))t.indexOf(r)<0&&WX.call(e,r)&&(n[r]=e[r]);return n};const UX={position:"bottom",offset:8,positionDependencies:[],transitionProps:{transition:"fade",duration:150},middlewares:{flip:!0,shift:!0,inline:!1},arrowSize:7,arrowOffset:5,arrowRadius:0,arrowPosition:"side",closeOnClickOutside:!0,withinPortal:!1,closeOnEscape:!0,trapFocus:!1,withRoles:!0,returnFocus:!1,clickOutsideEvents:["mousedown","touchstart"],zIndex:Gx("popover"),__staticSelector:"Popover",width:"max-content"};function Hc(e){var t,n,r,o,s,i;const l=d.useRef(null),u=Sn("Popover",UX,e),{children:p,position:h,offset:m,onPositionChange:v,positionDependencies:b,opened:y,transitionProps:x,width:w,middlewares:k,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:E,arrowPosition:M,unstyled:D,classNames:R,styles:A,closeOnClickOutside:O,withinPortal:T,portalProps:K,closeOnEscape:F,clickOutsideEvents:V,trapFocus:X,onClose:W,onOpen:z,onChange:Y,zIndex:B,radius:q,shadow:re,id:Q,defaultOpened:le,__staticSelector:se,withRoles:U,disabled:G,returnFocus:te,variant:ae,keepMounted:oe}=u,pe=VX(u,["children","position","offset","onPositionChange","positionDependencies","opened","transitionProps","width","middlewares","withArrow","arrowSize","arrowOffset","arrowRadius","arrowPosition","unstyled","classNames","styles","closeOnClickOutside","withinPortal","portalProps","closeOnEscape","clickOutsideEvents","trapFocus","onClose","onOpen","onChange","zIndex","radius","shadow","id","defaultOpened","__staticSelector","withRoles","disabled","returnFocus","variant","keepMounted"]),[ue,me]=d.useState(null),[Ce,ge]=d.useState(null),fe=qx(Q),De=ua(),je=lX({middlewares:k,width:w,position:BX(De.dir,h),offset:typeof m=="number"?m+(_?j/2:0):m,arrowRef:l,arrowOffset:I,onPositionChange:v,positionDependencies:b,opened:y,defaultOpened:le,onChange:Y,onOpen:z,onClose:W});xU(()=>je.opened&&O&&je.onClose(),V,[ue,Ce]);const Be=d.useCallback(Ue=>{me(Ue),je.floating.reference(Ue)},[je.floating.reference]),rt=d.useCallback(Ue=>{ge(Ue),je.floating.floating(Ue)},[je.floating.floating]);return H.createElement(cX,{value:{returnFocus:te,disabled:G,controlled:je.controlled,reference:Be,floating:rt,x:je.floating.x,y:je.floating.y,arrowX:(r=(n=(t=je.floating)==null?void 0:t.middlewareData)==null?void 0:n.arrow)==null?void 0:r.x,arrowY:(i=(s=(o=je.floating)==null?void 0:o.middlewareData)==null?void 0:s.arrow)==null?void 0:i.y,opened:je.opened,arrowRef:l,transitionProps:x,width:w,withArrow:_,arrowSize:j,arrowOffset:I,arrowRadius:E,arrowPosition:M,placement:je.floating.placement,trapFocus:X,withinPortal:T,portalProps:K,zIndex:B,radius:q,shadow:re,closeOnEscape:F,onClose:je.onClose,onToggle:je.onToggle,getTargetId:()=>`${fe}-target`,getDropdownId:()=>`${fe}-dropdown`,withRoles:U,targetProps:pe,__staticSelector:se,classNames:R,styles:A,unstyled:D,variant:ae,keepMounted:oe}},p)}Hc.Target=E6;Hc.Dropdown=$6;Hc.displayName="@mantine/core/Popover";var GX=Object.defineProperty,Nh=Object.getOwnPropertySymbols,L6=Object.prototype.hasOwnProperty,z6=Object.prototype.propertyIsEnumerable,J4=(e,t,n)=>t in e?GX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,KX=(e,t)=>{for(var n in t||(t={}))L6.call(t,n)&&J4(e,n,t[n]);if(Nh)for(var n of Nh(t))z6.call(t,n)&&J4(e,n,t[n]);return e},qX=(e,t)=>{var n={};for(var r in e)L6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Nh)for(var r of Nh(e))t.indexOf(r)<0&&z6.call(e,r)&&(n[r]=e[r]);return n};function XX(e){var t=e,{children:n,component:r="div",maxHeight:o=220,direction:s="column",id:i,innerRef:l,__staticSelector:u,styles:p,classNames:h,unstyled:m}=t,v=qX(t,["children","component","maxHeight","direction","id","innerRef","__staticSelector","styles","classNames","unstyled"]);const{classes:b}=Mq(null,{name:u,styles:p,classNames:h,unstyled:m});return H.createElement(Hc.Dropdown,KX({p:0,onMouseDown:y=>y.preventDefault()},v),H.createElement("div",{style:{maxHeight:Oe(o),display:"flex"}},H.createElement(Or,{component:r||"div",id:`${i}-items`,"aria-labelledby":`${i}-label`,role:"listbox",onMouseDown:y=>y.preventDefault(),style:{flex:1,overflowY:r!==Jm?"auto":void 0},"data-combobox-popover":!0,tabIndex:-1,ref:l},H.createElement("div",{className:b.itemsWrapper,style:{flexDirection:s}},n))))}function Ha({opened:e,transitionProps:t={transition:"fade",duration:0},shadow:n,withinPortal:r,portalProps:o,children:s,__staticSelector:i,onDirectionChange:l,switchDirectionOnFlip:u,zIndex:p,dropdownPosition:h,positionDependencies:m=[],classNames:v,styles:b,unstyled:y,readOnly:x,variant:w}){return H.createElement(Hc,{unstyled:y,classNames:v,styles:b,width:"target",withRoles:!1,opened:e,middlewares:{flip:h==="flip",shift:!1},position:h==="flip"?"bottom":h,positionDependencies:m,zIndex:p,__staticSelector:i,withinPortal:r,portalProps:o,transitionProps:t,shadow:n,disabled:x,onPositionChange:k=>u&&(l==null?void 0:l(k==="top"?"column-reverse":"column")),variant:w},s)}Ha.Target=Hc.Target;Ha.Dropdown=XX;var YX=Object.defineProperty,QX=Object.defineProperties,ZX=Object.getOwnPropertyDescriptors,Th=Object.getOwnPropertySymbols,F6=Object.prototype.hasOwnProperty,B6=Object.prototype.propertyIsEnumerable,ek=(e,t,n)=>t in e?YX(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,mp=(e,t)=>{for(var n in t||(t={}))F6.call(t,n)&&ek(e,n,t[n]);if(Th)for(var n of Th(t))B6.call(t,n)&&ek(e,n,t[n]);return e},JX=(e,t)=>QX(e,ZX(t)),eY=(e,t)=>{var n={};for(var r in e)F6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Th)for(var r of Th(e))t.indexOf(r)<0&&B6.call(e,r)&&(n[r]=e[r]);return n};function H6(e,t,n){const r=Sn(e,t,n),{label:o,description:s,error:i,required:l,classNames:u,styles:p,className:h,unstyled:m,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:w,wrapperProps:k,id:_,size:j,style:I,inputContainer:E,inputWrapperOrder:M,withAsterisk:D,variant:R}=r,A=eY(r,["label","description","error","required","classNames","styles","className","unstyled","__staticSelector","sx","errorProps","labelProps","descriptionProps","wrapperProps","id","size","style","inputContainer","inputWrapperOrder","withAsterisk","variant"]),O=qx(_),{systemStyles:T,rest:K}=Xm(A),F=mp({label:o,description:s,error:i,required:l,classNames:u,className:h,__staticSelector:v,sx:b,errorProps:y,labelProps:x,descriptionProps:w,unstyled:m,styles:p,id:O,size:j,style:I,inputContainer:E,inputWrapperOrder:M,withAsterisk:D,variant:R},k);return JX(mp({},K),{classNames:u,styles:p,unstyled:m,wrapperProps:mp(mp({},F),T),inputProps:{required:l,classNames:u,styles:p,unstyled:m,id:O,size:j,__staticSelector:v,error:i,variant:R}})}var tY=or((e,t,{size:n})=>({label:{display:"inline-block",fontSize:ut({size:n,sizes:e.fontSizes}),fontWeight:500,color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[9],wordBreak:"break-word",cursor:"default",WebkitTapHighlightColor:"transparent"},required:{color:e.fn.variant({variant:"filled",color:"red"}).background}}));const nY=tY;var rY=Object.defineProperty,$h=Object.getOwnPropertySymbols,W6=Object.prototype.hasOwnProperty,V6=Object.prototype.propertyIsEnumerable,tk=(e,t,n)=>t in e?rY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,oY=(e,t)=>{for(var n in t||(t={}))W6.call(t,n)&&tk(e,n,t[n]);if($h)for(var n of $h(t))V6.call(t,n)&&tk(e,n,t[n]);return e},sY=(e,t)=>{var n={};for(var r in e)W6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&$h)for(var r of $h(e))t.indexOf(r)<0&&V6.call(e,r)&&(n[r]=e[r]);return n};const aY={labelElement:"label",size:"sm"},ry=d.forwardRef((e,t)=>{const n=Sn("InputLabel",aY,e),{labelElement:r,children:o,required:s,size:i,classNames:l,styles:u,unstyled:p,className:h,htmlFor:m,__staticSelector:v,variant:b,onMouseDown:y}=n,x=sY(n,["labelElement","children","required","size","classNames","styles","unstyled","className","htmlFor","__staticSelector","variant","onMouseDown"]),{classes:w,cx:k}=nY(null,{name:["InputWrapper",v],classNames:l,styles:u,unstyled:p,variant:b,size:i});return H.createElement(Or,oY({component:r,ref:t,className:k(w.label,h),htmlFor:r==="label"?m:void 0,onMouseDown:_=>{y==null||y(_),!_.defaultPrevented&&_.detail>1&&_.preventDefault()}},x),o,s&&H.createElement("span",{className:w.required,"aria-hidden":!0}," *"))});ry.displayName="@mantine/core/InputLabel";var iY=or((e,t,{size:n})=>({error:{wordBreak:"break-word",color:e.fn.variant({variant:"filled",color:"red"}).background,fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const lY=iY;var cY=Object.defineProperty,Lh=Object.getOwnPropertySymbols,U6=Object.prototype.hasOwnProperty,G6=Object.prototype.propertyIsEnumerable,nk=(e,t,n)=>t in e?cY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,uY=(e,t)=>{for(var n in t||(t={}))U6.call(t,n)&&nk(e,n,t[n]);if(Lh)for(var n of Lh(t))G6.call(t,n)&&nk(e,n,t[n]);return e},dY=(e,t)=>{var n={};for(var r in e)U6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Lh)for(var r of Lh(e))t.indexOf(r)<0&&G6.call(e,r)&&(n[r]=e[r]);return n};const fY={size:"sm"},oy=d.forwardRef((e,t)=>{const n=Sn("InputError",fY,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:u,__staticSelector:p,variant:h}=n,m=dY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=lY(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:u});return H.createElement(kc,uY({className:b(v.error,o),ref:t},m),r)});oy.displayName="@mantine/core/InputError";var pY=or((e,t,{size:n})=>({description:{wordBreak:"break-word",color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],fontSize:`calc(${ut({size:n,sizes:e.fontSizes})} - ${Oe(2)})`,lineHeight:1.2,display:"block"}}));const hY=pY;var mY=Object.defineProperty,zh=Object.getOwnPropertySymbols,K6=Object.prototype.hasOwnProperty,q6=Object.prototype.propertyIsEnumerable,rk=(e,t,n)=>t in e?mY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gY=(e,t)=>{for(var n in t||(t={}))K6.call(t,n)&&rk(e,n,t[n]);if(zh)for(var n of zh(t))q6.call(t,n)&&rk(e,n,t[n]);return e},vY=(e,t)=>{var n={};for(var r in e)K6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&zh)for(var r of zh(e))t.indexOf(r)<0&&q6.call(e,r)&&(n[r]=e[r]);return n};const bY={size:"sm"},sy=d.forwardRef((e,t)=>{const n=Sn("InputDescription",bY,e),{children:r,className:o,classNames:s,styles:i,unstyled:l,size:u,__staticSelector:p,variant:h}=n,m=vY(n,["children","className","classNames","styles","unstyled","size","__staticSelector","variant"]),{classes:v,cx:b}=hY(null,{name:["InputWrapper",p],classNames:s,styles:i,unstyled:l,variant:h,size:u});return H.createElement(kc,gY({color:"dimmed",className:b(v.description,o),ref:t,unstyled:l},m),r)});sy.displayName="@mantine/core/InputDescription";const X6=d.createContext({offsetBottom:!1,offsetTop:!1,describedBy:void 0}),xY=X6.Provider,yY=()=>d.useContext(X6);function CY(e,{hasDescription:t,hasError:n}){const r=e.findIndex(u=>u==="input"),o=e[r-1],s=e[r+1];return{offsetBottom:t&&s==="description"||n&&s==="error",offsetTop:t&&o==="description"||n&&o==="error"}}var wY=Object.defineProperty,SY=Object.defineProperties,kY=Object.getOwnPropertyDescriptors,ok=Object.getOwnPropertySymbols,_Y=Object.prototype.hasOwnProperty,jY=Object.prototype.propertyIsEnumerable,sk=(e,t,n)=>t in e?wY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,PY=(e,t)=>{for(var n in t||(t={}))_Y.call(t,n)&&sk(e,n,t[n]);if(ok)for(var n of ok(t))jY.call(t,n)&&sk(e,n,t[n]);return e},IY=(e,t)=>SY(e,kY(t)),EY=or(e=>({root:IY(PY({},e.fn.fontStyles()),{lineHeight:e.lineHeight})}));const MY=EY;var OY=Object.defineProperty,DY=Object.defineProperties,RY=Object.getOwnPropertyDescriptors,Fh=Object.getOwnPropertySymbols,Y6=Object.prototype.hasOwnProperty,Q6=Object.prototype.propertyIsEnumerable,ak=(e,t,n)=>t in e?OY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ia=(e,t)=>{for(var n in t||(t={}))Y6.call(t,n)&&ak(e,n,t[n]);if(Fh)for(var n of Fh(t))Q6.call(t,n)&&ak(e,n,t[n]);return e},ik=(e,t)=>DY(e,RY(t)),AY=(e,t)=>{var n={};for(var r in e)Y6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Fh)for(var r of Fh(e))t.indexOf(r)<0&&Q6.call(e,r)&&(n[r]=e[r]);return n};const NY={labelElement:"label",size:"sm",inputContainer:e=>e,inputWrapperOrder:["label","description","input","error"]},Z6=d.forwardRef((e,t)=>{const n=Sn("InputWrapper",NY,e),{className:r,label:o,children:s,required:i,id:l,error:u,description:p,labelElement:h,labelProps:m,descriptionProps:v,errorProps:b,classNames:y,styles:x,size:w,inputContainer:k,__staticSelector:_,unstyled:j,inputWrapperOrder:I,withAsterisk:E,variant:M}=n,D=AY(n,["className","label","children","required","id","error","description","labelElement","labelProps","descriptionProps","errorProps","classNames","styles","size","inputContainer","__staticSelector","unstyled","inputWrapperOrder","withAsterisk","variant"]),{classes:R,cx:A}=MY(null,{classNames:y,styles:x,name:["InputWrapper",_],unstyled:j,variant:M,size:w}),O={classNames:y,styles:x,unstyled:j,size:w,variant:M,__staticSelector:_},T=typeof E=="boolean"?E:i,K=l?`${l}-error`:b==null?void 0:b.id,F=l?`${l}-description`:v==null?void 0:v.id,X=`${!!u&&typeof u!="boolean"?K:""} ${p?F:""}`,W=X.trim().length>0?X.trim():void 0,z=o&&H.createElement(ry,Ia(Ia({key:"label",labelElement:h,id:l?`${l}-label`:void 0,htmlFor:l,required:T},O),m),o),Y=p&&H.createElement(sy,ik(Ia(Ia({key:"description"},v),O),{size:(v==null?void 0:v.size)||O.size,id:(v==null?void 0:v.id)||F}),p),B=H.createElement(d.Fragment,{key:"input"},k(s)),q=typeof u!="boolean"&&u&&H.createElement(oy,ik(Ia(Ia({},b),O),{size:(b==null?void 0:b.size)||O.size,key:"error",id:(b==null?void 0:b.id)||K}),u),re=I.map(Q=>{switch(Q){case"label":return z;case"input":return B;case"description":return Y;case"error":return q;default:return null}});return H.createElement(xY,{value:Ia({describedBy:W},CY(I,{hasDescription:!!Y,hasError:!!q}))},H.createElement(Or,Ia({className:A(R.root,r),ref:t},D),re))});Z6.displayName="@mantine/core/InputWrapper";var TY=Object.defineProperty,Bh=Object.getOwnPropertySymbols,J6=Object.prototype.hasOwnProperty,eE=Object.prototype.propertyIsEnumerable,lk=(e,t,n)=>t in e?TY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,$Y=(e,t)=>{for(var n in t||(t={}))J6.call(t,n)&&lk(e,n,t[n]);if(Bh)for(var n of Bh(t))eE.call(t,n)&&lk(e,n,t[n]);return e},LY=(e,t)=>{var n={};for(var r in e)J6.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Bh)for(var r of Bh(e))t.indexOf(r)<0&&eE.call(e,r)&&(n[r]=e[r]);return n};const zY={},tE=d.forwardRef((e,t)=>{const n=Sn("InputPlaceholder",zY,e),{sx:r}=n,o=LY(n,["sx"]);return H.createElement(Or,$Y({component:"span",sx:[s=>s.fn.placeholderStyles(),...tI(r)],ref:t},o))});tE.displayName="@mantine/core/InputPlaceholder";var FY=Object.defineProperty,BY=Object.defineProperties,HY=Object.getOwnPropertyDescriptors,ck=Object.getOwnPropertySymbols,WY=Object.prototype.hasOwnProperty,VY=Object.prototype.propertyIsEnumerable,uk=(e,t,n)=>t in e?FY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,gp=(e,t)=>{for(var n in t||(t={}))WY.call(t,n)&&uk(e,n,t[n]);if(ck)for(var n of ck(t))VY.call(t,n)&&uk(e,n,t[n]);return e},kv=(e,t)=>BY(e,HY(t));const oo={xs:Oe(30),sm:Oe(36),md:Oe(42),lg:Oe(50),xl:Oe(60)},UY=["default","filled","unstyled"];function GY({theme:e,variant:t}){return UY.includes(t)?t==="default"?{border:`${Oe(1)} solid ${e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4]}`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.white,transition:"border-color 100ms ease","&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:t==="filled"?{border:`${Oe(1)} solid transparent`,backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[1],"&:focus, &:focus-within":e.focusRingStyles.inputStyles(e)}:{borderWidth:0,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,backgroundColor:"transparent",minHeight:Oe(28),outline:0,"&:focus, &:focus-within":{outline:"none",borderColor:"transparent"},"&:disabled":{backgroundColor:"transparent","&:focus, &:focus-within":{outline:"none",borderColor:"transparent"}}}:null}var KY=or((e,{multiline:t,radius:n,invalid:r,rightSectionWidth:o,withRightSection:s,iconWidth:i,offsetBottom:l,offsetTop:u,pointer:p},{variant:h,size:m})=>{const v=e.fn.variant({variant:"filled",color:"red"}).background,b=h==="default"||h==="filled"?{minHeight:ut({size:m,sizes:oo}),paddingLeft:`calc(${ut({size:m,sizes:oo})} / 3)`,paddingRight:s?o||ut({size:m,sizes:oo}):`calc(${ut({size:m,sizes:oo})} / 3)`,borderRadius:e.fn.radius(n)}:h==="unstyled"&&s?{paddingRight:o||ut({size:m,sizes:oo})}:null;return{wrapper:{position:"relative",marginTop:u?`calc(${e.spacing.xs} / 2)`:void 0,marginBottom:l?`calc(${e.spacing.xs} / 2)`:void 0,"&:has(input:disabled)":{"& .mantine-Input-rightSection":{display:"none"}}},input:kv(gp(gp(kv(gp({},e.fn.fontStyles()),{height:t?h==="unstyled"?void 0:"auto":ut({size:m,sizes:oo}),WebkitTapHighlightColor:"transparent",lineHeight:t?e.lineHeight:`calc(${ut({size:m,sizes:oo})} - ${Oe(2)})`,appearance:"none",resize:"none",boxSizing:"border-box",fontSize:ut({size:m,sizes:e.fontSizes}),width:"100%",color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,display:"block",textAlign:"left",cursor:p?"pointer":void 0}),GY({theme:e,variant:h})),b),{"&:disabled, &[data-disabled]":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,cursor:"not-allowed",pointerEvents:"none","&::placeholder":{color:e.colors.dark[2]}},"&[data-invalid]":{color:v,borderColor:v,"&::placeholder":{opacity:1,color:v}},"&[data-with-icon]":{paddingLeft:typeof i=="number"?Oe(i):ut({size:m,sizes:oo})},"&::placeholder":kv(gp({},e.fn.placeholderStyles()),{opacity:1}),"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button, &::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration":{appearance:"none"},"&[type=number]":{MozAppearance:"textfield"}}),icon:{pointerEvents:"none",position:"absolute",zIndex:1,left:0,top:0,bottom:0,display:"flex",alignItems:"center",justifyContent:"center",width:i?Oe(i):ut({size:m,sizes:oo}),color:r?e.colors.red[e.colorScheme==="dark"?6:7]:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[5]},rightSection:{position:"absolute",top:0,bottom:0,right:0,display:"flex",alignItems:"center",justifyContent:"center",width:o||ut({size:m,sizes:oo})}}});const qY=KY;var XY=Object.defineProperty,YY=Object.defineProperties,QY=Object.getOwnPropertyDescriptors,Hh=Object.getOwnPropertySymbols,nE=Object.prototype.hasOwnProperty,rE=Object.prototype.propertyIsEnumerable,dk=(e,t,n)=>t in e?XY(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vp=(e,t)=>{for(var n in t||(t={}))nE.call(t,n)&&dk(e,n,t[n]);if(Hh)for(var n of Hh(t))rE.call(t,n)&&dk(e,n,t[n]);return e},fk=(e,t)=>YY(e,QY(t)),ZY=(e,t)=>{var n={};for(var r in e)nE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Hh)for(var r of Hh(e))t.indexOf(r)<0&&rE.call(e,r)&&(n[r]=e[r]);return n};const JY={size:"sm",variant:"default"},rl=d.forwardRef((e,t)=>{const n=Sn("Input",JY,e),{className:r,error:o,required:s,disabled:i,variant:l,icon:u,style:p,rightSectionWidth:h,iconWidth:m,rightSection:v,rightSectionProps:b,radius:y,size:x,wrapperProps:w,classNames:k,styles:_,__staticSelector:j,multiline:I,sx:E,unstyled:M,pointer:D}=n,R=ZY(n,["className","error","required","disabled","variant","icon","style","rightSectionWidth","iconWidth","rightSection","rightSectionProps","radius","size","wrapperProps","classNames","styles","__staticSelector","multiline","sx","unstyled","pointer"]),{offsetBottom:A,offsetTop:O,describedBy:T}=yY(),{classes:K,cx:F}=qY({radius:y,multiline:I,invalid:!!o,rightSectionWidth:h?Oe(h):void 0,iconWidth:m,withRightSection:!!v,offsetBottom:A,offsetTop:O,pointer:D},{classNames:k,styles:_,name:["Input",j],unstyled:M,variant:l,size:x}),{systemStyles:V,rest:X}=Xm(R);return H.createElement(Or,vp(vp({className:F(K.wrapper,r),sx:E,style:p},V),w),u&&H.createElement("div",{className:K.icon},u),H.createElement(Or,fk(vp({component:"input"},X),{ref:t,required:s,"aria-invalid":!!o,"aria-describedby":T,disabled:i,"data-disabled":i||void 0,"data-with-icon":!!u||void 0,"data-invalid":!!o||void 0,className:K.input})),v&&H.createElement("div",fk(vp({},b),{className:K.rightSection}),v))});rl.displayName="@mantine/core/Input";rl.Wrapper=Z6;rl.Label=ry;rl.Description=sy;rl.Error=oy;rl.Placeholder=tE;const Ic=rl;var eQ=Object.defineProperty,Wh=Object.getOwnPropertySymbols,oE=Object.prototype.hasOwnProperty,sE=Object.prototype.propertyIsEnumerable,pk=(e,t,n)=>t in e?eQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hk=(e,t)=>{for(var n in t||(t={}))oE.call(t,n)&&pk(e,n,t[n]);if(Wh)for(var n of Wh(t))sE.call(t,n)&&pk(e,n,t[n]);return e},tQ=(e,t)=>{var n={};for(var r in e)oE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Wh)for(var r of Wh(e))t.indexOf(r)<0&&sE.call(e,r)&&(n[r]=e[r]);return n};const nQ={multiple:!1},aE=d.forwardRef((e,t)=>{const n=Sn("FileButton",nQ,e),{onChange:r,children:o,multiple:s,accept:i,name:l,form:u,resetRef:p,disabled:h,capture:m,inputProps:v}=n,b=tQ(n,["onChange","children","multiple","accept","name","form","resetRef","disabled","capture","inputProps"]),y=d.useRef(),x=()=>{!h&&y.current.click()},w=_=>{r(s?Array.from(_.currentTarget.files):_.currentTarget.files[0]||null)};return dI(p,()=>{y.current.value=""}),H.createElement(H.Fragment,null,o(hk({onClick:x},b)),H.createElement("input",hk({style:{display:"none"},type:"file",accept:i,multiple:s,onChange:w,ref:Bd(t,y),name:l,form:u,capture:m},v)))});aE.displayName="@mantine/core/FileButton";const iE={xs:Oe(16),sm:Oe(22),md:Oe(26),lg:Oe(30),xl:Oe(36)},rQ={xs:Oe(10),sm:Oe(12),md:Oe(14),lg:Oe(16),xl:Oe(18)};var oQ=or((e,{disabled:t,radius:n,readOnly:r},{size:o,variant:s})=>({defaultValue:{display:"flex",alignItems:"center",backgroundColor:t?e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3]:e.colorScheme==="dark"?e.colors.dark[7]:s==="filled"?e.white:e.colors.gray[1],color:t?e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],height:ut({size:o,sizes:iE}),paddingLeft:`calc(${ut({size:o,sizes:e.spacing})} / 1.5)`,paddingRight:t||r?ut({size:o,sizes:e.spacing}):0,fontWeight:500,fontSize:ut({size:o,sizes:rQ}),borderRadius:ut({size:n,sizes:e.radius}),cursor:t?"not-allowed":"default",userSelect:"none",maxWidth:`calc(100% - ${Oe(10)})`},defaultValueRemove:{color:e.colorScheme==="dark"?e.colors.dark[0]:e.colors.gray[7],marginLeft:`calc(${ut({size:o,sizes:e.spacing})} / 6)`},defaultValueLabel:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}));const sQ=oQ;var aQ=Object.defineProperty,Vh=Object.getOwnPropertySymbols,lE=Object.prototype.hasOwnProperty,cE=Object.prototype.propertyIsEnumerable,mk=(e,t,n)=>t in e?aQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,iQ=(e,t)=>{for(var n in t||(t={}))lE.call(t,n)&&mk(e,n,t[n]);if(Vh)for(var n of Vh(t))cE.call(t,n)&&mk(e,n,t[n]);return e},lQ=(e,t)=>{var n={};for(var r in e)lE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Vh)for(var r of Vh(e))t.indexOf(r)<0&&cE.call(e,r)&&(n[r]=e[r]);return n};const cQ={xs:16,sm:22,md:24,lg:26,xl:30};function uE(e){var t=e,{label:n,classNames:r,styles:o,className:s,onRemove:i,disabled:l,readOnly:u,size:p,radius:h="sm",variant:m,unstyled:v}=t,b=lQ(t,["label","classNames","styles","className","onRemove","disabled","readOnly","size","radius","variant","unstyled"]);const{classes:y,cx:x}=sQ({disabled:l,readOnly:u,radius:h},{name:"MultiSelect",classNames:r,styles:o,unstyled:v,size:p,variant:m});return H.createElement("div",iQ({className:x(y.defaultValue,s)},b),H.createElement("span",{className:y.defaultValueLabel},n),!l&&!u&&H.createElement(VI,{"aria-hidden":!0,onMouseDown:i,size:cQ[p],radius:2,color:"blue",variant:"transparent",iconSize:"70%",className:y.defaultValueRemove,tabIndex:-1,unstyled:v}))}uE.displayName="@mantine/core/MultiSelect/DefaultValue";function uQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,disableSelectedItemFiltering:i}){if(!t&&s.length===0)return e;if(!t){const u=[];for(let p=0;ph===e[p].value&&!e[p].disabled))&&u.push(e[p]);return u}const l=[];for(let u=0;up===e[u].value&&!e[u].disabled),e[u])&&l.push(e[u]),!(l.length>=n));u+=1);return l}var dQ=Object.defineProperty,Uh=Object.getOwnPropertySymbols,dE=Object.prototype.hasOwnProperty,fE=Object.prototype.propertyIsEnumerable,gk=(e,t,n)=>t in e?dQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vk=(e,t)=>{for(var n in t||(t={}))dE.call(t,n)&&gk(e,n,t[n]);if(Uh)for(var n of Uh(t))fE.call(t,n)&&gk(e,n,t[n]);return e},fQ=(e,t)=>{var n={};for(var r in e)dE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Uh)for(var r of Uh(e))t.indexOf(r)<0&&fE.call(e,r)&&(n[r]=e[r]);return n};const pQ={xs:Oe(14),sm:Oe(18),md:Oe(20),lg:Oe(24),xl:Oe(28)};function hQ(e){var t=e,{size:n,error:r,style:o}=t,s=fQ(t,["size","error","style"]);const i=ua(),l=ut({size:n,sizes:pQ});return H.createElement("svg",vk({viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:vk({color:r?i.colors.red[6]:i.colors.gray[6],width:l,height:l},o),"data-chevron":!0},s),H.createElement("path",{d:"M4.93179 5.43179C4.75605 5.60753 4.75605 5.89245 4.93179 6.06819C5.10753 6.24392 5.39245 6.24392 5.56819 6.06819L7.49999 4.13638L9.43179 6.06819C9.60753 6.24392 9.89245 6.24392 10.0682 6.06819C10.2439 5.89245 10.2439 5.60753 10.0682 5.43179L7.81819 3.18179C7.73379 3.0974 7.61933 3.04999 7.49999 3.04999C7.38064 3.04999 7.26618 3.0974 7.18179 3.18179L4.93179 5.43179ZM10.0682 9.56819C10.2439 9.39245 10.2439 9.10753 10.0682 8.93179C9.89245 8.75606 9.60753 8.75606 9.43179 8.93179L7.49999 10.8636L5.56819 8.93179C5.39245 8.75606 5.10753 8.75606 4.93179 8.93179C4.75605 9.10753 4.75605 9.39245 4.93179 9.56819L7.18179 11.8182C7.35753 11.9939 7.64245 11.9939 7.81819 11.8182L10.0682 9.56819Z",fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd"}))}var mQ=Object.defineProperty,gQ=Object.defineProperties,vQ=Object.getOwnPropertyDescriptors,bk=Object.getOwnPropertySymbols,bQ=Object.prototype.hasOwnProperty,xQ=Object.prototype.propertyIsEnumerable,xk=(e,t,n)=>t in e?mQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yQ=(e,t)=>{for(var n in t||(t={}))bQ.call(t,n)&&xk(e,n,t[n]);if(bk)for(var n of bk(t))xQ.call(t,n)&&xk(e,n,t[n]);return e},CQ=(e,t)=>gQ(e,vQ(t));function pE({shouldClear:e,clearButtonProps:t,onClear:n,size:r,error:o}){return e?H.createElement(VI,CQ(yQ({},t),{variant:"transparent",onClick:n,size:r,onMouseDown:s=>s.preventDefault()})):H.createElement(hQ,{error:o,size:r})}pE.displayName="@mantine/core/SelectRightSection";var wQ=Object.defineProperty,SQ=Object.defineProperties,kQ=Object.getOwnPropertyDescriptors,Gh=Object.getOwnPropertySymbols,hE=Object.prototype.hasOwnProperty,mE=Object.prototype.propertyIsEnumerable,yk=(e,t,n)=>t in e?wQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_v=(e,t)=>{for(var n in t||(t={}))hE.call(t,n)&&yk(e,n,t[n]);if(Gh)for(var n of Gh(t))mE.call(t,n)&&yk(e,n,t[n]);return e},Ck=(e,t)=>SQ(e,kQ(t)),_Q=(e,t)=>{var n={};for(var r in e)hE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Gh)for(var r of Gh(e))t.indexOf(r)<0&&mE.call(e,r)&&(n[r]=e[r]);return n};function gE(e){var t=e,{styles:n,rightSection:r,rightSectionWidth:o,theme:s}=t,i=_Q(t,["styles","rightSection","rightSectionWidth","theme"]);if(r)return{rightSection:r,rightSectionWidth:o,styles:n};const l=typeof n=="function"?n(s):n;return{rightSection:!i.readOnly&&!(i.disabled&&i.shouldClear)&&H.createElement(pE,_v({},i)),styles:Ck(_v({},l),{rightSection:Ck(_v({},l==null?void 0:l.rightSection),{pointerEvents:i.shouldClear?void 0:"none"})})}}var jQ=Object.defineProperty,PQ=Object.defineProperties,IQ=Object.getOwnPropertyDescriptors,wk=Object.getOwnPropertySymbols,EQ=Object.prototype.hasOwnProperty,MQ=Object.prototype.propertyIsEnumerable,Sk=(e,t,n)=>t in e?jQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,OQ=(e,t)=>{for(var n in t||(t={}))EQ.call(t,n)&&Sk(e,n,t[n]);if(wk)for(var n of wk(t))MQ.call(t,n)&&Sk(e,n,t[n]);return e},DQ=(e,t)=>PQ(e,IQ(t)),RQ=or((e,{invalid:t},{size:n})=>({wrapper:{position:"relative","&:has(input:disabled)":{cursor:"not-allowed",pointerEvents:"none","& .mantine-MultiSelect-input":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[1],color:e.colors.dark[2],opacity:.6,"&::placeholder":{color:e.colors.dark[2]}},"& .mantine-MultiSelect-defaultValue":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[3],color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7]}}},values:{minHeight:`calc(${ut({size:n,sizes:oo})} - ${Oe(2)})`,display:"flex",alignItems:"center",flexWrap:"wrap",marginLeft:`calc(-${e.spacing.xs} / 2)`,boxSizing:"border-box","&[data-clearable]":{marginRight:ut({size:n,sizes:oo})}},value:{margin:`calc(${e.spacing.xs} / 2 - ${Oe(2)}) calc(${e.spacing.xs} / 2)`},searchInput:DQ(OQ({},e.fn.fontStyles()),{flex:1,minWidth:Oe(60),backgroundColor:"transparent",border:0,outline:0,fontSize:ut({size:n,sizes:e.fontSizes}),padding:0,marginLeft:`calc(${e.spacing.xs} / 2)`,appearance:"none",color:"inherit",maxHeight:ut({size:n,sizes:iE}),"&::placeholder":{opacity:1,color:t?e.colors.red[e.fn.primaryShade()]:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]},"&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}),searchInputEmpty:{width:"100%"},searchInputInputHidden:{flex:0,width:0,minWidth:0,margin:0,overflow:"hidden"},searchInputPointer:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}},input:{cursor:"pointer","&:disabled":{cursor:"not-allowed",pointerEvents:"none"}}}));const AQ=RQ;var NQ=Object.defineProperty,TQ=Object.defineProperties,$Q=Object.getOwnPropertyDescriptors,Kh=Object.getOwnPropertySymbols,vE=Object.prototype.hasOwnProperty,bE=Object.prototype.propertyIsEnumerable,kk=(e,t,n)=>t in e?NQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Al=(e,t)=>{for(var n in t||(t={}))vE.call(t,n)&&kk(e,n,t[n]);if(Kh)for(var n of Kh(t))bE.call(t,n)&&kk(e,n,t[n]);return e},_k=(e,t)=>TQ(e,$Q(t)),LQ=(e,t)=>{var n={};for(var r in e)vE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Kh)for(var r of Kh(e))t.indexOf(r)<0&&bE.call(e,r)&&(n[r]=e[r]);return n};function zQ(e,t,n){return t?!1:n.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function FQ(e,t){return!!e&&!t.some(n=>n.value.toLowerCase()===e.toLowerCase())}function jk(e,t){if(!Array.isArray(e))return;if(t.length===0)return[];const n=t.map(r=>typeof r=="object"?r.value:r);return e.filter(r=>n.includes(r))}const BQ={size:"sm",valueComponent:uE,itemComponent:Yx,transitionProps:{transition:"fade",duration:0},maxDropdownHeight:220,shadow:"sm",searchable:!1,filter:zQ,limit:1/0,clearSearchOnChange:!0,clearable:!1,clearSearchOnBlur:!1,disabled:!1,initiallyOpened:!1,creatable:!1,shouldCreate:FQ,switchDirectionOnFlip:!1,zIndex:Gx("popover"),selectOnBlur:!1,positionDependencies:[],dropdownPosition:"flip"},xE=d.forwardRef((e,t)=>{const n=Sn("MultiSelect",BQ,e),{className:r,style:o,required:s,label:i,description:l,size:u,error:p,classNames:h,styles:m,wrapperProps:v,value:b,defaultValue:y,data:x,onChange:w,valueComponent:k,itemComponent:_,id:j,transitionProps:I,maxDropdownHeight:E,shadow:M,nothingFound:D,onFocus:R,onBlur:A,searchable:O,placeholder:T,filter:K,limit:F,clearSearchOnChange:V,clearable:X,clearSearchOnBlur:W,variant:z,onSearchChange:Y,searchValue:B,disabled:q,initiallyOpened:re,radius:Q,icon:le,rightSection:se,rightSectionWidth:U,creatable:G,getCreateLabel:te,shouldCreate:ae,onCreate:oe,sx:pe,dropdownComponent:ue,onDropdownClose:me,onDropdownOpen:Ce,maxSelectedValues:ge,withinPortal:fe,portalProps:De,switchDirectionOnFlip:je,zIndex:Be,selectOnBlur:rt,name:Ue,dropdownPosition:wt,errorProps:Ye,labelProps:tt,descriptionProps:be,form:Re,positionDependencies:st,onKeyDown:mt,unstyled:ve,inputContainer:Qe,inputWrapperOrder:ot,readOnly:lt,withAsterisk:Me,clearButtonProps:$e,hoverOnSearchChange:At,disableSelectedItemFiltering:ke}=n,ze=LQ(n,["className","style","required","label","description","size","error","classNames","styles","wrapperProps","value","defaultValue","data","onChange","valueComponent","itemComponent","id","transitionProps","maxDropdownHeight","shadow","nothingFound","onFocus","onBlur","searchable","placeholder","filter","limit","clearSearchOnChange","clearable","clearSearchOnBlur","variant","onSearchChange","searchValue","disabled","initiallyOpened","radius","icon","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","onCreate","sx","dropdownComponent","onDropdownClose","onDropdownOpen","maxSelectedValues","withinPortal","portalProps","switchDirectionOnFlip","zIndex","selectOnBlur","name","dropdownPosition","errorProps","labelProps","descriptionProps","form","positionDependencies","onKeyDown","unstyled","inputContainer","inputWrapperOrder","readOnly","withAsterisk","clearButtonProps","hoverOnSearchChange","disableSelectedItemFiltering"]),{classes:Le,cx:Ve,theme:ct}=AQ({invalid:!!p},{name:"MultiSelect",classNames:h,styles:m,unstyled:ve,size:u,variant:z}),{systemStyles:bn,rest:jt}=Xm(ze),Pt=d.useRef(),sr=d.useRef({}),Mn=qx(j),[pn,an]=d.useState(re),[Qt,mr]=d.useState(-1),[wo,ar]=d.useState("column"),[ir,Is]=ad({value:B,defaultValue:"",finalValue:void 0,onChange:Y}),[Es,ha]=d.useState(!1),{scrollIntoView:ma,targetRef:cl,scrollableRef:ga}=pI({duration:0,offset:5,cancelable:!1,isList:!0}),ul=G&&typeof te=="function";let qe=null;const Nt=x.map(Je=>typeof Je=="string"?{label:Je,value:Je}:Je),On=nI({data:Nt}),[bt,va]=ad({value:jk(b,x),defaultValue:jk(y,x),finalValue:[],onChange:w}),Ar=d.useRef(!!ge&&ge{if(!lt){const St=bt.filter(xt=>xt!==Je);va(St),ge&&St.length{Is(Je.currentTarget.value),!q&&!Ar.current&&O&&an(!0)},Ng=Je=>{typeof R=="function"&&R(Je),!q&&!Ar.current&&O&&an(!0)},Dn=uQ({data:On,searchable:O,searchValue:ir,limit:F,filter:K,value:bt,disableSelectedItemFiltering:ke});ul&&ae(ir,On)&&(qe=te(ir),Dn.push({label:ir,value:ir,creatable:!0}));const Ms=Math.min(Qt,Dn.length-1),Jd=(Je,St,xt)=>{let kt=Je;for(;xt(kt);)if(kt=St(kt),!Dn[kt].disabled)return kt;return Je};$o(()=>{mr(At&&ir?0:-1)},[ir,At]),$o(()=>{!q&&bt.length>x.length&&an(!1),ge&&bt.length=ge&&(Ar.current=!0,an(!1))},[bt]);const dl=Je=>{if(!lt)if(V&&Is(""),bt.includes(Je.value))Zd(Je.value);else{if(Je.creatable&&typeof oe=="function"){const St=oe(Je.value);typeof St<"u"&&St!==null&&va(typeof St=="string"?[...bt,St]:[...bt,St.value])}else va([...bt,Je.value]);bt.length===ge-1&&(Ar.current=!0,an(!1)),Dn.length===1&&an(!1)}},Qc=Je=>{typeof A=="function"&&A(Je),rt&&Dn[Ms]&&pn&&dl(Dn[Ms]),W&&Is(""),an(!1)},ai=Je=>{if(Es||(mt==null||mt(Je),lt)||Je.key!=="Backspace"&&ge&&Ar.current)return;const St=wo==="column",xt=()=>{mr(qn=>{var Ut;const kn=Jd(qn,lr=>lr+1,lr=>lr{mr(qn=>{var Ut;const kn=Jd(qn,lr=>lr-1,lr=>lr>0);return pn&&(cl.current=sr.current[(Ut=Dn[kn])==null?void 0:Ut.value],ma({alignment:St?"start":"end"})),kn})};switch(Je.key){case"ArrowUp":{Je.preventDefault(),an(!0),St?kt():xt();break}case"ArrowDown":{Je.preventDefault(),an(!0),St?xt():kt();break}case"Enter":{Je.preventDefault(),Dn[Ms]&&pn?dl(Dn[Ms]):an(!0);break}case" ":{O||(Je.preventDefault(),Dn[Ms]&&pn?dl(Dn[Ms]):an(!0));break}case"Backspace":{bt.length>0&&ir.length===0&&(va(bt.slice(0,-1)),an(!0),ge&&(Ar.current=!1));break}case"Home":{if(!O){Je.preventDefault(),pn||an(!0);const qn=Dn.findIndex(Ut=>!Ut.disabled);mr(qn),ma({alignment:St?"end":"start"})}break}case"End":{if(!O){Je.preventDefault(),pn||an(!0);const qn=Dn.map(Ut=>!!Ut.disabled).lastIndexOf(!1);mr(qn),ma({alignment:St?"end":"start"})}break}case"Escape":an(!1)}},Zc=bt.map(Je=>{let St=On.find(xt=>xt.value===Je&&!xt.disabled);return!St&&ul&&(St={value:Je,label:Je}),St}).filter(Je=>!!Je).map((Je,St)=>H.createElement(k,_k(Al({},Je),{variant:z,disabled:q,className:Le.value,readOnly:lt,onRemove:xt=>{xt.preventDefault(),xt.stopPropagation(),Zd(Je.value)},key:Je.value,size:u,styles:m,classNames:h,radius:Q,index:St}))),Jc=Je=>bt.includes(Je),Tg=()=>{var Je;Is(""),va([]),(Je=Pt.current)==null||Je.focus(),ge&&(Ar.current=!1)},ba=!lt&&(Dn.length>0?pn:pn&&!!D);return $o(()=>{const Je=ba?Ce:me;typeof Je=="function"&&Je()},[ba]),H.createElement(Ic.Wrapper,Al(Al({required:s,id:Mn,label:i,error:p,description:l,size:u,className:r,style:o,classNames:h,styles:m,__staticSelector:"MultiSelect",sx:pe,errorProps:Ye,descriptionProps:be,labelProps:tt,inputContainer:Qe,inputWrapperOrder:ot,unstyled:ve,withAsterisk:Me,variant:z},bn),v),H.createElement(Ha,{opened:ba,transitionProps:I,shadow:"sm",withinPortal:fe,portalProps:De,__staticSelector:"MultiSelect",onDirectionChange:ar,switchDirectionOnFlip:je,zIndex:Be,dropdownPosition:wt,positionDependencies:[...st,ir],classNames:h,styles:m,unstyled:ve,variant:z},H.createElement(Ha.Target,null,H.createElement("div",{className:Le.wrapper,role:"combobox","aria-haspopup":"listbox","aria-owns":pn&&ba?`${Mn}-items`:null,"aria-controls":Mn,"aria-expanded":pn,onMouseLeave:()=>mr(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:Ue,value:bt.join(","),form:Re,disabled:q}),H.createElement(Ic,Al({__staticSelector:"MultiSelect",style:{overflow:"hidden"},component:"div",multiline:!0,size:u,variant:z,disabled:q,error:p,required:s,radius:Q,icon:le,unstyled:ve,onMouseDown:Je=>{var St;Je.preventDefault(),!q&&!Ar.current&&an(!pn),(St=Pt.current)==null||St.focus()},classNames:_k(Al({},h),{input:Ve({[Le.input]:!O},h==null?void 0:h.input)})},gE({theme:ct,rightSection:se,rightSectionWidth:U,styles:m,size:u,shouldClear:X&&bt.length>0,onClear:Tg,error:p,disabled:q,clearButtonProps:$e,readOnly:lt})),H.createElement("div",{className:Le.values,"data-clearable":X||void 0},Zc,H.createElement("input",Al({ref:Bd(t,Pt),type:"search",id:Mn,className:Ve(Le.searchInput,{[Le.searchInputPointer]:!O,[Le.searchInputInputHidden]:!pn&&bt.length>0||!O&&bt.length>0,[Le.searchInputEmpty]:bt.length===0}),onKeyDown:ai,value:ir,onChange:Ag,onFocus:Ng,onBlur:Qc,readOnly:!O||Ar.current||lt,placeholder:bt.length===0?T:void 0,disabled:q,"data-mantine-stop-propagation":pn,autoComplete:"off",onCompositionStart:()=>ha(!0),onCompositionEnd:()=>ha(!1)},jt)))))),H.createElement(Ha.Dropdown,{component:ue||Jm,maxHeight:E,direction:wo,id:Mn,innerRef:ga,__staticSelector:"MultiSelect",classNames:h,styles:m},H.createElement(Xx,{data:Dn,hovered:Ms,classNames:h,styles:m,uuid:Mn,__staticSelector:"MultiSelect",onItemHover:mr,onItemSelect:dl,itemsRefs:sr,itemComponent:_,size:u,nothingFound:D,isItemSelected:Jc,creatable:G&&!!qe,createLabel:qe,unstyled:ve,variant:z}))))});xE.displayName="@mantine/core/MultiSelect";var HQ=Object.defineProperty,WQ=Object.defineProperties,VQ=Object.getOwnPropertyDescriptors,qh=Object.getOwnPropertySymbols,yE=Object.prototype.hasOwnProperty,CE=Object.prototype.propertyIsEnumerable,Pk=(e,t,n)=>t in e?HQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jv=(e,t)=>{for(var n in t||(t={}))yE.call(t,n)&&Pk(e,n,t[n]);if(qh)for(var n of qh(t))CE.call(t,n)&&Pk(e,n,t[n]);return e},UQ=(e,t)=>WQ(e,VQ(t)),GQ=(e,t)=>{var n={};for(var r in e)yE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&qh)for(var r of qh(e))t.indexOf(r)<0&&CE.call(e,r)&&(n[r]=e[r]);return n};const KQ={type:"text",size:"sm",__staticSelector:"TextInput"},wE=d.forwardRef((e,t)=>{const n=H6("TextInput",KQ,e),{inputProps:r,wrapperProps:o}=n,s=GQ(n,["inputProps","wrapperProps"]);return H.createElement(Ic.Wrapper,jv({},o),H.createElement(Ic,UQ(jv(jv({},r),s),{ref:t})))});wE.displayName="@mantine/core/TextInput";function qQ({data:e,searchable:t,limit:n,searchValue:r,filter:o,value:s,filterDataOnExactSearchMatch:i}){if(!t)return e;const l=s!=null&&e.find(p=>p.value===s)||null;if(l&&!i&&(l==null?void 0:l.label)===r){if(n){if(n>=e.length)return e;const p=e.indexOf(l),h=p+n,m=h-e.length;return m>0?e.slice(p-m):e.slice(p,h)}return e}const u=[];for(let p=0;p=n));p+=1);return u}var XQ=or(()=>({input:{"&:not(:disabled)":{cursor:"pointer","&::selection":{backgroundColor:"transparent"}}}}));const YQ=XQ;var QQ=Object.defineProperty,ZQ=Object.defineProperties,JQ=Object.getOwnPropertyDescriptors,Xh=Object.getOwnPropertySymbols,SE=Object.prototype.hasOwnProperty,kE=Object.prototype.propertyIsEnumerable,Ik=(e,t,n)=>t in e?QQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_u=(e,t)=>{for(var n in t||(t={}))SE.call(t,n)&&Ik(e,n,t[n]);if(Xh)for(var n of Xh(t))kE.call(t,n)&&Ik(e,n,t[n]);return e},Pv=(e,t)=>ZQ(e,JQ(t)),eZ=(e,t)=>{var n={};for(var r in e)SE.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Xh)for(var r of Xh(e))t.indexOf(r)<0&&kE.call(e,r)&&(n[r]=e[r]);return n};function tZ(e,t){return t.label.toLowerCase().trim().includes(e.toLowerCase().trim())}function nZ(e,t){return!!e&&!t.some(n=>n.label.toLowerCase()===e.toLowerCase())}const rZ={required:!1,size:"sm",shadow:"sm",itemComponent:Yx,transitionProps:{transition:"fade",duration:0},initiallyOpened:!1,filter:tZ,maxDropdownHeight:220,searchable:!1,clearable:!1,limit:1/0,disabled:!1,creatable:!1,shouldCreate:nZ,selectOnBlur:!1,switchDirectionOnFlip:!1,filterDataOnExactSearchMatch:!1,zIndex:Gx("popover"),positionDependencies:[],dropdownPosition:"flip"},ay=d.forwardRef((e,t)=>{const n=H6("Select",rZ,e),{inputProps:r,wrapperProps:o,shadow:s,data:i,value:l,defaultValue:u,onChange:p,itemComponent:h,onKeyDown:m,onBlur:v,onFocus:b,transitionProps:y,initiallyOpened:x,unstyled:w,classNames:k,styles:_,filter:j,maxDropdownHeight:I,searchable:E,clearable:M,nothingFound:D,limit:R,disabled:A,onSearchChange:O,searchValue:T,rightSection:K,rightSectionWidth:F,creatable:V,getCreateLabel:X,shouldCreate:W,selectOnBlur:z,onCreate:Y,dropdownComponent:B,onDropdownClose:q,onDropdownOpen:re,withinPortal:Q,portalProps:le,switchDirectionOnFlip:se,zIndex:U,name:G,dropdownPosition:te,allowDeselect:ae,placeholder:oe,filterDataOnExactSearchMatch:pe,form:ue,positionDependencies:me,readOnly:Ce,clearButtonProps:ge,hoverOnSearchChange:fe}=n,De=eZ(n,["inputProps","wrapperProps","shadow","data","value","defaultValue","onChange","itemComponent","onKeyDown","onBlur","onFocus","transitionProps","initiallyOpened","unstyled","classNames","styles","filter","maxDropdownHeight","searchable","clearable","nothingFound","limit","disabled","onSearchChange","searchValue","rightSection","rightSectionWidth","creatable","getCreateLabel","shouldCreate","selectOnBlur","onCreate","dropdownComponent","onDropdownClose","onDropdownOpen","withinPortal","portalProps","switchDirectionOnFlip","zIndex","name","dropdownPosition","allowDeselect","placeholder","filterDataOnExactSearchMatch","form","positionDependencies","readOnly","clearButtonProps","hoverOnSearchChange"]),{classes:je,cx:Be,theme:rt}=YQ(),[Ue,wt]=d.useState(x),[Ye,tt]=d.useState(-1),be=d.useRef(),Re=d.useRef({}),[st,mt]=d.useState("column"),ve=st==="column",{scrollIntoView:Qe,targetRef:ot,scrollableRef:lt}=pI({duration:0,offset:5,cancelable:!1,isList:!0}),Me=ae===void 0?M:ae,$e=qe=>{if(Ue!==qe){wt(qe);const Nt=qe?re:q;typeof Nt=="function"&&Nt()}},At=V&&typeof X=="function";let ke=null;const ze=i.map(qe=>typeof qe=="string"?{label:qe,value:qe}:qe),Le=nI({data:ze}),[Ve,ct,bn]=ad({value:l,defaultValue:u,finalValue:null,onChange:p}),jt=Le.find(qe=>qe.value===Ve),[Pt,sr]=ad({value:T,defaultValue:(jt==null?void 0:jt.label)||"",finalValue:void 0,onChange:O}),Mn=qe=>{sr(qe),E&&typeof O=="function"&&O(qe)},pn=()=>{var qe;Ce||(ct(null),bn||Mn(""),(qe=be.current)==null||qe.focus())};d.useEffect(()=>{const qe=Le.find(Nt=>Nt.value===Ve);qe?Mn(qe.label):(!At||!Ve)&&Mn("")},[Ve]),d.useEffect(()=>{jt&&(!E||!Ue)&&Mn(jt.label)},[jt==null?void 0:jt.label]);const an=qe=>{if(!Ce)if(Me&&(jt==null?void 0:jt.value)===qe.value)ct(null),$e(!1);else{if(qe.creatable&&typeof Y=="function"){const Nt=Y(qe.value);typeof Nt<"u"&&Nt!==null&&ct(typeof Nt=="string"?Nt:Nt.value)}else ct(qe.value);bn||Mn(qe.label),tt(-1),$e(!1),be.current.focus()}},Qt=qQ({data:Le,searchable:E,limit:R,searchValue:Pt,filter:j,filterDataOnExactSearchMatch:pe,value:Ve});At&&W(Pt,Qt)&&(ke=X(Pt),Qt.push({label:Pt,value:Pt,creatable:!0}));const mr=(qe,Nt,On)=>{let bt=qe;for(;On(bt);)if(bt=Nt(bt),!Qt[bt].disabled)return bt;return qe};$o(()=>{tt(fe&&Pt?0:-1)},[Pt,fe]);const wo=Ve?Qt.findIndex(qe=>qe.value===Ve):0,ar=!Ce&&(Qt.length>0?Ue:Ue&&!!D),ir=()=>{tt(qe=>{var Nt;const On=mr(qe,bt=>bt-1,bt=>bt>0);return ot.current=Re.current[(Nt=Qt[On])==null?void 0:Nt.value],ar&&Qe({alignment:ve?"start":"end"}),On})},Is=()=>{tt(qe=>{var Nt;const On=mr(qe,bt=>bt+1,bt=>btwindow.setTimeout(()=>{var qe;ot.current=Re.current[(qe=Qt[wo])==null?void 0:qe.value],Qe({alignment:ve?"end":"start"})},50);$o(()=>{ar&&Es()},[ar]);const ha=qe=>{switch(typeof m=="function"&&m(qe),qe.key){case"ArrowUp":{qe.preventDefault(),Ue?ve?ir():Is():(tt(wo),$e(!0),Es());break}case"ArrowDown":{qe.preventDefault(),Ue?ve?Is():ir():(tt(wo),$e(!0),Es());break}case"Home":{if(!E){qe.preventDefault(),Ue||$e(!0);const Nt=Qt.findIndex(On=>!On.disabled);tt(Nt),ar&&Qe({alignment:ve?"end":"start"})}break}case"End":{if(!E){qe.preventDefault(),Ue||$e(!0);const Nt=Qt.map(On=>!!On.disabled).lastIndexOf(!1);tt(Nt),ar&&Qe({alignment:ve?"end":"start"})}break}case"Escape":{qe.preventDefault(),$e(!1),tt(-1);break}case" ":{E||(qe.preventDefault(),Qt[Ye]&&Ue?an(Qt[Ye]):($e(!0),tt(wo),Es()));break}case"Enter":E||qe.preventDefault(),Qt[Ye]&&Ue&&(qe.preventDefault(),an(Qt[Ye]))}},ma=qe=>{typeof v=="function"&&v(qe);const Nt=Le.find(On=>On.value===Ve);z&&Qt[Ye]&&Ue&&an(Qt[Ye]),Mn((Nt==null?void 0:Nt.label)||""),$e(!1)},cl=qe=>{typeof b=="function"&&b(qe),E&&$e(!0)},ga=qe=>{Ce||(Mn(qe.currentTarget.value),M&&qe.currentTarget.value===""&&ct(null),tt(-1),$e(!0))},ul=()=>{Ce||($e(!Ue),Ve&&!Ue&&tt(wo))};return H.createElement(Ic.Wrapper,Pv(_u({},o),{__staticSelector:"Select"}),H.createElement(Ha,{opened:ar,transitionProps:y,shadow:s,withinPortal:Q,portalProps:le,__staticSelector:"Select",onDirectionChange:mt,switchDirectionOnFlip:se,zIndex:U,dropdownPosition:te,positionDependencies:[...me,Pt],classNames:k,styles:_,unstyled:w,variant:r.variant},H.createElement(Ha.Target,null,H.createElement("div",{role:"combobox","aria-haspopup":"listbox","aria-owns":ar?`${r.id}-items`:null,"aria-controls":r.id,"aria-expanded":ar,onMouseLeave:()=>tt(-1),tabIndex:-1},H.createElement("input",{type:"hidden",name:G,value:Ve||"",form:ue,disabled:A}),H.createElement(Ic,_u(Pv(_u(_u({autoComplete:"off",type:"search"},r),De),{ref:Bd(t,be),onKeyDown:ha,__staticSelector:"Select",value:Pt,placeholder:oe,onChange:ga,"aria-autocomplete":"list","aria-controls":ar?`${r.id}-items`:null,"aria-activedescendant":Ye>=0?`${r.id}-${Ye}`:null,onMouseDown:ul,onBlur:ma,onFocus:cl,readOnly:!E||Ce,disabled:A,"data-mantine-stop-propagation":ar,name:null,classNames:Pv(_u({},k),{input:Be({[je.input]:!E},k==null?void 0:k.input)})}),gE({theme:rt,rightSection:K,rightSectionWidth:F,styles:_,size:r.size,shouldClear:M&&!!jt,onClear:pn,error:o.error,clearButtonProps:ge,disabled:A,readOnly:Ce}))))),H.createElement(Ha.Dropdown,{component:B||Jm,maxHeight:I,direction:st,id:r.id,innerRef:lt,__staticSelector:"Select",classNames:k,styles:_},H.createElement(Xx,{data:Qt,hovered:Ye,classNames:k,styles:_,isItemSelected:qe=>qe===Ve,uuid:r.id,__staticSelector:"Select",onItemHover:tt,onItemSelect:an,itemsRefs:Re,itemComponent:h,size:r.size,nothingFound:D,creatable:At&&!!ke,createLabel:ke,"aria-label":o.label,unstyled:w,variant:r.variant}))))});ay.displayName="@mantine/core/Select";const Vd=()=>{const[e,t,n,r,o,s,i,l,u,p,h,m,v,b,y,x,w,k,_,j,I,E,M,D,R,A,O,T,K,F,V,X,W,z,Y,B,q,re,Q,le,se,U,G,te,ae,oe,pe,ue,me,Ce,ge,fe,De,je,Be,rt,Ue,wt,Ye,tt,be,Re,st,mt,ve,Qe,ot,lt,Me,$e,At,ke,ze,Le,Ve,ct]=ds("colors",["base.50","base.100","base.150","base.200","base.250","base.300","base.350","base.400","base.450","base.500","base.550","base.600","base.650","base.700","base.750","base.800","base.850","base.900","base.950","accent.50","accent.100","accent.150","accent.200","accent.250","accent.300","accent.350","accent.400","accent.450","accent.500","accent.550","accent.600","accent.650","accent.700","accent.750","accent.800","accent.850","accent.900","accent.950","baseAlpha.50","baseAlpha.100","baseAlpha.150","baseAlpha.200","baseAlpha.250","baseAlpha.300","baseAlpha.350","baseAlpha.400","baseAlpha.450","baseAlpha.500","baseAlpha.550","baseAlpha.600","baseAlpha.650","baseAlpha.700","baseAlpha.750","baseAlpha.800","baseAlpha.850","baseAlpha.900","baseAlpha.950","accentAlpha.50","accentAlpha.100","accentAlpha.150","accentAlpha.200","accentAlpha.250","accentAlpha.300","accentAlpha.350","accentAlpha.400","accentAlpha.450","accentAlpha.500","accentAlpha.550","accentAlpha.600","accentAlpha.650","accentAlpha.700","accentAlpha.750","accentAlpha.800","accentAlpha.850","accentAlpha.900","accentAlpha.950"]);return{base50:e,base100:t,base150:n,base200:r,base250:o,base300:s,base350:i,base400:l,base450:u,base500:p,base550:h,base600:m,base650:v,base700:b,base750:y,base800:x,base850:w,base900:k,base950:_,accent50:j,accent100:I,accent150:E,accent200:M,accent250:D,accent300:R,accent350:A,accent400:O,accent450:T,accent500:K,accent550:F,accent600:V,accent650:X,accent700:W,accent750:z,accent800:Y,accent850:B,accent900:q,accent950:re,baseAlpha50:Q,baseAlpha100:le,baseAlpha150:se,baseAlpha200:U,baseAlpha250:G,baseAlpha300:te,baseAlpha350:ae,baseAlpha400:oe,baseAlpha450:pe,baseAlpha500:ue,baseAlpha550:me,baseAlpha600:Ce,baseAlpha650:ge,baseAlpha700:fe,baseAlpha750:De,baseAlpha800:je,baseAlpha850:Be,baseAlpha900:rt,baseAlpha950:Ue,accentAlpha50:wt,accentAlpha100:Ye,accentAlpha150:tt,accentAlpha200:be,accentAlpha250:Re,accentAlpha300:st,accentAlpha350:mt,accentAlpha400:ve,accentAlpha450:Qe,accentAlpha500:ot,accentAlpha550:lt,accentAlpha600:Me,accentAlpha650:$e,accentAlpha700:At,accentAlpha750:ke,accentAlpha800:ze,accentAlpha850:Le,accentAlpha900:Ve,accentAlpha950:ct}},Ae=(e,t)=>n=>n==="light"?e:t,_E=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:u,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Vd(),{colorMode:x}=la(),[w]=ds("shadows",["dark-lg"]),[k,_,j]=ds("space",[1,2,6]),[I]=ds("radii",["base"]),[E]=ds("lineHeights",["base"]);return d.useCallback(()=>({label:{color:Ae(l,r)(x)},separatorLabel:{color:Ae(s,s)(x),"::after":{borderTopColor:Ae(r,l)(x)}},input:{border:"unset",backgroundColor:Ae(e,p)(x),borderRadius:I,borderStyle:"solid",borderWidth:"2px",borderColor:Ae(n,u)(x),color:Ae(p,t)(x),minHeight:"unset",lineHeight:E,height:"auto",paddingRight:0,paddingLeft:0,paddingInlineStart:_,paddingInlineEnd:j,paddingTop:k,paddingBottom:k,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(x)},"&:focus":{borderColor:Ae(m,y)(x)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(x)},"&:focus-within":{borderColor:Ae(h,y)(x)},"&[data-disabled]":{backgroundColor:Ae(r,l)(x),color:Ae(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Ae(t,p)(x),color:Ae(p,t)(x),button:{color:Ae(p,t)(x)},"&:hover":{backgroundColor:Ae(r,l)(x),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,u)(x),borderColor:Ae(n,u)(x),boxShadow:w},item:{backgroundColor:Ae(n,u)(x),color:Ae(u,n)(x),padding:6,"&[data-hovered]":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)},"&[data-active]":{backgroundColor:Ae(r,l)(x),"&:hover":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)}},"&[data-selected]":{backgroundColor:Ae(v,y)(x),color:Ae(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Ae(b,b)(x),color:Ae("white",e)(x)}},"&[data-disabled]":{color:Ae(s,i)(x),cursor:"not-allowed"}},rightSection:{width:32,button:{color:Ae(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,l,u,p,w,x,E,I,k,_,j])},oZ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,onChange:o,label:s,disabled:i,...l}=e,u=ee(),[p,h]=d.useState(""),m=d.useCallback(x=>{x.shiftKey&&u(Ir(!0))},[u]),v=d.useCallback(x=>{x.shiftKey||u(Ir(!1))},[u]),b=d.useCallback(x=>{o&&o(x)},[o]),y=_E();return a.jsx(Rt,{label:n,placement:"top",hasArrow:!0,children:a.jsx(ay,{ref:r,label:s?a.jsx(sn,{isDisabled:i,children:a.jsx(Hn,{children:s})}):void 0,disabled:i,searchValue:p,onSearchChange:h,onChange:b,onKeyDown:m,onKeyUp:v,searchable:t,maxDropdownHeight:300,styles:y,...l})})},Kt=d.memo(oZ),sZ=ie([xe],({changeBoardModal:e})=>{const{isModalOpen:t,imagesToChange:n}=e;return{isModalOpen:t,imagesToChange:n}},we),aZ=()=>{const e=ee(),[t,n]=d.useState(),{data:r,isFetching:o}=pm(),{imagesToChange:s,isModalOpen:i}=L(sZ),[l]=X7(),[u]=Y7(),{t:p}=Z(),h=d.useMemo(()=>{const y=[{label:p("boards.uncategorized"),value:"none"}];return(r??[]).forEach(x=>y.push({label:x.board_name,value:x.board_id})),y},[r,p]),m=d.useCallback(()=>{e(zC()),e($b(!1))},[e]),v=d.useCallback(()=>{!s.length||!t||(t==="none"?u({imageDTOs:s}):l({imageDTOs:s,board_id:t}),n(null),e(zC()))},[l,e,s,u,t]),b=d.useRef(null);return a.jsx($d,{isOpen:i,onClose:m,leastDestructiveRef:b,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:p("boards.changeBoard")}),a.jsx(Vo,{children:a.jsxs($,{sx:{flexDir:"column",gap:4},children:[a.jsxs(ye,{children:["Moving ",`${s.length}`," image",`${s.length>1?"s":""}`," to board:"]}),a.jsx(Kt,{placeholder:p(o?"boards.loading":"boards.selectBoard"),disabled:o,onChange:y=>n(y),value:t,data:h})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:b,onClick:m,children:p("boards.cancel")}),a.jsx(it,{colorScheme:"accent",onClick:v,ml:3,children:p("boards.move")})]})]})})})},iZ=d.memo(aZ),lZ=e=>{const{label:t,isDisabled:n=!1,width:r="auto",formControlProps:o,formLabelProps:s,tooltip:i,helperText:l,...u}=e;return a.jsx(Rt,{label:i,hasArrow:!0,placement:"top",isDisabled:!i,children:a.jsx(sn,{isDisabled:n,width:r,alignItems:"center",...o,children:a.jsxs($,{sx:{flexDir:"column",w:"full"},children:[a.jsxs($,{sx:{alignItems:"center",w:"full"},children:[t&&a.jsx(Hn,{my:1,flexGrow:1,sx:{cursor:n?"not-allowed":"pointer",...s==null?void 0:s.sx,pe:4},...s,children:t}),a.jsx(Hx,{...u})]}),l&&a.jsx(F5,{children:a.jsx(ye,{variant:"subtext",children:l})})]})})})},Vt=d.memo(lZ),cZ=e=>{const{t}=Z(),{imageUsage:n,topMessage:r=t("gallery.currentlyInUse"),bottomMessage:o=t("gallery.featuresWillReset")}=e;return!n||!Br(n)?null:a.jsxs(a.Fragment,{children:[a.jsx(ye,{children:r}),a.jsxs(Od,{sx:{paddingInlineStart:6},children:[n.isInitialImage&&a.jsx(lo,{children:t("common.img2img")}),n.isCanvasImage&&a.jsx(lo,{children:t("common.unifiedCanvas")}),n.isControlNetImage&&a.jsx(lo,{children:t("common.controlNet")}),n.isIPAdapterImage&&a.jsx(lo,{children:t("common.ipAdapter")}),n.isNodesImage&&a.jsx(lo,{children:t("common.nodeEditor")})]}),a.jsx(ye,{children:o})]})},jE=d.memo(cZ),uZ=ie([xe,Q7],(e,t)=>{const{system:n,config:r,deleteImageModal:o}=e,{shouldConfirmOnDelete:s}=n,{canRestoreDeletedImagesFromBin:i}=r,{imagesToDelete:l,isModalOpen:u}=o,p=(l??[]).map(({image_name:m})=>Lj(e,m)),h={isInitialImage:Br(p,m=>m.isInitialImage),isCanvasImage:Br(p,m=>m.isCanvasImage),isNodesImage:Br(p,m=>m.isNodesImage),isControlNetImage:Br(p,m=>m.isControlNetImage),isIPAdapterImage:Br(p,m=>m.isIPAdapterImage)};return{shouldConfirmOnDelete:s,canRestoreDeletedImagesFromBin:i,imagesToDelete:l,imagesUsage:t,isModalOpen:u,imageUsageSummary:h}},we),dZ=()=>{const e=ee(),{t}=Z(),{shouldConfirmOnDelete:n,canRestoreDeletedImagesFromBin:r,imagesToDelete:o,imagesUsage:s,isModalOpen:i,imageUsageSummary:l}=L(uZ),u=d.useCallback(v=>e(zj(!v.target.checked)),[e]),p=d.useCallback(()=>{e(FC()),e(Z7(!1))},[e]),h=d.useCallback(()=>{!o.length||!s.length||(e(FC()),e(J7({imageDTOs:o,imagesUsage:s})))},[e,o,s]),m=d.useRef(null);return a.jsx($d,{isOpen:i,onClose:p,leastDestructiveRef:m,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:t("gallery.deleteImage")}),a.jsx(Vo,{children:a.jsxs($,{direction:"column",gap:3,children:[a.jsx(jE,{imageUsage:l}),a.jsx(Vr,{}),a.jsx(ye,{children:t(r?"gallery.deleteImageBin":"gallery.deleteImagePermanent")}),a.jsx(ye,{children:t("common.areYouSure")}),a.jsx(Vt,{label:t("common.dontAskMeAgain"),isChecked:!n,onChange:u})]})}),a.jsxs(gs,{children:[a.jsx(it,{ref:m,onClick:p,children:"Cancel"}),a.jsx(it,{colorScheme:"error",onClick:h,ml:3,children:"Delete"})]})]})})})},fZ=d.memo(dZ),PE=Pe((e,t)=>{const{role:n,tooltip:r="",tooltipProps:o,isChecked:s,...i}=e;return a.jsx(Rt,{label:r,hasArrow:!0,...o,...o!=null&&o.placement?{placement:o.placement}:{placement:"top"},children:a.jsx(ps,{ref:t,role:n,colorScheme:s?"accent":"base",...i})})});PE.displayName="IAIIconButton";const Te=d.memo(PE);var IE={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Ek=H.createContext&&H.createContext(IE),Wa=globalThis&&globalThis.__assign||function(){return Wa=Object.assign||function(e){for(var t,n=1,r=arguments.length;n{const t=L(i=>i.config.disabledTabs),n=L(i=>i.config.disabledFeatures),r=L(i=>i.config.disabledSDFeatures),o=d.useMemo(()=>n.includes(e)||r.includes(e)||t.includes(e),[n,r,t,e]),s=d.useMemo(()=>!(n.includes(e)||r.includes(e)||t.includes(e)),[n,r,t,e]);return{isFeatureDisabled:o,isFeatureEnabled:s}};function tJ(e){const{title:t,hotkey:n,description:r}=e;return a.jsxs(Ga,{sx:{gridTemplateColumns:"auto max-content",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs(Ga,{children:[a.jsx(ye,{fontWeight:600,children:t}),r&&a.jsx(ye,{sx:{fontSize:"sm"},variant:"subtext",children:r})]}),a.jsx(Ie,{sx:{fontSize:"sm",fontWeight:600,px:2,py:1},children:n})]})}function nJ({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Mr(),{t:o}=Z(),s=[{title:o("hotkeys.invoke.title"),desc:o("hotkeys.invoke.desc"),hotkey:"Ctrl+Enter"},{title:o("hotkeys.cancel.title"),desc:o("hotkeys.cancel.desc"),hotkey:"Shift+X"},{title:o("hotkeys.focusPrompt.title"),desc:o("hotkeys.focusPrompt.desc"),hotkey:"Alt+A"},{title:o("hotkeys.toggleOptions.title"),desc:o("hotkeys.toggleOptions.desc"),hotkey:"O"},{title:o("hotkeys.toggleGallery.title"),desc:o("hotkeys.toggleGallery.desc"),hotkey:"G"},{title:o("hotkeys.maximizeWorkSpace.title"),desc:o("hotkeys.maximizeWorkSpace.desc"),hotkey:"F"},{title:o("hotkeys.changeTabs.title"),desc:o("hotkeys.changeTabs.desc"),hotkey:"1-5"}],i=[{title:o("hotkeys.setPrompt.title"),desc:o("hotkeys.setPrompt.desc"),hotkey:"P"},{title:o("hotkeys.setSeed.title"),desc:o("hotkeys.setSeed.desc"),hotkey:"S"},{title:o("hotkeys.setParameters.title"),desc:o("hotkeys.setParameters.desc"),hotkey:"A"},{title:o("hotkeys.upscale.title"),desc:o("hotkeys.upscale.desc"),hotkey:"Shift+U"},{title:o("hotkeys.showInfo.title"),desc:o("hotkeys.showInfo.desc"),hotkey:"I"},{title:o("hotkeys.sendToImageToImage.title"),desc:o("hotkeys.sendToImageToImage.desc"),hotkey:"Shift+I"},{title:o("hotkeys.deleteImage.title"),desc:o("hotkeys.deleteImage.desc"),hotkey:"Del"},{title:o("hotkeys.closePanels.title"),desc:o("hotkeys.closePanels.desc"),hotkey:"Esc"}],l=[{title:o("hotkeys.previousImage.title"),desc:o("hotkeys.previousImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextImage.title"),desc:o("hotkeys.nextImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.increaseGalleryThumbSize.title"),desc:o("hotkeys.increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:o("hotkeys.decreaseGalleryThumbSize.title"),desc:o("hotkeys.decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],u=[{title:o("hotkeys.selectBrush.title"),desc:o("hotkeys.selectBrush.desc"),hotkey:"B"},{title:o("hotkeys.selectEraser.title"),desc:o("hotkeys.selectEraser.desc"),hotkey:"E"},{title:o("hotkeys.decreaseBrushSize.title"),desc:o("hotkeys.decreaseBrushSize.desc"),hotkey:"["},{title:o("hotkeys.increaseBrushSize.title"),desc:o("hotkeys.increaseBrushSize.desc"),hotkey:"]"},{title:o("hotkeys.decreaseBrushOpacity.title"),desc:o("hotkeys.decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:o("hotkeys.increaseBrushOpacity.title"),desc:o("hotkeys.increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:o("hotkeys.moveTool.title"),desc:o("hotkeys.moveTool.desc"),hotkey:"V"},{title:o("hotkeys.fillBoundingBox.title"),desc:o("hotkeys.fillBoundingBox.desc"),hotkey:"Shift + F"},{title:o("hotkeys.eraseBoundingBox.title"),desc:o("hotkeys.eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:o("hotkeys.colorPicker.title"),desc:o("hotkeys.colorPicker.desc"),hotkey:"C"},{title:o("hotkeys.toggleSnap.title"),desc:o("hotkeys.toggleSnap.desc"),hotkey:"N"},{title:o("hotkeys.quickToggleMove.title"),desc:o("hotkeys.quickToggleMove.desc"),hotkey:"Hold Space"},{title:o("hotkeys.toggleLayer.title"),desc:o("hotkeys.toggleLayer.desc"),hotkey:"Q"},{title:o("hotkeys.clearMask.title"),desc:o("hotkeys.clearMask.desc"),hotkey:"Shift+C"},{title:o("hotkeys.hideMask.title"),desc:o("hotkeys.hideMask.desc"),hotkey:"H"},{title:o("hotkeys.showHideBoundingBox.title"),desc:o("hotkeys.showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:o("hotkeys.mergeVisible.title"),desc:o("hotkeys.mergeVisible.desc"),hotkey:"Shift+M"},{title:o("hotkeys.saveToGallery.title"),desc:o("hotkeys.saveToGallery.desc"),hotkey:"Shift+S"},{title:o("hotkeys.copyToClipboard.title"),desc:o("hotkeys.copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:o("hotkeys.downloadImage.title"),desc:o("hotkeys.downloadImage.desc"),hotkey:"Shift+D"},{title:o("hotkeys.undoStroke.title"),desc:o("hotkeys.undoStroke.desc"),hotkey:"Ctrl+Z"},{title:o("hotkeys.redoStroke.title"),desc:o("hotkeys.redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:o("hotkeys.resetView.title"),desc:o("hotkeys.resetView.desc"),hotkey:"R"},{title:o("hotkeys.previousStagingImage.title"),desc:o("hotkeys.previousStagingImage.desc"),hotkey:"Arrow Left"},{title:o("hotkeys.nextStagingImage.title"),desc:o("hotkeys.nextStagingImage.desc"),hotkey:"Arrow Right"},{title:o("hotkeys.acceptStagingImage.title"),desc:o("hotkeys.acceptStagingImage.desc"),hotkey:"Enter"}],p=[{title:o("hotkeys.addNodes.title"),desc:o("hotkeys.addNodes.desc"),hotkey:"Shift + A / Space"}],h=m=>a.jsx($,{flexDir:"column",gap:4,children:m.map((v,b)=>a.jsxs($,{flexDir:"column",px:2,gap:4,children:[a.jsx(tJ,{title:v.title,description:v.desc,hotkey:v.hotkey}),b{const{data:t}=eD(),n=d.useRef(null),r=UE(n);return a.jsxs($,{alignItems:"center",gap:5,ps:1,ref:n,children:[a.jsx(Qi,{src:Fj,alt:"invoke-ai-logo",sx:{w:"32px",h:"32px",minW:"32px",minH:"32px",userSelect:"none"}}),a.jsxs($,{sx:{gap:3,alignItems:"center"},children:[a.jsxs(ye,{sx:{fontSize:"xl",userSelect:"none"},children:["invoke ",a.jsx("strong",{children:"ai"})]}),a.jsx(nr,{children:e&&r&&t&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsx(ye,{sx:{fontWeight:600,marginTop:1,color:"base.300",fontSize:14},variant:"subtext",children:t.version})},"statusText")})]})]})},uJ=d.memo(cJ),dJ=e=>{const{tooltip:t,inputRef:n,label:r,disabled:o,required:s,...i}=e,l=_E();return a.jsx(Rt,{label:t,placement:"top",hasArrow:!0,children:a.jsx(ay,{label:r?a.jsx(sn,{isRequired:s,isDisabled:o,children:a.jsx(Hn,{children:r})}):void 0,disabled:o,ref:n,styles:l,...i})})},In=d.memo(dJ),fJ={ar:vt.t("common.langArabic",{lng:"ar"}),nl:vt.t("common.langDutch",{lng:"nl"}),en:vt.t("common.langEnglish",{lng:"en"}),fr:vt.t("common.langFrench",{lng:"fr"}),de:vt.t("common.langGerman",{lng:"de"}),he:vt.t("common.langHebrew",{lng:"he"}),it:vt.t("common.langItalian",{lng:"it"}),ja:vt.t("common.langJapanese",{lng:"ja"}),ko:vt.t("common.langKorean",{lng:"ko"}),pl:vt.t("common.langPolish",{lng:"pl"}),pt_BR:vt.t("common.langBrPortuguese",{lng:"pt_BR"}),pt:vt.t("common.langPortuguese",{lng:"pt"}),ru:vt.t("common.langRussian",{lng:"ru"}),zh_CN:vt.t("common.langSimplifiedChinese",{lng:"zh_CN"}),es:vt.t("common.langSpanish",{lng:"es"}),uk:vt.t("common.langUkranian",{lng:"ua"})};function Mo(e){const{t}=Z(),{label:n,textProps:r,useBadge:o=!1,badgeLabel:s=t("settings.experimental"),badgeProps:i,...l}=e;return a.jsxs($,{justifyContent:"space-between",py:1,children:[a.jsxs($,{gap:2,alignItems:"center",children:[a.jsx(ye,{sx:{fontSize:14,_dark:{color:"base.300"}},...r,children:n}),o&&a.jsx(da,{size:"xs",sx:{px:2,color:"base.700",bg:"accent.200",_dark:{bg:"accent.500",color:"base.200"}},...i,children:s})]}),a.jsx(Vt,{...l})]})}const pJ=e=>a.jsx($,{sx:{flexDirection:"column",gap:2,p:4,borderRadius:"base",bg:"base.100",_dark:{bg:"base.900"}},children:e.children}),Bl=d.memo(pJ);function hJ(){const e=ee(),{data:t,refetch:n}=tD(),[r,{isLoading:o}]=nD(),s=d.useCallback(()=>{r().unwrap().then(l=>{e(rD()),e(Bj()),e(Tt({title:`Cleared ${l} intermediates`,status:"info"}))})},[r,e]);d.useEffect(()=>{n()},[n]);const i=t?`Clear ${t} Intermediate${t>1?"s":""}`:"No Intermediates to Clear";return a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:"Clear Intermediates"}),a.jsx(it,{colorScheme:"warning",onClick:s,isLoading:o,isDisabled:!t,children:i}),a.jsx(ye,{fontWeight:"bold",children:"Clearing intermediates will reset your Canvas and ControlNet state."}),a.jsx(ye,{variant:"subtext",children:"Intermediate images are byproducts of generation, different from the result images in the gallery. Clearing intermediates will free disk space."}),a.jsx(ye,{variant:"subtext",children:"Your gallery images will not be deleted."})]})}const mJ=()=>{const{base50:e,base100:t,base200:n,base300:r,base400:o,base500:s,base600:i,base700:l,base800:u,base900:p,accent200:h,accent300:m,accent400:v,accent500:b,accent600:y}=Vd(),{colorMode:x}=la(),[w]=ds("shadows",["dark-lg"]);return d.useCallback(()=>({label:{color:Ae(l,r)(x)},separatorLabel:{color:Ae(s,s)(x),"::after":{borderTopColor:Ae(r,l)(x)}},searchInput:{":placeholder":{color:Ae(r,l)(x)}},input:{backgroundColor:Ae(e,p)(x),borderWidth:"2px",borderColor:Ae(n,u)(x),color:Ae(p,t)(x),paddingRight:24,fontWeight:600,"&:hover":{borderColor:Ae(r,i)(x)},"&:focus":{borderColor:Ae(m,y)(x)},"&:is(:focus, :hover)":{borderColor:Ae(o,s)(x)},"&:focus-within":{borderColor:Ae(h,y)(x)},"&[data-disabled]":{backgroundColor:Ae(r,l)(x),color:Ae(i,o)(x),cursor:"not-allowed"}},value:{backgroundColor:Ae(n,u)(x),color:Ae(p,t)(x),button:{color:Ae(p,t)(x)},"&:hover":{backgroundColor:Ae(r,l)(x),cursor:"pointer"}},dropdown:{backgroundColor:Ae(n,u)(x),borderColor:Ae(n,u)(x),boxShadow:w},item:{backgroundColor:Ae(n,u)(x),color:Ae(u,n)(x),padding:6,"&[data-hovered]":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)},"&[data-active]":{backgroundColor:Ae(r,l)(x),"&:hover":{color:Ae(p,t)(x),backgroundColor:Ae(r,l)(x)}},"&[data-selected]":{backgroundColor:Ae(v,y)(x),color:Ae(e,t)(x),fontWeight:600,"&:hover":{backgroundColor:Ae(b,b)(x),color:Ae("white",e)(x)}},"&[data-disabled]":{color:Ae(s,i)(x),cursor:"not-allowed"}},rightSection:{width:24,padding:20,button:{color:Ae(p,t)(x)}}}),[h,m,v,b,y,t,n,r,o,e,s,i,l,u,p,w,x])},gJ=e=>{const{searchable:t=!0,tooltip:n,inputRef:r,label:o,disabled:s,...i}=e,l=ee(),u=d.useCallback(m=>{m.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(m=>{m.shiftKey||l(Ir(!1))},[l]),h=mJ();return a.jsx(Rt,{label:n,placement:"top",hasArrow:!0,isOpen:!0,children:a.jsx(xE,{label:o?a.jsx(sn,{isDisabled:s,children:a.jsx(Hn,{children:o})}):void 0,ref:r,disabled:s,onKeyDown:u,onKeyUp:p,searchable:t,maxDropdownHeight:300,styles:h,...i})})},vJ=d.memo(gJ),bJ=rr(hm,(e,t)=>({value:t,label:e})).sort((e,t)=>e.label.localeCompare(t.label));function xJ(){const e=ee(),{t}=Z(),n=L(o=>o.ui.favoriteSchedulers),r=d.useCallback(o=>{e(oD(o))},[e]);return a.jsx(vJ,{label:t("settings.favoriteSchedulers"),value:n,data:bJ,onChange:r,clearable:!0,searchable:!0,maxSelectedValues:99,placeholder:t("settings.favoriteSchedulersPlaceholder")})}const yJ=ie([xe],({system:e,ui:t,generation:n})=>{const{shouldConfirmOnDelete:r,enableImageDebugging:o,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldUseNSFWChecker:u,shouldUseWatermarker:p}=e,{shouldUseSliders:h,shouldShowProgressInViewer:m,shouldAutoChangeDimensions:v}=t,{shouldShowAdvancedOptions:b}=n;return{shouldConfirmOnDelete:r,enableImageDebugging:o,shouldUseSliders:h,shouldShowProgressInViewer:m,consoleLogLevel:s,shouldLogToConsole:i,shouldAntialiasProgressImage:l,shouldShowAdvancedOptions:b,shouldUseNSFWChecker:u,shouldUseWatermarker:p,shouldAutoChangeDimensions:v}},{memoizeOptions:{resultEqualityCheck:_t}}),CJ=({children:e,config:t})=>{const n=ee(),{t:r}=Z(),[o,s]=d.useState(3),i=(t==null?void 0:t.shouldShowDeveloperSettings)??!0,l=(t==null?void 0:t.shouldShowResetWebUiText)??!0,u=(t==null?void 0:t.shouldShowAdvancedOptionsSettings)??!0,p=(t==null?void 0:t.shouldShowClearIntermediates)??!0,h=(t==null?void 0:t.shouldShowLocalizationToggle)??!0;d.useEffect(()=>{i||n(BC(!1))},[i,n]);const{isNSFWCheckerAvailable:m,isWatermarkerAvailable:v}=Hj(void 0,{selectFromResult:({data:Q})=>({isNSFWCheckerAvailable:(Q==null?void 0:Q.nsfw_methods.includes("nsfw_checker"))??!1,isWatermarkerAvailable:(Q==null?void 0:Q.watermarking_methods.includes("invisible_watermark"))??!1})}),{isOpen:b,onOpen:y,onClose:x}=Mr(),{isOpen:w,onOpen:k,onClose:_}=Mr(),{shouldConfirmOnDelete:j,enableImageDebugging:I,shouldUseSliders:E,shouldShowProgressInViewer:M,consoleLogLevel:D,shouldLogToConsole:R,shouldAntialiasProgressImage:A,shouldShowAdvancedOptions:O,shouldUseNSFWChecker:T,shouldUseWatermarker:K,shouldAutoChangeDimensions:F}=L(yJ),V=d.useCallback(()=>{Object.keys(window.localStorage).forEach(Q=>{(sD.includes(Q)||Q.startsWith(aD))&&localStorage.removeItem(Q)}),x(),k(),setInterval(()=>s(Q=>Q-1),1e3)},[x,k]);d.useEffect(()=>{o<=0&&window.location.reload()},[o]);const X=d.useCallback(Q=>{n(iD(Q))},[n]),W=d.useCallback(Q=>{n(lD(Q))},[n]),z=d.useCallback(Q=>{n(BC(Q.target.checked))},[n]),{colorMode:Y,toggleColorMode:B}=la(),q=Xt("localization").isFeatureEnabled,re=L(LP);return a.jsxs(a.Fragment,{children:[d.cloneElement(e,{onClick:y}),a.jsxs(Hi,{isOpen:b,onClose:x,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{bg:"none",children:r("common.settingsLabel")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsxs($,{sx:{gap:4,flexDirection:"column"},children:[a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.general")}),a.jsx(Mo,{label:r("settings.confirmOnDelete"),isChecked:j,onChange:Q=>n(zj(Q.target.checked))}),u&&a.jsx(Mo,{label:r("settings.showAdvancedOptions"),isChecked:O,onChange:Q=>n(cD(Q.target.checked))})]}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.generation")}),a.jsx(xJ,{}),a.jsx(Mo,{label:"Enable NSFW Checker",isDisabled:!m,isChecked:T,onChange:Q=>n(uD(Q.target.checked))}),a.jsx(Mo,{label:"Enable Invisible Watermark",isDisabled:!v,isChecked:K,onChange:Q=>n(dD(Q.target.checked))})]}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.ui")}),a.jsx(Mo,{label:r("common.darkMode"),isChecked:Y==="dark",onChange:B}),a.jsx(Mo,{label:r("settings.useSlidersForAll"),isChecked:E,onChange:Q=>n(fD(Q.target.checked))}),a.jsx(Mo,{label:r("settings.showProgressInViewer"),isChecked:M,onChange:Q=>n(Wj(Q.target.checked))}),a.jsx(Mo,{label:r("settings.antialiasProgressImages"),isChecked:A,onChange:Q=>n(pD(Q.target.checked))}),a.jsx(Mo,{label:r("settings.autoChangeDimensions"),isChecked:F,onChange:Q=>n(hD(Q.target.checked))}),h&&a.jsx(In,{disabled:!q,label:r("common.languagePickerLabel"),value:re,data:Object.entries(fJ).map(([Q,le])=>({value:Q,label:le})),onChange:W})]}),i&&a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.developer")}),a.jsx(Mo,{label:r("settings.shouldLogToConsole"),isChecked:R,onChange:z}),a.jsx(In,{disabled:!R,label:r("settings.consoleLogLevel"),onChange:X,value:D,data:mD.concat()}),a.jsx(Mo,{label:r("settings.enableImageDebugging"),isChecked:I,onChange:Q=>n(gD(Q.target.checked))})]}),p&&a.jsx(hJ,{}),a.jsxs(Bl,{children:[a.jsx(io,{size:"sm",children:r("settings.resetWebUI")}),a.jsx(it,{colorScheme:"error",onClick:V,children:r("settings.resetWebUI")}),l&&a.jsxs(a.Fragment,{children:[a.jsx(ye,{variant:"subtext",children:r("settings.resetWebUIDesc1")}),a.jsx(ye,{variant:"subtext",children:r("settings.resetWebUIDesc2")})]})]})]})}),a.jsx(gs,{children:a.jsx(it,{onClick:x,children:r("common.close")})})]})]}),a.jsxs(Hi,{closeOnOverlayClick:!1,isOpen:w,onClose:_,isCentered:!0,closeOnEsc:!1,children:[a.jsx(Wo,{backdropFilter:"blur(40px)"}),a.jsxs(Wi,{children:[a.jsx(Ho,{}),a.jsx(Vo,{children:a.jsx($,{justifyContent:"center",children:a.jsx(ye,{fontSize:"lg",children:a.jsxs(ye,{children:[r("settings.resetComplete")," Reloading in ",o,"..."]})})})}),a.jsx(gs,{})]})]})]})},wJ=d.memo(CJ),SJ=ie(xo,e=>{const{isConnected:t,isProcessing:n,statusTranslationKey:r,currentIteration:o,totalIterations:s,currentStatusHasSteps:i}=e;return{isConnected:t,isProcessing:n,currentIteration:o,totalIterations:s,statusTranslationKey:r,currentStatusHasSteps:i}},we),Ak={ok:"green.400",working:"yellow.400",error:"red.400"},Nk={ok:"green.600",working:"yellow.500",error:"red.500"},kJ=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,statusTranslationKey:o}=L(SJ),{t:s}=Z(),i=d.useRef(null),l=d.useMemo(()=>t?"working":e?"ok":"error",[t,e]),u=d.useMemo(()=>{if(n&&r)return` (${n}/${r})`},[n,r]),p=UE(i);return a.jsxs($,{ref:i,h:"full",px:2,alignItems:"center",gap:5,children:[a.jsx(nr,{children:p&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.15}},exit:{opacity:0,transition:{delay:.8}},children:a.jsxs(ye,{sx:{fontSize:"sm",fontWeight:"600",pb:"1px",userSelect:"none",color:Nk[l],_dark:{color:Ak[l]}},children:[s(o),u]})},"statusText")}),a.jsx(Tn,{as:_Z,sx:{boxSize:"0.5rem",color:Nk[l],_dark:{color:Ak[l]}}})]})},_J=d.memo(kJ),jJ=()=>{const{t:e}=Z(),t=Xt("bugLink").isFeatureEnabled,n=Xt("discordLink").isFeatureEnabled,r=Xt("githubLink").isFeatureEnabled,o="http://github.com/invoke-ai/InvokeAI",s="https://discord.gg/ZmtBAhwWhy";return a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(uJ,{}),a.jsx(Za,{}),a.jsx(_J,{}),a.jsxs(Nd,{children:[a.jsx(Td,{as:Te,variant:"link","aria-label":e("accessibility.menu"),icon:a.jsx(SZ,{}),sx:{boxSize:8}}),a.jsxs(Ka,{motionProps:vc,children:[a.jsxs(Sc,{title:e("common.communityLabel"),children:[r&&a.jsx(Wt,{as:"a",href:o,target:"_blank",icon:a.jsx(gZ,{}),children:e("common.githubLabel")}),t&&a.jsx(Wt,{as:"a",href:`${o}/issues`,target:"_blank",icon:a.jsx(kZ,{}),children:e("common.reportBugLabel")}),n&&a.jsx(Wt,{as:"a",href:s,target:"_blank",icon:a.jsx(mZ,{}),children:e("common.discordLabel")})]}),a.jsxs(Sc,{title:e("common.settingsLabel"),children:[a.jsx(nJ,{children:a.jsx(Wt,{as:"button",icon:a.jsx(BZ,{}),children:e("common.hotkeysLabel")})}),a.jsx(wJ,{children:a.jsx(Wt,{as:"button",icon:a.jsx(RE,{}),children:e("common.settingsLabel")})})]})]})]})]})},PJ=d.memo(jJ),IJ=ie(xo,e=>{const{isUploading:t}=e;let n="";return t&&(n="Uploading..."),{tooltip:n,shouldShow:t}}),EJ=()=>{const{shouldShow:e,tooltip:t}=L(IJ);return e?a.jsx($,{sx:{alignItems:"center",justifyContent:"center",color:"base.600"},children:a.jsx(Rt,{label:t,placement:"right",hasArrow:!0,children:a.jsx(Xi,{})})}):null},MJ=d.memo(EJ);/*! + * OverlayScrollbars + * Version: 2.2.1 + * + * Copyright (c) Rene Haas | KingSora. + * https://github.com/KingSora + * + * Released under the MIT license. + */function Dt(e,t){if(ag(e))for(let n=0;nt(e[n],n,e));return e}function tr(e,t){const n=ni(t);if(Ko(t)||n){let o=n?"":{};if(e){const s=window.getComputedStyle(e,null);o=n?zk(e,s,t):t.reduce((i,l)=>(i[l]=zk(e,s,l),i),o)}return o}e&&Dt(Gr(t),o=>GJ(e,o,t[o]))}const Ro=(e,t)=>{const{o:n,u:r,_:o}=e;let s=n,i;const l=(h,m)=>{const v=s,b=h,y=m||(r?!r(v,b):v!==b);return(y||o)&&(s=b,i=v),[s,y,i]};return[t?h=>l(t(s,i),h):l,h=>[s,!!h,i]]},Gd=()=>typeof window<"u",GE=Gd()&&Node.ELEMENT_NODE,{toString:OJ,hasOwnProperty:Iv}=Object.prototype,pa=e=>e===void 0,sg=e=>e===null,DJ=e=>pa(e)||sg(e)?`${e}`:OJ.call(e).replace(/^\[object (.+)\]$/,"$1").toLowerCase(),Va=e=>typeof e=="number",ni=e=>typeof e=="string",iy=e=>typeof e=="boolean",Go=e=>typeof e=="function",Ko=e=>Array.isArray(e),ld=e=>typeof e=="object"&&!Ko(e)&&!sg(e),ag=e=>{const t=!!e&&e.length,n=Va(t)&&t>-1&&t%1==0;return Ko(e)||!Go(e)&&n?t>0&&ld(e)?t-1 in e:!0:!1},nb=e=>{if(!e||!ld(e)||DJ(e)!=="object")return!1;let t;const n="constructor",r=e[n],o=r&&r.prototype,s=Iv.call(e,n),i=o&&Iv.call(o,"isPrototypeOf");if(r&&!s&&!i)return!1;for(t in e);return pa(t)||Iv.call(e,t)},Yh=e=>{const t=HTMLElement;return e?t?e instanceof t:e.nodeType===GE:!1},ig=e=>{const t=Element;return e?t?e instanceof t:e.nodeType===GE:!1},ly=(e,t,n)=>e.indexOf(t,n),zt=(e,t,n)=>(!n&&!ni(t)&&ag(t)?Array.prototype.push.apply(e,t):e.push(t),e),Gi=e=>{const t=Array.from,n=[];return t&&e?t(e):(e instanceof Set?e.forEach(r=>{zt(n,r)}):Dt(e,r=>{zt(n,r)}),n)},cy=e=>!!e&&e.length===0,js=(e,t,n)=>{Dt(e,o=>o&&o.apply(void 0,t||[])),!n&&(e.length=0)},lg=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Gr=e=>e?Object.keys(e):[],fn=(e,t,n,r,o,s,i)=>{const l=[t,n,r,o,s,i];return(typeof e!="object"||sg(e))&&!Go(e)&&(e={}),Dt(l,u=>{Dt(Gr(u),p=>{const h=u[p];if(e===h)return!0;const m=Ko(h);if(h&&(nb(h)||m)){const v=e[p];let b=v;m&&!Ko(v)?b=[]:!m&&!nb(v)&&(b={}),e[p]=fn(b,h)}else e[p]=h})}),e},uy=e=>{for(const t in e)return!1;return!0},KE=(e,t,n,r)=>{if(pa(r))return n?n[e]:t;n&&(ni(r)||Va(r))&&(n[e]=r)},er=(e,t,n)=>{if(pa(n))return e?e.getAttribute(t):null;e&&e.setAttribute(t,n)},Cr=(e,t)=>{e&&e.removeAttribute(t)},Ei=(e,t,n,r)=>{if(n){const o=er(e,t)||"",s=new Set(o.split(" "));s[r?"add":"delete"](n);const i=Gi(s).join(" ").trim();er(e,t,i)}},RJ=(e,t,n)=>{const r=er(e,t)||"";return new Set(r.split(" ")).has(n)},zo=(e,t)=>KE("scrollLeft",0,e,t),Zs=(e,t)=>KE("scrollTop",0,e,t),rb=Gd()&&Element.prototype,qE=(e,t)=>{const n=[],r=t?ig(t)?t:null:document;return r?zt(n,r.querySelectorAll(e)):n},AJ=(e,t)=>{const n=t?ig(t)?t:null:document;return n?n.querySelector(e):null},Qh=(e,t)=>ig(e)?(rb.matches||rb.msMatchesSelector).call(e,t):!1,dy=e=>e?Gi(e.childNodes):[],ra=e=>e?e.parentElement:null,ql=(e,t)=>{if(ig(e)){const n=rb.closest;if(n)return n.call(e,t);do{if(Qh(e,t))return e;e=ra(e)}while(e)}return null},NJ=(e,t,n)=>{const r=e&&ql(e,t),o=e&&AJ(n,r),s=ql(o,t)===r;return r&&o?r===e||o===e||s&&ql(ql(e,n),t)!==r:!1},fy=(e,t,n)=>{if(n&&e){let r=t,o;ag(n)?(o=document.createDocumentFragment(),Dt(n,s=>{s===r&&(r=s.previousSibling),o.appendChild(s)})):o=n,t&&(r?r!==t&&(r=r.nextSibling):r=e.firstChild),e.insertBefore(o,r||null)}},fo=(e,t)=>{fy(e,null,t)},TJ=(e,t)=>{fy(ra(e),e,t)},Tk=(e,t)=>{fy(ra(e),e&&e.nextSibling,t)},bs=e=>{if(ag(e))Dt(Gi(e),t=>bs(t));else if(e){const t=ra(e);t&&t.removeChild(e)}},Mi=e=>{const t=document.createElement("div");return e&&er(t,"class",e),t},XE=e=>{const t=Mi();return t.innerHTML=e.trim(),Dt(dy(t),n=>bs(n))},ob=e=>e.charAt(0).toUpperCase()+e.slice(1),$J=()=>Mi().style,LJ=["-webkit-","-moz-","-o-","-ms-"],zJ=["WebKit","Moz","O","MS","webkit","moz","o","ms"],Ev={},Mv={},FJ=e=>{let t=Mv[e];if(lg(Mv,e))return t;const n=ob(e),r=$J();return Dt(LJ,o=>{const s=o.replace(/-/g,"");return!(t=[e,o+e,s+n,ob(s)+n].find(l=>r[l]!==void 0))}),Mv[e]=t||""},Kd=e=>{if(Gd()){let t=Ev[e]||window[e];return lg(Ev,e)||(Dt(zJ,n=>(t=t||window[n+ob(e)],!t)),Ev[e]=t),t}},BJ=Kd("MutationObserver"),$k=Kd("IntersectionObserver"),Xl=Kd("ResizeObserver"),YE=Kd("cancelAnimationFrame"),QE=Kd("requestAnimationFrame"),Zh=Gd()&&window.setTimeout,sb=Gd()&&window.clearTimeout,HJ=/[^\x20\t\r\n\f]+/g,ZE=(e,t,n)=>{const r=e&&e.classList;let o,s=0,i=!1;if(r&&t&&ni(t)){const l=t.match(HJ)||[];for(i=l.length>0;o=l[s++];)i=!!n(r,o)&&i}return i},py=(e,t)=>{ZE(e,t,(n,r)=>n.remove(r))},Js=(e,t)=>(ZE(e,t,(n,r)=>n.add(r)),py.bind(0,e,t)),cg=(e,t,n,r)=>{if(e&&t){let o=!0;return Dt(n,s=>{const i=r?r(e[s]):e[s],l=r?r(t[s]):t[s];i!==l&&(o=!1)}),o}return!1},JE=(e,t)=>cg(e,t,["w","h"]),eM=(e,t)=>cg(e,t,["x","y"]),WJ=(e,t)=>cg(e,t,["t","r","b","l"]),Lk=(e,t,n)=>cg(e,t,["width","height"],n&&(r=>Math.round(r))),co=()=>{},Hl=e=>{let t;const n=e?Zh:QE,r=e?sb:YE;return[o=>{r(t),t=n(o,Go(e)?e():e)},()=>r(t)]},hy=(e,t)=>{let n,r,o,s=co;const{v:i,g:l,p:u}=t||{},p=function(y){s(),sb(n),n=r=void 0,s=co,e.apply(this,y)},h=b=>u&&r?u(r,b):b,m=()=>{s!==co&&p(h(o)||o)},v=function(){const y=Gi(arguments),x=Go(i)?i():i;if(Va(x)&&x>=0){const k=Go(l)?l():l,_=Va(k)&&k>=0,j=x>0?Zh:QE,I=x>0?sb:YE,M=h(y)||y,D=p.bind(0,M);s();const R=j(D,x);s=()=>I(R),_&&!n&&(n=Zh(m,k)),r=o=M}else p(y)};return v.m=m,v},VJ={opacity:1,zindex:1},bp=(e,t)=>{const n=t?parseFloat(e):parseInt(e,10);return n===n?n:0},UJ=(e,t)=>!VJ[e.toLowerCase()]&&Va(t)?`${t}px`:t,zk=(e,t,n)=>t!=null?t[n]||t.getPropertyValue(n):e.style[n],GJ=(e,t,n)=>{try{const{style:r}=e;pa(r[t])?r.setProperty(t,n):r[t]=UJ(t,n)}catch{}},cd=e=>tr(e,"direction")==="rtl",Fk=(e,t,n)=>{const r=t?`${t}-`:"",o=n?`-${n}`:"",s=`${r}top${o}`,i=`${r}right${o}`,l=`${r}bottom${o}`,u=`${r}left${o}`,p=tr(e,[s,i,l,u]);return{t:bp(p[s],!0),r:bp(p[i],!0),b:bp(p[l],!0),l:bp(p[u],!0)}},{round:Bk}=Math,my={w:0,h:0},ud=e=>e?{w:e.offsetWidth,h:e.offsetHeight}:my,Bp=e=>e?{w:e.clientWidth,h:e.clientHeight}:my,Jh=e=>e?{w:e.scrollWidth,h:e.scrollHeight}:my,em=e=>{const t=parseFloat(tr(e,"height"))||0,n=parseFloat(tr(e,"width"))||0;return{w:n-Bk(n),h:t-Bk(t)}},fs=e=>e.getBoundingClientRect();let xp;const KJ=()=>{if(pa(xp)){xp=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get(){xp=!0}}))}catch{}}return xp},tM=e=>e.split(" "),qJ=(e,t,n,r)=>{Dt(tM(t),o=>{e.removeEventListener(o,n,r)})},$n=(e,t,n,r)=>{var o;const s=KJ(),i=(o=s&&r&&r.S)!=null?o:s,l=r&&r.$||!1,u=r&&r.C||!1,p=[],h=s?{passive:i,capture:l}:l;return Dt(tM(t),m=>{const v=u?b=>{e.removeEventListener(m,v,l),n&&n(b)}:n;zt(p,qJ.bind(null,e,m,v,l)),e.addEventListener(m,v,h)}),js.bind(0,p)},nM=e=>e.stopPropagation(),rM=e=>e.preventDefault(),XJ={x:0,y:0},Ov=e=>{const t=e?fs(e):0;return t?{x:t.left+window.pageYOffset,y:t.top+window.pageXOffset}:XJ},Hk=(e,t)=>{Dt(Ko(t)?t:[t],e)},gy=e=>{const t=new Map,n=(s,i)=>{if(s){const l=t.get(s);Hk(u=>{l&&l[u?"delete":"clear"](u)},i)}else t.forEach(l=>{l.clear()}),t.clear()},r=(s,i)=>{if(ni(s)){const p=t.get(s)||new Set;return t.set(s,p),Hk(h=>{Go(h)&&p.add(h)},i),n.bind(0,s,i)}iy(i)&&i&&n();const l=Gr(s),u=[];return Dt(l,p=>{const h=s[p];h&&zt(u,r(p,h))}),js.bind(0,u)},o=(s,i)=>{const l=t.get(s);Dt(Gi(l),u=>{i&&!cy(i)?u.apply(0,i):u()})};return r(e||{}),[r,n,o]},Wk=e=>JSON.stringify(e,(t,n)=>{if(Go(n))throw new Error;return n}),YJ={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[["img","load"]],debounce:[0,33],attributes:null,ignoreMutation:null},overflow:{x:"scroll",y:"scroll"},scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"never",autoHideDelay:1300,dragScroll:!0,clickScroll:!1,pointers:["mouse","touch","pen"]}},oM=(e,t)=>{const n={},r=Gr(t).concat(Gr(e));return Dt(r,o=>{const s=e[o],i=t[o];if(ld(s)&&ld(i))fn(n[o]={},oM(s,i)),uy(n[o])&&delete n[o];else if(lg(t,o)&&i!==s){let l=!0;if(Ko(s)||Ko(i))try{Wk(s)===Wk(i)&&(l=!1)}catch{}l&&(n[o]=i)}}),n},sM="os-environment",aM=`${sM}-flexbox-glue`,QJ=`${aM}-max`,iM="os-scrollbar-hidden",Dv="data-overlayscrollbars-initialize",Ao="data-overlayscrollbars",lM=`${Ao}-overflow-x`,cM=`${Ao}-overflow-y`,cc="overflowVisible",ZJ="scrollbarHidden",Vk="scrollbarPressed",tm="updating",Oa="data-overlayscrollbars-viewport",Rv="arrange",uM="scrollbarHidden",uc=cc,ab="data-overlayscrollbars-padding",JJ=uc,Uk="data-overlayscrollbars-content",vy="os-size-observer",eee=`${vy}-appear`,tee=`${vy}-listener`,nee="os-trinsic-observer",ree="os-no-css-vars",oee="os-theme-none",Dr="os-scrollbar",see=`${Dr}-rtl`,aee=`${Dr}-horizontal`,iee=`${Dr}-vertical`,dM=`${Dr}-track`,by=`${Dr}-handle`,lee=`${Dr}-visible`,cee=`${Dr}-cornerless`,Gk=`${Dr}-transitionless`,Kk=`${Dr}-interaction`,qk=`${Dr}-unusable`,Xk=`${Dr}-auto-hidden`,Yk=`${Dr}-wheel`,uee=`${dM}-interactive`,dee=`${by}-interactive`,fM={},Ki=()=>fM,fee=e=>{const t=[];return Dt(Ko(e)?e:[e],n=>{const r=Gr(n);Dt(r,o=>{zt(t,fM[o]=n[o])})}),t},pee="__osOptionsValidationPlugin",hee="__osSizeObserverPlugin",xy="__osScrollbarsHidingPlugin",mee="__osClickScrollPlugin";let Av;const Qk=(e,t,n,r)=>{fo(e,t);const o=Bp(t),s=ud(t),i=em(n);return r&&bs(t),{x:s.h-o.h+i.h,y:s.w-o.w+i.w}},gee=e=>{let t=!1;const n=Js(e,iM);try{t=tr(e,FJ("scrollbar-width"))==="none"||window.getComputedStyle(e,"::-webkit-scrollbar").getPropertyValue("display")==="none"}catch{}return n(),t},vee=(e,t)=>{const n="hidden";tr(e,{overflowX:n,overflowY:n,direction:"rtl"}),zo(e,0);const r=Ov(e),o=Ov(t);zo(e,-999);const s=Ov(t);return{i:r.x===o.x,n:o.x!==s.x}},bee=(e,t)=>{const n=Js(e,aM),r=fs(e),o=fs(t),s=Lk(o,r,!0),i=Js(e,QJ),l=fs(e),u=fs(t),p=Lk(u,l,!0);return n(),i(),s&&p},xee=()=>{const{body:e}=document,n=XE(`
`)[0],r=n.firstChild,[o,,s]=gy(),[i,l]=Ro({o:Qk(e,n,r),u:eM},Qk.bind(0,e,n,r,!0)),[u]=l(),p=gee(n),h={x:u.x===0,y:u.y===0},m={elements:{host:null,padding:!p,viewport:_=>p&&_===_.ownerDocument.body&&_,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},v=fn({},YJ),b=fn.bind(0,{},v),y=fn.bind(0,{},m),x={k:u,A:h,I:p,L:tr(n,"zIndex")==="-1",B:vee(n,r),V:bee(n,r),Y:o.bind(0,"z"),j:o.bind(0,"r"),N:y,q:_=>fn(m,_)&&y(),F:b,G:_=>fn(v,_)&&b(),X:fn({},m),U:fn({},v)},w=window.addEventListener,k=hy(_=>s(_?"z":"r"),{v:33,g:99});if(Cr(n,"style"),bs(n),w("resize",k.bind(0,!1)),!p&&(!h.x||!h.y)){let _;w("resize",()=>{const j=Ki()[xy];_=_||j&&j.R(),_&&_(x,i,k.bind(0,!0))})}return x},Rr=()=>(Av||(Av=xee()),Av),yy=(e,t)=>Go(t)?t.apply(0,e):t,yee=(e,t,n,r)=>{const o=pa(r)?n:r;return yy(e,o)||t.apply(0,e)},pM=(e,t,n,r)=>{const o=pa(r)?n:r,s=yy(e,o);return!!s&&(Yh(s)?s:t.apply(0,e))},Cee=(e,t,n)=>{const{nativeScrollbarsOverlaid:r,body:o}=n||{},{A:s,I:i}=Rr(),{nativeScrollbarsOverlaid:l,body:u}=t,p=r??l,h=pa(o)?u:o,m=(s.x||s.y)&&p,v=e&&(sg(h)?!i:h);return!!m||!!v},Cy=new WeakMap,wee=(e,t)=>{Cy.set(e,t)},See=e=>{Cy.delete(e)},hM=e=>Cy.get(e),Zk=(e,t)=>e?t.split(".").reduce((n,r)=>n&&lg(n,r)?n[r]:void 0,e):void 0,ib=(e,t,n)=>r=>[Zk(e,r),n||Zk(t,r)!==void 0],mM=e=>{let t=e;return[()=>t,n=>{t=fn({},t,n)}]},yp="tabindex",Cp=Mi.bind(0,""),Nv=e=>{fo(ra(e),dy(e)),bs(e)},kee=e=>{const t=Rr(),{N:n,I:r}=t,o=Ki()[xy],s=o&&o.T,{elements:i}=n(),{host:l,padding:u,viewport:p,content:h}=i,m=Yh(e),v=m?{}:e,{elements:b}=v,{host:y,padding:x,viewport:w,content:k}=b||{},_=m?e:v.target,j=Qh(_,"textarea"),I=_.ownerDocument,E=I.documentElement,M=_===I.body,D=I.defaultView,R=yee.bind(0,[_]),A=pM.bind(0,[_]),O=yy.bind(0,[_]),T=R.bind(0,Cp,p),K=A.bind(0,Cp,h),F=T(w),V=F===_,X=V&&M,W=!V&&K(k),z=!V&&Yh(F)&&F===W,Y=z&&!!O(h),B=Y?T():F,q=Y?W:K(),Q=X?E:z?B:F,le=j?R(Cp,l,y):_,se=X?Q:le,U=z?q:W,G=I.activeElement,te=!V&&D.top===D&&G===_,ae={W:_,Z:se,J:Q,K:!V&&A(Cp,u,x),tt:U,nt:!V&&!r&&s&&s(t),ot:X?E:Q,st:X?I:Q,et:D,ct:I,rt:j,it:M,lt:m,ut:V,dt:z,ft:(Ye,tt)=>RJ(Q,V?Ao:Oa,V?tt:Ye),_t:(Ye,tt,be)=>Ei(Q,V?Ao:Oa,V?tt:Ye,be)},oe=Gr(ae).reduce((Ye,tt)=>{const be=ae[tt];return zt(Ye,be&&!ra(be)?be:!1)},[]),pe=Ye=>Ye?ly(oe,Ye)>-1:null,{W:ue,Z:me,K:Ce,J:ge,tt:fe,nt:De}=ae,je=[()=>{Cr(me,Ao),Cr(me,Dv),Cr(ue,Dv),M&&(Cr(E,Ao),Cr(E,Dv))}],Be=j&&pe(me);let rt=j?ue:dy([fe,ge,Ce,me,ue].find(Ye=>pe(Ye)===!1));const Ue=X?ue:fe||ge;return[ae,()=>{er(me,Ao,V?"viewport":"host"),er(Ce,ab,""),er(fe,Uk,""),V||er(ge,Oa,"");const Ye=M&&!V?Js(ra(_),iM):co;if(Be&&(Tk(ue,me),zt(je,()=>{Tk(me,ue),bs(me)})),fo(Ue,rt),fo(me,Ce),fo(Ce||me,!V&&ge),fo(ge,fe),zt(je,()=>{Ye(),Cr(Ce,ab),Cr(fe,Uk),Cr(ge,lM),Cr(ge,cM),Cr(ge,Oa),pe(fe)&&Nv(fe),pe(ge)&&Nv(ge),pe(Ce)&&Nv(Ce)}),r&&!V&&(Ei(ge,Oa,uM,!0),zt(je,Cr.bind(0,ge,Oa))),De&&(TJ(ge,De),zt(je,bs.bind(0,De))),te){const tt=er(ge,yp);er(ge,yp,"-1"),ge.focus();const be=()=>tt?er(ge,yp,tt):Cr(ge,yp),Re=$n(I,"pointerdown keydown",()=>{be(),Re()});zt(je,[be,Re])}else G&&G.focus&&G.focus();rt=0},js.bind(0,je)]},_ee=(e,t)=>{const{tt:n}=e,[r]=t;return o=>{const{V:s}=Rr(),{ht:i}=r(),{vt:l}=o,u=(n||!s)&&l;return u&&tr(n,{height:i?"":"100%"}),{gt:u,wt:u}}},jee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,ut:l}=e,[u,p]=Ro({u:WJ,o:Fk()},Fk.bind(0,o,"padding",""));return(h,m,v)=>{let[b,y]=p(v);const{I:x,V:w}=Rr(),{bt:k}=n(),{gt:_,wt:j,yt:I}=h,[E,M]=m("paddingAbsolute");(_||y||!w&&j)&&([b,y]=u(v));const R=!l&&(M||I||y);if(R){const A=!E||!s&&!x,O=b.r+b.l,T=b.t+b.b,K={marginRight:A&&!k?-O:0,marginBottom:A?-T:0,marginLeft:A&&k?-O:0,top:A?-b.t:0,right:A?k?-b.r:"auto":0,left:A?k?"auto":-b.l:0,width:A?`calc(100% + ${O}px)`:""},F={paddingTop:A?b.t:0,paddingRight:A?b.r:0,paddingBottom:A?b.b:0,paddingLeft:A?b.l:0};tr(s||i,K),tr(i,F),r({K:b,St:!A,P:s?F:fn({},K,F)})}return{xt:R}}},{max:lb}=Math,Da=lb.bind(0,0),gM="visible",Jk="hidden",Pee=42,wp={u:JE,o:{w:0,h:0}},Iee={u:eM,o:{x:Jk,y:Jk}},Eee=(e,t)=>{const n=window.devicePixelRatio%1!==0?1:0,r={w:Da(e.w-t.w),h:Da(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},Sp=e=>e.indexOf(gM)===0,Mee=(e,t)=>{const[n,r]=t,{Z:o,K:s,J:i,nt:l,ut:u,_t:p,it:h,et:m}=e,{k:v,V:b,I:y,A:x}=Rr(),w=Ki()[xy],k=!u&&!y&&(x.x||x.y),_=h&&u,[j,I]=Ro(wp,em.bind(0,i)),[E,M]=Ro(wp,Jh.bind(0,i)),[D,R]=Ro(wp),[A,O]=Ro(wp),[T]=Ro(Iee),K=(Y,B)=>{if(tr(i,{height:""}),B){const{St:q,K:re}=n(),{$t:Q,D:le}=Y,se=em(o),U=Bp(o),G=tr(i,"boxSizing")==="content-box",te=q||G?re.b+re.t:0,ae=!(x.x&&G);tr(i,{height:U.h+se.h+(Q.x&&ae?le.x:0)-te})}},F=(Y,B)=>{const q=!y&&!Y?Pee:0,re=(pe,ue,me)=>{const Ce=tr(i,pe),fe=(B?B[pe]:Ce)==="scroll";return[Ce,fe,fe&&!y?ue?q:me:0,ue&&!!q]},[Q,le,se,U]=re("overflowX",x.x,v.x),[G,te,ae,oe]=re("overflowY",x.y,v.y);return{Ct:{x:Q,y:G},$t:{x:le,y:te},D:{x:se,y:ae},M:{x:U,y:oe}}},V=(Y,B,q,re)=>{const Q=(te,ae)=>{const oe=Sp(te),pe=ae&&oe&&te.replace(`${gM}-`,"")||"";return[ae&&!oe?te:"",Sp(pe)?"hidden":pe]},[le,se]=Q(q.x,B.x),[U,G]=Q(q.y,B.y);return re.overflowX=se&&U?se:le,re.overflowY=G&&le?G:U,F(Y,re)},X=(Y,B,q,re)=>{const{D:Q,M:le}=Y,{x:se,y:U}=le,{x:G,y:te}=Q,{P:ae}=n(),oe=B?"marginLeft":"marginRight",pe=B?"paddingLeft":"paddingRight",ue=ae[oe],me=ae.marginBottom,Ce=ae[pe],ge=ae.paddingBottom;re.width=`calc(100% + ${te+-1*ue}px)`,re[oe]=-te+ue,re.marginBottom=-G+me,q&&(re[pe]=Ce+(U?te:0),re.paddingBottom=ge+(se?G:0))},[W,z]=w?w.H(k,b,i,l,n,F,X):[()=>k,()=>[co]];return(Y,B,q)=>{const{gt:re,Ot:Q,wt:le,xt:se,vt:U,yt:G}=Y,{ht:te,bt:ae}=n(),[oe,pe]=B("showNativeOverlaidScrollbars"),[ue,me]=B("overflow"),Ce=oe&&x.x&&x.y,ge=!u&&!b&&(re||le||Q||pe||U),fe=Sp(ue.x),De=Sp(ue.y),je=fe||De;let Be=I(q),rt=M(q),Ue=R(q),wt=O(q),Ye;if(pe&&y&&p(uM,ZJ,!Ce),ge&&(Ye=F(Ce),K(Ye,te)),re||se||le||G||pe){je&&p(uc,cc,!1);const[ke,ze]=z(Ce,ae,Ye),[Le,Ve]=Be=j(q),[ct,bn]=rt=E(q),jt=Bp(i);let Pt=ct,sr=jt;ke(),(bn||Ve||pe)&&ze&&!Ce&&W(ze,ct,Le,ae)&&(sr=Bp(i),Pt=Jh(i));const Mn={w:Da(lb(ct.w,Pt.w)+Le.w),h:Da(lb(ct.h,Pt.h)+Le.h)},pn={w:Da((_?m.innerWidth:sr.w+Da(jt.w-ct.w))+Le.w),h:Da((_?m.innerHeight+Le.h:sr.h+Da(jt.h-ct.h))+Le.h)};wt=A(pn),Ue=D(Eee(Mn,pn),q)}const[tt,be]=wt,[Re,st]=Ue,[mt,ve]=rt,[Qe,ot]=Be,lt={x:Re.w>0,y:Re.h>0},Me=fe&&De&&(lt.x||lt.y)||fe&<.x&&!lt.y||De&<.y&&!lt.x;if(se||G||ot||ve||be||st||me||pe||ge){const ke={marginRight:0,marginBottom:0,marginLeft:0,width:"",overflowY:"",overflowX:""},ze=V(Ce,lt,ue,ke),Le=W(ze,mt,Qe,ae);u||X(ze,ae,Le,ke),ge&&K(ze,te),u?(er(o,lM,ke.overflowX),er(o,cM,ke.overflowY)):tr(i,ke)}Ei(o,Ao,cc,Me),Ei(s,ab,JJ,Me),u||Ei(i,Oa,uc,je);const[$e,At]=T(F(Ce).Ct);return r({Ct:$e,zt:{x:tt.w,y:tt.h},Tt:{x:Re.w,y:Re.h},Et:lt}),{It:At,At:be,Lt:st}}},e_=(e,t,n)=>{const r={},o=t||{},s=Gr(e).concat(Gr(o));return Dt(s,i=>{const l=e[i],u=o[i];r[i]=!!(n||l||u)}),r},Oee=(e,t)=>{const{W:n,J:r,_t:o,ut:s}=e,{I:i,A:l,V:u}=Rr(),p=!i&&(l.x||l.y),h=[_ee(e,t),jee(e,t),Mee(e,t)];return(m,v,b)=>{const y=e_(fn({gt:!1,xt:!1,yt:!1,vt:!1,At:!1,Lt:!1,It:!1,Ot:!1,wt:!1},v),{},b),x=p||!u,w=x&&zo(r),k=x&&Zs(r);o("",tm,!0);let _=y;return Dt(h,j=>{_=e_(_,j(_,m,!!b)||{},b)}),zo(r,w),Zs(r,k),o("",tm),s||(zo(n,0),Zs(n,0)),_}},Dee=(e,t,n)=>{let r,o=!1;const s=()=>{o=!0},i=l=>{if(n){const u=n.reduce((p,h)=>{if(h){const[m,v]=h,b=v&&m&&(l?l(m):qE(m,e));b&&b.length&&v&&ni(v)&&zt(p,[b,v.trim()],!0)}return p},[]);Dt(u,p=>Dt(p[0],h=>{const m=p[1],v=r.get(h)||[];if(e.contains(h)){const y=$n(h,m,x=>{o?(y(),r.delete(h)):t(x)});r.set(h,zt(v,y))}else js(v),r.delete(h)}))}};return n&&(r=new WeakMap,i()),[s,i]},t_=(e,t,n,r)=>{let o=!1;const{Ht:s,Pt:i,Dt:l,Mt:u,Rt:p,kt:h}=r||{},m=hy(()=>{o&&n(!0)},{v:33,g:99}),[v,b]=Dee(e,m,l),y=s||[],x=i||[],w=y.concat(x),k=(j,I)=>{const E=p||co,M=h||co,D=new Set,R=new Set;let A=!1,O=!1;if(Dt(j,T=>{const{attributeName:K,target:F,type:V,oldValue:X,addedNodes:W,removedNodes:z}=T,Y=V==="attributes",B=V==="childList",q=e===F,re=Y&&ni(K)?er(F,K):0,Q=re!==0&&X!==re,le=ly(x,K)>-1&&Q;if(t&&(B||!q)){const se=!Y,U=Y&&Q,G=U&&u&&Qh(F,u),ae=(G?!E(F,K,X,re):se||U)&&!M(T,!!G,e,r);Dt(W,oe=>D.add(oe)),Dt(z,oe=>D.add(oe)),O=O||ae}!t&&q&&Q&&!E(F,K,X,re)&&(R.add(K),A=A||le)}),D.size>0&&b(T=>Gi(D).reduce((K,F)=>(zt(K,qE(T,F)),Qh(F,T)?zt(K,F):K),[])),t)return!I&&O&&n(!1),[!1];if(R.size>0||A){const T=[Gi(R),A];return!I&&n.apply(0,T),T}},_=new BJ(j=>k(j));return _.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:w,subtree:t,childList:t,characterData:t}),o=!0,[()=>{o&&(v(),_.disconnect(),o=!1)},()=>{if(o){m.m();const j=_.takeRecords();return!cy(j)&&k(j,!0)}}]},kp=3333333,_p=e=>e&&(e.height||e.width),vM=(e,t,n)=>{const{Bt:r=!1,Vt:o=!1}=n||{},s=Ki()[hee],{B:i}=Rr(),u=XE(`
`)[0],p=u.firstChild,h=cd.bind(0,e),[m]=Ro({o:void 0,_:!0,u:(x,w)=>!(!x||!_p(x)&&_p(w))}),v=x=>{const w=Ko(x)&&x.length>0&&ld(x[0]),k=!w&&iy(x[0]);let _=!1,j=!1,I=!0;if(w){const[E,,M]=m(x.pop().contentRect),D=_p(E),R=_p(M);_=!M||!D,j=!R&&D,I=!_}else k?[,I]=x:j=x===!0;if(r&&I){const E=k?x[0]:cd(u);zo(u,E?i.n?-kp:i.i?0:kp:kp),Zs(u,kp)}_||t({gt:!k,Yt:k?x:void 0,Vt:!!j})},b=[];let y=o?v:!1;return[()=>{js(b),bs(u)},()=>{if(Xl){const x=new Xl(v);x.observe(p),zt(b,()=>{x.disconnect()})}else if(s){const[x,w]=s.O(p,v,o);y=x,zt(b,w)}if(r){const[x]=Ro({o:void 0},h);zt(b,$n(u,"scroll",w=>{const k=x(),[_,j,I]=k;j&&(py(p,"ltr rtl"),_?Js(p,"rtl"):Js(p,"ltr"),v([!!_,j,I])),nM(w)}))}y&&(Js(u,eee),zt(b,$n(u,"animationstart",y,{C:!!Xl}))),(Xl||s)&&fo(e,u)}]},Ree=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,Aee=(e,t)=>{let n;const r=Mi(nee),o=[],[s]=Ro({o:!1}),i=(u,p)=>{if(u){const h=s(Ree(u)),[,m]=h;if(m)return!p&&t(h),[h]}},l=(u,p)=>{if(u&&u.length>0)return i(u.pop(),p)};return[()=>{js(o),bs(r)},()=>{if($k)n=new $k(u=>l(u),{root:e}),n.observe(r),zt(o,()=>{n.disconnect()});else{const u=()=>{const m=ud(r);i(m)},[p,h]=vM(r,u);zt(o,p),h(),u()}fo(e,r)},()=>{if(n)return l(n.takeRecords(),!0)}]},n_=`[${Ao}]`,Nee=`[${Oa}]`,Tv=["tabindex"],r_=["wrap","cols","rows"],$v=["id","class","style","open"],Tee=(e,t,n)=>{let r,o,s;const{Z:i,J:l,tt:u,rt:p,ut:h,ft:m,_t:v}=e,{V:b}=Rr(),[y]=Ro({u:JE,o:{w:0,h:0}},()=>{const V=m(uc,cc),X=m(Rv,""),W=X&&zo(l),z=X&&Zs(l);v(uc,cc),v(Rv,""),v("",tm,!0);const Y=Jh(u),B=Jh(l),q=em(l);return v(uc,cc,V),v(Rv,"",X),v("",tm),zo(l,W),Zs(l,z),{w:B.w+Y.w+q.w,h:B.h+Y.h+q.h}}),x=p?r_:$v.concat(r_),w=hy(n,{v:()=>r,g:()=>o,p(V,X){const[W]=V,[z]=X;return[Gr(W).concat(Gr(z)).reduce((Y,B)=>(Y[B]=W[B]||z[B],Y),{})]}}),k=V=>{Dt(V||Tv,X=>{if(ly(Tv,X)>-1){const W=er(i,X);ni(W)?er(l,X,W):Cr(l,X)}})},_=(V,X)=>{const[W,z]=V,Y={vt:z};return t({ht:W}),!X&&n(Y),Y},j=({gt:V,Yt:X,Vt:W})=>{const z=!V||W?n:w;let Y=!1;if(X){const[B,q]=X;Y=q,t({bt:B})}z({gt:V,yt:Y})},I=(V,X)=>{const[,W]=y(),z={wt:W};return W&&!X&&(V?n:w)(z),z},E=(V,X,W)=>{const z={Ot:X};return X?!W&&w(z):h||k(V),z},[M,D,R]=u||!b?Aee(i,_):[co,co,co],[A,O]=h?[co,co]:vM(i,j,{Vt:!0,Bt:!0}),[T,K]=t_(i,!1,E,{Pt:$v,Ht:$v.concat(Tv)}),F=h&&Xl&&new Xl(j.bind(0,{gt:!0}));return F&&F.observe(i),k(),[()=>{M(),A(),s&&s[0](),F&&F.disconnect(),T()},()=>{O(),D()},()=>{const V={},X=K(),W=R(),z=s&&s[1]();return X&&fn(V,E.apply(0,zt(X,!0))),W&&fn(V,_.apply(0,zt(W,!0))),z&&fn(V,I.apply(0,zt(z,!0))),V},V=>{const[X]=V("update.ignoreMutation"),[W,z]=V("update.attributes"),[Y,B]=V("update.elementEvents"),[q,re]=V("update.debounce"),Q=B||z,le=se=>Go(X)&&X(se);if(Q&&(s&&(s[1](),s[0]()),s=t_(u||l,!0,I,{Ht:x.concat(W||[]),Dt:Y,Mt:n_,kt:(se,U)=>{const{target:G,attributeName:te}=se;return(!U&&te&&!h?NJ(G,n_,Nee):!1)||!!ql(G,`.${Dr}`)||!!le(se)}})),re)if(w.m(),Ko(q)){const se=q[0],U=q[1];r=Va(se)&&se,o=Va(U)&&U}else Va(q)?(r=q,o=!1):(r=!1,o=!1)}]},o_={x:0,y:0},$ee=e=>({K:{t:0,r:0,b:0,l:0},St:!1,P:{marginRight:0,marginBottom:0,marginLeft:0,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0},zt:o_,Tt:o_,Ct:{x:"hidden",y:"hidden"},Et:{x:!1,y:!1},ht:!1,bt:cd(e.Z)}),Lee=(e,t)=>{const n=ib(t,{}),[r,o,s]=gy(),[i,l,u]=kee(e),p=mM($ee(i)),[h,m]=p,v=Oee(i,p),b=(j,I,E)=>{const D=Gr(j).some(R=>j[R])||!uy(I)||E;return D&&s("u",[j,I,E]),D},[y,x,w,k]=Tee(i,m,j=>b(v(n,j),{},!1)),_=h.bind(0);return _.jt=j=>r("u",j),_.Nt=()=>{const{W:j,J:I}=i,E=zo(j),M=Zs(j);x(),l(),zo(I,E),Zs(I,M)},_.qt=i,[(j,I)=>{const E=ib(t,j,I);return k(E),b(v(E,w(),I),j,!!I)},_,()=>{o(),y(),u()}]},{round:s_}=Math,zee=e=>{const{width:t,height:n}=fs(e),{w:r,h:o}=ud(e);return{x:s_(t)/r||1,y:s_(n)/o||1}},Fee=(e,t,n)=>{const r=t.scrollbars,{button:o,isPrimary:s,pointerType:i}=e,{pointers:l}=r;return o===0&&s&&r[n?"dragScroll":"clickScroll"]&&(l||[]).includes(i)},Bee=(e,t)=>$n(e,"mousedown",$n.bind(0,t,"click",nM,{C:!0,$:!0}),{$:!0}),a_="pointerup pointerleave pointercancel lostpointercapture",Hee=(e,t,n,r,o,s,i)=>{const{B:l}=Rr(),{Ft:u,Gt:p,Xt:h}=r,m=`scroll${i?"Left":"Top"}`,v=`client${i?"X":"Y"}`,b=i?"width":"height",y=i?"left":"top",x=i?"w":"h",w=i?"x":"y",k=(_,j)=>I=>{const{Tt:E}=s(),M=ud(p)[x]-ud(u)[x],R=j*I/M*E[w],O=cd(h)&&i?l.n||l.i?1:-1:1;o[m]=_+R*O};return $n(p,"pointerdown",_=>{const j=ql(_.target,`.${by}`)===u,I=j?u:p;if(Ei(t,Ao,Vk,!0),Fee(_,e,j)){const E=!j&&_.shiftKey,M=()=>fs(u),D=()=>fs(p),R=(B,q)=>(B||M())[y]-(q||D())[y],A=k(o[m]||0,1/zee(o)[w]),O=_[v],T=M(),K=D(),F=T[b],V=R(T,K)+F/2,X=O-K[y],W=j?0:X-V,z=B=>{js(Y),I.releasePointerCapture(B.pointerId)},Y=[Ei.bind(0,t,Ao,Vk),$n(n,a_,z),$n(n,"selectstart",B=>rM(B),{S:!1}),$n(p,a_,z),$n(p,"pointermove",B=>{const q=B[v]-O;(j||E)&&A(W+q)})];if(E)A(W);else if(!j){const B=Ki()[mee];B&&zt(Y,B.O(A,R,W,F,X))}I.setPointerCapture(_.pointerId)}})},Wee=(e,t)=>(n,r,o,s,i,l)=>{const{Xt:u}=n,[p,h]=Hl(333),m=!!i.scrollBy;let v=!0;return js.bind(0,[$n(u,"pointerenter",()=>{r(Kk,!0)}),$n(u,"pointerleave pointercancel",()=>{r(Kk)}),$n(u,"wheel",b=>{const{deltaX:y,deltaY:x,deltaMode:w}=b;m&&v&&w===0&&ra(u)===s&&i.scrollBy({left:y,top:x,behavior:"smooth"}),v=!1,r(Yk,!0),p(()=>{v=!0,r(Yk)}),rM(b)},{S:!1,$:!0}),Bee(u,o),Hee(e,s,o,n,i,t,l),h])},{min:cb,max:i_,abs:Vee,round:Uee}=Math,bM=(e,t,n,r)=>{if(r){const l=n?"x":"y",{Tt:u,zt:p}=r,h=p[l],m=u[l];return i_(0,cb(1,h/(h+m)))}const o=n?"width":"height",s=fs(e)[o],i=fs(t)[o];return i_(0,cb(1,s/i))},Gee=(e,t,n,r,o,s)=>{const{B:i}=Rr(),l=s?"x":"y",u=s?"Left":"Top",{Tt:p}=r,h=Uee(p[l]),m=Vee(n[`scroll${u}`]),v=s&&o,b=i.i?m:h-m,x=cb(1,(v?b:m)/h),w=bM(e,t,s);return 1/w*(1-w)*x},Kee=(e,t,n)=>{const{N:r,L:o}=Rr(),{scrollbars:s}=r(),{slot:i}=s,{ct:l,W:u,Z:p,J:h,lt:m,ot:v,it:b,ut:y}=t,{scrollbars:x}=m?{}:e,{slot:w}=x||{},k=pM([u,p,h],()=>y&&b?u:p,i,w),_=(W,z,Y)=>{const B=Y?Js:py;Dt(W,q=>{B(q.Xt,z)})},j=(W,z)=>{Dt(W,Y=>{const[B,q]=z(Y);tr(B,q)})},I=(W,z,Y)=>{j(W,B=>{const{Ft:q,Gt:re}=B;return[q,{[Y?"width":"height"]:`${(100*bM(q,re,Y,z)).toFixed(3)}%`}]})},E=(W,z,Y)=>{const B=Y?"X":"Y";j(W,q=>{const{Ft:re,Gt:Q,Xt:le}=q,se=Gee(re,Q,v,z,cd(le),Y);return[re,{transform:se===se?`translate${B}(${(100*se).toFixed(3)}%)`:""}]})},M=[],D=[],R=[],A=(W,z,Y)=>{const B=iy(Y),q=B?Y:!0,re=B?!Y:!0;q&&_(D,W,z),re&&_(R,W,z)},O=W=>{I(D,W,!0),I(R,W)},T=W=>{E(D,W,!0),E(R,W)},K=W=>{const z=W?aee:iee,Y=W?D:R,B=cy(Y)?Gk:"",q=Mi(`${Dr} ${z} ${B}`),re=Mi(dM),Q=Mi(by),le={Xt:q,Gt:re,Ft:Q};return o||Js(q,ree),fo(q,re),fo(re,Q),zt(Y,le),zt(M,[bs.bind(0,q),n(le,A,l,p,v,W)]),le},F=K.bind(0,!0),V=K.bind(0,!1),X=()=>{fo(k,D[0].Xt),fo(k,R[0].Xt),Zh(()=>{A(Gk)},300)};return F(),V(),[{Ut:O,Wt:T,Zt:A,Jt:{Kt:D,Qt:F,tn:j.bind(0,D)},nn:{Kt:R,Qt:V,tn:j.bind(0,R)}},X,js.bind(0,M)]},qee=(e,t,n,r)=>{let o,s,i,l,u,p=0;const h=mM({}),[m]=h,[v,b]=Hl(),[y,x]=Hl(),[w,k]=Hl(100),[_,j]=Hl(100),[I,E]=Hl(()=>p),[M,D,R]=Kee(e,n.qt,Wee(t,n)),{Z:A,J:O,ot:T,st:K,ut:F,it:V}=n.qt,{Jt:X,nn:W,Zt:z,Ut:Y,Wt:B}=M,{tn:q}=X,{tn:re}=W,Q=te=>{const{Xt:ae}=te,oe=F&&!V&&ra(ae)===O&&ae;return[oe,{transform:oe?`translate(${zo(T)}px, ${Zs(T)}px)`:""}]},le=(te,ae)=>{if(E(),te)z(Xk);else{const oe=()=>z(Xk,!0);p>0&&!ae?I(oe):oe()}},se=()=>{l=s,l&&le(!0)},U=[k,E,j,x,b,R,$n(A,"pointerover",se,{C:!0}),$n(A,"pointerenter",se),$n(A,"pointerleave",()=>{l=!1,s&&le(!1)}),$n(A,"pointermove",()=>{o&&v(()=>{k(),le(!0),_(()=>{o&&le(!1)})})}),$n(K,"scroll",te=>{y(()=>{B(n()),i&&le(!0),w(()=>{i&&!l&&le(!1)})}),r(te),F&&q(Q),F&&re(Q)})],G=m.bind(0);return G.qt=M,G.Nt=D,[(te,ae,oe)=>{const{At:pe,Lt:ue,It:me,yt:Ce}=oe,{A:ge}=Rr(),fe=ib(t,te,ae),De=n(),{Tt:je,Ct:Be,bt:rt}=De,[Ue,wt]=fe("showNativeOverlaidScrollbars"),[Ye,tt]=fe("scrollbars.theme"),[be,Re]=fe("scrollbars.visibility"),[st,mt]=fe("scrollbars.autoHide"),[ve]=fe("scrollbars.autoHideDelay"),[Qe,ot]=fe("scrollbars.dragScroll"),[lt,Me]=fe("scrollbars.clickScroll"),$e=pe||ue||Ce,At=me||Re,ke=Ue&&ge.x&&ge.y,ze=(Le,Ve)=>{const ct=be==="visible"||be==="auto"&&Le==="scroll";return z(lee,ct,Ve),ct};if(p=ve,wt&&z(oee,ke),tt&&(z(u),z(Ye,!0),u=Ye),mt&&(o=st==="move",s=st==="leave",i=st!=="never",le(!i,!0)),ot&&z(dee,Qe),Me&&z(uee,lt),At){const Le=ze(Be.x,!0),Ve=ze(Be.y,!1);z(cee,!(Le&&Ve))}$e&&(Y(De),B(De),z(qk,!je.x,!0),z(qk,!je.y,!1),z(see,rt&&!V))},G,js.bind(0,U)]},xM=(e,t,n)=>{Go(e)&&e(t||void 0,n||void 0)},Fa=(e,t,n)=>{const{F:r,N:o,Y:s,j:i}=Rr(),l=Ki(),u=Yh(e),p=u?e:e.target,h=hM(p);if(t&&!h){let m=!1;const v=F=>{const V=Ki()[pee],X=V&&V.O;return X?X(F,!0):F},b=fn({},r(),v(t)),[y,x,w]=gy(n),[k,_,j]=Lee(e,b),[I,E,M]=qee(e,b,_,F=>w("scroll",[K,F])),D=(F,V)=>k(F,!!V),R=D.bind(0,{},!0),A=s(R),O=i(R),T=F=>{See(p),A(),O(),M(),j(),m=!0,w("destroyed",[K,!!F]),x()},K={options(F,V){if(F){const X=V?r():{},W=oM(b,fn(X,v(F)));uy(W)||(fn(b,W),D(W))}return fn({},b)},on:y,off:(F,V)=>{F&&V&&x(F,V)},state(){const{zt:F,Tt:V,Ct:X,Et:W,K:z,St:Y,bt:B}=_();return fn({},{overflowEdge:F,overflowAmount:V,overflowStyle:X,hasOverflow:W,padding:z,paddingAbsolute:Y,directionRTL:B,destroyed:m})},elements(){const{W:F,Z:V,K:X,J:W,tt:z,ot:Y,st:B}=_.qt,{Jt:q,nn:re}=E.qt,Q=se=>{const{Ft:U,Gt:G,Xt:te}=se;return{scrollbar:te,track:G,handle:U}},le=se=>{const{Kt:U,Qt:G}=se,te=Q(U[0]);return fn({},te,{clone:()=>{const ae=Q(G());return I({},!0,{}),ae}})};return fn({},{target:F,host:V,padding:X||W,viewport:W,content:z||W,scrollOffsetElement:Y,scrollEventElement:B,scrollbarHorizontal:le(q),scrollbarVertical:le(re)})},update:F=>D({},F),destroy:T.bind(0)};return _.jt((F,V,X)=>{I(V,X,F)}),wee(p,K),Dt(Gr(l),F=>xM(l[F],0,K)),Cee(_.qt.it,o().cancel,!u&&e.cancel)?(T(!0),K):(_.Nt(),E.Nt(),w("initialized",[K]),_.jt((F,V,X)=>{const{gt:W,yt:z,vt:Y,At:B,Lt:q,It:re,wt:Q,Ot:le}=F;w("updated",[K,{updateHints:{sizeChanged:W,directionChanged:z,heightIntrinsicChanged:Y,overflowEdgeChanged:B,overflowAmountChanged:q,overflowStyleChanged:re,contentMutation:Q,hostMutation:le},changedOptions:V,force:X}])}),K.update(!0),K)}return h};Fa.plugin=e=>{Dt(fee(e),t=>xM(t,Fa))};Fa.valid=e=>{const t=e&&e.elements,n=Go(t)&&t();return nb(n)&&!!hM(n.target)};Fa.env=()=>{const{k:e,A:t,I:n,B:r,V:o,L:s,X:i,U:l,N:u,q:p,F:h,G:m}=Rr();return fn({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,rtlScrollBehavior:r,flexboxGlue:o,cssCustomProperties:s,staticDefaultInitialization:i,staticDefaultOptions:l,getDefaultInitialization:u,setDefaultInitialization:p,getDefaultOptions:h,setDefaultOptions:m})};const Xee=()=>{if(typeof window>"u"){const p=()=>{};return[p,p]}let e,t;const n=window,r=typeof n.requestIdleCallback=="function",o=n.requestAnimationFrame,s=n.cancelAnimationFrame,i=r?n.requestIdleCallback:o,l=r?n.cancelIdleCallback:s,u=()=>{l(e),s(t)};return[(p,h)=>{u(),e=i(r?()=>{u(),t=o(p)}:p,typeof h=="object"?h:{timeout:2233})},u]},yM=e=>{const{options:t,events:n,defer:r}=e||{},[o,s]=d.useMemo(Xee,[]),i=d.useRef(null),l=d.useRef(r),u=d.useRef(t),p=d.useRef(n);return d.useEffect(()=>{l.current=r},[r]),d.useEffect(()=>{const{current:h}=i;u.current=t,Fa.valid(h)&&h.options(t||{},!0)},[t]),d.useEffect(()=>{const{current:h}=i;p.current=n,Fa.valid(h)&&h.on(n||{},!0)},[n]),d.useEffect(()=>()=>{var h;s(),(h=i.current)==null||h.destroy()},[]),d.useMemo(()=>[h=>{const m=i.current;if(Fa.valid(m))return;const v=l.current,b=u.current||{},y=p.current||{},x=()=>i.current=Fa(h,b,y);v?o(x,v):x()},()=>i.current],[])},Yee=(e,t)=>{const{element:n="div",options:r,events:o,defer:s,children:i,...l}=e,u=n,p=d.useRef(null),h=d.useRef(null),[m,v]=yM({options:r,events:o,defer:s});return d.useEffect(()=>{const{current:b}=p,{current:y}=h;return b&&y&&m({target:b,elements:{viewport:y,content:y}}),()=>{var x;return(x=v())==null?void 0:x.destroy()}},[m,n]),d.useImperativeHandle(t,()=>({osInstance:v,getElement:()=>p.current}),[]),H.createElement(u,{"data-overlayscrollbars-initialize":"",ref:p,...l},H.createElement("div",{ref:h},i))},ug=d.forwardRef(Yee),Qee=e=>{const{boardToDelete:t,setBoardToDelete:n}=e,{t:r}=Z(),o=L(_=>_.config.canRestoreDeletedImagesFromBin),{currentData:s,isFetching:i}=vD((t==null?void 0:t.board_id)??Er.skipToken),l=d.useMemo(()=>ie([xe],_=>{const j=(s??[]).map(E=>Lj(_,E));return{imageUsageSummary:{isInitialImage:Br(j,E=>E.isInitialImage),isCanvasImage:Br(j,E=>E.isCanvasImage),isNodesImage:Br(j,E=>E.isNodesImage),isControlNetImage:Br(j,E=>E.isControlNetImage),isIPAdapterImage:Br(j,E=>E.isIPAdapterImage)}}}),[s]),[u,{isLoading:p}]=bD(),[h,{isLoading:m}]=xD(),{imageUsageSummary:v}=L(l),b=d.useCallback(()=>{t&&(u(t.board_id),n(void 0))},[t,u,n]),y=d.useCallback(()=>{t&&(h(t.board_id),n(void 0))},[t,h,n]),x=d.useCallback(()=>{n(void 0)},[n]),w=d.useRef(null),k=d.useMemo(()=>m||p||i,[m,p,i]);return t?a.jsx($d,{isOpen:!!t,onClose:x,leastDestructiveRef:w,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsxs(Ho,{fontSize:"lg",fontWeight:"bold",children:["Delete ",t.board_name]}),a.jsx(Vo,{children:a.jsxs($,{direction:"column",gap:3,children:[i?a.jsx(Hm,{children:a.jsx($,{sx:{w:"full",h:32}})}):a.jsx(jE,{imageUsage:v,topMessage:r("boards.topMessage"),bottomMessage:r("boards.bottomMessage")}),a.jsx(ye,{children:"Deleted boards cannot be restored."}),a.jsx(ye,{children:r(o?"gallery.deleteImageBin":"gallery.deleteImagePermanent")})]})}),a.jsx(gs,{children:a.jsxs($,{sx:{justifyContent:"space-between",width:"full",gap:2},children:[a.jsx(it,{ref:w,onClick:x,children:"Cancel"}),a.jsx(it,{colorScheme:"warning",isLoading:k,onClick:b,children:"Delete Board Only"}),a.jsx(it,{colorScheme:"error",isLoading:k,onClick:y,children:"Delete Board and Images"})]})})]})})}):null},Zee=d.memo(Qee),Jee=()=>{const{t:e}=Z(),[t,{isLoading:n}]=yD(),r=e("boards.myBoard"),o=d.useCallback(()=>{t(r)},[t,r]);return a.jsx(Te,{icon:a.jsx(ol,{}),isLoading:n,tooltip:e("boards.addBoard"),"aria-label":e("boards.addBoard"),onClick:o,size:"sm"})},ete=d.memo(Jee);var CM=Pd({displayName:"ExternalLinkIcon",path:a.jsxs("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeWidth:"2",children:[a.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),a.jsx("path",{d:"M15 3h6v6"}),a.jsx("path",{d:"M10 14L21 3"})]})}),dg=Pd({d:"M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z",displayName:"ChevronUpIcon"}),tte=Pd({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"}),nte=Pd({displayName:"DeleteIcon",path:a.jsx("g",{fill:"currentColor",children:a.jsx("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"})})}),rte=Pd({displayName:"ChevronDownIcon",d:"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"});const ote=ie([xe],({gallery:e})=>{const{boardSearchText:t}=e;return{boardSearchText:t}},we),ste=()=>{const e=ee(),{boardSearchText:t}=L(ote),n=d.useRef(null),{t:r}=Z(),o=d.useCallback(u=>{e(HC(u))},[e]),s=d.useCallback(()=>{e(HC(""))},[e]),i=d.useCallback(u=>{u.key==="Escape"&&s()},[s]),l=d.useCallback(u=>{o(u.target.value)},[o]);return d.useEffect(()=>{n.current&&n.current.focus()},[]),a.jsxs(L3,{children:[a.jsx(Em,{ref:n,placeholder:r("boards.searchBoard"),value:t,onKeyDown:i,onChange:l}),t&&t.length&&a.jsx(vx,{children:a.jsx(ps,{onClick:s,size:"xs",variant:"ghost","aria-label":r("boards.clearSearch"),opacity:.5,icon:a.jsx(tte,{boxSize:2})})})]})},ate=d.memo(ste);function wM(e){return CD(e)}function ite(e){return wD(e)}const SM=(e,t)=>{if(!e||!(t!=null&&t.data.current))return!1;const{actionType:n}=e,{payloadType:r}=t.data.current;if(e.id===t.data.current.id)return!1;switch(n){case"ADD_FIELD_TO_LINEAR":return r==="NODE_FIELD";case"SET_CURRENT_IMAGE":return r==="IMAGE_DTO";case"SET_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_CONTROLNET_IMAGE":return r==="IMAGE_DTO";case"SET_IP_ADAPTER_IMAGE":return r==="IMAGE_DTO";case"SET_CANVAS_INITIAL_IMAGE":return r==="IMAGE_DTO";case"SET_NODES_IMAGE":return r==="IMAGE_DTO";case"SET_MULTI_NODES_IMAGE":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BATCH":return r==="IMAGE_DTO"||"IMAGE_DTOS";case"ADD_TO_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload,i=s.board_id??"none",l=e.context.boardId;return i!==l}return r==="IMAGE_DTOS"}case"REMOVE_FROM_BOARD":{if(!(r==="IMAGE_DTO"||"IMAGE_DTOS"))return!1;if(r==="IMAGE_DTO"){const{imageDTO:s}=t.data.current.payload;return s.board_id!=="none"}return r==="IMAGE_DTOS"}default:return!1}},lte=e=>{const{isOver:t,label:n="Drop"}=e,r=d.useRef(Ba()),{colorMode:o}=la();return a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsxs($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full"},children:[a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",bg:Ae("base.700","base.900")(o),opacity:.7,borderRadius:"base",alignItems:"center",justifyContent:"center",transitionProperty:"common",transitionDuration:"0.1s"}}),a.jsx($,{sx:{position:"absolute",top:.5,insetInlineStart:.5,insetInlineEnd:.5,bottom:.5,opacity:1,borderWidth:2,borderColor:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),borderRadius:"lg",borderStyle:"dashed",transitionProperty:"common",transitionDuration:"0.1s",alignItems:"center",justifyContent:"center"},children:a.jsx(Ie,{sx:{fontSize:"2xl",fontWeight:600,transform:t?"scale(1.1)":"scale(1)",color:t?Ae("base.50","base.50")(o):Ae("base.200","base.300")(o),transitionProperty:"common",transitionDuration:"0.1s"},children:n})})]})},r.current)},kM=d.memo(lte),cte=e=>{const{dropLabel:t,data:n,disabled:r}=e,o=d.useRef(Ba()),{isOver:s,setNodeRef:i,active:l}=wM({id:o.current,disabled:r,data:n});return a.jsx(Ie,{ref:i,position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",pointerEvents:"none",children:a.jsx(nr,{children:SM(n,l)&&a.jsx(kM,{isOver:s,label:t})})})},wy=d.memo(cte),ute=({isSelected:e,isHovered:t})=>a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e?1:.7,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:e?t?"hoverSelected.light":"selected.light":t?"hoverUnselected.light":void 0,_dark:{shadow:e?t?"hoverSelected.dark":"selected.dark":t?"hoverUnselected.dark":void 0}}}),Sy=d.memo(ute),dte=()=>a.jsx($,{sx:{position:"absolute",insetInlineEnd:0,top:0,p:1},children:a.jsx(da,{variant:"solid",sx:{bg:"accent.400",_dark:{bg:"accent.500"}},children:"auto"})}),_M=d.memo(dte);function ky(e){const[t,n]=d.useState(!1),[r,o]=d.useState(!1),[s,i]=d.useState(!1),[l,u]=d.useState([0,0]),p=d.useRef(null),h=L(v=>v.ui.globalContextMenuCloseTrigger);d.useEffect(()=>{if(t)setTimeout(()=>{o(!0),setTimeout(()=>{i(!0)})});else{i(!1);const v=setTimeout(()=>{o(t)},1e3);return()=>clearTimeout(v)}},[t]),d.useEffect(()=>{n(!1),i(!1),o(!1)},[h]),tz("contextmenu",v=>{var b;(b=p.current)!=null&&b.contains(v.target)||v.target===p.current?(v.preventDefault(),n(!0),u([v.pageX,v.pageY])):n(!1)});const m=d.useCallback(()=>{var v,b;(b=(v=e.menuProps)==null?void 0:v.onClose)==null||b.call(v),n(!1)},[e.menuProps]);return a.jsxs(a.Fragment,{children:[e.children(p),r&&a.jsx(_d,{...e.portalProps,children:a.jsxs(Nd,{isOpen:s,gutter:0,...e.menuProps,onClose:m,children:[a.jsx(Td,{"aria-hidden":!0,w:1,h:1,style:{position:"absolute",left:l[0],top:l[1],cursor:"default"},...e.menuButtonProps}),e.renderMenu()]})})]})}const fg=e=>{const{boardName:t}=pm(void 0,{selectFromResult:({data:n})=>{const r=n==null?void 0:n.find(s=>s.board_id===e);return{boardName:(r==null?void 0:r.board_name)||"Uncategorized"}}});return t},fte=({board:e,setBoardToDelete:t})=>{const n=d.useCallback(()=>{t&&t(e)},[e,t]);return a.jsxs(a.Fragment,{children:[e.image_count>0&&a.jsx(a.Fragment,{}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClick:n,children:"Delete Board"})]})},pte=d.memo(fte),hte=()=>a.jsx(a.Fragment,{}),mte=d.memo(hte),gte=({board:e,board_id:t,setBoardToDelete:n,children:r})=>{const o=ee(),s=d.useMemo(()=>ie(xe,({gallery:b,system:y})=>{const x=b.autoAddBoardId===t,w=y.isProcessing,k=b.autoAssignBoardOnClick;return{isAutoAdd:x,isProcessing:w,autoAssignBoardOnClick:k}},we),[t]),{isAutoAdd:i,isProcessing:l,autoAssignBoardOnClick:u}=L(s),p=fg(t),h=d.useCallback(()=>{o(mm(t))},[t,o]),m=d.useCallback(b=>{b.preventDefault()},[]),{t:v}=Z();return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:m,children:a.jsxs(Sc,{title:p,children:[a.jsx(Wt,{icon:a.jsx(ol,{}),isDisabled:i||l||u,onClick:h,children:v("boards.menuItemAutoAdd")}),!e&&a.jsx(mte,{}),e&&a.jsx(pte,{board:e,setBoardToDelete:n})]})}),children:r})},jM=d.memo(gte),vte=({board:e,isSelected:t,setBoardToDelete:n})=>{const r=ee(),o=d.useMemo(()=>ie(xe,({gallery:O,system:T})=>{const K=e.board_id===O.autoAddBoardId,F=O.autoAssignBoardOnClick,V=T.isProcessing;return{isSelectedForAutoAdd:K,autoAssignBoardOnClick:F,isProcessing:V}},we),[e.board_id]),{isSelectedForAutoAdd:s,autoAssignBoardOnClick:i,isProcessing:l}=L(o),[u,p]=d.useState(!1),h=d.useCallback(()=>{p(!0)},[]),m=d.useCallback(()=>{p(!1)},[]),{data:v}=Vj(e.board_id),{data:b}=Uj(e.board_id),y=d.useMemo(()=>{if(!(!v||!b))return`${v} image${v>1?"s":""}, ${b} asset${b>1?"s":""}`},[b,v]),{currentData:x}=Wr(e.cover_image_name??Er.skipToken),{board_name:w,board_id:k}=e,[_,j]=d.useState(w),I=d.useCallback(()=>{r(Gj(k)),i&&!l&&r(mm(k))},[k,i,l,r]),[E,{isLoading:M}]=SD(),D=d.useMemo(()=>({id:k,actionType:"ADD_TO_BOARD",context:{boardId:k}}),[k]),R=d.useCallback(async O=>{if(!O.trim()){j(w);return}if(O!==w)try{const{board_name:T}=await E({board_id:k,changes:{board_name:O}}).unwrap();j(T)}catch{j(w)}},[k,w,E]),A=d.useCallback(O=>{j(O)},[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:h,onMouseOut:m,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",w:"full",h:"full"},children:a.jsx(jM,{board:e,board_id:k,setBoardToDelete:n,children:O=>a.jsx(Rt,{label:y,openDelay:1e3,hasArrow:!0,children:a.jsxs($,{ref:O,onClick:I,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[x!=null&&x.thumbnail_url?a.jsx(Qi,{src:x==null?void 0:x.thumbnail_url,draggable:!1,sx:{objectFit:"cover",w:"full",h:"full",maxH:"full",borderRadius:"base",borderBottomRadius:"lg"}}):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Tn,{boxSize:12,as:eJ,sx:{mt:-6,opacity:.7,color:"base.500",_dark:{color:"base.500"}}})}),s&&a.jsx(_M,{}),a.jsx(Sy,{isSelected:t,isHovered:u}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:t?"accent.400":"base.500",color:t?"base.50":"base.100",_dark:{bg:t?"accent.500":"base.600",color:t?"base.50":"base.100"},lineHeight:"short",fontSize:"xs"},children:a.jsxs(jm,{value:_,isDisabled:M,submitOnBlur:!0,onChange:A,onSubmit:R,sx:{w:"full"},children:[a.jsx(_m,{sx:{p:0,fontWeight:t?700:500,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis"},noOfLines:1}),a.jsx(km,{sx:{p:0,_focusVisible:{p:0,textAlign:"center",boxShadow:"none"}}})]})}),a.jsx(wy,{data:D,dropLabel:a.jsx(ye,{fontSize:"md",children:"Move"})})]})})})})})},bte=d.memo(vte),xte=ie(xe,({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},we),PM=d.memo(({isSelected:e})=>{const t=ee(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=L(xte),s=fg("none"),i=d.useCallback(()=>{t(Gj("none")),r&&!o&&t(mm("none"))},[t,r,o]),[l,u]=d.useState(!1),p=d.useCallback(()=>{u(!0)},[]),h=d.useCallback(()=>{u(!1)},[]),m=d.useMemo(()=>({id:"no_board",actionType:"REMOVE_FROM_BOARD"}),[]);return a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none",userSelect:"none"},children:a.jsx($,{onMouseOver:p,onMouseOut:h,sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1",borderRadius:"base",w:"full",h:"full"},children:a.jsx(jM,{board_id:"none",children:v=>a.jsxs($,{ref:v,onClick:i,sx:{w:"full",h:"full",position:"relative",justifyContent:"center",alignItems:"center",borderRadius:"base",cursor:"pointer",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center"},children:a.jsx(Qi,{src:Fj,alt:"invoke-ai-logo",sx:{opacity:.4,filter:"grayscale(1)",mt:-6,w:16,h:16,minW:16,minH:16,userSelect:"none"}})}),n==="none"&&a.jsx(_M,{}),a.jsx($,{sx:{position:"absolute",bottom:0,left:0,p:1,justifyContent:"center",alignItems:"center",w:"full",maxW:"full",borderBottomRadius:"base",bg:e?"accent.400":"base.500",color:e?"base.50":"base.100",_dark:{bg:e?"accent.500":"base.600",color:e?"base.50":"base.100"},lineHeight:"short",fontSize:"xs",fontWeight:e?700:500},children:s}),a.jsx(Sy,{isSelected:e,isHovered:l}),a.jsx(wy,{data:m,dropLabel:a.jsx(ye,{fontSize:"md",children:"Move"})})]})})})})});PM.displayName="HoverableBoard";const yte=d.memo(PM),Cte=ie([xe],({gallery:e})=>{const{selectedBoardId:t,boardSearchText:n}=e;return{selectedBoardId:t,boardSearchText:n}},we),wte=e=>{const{isOpen:t}=e,{selectedBoardId:n,boardSearchText:r}=L(Cte),{data:o}=pm(),s=r?o==null?void 0:o.filter(u=>u.board_name.toLowerCase().includes(r.toLowerCase())):o,[i,l]=d.useState();return a.jsxs(a.Fragment,{children:[a.jsx(wm,{in:t,animateOpacity:!0,children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",gap:2,p:2,mt:2,borderRadius:"base"},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(ate,{}),a.jsx(ete,{})]}),a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"move",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsxs(Ga,{className:"list-container",sx:{gridTemplateColumns:"repeat(auto-fill, minmax(108px, 1fr));",maxH:346},children:[a.jsx(td,{sx:{p:1.5},children:a.jsx(yte,{isSelected:n==="none"})}),s&&s.map(u=>a.jsx(td,{sx:{p:1.5},children:a.jsx(bte,{board:u,isSelected:n===u.board_id,setBoardToDelete:l})},u.board_id))]})})]})}),a.jsx(Zee,{boardToDelete:i,setBoardToDelete:l})]})},Ste=d.memo(wte),kte=ie([xe],e=>{const{selectedBoardId:t}=e.gallery;return{selectedBoardId:t}},we),_te=e=>{const{isOpen:t,onToggle:n}=e,{selectedBoardId:r}=L(kte),o=fg(r),s=d.useMemo(()=>o.length>20?`${o.substring(0,20)}...`:o,[o]);return a.jsxs($,{as:bc,onClick:n,size:"sm",sx:{position:"relative",gap:2,w:"full",justifyContent:"space-between",alignItems:"center",px:2},children:[a.jsx(ye,{noOfLines:1,sx:{fontWeight:600,w:"100%",textAlign:"center",color:"base.800",_dark:{color:"base.200"}},children:s}),a.jsx(dg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]})},jte=d.memo(_te),Pte=e=>{const{triggerComponent:t,children:n,hasArrow:r=!0,isLazy:o=!0,...s}=e;return a.jsxs(Fm,{isLazy:o,...s,children:[a.jsx(Rx,{children:t}),a.jsxs(Bm,{shadow:"dark-lg",children:[r&&a.jsx(xP,{}),n]})]})},qd=d.memo(Pte);function Ite(e){return Ne({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)}const Ete=e=>{const[t,n]=d.useState(!1),{label:r,value:o,min:s=1,max:i=100,step:l=1,onChange:u,tooltipSuffix:p="",withSliderMarks:h=!1,withInput:m=!1,isInteger:v=!1,inputWidth:b=16,withReset:y=!1,hideTooltip:x=!1,isCompact:w=!1,isDisabled:k=!1,sliderMarks:_,handleReset:j,sliderFormControlProps:I,sliderFormLabelProps:E,sliderMarkProps:M,sliderTrackProps:D,sliderThumbProps:R,sliderNumberInputProps:A,sliderNumberInputFieldProps:O,sliderNumberInputStepperProps:T,sliderTooltipProps:K,sliderIAIIconButtonProps:F,...V}=e,X=ee(),{t:W}=Z(),[z,Y]=d.useState(String(o));d.useEffect(()=>{Y(o)},[o]);const B=d.useMemo(()=>A!=null&&A.min?A.min:s,[s,A==null?void 0:A.min]),q=d.useMemo(()=>A!=null&&A.max?A.max:i,[i,A==null?void 0:A.max]),re=d.useCallback(ae=>{u(ae)},[u]),Q=d.useCallback(ae=>{ae.target.value===""&&(ae.target.value=String(B));const oe=Ni(v?Math.floor(Number(ae.target.value)):Number(z),B,q),pe=Mu(oe,l);u(pe),Y(pe)},[v,z,B,q,u,l]),le=d.useCallback(ae=>{Y(ae)},[]),se=d.useCallback(()=>{j&&j()},[j]),U=d.useCallback(ae=>{ae.target instanceof HTMLDivElement&&ae.target.focus()},[]),G=d.useCallback(ae=>{ae.shiftKey&&X(Ir(!0))},[X]),te=d.useCallback(ae=>{ae.shiftKey||X(Ir(!1))},[X]);return a.jsxs(sn,{onClick:U,sx:w?{display:"flex",flexDirection:"row",alignItems:"center",columnGap:4,margin:0,padding:0}:{},isDisabled:k,...I,children:[r&&a.jsx(Hn,{sx:m?{mb:-1.5}:{},...E,children:r}),a.jsxs(Om,{w:"100%",gap:2,alignItems:"center",children:[a.jsxs(Lx,{"aria-label":r,value:o,min:s,max:i,step:l,onChange:re,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),focusThumbOnChange:!1,isDisabled:k,...V,children:[h&&!_&&a.jsxs(a.Fragment,{children:[a.jsx(Fl,{value:s,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...M,children:s}),a.jsx(Fl,{value:i,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...M,children:i})]}),h&&_&&a.jsx(a.Fragment,{children:_.map((ae,oe)=>oe===0?a.jsx(Fl,{value:ae,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},...M,children:ae},ae):oe===_.length-1?a.jsx(Fl,{value:ae,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},...M,children:ae},ae):a.jsx(Fl,{value:ae,sx:{transform:"translateX(-50%)"},...M,children:ae},ae))}),a.jsx(Fx,{...D,children:a.jsx(Bx,{})}),a.jsx(Rt,{hasArrow:!0,placement:"top",isOpen:t,label:`${o}${p}`,hidden:x,...K,children:a.jsx(zx,{...R,zIndex:0})})]}),m&&a.jsxs(Nm,{min:B,max:q,step:l,value:z,onChange:le,onBlur:Q,focusInputOnChange:!1,...A,children:[a.jsx($m,{onKeyDown:G,onKeyUp:te,minWidth:b,...O}),a.jsxs(Tm,{...T,children:[a.jsx(zm,{onClick:()=>u(Number(z))}),a.jsx(Lm,{onClick:()=>u(Number(z))})]})]}),y&&a.jsx(Te,{size:"sm","aria-label":W("accessibility.reset"),tooltip:W("accessibility.reset"),icon:a.jsx(Ite,{}),isDisabled:k,onClick:se,...F})]})]})},Xe=d.memo(Ete),IM=d.forwardRef(({label:e,tooltip:t,description:n,disabled:r,...o},s)=>a.jsx(Rt,{label:t,placement:"top",hasArrow:!0,openDelay:500,children:a.jsx(Ie,{ref:s,...o,children:a.jsxs(Ie,{children:[a.jsx(kc,{children:e}),n&&a.jsx(kc,{size:"xs",color:"base.600",children:n})]})})}));IM.displayName="IAIMantineSelectItemWithTooltip";const ri=d.memo(IM),Mte=ie([xe],({gallery:e,system:t})=>{const{autoAddBoardId:n,autoAssignBoardOnClick:r}=e,{isProcessing:o}=t;return{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}},we),Ote=()=>{const e=ee(),{t}=Z(),{autoAddBoardId:n,autoAssignBoardOnClick:r,isProcessing:o}=L(Mte),s=d.useRef(null),{boards:i,hasBoards:l}=pm(void 0,{selectFromResult:({data:p})=>{const h=[{label:"None",value:"none"}];return p==null||p.forEach(({board_id:m,board_name:v})=>{h.push({label:v,value:m})}),{boards:h,hasBoards:h.length>1}}}),u=d.useCallback(p=>{p&&e(mm(p))},[e]);return a.jsx(Kt,{label:t("boards.autoAddBoard"),inputRef:s,autoFocus:!0,placeholder:t("boards.selectBoard"),value:n,data:i,nothingFound:t("boards.noMatching"),itemComponent:ri,disabled:!l||r||o,filter:(p,h)=>{var m;return((m=h.label)==null?void 0:m.toLowerCase().includes(p.toLowerCase().trim()))||h.value.toLowerCase().includes(p.toLowerCase().trim())},onChange:u})},Dte=d.memo(Ote),Rte=e=>{const{label:t,...n}=e,{colorMode:r}=la();return a.jsx(Sm,{colorScheme:"accent",...n,children:a.jsx(ye,{sx:{fontSize:"sm",color:Ae("base.800","base.200")(r)},children:t})})},ur=d.memo(Rte),Ate=ie([xe],e=>{const{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}=e.gallery;return{galleryImageMinimumWidth:t,shouldAutoSwitch:n,autoAssignBoardOnClick:r}},we),Nte=()=>{const e=ee(),{t}=Z(),{galleryImageMinimumWidth:n,shouldAutoSwitch:r,autoAssignBoardOnClick:o}=L(Ate),s=d.useCallback(u=>{e(WC(u))},[e]),i=d.useCallback(()=>{e(WC(64))},[e]),l=d.useCallback(u=>{e(kD(u.target.checked))},[e]);return a.jsx(qd,{triggerComponent:a.jsx(Te,{tooltip:t("gallery.gallerySettings"),"aria-label":t("gallery.gallerySettings"),size:"sm",icon:a.jsx(VE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(Xe,{value:n,onChange:s,min:45,max:256,hideTooltip:!0,label:t("gallery.galleryImageSize"),withReset:!0,handleReset:i}),a.jsx(Vt,{label:t("gallery.autoSwitchNewImages"),isChecked:r,onChange:l}),a.jsx(ur,{label:t("gallery.autoAssignBoardOnClick"),isChecked:o,onChange:u=>e(_D(u.target.checked))}),a.jsx(Dte,{})]})})},Tte=d.memo(Nte),$te=e=>e.image?a.jsx(Hm,{sx:{w:`${e.image.width}px`,h:"auto",objectFit:"contain",aspectRatio:`${e.image.width}/${e.image.height}`}}):a.jsx($,{sx:{opacity:.7,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(Xi,{size:"xl"})}),Kn=e=>{const{icon:t=Ui,boxSize:n=16}=e;return a.jsxs($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",flexDir:"column",gap:2,userSelect:"none",opacity:.7,color:"base.700",_dark:{color:"base.500"},...e.sx},children:[t&&a.jsx(Tn,{as:t,boxSize:n,opacity:.7}),e.label&&a.jsx(ye,{textAlign:"center",children:e.label})]})},pg=0,oi=1,Vc=2,EM=4;function Lte(e,t){return n=>e(t(n))}function zte(e,t){return t(e)}function MM(e,t){return n=>e(t,n)}function l_(e,t){return()=>e(t)}function _y(e,t){return t(e),e}function sl(...e){return e}function Fte(e){e()}function c_(e){return()=>e}function Bte(...e){return()=>{e.map(Fte)}}function hg(){}function pr(e,t){return e(oi,t)}function Nn(e,t){e(pg,t)}function jy(e){e(Vc)}function mg(e){return e(EM)}function Gt(e,t){return pr(e,MM(t,pg))}function u_(e,t){const n=e(oi,r=>{n(),t(r)});return n}function yn(){const e=[];return(t,n)=>{switch(t){case Vc:e.splice(0,e.length);return;case oi:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)};case pg:e.slice().forEach(r=>{r(n)});return;default:throw new Error(`unrecognized action ${t}`)}}}function dt(e){let t=e;const n=yn();return(r,o)=>{switch(r){case oi:o(t);break;case pg:t=o;break;case EM:return t}return n(r,o)}}function Hte(e){let t,n;const r=()=>t&&t();return function(o,s){switch(o){case oi:return s?n===s?void 0:(r(),n=s,t=pr(e,s),t):(r(),hg);case Vc:r(),n=null;return;default:throw new Error(`unrecognized action ${o}`)}}}function Vu(e){return _y(yn(),t=>Gt(e,t))}function dc(e,t){return _y(dt(t),n=>Gt(e,n))}function Wte(...e){return t=>e.reduceRight(zte,t)}function ft(e,...t){const n=Wte(...t);return(r,o)=>{switch(r){case oi:return pr(e,n(o));case Vc:jy(e);return}}}function OM(e,t){return e===t}function kr(e=OM){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function Gn(e){return t=>n=>{e(n)&&t(n)}}function tn(e){return t=>Lte(t,e)}function Ra(e){return t=>()=>t(e)}function jp(e,t){return n=>r=>n(t=e(t,r))}function ub(e){return t=>n=>{e>0?e--:t(n)}}function Ru(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function d_(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function cs(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,u=>{const p=n;n=n|l,t[i]=u,p!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const l=()=>s([i].concat(t));n===o?l():r=l}}function f_(...e){return function(t,n){switch(t){case oi:return Bte(...e.map(r=>pr(r,n)));case Vc:return;default:throw new Error(`unrecognized action ${t}`)}}}function It(e,t=OM){return ft(e,kr(t))}function qs(...e){const t=yn(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const l=Math.pow(2,i);pr(s,u=>{n[i]=u,r=r|l,r===o&&Nn(t,n)})}),function(s,i){switch(s){case oi:return r===o&&i(n),pr(t,i);case Vc:return jy(t);default:throw new Error(`unrecognized action ${s}`)}}}function Ps(e,t=[],{singleton:n}={singleton:!0}){return{id:Vte(),constructor:e,dependencies:t,singleton:n}}const Vte=()=>Symbol();function Ute(e){const t=new Map,n=({id:r,constructor:o,dependencies:s,singleton:i})=>{if(i&&t.has(r))return t.get(r);const l=o(s.map(u=>n(u)));return i&&t.set(r,l),l};return n(e)}function Gte(e,t){const n={},r={};let o=0;const s=e.length;for(;o(w[k]=_=>{const j=x[t.methods[k]];Nn(j,_)},w),{})}function h(x){return i.reduce((w,k)=>(w[k]=Hte(x[t.events[k]]),w),{})}return{Component:H.forwardRef((x,w)=>{const{children:k,..._}=x,[j]=H.useState(()=>_y(Ute(e),E=>u(E,_))),[I]=H.useState(l_(h,j));return Pp(()=>{for(const E of i)E in _&&pr(I[E],_[E]);return()=>{Object.values(I).map(jy)}},[_,I,j]),Pp(()=>{u(j,_)}),H.useImperativeHandle(w,c_(p(j))),H.createElement(l.Provider,{value:j},n?H.createElement(n,Gte([...r,...o,...i],_),k):k)}),usePublisher:x=>H.useCallback(MM(Nn,H.useContext(l)[x]),[x]),useEmitterValue:x=>{const k=H.useContext(l)[x],[_,j]=H.useState(l_(mg,k));return Pp(()=>pr(k,I=>{I!==_&&j(c_(I))}),[k,_]),_},useEmitter:(x,w)=>{const _=H.useContext(l)[x];Pp(()=>pr(_,w),[w,_])}}}const qte=typeof document<"u"?H.useLayoutEffect:H.useEffect,Xte=qte;var Py=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Py||{});const Yte={0:"debug",1:"log",2:"warn",3:"error"},Qte=()=>typeof globalThis>"u"?window:globalThis,DM=Ps(()=>{const e=dt(3);return{log:dt((n,r,o=1)=>{var s;const i=(s=Qte().VIRTUOSO_LOG_LEVEL)!=null?s:mg(e);o>=i&&console[Yte[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",n,r)}),logLevel:e}},[],{singleton:!0});function RM(e,t=!0){const n=H.useRef(null);let r=o=>{};if(typeof ResizeObserver<"u"){const o=H.useMemo(()=>new ResizeObserver(s=>{const i=s[0].target;i.offsetParent!==null&&e(i)}),[e]);r=s=>{s&&t?(o.observe(s),n.current=s):(n.current&&o.unobserve(n.current),n.current=null)}}return{ref:n,callbackRef:r}}function gg(e,t=!0){return RM(e,t).callbackRef}function nm(e,t){return Math.round(e.getBoundingClientRect()[t])}function AM(e,t){return Math.abs(e-t)<1.01}function NM(e,t,n,r=hg,o){const s=H.useRef(null),i=H.useRef(null),l=H.useRef(null),u=H.useCallback(m=>{const v=m.target,b=v===window||v===document,y=b?window.pageYOffset||document.documentElement.scrollTop:v.scrollTop,x=b?document.documentElement.scrollHeight:v.scrollHeight,w=b?window.innerHeight:v.offsetHeight,k=()=>{e({scrollTop:Math.max(y,0),scrollHeight:x,viewportHeight:w})};m.suppressFlushSync?k():jD.flushSync(k),i.current!==null&&(y===i.current||y<=0||y===x-w)&&(i.current=null,t(!0),l.current&&(clearTimeout(l.current),l.current=null))},[e,t]);H.useEffect(()=>{const m=o||s.current;return r(o||s.current),u({target:m,suppressFlushSync:!0}),m.addEventListener("scroll",u,{passive:!0}),()=>{r(null),m.removeEventListener("scroll",u)}},[s,u,n,r,o]);function p(m){const v=s.current;if(!v||"offsetHeight"in v&&v.offsetHeight===0)return;const b=m.behavior==="smooth";let y,x,w;v===window?(x=Math.max(nm(document.documentElement,"height"),document.documentElement.scrollHeight),y=window.innerHeight,w=document.documentElement.scrollTop):(x=v.scrollHeight,y=nm(v,"height"),w=v.scrollTop);const k=x-y;if(m.top=Math.ceil(Math.max(Math.min(k,m.top),0)),AM(y,x)||m.top===w){e({scrollTop:w,scrollHeight:x,viewportHeight:y}),b&&t(!0);return}b?(i.current=m.top,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{l.current=null,i.current=null,t(!0)},1e3)):i.current=null,v.scrollTo(m)}function h(m){s.current.scrollBy(m)}return{scrollerRef:s,scrollByCallback:h,scrollToCallback:p}}const vg=Ps(()=>{const e=yn(),t=yn(),n=dt(0),r=yn(),o=dt(0),s=yn(),i=yn(),l=dt(0),u=dt(0),p=dt(0),h=dt(0),m=yn(),v=yn(),b=dt(!1);return Gt(ft(e,tn(({scrollTop:y})=>y)),t),Gt(ft(e,tn(({scrollHeight:y})=>y)),i),Gt(t,o),{scrollContainerState:e,scrollTop:t,viewportHeight:s,headerHeight:l,fixedHeaderHeight:u,fixedFooterHeight:p,footerHeight:h,scrollHeight:i,smoothScrollTargetReached:r,scrollTo:m,scrollBy:v,statefulScrollTop:o,deviation:n,scrollingInProgress:b}},[],{singleton:!0}),Zte=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function Jte(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Zte)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const rm="up",Uu="down",ene="none",tne={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollTop:0,viewportHeight:0,scrollHeight:0}},nne=0,TM=Ps(([{scrollContainerState:e,scrollTop:t,viewportHeight:n,headerHeight:r,footerHeight:o,scrollBy:s}])=>{const i=dt(!1),l=dt(!0),u=yn(),p=yn(),h=dt(4),m=dt(nne),v=dc(ft(f_(ft(It(t),ub(1),Ra(!0)),ft(It(t),ub(1),Ra(!1),d_(100))),kr()),!1),b=dc(ft(f_(ft(s,Ra(!0)),ft(s,Ra(!1),d_(200))),kr()),!1);Gt(ft(qs(It(t),It(m)),tn(([_,j])=>_<=j),kr()),l),Gt(ft(l,Ru(50)),p);const y=Vu(ft(qs(e,It(n),It(r),It(o),It(h)),jp((_,[{scrollTop:j,scrollHeight:I},E,M,D,R])=>{const A=j+E-I>-R,O={viewportHeight:E,scrollTop:j,scrollHeight:I};if(A){let K,F;return j>_.state.scrollTop?(K="SCROLLED_DOWN",F=_.state.scrollTop-j):(K="SIZE_DECREASED",F=_.state.scrollTop-j||_.scrollTopDelta),{atBottom:!0,state:O,atBottomBecause:K,scrollTopDelta:F}}let T;return O.scrollHeight>_.state.scrollHeight?T="SIZE_INCREASED":E<_.state.viewportHeight?T="VIEWPORT_HEIGHT_DECREASING":j<_.state.scrollTop?T="SCROLLING_UPWARDS":T="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:T,state:O}},tne),kr((_,j)=>_&&_.atBottom===j.atBottom))),x=dc(ft(e,jp((_,{scrollTop:j,scrollHeight:I,viewportHeight:E})=>{if(AM(_.scrollHeight,I))return{scrollTop:j,scrollHeight:I,jump:0,changed:!1};{const M=I-(j+E)<1;return _.scrollTop!==j&&M?{scrollHeight:I,scrollTop:j,jump:_.scrollTop-j,changed:!0}:{scrollHeight:I,scrollTop:j,jump:0,changed:!0}}},{scrollHeight:0,jump:0,scrollTop:0,changed:!1}),Gn(_=>_.changed),tn(_=>_.jump)),0);Gt(ft(y,tn(_=>_.atBottom)),i),Gt(ft(i,Ru(50)),u);const w=dt(Uu);Gt(ft(e,tn(({scrollTop:_})=>_),kr(),jp((_,j)=>mg(b)?{direction:_.direction,prevScrollTop:j}:{direction:j<_.prevScrollTop?rm:Uu,prevScrollTop:j},{direction:Uu,prevScrollTop:0}),tn(_=>_.direction)),w),Gt(ft(e,Ru(50),Ra(ene)),w);const k=dt(0);return Gt(ft(v,Gn(_=>!_),Ra(0)),k),Gt(ft(t,Ru(100),cs(v),Gn(([_,j])=>!!j),jp(([_,j],[I])=>[j,I],[0,0]),tn(([_,j])=>j-_)),k),{isScrolling:v,isAtTop:l,isAtBottom:i,atBottomState:y,atTopStateChange:p,atBottomStateChange:u,scrollDirection:w,atBottomThreshold:h,atTopThreshold:m,scrollVelocity:k,lastJumpDueToItemResize:x}},sl(vg)),rne=Ps(([{log:e}])=>{const t=dt(!1),n=Vu(ft(t,Gn(r=>r),kr()));return pr(t,r=>{r&&mg(e)("props updated",{},Py.DEBUG)}),{propsReady:t,didMount:n}},sl(DM),{singleton:!0});function $M(e,t){e==0?t():requestAnimationFrame(()=>$M(e-1,t))}function one(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}function db(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}function sne(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}const om="top",sm="bottom",p_="none";function h_(e,t,n){return typeof e=="number"?n===rm&&t===om||n===Uu&&t===sm?e:0:n===rm?t===om?e.main:e.reverse:t===sm?e.main:e.reverse}function m_(e,t){return typeof e=="number"?e:e[t]||0}const ane=Ps(([{scrollTop:e,viewportHeight:t,deviation:n,headerHeight:r,fixedHeaderHeight:o}])=>{const s=yn(),i=dt(0),l=dt(0),u=dt(0),p=dc(ft(qs(It(e),It(t),It(r),It(s,db),It(u),It(i),It(o),It(n),It(l)),tn(([h,m,v,[b,y],x,w,k,_,j])=>{const I=h-_,E=w+k,M=Math.max(v-I,0);let D=p_;const R=m_(j,om),A=m_(j,sm);return b-=_,b+=v+k,y+=v+k,y-=_,b>h+E-R&&(D=rm),yh!=null),kr(db)),[0,0]);return{listBoundary:s,overscan:u,topListHeight:i,increaseViewportBy:l,visibleRange:p}},sl(vg),{singleton:!0}),ine=Ps(([{scrollVelocity:e}])=>{const t=dt(!1),n=yn(),r=dt(!1);return Gt(ft(e,cs(r,t,n),Gn(([o,s])=>!!s),tn(([o,s,i,l])=>{const{exit:u,enter:p}=s;if(i){if(u(o,l))return!1}else if(p(o,l))return!0;return i}),kr()),t),pr(ft(qs(t,e,n),cs(r)),([[o,s,i],l])=>o&&l&&l.change&&l.change(s,i)),{isSeeking:t,scrollSeekConfiguration:r,scrollVelocity:e,scrollSeekRangeChanged:n}},sl(TM),{singleton:!0});function lne(e){let t=!1,n;return()=>(t||(t=!0,n=e()),n)}const cne=Ps(([{scrollTo:e,scrollContainerState:t}])=>{const n=yn(),r=yn(),o=yn(),s=dt(!1),i=dt(void 0);return Gt(ft(qs(n,r),tn(([{viewportHeight:l,scrollTop:u,scrollHeight:p},{offsetTop:h}])=>({scrollTop:Math.max(0,u-h),scrollHeight:p,viewportHeight:l}))),t),Gt(ft(e,cs(r),tn(([l,{offsetTop:u}])=>({...l,top:l.top+u}))),o),{useWindowScroll:s,customScrollParent:i,windowScrollContainerState:n,windowViewportRect:r,windowScrollTo:o}},sl(vg)),Lv="-webkit-sticky",g_="sticky",LM=lne(()=>{if(typeof document>"u")return g_;const e=document.createElement("div");return e.style.position=Lv,e.style.position===Lv?Lv:g_});function une(e,t){const n=H.useRef(null),r=H.useCallback(l=>{if(l===null||!l.offsetParent)return;const u=l.getBoundingClientRect(),p=u.width;let h,m;if(t){const v=t.getBoundingClientRect(),b=u.top-v.top;h=v.height-Math.max(0,b),m=b+t.scrollTop}else h=window.innerHeight-Math.max(0,u.top),m=u.top+window.pageYOffset;n.current={offsetTop:m,visibleHeight:h,visibleWidth:p},e(n.current)},[e,t]),{callbackRef:o,ref:s}=RM(r),i=H.useCallback(()=>{r(s.current)},[r,s]);return H.useEffect(()=>{if(t){t.addEventListener("scroll",i);const l=new ResizeObserver(i);return l.observe(t),()=>{t.removeEventListener("scroll",i),l.unobserve(t)}}else return window.addEventListener("scroll",i),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i),window.removeEventListener("resize",i)}},[i,t]),o}H.createContext(void 0);const zM=H.createContext(void 0);function dne(e){return e}LM();const fne={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},FM={width:"100%",height:"100%",position:"absolute",top:0};LM();function Oi(e,t){if(typeof e!="string")return{context:t}}function pne({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const u=e("scrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("scrollerRef"),v=n("context"),{scrollerRef:b,scrollByCallback:y,scrollToCallback:x}=NM(u,h,p,m);return t("scrollTo",x),t("scrollBy",y),H.createElement(p,{ref:b,style:{...fne,...s},"data-test-id":"virtuoso-scroller","data-virtuoso-scroller":!0,tabIndex:0,...l,...Oi(p,v)},i)})}function hne({usePublisher:e,useEmitter:t,useEmitterValue:n}){return H.memo(function({style:s,children:i,...l}){const u=e("windowScrollContainerState"),p=n("ScrollerComponent"),h=e("smoothScrollTargetReached"),m=n("totalListHeight"),v=n("deviation"),b=n("customScrollParent"),y=n("context"),{scrollerRef:x,scrollByCallback:w,scrollToCallback:k}=NM(u,h,p,hg,b);return Xte(()=>(x.current=b||window,()=>{x.current=null}),[x,b]),t("windowScrollTo",k),t("scrollBy",w),H.createElement(p,{style:{position:"relative",...s,...m!==0?{height:m+v}:{}},"data-virtuoso-scroller":!0,...l,...Oi(p,y)},i)})}const v_={items:[],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},mne={items:[{index:0}],offsetBottom:0,offsetTop:0,top:0,bottom:0,itemHeight:0,itemWidth:0},{round:b_,ceil:x_,floor:am,min:zv,max:Gu}=Math;function gne(e){return{...mne,items:e}}function y_(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>{const s=n===null?null:n[o+e];return{index:o+e,data:s}})}function vne(e,t){return e&&e.column===t.column&&e.row===t.row}function Ip(e,t){return e&&e.width===t.width&&e.height===t.height}const bne=Ps(([{overscan:e,visibleRange:t,listBoundary:n},{scrollTop:r,viewportHeight:o,scrollBy:s,scrollTo:i,smoothScrollTargetReached:l,scrollContainerState:u,footerHeight:p,headerHeight:h},m,v,{propsReady:b,didMount:y},{windowViewportRect:x,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,windowScrollTo:j},I])=>{const E=dt(0),M=dt(0),D=dt(v_),R=dt({height:0,width:0}),A=dt({height:0,width:0}),O=yn(),T=yn(),K=dt(0),F=dt(null),V=dt({row:0,column:0}),X=yn(),W=yn(),z=dt(!1),Y=dt(0),B=dt(!0),q=dt(!1);pr(ft(y,cs(Y),Gn(([G,te])=>!!te)),()=>{Nn(B,!1),Nn(M,0)}),pr(ft(qs(y,B,A,R,Y,q),Gn(([G,te,ae,oe,,pe])=>G&&!te&&ae.height!==0&&oe.height!==0&&!pe)),([,,,,G])=>{Nn(q,!0),$M(1,()=>{Nn(O,G)}),u_(ft(r),()=>{Nn(n,[0,0]),Nn(B,!0)})}),Gt(ft(W,Gn(G=>G!=null&&G.scrollTop>0),Ra(0)),M),pr(ft(y,cs(W),Gn(([,G])=>G!=null)),([,G])=>{G&&(Nn(R,G.viewport),Nn(A,G==null?void 0:G.item),Nn(V,G.gap),G.scrollTop>0&&(Nn(z,!0),u_(ft(r,ub(1)),te=>{Nn(z,!1)}),Nn(i,{top:G.scrollTop})))}),Gt(ft(R,tn(({height:G})=>G)),o),Gt(ft(qs(It(R,Ip),It(A,Ip),It(V,(G,te)=>G&&G.column===te.column&&G.row===te.row),It(r)),tn(([G,te,ae,oe])=>({viewport:G,item:te,gap:ae,scrollTop:oe}))),X),Gt(ft(qs(It(E),t,It(V,vne),It(A,Ip),It(R,Ip),It(F),It(M),It(z),It(B),It(Y)),Gn(([,,,,,,,G])=>!G),tn(([G,[te,ae],oe,pe,ue,me,Ce,,ge,fe])=>{const{row:De,column:je}=oe,{height:Be,width:rt}=pe,{width:Ue}=ue;if(Ce===0&&(G===0||Ue===0))return v_;if(rt===0){const ot=one(fe,G),lt=ot===0?Math.max(Ce-1,0):ot;return gne(y_(ot,lt,me))}const wt=BM(Ue,rt,je);let Ye,tt;ge?te===0&&ae===0&&Ce>0?(Ye=0,tt=Ce-1):(Ye=wt*am((te+De)/(Be+De)),tt=wt*x_((ae+De)/(Be+De))-1,tt=zv(G-1,Gu(tt,wt-1)),Ye=zv(tt,Gu(0,Ye))):(Ye=0,tt=-1);const be=y_(Ye,tt,me),{top:Re,bottom:st}=C_(ue,oe,pe,be),mt=x_(G/wt),Qe=mt*Be+(mt-1)*De-st;return{items:be,offsetTop:Re,offsetBottom:Qe,top:Re,bottom:st,itemHeight:Be,itemWidth:rt}})),D),Gt(ft(F,Gn(G=>G!==null),tn(G=>G.length)),E),Gt(ft(qs(R,A,D,V),Gn(([G,te,{items:ae}])=>ae.length>0&&te.height!==0&&G.height!==0),tn(([G,te,{items:ae},oe])=>{const{top:pe,bottom:ue}=C_(G,oe,te,ae);return[pe,ue]}),kr(db)),n);const re=dt(!1);Gt(ft(r,cs(re),tn(([G,te])=>te||G!==0)),re);const Q=Vu(ft(It(D),Gn(({items:G})=>G.length>0),cs(E,re),Gn(([{items:G},te,ae])=>ae&&G[G.length-1].index===te-1),tn(([,G])=>G-1),kr())),le=Vu(ft(It(D),Gn(({items:G})=>G.length>0&&G[0].index===0),Ra(0),kr())),se=Vu(ft(It(D),cs(z),Gn(([{items:G},te])=>G.length>0&&!te),tn(([{items:G}])=>({startIndex:G[0].index,endIndex:G[G.length-1].index})),kr(sne),Ru(0)));Gt(se,v.scrollSeekRangeChanged),Gt(ft(O,cs(R,A,E,V),tn(([G,te,ae,oe,pe])=>{const ue=Jte(G),{align:me,behavior:Ce,offset:ge}=ue;let fe=ue.index;fe==="LAST"&&(fe=oe-1),fe=Gu(0,fe,zv(oe-1,fe));let De=fb(te,pe,ae,fe);return me==="end"?De=b_(De-te.height+ae.height):me==="center"&&(De=b_(De-te.height/2+ae.height/2)),ge&&(De+=ge),{top:De,behavior:Ce}})),i);const U=dc(ft(D,tn(G=>G.offsetBottom+G.bottom)),0);return Gt(ft(x,tn(G=>({width:G.visibleWidth,height:G.visibleHeight}))),R),{data:F,totalCount:E,viewportDimensions:R,itemDimensions:A,scrollTop:r,scrollHeight:T,overscan:e,scrollBy:s,scrollTo:i,scrollToIndex:O,smoothScrollTargetReached:l,windowViewportRect:x,windowScrollTo:j,useWindowScroll:w,customScrollParent:k,windowScrollContainerState:_,deviation:K,scrollContainerState:u,footerHeight:p,headerHeight:h,initialItemCount:M,gap:V,restoreStateFrom:W,...v,initialTopMostItemIndex:Y,gridState:D,totalListHeight:U,...m,startReached:le,endReached:Q,rangeChanged:se,stateChanged:X,propsReady:b,stateRestoreInProgress:z,...I}},sl(ane,vg,TM,ine,rne,cne,DM));function C_(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{top:0,bottom:0};const s=fb(e,t,n,r[0].index),i=fb(e,t,n,r[r.length-1].index)+o;return{top:s,bottom:i}}function fb(e,t,n,r){const o=BM(e.width,n.width,t.column),s=am(r/o),i=s*n.height+Gu(0,s-1)*t.row;return i>0?i+t.row:i}function BM(e,t,n){return Gu(1,am((e+n)/(am(t)+n)))}const xne=Ps(()=>{const e=dt(p=>`Item ${p}`),t=dt({}),n=dt(null),r=dt("virtuoso-grid-item"),o=dt("virtuoso-grid-list"),s=dt(dne),i=dt("div"),l=dt(hg),u=(p,h=null)=>dc(ft(t,tn(m=>m[p]),kr()),h);return{context:n,itemContent:e,components:t,computeItemKey:s,itemClassName:r,listClassName:o,headerFooterTag:i,scrollerRef:l,FooterComponent:u("Footer"),HeaderComponent:u("Header"),ListComponent:u("List","div"),ItemComponent:u("Item","div"),ScrollerComponent:u("Scroller","div"),ScrollSeekPlaceholder:u("ScrollSeekPlaceholder","div")}}),yne=Ps(([e,t])=>({...e,...t}),sl(bne,xne)),Cne=H.memo(function(){const t=dn("gridState"),n=dn("listClassName"),r=dn("itemClassName"),o=dn("itemContent"),s=dn("computeItemKey"),i=dn("isSeeking"),l=Fo("scrollHeight"),u=dn("ItemComponent"),p=dn("ListComponent"),h=dn("ScrollSeekPlaceholder"),m=dn("context"),v=Fo("itemDimensions"),b=Fo("gap"),y=dn("log"),x=dn("stateRestoreInProgress"),w=gg(k=>{const _=k.parentElement.parentElement.scrollHeight;l(_);const j=k.firstChild;if(j){const{width:I,height:E}=j.getBoundingClientRect();v({width:I,height:E})}b({row:w_("row-gap",getComputedStyle(k).rowGap,y),column:w_("column-gap",getComputedStyle(k).columnGap,y)})});return x?null:H.createElement(p,{ref:w,className:n,...Oi(p,m),style:{paddingTop:t.offsetTop,paddingBottom:t.offsetBottom},"data-test-id":"virtuoso-item-list"},t.items.map(k=>{const _=s(k.index,k.data,m);return i?H.createElement(h,{key:_,...Oi(h,m),index:k.index,height:t.itemHeight,width:t.itemWidth}):H.createElement(u,{...Oi(u,m),className:r,"data-index":k.index,key:_},o(k.index,k.data,m))}))}),wne=H.memo(function(){const t=dn("HeaderComponent"),n=Fo("headerHeight"),r=dn("headerFooterTag"),o=gg(i=>n(nm(i,"height"))),s=dn("context");return t?H.createElement(r,{ref:o},H.createElement(t,Oi(t,s))):null}),Sne=H.memo(function(){const t=dn("FooterComponent"),n=Fo("footerHeight"),r=dn("headerFooterTag"),o=gg(i=>n(nm(i,"height"))),s=dn("context");return t?H.createElement(r,{ref:o},H.createElement(t,Oi(t,s))):null}),kne=({children:e})=>{const t=H.useContext(zM),n=Fo("itemDimensions"),r=Fo("viewportDimensions"),o=gg(s=>{r(s.getBoundingClientRect())});return H.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),H.createElement("div",{style:FM,ref:o},e)},_ne=({children:e})=>{const t=H.useContext(zM),n=Fo("windowViewportRect"),r=Fo("itemDimensions"),o=dn("customScrollParent"),s=une(n,o);return H.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),H.createElement("div",{ref:s,style:FM},e)},jne=H.memo(function({...t}){const n=dn("useWindowScroll"),r=dn("customScrollParent"),o=r||n?Ene:Ine,s=r||n?_ne:kne;return H.createElement(o,{...t},H.createElement(s,null,H.createElement(wne,null),H.createElement(Cne,null),H.createElement(Sne,null)))}),{Component:Pne,usePublisher:Fo,useEmitterValue:dn,useEmitter:HM}=Kte(yne,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged"}},jne),Ine=pne({usePublisher:Fo,useEmitterValue:dn,useEmitter:HM}),Ene=hne({usePublisher:Fo,useEmitterValue:dn,useEmitter:HM});function w_(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Py.WARN),t==="normal"?0:parseInt(t??"0",10)}const Mne=Pne,One=e=>{const t=L(s=>s.gallery.galleryView),{data:n}=Vj(e),{data:r}=Uj(e),o=d.useMemo(()=>t==="images"?n:r,[t,r,n]);return{totalImages:n,totalAssets:r,currentViewTotal:o}};function bg(e,t={}){let n=d.useCallback(o=>t.keys?GN(e,t.keys,o):e.listen(o),[t.keys,e]),r=e.get.bind(e);return d.useSyncExternalStore(n,r,r)}const Dne=({imageDTO:e})=>a.jsx($,{sx:{pointerEvents:"none",flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,p:2,alignItems:"flex-start",gap:2},children:a.jsxs(da,{variant:"solid",colorScheme:"base",children:[e.width," × ",e.height]})}),Rne=d.memo(Dne),Iy=({postUploadAction:e,isDisabled:t})=>{const n=L(u=>u.gallery.autoAddBoardId),[r]=$j(),o=d.useCallback(u=>{const p=u[0];p&&r({file:p,image_category:"user",is_intermediate:!1,postUploadAction:e??{type:"TOAST"},board_id:n==="none"?void 0:n})},[n,e,r]),{getRootProps:s,getInputProps:i,open:l}=Vx({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},onDropAccepted:o,disabled:t,noDrag:!0,multiple:!1});return{getUploadButtonProps:s,getUploadInputProps:i,openUploader:l}},Ane=ie(xe,({generation:e})=>{const{model:t}=e;return{model:t}}),xg=()=>{const e=ee(),t=tl(),{t:n}=Z(),{model:r}=L(Ane),o=d.useCallback(()=>{t({title:n("toast.parameterSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),s=d.useCallback(O=>{t({title:n("toast.parameterNotSet"),description:O,status:"warning",duration:2500,isClosable:!0})},[n,t]),i=d.useCallback(()=>{t({title:n("toast.parametersSet"),status:"info",duration:2500,isClosable:!0})},[n,t]),l=d.useCallback(O=>{t({title:n("toast.parametersNotSet"),status:"warning",description:O,duration:2500,isClosable:!0})},[n,t]),u=d.useCallback((O,T,K,F)=>{if(Gf(O)||Kf(T)||xu(K)||K0(F)){Gf(O)&&e(Lu(O)),Kf(T)&&e(zu(T)),xu(K)&&e(Fu(K)),xu(F)&&e(Bu(F)),o();return}s()},[e,o,s]),p=d.useCallback(O=>{if(!Gf(O)){s();return}e(Lu(O)),o()},[e,o,s]),h=d.useCallback(O=>{if(!Kf(O)){s();return}e(zu(O)),o()},[e,o,s]),m=d.useCallback(O=>{if(!xu(O)){s();return}e(Fu(O)),o()},[e,o,s]),v=d.useCallback(O=>{if(!K0(O)){s();return}e(Bu(O)),o()},[e,o,s]),b=d.useCallback(O=>{if(!VC(O)){s();return}e(Up(O)),o()},[e,o,s]),y=d.useCallback(O=>{if(!q0(O)){s();return}e(Gp(O)),o()},[e,o,s]),x=d.useCallback(O=>{if(!UC(O)){s();return}e(o1(O)),o()},[e,o,s]),w=d.useCallback(O=>{if(!X0(O)){s();return}e(s1(O)),o()},[e,o,s]),k=d.useCallback(O=>{if(!Y0(O)){s();return}e(Kp(O)),o()},[e,o,s]),_=d.useCallback(O=>{if(!GC(O)){s();return}e(Ti(O)),o()},[e,o,s]),j=d.useCallback(O=>{if(!KC(O)){s();return}e($i(O)),o()},[e,o,s]),I=d.useCallback(O=>{if(!qC(O)){s();return}e(qp(O)),o()},[e,o,s]),{loras:E}=Cd(void 0,{selectFromResult:O=>({loras:O.data?PD.getSelectors().selectAll(O.data):[]})}),M=d.useCallback(O=>{if(!Kj(O.lora))return{lora:null,error:"Invalid LoRA model"};const{base_model:T,model_name:K}=O.lora,F=E.find(X=>X.base_model===T&&X.model_name===K);return F?(F==null?void 0:F.base_model)===(r==null?void 0:r.base_model)?{lora:F,error:null}:{lora:null,error:"LoRA incompatible with currently-selected model"}:{lora:null,error:"LoRA model is not installed"}},[E,r==null?void 0:r.base_model]),D=d.useCallback(O=>{const T=M(O);if(!T.lora){s(T.error);return}e(XC({...T.lora,weight:O.weight})),o()},[M,e,o,s]),R=d.useCallback(O=>{e(gm(O))},[e]),A=d.useCallback(O=>{if(!O){l();return}const{cfg_scale:T,height:K,model:F,positive_prompt:V,negative_prompt:X,scheduler:W,seed:z,steps:Y,width:B,strength:q,positive_style_prompt:re,negative_style_prompt:Q,refiner_model:le,refiner_cfg_scale:se,refiner_steps:U,refiner_scheduler:G,refiner_positive_aesthetic_score:te,refiner_negative_aesthetic_score:ae,refiner_start:oe,loras:pe}=O;q0(T)&&e(Gp(T)),UC(F)&&e(o1(F)),Gf(V)&&e(Lu(V)),Kf(X)&&e(zu(X)),X0(W)&&e(s1(W)),VC(z)&&e(Up(z)),Y0(Y)&&e(Kp(Y)),GC(B)&&e(Ti(B)),KC(K)&&e($i(K)),qC(q)&&e(qp(q)),xu(re)&&e(Fu(re)),K0(Q)&&e(Bu(Q)),ID(le)&&e(qj(le)),Y0(U)&&e(a1(U)),q0(se)&&e(i1(se)),X0(G)&&e(Xj(G)),ED(te)&&e(l1(te)),MD(ae)&&e(c1(ae)),OD(oe)&&e(u1(oe)),pe==null||pe.forEach(ue=>{const me=M(ue);me.lora&&e(XC({...me.lora,weight:ue.weight}))}),i()},[l,i,e,M]);return{recallBothPrompts:u,recallPositivePrompt:p,recallNegativePrompt:h,recallSDXLPositiveStylePrompt:m,recallSDXLNegativeStylePrompt:v,recallSeed:b,recallCfgScale:y,recallModel:x,recallScheduler:w,recallSteps:k,recallWidth:_,recallHeight:j,recallStrength:I,recallLoRA:D,recallAllParameters:A,sendToImageToImage:R}},WM=()=>{const e=tl(),{t}=Z(),n=d.useMemo(()=>!!navigator.clipboard&&!!window.ClipboardItem,[]),r=d.useCallback(async o=>{n||e({title:t("toast.problemCopyingImage"),description:"Your browser doesn't support the Clipboard API.",status:"error",duration:2500,isClosable:!0});try{const i=await(await fetch(o)).blob();await navigator.clipboard.write([new ClipboardItem({[i.type]:i})]),e({title:t("toast.imageCopied"),status:"success",duration:2500,isClosable:!0})}catch(s){e({title:t("toast.problemCopyingImage"),description:String(s),status:"error",duration:2500,isClosable:!0})}},[n,t,e]);return{isClipboardAPIAvailable:n,copyImageToClipboard:r}};function Nne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M16.5 9c-.42 0-.83.04-1.24.11L1.01 3 1 10l9 2-9 2 .01 7 8.07-3.46C9.59 21.19 12.71 24 16.5 24c4.14 0 7.5-3.36 7.5-7.5S20.64 9 16.5 9zm0 13c-3.03 0-5.5-2.47-5.5-5.5s2.47-5.5 5.5-5.5 5.5 2.47 5.5 5.5-2.47 5.5-5.5 5.5z"}},{tag:"path",attr:{d:"M18.27 14.03l-1.77 1.76-1.77-1.76-.7.7 1.76 1.77-1.76 1.77.7.7 1.77-1.76 1.77 1.76.7-.7-1.76-1.77 1.76-1.77z"}}]})(e)}function yg(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M17 16l-4-4V8.82C14.16 8.4 15 7.3 15 6c0-1.66-1.34-3-3-3S9 4.34 9 6c0 1.3.84 2.4 2 2.82V12l-4 4H3v5h5v-3.05l4-4.2 4 4.2V21h5v-5h-4z"}}]})(e)}function Tne(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z"}}]})(e)}function $ne(e){return Ne({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 Lne(e){return Ne({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)}function Ey(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M22 9.24l-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03L22 9.24zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28L12 15.4z"}}]})(e)}function My(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0z"}},{tag:"path",attr:{d:"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}}]})(e)}function VM(e){return Ne({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"}},{tag:"path",attr:{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z"}}]})(e)}const Oy=e=>e.config;Lb("gallery/requestedBoardImagesDeletion");const zne=Lb("gallery/sentImageToCanvas"),UM=Lb("gallery/sentImageToImg2Img"),Fne=e=>{const{imageDTO:t}=e,n=ee(),{t:r}=Z(),o=tl(),s=Xt("unifiedCanvas").isFeatureEnabled,{shouldFetchMetadataFromApi:i}=L(Oy),l=bg(zb),{metadata:u,workflow:p,isLoading:h}=Fb({image:t,shouldFetchMetadataFromApi:i},{selectFromResult:F=>{var V,X;return{isLoading:F.isFetching,metadata:(V=F==null?void 0:F.currentData)==null?void 0:V.metadata,workflow:(X=F==null?void 0:F.currentData)==null?void 0:X.workflow}}}),[m]=Bb(),[v]=Hb(),{isClipboardAPIAvailable:b,copyImageToClipboard:y}=WM(),x=d.useCallback(()=>{t&&n(vm([t]))},[n,t]),{recallBothPrompts:w,recallSeed:k,recallAllParameters:_}=xg(),j=d.useCallback(()=>{w(u==null?void 0:u.positive_prompt,u==null?void 0:u.negative_prompt,u==null?void 0:u.positive_style_prompt,u==null?void 0:u.negative_style_prompt)},[u==null?void 0:u.negative_prompt,u==null?void 0:u.positive_prompt,u==null?void 0:u.positive_style_prompt,u==null?void 0:u.negative_style_prompt,w]),I=d.useCallback(()=>{k(u==null?void 0:u.seed)},[u==null?void 0:u.seed,k]),E=d.useCallback(()=>{p&&n(Wb(p))},[n,p]),M=d.useCallback(()=>{n(UM()),n(gm(t))},[n,t]),D=d.useCallback(()=>{n(zne()),Fr.flushSync(()=>{n(Aa("unifiedCanvas"))}),n(Yj(t)),o({title:r("toast.sentToUnifiedCanvas"),status:"success",duration:2500,isClosable:!0})},[n,t,r,o]),R=d.useCallback(()=>{_(u)},[u,_]),A=d.useCallback(()=>{n(Qj([t])),n($b(!0))},[n,t]),O=d.useCallback(()=>{y(t.image_url)},[y,t.image_url]),T=d.useCallback(()=>{t&&m({imageDTOs:[t]})},[m,t]),K=d.useCallback(()=>{t&&v({imageDTOs:[t]})},[v,t]);return a.jsxs(a.Fragment,{children:[a.jsx(Wt,{as:"a",href:t.image_url,target:"_blank",icon:a.jsx(AE,{}),children:r("common.openInNewTab")}),b&&a.jsx(Wt,{icon:a.jsx(Wc,{}),onClickCapture:O,children:r("parameters.copyImage")}),a.jsx(Wt,{as:"a",download:!0,href:t.image_url,target:"_blank",icon:a.jsx(ng,{}),w:"100%",children:r("parameters.downloadImage")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(yg,{}),onClickCapture:E,isDisabled:h||!p,children:r("nodes.loadWorkflow")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(FE,{}),onClickCapture:j,isDisabled:h||(u==null?void 0:u.positive_prompt)===void 0&&(u==null?void 0:u.negative_prompt)===void 0,children:r("parameters.usePrompt")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(BE,{}),onClickCapture:I,isDisabled:h||(u==null?void 0:u.seed)===void 0,children:r("parameters.useSeed")}),a.jsx(Wt,{icon:h?a.jsx(Ep,{}):a.jsx(ME,{}),onClickCapture:R,isDisabled:h||!u,children:r("parameters.useAll")}),a.jsx(Wt,{icon:a.jsx(Ok,{}),onClickCapture:M,id:"send-to-img2img",children:r("parameters.sendToImg2Img")}),s&&a.jsx(Wt,{icon:a.jsx(Ok,{}),onClickCapture:D,id:"send-to-canvas",children:r("parameters.sendToUnifiedCanvas")}),a.jsx(Wt,{icon:a.jsx(NE,{}),onClickCapture:A,children:"Change Board"}),t.starred?a.jsx(Wt,{icon:l?l.off.icon:a.jsx(My,{}),onClickCapture:K,children:l?l.off.text:"Unstar Image"}):a.jsx(Wt,{icon:l?l.on.icon:a.jsx(Ey,{}),onClickCapture:T,children:l?l.on.text:"Star Image"}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClickCapture:x,children:r("gallery.deleteImage")})]})},GM=d.memo(Fne),Ep=()=>a.jsx($,{w:"14px",alignItems:"center",justifyContent:"center",children:a.jsx(Xi,{size:"xs"})}),Bne=()=>{const e=ee(),t=L(m=>m.gallery.selection),n=bg(zb),[r]=Bb(),[o]=Hb(),s=d.useCallback(()=>{e(Qj(t)),e($b(!0))},[e,t]),i=d.useCallback(()=>{e(vm(t))},[e,t]),l=d.useCallback(()=>{r({imageDTOs:t})},[r,t]),u=d.useCallback(()=>{o({imageDTOs:t})},[o,t]),p=d.useMemo(()=>t.every(m=>m.starred),[t]),h=d.useMemo(()=>t.every(m=>!m.starred),[t]);return a.jsxs(a.Fragment,{children:[p&&a.jsx(Wt,{icon:n?n.on.icon:a.jsx(Ey,{}),onClickCapture:u,children:n?n.off.text:"Unstar All"}),(h||!p&&!h)&&a.jsx(Wt,{icon:n?n.on.icon:a.jsx(My,{}),onClickCapture:l,children:n?n.on.text:"Star All"}),a.jsx(Wt,{icon:a.jsx(NE,{}),onClickCapture:s,children:"Change Board"}),a.jsx(Wt,{sx:{color:"error.600",_dark:{color:"error.300"}},icon:a.jsx(Kr,{}),onClickCapture:i,children:"Delete Selection"})]})},Hne=d.memo(Bne),Wne=ie([xe],({gallery:e})=>({selectionCount:e.selection.length}),we),Vne=({imageDTO:e,children:t})=>{const{selectionCount:n}=L(Wne),r=d.useCallback(o=>{o.preventDefault()},[]);return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>e?n>1?a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:r,children:a.jsx(Hne,{})}):a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:r,children:a.jsx(GM,{imageDTO:e})}):null,children:t})},Une=d.memo(Vne),Gne=e=>{const{data:t,disabled:n,...r}=e,o=d.useRef(Ba()),{attributes:s,listeners:i,setNodeRef:l}=ite({id:o.current,disabled:n,data:t});return a.jsx(Ie,{ref:l,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,...s,...i,...r})},Kne=d.memo(Gne),qne=a.jsx(Tn,{as:og,sx:{boxSize:16}}),Xne=a.jsx(Kn,{icon:Ui}),Yne=e=>{const{imageDTO:t,onError:n,onClick:r,withMetadataOverlay:o=!1,isDropDisabled:s=!1,isDragDisabled:i=!1,isUploadDisabled:l=!1,minSize:u=24,postUploadAction:p,imageSx:h,fitContainer:m=!1,droppableData:v,draggableData:b,dropLabel:y,isSelected:x=!1,thumbnail:w=!1,noContentFallback:k=Xne,uploadElement:_=qne,useThumbailFallback:j,withHoverOverlay:I=!1,children:E,onMouseOver:M,onMouseOut:D}=e,{colorMode:R}=la(),[A,O]=d.useState(!1),T=d.useCallback(W=>{M&&M(W),O(!0)},[M]),K=d.useCallback(W=>{D&&D(W),O(!1)},[D]),{getUploadButtonProps:F,getUploadInputProps:V}=Iy({postUploadAction:p,isDisabled:l}),X=l?{}:{cursor:"pointer",bg:Ae("base.200","base.700")(R),_hover:{bg:Ae("base.300","base.650")(R),color:Ae("base.500","base.300")(R)}};return a.jsx(Une,{imageDTO:t,children:W=>a.jsxs($,{ref:W,onMouseOver:T,onMouseOut:K,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative",minW:u||void 0,minH:u||void 0,userSelect:"none",cursor:i||!t?"default":"pointer"},children:[t&&a.jsxs($,{sx:{w:"full",h:"full",position:m?"absolute":"relative",alignItems:"center",justifyContent:"center"},children:[a.jsx(Qi,{src:w?t.thumbnail_url:t.image_url,fallbackStrategy:"beforeLoadOrError",fallbackSrc:j?t.thumbnail_url:void 0,fallback:j?void 0:a.jsx($te,{image:t}),onError:n,draggable:!1,sx:{w:t.width,objectFit:"contain",maxW:"full",maxH:"full",borderRadius:"base",...h}}),o&&a.jsx(Rne,{imageDTO:t}),a.jsx(Sy,{isSelected:x,isHovered:I?A:!1})]}),!t&&!l&&a.jsx(a.Fragment,{children:a.jsxs($,{sx:{minH:u,w:"full",h:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",transitionProperty:"common",transitionDuration:"0.1s",color:Ae("base.500","base.500")(R),...X},...F(),children:[a.jsx("input",{...V()}),_]})}),!t&&l&&k,t&&!i&&a.jsx(Kne,{data:b,disabled:i||!t,onClick:r}),E,!s&&a.jsx(wy,{data:v,disabled:s,dropLabel:y})]})})},oa=d.memo(Yne),Qne=()=>a.jsx(Hm,{sx:{position:"relative",height:"full",width:"full","::before":{content:"''",display:"block",pt:"100%"}},children:a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,height:"full",width:"full"}})}),Zne=d.memo(Qne),Jne=ie([xe,Vb],({gallery:e},t)=>{const n=e.selection;return{queryArgs:t,selection:n}},we),ere=e=>{const t=ee(),{queryArgs:n,selection:r}=L(Jne),{imageDTOs:o}=Zj(n,{selectFromResult:p=>({imageDTOs:p.data?DD.selectAll(p.data):[]})}),s=Xt("multiselect").isFeatureEnabled,i=d.useCallback(p=>{var h;if(e){if(!s){t(yu([e]));return}if(p.shiftKey){const m=e.image_name,v=(h=r[r.length-1])==null?void 0:h.image_name,b=o.findIndex(x=>x.image_name===v),y=o.findIndex(x=>x.image_name===m);if(b>-1&&y>-1){const x=Math.min(b,y),w=Math.max(b,y),k=o.slice(x,w+1);t(yu(Ew(r.concat(k))))}}else p.ctrlKey||p.metaKey?r.some(m=>m.image_name===e.image_name)&&r.length>1?t(yu(r.filter(m=>m.image_name!==e.image_name))):t(yu(Ew(r.concat(e)))):t(yu([e]))}},[t,e,o,r,s]),l=d.useMemo(()=>e?r.some(p=>p.image_name===e.image_name):!1,[e,r]),u=d.useMemo(()=>r.length,[r.length]);return{selection:r,selectionCount:u,isSelected:l,handleClick:i}},tre=e=>{const{onClick:t,tooltip:n,icon:r,styleOverrides:o}=e,s=Li("drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-600))","drop-shadow(0px 0px 0.1rem var(--invokeai-colors-base-800))");return a.jsx(Te,{onClick:t,"aria-label":n,tooltip:n,icon:r,size:"sm",variant:"link",sx:{position:"absolute",top:1,insetInlineEnd:1,p:0,minW:0,svg:{transitionProperty:"common",transitionDuration:"normal",fill:"base.100",_hover:{fill:"base.50"},filter:s},...o}})},Di=d.memo(tre),nre=e=>{const t=ee(),{imageName:n}=e,{currentData:r}=Wr(n),o=L(M=>M.hotkeys.shift),{t:s}=Z(),{handleClick:i,isSelected:l,selection:u,selectionCount:p}=ere(r),h=bg(zb),m=d.useCallback(M=>{M.stopPropagation(),r&&t(vm([r]))},[t,r]),v=d.useMemo(()=>{if(p>1)return{id:"gallery-image",payloadType:"IMAGE_DTOS",payload:{imageDTOs:u}};if(r)return{id:"gallery-image",payloadType:"IMAGE_DTO",payload:{imageDTO:r}}},[r,u,p]),[b]=Bb(),[y]=Hb(),x=d.useCallback(()=>{r&&(r.starred&&y({imageDTOs:[r]}),r.starred||b({imageDTOs:[r]}))},[b,y,r]),[w,k]=d.useState(!1),_=d.useCallback(()=>{k(!0)},[]),j=d.useCallback(()=>{k(!1)},[]),I=d.useMemo(()=>{if(r!=null&&r.starred)return h?h.on.icon:a.jsx(My,{size:"20"});if(!(r!=null&&r.starred)&&w)return h?h.off.icon:a.jsx(Ey,{size:"20"})},[r==null?void 0:r.starred,w,h]),E=d.useMemo(()=>r!=null&&r.starred?h?h.off.text:"Unstar":r!=null&&r.starred?"":h?h.on.text:"Star",[r==null?void 0:r.starred,h]);return r?a.jsx(Ie,{sx:{w:"full",h:"full",touchAction:"none"},children:a.jsx($,{userSelect:"none",sx:{position:"relative",justifyContent:"center",alignItems:"center",aspectRatio:"1/1"},children:a.jsx(oa,{onClick:i,imageDTO:r,draggableData:v,isSelected:l,minSize:0,imageSx:{w:"full",h:"full"},isDropDisabled:!0,isUploadDisabled:!0,thumbnail:!0,withHoverOverlay:!0,onMouseOver:_,onMouseOut:j,children:a.jsxs(a.Fragment,{children:[a.jsx(Di,{onClick:x,icon:I,tooltip:E}),w&&o&&a.jsx(Di,{onClick:m,icon:a.jsx(Kr,{}),tooltip:s("gallery.deleteImage"),styleOverrides:{bottom:2,top:"auto"}})]})})})}):a.jsx(Zne,{})},rre=d.memo(nre),ore=Pe((e,t)=>a.jsx(Ie,{className:"item-container",ref:t,p:1.5,children:e.children})),sre=d.memo(ore),are=Pe((e,t)=>{const n=L(r=>r.gallery.galleryImageMinimumWidth);return a.jsx(Ga,{...e,className:"list-container",ref:t,sx:{gridTemplateColumns:`repeat(auto-fill, minmax(${n}px, 1fr));`},children:e.children})}),ire=d.memo(are),lre={defer:!0,options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}}},cre=()=>{const{t:e}=Z(),t=d.useRef(null),[n,r]=d.useState(null),[o,s]=yM(lre),i=L(w=>w.gallery.selectedBoardId),{currentViewTotal:l}=One(i),u=L(Vb),{currentData:p,isFetching:h,isSuccess:m,isError:v}=Zj(u),[b]=Jj(),y=d.useMemo(()=>!p||!l?!1:p.ids.length{y&&b({...u,offset:(p==null?void 0:p.ids.length)??0,limit:e5})},[y,b,u,p==null?void 0:p.ids.length]);return d.useEffect(()=>{const{current:w}=t;return n&&w&&o({target:w,elements:{viewport:n}}),()=>{var k;return(k=s())==null?void 0:k.destroy()}},[n,o,s]),p?m&&(p==null?void 0:p.ids.length)===0?a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Kn,{label:e("gallery.noImagesInGallery"),icon:Ui})}):m&&p?a.jsxs(a.Fragment,{children:[a.jsx(Ie,{ref:t,"data-overlayscrollbars":"",h:"100%",children:a.jsx(Mne,{style:{height:"100%"},data:p.ids,endReached:x,components:{Item:sre,List:ire},scrollerRef:r,itemContent:(w,k)=>a.jsx(rre,{imageName:k},k)})}),a.jsx(it,{onClick:x,isDisabled:!y,isLoading:h,loadingText:e("gallery.loading"),flexShrink:0,children:`Load More (${p.ids.length} of ${l})`})]}):v?a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsx(Kn,{label:e("gallery.unableToLoad"),icon:MZ})}):null:a.jsx($,{sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(Kn,{label:e("gallery.loading"),icon:Ui})})},ure=d.memo(cre),dre=ie([xe],e=>{const{galleryView:t}=e.gallery;return{galleryView:t}},we),fre=()=>{const e=d.useRef(null),t=d.useRef(null),{galleryView:n}=L(dre),r=ee(),{isOpen:o,onToggle:s}=Mr({defaultIsOpen:!0}),i=d.useCallback(()=>{r(YC("images"))},[r]),l=d.useCallback(()=>{r(YC("assets"))},[r]);return a.jsxs(W3,{layerStyle:"first",sx:{flexDirection:"column",h:"full",w:"full",borderRadius:"base",p:2},children:[a.jsxs(Ie,{sx:{w:"full"},children:[a.jsxs($,{ref:e,sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:[a.jsx(jte,{isOpen:o,onToggle:s}),a.jsx(Tte,{})]}),a.jsx(Ie,{children:a.jsx(Ste,{isOpen:o})})]}),a.jsxs($,{ref:t,direction:"column",gap:2,h:"full",w:"full",children:[a.jsx($,{sx:{alignItems:"center",justifyContent:"space-between",gap:2},children:a.jsx(Ji,{index:n==="images"?0:1,variant:"unstyled",size:"sm",sx:{w:"full"},children:a.jsx(el,{children:a.jsxs(mn,{isAttached:!0,sx:{w:"full"},children:[a.jsx(Pr,{as:it,size:"sm",isChecked:n==="images",onClick:i,sx:{w:"full"},leftIcon:a.jsx(FZ,{}),children:"Images"}),a.jsx(Pr,{as:it,size:"sm",isChecked:n==="assets",onClick:l,sx:{w:"full"},leftIcon:a.jsx(YZ,{}),children:"Assets"})]})})})}),a.jsx(ure,{})]})]})},pre=d.memo(fre),hre=ie(xo,e=>({isProcessing:e.isProcessing,isConnected:e.isConnected,isCancelable:e.isCancelable,currentIteration:e.currentIteration,totalIterations:e.totalIterations,sessionId:e.sessionId,cancelType:e.cancelType,isCancelScheduled:e.isCancelScheduled}),{memoizeOptions:{resultEqualityCheck:_t}}),mre=e=>{const t=ee(),{btnGroupWidth:n="auto",asIconButton:r=!1,...o}=e,{isProcessing:s,isConnected:i,isCancelable:l,cancelType:u,isCancelScheduled:p,sessionId:h}=L(hre),m=d.useCallback(()=>{if(h){if(u==="scheduled"){t(RD());return}t(AD({session_id:h}))}},[t,h,u]),{t:v}=Z(),b=d.useCallback(w=>{const k=Array.isArray(w)?w[0]:w;t(ND(k))},[t]);Ze("shift+x",()=>{(i||s)&&l&&m()},[i,s,l]);const y=d.useMemo(()=>v(p?"parameters.cancel.isScheduled":u==="immediate"?"parameters.cancel.immediate":"parameters.cancel.schedule"),[v,u,p]),x=d.useMemo(()=>p?a.jsx(eh,{}):u==="immediate"?a.jsx(Lne,{}):a.jsx(Nne,{}),[u,p]);return a.jsxs(mn,{isAttached:!0,width:n,children:[r?a.jsx(Te,{icon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o}):a.jsx(it,{leftIcon:x,tooltip:y,"aria-label":y,isDisabled:!i||!s||!l,onClick:m,colorScheme:"error",id:"cancel-button",...o,children:v("parameters.cancel.cancel")}),a.jsxs(Nd,{closeOnSelect:!1,children:[a.jsx(Td,{as:Te,tooltip:v("parameters.cancel.setType"),"aria-label":v("parameters.cancel.setType"),icon:a.jsx(rte,{w:"1em",h:"1em"}),paddingX:0,paddingY:0,colorScheme:"error",minWidth:5,...o}),a.jsx(Ka,{minWidth:"240px",children:a.jsxs(iP,{value:u,title:"Cancel Type",type:"radio",onChange:b,children:[a.jsx(ah,{value:"immediate",children:v("parameters.cancel.immediate")}),a.jsx(ah,{value:"scheduled",children:v("parameters.cancel.schedule")})]})})]})]})},KM=d.memo(mre),gre=ie([xe,wn],(e,t)=>{const{generation:n,system:r,nodes:o}=e,{initialImage:s,model:i}=n,{isProcessing:l,isConnected:u}=r,p=[];return l&&p.push(vt.t("parameters.invoke.systemBusy")),u||p.push(vt.t("parameters.invoke.systemDisconnected")),t==="img2img"&&!s&&p.push(vt.t("parameters.invoke.noInitialImageSelected")),t==="nodes"?o.shouldValidateGraph&&(o.nodes.length||p.push(vt.t("parameters.invoke.noNodesInGraph")),o.nodes.forEach(h=>{if(!Cn(h))return;const m=o.nodeTemplates[h.data.type];if(!m){p.push(vt.t("parameters.invoke.missingNodeTemplate"));return}const v=TD([h],o.edges);Pn(h.data.inputs,b=>{const y=m.inputs[b.name],x=v.some(w=>w.target===h.id&&w.targetHandle===b.name);if(!y){p.push(vt.t("parameters.invoke.missingFieldTemplate"));return}if(y.required&&b.value===void 0&&!x){p.push(vt.t("parameters.invoke.missingInputForField",{nodeLabel:h.data.label||m.title,fieldLabel:b.label||y.title}));return}})})):(i||p.push(vt.t("parameters.invoke.noModelSelected")),e.controlNet.isEnabled&&rr(e.controlNet.controlNets).forEach((h,m)=>{h.isEnabled&&(h.model||p.push(vt.t("parameters.invoke.noModelForControlNet",{index:m+1})),(!h.controlImage||!h.processedControlImage&&h.processorType!=="none")&&p.push(vt.t("parameters.invoke.noControlImageForControlNet",{index:m+1})))})),{isReady:!p.length,isProcessing:l,reasons:p}},we),Xd=()=>{const{isReady:e,isProcessing:t,reasons:n}=L(gre);return{isReady:e,isProcessing:t,reasons:n}},vre=ie(xo,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:_t}}),bre=()=>{const{t:e}=Z(),{isProcessing:t,currentStep:n,totalSteps:r,currentStatusHasSteps:o}=L(vre),s=n?Math.round(n*100/r):0;return a.jsx(SP,{value:s,"aria-label":e("accessibility.invokeProgressBar"),isIndeterminate:t&&!o,height:"full",colorScheme:"accent"})},xre=d.memo(bre);function qM(e){const{asIconButton:t=!1,sx:n,...r}=e,o=ee(),{isReady:s,isProcessing:i}=Xd(),l=L(wn),u=d.useCallback(()=>{o(wd()),o(bm(l))},[o,l]),{t:p}=Z();return Ze(["ctrl+enter","meta+enter"],u,{enabled:()=>s,preventDefault:!0,enableOnFormTags:["input","textarea","select"]},[s,l]),a.jsx(Ie,{style:{flexGrow:4},position:"relative",children:a.jsxs(Ie,{style:{position:"relative"},children:[!s&&a.jsx(Ie,{sx:{position:"absolute",bottom:"0",left:"0",right:"0",height:"100%",overflow:"clip",borderRadius:"base",...n},...r,children:a.jsx(xre,{})}),t?a.jsx(Te,{"aria-label":p("parameters.invoke.invoke"),type:"submit",icon:a.jsx(Mk,{}),isDisabled:!s,onClick:u,tooltip:a.jsx(pb,{}),colorScheme:"accent",isLoading:i,id:"invoke-button","data-progress":i,sx:{w:"full",flexGrow:1,...n},...r}):a.jsx(it,{tooltip:a.jsx(pb,{}),"aria-label":p("parameters.invoke.invoke"),type:"submit","data-progress":i,isDisabled:!s,onClick:u,colorScheme:"accent",id:"invoke-button",leftIcon:i?void 0:a.jsx(Mk,{}),isLoading:i,loadingText:p("parameters.invoke.invoke"),sx:{w:"full",flexGrow:1,fontWeight:700,...n},...r,children:"Invoke"})]})})}const yre=ie([xe],({gallery:e})=>{const{autoAddBoardId:t}=e;return{autoAddBoardId:t}},we),pb=d.memo(()=>{const{isReady:e,reasons:t}=Xd(),{autoAddBoardId:n}=L(yre),r=fg(n),{t:o}=Z();return a.jsxs($,{flexDir:"column",gap:1,children:[a.jsx(ye,{fontWeight:600,children:o(e?"parameters.invoke.readyToInvoke":"parameters.invoke.unableToInvoke")}),t.length>0&&a.jsx(Od,{children:t.map((s,i)=>a.jsx(lo,{children:a.jsx(ye,{fontWeight:400,children:s})},`${s}.${i}`))}),a.jsx(Vr,{opacity:.2,borderColor:"base.50",_dark:{borderColor:"base.900"}}),a.jsxs(ye,{fontWeight:400,fontStyle:"oblique 10deg",children:[o("parameters.invoke.addingImagesTo")," ",a.jsx(ye,{as:"span",fontWeight:600,children:r||"Uncategorized"})]})]})});pb.displayName="InvokeButtonTooltipContent";const Cre=()=>a.jsxs($,{layerStyle:"first",sx:{gap:2,borderRadius:"base",p:2},children:[a.jsx(qM,{}),a.jsx(KM,{})]}),XM=d.memo(Cre),{createElement:Ec,createContext:wre,forwardRef:YM,useCallback:Ls,useContext:QM,useEffect:ea,useImperativeHandle:ZM,useLayoutEffect:Sre,useMemo:kre,useRef:zr,useState:Ku}=Tb,S_=Tb["useId".toString()],qu=Sre,_re=typeof S_=="function"?S_:()=>null;let jre=0;function Dy(e=null){const t=_re(),n=zr(e||t||null);return n.current===null&&(n.current=""+jre++),n.current}const Cg=wre(null);Cg.displayName="PanelGroupContext";function JM({children:e=null,className:t="",collapsedSize:n=0,collapsible:r=!1,defaultSize:o=null,forwardedRef:s,id:i=null,maxSize:l=null,minSize:u,onCollapse:p=null,onResize:h=null,order:m=null,style:v={},tagName:b="div"}){const y=QM(Cg);if(y===null)throw Error("Panel components must be rendered within a PanelGroup container");const x=Dy(i),{collapsePanel:w,expandPanel:k,getPanelSize:_,getPanelStyle:j,registerPanel:I,resizePanel:E,units:M,unregisterPanel:D}=y;u==null&&(M==="percentages"?u=10:u=0);const R=zr({onCollapse:p,onResize:h});ea(()=>{R.current.onCollapse=p,R.current.onResize=h});const A=j(x,o),O=zr({size:k_(A)}),T=zr({callbacksRef:R,collapsedSize:n,collapsible:r,defaultSize:o,id:x,idWasAutoGenerated:i==null,maxSize:l,minSize:u,order:m});return qu(()=>{O.current.size=k_(A),T.current.callbacksRef=R,T.current.collapsedSize=n,T.current.collapsible=r,T.current.defaultSize=o,T.current.id=x,T.current.idWasAutoGenerated=i==null,T.current.maxSize=l,T.current.minSize=u,T.current.order=m}),qu(()=>(I(x,T),()=>{D(x)}),[m,x,I,D]),ZM(s,()=>({collapse:()=>w(x),expand:()=>k(x),getCollapsed(){return O.current.size===0},getId(){return x},getSize(K){return _(x,K)},resize:(K,F)=>E(x,K,F)}),[w,k,_,x,E]),Ec(b,{children:e,className:t,"data-panel":"","data-panel-collapsible":r||void 0,"data-panel-id":x,"data-panel-size":parseFloat(""+A.flexGrow).toFixed(1),id:`data-panel-id-${x}`,style:{...A,...v}})}const Ua=YM((e,t)=>Ec(JM,{...e,forwardedRef:t}));JM.displayName="Panel";Ua.displayName="forwardRef(Panel)";function k_(e){const{flexGrow:t}=e;return typeof t=="string"?parseFloat(t):t}const qi=10;function Au(e,t,n,r,o,s,i,l){const{id:u,panels:p,units:h}=t,m=h==="pixels"?Na(u):NaN,{sizes:v}=l||{},b=v||s,y=Sr(p),x=b.concat();let w=0;{const j=o<0?r:n,I=y.findIndex(R=>R.current.id===j),E=y[I],M=b[I],D=hb(h,m,E,M,M+Math.abs(o),e);if(M===D)return b;D===0&&M>0&&i.set(j,M),o=o<0?M-D:D-M}let k=o<0?n:r,_=y.findIndex(j=>j.current.id===k);for(;;){const j=y[_],I=b[_],E=Math.abs(o)-Math.abs(w),M=hb(h,m,j,I,I-E,e);if(I!==M&&(M===0&&I>0&&i.set(j.current.id,I),w+=I-M,x[_]=M,w.toPrecision(qi).localeCompare(Math.abs(o).toPrecision(qi),void 0,{numeric:!0})>=0))break;if(o<0){if(--_<0)break}else if(++_>=y.length)break}return w===0?b:(k=o<0?r:n,_=y.findIndex(j=>j.current.id===k),x[_]=b[_]+w,x)}function Nl(e,t,n){t.forEach((r,o)=>{const s=e[o];if(!s)return;const{callbacksRef:i,collapsedSize:l,collapsible:u,id:p}=s.current,h=n[p];if(h!==r){n[p]=r;const{onCollapse:m,onResize:v}=i.current;v&&v(r,h),u&&m&&((h==null||h===l)&&r!==l?m(!1):h!==l&&r===l&&m(!0))}})}function Pre({groupId:e,panels:t,units:n}){const r=n==="pixels"?Na(e):NaN,o=Sr(t),s=Array(o.length);let i=0,l=100;for(let u=0;ui.current.id===e);if(n<0)return[null,null];const r=n===t.length-1,o=r?t[n-1].current.id:e,s=r?e:t[n+1].current.id;return[o,s]}function Na(e){const t=dd(e);if(t==null)return NaN;const n=t.getAttribute("data-panel-group-direction"),r=Ry(e);return n==="horizontal"?t.offsetWidth-r.reduce((o,s)=>o+s.offsetWidth,0):t.offsetHeight-r.reduce((o,s)=>o+s.offsetHeight,0)}function eO(e,t,n){if(e.size===1)return"100";const o=Sr(e).findIndex(i=>i.current.id===t),s=n[o];return s==null?"0":s.toPrecision(qi)}function Ire(e){const t=document.querySelector(`[data-panel-id="${e}"]`);return t||null}function dd(e){const t=document.querySelector(`[data-panel-group-id="${e}"]`);return t||null}function wg(e){const t=document.querySelector(`[data-panel-resize-handle-id="${e}"]`);return t||null}function Ere(e){return tO().findIndex(r=>r.getAttribute("data-panel-resize-handle-id")===e)??null}function tO(){return Array.from(document.querySelectorAll("[data-panel-resize-handle-id]"))}function Ry(e){return Array.from(document.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id="${e}"]`))}function Ay(e,t,n){var u,p,h,m;const r=wg(t),o=Ry(e),s=r?o.indexOf(r):-1,i=((p=(u=n[s])==null?void 0:u.current)==null?void 0:p.id)??null,l=((m=(h=n[s+1])==null?void 0:h.current)==null?void 0:m.id)??null;return[i,l]}function Sr(e){return Array.from(e.values()).sort((t,n)=>{const r=t.current.order,o=n.current.order;return r==null&&o==null?0:r==null?-1:o==null?1:r-o})}function hb(e,t,n,r,o,s=null){var h;let{collapsedSize:i,collapsible:l,maxSize:u,minSize:p}=n.current;if(e==="pixels"&&(i=i/t*100,u!=null&&(u=u/t*100),p=p/t*100),l){if(r>i){if(o<=p/2+i)return i}else if(!((h=s==null?void 0:s.type)==null?void 0:h.startsWith("key"))&&o100)&&(t.current.minSize=0),o!=null&&(o<0||e==="percentages"&&o>100)&&(t.current.maxSize=null),r!==null&&(r<0||e==="percentages"&&r>100?t.current.defaultSize=null:ro&&(t.current.defaultSize=o))}function Bv({groupId:e,panels:t,nextSizes:n,prevSizes:r,units:o}){n=[...n];const s=Sr(t),i=o==="pixels"?Na(e):NaN;let l=0;for(let u=0;u{const{direction:i,panels:l}=e.current,u=dd(t);nO(u!=null,`No group found for id "${t}"`);const{height:p,width:h}=u.getBoundingClientRect(),v=Ry(t).map(b=>{const y=b.getAttribute("data-panel-resize-handle-id"),x=Sr(l),[w,k]=Ay(t,y,x);if(w==null||k==null)return()=>{};let _=0,j=100,I=0,E=0;x.forEach(T=>{const{id:K,maxSize:F,minSize:V}=T.current;K===w?(_=V,j=F??100):(I+=V,E+=F??100)});const M=Math.min(j,100-I),D=Math.max(_,(x.length-1)*100-E),R=eO(l,w,o);b.setAttribute("aria-valuemax",""+Math.round(M)),b.setAttribute("aria-valuemin",""+Math.round(D)),b.setAttribute("aria-valuenow",""+Math.round(parseInt(R)));const A=T=>{if(!T.defaultPrevented)switch(T.key){case"Enter":{T.preventDefault();const K=x.findIndex(F=>F.current.id===w);if(K>=0){const F=x[K],V=o[K];if(V!=null){let X=0;V.toPrecision(qi)<=F.current.minSize.toPrecision(qi)?X=i==="horizontal"?h:p:X=-(i==="horizontal"?h:p);const W=Au(T,e.current,w,k,X,o,s.current,null);o!==W&&r(W)}}break}}};b.addEventListener("keydown",A);const O=Ire(w);return O!=null&&b.setAttribute("aria-controls",O.id),()=>{b.removeAttribute("aria-valuemax"),b.removeAttribute("aria-valuemin"),b.removeAttribute("aria-valuenow"),b.removeEventListener("keydown",A),O!=null&&b.removeAttribute("aria-controls")}});return()=>{v.forEach(b=>b())}},[e,t,n,s,r,o])}function Dre({disabled:e,handleId:t,resizeHandler:n}){ea(()=>{if(e||n==null)return;const r=wg(t);if(r==null)return;const o=s=>{if(!s.defaultPrevented)switch(s.key){case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":case"End":case"Home":{s.preventDefault(),n(s);break}case"F6":{s.preventDefault();const i=tO(),l=Ere(t);nO(l!==null);const u=s.shiftKey?l>0?l-1:i.length-1:l+1{r.removeEventListener("keydown",o)}},[e,t,n])}function Hv(e,t){if(e.length!==t.length)return!1;for(let n=0;nD.current.id===I),M=r[E];if(M.current.collapsible){const D=h[E];(D===0||D.toPrecision(qi)===M.current.minSize.toPrecision(qi))&&(k=k<0?-M.current.minSize*y:M.current.minSize*y)}return k}else return rO(e,n,o,l,u)}function Are(e){return e.type==="keydown"}function mb(e){return e.type.startsWith("mouse")}function gb(e){return e.type.startsWith("touch")}let vb=null,wi=null;function oO(e){switch(e){case"horizontal":return"ew-resize";case"horizontal-max":return"w-resize";case"horizontal-min":return"e-resize";case"vertical":return"ns-resize";case"vertical-max":return"n-resize";case"vertical-min":return"s-resize"}}function Nre(){wi!==null&&(document.head.removeChild(wi),vb=null,wi=null)}function Wv(e){if(vb===e)return;vb=e;const t=oO(e);wi===null&&(wi=document.createElement("style"),document.head.appendChild(wi)),wi.innerHTML=`*{cursor: ${t}!important;}`}function Tre(e,t=10){let n=null;return(...o)=>{n!==null&&clearTimeout(n),n=setTimeout(()=>{e(...o)},t)}}function sO(e){return e.map(t=>{const{minSize:n,order:r}=t.current;return r?`${r}:${n}`:`${n}`}).sort((t,n)=>t.localeCompare(n)).join(",")}function aO(e,t){try{const n=t.getItem(`PanelGroup:sizes:${e}`);if(n){const r=JSON.parse(n);if(typeof r=="object"&&r!=null)return r}}catch{}return null}function $re(e,t,n){const r=aO(e,n);if(r){const o=sO(t);return r[o]??null}return null}function Lre(e,t,n,r){const o=sO(t),s=aO(e,r)||{};s[o]=n;try{r.setItem(`PanelGroup:sizes:${e}`,JSON.stringify(s))}catch(i){console.error(i)}}const Vv={};function __(e){try{if(typeof localStorage<"u")e.getItem=t=>localStorage.getItem(t),e.setItem=(t,n)=>{localStorage.setItem(t,n)};else throw new Error("localStorage not supported in this environment")}catch(t){console.error(t),e.getItem=()=>null,e.setItem=()=>{}}}const Nu={getItem:e=>(__(Nu),Nu.getItem(e)),setItem:(e,t)=>{__(Nu),Nu.setItem(e,t)}};function iO({autoSaveId:e,children:t=null,className:n="",direction:r,disablePointerEventsDuringResize:o=!1,forwardedRef:s,id:i=null,onLayout:l,storage:u=Nu,style:p={},tagName:h="div",units:m="percentages"}){const v=Dy(i),[b,y]=Ku(null),[x,w]=Ku(new Map),k=zr(null);zr({didLogDefaultSizeWarning:!1,didLogIdAndOrderWarning:!1,didLogInvalidLayoutWarning:!1,prevPanelIds:[]});const _=zr({onLayout:l});ea(()=>{_.current.onLayout=l});const j=zr({}),[I,E]=Ku([]),M=zr(new Map),D=zr(0),R=zr({direction:r,id:v,panels:x,sizes:I,units:m});ZM(s,()=>({getId:()=>v,getLayout:B=>{const{sizes:q,units:re}=R.current;if((B??re)==="pixels"){const le=Na(v);return q.map(se=>se/100*le)}else return q},setLayout:(B,q)=>{const{id:re,panels:Q,sizes:le,units:se}=R.current;if((q||se)==="pixels"){const ae=Na(re);B=B.map(oe=>oe/ae*100)}const U=j.current,G=Sr(Q),te=Bv({groupId:re,panels:Q,nextSizes:B,prevSizes:le,units:se});Hv(le,te)||(E(te),Nl(G,te,U))}}),[v]),qu(()=>{R.current.direction=r,R.current.id=v,R.current.panels=x,R.current.sizes=I,R.current.units=m}),Ore({committedValuesRef:R,groupId:v,panels:x,setSizes:E,sizes:I,panelSizeBeforeCollapse:M}),ea(()=>{const{onLayout:B}=_.current,{panels:q,sizes:re}=R.current;if(re.length>0){B&&B(re);const Q=j.current,le=Sr(q);Nl(le,re,Q)}},[I]),qu(()=>{const{id:B,sizes:q,units:re}=R.current;if(q.length===x.size)return;let Q=null;if(e){const le=Sr(x);Q=$re(e,le,u)}if(Q!=null){const le=Bv({groupId:B,panels:x,nextSizes:Q,prevSizes:Q,units:re});E(le)}else{const le=Pre({groupId:B,panels:x,units:re});E(le)}},[e,x,u]),ea(()=>{if(e){if(I.length===0||I.length!==x.size)return;const B=Sr(x);Vv[e]||(Vv[e]=Tre(Lre,100)),Vv[e](e,B,I,u)}},[e,x,I,u]),qu(()=>{if(m==="pixels"){const B=new ResizeObserver(()=>{const{panels:q,sizes:re}=R.current,Q=Bv({groupId:v,panels:q,nextSizes:re,prevSizes:re,units:m});Hv(re,Q)||E(Q)});return B.observe(dd(v)),()=>{B.disconnect()}}},[v,m]);const A=Ls((B,q)=>{const{panels:re,units:Q}=R.current,se=Sr(re).findIndex(te=>te.current.id===B),U=I[se];if((q??Q)==="pixels"){const te=Na(v);return U/100*te}else return U},[v,I]),O=Ls((B,q)=>{const{panels:re}=R.current;return re.size===0?{flexBasis:0,flexGrow:q??void 0,flexShrink:1,overflow:"hidden"}:{flexBasis:0,flexGrow:eO(re,B,I),flexShrink:1,overflow:"hidden",pointerEvents:o&&b!==null?"none":void 0}},[b,o,I]),T=Ls((B,q)=>{const{units:re}=R.current;Mre(re,q),w(Q=>{if(Q.has(B))return Q;const le=new Map(Q);return le.set(B,q),le})},[]),K=Ls(B=>re=>{re.preventDefault();const{direction:Q,panels:le,sizes:se}=R.current,U=Sr(le),[G,te]=Ay(v,B,U);if(G==null||te==null)return;let ae=Rre(re,v,B,U,Q,se,k.current);if(ae===0)return;const pe=dd(v).getBoundingClientRect(),ue=Q==="horizontal";document.dir==="rtl"&&ue&&(ae=-ae);const me=ue?pe.width:pe.height,Ce=ae/me*100,ge=Au(re,R.current,G,te,Ce,se,M.current,k.current),fe=!Hv(se,ge);if((mb(re)||gb(re))&&D.current!=Ce&&Wv(fe?ue?"horizontal":"vertical":ue?ae<0?"horizontal-min":"horizontal-max":ae<0?"vertical-min":"vertical-max"),fe){const De=j.current;E(ge),Nl(U,ge,De)}D.current=Ce},[v]),F=Ls(B=>{w(q=>{if(!q.has(B))return q;const re=new Map(q);return re.delete(B),re})},[]),V=Ls(B=>{const{panels:q,sizes:re}=R.current,Q=q.get(B);if(Q==null)return;const{collapsedSize:le,collapsible:se}=Q.current;if(!se)return;const U=Sr(q),G=U.indexOf(Q);if(G<0)return;const te=re[G];if(te===le)return;M.current.set(B,te);const[ae,oe]=Fv(B,U);if(ae==null||oe==null)return;const ue=G===U.length-1?te:le-te,me=Au(null,R.current,ae,oe,ue,re,M.current,null);if(re!==me){const Ce=j.current;E(me),Nl(U,me,Ce)}},[]),X=Ls(B=>{const{panels:q,sizes:re}=R.current,Q=q.get(B);if(Q==null)return;const{collapsedSize:le,minSize:se}=Q.current,U=M.current.get(B)||se;if(!U)return;const G=Sr(q),te=G.indexOf(Q);if(te<0||re[te]!==le)return;const[oe,pe]=Fv(B,G);if(oe==null||pe==null)return;const me=te===G.length-1?le-U:U,Ce=Au(null,R.current,oe,pe,me,re,M.current,null);if(re!==Ce){const ge=j.current;E(Ce),Nl(G,Ce,ge)}},[]),W=Ls((B,q,re)=>{const{id:Q,panels:le,sizes:se,units:U}=R.current;if((re||U)==="pixels"){const rt=Na(Q);q=q/rt*100}const G=le.get(B);if(G==null)return;let{collapsedSize:te,collapsible:ae,maxSize:oe,minSize:pe}=G.current;if(U==="pixels"){const rt=Na(Q);pe=pe/rt*100,oe!=null&&(oe=oe/rt*100)}const ue=Sr(le),me=ue.indexOf(G);if(me<0)return;const Ce=se[me];if(Ce===q)return;ae&&q===te||(q=Math.min(oe??100,Math.max(pe,q)));const[ge,fe]=Fv(B,ue);if(ge==null||fe==null)return;const je=me===ue.length-1?Ce-q:q-Ce,Be=Au(null,R.current,ge,fe,je,se,M.current,null);if(se!==Be){const rt=j.current;E(Be),Nl(ue,Be,rt)}},[]),z=kre(()=>({activeHandleId:b,collapsePanel:V,direction:r,expandPanel:X,getPanelSize:A,getPanelStyle:O,groupId:v,registerPanel:T,registerResizeHandle:K,resizePanel:W,startDragging:(B,q)=>{if(y(B),mb(q)||gb(q)){const re=wg(B);k.current={dragHandleRect:re.getBoundingClientRect(),dragOffset:rO(q,B,r),sizes:R.current.sizes}}},stopDragging:()=>{Nre(),y(null),k.current=null},units:m,unregisterPanel:F}),[b,V,r,X,A,O,v,T,K,W,m,F]),Y={display:"flex",flexDirection:r==="horizontal"?"row":"column",height:"100%",overflow:"hidden",width:"100%"};return Ec(Cg.Provider,{children:Ec(h,{children:t,className:n,"data-panel-group":"","data-panel-group-direction":r,"data-panel-group-id":v,"data-panel-group-units":m,style:{...Y,...p}}),value:z})}const Sg=YM((e,t)=>Ec(iO,{...e,forwardedRef:t}));iO.displayName="PanelGroup";Sg.displayName="forwardRef(PanelGroup)";function bb({children:e=null,className:t="",disabled:n=!1,id:r=null,onDragging:o,style:s={},tagName:i="div"}){const l=zr(null),u=zr({onDragging:o});ea(()=>{u.current.onDragging=o});const p=QM(Cg);if(p===null)throw Error("PanelResizeHandle components must be rendered within a PanelGroup container");const{activeHandleId:h,direction:m,groupId:v,registerResizeHandle:b,startDragging:y,stopDragging:x}=p,w=Dy(r),k=h===w,[_,j]=Ku(!1),[I,E]=Ku(null),M=Ls(()=>{l.current.blur(),x();const{onDragging:A}=u.current;A&&A(!1)},[x]);ea(()=>{if(n)E(null);else{const R=b(w);E(()=>R)}},[n,w,b]),ea(()=>{if(n||I==null||!k)return;const R=K=>{I(K)},A=K=>{I(K)},T=l.current.ownerDocument;return T.body.addEventListener("contextmenu",M),T.body.addEventListener("mousemove",R),T.body.addEventListener("touchmove",R),T.body.addEventListener("mouseleave",A),window.addEventListener("mouseup",M),window.addEventListener("touchend",M),()=>{T.body.removeEventListener("contextmenu",M),T.body.removeEventListener("mousemove",R),T.body.removeEventListener("touchmove",R),T.body.removeEventListener("mouseleave",A),window.removeEventListener("mouseup",M),window.removeEventListener("touchend",M)}},[m,n,k,I,M]),Dre({disabled:n,handleId:w,resizeHandler:I});const D={cursor:oO(m),touchAction:"none",userSelect:"none"};return Ec(i,{children:e,className:t,"data-resize-handle-active":k?"pointer":_?"keyboard":void 0,"data-panel-group-direction":m,"data-panel-group-id":v,"data-panel-resize-handle-enabled":!n,"data-panel-resize-handle-id":w,onBlur:()=>j(!1),onFocus:()=>j(!0),onMouseDown:R=>{y(w,R.nativeEvent);const{onDragging:A}=u.current;A&&A(!0)},onMouseUp:M,onTouchCancel:M,onTouchEnd:M,onTouchStart:R=>{y(w,R.nativeEvent);const{onDragging:A}=u.current;A&&A(!0)},ref:l,role:"separator",style:{...D,...s},tabIndex:0})}bb.displayName="PanelResizeHandle";const zre=e=>{const{direction:t="horizontal",collapsedDirection:n,isCollapsed:r=!1,...o}=e,s=Li("base.100","base.850"),i=Li("base.300","base.700");return t==="horizontal"?a.jsx(bb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-horizontal",sx:{w:n?2.5:4,h:"full",justifyContent:n?n==="left"?"flex-start":"flex-end":"center",alignItems:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{w:1,h:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})}):a.jsx(bb,{style:{visibility:r?"hidden":"visible",width:r?0:"auto"},children:a.jsx($,{className:"resize-handle-vertical",sx:{w:"full",h:n?2.5:4,alignItems:n?n==="top"?"flex-start":"flex-end":"center",justifyContent:"center",div:{bg:s},_hover:{div:{bg:i}}},...o,children:a.jsx(Ie,{sx:{h:1,w:"calc(100% - 1rem)",borderRadius:"base",transitionProperty:"common",transitionDuration:"normal"}})})})},im=d.memo(zre),Ny=()=>{const e=ee(),t=L(o=>o.ui.panels),n=d.useCallback(o=>t[o]??"",[t]),r=d.useCallback((o,s)=>{e($D({name:o,value:s}))},[e]);return{getItem:n,setItem:r}};const Fre=e=>{const{label:t,data:n,fileName:r,withDownload:o=!0,withCopy:s=!0}=e,i=d.useMemo(()=>LD(n)?n:JSON.stringify(n,null,2),[n]),l=d.useCallback(()=>{navigator.clipboard.writeText(i)},[i]),u=d.useCallback(()=>{const h=new Blob([i]),m=document.createElement("a");m.href=URL.createObjectURL(h),m.download=`${r||t}.json`,document.body.appendChild(m),m.click(),m.remove()},[i,t,r]),{t:p}=Z();return a.jsxs($,{layerStyle:"second",sx:{borderRadius:"base",flexGrow:1,w:"full",h:"full",position:"relative"},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"auto",p:4,fontSize:"sm"},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"}},children:a.jsx("pre",{children:i})})}),a.jsxs($,{sx:{position:"absolute",top:0,insetInlineEnd:0,p:2},children:[o&&a.jsx(Rt,{label:`${p("gallery.download")} ${t} JSON`,children:a.jsx(ps,{"aria-label":`${p("gallery.download")} ${t} JSON`,icon:a.jsx(ng,{}),variant:"ghost",opacity:.7,onClick:u})}),s&&a.jsx(Rt,{label:`${p("gallery.copy")} ${t} JSON`,children:a.jsx(ps,{"aria-label":`${p("gallery.copy")} ${t} JSON`,icon:a.jsx(Wc,{}),variant:"ghost",opacity:.7,onClick:l})})]})]})},Ri=d.memo(Fre),Bre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(r=>r.id===t);return{data:n==null?void 0:n.data}},we),Hre=()=>{const{data:e}=L(Bre);return e?a.jsx(Ri,{data:e,label:"Node Data"}):a.jsx(Kn,{label:"No node selected",icon:null})},Wre=d.memo(Hre),Vre=e=>a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:1300,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:e.children})})}),Ty=d.memo(Vre),Ure=({output:e})=>{const{image:t}=e,{data:n}=Wr(t.image_name);return a.jsx(oa,{imageDTO:n})},Gre=d.memo(Ure),Kre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(s=>s.id===t),r=n?e.nodeTemplates[n.data.type]:void 0,o=e.nodeExecutionStates[t??"__UNKNOWN_NODE__"];return{node:n,template:r,nes:o}},we),qre=()=>{const{node:e,template:t,nes:n}=L(Kre),{t:r}=Z();return!e||!n||!Cn(e)?a.jsx(Kn,{label:r("nodes.noNodeSelected"),icon:null}):n.outputs.length===0?a.jsx(Kn,{label:r("nodes.noOutputRecorded"),icon:null}):a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Ty,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:(t==null?void 0:t.outputType)==="image_output"?n.outputs.map((o,s)=>a.jsx(Gre,{output:o},Yre(o,s))):a.jsx(Ri,{data:n.outputs,label:r("nodes.nodesOutputs")})})})})},Xre=d.memo(qre),Yre=(e,t)=>`${e.type}-${t}`,Qre=ie(xe,({nodes:e})=>{const t=e.selectedNodes[e.selectedNodes.length-1],n=e.nodes.find(o=>o.id===t);return{template:n?e.nodeTemplates[n.data.type]:void 0}},we),Zre=()=>{const{template:e}=L(Qre),{t}=Z();return e?a.jsx(Ri,{data:e,label:t("nodes.NodeTemplate")}):a.jsx(Kn,{label:t("nodes.noNodeSelected"),icon:null})},Jre=d.memo(Zre),eoe=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:"Outputs"}),a.jsx(Pr,{children:"Data"}),a.jsx(Pr,{children:"Template"})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:a.jsx(Xre,{})}),a.jsx(mo,{children:a.jsx(Wre,{})}),a.jsx(mo,{children:a.jsx(Jre,{})})]})]})}),toe=d.memo(eoe),$y=e=>{e.stopPropagation()},noe={display:"flex",flexDirection:"row",alignItems:"center",gap:10},roe=e=>{const{label:t="",labelPos:n="top",isDisabled:r=!1,isInvalid:o,formControlProps:s,...i}=e,l=ee(),u=d.useCallback(h=>{h.shiftKey&&l(Ir(!0))},[l]),p=d.useCallback(h=>{h.shiftKey||l(Ir(!1))},[l]);return a.jsxs(sn,{isInvalid:o,isDisabled:r,...s,style:n==="side"?noe:void 0,children:[t!==""&&a.jsx(Hn,{children:t}),a.jsx(Em,{...i,onPaste:$y,onKeyDown:u,onKeyUp:p})]})},uo=d.memo(roe),ooe=Pe((e,t)=>{const n=ee(),r=d.useCallback(s=>{s.shiftKey&&n(Ir(!0))},[n]),o=d.useCallback(s=>{s.shiftKey||n(Ir(!1))},[n]);return a.jsx($P,{ref:t,onPaste:$y,onKeyDown:r,onKeyUp:o,...e})}),sa=d.memo(ooe),soe=ie(xe,({nodes:e})=>{const{author:t,name:n,description:r,tags:o,version:s,contact:i,notes:l}=e.workflow;return{name:n,author:t,description:r,tags:o,version:s,contact:i,notes:l}},we),aoe=()=>{const{author:e,name:t,description:n,tags:r,version:o,contact:s,notes:i}=L(soe),l=ee(),u=d.useCallback(w=>{l(zD(w.target.value))},[l]),p=d.useCallback(w=>{l(FD(w.target.value))},[l]),h=d.useCallback(w=>{l(BD(w.target.value))},[l]),m=d.useCallback(w=>{l(HD(w.target.value))},[l]),v=d.useCallback(w=>{l(WD(w.target.value))},[l]),b=d.useCallback(w=>{l(VD(w.target.value))},[l]),y=d.useCallback(w=>{l(UD(w.target.value))},[l]),{t:x}=Z();return a.jsx(Ty,{children:a.jsxs($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:[a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(uo,{label:x("nodes.workflowName"),value:t,onChange:u}),a.jsx(uo,{label:x("nodes.workflowVersion"),value:o,onChange:m})]}),a.jsxs($,{sx:{gap:2,w:"full"},children:[a.jsx(uo,{label:x("nodes.workflowAuthor"),value:e,onChange:p}),a.jsx(uo,{label:x("nodes.workflowContact"),value:s,onChange:h})]}),a.jsx(uo,{label:x("nodes.workflowTags"),value:r,onChange:b}),a.jsxs(sn,{as:$,sx:{flexDir:"column"},children:[a.jsx(Hn,{children:x("nodes.workflowDescription")}),a.jsx(sa,{onChange:v,value:n,fontSize:"sm",sx:{resize:"none"}})]}),a.jsxs(sn,{as:$,sx:{flexDir:"column",h:"full"},children:[a.jsx(Hn,{children:x("nodes.workflowNotes")}),a.jsx(sa,{onChange:y,value:i,fontSize:"sm",sx:{h:"full",resize:"none"}})]})]})})},ioe=d.memo(aoe);function loe(e,t,n){var r=this,o=d.useRef(null),s=d.useRef(0),i=d.useRef(null),l=d.useRef([]),u=d.useRef(),p=d.useRef(),h=d.useRef(e),m=d.useRef(!0);d.useEffect(function(){h.current=e},[e]);var v=!t&&t!==0&&typeof window<"u";if(typeof e!="function")throw new TypeError("Expected a function");t=+t||0;var b=!!(n=n||{}).leading,y=!("trailing"in n)||!!n.trailing,x="maxWait"in n,w=x?Math.max(+n.maxWait||0,t):null;d.useEffect(function(){return m.current=!0,function(){m.current=!1}},[]);var k=d.useMemo(function(){var _=function(R){var A=l.current,O=u.current;return l.current=u.current=null,s.current=R,p.current=h.current.apply(O,A)},j=function(R,A){v&&cancelAnimationFrame(i.current),i.current=v?requestAnimationFrame(R):setTimeout(R,A)},I=function(R){if(!m.current)return!1;var A=R-o.current;return!o.current||A>=t||A<0||x&&R-s.current>=w},E=function(R){return i.current=null,y&&l.current?_(R):(l.current=u.current=null,p.current)},M=function R(){var A=Date.now();if(I(A))return E(A);if(m.current){var O=t-(A-o.current),T=x?Math.min(O,w-(A-s.current)):O;j(R,T)}},D=function(){var R=Date.now(),A=I(R);if(l.current=[].slice.call(arguments),u.current=r,o.current=R,A){if(!i.current&&m.current)return s.current=o.current,j(M,t),b?_(o.current):p.current;if(x)return j(M,t),_(o.current)}return i.current||j(M,t),p.current};return D.cancel=function(){i.current&&(v?cancelAnimationFrame(i.current):clearTimeout(i.current)),s.current=0,l.current=o.current=u.current=i.current=null},D.isPending=function(){return!!i.current},D.flush=function(){return i.current?E(Date.now()):p.current},D},[b,x,t,w,y,v]);return k}function coe(e,t){return e===t}function j_(e){return typeof e=="function"?function(){return e}:e}function uoe(e,t,n){var r,o,s=n&&n.equalityFn||coe,i=(r=d.useState(j_(e)),o=r[1],[r[0],d.useCallback(function(m){return o(j_(m))},[])]),l=i[0],u=i[1],p=loe(d.useCallback(function(m){return u(m)},[u]),t,n),h=d.useRef(e);return s(h.current,e)||(p(e),h.current=e),[l,p]}const lO=()=>{const e=L(r=>r.nodes),[t]=uoe(e,300);return d.useMemo(()=>GD(t),[t])},doe=()=>{const e=lO(),{t}=Z();return a.jsx($,{sx:{flexDir:"column",alignItems:"flex-start",gap:2,h:"full"},children:a.jsx(Ri,{data:e,label:t("nodes.workflow")})})},foe=d.memo(doe),poe=({isSelected:e,isHovered:t})=>{const n=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.light";if(e)return"nodeSelected.light";if(t)return"nodeHovered.light"},[t,e]),r=d.useMemo(()=>{if(e&&t)return"nodeHoveredSelected.dark";if(e)return"nodeSelected.dark";if(t)return"nodeHovered.dark"},[t,e]);return a.jsx(Ie,{className:"selection-box",sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",opacity:e||t?1:.5,transitionProperty:"common",transitionDuration:"0.1s",pointerEvents:"none",shadow:n,_dark:{shadow:r}}})},cO=d.memo(poe),uO=e=>{const t=ee(),n=d.useMemo(()=>ie(xe,({nodes:i})=>i.mouseOverNode===e,we),[e]),r=L(n),o=d.useCallback(()=>{!r&&t(QC(e))},[t,e,r]),s=d.useCallback(()=>{r&&t(QC(null))},[t,r]);return{isMouseOverNode:r,handleMouseOver:o,handleMouseOut:s}},dO=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return(i=s==null?void 0:s.data.inputs[t])==null?void 0:i.label},we),[t,e]);return L(n)},fO=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{var u;const i=s.nodes.find(p=>p.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return(u=l==null?void 0:l[Ub[n]][t])==null?void 0:u.title},we),[t,n,e]);return L(r)},pO=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{const s=o.nodes.find(i=>i.id===e);if(Cn(s))return s==null?void 0:s.data.inputs[t]},we),[t,e]);return L(n)},kg=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{const i=s.nodes.find(u=>u.id===e);if(!Cn(i))return;const l=s.nodeTemplates[(i==null?void 0:i.data.type)??""];return l==null?void 0:l[Ub[n]][t]},we),[t,n,e]);return L(r)},hoe=({nodeId:e,fieldName:t,kind:n})=>{const r=pO(e,t),o=kg(e,t,n),s=KD(o),{t:i}=Z(),l=d.useMemo(()=>qD(r)?r.label&&(o!=null&&o.title)?`${r.label} (${o.title})`:r.label&&!o?r.label:!r.label&&o?o.title:i("nodes.unknownField"):(o==null?void 0:o.title)||i("nodes.unknownField"),[r,o,i]);return a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(ye,{sx:{fontWeight:600},children:l}),o&&a.jsx(ye,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:o.description}),o&&a.jsxs(ye,{children:["Type: ",Sd[o.type].title]}),s&&a.jsxs(ye,{children:["Input: ",XD(o.input)]})]})},Ly=d.memo(hoe),moe=Pe((e,t)=>{const{nodeId:n,fieldName:r,kind:o,isMissingInput:s=!1,withTooltip:i=!1}=e,l=dO(n,r),u=fO(n,r,o),{t:p}=Z(),h=ee(),[m,v]=d.useState(l||u||p("nodes.unknownFeild")),b=d.useCallback(async x=>{x&&(x===l||x===u)||(v(x||u||p("nodes.unknownField")),h(YD({nodeId:n,fieldName:r,label:x})))},[l,u,h,n,r,p]),y=d.useCallback(x=>{v(x)},[]);return d.useEffect(()=>{v(l||u||p("nodes.unknownField"))},[l,u,p]),a.jsx(Rt,{label:i?a.jsx(Ly,{nodeId:n,fieldName:r,kind:"input"}):void 0,openDelay:xm,placement:"top",hasArrow:!0,children:a.jsx($,{ref:t,sx:{position:"relative",overflow:"hidden",alignItems:"center",justifyContent:"flex-start",gap:1,h:"full"},children:a.jsxs(jm,{value:m,onChange:y,onSubmit:b,as:$,sx:{position:"relative",alignItems:"center",h:"full"},children:[a.jsx(_m,{sx:{p:0,fontWeight:s?600:400,textAlign:"left",_hover:{fontWeight:"600 !important"}},noOfLines:1}),a.jsx(km,{className:"nodrag",sx:{p:0,w:"full",fontWeight:600,color:"base.900",_dark:{color:"base.100"},_focusVisible:{p:0,textAlign:"left",boxShadow:"none"}}}),a.jsx(mO,{})]})})})}),hO=d.memo(moe),mO=d.memo(()=>{const{isEditing:e,getEditButtonProps:t}=Q5(),n=d.useCallback(r=>{const{onClick:o}=t();o&&(o(r),r.preventDefault())},[t]);return e?null:a.jsx($,{onClick:n,position:"absolute",w:"full",h:"full",top:0,insetInlineStart:0,cursor:"text"})});mO.displayName="EditableControls";const goe=e=>{const{nodeId:t,field:n}=e,r=ee(),o=d.useCallback(s=>{r(QD({nodeId:t,fieldName:n.name,value:s.target.checked}))},[r,n.name,t]);return a.jsx(Hx,{className:"nodrag",onChange:o,isChecked:n.value})},voe=d.memo(goe);function _g(){return(_g=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function xb(e){var t=d.useRef(e),n=d.useRef(function(r){t.current&&t.current(r)});return t.current=e,n.current}var Mc=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=1),e>n?n:e0:w.buttons>0)&&o.current?s(P_(o.current,w,l.current)):x(!1)},y=function(){return x(!1)};function x(w){var k=u.current,_=yb(o.current),j=w?_.addEventListener:_.removeEventListener;j(k?"touchmove":"mousemove",b),j(k?"touchend":"mouseup",y)}return[function(w){var k=w.nativeEvent,_=o.current;if(_&&(I_(k),!function(I,E){return E&&!Xu(I)}(k,u.current)&&_)){if(Xu(k)){u.current=!0;var j=k.changedTouches||[];j.length&&(l.current=j[0].identifier)}_.focus(),s(P_(_,k,l.current)),x(!0)}},function(w){var k=w.which||w.keyCode;k<37||k>40||(w.preventDefault(),i({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},x]},[i,s]),h=p[0],m=p[1],v=p[2];return d.useEffect(function(){return v},[v]),H.createElement("div",_g({},r,{onTouchStart:h,onMouseDown:h,className:"react-colorful__interactive",ref:o,onKeyDown:m,tabIndex:0,role:"slider"}))}),jg=function(e){return e.filter(Boolean).join(" ")},Fy=function(e){var t=e.color,n=e.left,r=e.top,o=r===void 0?.5:r,s=jg(["react-colorful__pointer",e.className]);return H.createElement("div",{className:s,style:{top:100*o+"%",left:100*n+"%"}},H.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},dr=function(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=Math.pow(10,t)),Math.round(n*e)/n},vO=function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:dr(e.h),s:dr(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:dr(o/2),a:dr(r,2)}},Cb=function(e){var t=vO(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Uv=function(e){var t=vO(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},boe=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var s=Math.floor(t),i=r*(1-n),l=r*(1-(t-s)*n),u=r*(1-(1-t+s)*n),p=s%6;return{r:dr(255*[r,l,i,i,u,r][p]),g:dr(255*[u,r,r,l,i,i][p]),b:dr(255*[i,i,u,r,r,l][p]),a:dr(o,2)}},xoe=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,s=Math.max(t,n,r),i=s-Math.min(t,n,r),l=i?s===t?(n-r)/i:s===n?2+(r-t)/i:4+(t-n)/i:0;return{h:dr(60*(l<0?l+6:l)),s:dr(s?i/s*100:0),v:dr(s/255*100),a:o}},yoe=H.memo(function(e){var t=e.hue,n=e.onChange,r=jg(["react-colorful__hue",e.className]);return H.createElement("div",{className:r},H.createElement(zy,{onMove:function(o){n({h:360*o.left})},onKey:function(o){n({h:Mc(t+360*o.left,0,360)})},"aria-label":"Hue","aria-valuenow":dr(t),"aria-valuemax":"360","aria-valuemin":"0"},H.createElement(Fy,{className:"react-colorful__hue-pointer",left:t/360,color:Cb({h:t,s:100,v:100,a:1})})))}),Coe=H.memo(function(e){var t=e.hsva,n=e.onChange,r={backgroundColor:Cb({h:t.h,s:100,v:100,a:1})};return H.createElement("div",{className:"react-colorful__saturation",style:r},H.createElement(zy,{onMove:function(o){n({s:100*o.left,v:100-100*o.top})},onKey:function(o){n({s:Mc(t.s+100*o.left,0,100),v:Mc(t.v-100*o.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+dr(t.s)+"%, Brightness "+dr(t.v)+"%"},H.createElement(Fy,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Cb(t)})))}),bO=function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0};function woe(e,t,n){var r=xb(n),o=d.useState(function(){return e.toHsva(t)}),s=o[0],i=o[1],l=d.useRef({color:t,hsva:s});d.useEffect(function(){if(!e.equal(t,l.current.color)){var p=e.toHsva(t);l.current={hsva:p,color:t},i(p)}},[t,e]),d.useEffect(function(){var p;bO(s,l.current.hsva)||e.equal(p=e.fromHsva(s),l.current.color)||(l.current={hsva:s,color:p},r(p))},[s,e,r]);var u=d.useCallback(function(p){i(function(h){return Object.assign({},h,p)})},[]);return[s,u]}var Soe=typeof window<"u"?d.useLayoutEffect:d.useEffect,koe=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},E_=new Map,_oe=function(e){Soe(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!E_.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}`,E_.set(t,n);var r=koe();r&&n.setAttribute("nonce",r),t.head.appendChild(n)}},[])},joe=function(e){var t=e.className,n=e.hsva,r=e.onChange,o={backgroundImage:"linear-gradient(90deg, "+Uv(Object.assign({},n,{a:0}))+", "+Uv(Object.assign({},n,{a:1}))+")"},s=jg(["react-colorful__alpha",t]),i=dr(100*n.a);return H.createElement("div",{className:s},H.createElement("div",{className:"react-colorful__alpha-gradient",style:o}),H.createElement(zy,{onMove:function(l){r({a:l.left})},onKey:function(l){r({a:Mc(n.a+l.left)})},"aria-label":"Alpha","aria-valuetext":i+"%","aria-valuenow":i,"aria-valuemin":"0","aria-valuemax":"100"},H.createElement(Fy,{className:"react-colorful__alpha-pointer",left:n.a,color:Uv(n)})))},Poe=function(e){var t=e.className,n=e.colorModel,r=e.color,o=r===void 0?n.defaultColor:r,s=e.onChange,i=gO(e,["className","colorModel","color","onChange"]),l=d.useRef(null);_oe(l);var u=woe(n,o,s),p=u[0],h=u[1],m=jg(["react-colorful",t]);return H.createElement("div",_g({},i,{ref:l,className:m}),H.createElement(Coe,{hsva:p,onChange:h}),H.createElement(yoe,{hue:p.h,onChange:h}),H.createElement(joe,{hsva:p,onChange:h,className:"react-colorful__last-control"}))},Ioe={defaultColor:{r:0,g:0,b:0,a:1},toHsva:xoe,fromHsva:boe,equal:bO},xO=function(e){return H.createElement(Poe,_g({},e,{colorModel:Ioe}))};const Eoe=e=>{const{nodeId:t,field:n}=e,r=ee(),o=d.useCallback(s=>{r(ZD({nodeId:t,fieldName:n.name,value:s}))},[r,n.name,t]);return a.jsx(xO,{className:"nodrag",color:n.value,onChange:o})},Moe=d.memo(Eoe),yO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=JD.safeParse({base_model:n,model_name:o});if(!s.success){t.error({controlNetModelId:e,errors:s.error.format()},"Failed to parse ControlNet model id");return}return s.data},Ooe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=Gb(),i=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/controlnet/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),l=d.useMemo(()=>{if(!s)return[];const p=[];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[s]),u=d.useCallback(p=>{if(!p)return;const h=yO(p);h&&o(eR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(In,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:l,onChange:u,sx:{width:"100%"}})},Doe=d.memo(Ooe),Roe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),s=d.useCallback(i=>{o(tR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return a.jsx(jP,{className:"nowheel nodrag",onChange:s,value:n.value,children:r.options.map(i=>a.jsx("option",{value:i,children:r.ui_choice_labels?r.ui_choice_labels[i]:i},i))})},Aoe=d.memo(Roe),Noe=e=>{var p;const{nodeId:t,field:n}=e,r=ee(),{currentData:o}=Wr(((p=n.value)==null?void 0:p.image_name)??Er.skipToken),s=d.useCallback(()=>{r(nR({nodeId:t,fieldName:n.name,value:void 0}))},[r,n.name,t]),i=d.useMemo(()=>{if(o)return{id:`node-${t}-${n.name}`,payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[n.name,o,t]),l=d.useMemo(()=>({id:`node-${t}-${n.name}`,actionType:"SET_NODES_IMAGE",context:{nodeId:t,fieldName:n.name}}),[n.name,t]),u=d.useMemo(()=>({type:"SET_NODES_IMAGE",nodeId:t,fieldName:n.name}),[t,n.name]);return a.jsx($,{className:"nodrag",sx:{w:"full",h:"full",alignItems:"center",justifyContent:"center"},children:a.jsx(oa,{imageDTO:o,droppableData:l,draggableData:i,postUploadAction:u,useThumbailFallback:!0,uploadElement:a.jsx(CO,{}),dropLabel:a.jsx(wO,{}),minSize:8,children:a.jsx(Di,{onClick:s,icon:o?a.jsx(Ud,{}):void 0,tooltip:"Reset Image"})})})},Toe=d.memo(Noe),CO=d.memo(()=>a.jsx(ye,{fontSize:16,fontWeight:600,children:"Drop or Upload"}));CO.displayName="UploadElement";const wO=d.memo(()=>a.jsx(ye,{fontSize:16,fontWeight:600,children:"Drop"}));wO.displayName="DropLabel";const $oe=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=rR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({loraModelId:e,errors:s.error.format()},"Failed to parse LoRA model id");return}return s.data},Loe=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=Cd(),{t:i}=Z(),l=d.useMemo(()=>{if(!s)return[];const h=[];return Pn(s.entities,(m,v)=>{m&&h.push({value:v,label:m.model_name,group:on[m.base_model]})}),h.sort((m,v)=>m.disabled&&!v.disabled?1:-1)},[s]),u=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/lora/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r==null?void 0:r.base_model,r==null?void 0:r.model_name]),p=d.useCallback(h=>{if(!h)return;const m=$oe(h);m&&o(oR({nodeId:t,fieldName:n.name,value:m}))},[o,n.name,t]);return(s==null?void 0:s.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kt,{className:"nowheel nodrag",value:(u==null?void 0:u.id)??null,placeholder:l.length>0?i("models.selectLoRA"):i("models.noLoRAsAvailable"),data:l,nothingFound:i("models.noMatchingLoRAs"),itemComponent:ri,disabled:l.length===0,filter:(h,m)=>{var v;return((v=m.label)==null?void 0:v.toLowerCase().includes(h.toLowerCase().trim()))||m.value.toLowerCase().includes(h.toLowerCase().trim())},error:!u,onChange:p,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},zoe=d.memo(Loe),Pg=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=sR.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data};function Uc(e){const{iconMode:t=!1,...n}=e,r=ee(),{t:o}=Z(),[s,{isLoading:i}]=aR(),l=()=>{s().unwrap().then(u=>{r(Tt(Ft({title:`${o("modelManager.modelsSynced")}`,status:"success"})))}).catch(u=>{u&&r(Tt(Ft({title:`${o("modelManager.modelSyncFailed")}`,status:"error"})))})};return t?a.jsx(Te,{icon:a.jsx(WE,{}),tooltip:o("modelManager.syncModels"),"aria-label":o("modelManager.syncModels"),isLoading:i,onClick:l,size:"sm",...n}):a.jsx(it,{isLoading:i,onClick:l,minW:"max-content",...n,children:"Sync Models"})}const Foe=e=>{var y,x;const{nodeId:t,field:n}=e,r=ee(),o=Xt("syncModels").isFeatureEnabled,{t:s}=Z(),{data:i,isLoading:l}=Yu(ZC),{data:u,isLoading:p}=Bo(ZC),h=d.useMemo(()=>l||p,[l,p]),m=d.useMemo(()=>{if(!u)return[];const w=[];return Pn(u.entities,(k,_)=>{k&&w.push({value:_,label:k.model_name,group:on[k.base_model]})}),i&&Pn(i.entities,(k,_)=>{k&&w.push({value:_,label:k.model_name,group:on[k.base_model]})}),w},[u,i]),v=d.useMemo(()=>{var w,k,_,j;return((u==null?void 0:u.entities[`${(w=n.value)==null?void 0:w.base_model}/main/${(k=n.value)==null?void 0:k.model_name}`])||(i==null?void 0:i.entities[`${(_=n.value)==null?void 0:_.base_model}/onnx/${(j=n.value)==null?void 0:j.model_name}`]))??null},[(y=n.value)==null?void 0:y.base_model,(x=n.value)==null?void 0:x.model_name,u==null?void 0:u.entities,i==null?void 0:i.entities]),b=d.useCallback(w=>{if(!w)return;const k=Pg(w);k&&r(t5({nodeId:t,fieldName:n.name,value:k}))},[r,n.name,t]);return a.jsxs($,{sx:{w:"full",alignItems:"center",gap:2},children:[h?a.jsx(ye,{variant:"subtext",children:"Loading..."}):a.jsx(Kt,{className:"nowheel nodrag",tooltip:v==null?void 0:v.description,value:v==null?void 0:v.id,placeholder:m.length>0?s("models.selectModel"):s("models.noModelsAvailable"),data:m,error:!v,disabled:m.length===0,onChange:b,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),o&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},Boe=d.memo(Foe),lm=/^-?(0\.)?\.?$/,Hoe=e=>{const{label:t,isDisabled:n=!1,showStepper:r=!0,isInvalid:o,value:s,onChange:i,min:l,max:u,isInteger:p=!0,formControlProps:h,formLabelProps:m,numberInputFieldProps:v,numberInputStepperProps:b,tooltipProps:y,...x}=e,w=ee(),[k,_]=d.useState(String(s));d.useEffect(()=>{!k.match(lm)&&s!==Number(k)&&_(String(s))},[s,k]);const j=D=>{_(D),D.match(lm)||i(p?Math.floor(Number(D)):Number(D))},I=D=>{const R=Ni(p?Math.floor(Number(D.target.value)):Number(D.target.value),l,u);_(String(R)),i(R)},E=d.useCallback(D=>{D.shiftKey&&w(Ir(!0))},[w]),M=d.useCallback(D=>{D.shiftKey||w(Ir(!1))},[w]);return a.jsx(Rt,{...y,children:a.jsxs(sn,{isDisabled:n,isInvalid:o,...h,children:[t&&a.jsx(Hn,{...m,children:t}),a.jsxs(Nm,{value:k,min:l,max:u,keepWithinRange:!0,clampValueOnBlur:!1,onChange:j,onBlur:I,...x,onPaste:$y,children:[a.jsx($m,{...v,onKeyDown:E,onKeyUp:M}),r&&a.jsxs(Tm,{children:[a.jsx(zm,{...b}),a.jsx(Lm,{...b})]})]})]})})},Gc=d.memo(Hoe),Woe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),[s,i]=d.useState(String(n.value)),l=d.useMemo(()=>r.type==="integer",[r.type]),u=p=>{i(p),p.match(lm)||o(iR({nodeId:t,fieldName:n.name,value:l?Math.floor(Number(p)):Number(p)}))};return d.useEffect(()=>{!s.match(lm)&&n.value!==Number(s)&&i(String(n.value))},[n.value,s]),a.jsxs(Nm,{onChange:u,value:s,step:l?1:.1,precision:l?0:3,children:[a.jsx($m,{className:"nodrag"}),a.jsxs(Tm,{children:[a.jsx(zm,{}),a.jsx(Lm,{})]})]})},Voe=d.memo(Woe),Uoe=e=>{var m,v;const{nodeId:t,field:n}=e,r=ee(),{t:o}=Z(),s=Xt("syncModels").isFeatureEnabled,{data:i,isLoading:l}=Bo(Kb),u=d.useMemo(()=>{if(!i)return[];const b=[];return Pn(i.entities,(y,x)=>{y&&b.push({value:x,label:y.model_name,group:on[y.base_model]})}),b},[i]),p=d.useMemo(()=>{var b,y;return(i==null?void 0:i.entities[`${(b=n.value)==null?void 0:b.base_model}/main/${(y=n.value)==null?void 0:y.model_name}`])??null},[(m=n.value)==null?void 0:m.base_model,(v=n.value)==null?void 0:v.model_name,i==null?void 0:i.entities]),h=d.useCallback(b=>{if(!b)return;const y=Pg(b);y&&r(lR({nodeId:t,fieldName:n.name,value:y}))},[r,n.name,t]);return l?a.jsx(Kt,{label:o("modelManager.model"),placeholder:o("models.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{className:"nowheel nodrag",tooltip:p==null?void 0:p.description,value:p==null?void 0:p.id,placeholder:u.length>0?o("models.selectModel"):o("models.noModelsAvailable"),data:u,error:!p,disabled:u.length===0,onChange:h,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},Goe=d.memo(Uoe),Koe=e=>{var v,b;const{nodeId:t,field:n}=e,r=ee(),{t:o}=Z(),s=Xt("syncModels").isFeatureEnabled,{data:i}=Yu(JC),{data:l,isLoading:u}=Bo(JC),p=d.useMemo(()=>{if(!l)return[];const y=[];return Pn(l.entities,(x,w)=>{!x||x.base_model!=="sdxl"||y.push({value:w,label:x.model_name,group:on[x.base_model]})}),i&&Pn(i.entities,(x,w)=>{!x||x.base_model!=="sdxl"||y.push({value:w,label:x.model_name,group:on[x.base_model]})}),y},[l,i]),h=d.useMemo(()=>{var y,x,w,k;return((l==null?void 0:l.entities[`${(y=n.value)==null?void 0:y.base_model}/main/${(x=n.value)==null?void 0:x.model_name}`])||(i==null?void 0:i.entities[`${(w=n.value)==null?void 0:w.base_model}/onnx/${(k=n.value)==null?void 0:k.model_name}`]))??null},[(v=n.value)==null?void 0:v.base_model,(b=n.value)==null?void 0:b.model_name,l==null?void 0:l.entities,i==null?void 0:i.entities]),m=d.useCallback(y=>{if(!y)return;const x=Pg(y);x&&r(t5({nodeId:t,fieldName:n.name,value:x}))},[r,n.name,t]);return u?a.jsx(Kt,{label:o("modelManager.model"),placeholder:o("models.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{className:"nowheel nodrag",tooltip:h==null?void 0:h.description,value:h==null?void 0:h.id,placeholder:p.length>0?o("models.selectModel"):o("models.noModelsAvailable"),data:p,error:!h,disabled:p.length===0,onChange:m,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}}),s&&a.jsx(Uc,{className:"nodrag",iconMode:!0})]})},qoe=d.memo(Koe),Xoe=ie([xe],({ui:e})=>{const{favoriteSchedulers:t}=e;return{data:rr(hm,(r,o)=>({value:o,label:r,group:t.includes(o)?"Favorites":void 0})).sort((r,o)=>r.label.localeCompare(o.label))}},we),Yoe=e=>{const{nodeId:t,field:n}=e,r=ee(),{data:o}=L(Xoe),s=d.useCallback(i=>{i&&r(cR({nodeId:t,fieldName:n.name,value:i}))},[r,n.name,t]);return a.jsx(Kt,{className:"nowheel nodrag",sx:{".mantine-Select-dropdown":{width:"14rem !important"}},value:n.value,data:o,onChange:s})},Qoe=d.memo(Yoe),Zoe=e=>{const{nodeId:t,field:n,fieldTemplate:r}=e,o=ee(),s=d.useCallback(i=>{o(uR({nodeId:t,fieldName:n.name,value:i.target.value}))},[o,n.name,t]);return r.ui_component==="textarea"?a.jsx(sa,{className:"nodrag",onChange:s,value:n.value,rows:5,resize:"none"}):a.jsx(uo,{onChange:s,value:n.value})},Joe=d.memo(Zoe),SO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=dR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({vaeModelId:e,errors:s.error.format()},"Failed to parse VAE model id");return}return s.data},ese=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=n5(),i=d.useMemo(()=>{if(!s)return[];const p=[{value:"default",label:"Default",group:"Default"}];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p.sort((h,m)=>h.disabled&&!m.disabled?1:-1)},[s]),l=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[s==null?void 0:s.entities,r]),u=d.useCallback(p=>{if(!p)return;const h=SO(p);h&&o(fR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(Kt,{className:"nowheel nodrag",itemComponent:ri,tooltip:l==null?void 0:l.description,value:(l==null?void 0:l.id)??"default",placeholder:"Default",data:i,onChange:u,disabled:i.length===0,error:!l,clearable:!0,sx:{width:"100%",".mantine-Select-dropdown":{width:"16rem !important"}}})},tse=d.memo(ese),kO=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=pR.safeParse({base_model:n,model_name:o});if(!s.success){t.error({ipAdapterModelId:e,errors:s.error.format()},"Failed to parse IP-Adapter model id");return}return s.data},nse=e=>{const{nodeId:t,field:n}=e,r=n.value,o=ee(),{data:s}=r5(),i=d.useMemo(()=>(s==null?void 0:s.entities[`${r==null?void 0:r.base_model}/ip_adapter/${r==null?void 0:r.model_name}`])??null,[r==null?void 0:r.base_model,r==null?void 0:r.model_name,s==null?void 0:s.entities]),l=d.useMemo(()=>{if(!s)return[];const p=[];return Pn(s.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[s]),u=d.useCallback(p=>{if(!p)return;const h=kO(p);h&&o(hR({nodeId:t,fieldName:n.name,value:h}))},[o,n.name,t]);return a.jsx(In,{className:"nowheel nodrag",tooltip:i==null?void 0:i.description,value:(i==null?void 0:i.id)??null,placeholder:"Pick one",error:!i,data:l,onChange:u,sx:{width:"100%"}})},rse=d.memo(nse),ose=({nodeId:e,fieldName:t})=>{const n=pO(e,t),r=kg(e,t,"input");return(r==null?void 0:r.fieldKind)==="output"?a.jsxs(Ie,{p:2,children:["Output field in input: ",n==null?void 0:n.type]}):(n==null?void 0:n.type)==="string"&&(r==null?void 0:r.type)==="string"?a.jsx(Joe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="boolean"&&(r==null?void 0:r.type)==="boolean"?a.jsx(voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="integer"&&(r==null?void 0:r.type)==="integer"||(n==null?void 0:n.type)==="float"&&(r==null?void 0:r.type)==="float"?a.jsx(Voe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="enum"&&(r==null?void 0:r.type)==="enum"?a.jsx(Aoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ImageField"&&(r==null?void 0:r.type)==="ImageField"?a.jsx(Toe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="MainModelField"&&(r==null?void 0:r.type)==="MainModelField"?a.jsx(Boe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLRefinerModelField"&&(r==null?void 0:r.type)==="SDXLRefinerModelField"?a.jsx(Goe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="VaeModelField"&&(r==null?void 0:r.type)==="VaeModelField"?a.jsx(tse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="LoRAModelField"&&(r==null?void 0:r.type)==="LoRAModelField"?a.jsx(zoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ControlNetModelField"&&(r==null?void 0:r.type)==="ControlNetModelField"?a.jsx(Doe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="IPAdapterModelField"&&(r==null?void 0:r.type)==="IPAdapterModelField"?a.jsx(rse,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="ColorField"&&(r==null?void 0:r.type)==="ColorField"?a.jsx(Moe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="SDXLMainModelField"&&(r==null?void 0:r.type)==="SDXLMainModelField"?a.jsx(qoe,{nodeId:e,field:n,fieldTemplate:r}):(n==null?void 0:n.type)==="Scheduler"&&(r==null?void 0:r.type)==="Scheduler"?a.jsx(Qoe,{nodeId:e,field:n,fieldTemplate:r}):n&&r?null:a.jsx(Ie,{p:1,children:a.jsxs(ye,{sx:{fontSize:"sm",fontWeight:600,color:"error.400",_dark:{color:"error.300"}},children:["Unknown field type: ",n==null?void 0:n.type]})})},_O=d.memo(ose),sse=({nodeId:e,fieldName:t})=>{const n=ee(),{isMouseOverNode:r,handleMouseOut:o,handleMouseOver:s}=uO(e),{t:i}=Z(),l=d.useCallback(()=>{n(o5({nodeId:e,fieldName:t}))},[n,t,e]);return a.jsxs($,{onMouseEnter:s,onMouseLeave:o,layerStyle:"second",sx:{position:"relative",borderRadius:"base",w:"full",p:2},children:[a.jsxs(sn,{as:$,sx:{flexDir:"column",gap:1,flexShrink:1},children:[a.jsxs(Hn,{sx:{display:"flex",alignItems:"center",mb:0},children:[a.jsx(hO,{nodeId:e,fieldName:t,kind:"input"}),a.jsx(Za,{}),a.jsx(Rt,{label:a.jsx(Ly,{nodeId:e,fieldName:t,kind:"input"}),openDelay:xm,placement:"top",hasArrow:!0,children:a.jsx($,{h:"full",alignItems:"center",children:a.jsx(Tn,{as:TE})})}),a.jsx(Te,{"aria-label":i("nodes.removeLinearView"),tooltip:i("nodes.removeLinearView"),variant:"ghost",size:"sm",onClick:l,icon:a.jsx(Kr,{})})]}),a.jsx(_O,{nodeId:e,fieldName:t})]}),a.jsx(cO,{isSelected:!1,isHovered:r})]})},ase=d.memo(sse),ise=ie(xe,({nodes:e})=>({fields:e.workflow.exposedFields}),we),lse=()=>{const{fields:e}=L(ise),{t}=Z();return a.jsx(Ie,{sx:{position:"relative",w:"full",h:"full"},children:a.jsx(Ty,{children:a.jsx($,{sx:{position:"relative",flexDir:"column",alignItems:"flex-start",p:1,gap:2,h:"full",w:"full"},children:e.length?e.map(({nodeId:n,fieldName:r})=>a.jsx(ase,{nodeId:n,fieldName:r},`${n}.${r}`)):a.jsx(Kn,{label:t("nodes.noFieldsLinearview"),icon:null})})})})},cse=d.memo(lse),use=()=>a.jsx($,{layerStyle:"first",sx:{flexDir:"column",w:"full",h:"full",borderRadius:"base",p:2,gap:2},children:a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:"Linear"}),a.jsx(Pr,{children:"Details"}),a.jsx(Pr,{children:"JSON"})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:a.jsx(cse,{})}),a.jsx(mo,{children:a.jsx(ioe,{})}),a.jsx(mo,{children:a.jsx(foe,{})})]})]})}),dse=d.memo(use),fse=()=>{const[e,t]=d.useState(!1),[n,r]=d.useState(!1),o=d.useRef(null),s=Ny(),i=d.useCallback(()=>{o.current&&o.current.setLayout([50,50])},[]);return a.jsxs($,{sx:{flexDir:"column",gap:2,height:"100%",width:"100%"},children:[a.jsx(XM,{}),a.jsxs(Sg,{ref:o,id:"workflow-panel-group",direction:"vertical",style:{height:"100%",width:"100%"},storage:s,children:[a.jsx(Ua,{id:"workflow",collapsible:!0,onCollapse:t,minSize:25,children:a.jsx(dse,{})}),a.jsx(im,{direction:"vertical",onDoubleClick:i,collapsedDirection:e?"top":n?"bottom":void 0}),a.jsx(Ua,{id:"inspector",collapsible:!0,onCollapse:r,minSize:25,children:a.jsx(toe,{})})]})]})},pse=d.memo(fse),M_=(e,t)=>{const n=d.useRef(null),[r,o]=d.useState(()=>{var p;return!!((p=n.current)!=null&&p.getCollapsed())}),s=d.useCallback(()=>{var p;(p=n.current)!=null&&p.getCollapsed()?Fr.flushSync(()=>{var h;(h=n.current)==null||h.expand()}):Fr.flushSync(()=>{var h;(h=n.current)==null||h.collapse()})},[]),i=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.expand()})},[]),l=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.collapse()})},[]),u=d.useCallback(()=>{Fr.flushSync(()=>{var p;(p=n.current)==null||p.resize(e,t)})},[e,t]);return{ref:n,minSize:e,isCollapsed:r,setIsCollapsed:o,reset:u,toggle:s,expand:i,collapse:l}},hse=({isGalleryCollapsed:e,galleryPanelRef:t})=>{const{t:n}=Z(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(_d,{children:a.jsx($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineEnd:"1.63rem",children:a.jsx(Te,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":n("common.showGalleryPanel"),onClick:r,icon:a.jsx($ne,{}),sx:{p:0,px:3,h:48,borderStartEndRadius:0,borderEndEndRadius:0,shadow:"2xl"}})})}):null},mse=d.memo(hse),Gv={borderStartStartRadius:0,borderEndStartRadius:0,shadow:"2xl"},gse=({isSidePanelCollapsed:e,sidePanelRef:t})=>{const{t:n}=Z(),r=()=>{var o;(o=t.current)==null||o.expand()};return e?a.jsx(_d,{children:a.jsxs($,{pos:"absolute",transform:"translate(0, -50%)",minW:8,top:"50%",insetInlineStart:"5.13rem",direction:"column",gap:2,children:[a.jsx(Te,{tooltip:"Show Side Panel (O, T)","aria-label":n("common.showOptionsPanel"),onClick:r,sx:Gv,icon:a.jsx(HE,{})}),a.jsx(qM,{asIconButton:!0,sx:Gv}),a.jsx(KM,{sx:Gv,asIconButton:!0})]})}):null},vse=d.memo(gse),bse=e=>{const{label:t,activeLabel:n,children:r,defaultIsOpen:o=!1}=e,{isOpen:s,onToggle:i}=Mr({defaultIsOpen:o}),{colorMode:l}=la();return a.jsxs(Ie,{children:[a.jsxs($,{onClick:i,sx:{alignItems:"center",p:2,px:4,gap:2,borderTopRadius:"base",borderBottomRadius:s?0:"base",bg:Ae("base.250","base.750")(l),color:Ae("base.900","base.100")(l),_hover:{bg:Ae("base.300","base.700")(l)},fontSize:"sm",fontWeight:600,cursor:"pointer",transitionProperty:"common",transitionDuration:"normal",userSelect:"none"},children:[t,a.jsx(nr,{children:n&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},children:a.jsx(ye,{sx:{color:"accent.500",_dark:{color:"accent.300"}},children:n})},"statusText")}),a.jsx(Za,{}),a.jsx(dg,{sx:{w:"1rem",h:"1rem",transform:s?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})]}),a.jsx(wm,{in:s,animateOpacity:!0,style:{overflow:"unset"},children:a.jsx(Ie,{sx:{p:4,pb:4,borderBottomRadius:"base",bg:"base.150",_dark:{bg:"base.800"}},children:r})})]})},hr=d.memo(bse),xse=ie(xe,e=>{const{combinatorial:t,isEnabled:n}=e.dynamicPrompts;return{combinatorial:t,isDisabled:!n}},we),yse=()=>{const{combinatorial:e,isDisabled:t}=L(xse),n=ee(),{t:r}=Z(),o=d.useCallback(()=>{n(mR())},[n]);return a.jsx(Vt,{isDisabled:t,label:r("prompt.combinatorial"),isChecked:e,onChange:o})},Cse=d.memo(yse),wse=ie(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{isEnabled:t}},we),Sse=()=>{const e=ee(),{isEnabled:t}=L(wse),{t:n}=Z(),r=d.useCallback(()=>{e(gR())},[e]);return a.jsx(Vt,{label:n("prompt.enableDynamicPrompts"),isChecked:t,onChange:r})},kse=d.memo(Sse),_se=ie(xe,e=>{const{maxPrompts:t,combinatorial:n,isEnabled:r}=e.dynamicPrompts,{min:o,sliderMax:s,inputMax:i}=e.config.sd.dynamicPrompts.maxPrompts;return{maxPrompts:t,min:o,sliderMax:s,inputMax:i,isDisabled:!r||!n}},we),jse=()=>{const{maxPrompts:e,min:t,sliderMax:n,inputMax:r,isDisabled:o}=L(_se),s=ee(),{t:i}=Z(),l=d.useCallback(p=>{s(vR(p))},[s]),u=d.useCallback(()=>{s(bR())},[s]);return a.jsx(Xe,{label:i("prompt.maxPrompts"),isDisabled:o,min:t,max:n,value:e,onChange:l,sliderNumberInputProps:{max:r},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},Pse=d.memo(jse),Ise=ie(xe,e=>{const{isEnabled:t}=e.dynamicPrompts;return{activeLabel:t?"Enabled":void 0}},we),Ese=()=>{const{activeLabel:e}=L(Ise),{t}=Z();return Xt("dynamicPrompting").isFeatureEnabled?a.jsx(hr,{label:t("prompt.dynamicPrompts"),activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(kse,{}),a.jsx(Cse,{}),a.jsx(Pse,{})]})}):null},Kc=d.memo(Ese),Mse=e=>{const t=ee(),{lora:n}=e,r=d.useCallback(i=>{t(xR({id:n.id,weight:i}))},[t,n.id]),o=d.useCallback(()=>{t(yR(n.id))},[t,n.id]),s=d.useCallback(()=>{t(CR(n.id))},[t,n.id]);return a.jsxs($,{sx:{gap:2.5,alignItems:"flex-end"},children:[a.jsx(Xe,{label:n.model_name,value:n.weight,onChange:r,min:-1,max:2,step:.01,withInput:!0,withReset:!0,handleReset:o,withSliderMarks:!0,sliderMarks:[-1,0,1,2],sliderNumberInputProps:{min:-50,max:50}}),a.jsx(Te,{size:"sm",onClick:s,tooltip:"Remove LoRA","aria-label":"Remove LoRA",icon:a.jsx(Kr,{}),colorScheme:"error"})]})},Ose=d.memo(Mse),Dse=ie(xe,({lora:e})=>({lorasArray:rr(e.loras)}),we),Rse=()=>{const{lorasArray:e}=L(Dse);return a.jsx(a.Fragment,{children:e.map((t,n)=>a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[n>0&&a.jsx(Vr,{pt:1}),a.jsx(Ose,{lora:t})]},t.model_name))})},Ase=d.memo(Rse),Nse=ie(xe,({lora:e})=>({loras:e.loras}),we),Tse=()=>{const e=ee(),{loras:t}=L(Nse),{data:n}=Cd(),r=L(i=>i.generation.model),o=d.useMemo(()=>{if(!n)return[];const i=[];return Pn(n.entities,(l,u)=>{if(!l||u in t)return;const p=(r==null?void 0:r.base_model)!==l.base_model;i.push({value:u,label:l.model_name,disabled:p,group:on[l.base_model],tooltip:p?`Incompatible base model: ${l.base_model}`:void 0})}),i.sort((l,u)=>l.label&&!u.label?1:-1),i.sort((l,u)=>l.disabled&&!u.disabled?1:-1)},[t,n,r==null?void 0:r.base_model]),s=d.useCallback(i=>{if(!i)return;const l=n==null?void 0:n.entities[i];l&&e(wR(l))},[e,n==null?void 0:n.entities]);return(n==null?void 0:n.ids.length)===0?a.jsx($,{sx:{justifyContent:"center",p:2},children:a.jsx(ye,{sx:{fontSize:"sm",color:"base.500",_dark:"base.700"},children:"No LoRAs Loaded"})}):a.jsx(Kt,{placeholder:o.length===0?"All LoRAs added":"Add LoRA",value:null,data:o,nothingFound:"No matching LoRAs",itemComponent:ri,disabled:o.length===0,filter:(i,l)=>{var u;return((u=l.label)==null?void 0:u.toLowerCase().includes(i.toLowerCase().trim()))||l.value.toLowerCase().includes(i.toLowerCase().trim())},onChange:s})},$se=d.memo(Tse),Lse=ie(xe,e=>{const t=s5(e.lora.loras);return{activeLabel:t>0?`${t} Active`:void 0}},we),zse=()=>{const{activeLabel:e}=L(Lse);return Xt("lora").isFeatureEnabled?a.jsx(hr,{label:"LoRA",activeLabel:e,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsx($se,{}),a.jsx(Ase,{})]})}):null},qc=d.memo(zse),Fse=ie(xe,({generation:e})=>{const{model:t}=e;return{mainModel:t}},we),Bse=e=>{const{controlNetId:t,model:n,isEnabled:r}=e.controlNet,o=ee(),s=L(En),{mainModel:i}=L(Fse),{t:l}=Z(),{data:u}=Gb(),p=d.useMemo(()=>{if(!u)return[];const v=[];return Pn(u.entities,(b,y)=>{if(!b)return;const x=(b==null?void 0:b.base_model)!==(i==null?void 0:i.base_model);v.push({value:y,label:b.model_name,group:on[b.base_model],disabled:x,tooltip:x?`${l("controlnet.incompatibleBaseModel")} ${b.base_model}`:void 0})}),v},[u,i==null?void 0:i.base_model,l]),h=d.useMemo(()=>(u==null?void 0:u.entities[`${n==null?void 0:n.base_model}/controlnet/${n==null?void 0:n.model_name}`])??null,[n==null?void 0:n.base_model,n==null?void 0:n.model_name,u==null?void 0:u.entities]),m=d.useCallback(v=>{if(!v)return;const b=yO(v);b&&o(a5({controlNetId:t,model:b}))},[t,o]);return a.jsx(Kt,{itemComponent:ri,data:p,error:!h||(i==null?void 0:i.base_model)!==h.base_model,placeholder:l("controlnet.selectModel"),value:(h==null?void 0:h.id)??null,onChange:m,disabled:s||!r,tooltip:h==null?void 0:h.description})},Hse=d.memo(Bse),Wse=e=>{const{weight:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=d.useCallback(l=>{o(SR({controlNetId:r,weight:l}))},[r,o]);return a.jsx(Xe,{isDisabled:!n,label:s("controlnet.weight"),value:t,onChange:i,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2]})},Vse=d.memo(Wse),Use=ie(xe,({controlNet:e,gallery:t})=>{const{pendingControlImages:n}=e,{autoAddBoardId:r}=t;return{pendingControlImages:n,autoAddBoardId:r}},we),Gse=({isSmall:e,controlNet:t})=>{const{controlImage:n,processedControlImage:r,processorType:o,isEnabled:s,controlNetId:i}=t,l=ee(),{t:u}=Z(),{pendingControlImages:p,autoAddBoardId:h}=L(Use),m=L(wn),[v,b]=d.useState(!1),{currentData:y}=Wr(n??Er.skipToken),{currentData:x}=Wr(r??Er.skipToken),[w]=kR(),[k]=_R(),[_]=jR(),j=d.useCallback(()=>{l(PR({controlNetId:i,controlImage:null}))},[i,l]),I=d.useCallback(async()=>{x&&(await w({imageDTO:x,is_intermediate:!1}).unwrap(),h!=="none"?k({imageDTO:x,board_id:h}):_({imageDTO:x}))},[x,w,h,k,_]),E=d.useCallback(()=>{y&&(m==="unifiedCanvas"?l(No({width:y.width,height:y.height})):(l(Ti(y.width)),l($i(y.height))))},[y,m,l]),M=d.useCallback(()=>{b(!0)},[]),D=d.useCallback(()=>{b(!1)},[]),R=d.useMemo(()=>{if(y)return{id:i,payloadType:"IMAGE_DTO",payload:{imageDTO:y}}},[y,i]),A=d.useMemo(()=>({id:i,actionType:"SET_CONTROLNET_IMAGE",context:{controlNetId:i}}),[i]),O=d.useMemo(()=>({type:"SET_CONTROLNET_IMAGE",controlNetId:i}),[i]),T=y&&x&&!v&&!p.includes(i)&&o!=="none";return a.jsxs($,{onMouseEnter:M,onMouseLeave:D,sx:{position:"relative",w:"full",h:e?28:366,alignItems:"center",justifyContent:"center",pointerEvents:s?"auto":"none",opacity:s?1:.5},children:[a.jsx(oa,{draggableData:R,droppableData:A,imageDTO:y,isDropDisabled:T||!s,postUploadAction:O}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",opacity:T?1:0,transitionProperty:"common",transitionDuration:"normal",pointerEvents:"none"},children:a.jsx(oa,{draggableData:R,droppableData:A,imageDTO:x,isUploadDisabled:!0,isDropDisabled:!s})}),a.jsxs(a.Fragment,{children:[a.jsx(Di,{onClick:j,icon:y?a.jsx(Ud,{}):void 0,tooltip:u("controlnet.resetControlImage")}),a.jsx(Di,{onClick:I,icon:y?a.jsx(rg,{size:16}):void 0,tooltip:u("controlnet.saveControlImage"),styleOverrides:{marginTop:6}}),a.jsx(Di,{onClick:E,icon:y?a.jsx(qZ,{size:16}):void 0,tooltip:u("controlnet.setControlImageDimensions"),styleOverrides:{marginTop:12}})]}),p.includes(i)&&a.jsx($,{sx:{position:"absolute",top:0,insetInlineStart:0,w:"full",h:"full",alignItems:"center",justifyContent:"center",opacity:.8,borderRadius:"base",bg:"base.400",_dark:{bg:"base.900"}},children:a.jsx(Xi,{size:"xl",sx:{color:"base.100",_dark:{color:"base.400"}}})})]})},O_=d.memo(Gse),qo=()=>{const e=ee();return d.useCallback((n,r)=>{e(IR({controlNetId:n,changes:r}))},[e])};function Xo(e){return a.jsx($,{sx:{flexDirection:"column",gap:2},children:e.children})}const D_=bo.canny_image_processor.default,Kse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{low_threshold:o,high_threshold:s}=n,i=L(En),l=qo(),{t:u}=Z(),p=d.useCallback(b=>{l(t,{low_threshold:b})},[t,l]),h=d.useCallback(()=>{l(t,{low_threshold:D_.low_threshold})},[t,l]),m=d.useCallback(b=>{l(t,{high_threshold:b})},[t,l]),v=d.useCallback(()=>{l(t,{high_threshold:D_.high_threshold})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{isDisabled:i||!r,label:u("controlnet.lowThreshold"),value:o,onChange:p,handleReset:h,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0}),a.jsx(Xe,{isDisabled:i||!r,label:u("controlnet.highThreshold"),value:s,onChange:m,handleReset:v,withReset:!0,min:0,max:255,withInput:!0,withSliderMarks:!0})]})},qse=d.memo(Kse),ju=bo.content_shuffle_image_processor.default,Xse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,w:i,h:l,f:u}=n,p=qo(),h=L(En),{t:m}=Z(),v=d.useCallback(M=>{p(t,{detect_resolution:M})},[t,p]),b=d.useCallback(()=>{p(t,{detect_resolution:ju.detect_resolution})},[t,p]),y=d.useCallback(M=>{p(t,{image_resolution:M})},[t,p]),x=d.useCallback(()=>{p(t,{image_resolution:ju.image_resolution})},[t,p]),w=d.useCallback(M=>{p(t,{w:M})},[t,p]),k=d.useCallback(()=>{p(t,{w:ju.w})},[t,p]),_=d.useCallback(M=>{p(t,{h:M})},[t,p]),j=d.useCallback(()=>{p(t,{h:ju.h})},[t,p]),I=d.useCallback(M=>{p(t,{f:M})},[t,p]),E=d.useCallback(()=>{p(t,{f:ju.f})},[t,p]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:m("controlnet.detectResolution"),value:s,onChange:v,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.imageResolution"),value:o,onChange:y,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.w"),value:i,onChange:w,handleReset:k,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.h"),value:l,onChange:_,handleReset:j,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r}),a.jsx(Xe,{label:m("controlnet.f"),value:u,onChange:I,handleReset:E,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:h||!r})]})},Yse=d.memo(Xse),R_=bo.hed_image_processor.default,Qse=e=>{const{controlNetId:t,processorNode:{detect_resolution:n,image_resolution:r,scribble:o},isEnabled:s}=e,i=L(En),l=qo(),{t:u}=Z(),p=d.useCallback(y=>{l(t,{detect_resolution:y})},[t,l]),h=d.useCallback(y=>{l(t,{image_resolution:y})},[t,l]),m=d.useCallback(y=>{l(t,{scribble:y.target.checked})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:R_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:R_.image_resolution})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:n,onChange:p,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:r,onChange:h,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:i||!s}),a.jsx(Vt,{label:u("controlnet.scribble"),isChecked:o,onChange:m,isDisabled:i||!s})]})},Zse=d.memo(Qse),A_=bo.lineart_anime_image_processor.default,Jse=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{detect_resolution:b})},[t,i]),h=d.useCallback(b=>{i(t,{image_resolution:b})},[t,i]),m=d.useCallback(()=>{i(t,{detect_resolution:A_.detect_resolution})},[t,i]),v=d.useCallback(()=>{i(t,{image_resolution:A_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},eae=d.memo(Jse),N_=bo.lineart_image_processor.default,tae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,coarse:i}=n,l=qo(),u=L(En),{t:p}=Z(),h=d.useCallback(x=>{l(t,{detect_resolution:x})},[t,l]),m=d.useCallback(x=>{l(t,{image_resolution:x})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:N_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:N_.image_resolution})},[t,l]),y=d.useCallback(x=>{l(t,{coarse:x.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:p("controlnet.detectResolution"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Xe,{label:p("controlnet.imageResolution"),value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Vt,{label:p("controlnet.coarse"),isChecked:i,onChange:y,isDisabled:u||!r})]})},nae=d.memo(tae),T_=bo.mediapipe_face_processor.default,rae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{max_faces:o,min_confidence:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{max_faces:b})},[t,i]),h=d.useCallback(b=>{i(t,{min_confidence:b})},[t,i]),m=d.useCallback(()=>{i(t,{max_faces:T_.max_faces})},[t,i]),v=d.useCallback(()=>{i(t,{min_confidence:T_.min_confidence})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.maxFaces"),value:o,onChange:p,handleReset:m,withReset:!0,min:1,max:20,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.minConfidence"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},oae=d.memo(rae),$_=bo.midas_depth_image_processor.default,sae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{a_mult:o,bg_th:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{a_mult:b})},[t,i]),h=d.useCallback(b=>{i(t,{bg_th:b})},[t,i]),m=d.useCallback(()=>{i(t,{a_mult:$_.a_mult})},[t,i]),v=d.useCallback(()=>{i(t,{bg_th:$_.bg_th})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.amult"),value:o,onChange:p,handleReset:m,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.bgth"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:20,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},aae=d.memo(sae),Mp=bo.mlsd_image_processor.default,iae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,thr_d:i,thr_v:l}=n,u=qo(),p=L(En),{t:h}=Z(),m=d.useCallback(j=>{u(t,{detect_resolution:j})},[t,u]),v=d.useCallback(j=>{u(t,{image_resolution:j})},[t,u]),b=d.useCallback(j=>{u(t,{thr_d:j})},[t,u]),y=d.useCallback(j=>{u(t,{thr_v:j})},[t,u]),x=d.useCallback(()=>{u(t,{detect_resolution:Mp.detect_resolution})},[t,u]),w=d.useCallback(()=>{u(t,{image_resolution:Mp.image_resolution})},[t,u]),k=d.useCallback(()=>{u(t,{thr_d:Mp.thr_d})},[t,u]),_=d.useCallback(()=>{u(t,{thr_v:Mp.thr_v})},[t,u]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:h("controlnet.detectResolution"),value:s,onChange:m,handleReset:x,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.imageResolution"),value:o,onChange:v,handleReset:w,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.w"),value:i,onChange:b,handleReset:k,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.h"),value:l,onChange:y,handleReset:_,withReset:!0,min:0,max:1,step:.01,withInput:!0,withSliderMarks:!0,isDisabled:p||!r})]})},lae=d.memo(iae),L_=bo.normalbae_image_processor.default,cae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s}=n,i=qo(),l=L(En),{t:u}=Z(),p=d.useCallback(b=>{i(t,{detect_resolution:b})},[t,i]),h=d.useCallback(b=>{i(t,{image_resolution:b})},[t,i]),m=d.useCallback(()=>{i(t,{detect_resolution:L_.detect_resolution})},[t,i]),v=d.useCallback(()=>{i(t,{image_resolution:L_.image_resolution})},[t,i]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:u("controlnet.detectResolution"),value:s,onChange:p,handleReset:m,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r}),a.jsx(Xe,{label:u("controlnet.imageResolution"),value:o,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:l||!r})]})},uae=d.memo(cae),z_=bo.openpose_image_processor.default,dae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,hand_and_face:i}=n,l=qo(),u=L(En),{t:p}=Z(),h=d.useCallback(x=>{l(t,{detect_resolution:x})},[t,l]),m=d.useCallback(x=>{l(t,{image_resolution:x})},[t,l]),v=d.useCallback(()=>{l(t,{detect_resolution:z_.detect_resolution})},[t,l]),b=d.useCallback(()=>{l(t,{image_resolution:z_.image_resolution})},[t,l]),y=d.useCallback(x=>{l(t,{hand_and_face:x.target.checked})},[t,l]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:p("controlnet.detectResolution"),value:s,onChange:h,handleReset:v,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Xe,{label:p("controlnet.imageResolution"),value:o,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:u||!r}),a.jsx(Vt,{label:p("controlnet.handAndFace"),isChecked:i,onChange:y,isDisabled:u||!r})]})},fae=d.memo(dae),F_=bo.pidi_image_processor.default,pae=e=>{const{controlNetId:t,processorNode:n,isEnabled:r}=e,{image_resolution:o,detect_resolution:s,scribble:i,safe:l}=n,u=qo(),p=L(En),{t:h}=Z(),m=d.useCallback(k=>{u(t,{detect_resolution:k})},[t,u]),v=d.useCallback(k=>{u(t,{image_resolution:k})},[t,u]),b=d.useCallback(()=>{u(t,{detect_resolution:F_.detect_resolution})},[t,u]),y=d.useCallback(()=>{u(t,{image_resolution:F_.image_resolution})},[t,u]),x=d.useCallback(k=>{u(t,{scribble:k.target.checked})},[t,u]),w=d.useCallback(k=>{u(t,{safe:k.target.checked})},[t,u]);return a.jsxs(Xo,{children:[a.jsx(Xe,{label:h("controlnet.detectResolution"),value:s,onChange:m,handleReset:b,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Xe,{label:h("controlnet.imageResolution"),value:o,onChange:v,handleReset:y,withReset:!0,min:0,max:4096,withInput:!0,withSliderMarks:!0,isDisabled:p||!r}),a.jsx(Vt,{label:h("controlnet.scribble"),isChecked:i,onChange:x}),a.jsx(Vt,{label:h("controlnet.safe"),isChecked:l,onChange:w,isDisabled:p||!r})]})},hae=d.memo(pae),mae=e=>null,gae=d.memo(mae),vae=e=>{const{controlNetId:t,isEnabled:n,processorNode:r}=e.controlNet;return r.type==="canny_image_processor"?a.jsx(qse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="hed_image_processor"?a.jsx(Zse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_image_processor"?a.jsx(nae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="content_shuffle_image_processor"?a.jsx(Yse,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="lineart_anime_image_processor"?a.jsx(eae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mediapipe_face_processor"?a.jsx(oae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="midas_depth_image_processor"?a.jsx(aae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="mlsd_image_processor"?a.jsx(lae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="normalbae_image_processor"?a.jsx(uae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="openpose_image_processor"?a.jsx(fae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="pidi_image_processor"?a.jsx(hae,{controlNetId:t,processorNode:r,isEnabled:n}):r.type==="zoe_depth_image_processor"?a.jsx(gae,{controlNetId:t,processorNode:r,isEnabled:n}):null},bae=d.memo(vae),xae=e=>{const{controlNetId:t,isEnabled:n,shouldAutoConfig:r}=e.controlNet,o=ee(),s=L(En),{t:i}=Z(),l=d.useCallback(()=>{o(ER({controlNetId:t}))},[t,o]);return a.jsx(Vt,{label:i("controlnet.autoConfigure"),"aria-label":i("controlnet.autoConfigure"),isChecked:r,onChange:l,isDisabled:s||!n})},yae=d.memo(xae),Cae=e=>{const{controlNet:t}=e,n=ee(),{t:r}=Z(),o=d.useCallback(()=>{n(MR({controlNet:t}))},[t,n]),s=d.useCallback(()=>{n(OR({controlNet:t}))},[t,n]);return a.jsxs($,{sx:{gap:2},children:[a.jsx(Te,{size:"sm",icon:a.jsx(Ui,{}),tooltip:r("controlnet.importImageFromCanvas"),"aria-label":r("controlnet.importImageFromCanvas"),onClick:o}),a.jsx(Te,{size:"sm",icon:a.jsx(zE,{}),tooltip:r("controlnet.importMaskFromCanvas"),"aria-label":r("controlnet.importMaskFromCanvas"),onClick:s})]})},wae=d.memo(Cae),B_=e=>`${Math.round(e*100)}%`,Sae=e=>{const{beginStepPct:t,endStepPct:n,isEnabled:r,controlNetId:o}=e.controlNet,s=ee(),{t:i}=Z(),l=d.useCallback(u=>{s(DR({controlNetId:o,beginStepPct:u[0]})),s(RR({controlNetId:o,endStepPct:u[1]}))},[o,s]);return a.jsxs(sn,{isDisabled:!r,children:[a.jsx(Hn,{children:i("controlnet.beginEndStepPercent")}),a.jsx(Om,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(Nx,{"aria-label":["Begin Step %","End Step %!"],value:[t,n],onChange:l,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!r,children:[a.jsx(Tx,{children:a.jsx($x,{})}),a.jsx(Rt,{label:B_(t),placement:"top",hasArrow:!0,children:a.jsx(od,{index:0})}),a.jsx(Rt,{label:B_(n),placement:"top",hasArrow:!0,children:a.jsx(od,{index:1})}),a.jsx(Pi,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(Pi,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(Pi,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},kae=d.memo(Sae);function _ae(e){const{controlMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=[{label:s("controlnet.balanced"),value:"balanced"},{label:s("controlnet.prompt"),value:"more_prompt"},{label:s("controlnet.control"),value:"more_control"},{label:s("controlnet.megaControl"),value:"unbalanced"}],l=d.useCallback(u=>{o(AR({controlNetId:r,controlMode:u}))},[r,o]);return a.jsx(In,{disabled:!n,label:s("controlnet.controlMode"),data:i,value:String(t),onChange:l})}const jae=ie(Oy,e=>rr(bo,n=>({value:n.type,label:n.label})).sort((n,r)=>n.value==="none"?-1:r.value==="none"?1:n.label.localeCompare(r.label)).filter(n=>!e.sd.disabledControlNetProcessors.includes(n.value)),we),Pae=e=>{const t=ee(),{controlNetId:n,isEnabled:r,processorNode:o}=e.controlNet,s=L(En),i=L(jae),{t:l}=Z(),u=d.useCallback(p=>{t(NR({controlNetId:n,processorType:p}))},[n,t]);return a.jsx(Kt,{label:l("controlnet.processor"),value:o.type??"canny_image_processor",data:i,onChange:u,disabled:s||!r})},Iae=d.memo(Pae);function Eae(e){const{resizeMode:t,isEnabled:n,controlNetId:r}=e.controlNet,o=ee(),{t:s}=Z(),i=[{label:s("controlnet.resize"),value:"just_resize"},{label:s("controlnet.crop"),value:"crop_resize"},{label:s("controlnet.fill"),value:"fill_resize"}],l=d.useCallback(u=>{o(TR({controlNetId:r,resizeMode:u}))},[r,o]);return a.jsx(In,{disabled:!n,label:s("controlnet.resizeMode"),data:i,value:String(t),onChange:l})}const Mae=e=>{const{controlNet:t}=e,{controlNetId:n}=t,r=ee(),{t:o}=Z(),s=L(wn),i=ie(xe,({controlNet:y})=>{const x=y.controlNets[n];if(!x)return{isEnabled:!1,shouldAutoConfig:!1};const{isEnabled:w,shouldAutoConfig:k}=x;return{isEnabled:w,shouldAutoConfig:k}},we),{isEnabled:l,shouldAutoConfig:u}=L(i),[p,h]=sJ(!1),m=d.useCallback(()=>{r($R({controlNetId:n}))},[n,r]),v=d.useCallback(()=>{r(LR({sourceControlNetId:n,newControlNetId:Ba()}))},[n,r]),b=d.useCallback(()=>{r(zR({controlNetId:n}))},[n,r]);return a.jsxs($,{sx:{flexDir:"column",gap:3,p:2,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsxs($,{sx:{gap:2,alignItems:"center"},children:[a.jsx(Vt,{tooltip:o("controlnet.toggleControlNet"),"aria-label":o("controlnet.toggleControlNet"),isChecked:l,onChange:b}),a.jsx(Ie,{sx:{w:"full",minW:0,opacity:l?1:.5,pointerEvents:l?"auto":"none",transitionProperty:"common",transitionDuration:"0.1s"},children:a.jsx(Hse,{controlNet:t})}),s==="unifiedCanvas"&&a.jsx(wae,{controlNet:t}),a.jsx(Te,{size:"sm",tooltip:o("controlnet.duplicate"),"aria-label":o("controlnet.duplicate"),onClick:v,icon:a.jsx(Wc,{})}),a.jsx(Te,{size:"sm",tooltip:o("controlnet.delete"),"aria-label":o("controlnet.delete"),colorScheme:"error",onClick:m,icon:a.jsx(Kr,{})}),a.jsx(Te,{size:"sm",tooltip:o(p?"controlnet.hideAdvanced":"controlnet.showAdvanced"),"aria-label":o(p?"controlnet.hideAdvanced":"controlnet.showAdvanced"),onClick:h,variant:"ghost",sx:{_hover:{bg:"none"}},icon:a.jsx(dg,{sx:{boxSize:4,color:"base.700",transform:p?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal",_dark:{color:"base.300"}}})}),!u&&a.jsx(Ie,{sx:{position:"absolute",w:1.5,h:1.5,borderRadius:"full",top:4,insetInlineEnd:4,bg:"accent.700",_dark:{bg:"accent.400"}}})]}),a.jsxs($,{sx:{w:"full",flexDirection:"column",gap:3},children:[a.jsxs($,{sx:{gap:4,w:"full",alignItems:"center"},children:[a.jsxs($,{sx:{flexDir:"column",gap:3,h:28,w:"full",paddingInlineStart:1,paddingInlineEnd:p?1:0,pb:2,justifyContent:"space-between"},children:[a.jsx(Vse,{controlNet:t}),a.jsx(kae,{controlNet:t})]}),!p&&a.jsx($,{sx:{alignItems:"center",justifyContent:"center",h:28,w:28,aspectRatio:"1/1"},children:a.jsx(O_,{controlNet:t,isSmall:!0})})]}),a.jsxs($,{sx:{gap:2},children:[a.jsx(_ae,{controlNet:t}),a.jsx(Eae,{controlNet:t})]}),a.jsx(Iae,{controlNet:t})]}),p&&a.jsxs(a.Fragment,{children:[a.jsx(O_,{controlNet:t}),a.jsx(yae,{controlNet:t}),a.jsx(bae,{controlNet:t})]})]})},Oae=d.memo(Mae),H_=e=>`${Math.round(e*100)}%`,Dae=()=>{const e=L(i=>i.controlNet.isIPAdapterEnabled),t=L(i=>i.controlNet.ipAdapterInfo.beginStepPct),n=L(i=>i.controlNet.ipAdapterInfo.endStepPct),r=ee(),{t:o}=Z(),s=d.useCallback(i=>{r(FR(i[0])),r(BR(i[1]))},[r]);return a.jsxs(sn,{isDisabled:!e,children:[a.jsx(Hn,{children:o("controlnet.beginEndStepPercent")}),a.jsx(Om,{w:"100%",gap:2,alignItems:"center",children:a.jsxs(Nx,{"aria-label":["Begin Step %","End Step %!"],value:[t,n],onChange:s,min:0,max:1,step:.01,minStepsBetweenThumbs:5,isDisabled:!e,children:[a.jsx(Tx,{children:a.jsx($x,{})}),a.jsx(Rt,{label:H_(t),placement:"top",hasArrow:!0,children:a.jsx(od,{index:0})}),a.jsx(Rt,{label:H_(n),placement:"top",hasArrow:!0,children:a.jsx(od,{index:1})}),a.jsx(Pi,{value:0,sx:{insetInlineStart:"0 !important",insetInlineEnd:"unset !important"},children:"0%"}),a.jsx(Pi,{value:.5,sx:{insetInlineStart:"50% !important",transform:"translateX(-50%)"},children:"50%"}),a.jsx(Pi,{value:1,sx:{insetInlineStart:"unset !important",insetInlineEnd:"0 !important"},children:"100%"})]})})]})},Rae=d.memo(Dae),Aae=ie(xe,e=>{const{isIPAdapterEnabled:t}=e.controlNet;return{isIPAdapterEnabled:t}},we),Nae=()=>{const{isIPAdapterEnabled:e}=L(Aae),t=ee(),{t:n}=Z(),r=d.useCallback(()=>{t(HR())},[t]);return a.jsx(Vt,{label:n("controlnet.enableIPAdapter"),isChecked:e,onChange:r,formControlProps:{width:"100%"}})},Tae=d.memo(Nae),$ae=()=>{var u;const e=L(p=>p.controlNet.ipAdapterInfo),t=L(p=>p.controlNet.isIPAdapterEnabled),n=ee(),{t:r}=Z(),{currentData:o}=Wr(((u=e.adapterImage)==null?void 0:u.image_name)??Er.skipToken),s=d.useMemo(()=>{if(o)return{id:"ip-adapter-image",payloadType:"IMAGE_DTO",payload:{imageDTO:o}}},[o]),i=d.useMemo(()=>({id:"ip-adapter-image",actionType:"SET_IP_ADAPTER_IMAGE"}),[]),l=d.useMemo(()=>({type:"SET_IP_ADAPTER_IMAGE"}),[]);return a.jsxs($,{sx:{position:"relative",w:"full",alignItems:"center",justifyContent:"center"},children:[a.jsx(oa,{imageDTO:o,droppableData:i,draggableData:s,postUploadAction:l,isUploadDisabled:!t,isDropDisabled:!t,dropLabel:r("toast.setIPAdapterImage"),noContentFallback:a.jsx(Kn,{label:r("controlnet.ipAdapterImageFallback")})}),a.jsx(Di,{onClick:()=>n(WR(null)),icon:e.adapterImage?a.jsx(Ud,{}):void 0,tooltip:r("controlnet.resetIPAdapterImage")})]})},Lae=d.memo($ae),zae=()=>{const e=L(u=>u.controlNet.ipAdapterInfo.model),t=L(u=>u.generation.model),n=ee(),{t:r}=Z(),{data:o}=r5(),s=d.useMemo(()=>(o==null?void 0:o.entities[`${e==null?void 0:e.base_model}/ip_adapter/${e==null?void 0:e.model_name}`])??null,[e==null?void 0:e.base_model,e==null?void 0:e.model_name,o==null?void 0:o.entities]),i=d.useMemo(()=>{if(!o)return[];const u=[];return Pn(o.entities,(p,h)=>{if(!p)return;const m=(t==null?void 0:t.base_model)!==p.base_model;u.push({value:h,label:p.model_name,group:on[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),u.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,t==null?void 0:t.base_model]),l=d.useCallback(u=>{if(!u)return;const p=kO(u);p&&n(VR(p))},[n]);return a.jsx(In,{label:r("controlnet.ipAdapterModel"),className:"nowheel nodrag",tooltip:s==null?void 0:s.description,value:(s==null?void 0:s.id)??null,placeholder:"Pick one",error:!s,data:i,onChange:l,sx:{width:"100%"}})},Fae=d.memo(zae),Bae=()=>{const e=L(i=>i.controlNet.isIPAdapterEnabled),t=L(i=>i.controlNet.ipAdapterInfo.weight),n=ee(),{t:r}=Z(),o=d.useCallback(i=>{n(ew(i))},[n]),s=d.useCallback(()=>{n(ew(1))},[n]);return a.jsx(Xe,{isDisabled:!e,label:r("controlnet.weight"),value:t,onChange:o,min:0,max:2,step:.01,withSliderMarks:!0,sliderMarks:[0,1,2],withReset:!0,handleReset:s})},Hae=d.memo(Bae),Wae=()=>a.jsxs($,{sx:{flexDir:"column",gap:3,paddingInline:3,paddingBlock:2,paddingBottom:5,borderRadius:"base",position:"relative",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(Tae,{}),a.jsx(Lae,{}),a.jsx(Fae,{}),a.jsx(Hae,{}),a.jsx(Rae,{})]}),Vae=d.memo(Wae),Uae=ie(xe,e=>{const{isEnabled:t}=e.controlNet;return{isEnabled:t}},we),Gae=()=>{const{isEnabled:e}=L(Uae),t=ee(),n=d.useCallback(()=>{t(UR())},[t]);return a.jsx(Vt,{label:"Enable ControlNet",isChecked:e,onChange:n,formControlProps:{width:"100%"}})},Kae=d.memo(Gae),qae=ie([xe],({controlNet:e})=>{const{controlNets:t,isEnabled:n,isIPAdapterEnabled:r}=e,o=GR(t);let s;return n&&o.length>0&&(s=`${o.length} ControlNet`),r&&(s?s=`${s}, IP Adapter`:s="IP Adapter"),{controlNetsArray:rr(t),activeLabel:s}},we),Xae=()=>{const{controlNetsArray:e,activeLabel:t}=L(qae),n=Xt("controlNet").isFeatureDisabled,r=ee(),{firstModel:o}=Gb(void 0,{selectFromResult:i=>({firstModel:i.data?KR.getSelectors().selectAll(i.data)[0]:void 0})}),s=d.useCallback(()=>{if(!o)return;const i=Ba();r(qR({controlNetId:i})),r(a5({controlNetId:i,model:o}))},[r,o]);return n?null:a.jsx(hr,{label:"Control Adapters",activeLabel:t,children:a.jsxs($,{sx:{flexDir:"column",gap:2},children:[a.jsxs($,{sx:{w:"100%",gap:2,p:2,ps:3,borderRadius:"base",alignItems:"center",bg:"base.250",_dark:{bg:"base.750"}},children:[a.jsx(Kae,{}),a.jsx(Te,{tooltip:"Add ControlNet","aria-label":"Add ControlNet",icon:a.jsx(ol,{}),isDisabled:!o,flexGrow:1,size:"sm",onClick:s})]}),e.map((i,l)=>a.jsxs(d.Fragment,{children:[l>0&&a.jsx(Vr,{}),a.jsx(Oae,{controlNet:i})]},i.controlNetId)),a.jsx(Vae,{})]})})},Xc=d.memo(Xae),Yae=ie(xe,e=>{const{shouldUseNoiseSettings:t,shouldUseCpuNoise:n}=e.generation;return{isDisabled:!t,shouldUseCpuNoise:n}},we),Qae=()=>{const e=ee(),{isDisabled:t,shouldUseCpuNoise:n}=L(Yae),{t:r}=Z(),o=s=>e(XR(s.target.checked));return a.jsx(Vt,{isDisabled:t,label:r("parameters.useCpuNoise"),isChecked:n,onChange:o})},Zae=ie(xe,e=>{const{shouldUseNoiseSettings:t,threshold:n}=e.generation;return{isDisabled:!t,threshold:n}},we);function Jae(){const e=ee(),{threshold:t,isDisabled:n}=L(Zae),{t:r}=Z();return a.jsx(Xe,{isDisabled:n,label:r("parameters.noiseThreshold"),min:0,max:20,step:.1,onChange:o=>e(tw(o)),handleReset:()=>e(tw(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const eie=()=>{const e=ee(),{t}=Z(),n=L(o=>o.generation.shouldUseNoiseSettings),r=o=>e(YR(o.target.checked));return a.jsx(Vt,{label:t("parameters.enableNoiseSettings"),isChecked:n,onChange:r})},tie=ie(xe,e=>{const{shouldUseNoiseSettings:t,perlin:n}=e.generation;return{isDisabled:!t,perlin:n}},we);function nie(){const e=ee(),{perlin:t,isDisabled:n}=L(tie),{t:r}=Z();return a.jsx(Xe,{isDisabled:n,label:r("parameters.perlinNoise"),min:0,max:1,step:.05,onChange:o=>e(nw(o)),handleReset:()=>e(nw(0)),value:t,withInput:!0,withReset:!0,withSliderMarks:!0})}const rie=ie(xe,e=>{const{shouldUseNoiseSettings:t}=e.generation;return{activeLabel:t?"Enabled":void 0}},we),oie=()=>{const{t:e}=Z(),t=Xt("noise").isFeatureEnabled,n=Xt("perlinNoise").isFeatureEnabled,r=Xt("noiseThreshold").isFeatureEnabled,{activeLabel:o}=L(rie);return t?a.jsx(hr,{label:e("parameters.noiseSettings"),activeLabel:o,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(eie,{}),a.jsx(Qae,{}),n&&a.jsx(nie,{}),r&&a.jsx(Jae,{})]})}):null},Yd=d.memo(oie),qr=e=>e.generation,sie=ie(qr,e=>{const{seamlessXAxis:t}=e;return{seamlessXAxis:t}},we),aie=()=>{const{t:e}=Z(),{seamlessXAxis:t}=L(sie),n=ee(),r=d.useCallback(o=>{n(QR(o.target.checked))},[n]);return a.jsx(Vt,{label:e("parameters.seamlessXAxis"),"aria-label":e("parameters.seamlessXAxis"),isChecked:t,onChange:r})},iie=d.memo(aie),lie=ie(qr,e=>{const{seamlessYAxis:t}=e;return{seamlessYAxis:t}},we),cie=()=>{const{t:e}=Z(),{seamlessYAxis:t}=L(lie),n=ee(),r=d.useCallback(o=>{n(ZR(o.target.checked))},[n]);return a.jsx(Vt,{label:e("parameters.seamlessYAxis"),"aria-label":e("parameters.seamlessYAxis"),isChecked:t,onChange:r})},uie=d.memo(cie),die=(e,t)=>{if(e&&t)return"X & Y";if(e)return"X";if(t)return"Y"},fie=ie(qr,e=>{const{seamlessXAxis:t,seamlessYAxis:n}=e;return{activeLabel:die(t,n)}},we),pie=()=>{const{t:e}=Z(),{activeLabel:t}=L(fie);return Xt("seamless").isFeatureEnabled?a.jsx(hr,{label:e("parameters.seamlessTiling"),activeLabel:t,children:a.jsxs($,{sx:{gap:5},children:[a.jsx(Ie,{flexGrow:1,children:a.jsx(iie,{})}),a.jsx(Ie,{flexGrow:1,children:a.jsx(uie,{})})]})}):null},Yc=d.memo(pie),hie=e=>{const{onClick:t}=e,{t:n}=Z();return a.jsx(Te,{size:"sm","aria-label":n("embedding.addEmbedding"),tooltip:n("embedding.addEmbedding"),icon:a.jsx(DE,{}),sx:{p:2,color:"base.500",_hover:{color:"base.600"},_active:{color:"base.700"},_dark:{color:"base.500",_hover:{color:"base.400"},_active:{color:"base.300"}}},variant:"link",onClick:t})},Ig=d.memo(hie),mie="28rem",gie=e=>{const{onSelect:t,isOpen:n,onClose:r,children:o}=e,{data:s}=JR(),i=d.useRef(null),{t:l}=Z(),u=L(m=>m.generation.model),p=d.useMemo(()=>{if(!s)return[];const m=[];return Pn(s.entities,(v,b)=>{if(!v)return;const y=(u==null?void 0:u.base_model)!==v.base_model;m.push({value:v.model_name,label:v.model_name,group:on[v.base_model],disabled:y,tooltip:y?`${l("embedding.incompatibleModel")} ${v.base_model}`:void 0})}),m.sort((v,b)=>{var y;return v.label&&b.label?(y=v.label)!=null&&y.localeCompare(b.label)?-1:1:-1}),m.sort((v,b)=>v.disabled&&!b.disabled?1:-1)},[s,u==null?void 0:u.base_model,l]),h=d.useCallback(m=>{m&&t(m)},[t]);return a.jsxs(Fm,{initialFocusRef:i,isOpen:n,onClose:r,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(Rx,{children:o}),a.jsx(Bm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Ax,{sx:{p:0,w:`calc(${mie} - 2rem )`},children:p.length===0?a.jsx($,{sx:{justifyContent:"center",p:2,fontSize:"sm",color:"base.500",_dark:{color:"base.700"}},children:a.jsx(ye,{children:"No Embeddings Loaded"})}):a.jsx(Kt,{inputRef:i,autoFocus:!0,placeholder:l("embedding.addEmbedding"),value:null,data:p,nothingFound:l("embedding.noMatchingEmbedding"),itemComponent:ri,disabled:p.length===0,onDropdownClose:r,filter:(m,v)=>{var b;return((b=v.label)==null?void 0:b.toLowerCase().includes(m.toLowerCase().trim()))||v.value.toLowerCase().includes(m.toLowerCase().trim())},onChange:h})})})]})},Eg=d.memo(gie),vie=()=>{const e=L(m=>m.generation.negativePrompt),t=d.useRef(null),{isOpen:n,onClose:r,onOpen:o}=Mr(),s=ee(),{t:i}=Z(),l=d.useCallback(m=>{s(zu(m.target.value))},[s]),u=d.useCallback(m=>{m.key==="<"&&o()},[o]),p=d.useCallback(m=>{if(!t.current)return;const v=t.current.selectionStart;if(v===void 0)return;let b=e.slice(0,v);b[b.length-1]!=="<"&&(b+="<"),b+=`${m}>`;const y=b.length;b+=e.slice(v),Fr.flushSync(()=>{s(zu(b))}),t.current.selectionEnd=y,r()},[s,r,e]),h=Xt("embedding").isFeatureEnabled;return a.jsxs(sn,{children:[a.jsx(Eg,{isOpen:n,onClose:r,onSelect:p,children:a.jsx(sa,{id:"negativePrompt",name:"negativePrompt",ref:t,value:e,placeholder:i("parameters.negativePromptPlaceholder"),onChange:l,resize:"vertical",fontSize:"sm",minH:16,...h&&{onKeyDown:u}})}),!n&&h&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:o})})]})},jO=d.memo(vie),bie=ie([xe,wn],({generation:e},t)=>({prompt:e.positivePrompt,activeTabName:t}),{memoizeOptions:{resultEqualityCheck:_t}}),xie=()=>{const e=ee(),{prompt:t,activeTabName:n}=L(bie),r=Xd(),o=d.useRef(null),{isOpen:s,onClose:i,onOpen:l}=Mr(),{t:u}=Z(),p=d.useCallback(b=>{e(Lu(b.target.value))},[e]);Ze("alt+a",()=>{var b;(b=o.current)==null||b.focus()},[]);const h=d.useCallback(b=>{if(!o.current)return;const y=o.current.selectionStart;if(y===void 0)return;let x=t.slice(0,y);x[x.length-1]!=="<"&&(x+="<"),x+=`${b}>`;const w=x.length;x+=t.slice(y),Fr.flushSync(()=>{e(Lu(x))}),o.current.selectionStart=w,o.current.selectionEnd=w,i()},[e,i,t]),m=Xt("embedding").isFeatureEnabled,v=d.useCallback(b=>{b.key==="Enter"&&b.shiftKey===!1&&r&&(b.preventDefault(),e(wd()),e(bm(n))),m&&b.key==="<"&&l()},[r,e,n,l,m]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(sn,{children:a.jsx(Eg,{isOpen:s,onClose:i,onSelect:h,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:o,value:t,placeholder:u("parameters.positivePromptPlaceholder"),onChange:p,onKeyDown:v,resize:"vertical",minH:32})})}),!s&&m&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:l})})]})},PO=d.memo(xie);function yie(){const e=L(o=>o.sdxl.shouldConcatSDXLStylePrompt),t=ee(),{t:n}=Z(),r=()=>{t(eA(!e))};return a.jsx(Te,{"aria-label":n("sdxl.concatPromptStyle"),tooltip:n("sdxl.concatPromptStyle"),variant:"outline",isChecked:e,onClick:r,icon:a.jsx($E,{}),size:"xs",sx:{position:"absolute",insetInlineEnd:1,top:6,border:"none",color:e?"accent.500":"base.500",_hover:{bg:"none"}}})}const W_={position:"absolute",bg:"none",w:"full",minH:2,borderRadius:0,borderLeft:"none",borderRight:"none",zIndex:2,maskImage:"radial-gradient(circle at center, black, black 65%, black 30%, black 15%, transparent)"};function IO(){return a.jsxs($,{children:[a.jsx(Ie,{as:vn.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"1px",borderTop:"none",borderColor:"base.400",...W_,_dark:{borderColor:"accent.500"}}}),a.jsx(Ie,{as:vn.div,initial:{opacity:0,scale:0},animate:{opacity:[0,1,1,1],scale:[0,.75,1.5,1],transition:{duration:.42,times:[0,.25,.5,1]}},exit:{opacity:0,scale:0},sx:{zIndex:3,position:"absolute",left:"48%",top:"3px",p:1,borderRadius:4,bg:"accent.400",color:"base.50",_dark:{bg:"accent.500"}},children:a.jsx($E,{size:12})}),a.jsx(Ie,{as:vn.div,initial:{scaleX:0,borderWidth:0,display:"none"},animate:{display:["block","block","block","none"],scaleX:[0,.25,.5,1],borderWidth:[0,3,3,0],transition:{duration:.37,times:[0,.25,.5,1]}},sx:{top:"17px",borderBottom:"none",borderColor:"base.400",...W_,_dark:{borderColor:"accent.500"}}})]})}const Cie=ie([xe,wn],({sdxl:e},t)=>{const{negativeStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}}),wie=()=>{const e=ee(),t=Xd(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Mr(),{t:i}=Z(),{prompt:l,activeTabName:u,shouldConcatSDXLStylePrompt:p}=L(Cie),h=d.useCallback(y=>{e(Bu(y.target.value))},[e]),m=d.useCallback(y=>{if(!n.current)return;const x=n.current.selectionStart;if(x===void 0)return;let w=l.slice(0,x);w[w.length-1]!=="<"&&(w+="<"),w+=`${y}>`;const k=w.length;w+=l.slice(x),Fr.flushSync(()=>{e(Bu(w))}),n.current.selectionStart=k,n.current.selectionEnd=k,o()},[e,o,l]),v=Xt("embedding").isFeatureEnabled,b=d.useCallback(y=>{y.key==="Enter"&&y.shiftKey===!1&&t&&(y.preventDefault(),e(wd()),e(bm(u))),v&&y.key==="<"&&s()},[t,e,u,s,v]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:p&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(IO,{})})}),a.jsx(sn,{children:a.jsx(Eg,{isOpen:r,onClose:o,onSelect:m,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:n,value:l,placeholder:i("sdxl.negStylePrompt"),onChange:h,onKeyDown:b,resize:"vertical",fontSize:"sm",minH:16})})}),!r&&v&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:s})})]})},Sie=d.memo(wie),kie=ie([xe,wn],({sdxl:e},t)=>{const{positiveStylePrompt:n,shouldConcatSDXLStylePrompt:r}=e;return{prompt:n,shouldConcatSDXLStylePrompt:r,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}}),_ie=()=>{const e=ee(),t=Xd(),n=d.useRef(null),{isOpen:r,onClose:o,onOpen:s}=Mr(),{t:i}=Z(),{prompt:l,activeTabName:u,shouldConcatSDXLStylePrompt:p}=L(kie),h=d.useCallback(y=>{e(Fu(y.target.value))},[e]),m=d.useCallback(y=>{if(!n.current)return;const x=n.current.selectionStart;if(x===void 0)return;let w=l.slice(0,x);w[w.length-1]!=="<"&&(w+="<"),w+=`${y}>`;const k=w.length;w+=l.slice(x),Fr.flushSync(()=>{e(Fu(w))}),n.current.selectionStart=k,n.current.selectionEnd=k,o()},[e,o,l]),v=Xt("embedding").isFeatureEnabled,b=d.useCallback(y=>{y.key==="Enter"&&y.shiftKey===!1&&t&&(y.preventDefault(),e(wd()),e(bm(u))),v&&y.key==="<"&&s()},[t,e,u,s,v]);return a.jsxs(Ie,{position:"relative",children:[a.jsx(nr,{children:p&&a.jsx(Ie,{sx:{position:"absolute",left:"3",w:"94%",top:"-17px"},children:a.jsx(IO,{})})}),a.jsx(sn,{children:a.jsx(Eg,{isOpen:r,onClose:o,onSelect:m,children:a.jsx(sa,{id:"prompt",name:"prompt",ref:n,value:l,placeholder:i("sdxl.posStylePrompt"),onChange:h,onKeyDown:b,resize:"vertical",minH:16})})}),!r&&v&&a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0},children:a.jsx(Ig,{onClick:s})})]})},jie=d.memo(_ie);function By(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(PO,{}),a.jsx(yie,{}),a.jsx(jie,{}),a.jsx(jO,{}),a.jsx(Sie,{})]})}const al=()=>{const{isRefinerAvailable:e}=Bo(Kb,{selectFromResult:({data:t})=>({isRefinerAvailable:t?t.ids.length>0:!1})});return e},Pie=ie([xe],({sdxl:e,ui:t,hotkeys:n})=>{const{refinerCFGScale:r}=e,{shouldUseSliders:o}=t,{shift:s}=n;return{refinerCFGScale:r,shouldUseSliders:o,shift:s}},we),Iie=()=>{const{refinerCFGScale:e,shouldUseSliders:t,shift:n}=L(Pie),r=al(),o=ee(),{t:s}=Z(),i=d.useCallback(u=>o(i1(u)),[o]),l=d.useCallback(()=>o(i1(7)),[o]);return t?a.jsx(Xe,{label:s("sdxl.cfgScale"),step:n?.1:.5,min:1,max:20,onChange:i,handleReset:l,value:e,sliderNumberInputProps:{max:200},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!r}):a.jsx(Gc,{label:s("sdxl.cfgScale"),step:.5,min:1,max:200,onChange:i,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"},isDisabled:!r})},Eie=d.memo(Iie),Mie=e=>{const t=Yi("models"),[n,r,o]=e.split("/"),s=tA.safeParse({base_model:n,model_name:o,model_type:r});if(!s.success){t.error({mainModelId:e,errors:s.error.format()},"Failed to parse main model id");return}return s.data},Oie=ie(xe,e=>({model:e.sdxl.refinerModel}),we),Die=()=>{const e=ee(),t=Xt("syncModels").isFeatureEnabled,{model:n}=L(Oie),{t:r}=Z(),{data:o,isLoading:s}=Bo(Kb),i=d.useMemo(()=>{if(!o)return[];const p=[];return Pn(o.entities,(h,m)=>{h&&p.push({value:m,label:h.model_name,group:on[h.base_model]})}),p},[o]),l=d.useMemo(()=>(o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])??null,[o==null?void 0:o.entities,n]),u=d.useCallback(p=>{if(!p)return;const h=Mie(p);h&&e(qj(h))},[e]);return s?a.jsx(Kt,{label:r("sdxl.refinermodel"),placeholder:r("sdxl.loading"),disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:2,children:[a.jsx(Kt,{tooltip:l==null?void 0:l.description,label:r("sdxl.refinermodel"),value:l==null?void 0:l.id,placeholder:i.length>0?r("sdxl.selectAModel"):r("sdxl.noModelsAvailable"),data:i,error:i.length===0,disabled:i.length===0,onChange:u,w:"100%"}),t&&a.jsx(Ie,{mt:7,children:a.jsx(Uc,{iconMode:!0})})]})},Rie=d.memo(Die),Aie=ie([xe],({sdxl:e,hotkeys:t})=>{const{refinerNegativeAestheticScore:n}=e,{shift:r}=t;return{refinerNegativeAestheticScore:n,shift:r}},we),Nie=()=>{const{refinerNegativeAestheticScore:e,shift:t}=L(Aie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>r(c1(l)),[r]),i=d.useCallback(()=>r(c1(2.5)),[r]);return a.jsx(Xe,{label:o("sdxl.negAestheticScore"),step:t?.1:.5,min:1,max:10,onChange:s,handleReset:i,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Tie=d.memo(Nie),$ie=ie([xe],({sdxl:e,hotkeys:t})=>{const{refinerPositiveAestheticScore:n}=e,{shift:r}=t;return{refinerPositiveAestheticScore:n,shift:r}},we),Lie=()=>{const{refinerPositiveAestheticScore:e,shift:t}=L($ie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>r(l1(l)),[r]),i=d.useCallback(()=>r(l1(6)),[r]);return a.jsx(Xe,{label:o("sdxl.posAestheticScore"),step:t?.1:.5,min:1,max:10,onChange:s,handleReset:i,value:e,sliderNumberInputProps:{max:10},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},zie=d.memo(Lie),Fie=ie(xe,({ui:e,sdxl:t})=>{const{refinerScheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(hm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{refinerScheduler:n,data:o}},we),Bie=()=>{const e=ee(),{t}=Z(),{refinerScheduler:n,data:r}=L(Fie),o=al(),s=d.useCallback(i=>{i&&e(Xj(i))},[e]);return a.jsx(Kt,{w:"100%",label:t("sdxl.scheduler"),value:n,data:r,onChange:s,disabled:!o})},Hie=d.memo(Bie),Wie=ie([xe],({sdxl:e})=>{const{refinerStart:t}=e;return{refinerStart:t}},we),Vie=()=>{const{refinerStart:e}=L(Wie),t=ee(),n=al(),r=d.useCallback(i=>t(u1(i)),[t]),{t:o}=Z(),s=d.useCallback(()=>t(u1(.8)),[t]);return a.jsx(Xe,{label:o("sdxl.refinerStart"),step:.01,min:0,max:1,onChange:r,handleReset:s,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1,isDisabled:!n})},Uie=d.memo(Vie),Gie=ie([xe],({sdxl:e,ui:t})=>{const{refinerSteps:n}=e,{shouldUseSliders:r}=t;return{refinerSteps:n,shouldUseSliders:r}},we),Kie=()=>{const{refinerSteps:e,shouldUseSliders:t}=L(Gie),n=al(),r=ee(),{t:o}=Z(),s=d.useCallback(l=>{r(a1(l))},[r]),i=d.useCallback(()=>{r(a1(20))},[r]);return t?a.jsx(Xe,{label:o("sdxl.steps"),min:1,max:100,step:1,onChange:s,handleReset:i,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:500},isDisabled:!n}):a.jsx(Gc,{label:o("sdxl.steps"),min:1,max:500,step:1,onChange:s,value:e,numberInputFieldProps:{textAlign:"center"},isDisabled:!n})},qie=d.memo(Kie);function Xie(){const e=L(s=>s.sdxl.shouldUseSDXLRefiner),t=al(),n=ee(),{t:r}=Z(),o=s=>{n(nA(s.target.checked))};return a.jsx(Vt,{label:r("sdxl.useRefiner"),isChecked:e,onChange:o,isDisabled:!t})}const Yie=ie(xe,e=>{const{shouldUseSDXLRefiner:t}=e.sdxl,{shouldUseSliders:n}=e.ui;return{activeLabel:t?"Enabled":void 0,shouldUseSliders:n}},we),Qie=()=>{const{activeLabel:e,shouldUseSliders:t}=L(Yie),{t:n}=Z();return a.jsx(hr,{label:n("sdxl.refiner"),activeLabel:e,children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(Xie,{}),a.jsx(Rie,{}),a.jsxs($,{gap:2,flexDirection:t?"column":"row",children:[a.jsx(qie,{}),a.jsx(Eie,{})]}),a.jsx(Hie,{}),a.jsx(zie,{}),a.jsx(Tie,{}),a.jsx(Uie,{})]})})},Hy=d.memo(Qie),Zie=ie([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l}=t.sd.guidance,{cfgScale:u}=e,{shouldUseSliders:p}=n,{shift:h}=r;return{cfgScale:u,initial:o,min:s,sliderMax:i,inputMax:l,shouldUseSliders:p,shift:h}},we),Jie=()=>{const{cfgScale:e,initial:t,min:n,sliderMax:r,inputMax:o,shouldUseSliders:s,shift:i}=L(Zie),l=ee(),{t:u}=Z(),p=d.useCallback(m=>l(Gp(m)),[l]),h=d.useCallback(()=>l(Gp(t)),[l,t]);return s?a.jsx(Xe,{label:u("parameters.cfgScale"),step:i?.1:.5,min:n,max:r,onChange:p,handleReset:h,value:e,sliderNumberInputProps:{max:o},withInput:!0,withReset:!0,withSliderMarks:!0,isInteger:!1}):a.jsx(Gc,{label:u("parameters.cfgScale"),step:.5,min:n,max:o,onChange:p,value:e,isInteger:!1,numberInputFieldProps:{textAlign:"center"}})},xs=d.memo(Jie),ele=ie([xe],e=>{const{initial:t,min:n,sliderMax:r,inputMax:o,fineStep:s,coarseStep:i}=e.config.sd.iterations,{iterations:l}=e.generation,{shouldUseSliders:u}=e.ui,p=e.dynamicPrompts.isEnabled&&e.dynamicPrompts.combinatorial,h=e.hotkeys.shift?s:i;return{iterations:l,initial:t,min:n,sliderMax:r,inputMax:o,step:h,shouldUseSliders:u,isDisabled:p}},we),tle=()=>{const{iterations:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i,isDisabled:l}=L(ele),u=ee(),{t:p}=Z(),h=d.useCallback(v=>{u(rw(v))},[u]),m=d.useCallback(()=>{u(rw(t))},[u,t]);return i?a.jsx(Xe,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:r,onChange:h,handleReset:m,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Gc,{isDisabled:l,label:p("parameters.images"),step:s,min:n,max:o,onChange:h,value:e,numberInputFieldProps:{textAlign:"center"}})},ys=d.memo(tle),nle=ie(xe,e=>({model:e.generation.model}),we),rle=()=>{const e=ee(),{t}=Z(),{model:n}=L(nle),r=Xt("syncModels").isFeatureEnabled,{data:o,isLoading:s}=Bo(ow),{data:i,isLoading:l}=Yu(ow),u=L(wn),p=d.useMemo(()=>{if(!o)return[];const v=[];return Pn(o.entities,(b,y)=>{b&&v.push({value:y,label:b.model_name,group:on[b.base_model]})}),Pn(i==null?void 0:i.entities,(b,y)=>{!b||u==="unifiedCanvas"||u==="img2img"||v.push({value:y,label:b.model_name,group:on[b.base_model]})}),v},[o,i,u]),h=d.useMemo(()=>((o==null?void 0:o.entities[`${n==null?void 0:n.base_model}/main/${n==null?void 0:n.model_name}`])||(i==null?void 0:i.entities[`${n==null?void 0:n.base_model}/onnx/${n==null?void 0:n.model_name}`]))??null,[o==null?void 0:o.entities,n,i==null?void 0:i.entities]),m=d.useCallback(v=>{if(!v)return;const b=Pg(v);b&&e(o1(b))},[e]);return s||l?a.jsx(Kt,{label:t("modelManager.model"),placeholder:"Loading...",disabled:!0,data:[]}):a.jsxs($,{w:"100%",alignItems:"center",gap:3,children:[a.jsx(Kt,{tooltip:h==null?void 0:h.description,label:t("modelManager.model"),value:h==null?void 0:h.id,placeholder:p.length>0?"Select a model":"No models available",data:p,error:p.length===0,disabled:p.length===0,onChange:m,w:"100%"}),r&&a.jsx(Ie,{mt:7,children:a.jsx(Uc,{iconMode:!0})})]})},ole=d.memo(rle),sle=ie(xe,({generation:e})=>{const{model:t,vae:n}=e;return{model:t,vae:n}},we),ale=()=>{const e=ee(),{t}=Z(),{model:n,vae:r}=L(sle),{data:o}=n5(),s=d.useMemo(()=>{if(!o)return[];const u=[{value:"default",label:"Default",group:"Default"}];return Pn(o.entities,(p,h)=>{if(!p)return;const m=(n==null?void 0:n.base_model)!==p.base_model;u.push({value:h,label:p.model_name,group:on[p.base_model],disabled:m,tooltip:m?`Incompatible base model: ${p.base_model}`:void 0})}),u.sort((p,h)=>p.disabled&&!h.disabled?1:-1)},[o,n==null?void 0:n.base_model]),i=d.useMemo(()=>(o==null?void 0:o.entities[`${r==null?void 0:r.base_model}/vae/${r==null?void 0:r.model_name}`])??null,[o==null?void 0:o.entities,r]),l=d.useCallback(u=>{if(!u||u==="default"){e(sw(null));return}const p=SO(u);p&&e(sw(p))},[e]);return a.jsx(Kt,{itemComponent:ri,tooltip:i==null?void 0:i.description,label:t("modelManager.vae"),value:(i==null?void 0:i.id)??"default",placeholder:"Default",data:s,onChange:l,disabled:s.length===0,clearable:!0})},ile=d.memo(ale),lle=ie([qb,qr],(e,t)=>{const{scheduler:n}=t,{favoriteSchedulers:r}=e,o=rr(hm,(s,i)=>({value:i,label:s,group:r.includes(i)?"Favorites":void 0})).sort((s,i)=>s.label.localeCompare(i.label));return{scheduler:n,data:o}},we),cle=()=>{const e=ee(),{t}=Z(),{scheduler:n,data:r}=L(lle),o=d.useCallback(s=>{s&&e(s1(s))},[e]);return a.jsx(Kt,{label:t("parameters.scheduler"),value:n,data:r,onChange:o})},ule=d.memo(cle),dle=ie(xe,({generation:e})=>{const{vaePrecision:t}=e;return{vaePrecision:t}},we),fle=["fp16","fp32"],ple=()=>{const e=ee(),{vaePrecision:t}=L(dle),n=d.useCallback(r=>{r&&e(rA(r))},[e]);return a.jsx(In,{label:"VAE Precision",value:t,data:fle,onChange:n})},hle=d.memo(ple),mle=()=>{const e=Xt("vae").isFeatureEnabled;return a.jsxs($,{gap:3,w:"full",flexWrap:e?"wrap":"nowrap",children:[a.jsx(Ie,{w:"full",children:a.jsx(ole,{})}),a.jsx(Ie,{w:"full",children:a.jsx(ule,{})}),e&&a.jsxs($,{w:"full",gap:3,children:[a.jsx(ile,{}),a.jsx(hle,{})]})]})},Cs=d.memo(mle),EO=[{name:"Free",value:null},{name:"2:3",value:2/3},{name:"16:9",value:16/9},{name:"1:1",value:1/1}],MO=EO.map(e=>e.value);function OO(){const e=L(o=>o.generation.aspectRatio),t=ee(),n=L(o=>o.generation.shouldFitToWidthHeight),r=L(wn);return a.jsx($,{gap:2,flexGrow:1,children:a.jsx(mn,{isAttached:!0,children:EO.map(o=>a.jsx(it,{size:"sm",isChecked:e===o.value,isDisabled:r==="img2img"?!n:!1,onClick:()=>{t(Do(o.value)),t(Qu(!1))},children:o.name},o.name))})})}const gle=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.height,{model:u,height:p}=e,{aspectRatio:h}=e,m=t.shift?i:l;return{model:u,height:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},we),vle=e=>{const{model:t,height:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=L(gle),u=ee(),{t:p}=Z(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(b=>{if(u($i(b)),l){const y=fr(b*l,8);u(Ti(y))}},[u,l]),v=d.useCallback(()=>{if(u($i(h)),l){const b=fr(h*l,8);u(Ti(b))}},[u,h,l]);return a.jsx(Xe,{label:p("parameters.height"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},ble=d.memo(vle),xle=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{min:r,sliderMax:o,inputMax:s,fineStep:i,coarseStep:l}=n.sd.width,{model:u,width:p,aspectRatio:h}=e,m=t.shift?i:l;return{model:u,width:p,min:r,sliderMax:o,inputMax:s,step:m,aspectRatio:h}},we),yle=e=>{const{model:t,width:n,min:r,sliderMax:o,inputMax:s,step:i,aspectRatio:l}=L(xle),u=ee(),{t:p}=Z(),h=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,m=d.useCallback(b=>{if(u(Ti(b)),l){const y=fr(b/l,8);u($i(y))}},[u,l]),v=d.useCallback(()=>{if(u(Ti(h)),l){const b=fr(h/l,8);u($i(b))}},[u,h,l]);return a.jsx(Xe,{label:p("parameters.width"),value:n,min:r,step:i,max:o,onChange:m,handleReset:v,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:s},...e})},Cle=d.memo(yle),wle=ie([qr,wn],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}=e;return{activeTabName:t,shouldFitToWidthHeight:n,shouldLockAspectRatio:r,width:o,height:s}});function Oc(){const{t:e}=Z(),t=ee(),{activeTabName:n,shouldFitToWidthHeight:r,shouldLockAspectRatio:o,width:s,height:i}=L(wle),l=d.useCallback(()=>{o?(t(Qu(!1)),MO.includes(s/i)?t(Do(s/i)):t(Do(null))):(t(Qu(!0)),t(Do(s/i)))},[o,s,i,t]),u=d.useCallback(()=>{t(oA()),t(Do(null)),o&&t(Do(i/s))},[t,o,s,i]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.150",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:e("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(OO,{}),a.jsx(Te,{tooltip:e("ui.swapSizes"),"aria-label":e("ui.swapSizes"),size:"sm",icon:a.jsx(VM,{}),fontSize:20,isDisabled:n==="img2img"?!r:!1,onClick:u}),a.jsx(Te,{tooltip:e("ui.lockRatio"),"aria-label":e("ui.lockRatio"),size:"sm",icon:a.jsx(LE,{}),isChecked:o,isDisabled:n==="img2img"?!r:!1,onClick:l})]}),a.jsx($,{gap:2,alignItems:"center",children:a.jsxs($,{gap:2,flexDirection:"column",width:"full",children:[a.jsx(Cle,{isDisabled:n==="img2img"?!r:!1}),a.jsx(ble,{isDisabled:n==="img2img"?!r:!1})]})})]})}const Sle=ie([xe],({generation:e,config:t,ui:n,hotkeys:r})=>{const{initial:o,min:s,sliderMax:i,inputMax:l,fineStep:u,coarseStep:p}=t.sd.steps,{steps:h}=e,{shouldUseSliders:m}=n,v=r.shift?u:p;return{steps:h,initial:o,min:s,sliderMax:i,inputMax:l,step:v,shouldUseSliders:m}},we),kle=()=>{const{steps:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s,shouldUseSliders:i}=L(Sle),l=ee(),{t:u}=Z(),p=d.useCallback(v=>{l(Kp(v))},[l]),h=d.useCallback(()=>{l(Kp(t))},[l,t]),m=d.useCallback(()=>{l(wd())},[l]);return i?a.jsx(Xe,{label:u("parameters.steps"),min:n,max:r,step:s,onChange:p,handleReset:h,value:e,withInput:!0,withReset:!0,withSliderMarks:!0,sliderNumberInputProps:{max:o}}):a.jsx(Gc,{label:u("parameters.steps"),min:n,max:o,step:s,onChange:p,value:e,numberInputFieldProps:{textAlign:"center"},onBlur:m})},ws=d.memo(kle);function DO(){const e=ee(),t=L(o=>o.generation.shouldFitToWidthHeight),n=o=>e(sA(o.target.checked)),{t:r}=Z();return a.jsx(Vt,{label:r("parameters.imageFit"),isChecked:t,onChange:n})}function _le(){const e=L(i=>i.generation.seed),t=L(i=>i.generation.shouldRandomizeSeed),n=L(i=>i.generation.shouldGenerateVariations),{t:r}=Z(),o=ee(),s=i=>o(Up(i));return a.jsx(Gc,{label:r("parameters.seed"),step:1,precision:0,flexGrow:1,min:i5,max:l5,isDisabled:t,isInvalid:e<0&&n,onChange:s,value:e})}const jle=(e,t)=>Math.floor(Math.random()*(t-e+1)+e);function Ple(){const e=ee(),t=L(o=>o.generation.shouldRandomizeSeed),{t:n}=Z(),r=()=>e(Up(jle(i5,l5)));return a.jsx(Te,{size:"sm",isDisabled:t,"aria-label":n("parameters.shuffle"),tooltip:n("parameters.shuffle"),onClick:r,icon:a.jsx(GZ,{})})}const Ile=()=>{const e=ee(),{t}=Z(),n=L(o=>o.generation.shouldRandomizeSeed),r=o=>e(aA(o.target.checked));return a.jsx(Vt,{label:t("common.random"),isChecked:n,onChange:r})},Ele=d.memo(Ile),Mle=()=>a.jsxs($,{sx:{gap:3,alignItems:"flex-end"},children:[a.jsx(_le,{}),a.jsx(Ple,{}),a.jsx(Ele,{})]}),Ss=d.memo(Mle),RO=e=>a.jsxs($,{sx:{flexDir:"column",gap:2,bg:"base.100",px:4,pt:2,pb:4,borderRadius:"base",_dark:{bg:"base.750"}},children:[e.label&&a.jsx(ye,{fontSize:"sm",fontWeight:"bold",sx:{color:"base.600",_dark:{color:"base.300"}},children:e.label}),e.children]});RO.displayName="SubSettingsWrapper";const Dc=d.memo(RO),Ole=ie([xe],({sdxl:e})=>{const{sdxlImg2ImgDenoisingStrength:t}=e;return{sdxlImg2ImgDenoisingStrength:t}},we),Dle=()=>{const{sdxlImg2ImgDenoisingStrength:e}=L(Ole),t=ee(),{t:n}=Z(),r=d.useCallback(s=>t(aw(s)),[t]),o=d.useCallback(()=>{t(aw(.7))},[t]);return a.jsx(Dc,{children:a.jsx(Xe,{label:n("sdxl.denoisingStrength"),step:.01,min:0,max:1,onChange:r,handleReset:o,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0})})},AO=d.memo(Dle),Rle=ie([qb,qr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Ale=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Rle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}),a.jsx(AO,{}),a.jsx(DO,{})]})})},Nle=d.memo(Ale),Tle=()=>a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(Nle,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Yc,{})]}),$le=d.memo(Tle),Lle=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),zle=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Lle);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsx($,{sx:{flexDirection:"column",gap:3},children:e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]})})})},NO=d.memo(zle),Fle=()=>a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(NO,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Yc,{})]}),Ble=d.memo(Fle),Hle=[{label:"Unmasked",value:"unmasked"},{label:"Mask",value:"mask"},{label:"Mask Edge",value:"edge"}],Wle=()=>{const e=ee(),t=L(o=>o.generation.canvasCoherenceMode),{t:n}=Z(),r=o=>{o&&e(iA(o))};return a.jsx(In,{label:n("parameters.coherenceMode"),data:Hle,value:t,onChange:r})},Vle=d.memo(Wle),Ule=()=>{const e=ee(),t=L(r=>r.generation.canvasCoherenceSteps),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.coherenceSteps"),min:1,max:100,step:1,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(iw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(iw(20))}})},Gle=d.memo(Ule),Kle=()=>{const e=ee(),t=L(r=>r.generation.canvasCoherenceStrength),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.coherenceStrength"),min:0,max:1,step:.01,sliderNumberInputProps:{max:999},value:t,onChange:r=>{e(lw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(lw(.3))}})},qle=d.memo(Kle);function Xle(){const e=ee(),t=L(r=>r.generation.maskBlur),{t:n}=Z();return a.jsx(Xe,{label:n("parameters.maskBlur"),min:0,max:64,sliderNumberInputProps:{max:512},value:t,onChange:r=>{e(cw(r))},withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>{e(cw(16))}})}const Yle=[{label:"Box Blur",value:"box"},{label:"Gaussian Blur",value:"gaussian"}];function Qle(){const e=L(o=>o.generation.maskBlurMethod),t=ee(),{t:n}=Z(),r=o=>{o&&t(lA(o))};return a.jsx(In,{value:e,onChange:r,label:n("parameters.maskBlurMethod"),data:Yle})}const Zle=()=>{const{t:e}=Z();return a.jsx(hr,{label:e("parameters.compositingSettingsHeader"),children:a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsxs(Dc,{label:e("parameters.coherencePassHeader"),children:[a.jsx(Vle,{}),a.jsx(Gle,{}),a.jsx(qle,{})]}),a.jsx(Vr,{}),a.jsxs(Dc,{label:e("parameters.maskAdjustmentsHeader"),children:[a.jsx(Xle,{}),a.jsx(Qle,{})]})]})})},TO=d.memo(Zle),Jle=ie([xe],({generation:e})=>{const{infillMethod:t}=e;return{infillMethod:t}},we),ece=()=>{const e=ee(),{infillMethod:t}=L(Jle),{data:n,isLoading:r}=Hj(),o=n==null?void 0:n.infill_methods,{t:s}=Z(),i=d.useCallback(l=>{e(cA(l))},[e]);return a.jsx(In,{disabled:(o==null?void 0:o.length)===0,placeholder:r?"Loading...":void 0,label:s("parameters.infillMethod"),value:t,data:o??[],onChange:i})},tce=d.memo(ece),nce=ie([qr],e=>{const{infillPatchmatchDownscaleSize:t,infillMethod:n}=e;return{infillPatchmatchDownscaleSize:t,infillMethod:n}},we),rce=()=>{const e=ee(),{infillPatchmatchDownscaleSize:t,infillMethod:n}=L(nce),{t:r}=Z(),o=d.useCallback(i=>{e(uw(i))},[e]),s=d.useCallback(()=>{e(uw(2))},[e]);return a.jsx(Xe,{isDisabled:n!=="patchmatch",label:r("parameters.patchmatchDownScaleSize"),min:1,max:10,value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},oce=d.memo(rce),sce=ie([qr],e=>{const{infillTileSize:t,infillMethod:n}=e;return{infillTileSize:t,infillMethod:n}},we),ace=()=>{const e=ee(),{infillTileSize:t,infillMethod:n}=L(sce),{t:r}=Z(),o=d.useCallback(i=>{e(dw(i))},[e]),s=d.useCallback(()=>{e(dw(32))},[e]);return a.jsx(Xe,{isDisabled:n!=="tile",label:r("parameters.tileSize"),min:16,max:64,sliderNumberInputProps:{max:256},value:t,onChange:o,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:s})},ice=d.memo(ace),lce=ie([qr],e=>{const{infillMethod:t}=e;return{infillMethod:t}},we);function cce(){const{infillMethod:e}=L(lce);return a.jsxs($,{children:[e==="tile"&&a.jsx(ice,{}),e==="patchmatch"&&a.jsx(oce,{})]})}const Lt=e=>e.canvas,Co=ie([Lt,wn,xo],(e,t,n)=>e.layerState.stagingArea.images.length>0||t==="unifiedCanvas"&&n.isProcessing),uce=ie([Lt],e=>{const{boundingBoxScaleMethod:t}=e;return{boundingBoxScale:t}},we),dce=()=>{const e=ee(),{boundingBoxScale:t}=L(uce),{t:n}=Z(),r=o=>{e(dA(o))};return a.jsx(Kt,{label:n("parameters.scaleBeforeProcessing"),data:uA,value:t,onChange:r})},fce=d.memo(dce),pce=ie([qr,Lt],(e,t)=>{const{scaledBoundingBoxDimensions:n,boundingBoxScaleMethod:r}=t,{model:o,aspectRatio:s}=e;return{model:o,scaledBoundingBoxDimensions:n,isManual:r==="manual",aspectRatio:s}},we),hce=()=>{const e=ee(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=L(pce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{let h=r.width;const m=Math.floor(p);o&&(h=fr(m*o,64)),e(Xp({width:h,height:m}))},u=()=>{let p=r.width;const h=Math.floor(s);o&&(p=fr(h*o,64)),e(Xp({width:p,height:h}))};return a.jsx(Xe,{isDisabled:!n,label:i("parameters.scaledHeight"),min:64,max:1536,step:64,value:r.height,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},mce=d.memo(hce),gce=ie([Lt,qr],(e,t)=>{const{boundingBoxScaleMethod:n,scaledBoundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,scaledBoundingBoxDimensions:r,aspectRatio:s,isManual:n==="manual"}},we),vce=()=>{const e=ee(),{model:t,isManual:n,scaledBoundingBoxDimensions:r,aspectRatio:o}=L(gce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{const h=Math.floor(p);let m=r.height;o&&(m=fr(h/o,64)),e(Xp({width:h,height:m}))},u=()=>{const p=Math.floor(s);let h=r.height;o&&(h=fr(p/o,64)),e(Xp({width:p,height:h}))};return a.jsx(Xe,{isDisabled:!n,label:i("parameters.scaledWidth"),min:64,max:1536,step:64,value:r.width,onChange:l,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},bce=d.memo(vce),xce=()=>{const{t:e}=Z();return a.jsx(hr,{label:e("parameters.infillScalingHeader"),children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsxs(Dc,{children:[a.jsx(tce,{}),a.jsx(cce,{})]}),a.jsx(Vr,{}),a.jsxs(Dc,{children:[a.jsx(fce,{}),a.jsx(bce,{}),a.jsx(mce,{})]})]})})},$O=d.memo(xce),yce=ie([xe,Co],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},we),Cce=()=>{const e=ee(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=L(yce),{t:s}=Z(),i=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,l=p=>{if(e(No({...n,height:Math.floor(p)})),o){const h=fr(p*o,64);e(No({width:h,height:Math.floor(p)}))}},u=()=>{if(e(No({...n,height:Math.floor(i)})),o){const p=fr(i*o,64);e(No({width:p,height:Math.floor(i)}))}};return a.jsx(Xe,{label:s("parameters.boundingBoxHeight"),min:64,max:1536,step:64,value:n.height,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},wce=d.memo(Cce),Sce=ie([xe,Co],({canvas:e,generation:t},n)=>{const{boundingBoxDimensions:r}=e,{model:o,aspectRatio:s}=t;return{model:o,boundingBoxDimensions:r,isStaging:n,aspectRatio:s}},we),kce=()=>{const e=ee(),{model:t,boundingBoxDimensions:n,isStaging:r,aspectRatio:o}=L(Sce),s=["sdxl","sdxl-refiner"].includes(t==null?void 0:t.base_model)?1024:512,{t:i}=Z(),l=p=>{if(e(No({...n,width:Math.floor(p)})),o){const h=fr(p/o,64);e(No({width:Math.floor(p),height:h}))}},u=()=>{if(e(No({...n,width:Math.floor(s)})),o){const p=fr(s/o,64);e(No({width:Math.floor(s),height:p}))}};return a.jsx(Xe,{label:i("parameters.boundingBoxWidth"),min:64,max:1536,step:64,value:n.width,onChange:l,isDisabled:r,sliderNumberInputProps:{max:4096},withSliderMarks:!0,withInput:!0,withReset:!0,handleReset:u})},_ce=d.memo(kce),jce=ie([qr,Lt],(e,t)=>{const{shouldFitToWidthHeight:n,shouldLockAspectRatio:r}=e,{boundingBoxDimensions:o}=t;return{shouldFitToWidthHeight:n,shouldLockAspectRatio:r,boundingBoxDimensions:o}});function cm(){const e=ee(),{t}=Z(),{shouldLockAspectRatio:n,boundingBoxDimensions:r}=L(jce),o=d.useCallback(()=>{n?(e(Qu(!1)),MO.includes(r.width/r.height)?e(Do(r.width/r.height)):e(Do(null))):(e(Qu(!0)),e(Do(r.width/r.height)))},[n,r,e]),s=d.useCallback(()=>{e(fA()),e(Do(null)),n&&e(Do(r.height/r.width))},[e,n,r]);return a.jsxs($,{sx:{gap:2,p:4,borderRadius:4,flexDirection:"column",w:"full",bg:"base.100",_dark:{bg:"base.750"}},children:[a.jsxs($,{alignItems:"center",gap:2,children:[a.jsx(ye,{sx:{fontSize:"sm",width:"full",color:"base.700",_dark:{color:"base.300"}},children:t("parameters.aspectRatio")}),a.jsx(Za,{}),a.jsx(OO,{}),a.jsx(Te,{tooltip:t("ui.swapSizes"),"aria-label":t("ui.swapSizes"),size:"sm",icon:a.jsx(VM,{}),fontSize:20,onClick:s}),a.jsx(Te,{tooltip:t("ui.lockRatio"),"aria-label":t("ui.lockRatio"),size:"sm",icon:a.jsx(LE,{}),isChecked:n,onClick:o})]}),a.jsx(_ce,{}),a.jsx(wce,{})]})}const Pce=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Ice=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Pce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}),a.jsx(AO,{})]})})},Ece=d.memo(Ice);function Mce(){return a.jsxs(a.Fragment,{children:[a.jsx(By,{}),a.jsx(Ece,{}),a.jsx(Hy,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx($O,{}),a.jsx(TO,{}),a.jsx(Yc,{})]})}function Oce(){const e=L(u=>u.generation.clipSkip),{model:t}=L(u=>u.generation),n=ee(),{t:r}=Z(),o=d.useCallback(u=>{n(fw(u))},[n]),s=d.useCallback(()=>{n(fw(0))},[n]),i=d.useMemo(()=>t?qf[t.base_model].maxClip:qf["sd-1"].maxClip,[t]),l=d.useMemo(()=>t?qf[t.base_model].markers:qf["sd-1"].markers,[t]);return a.jsx(Xe,{label:r("parameters.clipSkip"),"aria-label":r("parameters.clipSkip"),min:0,max:i,step:1,value:e,onChange:o,withSliderMarks:!0,sliderMarks:l,withInput:!0,withReset:!0,handleReset:s})}const Dce=ie(xe,e=>({activeLabel:e.generation.clipSkip>0?"Clip Skip":void 0}),we);function Wy(){const{activeLabel:e}=L(Dce),t=L(r=>r.generation.shouldShowAdvancedOptions),{t:n}=Z();return t?a.jsx(hr,{label:n("common.advanced"),activeLabel:e,children:a.jsx($,{sx:{flexDir:"column",gap:2},children:a.jsx(Oce,{})})}):null}function Vy(){return a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(PO,{}),a.jsx(jO,{})]})}function Rce(){const e=L(o=>o.generation.horizontalSymmetrySteps),t=L(o=>o.generation.steps),n=ee(),{t:r}=Z();return a.jsx(Xe,{label:r("parameters.hSymmetryStep"),value:e,onChange:o=>n(pw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(pw(0))})}function Ace(){const e=L(o=>o.generation.verticalSymmetrySteps),t=L(o=>o.generation.steps),n=ee(),{t:r}=Z();return a.jsx(Xe,{label:r("parameters.vSymmetryStep"),value:e,onChange:o=>n(hw(o)),min:0,max:t,step:1,withInput:!0,withSliderMarks:!0,withReset:!0,handleReset:()=>n(hw(0))})}function Nce(){const e=L(n=>n.generation.shouldUseSymmetry),t=ee();return a.jsx(Vt,{label:"Enable Symmetry",isChecked:e,onChange:n=>t(pA(n.target.checked))})}const Tce=ie(xe,e=>({activeLabel:e.generation.shouldUseSymmetry?"Enabled":void 0}),we),$ce=()=>{const{t:e}=Z(),{activeLabel:t}=L(Tce);return Xt("symmetry").isFeatureEnabled?a.jsx(hr,{label:e("parameters.symmetry"),activeLabel:t,children:a.jsxs($,{sx:{gap:2,flexDirection:"column"},children:[a.jsx(Nce,{}),a.jsx(Rce,{}),a.jsx(Ace,{})]})}):null},Uy=d.memo($ce),Lce=ie([xe],({generation:e,hotkeys:t,config:n})=>{const{initial:r,min:o,sliderMax:s,inputMax:i,fineStep:l,coarseStep:u}=n.sd.img2imgStrength,{img2imgStrength:p}=e,h=t.shift?l:u;return{img2imgStrength:p,initial:r,min:o,sliderMax:s,inputMax:i,step:h}},we),zce=()=>{const{img2imgStrength:e,initial:t,min:n,sliderMax:r,inputMax:o,step:s}=L(Lce),i=ee(),{t:l}=Z(),u=d.useCallback(h=>i(qp(h)),[i]),p=d.useCallback(()=>{i(qp(t))},[i,t]);return a.jsx(Dc,{children:a.jsx(Xe,{label:`${l("parameters.denoisingStrength")}`,step:s,min:n,max:r,onChange:u,handleReset:p,value:e,isInteger:!1,withInput:!0,withSliderMarks:!0,withReset:!0,sliderNumberInputProps:{max:o}})})},LO=d.memo(zce),Fce=ie([qb,qr],(e,t)=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),Bce=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Fce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(Oc,{})]}),a.jsx(LO,{}),a.jsx(DO,{})]})})},Hce=d.memo(Bce),Wce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(Hce,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Uy,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Vce=d.memo(Wce),Uce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(NO,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Yd,{}),a.jsx(Uy,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Gce=d.memo(Uce),Kce=ie(xe,({ui:e,generation:t})=>{const{shouldUseSliders:n}=e,{shouldRandomizeSeed:r}=t;return{shouldUseSliders:n,activeLabel:r?void 0:"Manual Seed"}},we),qce=()=>{const{shouldUseSliders:e,activeLabel:t}=L(Kce);return a.jsx(hr,{label:"General",activeLabel:t,defaultIsOpen:!0,children:a.jsxs($,{sx:{flexDirection:"column",gap:3},children:[e?a.jsxs(a.Fragment,{children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}):a.jsxs(a.Fragment,{children:[a.jsxs($,{gap:3,children:[a.jsx(ys,{}),a.jsx(ws,{}),a.jsx(xs,{})]}),a.jsx(Cs,{}),a.jsx(Ie,{pt:2,children:a.jsx(Ss,{})}),a.jsx(cm,{})]}),a.jsx(LO,{})]})})},Xce=d.memo(qce),Yce=()=>a.jsxs(a.Fragment,{children:[a.jsx(Vy,{}),a.jsx(Xce,{}),a.jsx(Xc,{}),a.jsx(qc,{}),a.jsx(Kc,{}),a.jsx(Uy,{}),a.jsx($O,{}),a.jsx(TO,{}),a.jsx(Yc,{}),a.jsx(Wy,{})]}),Qce=d.memo(Yce),Zce=()=>{const e=L(wn),t=L(n=>n.generation.model);return e==="txt2img"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx(Ble,{}):a.jsx(Gce,{})}):e==="img2img"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx($le,{}):a.jsx(Vce,{})}):e==="unifiedCanvas"?a.jsx(Hp,{children:t&&t.base_model==="sdxl"?a.jsx(Mce,{}):a.jsx(Qce,{})}):null},Jce=d.memo(Zce),Hp=d.memo(e=>a.jsxs($,{sx:{w:"full",h:"full",flexDir:"column",gap:2},children:[a.jsx(XM,{}),a.jsx($,{layerStyle:"first",sx:{w:"full",h:"full",position:"relative",borderRadius:"base",p:2},children:a.jsx($,{sx:{w:"full",h:"full",position:"relative"},children:a.jsx(Ie,{sx:{position:"absolute",top:0,left:0,right:0,bottom:0},children:a.jsx(ug,{defer:!0,style:{height:"100%",width:"100%"},options:{scrollbars:{visibility:"auto",autoHide:"scroll",autoHideDelay:800,theme:"os-theme-dark"},overflow:{x:"hidden"}},children:a.jsx($,{sx:{gap:2,flexDirection:"column",h:"full",w:"full"},children:e.children})})})})})]}));Hp.displayName="ParametersPanelWrapper";const eue=ie([xe],e=>{const{initialImage:t}=e.generation;return{initialImage:t,isResetButtonDisabled:!t}},we),tue=()=>{const{initialImage:e}=L(eue),{currentData:t}=Wr((e==null?void 0:e.imageName)??Er.skipToken),n=d.useMemo(()=>{if(t)return{id:"initial-image",payloadType:"IMAGE_DTO",payload:{imageDTO:t}}},[t]),r=d.useMemo(()=>({id:"initial-image",actionType:"SET_INITIAL_IMAGE"}),[]);return a.jsx(oa,{imageDTO:t,droppableData:r,draggableData:n,isUploadDisabled:!0,fitContainer:!0,dropLabel:"Set as Initial Image",noContentFallback:a.jsx(Kn,{label:"No initial image selected"})})},nue=d.memo(tue),rue=ie([xe],e=>{const{initialImage:t}=e.generation;return{isResetButtonDisabled:!t}},we),oue={type:"SET_INITIAL_IMAGE"},sue=()=>{const{isResetButtonDisabled:e}=L(rue),t=ee(),{getUploadButtonProps:n,getUploadInputProps:r}=Iy({postUploadAction:oue}),o=d.useCallback(()=>{t(hA())},[t]);return a.jsxs($,{layerStyle:"first",sx:{position:"relative",flexDirection:"column",height:"full",width:"full",alignItems:"center",justifyContent:"center",borderRadius:"base",p:2,gap:4},children:[a.jsxs($,{sx:{w:"full",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},children:[a.jsx(ye,{sx:{ps:2,fontWeight:600,userSelect:"none",color:"base.700",_dark:{color:"base.200"}},children:"Initial Image"}),a.jsx(Za,{}),a.jsx(Te,{tooltip:"Upload Initial Image","aria-label":"Upload Initial Image",icon:a.jsx(og,{}),...n()}),a.jsx(Te,{tooltip:"Reset Initial Image","aria-label":"Reset Initial Image",icon:a.jsx(Ud,{}),onClick:o,isDisabled:e})]}),a.jsx(nue,{}),a.jsx("input",{...r()})]})},aue=d.memo(sue),iue=ie([xe],({system:e})=>{const{isProcessing:t,isConnected:n}=e;return n&&!t}),lue=e=>{const{onClick:t,isDisabled:n}=e,{t:r}=Z(),o=L(iue);return a.jsx(Te,{onClick:t,icon:a.jsx(Kr,{}),tooltip:`${r("gallery.deleteImage")} (Del)`,"aria-label":`${r("gallery.deleteImage")} (Del)`,isDisabled:n||!o,colorScheme:"error"})},cue=[{label:"RealESRGAN x2 Plus",value:"RealESRGAN_x2plus.pth",tooltip:"Attempts to retain sharpness, low smoothing",group:"x2 Upscalers"},{label:"RealESRGAN x4 Plus",value:"RealESRGAN_x4plus.pth",tooltip:"Best for photos and highly detailed images, medium smoothing",group:"x4 Upscalers"},{label:"RealESRGAN x4 Plus (anime 6B)",value:"RealESRGAN_x4plus_anime_6B.pth",tooltip:"Best for anime/manga, high smoothing",group:"x4 Upscalers"},{label:"ESRGAN SRx4",value:"ESRGAN_SRx4_DF2KOST_official-ff704c30.pth",tooltip:"Retains sharpness, low smoothing",group:"x4 Upscalers"}];function uue(){const e=L(r=>r.postprocessing.esrganModelName),t=ee(),n=r=>t(mA(r));return a.jsx(In,{label:"ESRGAN Model",value:e,itemComponent:ri,onChange:n,data:cue})}const due=e=>{const{imageDTO:t}=e,n=ee(),r=L(En),{t:o}=Z(),{isOpen:s,onOpen:i,onClose:l}=Mr(),u=d.useCallback(()=>{l(),t&&n(c5({image_name:t.image_name}))},[n,t,l]);return a.jsx(qd,{isOpen:s,onClose:l,triggerComponent:a.jsx(Te,{onClick:i,icon:a.jsx(DZ,{}),"aria-label":o("parameters.upscale")}),children:a.jsxs($,{sx:{flexDirection:"column",gap:4},children:[a.jsx(uue,{}),a.jsx(it,{size:"sm",isDisabled:!t||r,onClick:u,children:o("parameters.upscaleImage")})]})})},fue=d.memo(due),pue=ie([xe,wn],({gallery:e,system:t,ui:n,config:r},o)=>{const{isProcessing:s,isConnected:i,shouldConfirmOnDelete:l,progressImage:u}=t,{shouldShowImageDetails:p,shouldHidePreview:h,shouldShowProgressInViewer:m}=n,{shouldFetchMetadataFromApi:v}=r,b=e.selection[e.selection.length-1];return{canDeleteImage:i&&!s,shouldConfirmOnDelete:l,isProcessing:s,isConnected:i,shouldDisableToolbarButtons:!!u||!b,shouldShowImageDetails:p,activeTabName:o,shouldHidePreview:h,shouldShowProgressInViewer:m,lastSelectedImage:b,shouldFetchMetadataFromApi:v}},{memoizeOptions:{resultEqualityCheck:_t}}),hue=e=>{const t=ee(),{isProcessing:n,isConnected:r,shouldDisableToolbarButtons:o,shouldShowImageDetails:s,lastSelectedImage:i,shouldShowProgressInViewer:l,shouldFetchMetadataFromApi:u}=L(pue),p=Xt("upscaling").isFeatureEnabled,h=tl(),{t:m}=Z(),{recallBothPrompts:v,recallSeed:b,recallAllParameters:y}=xg(),{currentData:x}=Wr((i==null?void 0:i.image_name)??Er.skipToken),w=d.useMemo(()=>i?{image:i,shouldFetchMetadataFromApi:u}:Er.skipToken,[i,u]),{metadata:k,workflow:_,isLoading:j}=Fb(w,{selectFromResult:F=>{var V,X;return{isLoading:F.isFetching,metadata:(V=F==null?void 0:F.currentData)==null?void 0:V.metadata,workflow:(X=F==null?void 0:F.currentData)==null?void 0:X.workflow}}}),I=d.useCallback(()=>{_&&t(Wb(_))},[t,_]),E=d.useCallback(()=>{y(k)},[k,y]);Ze("a",()=>{},[k,y]);const M=d.useCallback(()=>{b(k==null?void 0:k.seed)},[k==null?void 0:k.seed,b]);Ze("s",M,[x]);const D=d.useCallback(()=>{v(k==null?void 0:k.positive_prompt,k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt)},[k==null?void 0:k.negative_prompt,k==null?void 0:k.positive_prompt,k==null?void 0:k.positive_style_prompt,k==null?void 0:k.negative_style_prompt,v]);Ze("p",D,[x]),Ze("w",I,[_]);const R=d.useCallback(()=>{t(UM()),t(gm(x))},[t,x]);Ze("shift+i",R,[x]);const A=d.useCallback(()=>{x&&t(c5({image_name:x.image_name}))},[t,x]),O=d.useCallback(()=>{x&&t(vm([x]))},[t,x]);Ze("Shift+U",()=>{A()},{enabled:()=>!!(p&&!o&&r&&!n)},[p,x,o,r,n]);const T=d.useCallback(()=>t(gA(!s)),[t,s]);Ze("i",()=>{x?T():h({title:m("toast.metadataLoadFailed"),status:"error",duration:2500,isClosable:!0})},[x,s,h]),Ze("delete",()=>{O()},[t,x]);const K=d.useCallback(()=>{t(Wj(!l))},[t,l]);return a.jsx(a.Fragment,{children:a.jsxs($,{sx:{flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:2},...e,children:[a.jsx(mn,{isAttached:!0,isDisabled:o,children:a.jsxs(Nd,{children:[a.jsx(Td,{as:Te,"aria-label":`${m("parameters.sendTo")}...`,tooltip:`${m("parameters.sendTo")}...`,isDisabled:!x,icon:a.jsx(QZ,{})}),a.jsx(Ka,{motionProps:vc,children:x&&a.jsx(GM,{imageDTO:x})})]})}),a.jsxs(mn,{isAttached:!0,isDisabled:o,children:[a.jsx(Te,{isLoading:j,icon:a.jsx(yg,{}),tooltip:`${m("nodes.loadWorkflow")} (W)`,"aria-label":`${m("nodes.loadWorkflow")} (W)`,isDisabled:!_,onClick:I}),a.jsx(Te,{isLoading:j,icon:a.jsx(FE,{}),tooltip:`${m("parameters.usePrompt")} (P)`,"aria-label":`${m("parameters.usePrompt")} (P)`,isDisabled:!(k!=null&&k.positive_prompt),onClick:D}),a.jsx(Te,{isLoading:j,icon:a.jsx(BE,{}),tooltip:`${m("parameters.useSeed")} (S)`,"aria-label":`${m("parameters.useSeed")} (S)`,isDisabled:!(k!=null&&k.seed),onClick:M}),a.jsx(Te,{isLoading:j,icon:a.jsx(ME,{}),tooltip:`${m("parameters.useAll")} (A)`,"aria-label":`${m("parameters.useAll")} (A)`,isDisabled:!k,onClick:E})]}),p&&a.jsx(mn,{isAttached:!0,isDisabled:o,children:p&&a.jsx(fue,{imageDTO:x})}),a.jsx(mn,{isAttached:!0,isDisabled:o,children:a.jsx(Te,{icon:a.jsx(DE,{}),tooltip:`${m("parameters.info")} (I)`,"aria-label":`${m("parameters.info")} (I)`,isChecked:s,onClick:T})}),a.jsx(mn,{isAttached:!0,children:a.jsx(Te,{"aria-label":m("settings.displayInProgress"),tooltip:m("settings.displayInProgress"),icon:a.jsx(zZ,{}),isChecked:l,onClick:K})}),a.jsx(mn,{isAttached:!0,children:a.jsx(lue,{onClick:O,isDisabled:o})})]})})},mue=d.memo(hue),gue=ie([xe,Vb],(e,t)=>{var _,j;const{data:n,status:r}=vA.endpoints.listImages.select(t)(e),{data:o}=e.gallery.galleryView==="images"?mw.endpoints.getBoardImagesTotal.select(t.board_id??"none")(e):mw.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(e),s=e.gallery.selection[e.gallery.selection.length-1],i=r==="pending";if(!n||!s||o===0)return{isFetching:i,queryArgs:t,isOnFirstImage:!0,isOnLastImage:!0};const l={...t,offset:n.ids.length,limit:e5},u=bA.getSelectors(),p=u.selectAll(n),h=p.findIndex(I=>I.image_name===s.image_name),m=Ni(h+1,0,p.length-1),v=Ni(h-1,0,p.length-1),b=(_=p[m])==null?void 0:_.image_name,y=(j=p[v])==null?void 0:j.image_name,x=b?u.selectById(n,b):void 0,w=y?u.selectById(n,y):void 0,k=p.length;return{loadedImagesCount:p.length,currentImageIndex:h,areMoreImagesAvailable:(o??0)>k,isFetching:r==="pending",nextImage:x,prevImage:w,queryArgs:l}},{memoizeOptions:{resultEqualityCheck:_t}}),zO=()=>{const e=ee(),{nextImage:t,prevImage:n,areMoreImagesAvailable:r,isFetching:o,queryArgs:s,loadedImagesCount:i,currentImageIndex:l}=L(gue),u=d.useCallback(()=>{n&&e(gw(n))},[e,n]),p=d.useCallback(()=>{t&&e(gw(t))},[e,t]),[h]=Jj(),m=d.useCallback(()=>{h(s)},[h,s]);return{handlePrevImage:u,handleNextImage:p,isOnFirstImage:l===0,isOnLastImage:l!==void 0&&l===i-1,nextImage:t,prevImage:n,areMoreImagesAvailable:r,handleLoadMoreImages:m,isFetching:o}};function vue(e){return Ne({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 bue=({label:e,value:t,onClick:n,isLink:r,labelPosition:o,withCopy:s=!1})=>{const{t:i}=Z();return t?a.jsxs($,{gap:2,children:[n&&a.jsx(Rt,{label:`Recall ${e}`,children:a.jsx(ps,{"aria-label":i("accessibility.useThisParameter"),icon:a.jsx(vue,{}),size:"xs",variant:"ghost",fontSize:20,onClick:n})}),s&&a.jsx(Rt,{label:`Copy ${e}`,children:a.jsx(ps,{"aria-label":`Copy ${e}`,icon:a.jsx(Wc,{}),size:"xs",variant:"ghost",fontSize:14,onClick:()=>navigator.clipboard.writeText(t.toString())})}),a.jsxs($,{direction:o?"column":"row",children:[a.jsxs(ye,{fontWeight:"semibold",whiteSpace:"pre-wrap",pr:2,children:[e,":"]}),r?a.jsxs(Mm,{href:t.toString(),isExternal:!0,wordBreak:"break-all",children:[t.toString()," ",a.jsx(CM,{mx:"2px"})]}):a.jsx(ye,{overflowY:"scroll",wordBreak:"break-all",children:t.toString()})]})]}):null},$r=d.memo(bue),xue=e=>{const{metadata:t}=e,{t:n}=Z(),{recallPositivePrompt:r,recallNegativePrompt:o,recallSeed:s,recallCfgScale:i,recallModel:l,recallScheduler:u,recallSteps:p,recallWidth:h,recallHeight:m,recallStrength:v,recallLoRA:b}=xg(),y=d.useCallback(()=>{r(t==null?void 0:t.positive_prompt)},[t==null?void 0:t.positive_prompt,r]),x=d.useCallback(()=>{o(t==null?void 0:t.negative_prompt)},[t==null?void 0:t.negative_prompt,o]),w=d.useCallback(()=>{s(t==null?void 0:t.seed)},[t==null?void 0:t.seed,s]),k=d.useCallback(()=>{l(t==null?void 0:t.model)},[t==null?void 0:t.model,l]),_=d.useCallback(()=>{h(t==null?void 0:t.width)},[t==null?void 0:t.width,h]),j=d.useCallback(()=>{m(t==null?void 0:t.height)},[t==null?void 0:t.height,m]),I=d.useCallback(()=>{u(t==null?void 0:t.scheduler)},[t==null?void 0:t.scheduler,u]),E=d.useCallback(()=>{p(t==null?void 0:t.steps)},[t==null?void 0:t.steps,p]),M=d.useCallback(()=>{i(t==null?void 0:t.cfg_scale)},[t==null?void 0:t.cfg_scale,i]),D=d.useCallback(()=>{v(t==null?void 0:t.strength)},[t==null?void 0:t.strength,v]),R=d.useCallback(A=>{b(A)},[b]);return!t||Object.keys(t).length===0?null:a.jsxs(a.Fragment,{children:[t.created_by&&a.jsx($r,{label:n("metadata.createdBy"),value:t.created_by}),t.generation_mode&&a.jsx($r,{label:n("metadata.generationMode"),value:t.generation_mode}),t.positive_prompt&&a.jsx($r,{label:n("metadata.positivePrompt"),labelPosition:"top",value:t.positive_prompt,onClick:y}),t.negative_prompt&&a.jsx($r,{label:n("metadata.NegativePrompt"),labelPosition:"top",value:t.negative_prompt,onClick:x}),t.seed!==void 0&&t.seed!==null&&a.jsx($r,{label:n("metadata.seed"),value:t.seed,onClick:w}),t.model!==void 0&&t.model!==null&&t.model.model_name&&a.jsx($r,{label:n("metadata.model"),value:t.model.model_name,onClick:k}),t.width&&a.jsx($r,{label:n("metadata.width"),value:t.width,onClick:_}),t.height&&a.jsx($r,{label:n("metadata.height"),value:t.height,onClick:j}),t.scheduler&&a.jsx($r,{label:n("metadata.scheduler"),value:t.scheduler,onClick:I}),t.steps&&a.jsx($r,{label:n("metadata.steps"),value:t.steps,onClick:E}),t.cfg_scale!==void 0&&t.cfg_scale!==null&&a.jsx($r,{label:n("metadata.cfgScale"),value:t.cfg_scale,onClick:M}),t.strength&&a.jsx($r,{label:n("metadata.strength"),value:t.strength,onClick:D}),t.loras&&t.loras.map((A,O)=>{if(Kj(A.lora))return a.jsx($r,{label:"LoRA",value:`${A.lora.model_name} - ${A.weight}`,onClick:()=>R(A)},O)})]})},yue=d.memo(xue),Cue=({image:e})=>{const{t}=Z(),{shouldFetchMetadataFromApi:n}=L(Oy),{metadata:r,workflow:o}=Fb({image:e,shouldFetchMetadataFromApi:n},{selectFromResult:s=>{var i,l;return{metadata:(i=s==null?void 0:s.currentData)==null?void 0:i.metadata,workflow:(l=s==null?void 0:s.currentData)==null?void 0:l.workflow}}});return a.jsxs($,{layerStyle:"first",sx:{padding:4,gap:1,flexDirection:"column",width:"full",height:"full",borderRadius:"base",position:"absolute",overflow:"hidden"},children:[a.jsxs($,{gap:2,children:[a.jsx(ye,{fontWeight:"semibold",children:"File:"}),a.jsxs(Mm,{href:e.image_url,isExternal:!0,maxW:"calc(100% - 3rem)",children:[e.image_name,a.jsx(CM,{mx:"2px"})]})]}),a.jsx(yue,{metadata:r}),a.jsxs(Ji,{variant:"line",sx:{display:"flex",flexDir:"column",w:"full",h:"full"},children:[a.jsxs(el,{children:[a.jsx(Pr,{children:t("metadata.metadata")}),a.jsx(Pr,{children:t("metadata.imageDetails")}),a.jsx(Pr,{children:t("metadata.workflow")})]}),a.jsxs(Fc,{children:[a.jsx(mo,{children:r?a.jsx(Ri,{data:r,label:t("metadata.metadata")}):a.jsx(Kn,{label:t("metadata.noMetaData")})}),a.jsx(mo,{children:e?a.jsx(Ri,{data:e,label:t("metadata.imageDetails")}):a.jsx(Kn,{label:t("metadata.noImageDetails")})}),a.jsx(mo,{children:o?a.jsx(Ri,{data:o,label:t("metadata.workflow")}):a.jsx(Kn,{label:t("metadata.noWorkFlow")})})]})]})]})},wue=d.memo(Cue),Kv={color:"base.100",pointerEvents:"auto"},Sue=()=>{const{t:e}=Z(),{handlePrevImage:t,handleNextImage:n,isOnFirstImage:r,isOnLastImage:o,handleLoadMoreImages:s,areMoreImagesAvailable:i,isFetching:l}=zO();return a.jsxs(Ie,{sx:{position:"relative",height:"100%",width:"100%"},children:[a.jsx(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineStart:0},children:!r&&a.jsx(ps,{"aria-label":e("accessibility.previousImage"),icon:a.jsx(bZ,{size:64}),variant:"unstyled",onClick:t,boxSize:16,sx:Kv})}),a.jsxs(Ie,{sx:{pos:"absolute",top:"50%",transform:"translate(0, -50%)",insetInlineEnd:0},children:[!o&&a.jsx(ps,{"aria-label":e("accessibility.nextImage"),icon:a.jsx(xZ,{size:64}),variant:"unstyled",onClick:n,boxSize:16,sx:Kv}),o&&i&&!l&&a.jsx(ps,{"aria-label":e("accessibility.loadMore"),icon:a.jsx(vZ,{size:64}),variant:"unstyled",onClick:s,boxSize:16,sx:Kv}),o&&i&&l&&a.jsx($,{sx:{w:16,h:16,alignItems:"center",justifyContent:"center"},children:a.jsx(Xi,{opacity:.5,size:"xl"})})]})]})},FO=d.memo(Sue),kue=ie([xe,xA],({ui:e,system:t},n)=>{const{shouldShowImageDetails:r,shouldHidePreview:o,shouldShowProgressInViewer:s}=e,{progressImage:i,shouldAntialiasProgressImage:l}=t;return{shouldShowImageDetails:r,shouldHidePreview:o,imageName:n==null?void 0:n.image_name,progressImage:i,shouldShowProgressInViewer:s,shouldAntialiasProgressImage:l}},{memoizeOptions:{resultEqualityCheck:_t}}),_ue=()=>{const{shouldShowImageDetails:e,imageName:t,progressImage:n,shouldShowProgressInViewer:r,shouldAntialiasProgressImage:o}=L(kue),{handlePrevImage:s,handleNextImage:i,isOnLastImage:l,handleLoadMoreImages:u,areMoreImagesAvailable:p,isFetching:h}=zO();Ze("left",()=>{s()},[s]),Ze("right",()=>{if(l&&p&&!h){u();return}l||i()},[l,p,u,h,i]);const{currentData:m}=Wr(t??Er.skipToken),v=d.useMemo(()=>{if(m)return{id:"current-image",payloadType:"IMAGE_DTO",payload:{imageDTO:m}}},[m]),b=d.useMemo(()=>({id:"current-image",actionType:"SET_CURRENT_IMAGE"}),[]),[y,x]=d.useState(!1),w=d.useRef(0),{t:k}=Z(),_=d.useCallback(()=>{x(!0),window.clearTimeout(w.current)},[]),j=d.useCallback(()=>{w.current=window.setTimeout(()=>{x(!1)},500)},[]);return a.jsxs($,{onMouseOver:_,onMouseOut:j,sx:{width:"full",height:"full",alignItems:"center",justifyContent:"center",position:"relative"},children:[n&&r?a.jsx(Qi,{src:n.dataURL,width:n.width,height:n.height,draggable:!1,sx:{objectFit:"contain",maxWidth:"full",maxHeight:"full",height:"auto",position:"absolute",borderRadius:"base",imageRendering:o?"auto":"pixelated"}}):a.jsx(oa,{imageDTO:m,droppableData:b,draggableData:v,isUploadDisabled:!0,fitContainer:!0,useThumbailFallback:!0,dropLabel:k("gallery.setCurrentImage"),noContentFallback:a.jsx(Kn,{icon:Ui,label:"No image selected"})}),e&&m&&a.jsx(Ie,{sx:{position:"absolute",top:"0",width:"full",height:"full",borderRadius:"base"},children:a.jsx(wue,{image:m})}),a.jsx(nr,{children:!e&&m&&y&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:"0",width:"100%",height:"100%",pointerEvents:"none"},children:a.jsx(FO,{})},"nextPrevButtons")})]})},jue=d.memo(_ue),Pue=()=>a.jsxs($,{sx:{position:"relative",flexDirection:"column",height:"100%",width:"100%",rowGap:4,alignItems:"center",justifyContent:"center"},children:[a.jsx(mue,{}),a.jsx(jue,{})]}),Iue=d.memo(Pue),Eue=()=>a.jsx(Ie,{layerStyle:"first",sx:{position:"relative",width:"100%",height:"100%",p:2,borderRadius:"base"},children:a.jsx($,{sx:{width:"100%",height:"100%"},children:a.jsx(Iue,{})})}),BO=d.memo(Eue),Mue=()=>{const e=d.useRef(null),t=d.useCallback(()=>{e.current&&e.current.setLayout([50,50])},[]),n=Ny();return a.jsx(Ie,{sx:{w:"full",h:"full"},children:a.jsxs(Sg,{ref:e,autoSaveId:"imageTab.content",direction:"horizontal",style:{height:"100%",width:"100%"},storage:n,units:"percentages",children:[a.jsx(Ua,{id:"imageTab.content.initImage",order:0,defaultSize:50,minSize:25,style:{position:"relative"},children:a.jsx(aue,{})}),a.jsx(im,{onDoubleClick:t}),a.jsx(Ua,{id:"imageTab.content.selectedImage",order:1,defaultSize:50,minSize:25,children:a.jsx(BO,{})})]})})},Oue=d.memo(Mue);var Due=function e(t,n){if(t===n)return!0;if(t&&n&&typeof t=="object"&&typeof n=="object"){if(t.constructor!==n.constructor)return!1;var r,o,s;if(Array.isArray(t)){if(r=t.length,r!=n.length)return!1;for(o=r;o--!==0;)if(!e(t[o],n[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if(s=Object.keys(t),r=s.length,r!==Object.keys(n).length)return!1;for(o=r;o--!==0;)if(!Object.prototype.hasOwnProperty.call(n,s[o]))return!1;for(o=r;o--!==0;){var i=s[o];if(!e(t[i],n[i]))return!1}return!0}return t!==t&&n!==n};const V_=Rc(Due);function wb(e){return e===null||typeof e!="object"?{}:Object.keys(e).reduce((t,n)=>{const r=e[n];return r!=null&&r!==!1&&(t[n]=r),t},{})}var Rue=Object.defineProperty,U_=Object.getOwnPropertySymbols,Aue=Object.prototype.hasOwnProperty,Nue=Object.prototype.propertyIsEnumerable,G_=(e,t,n)=>t in e?Rue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Tue=(e,t)=>{for(var n in t||(t={}))Aue.call(t,n)&&G_(e,n,t[n]);if(U_)for(var n of U_(t))Nue.call(t,n)&&G_(e,n,t[n]);return e};function HO(e,t){if(t===null||typeof t!="object")return{};const n=Tue({},t);return Object.keys(t).forEach(r=>{r.includes(`${String(e)}.`)&&delete n[r]}),n}const $ue="__MANTINE_FORM_INDEX__";function K_(e,t){return t?typeof t=="boolean"?t:Array.isArray(t)?t.includes(e.replace(/[.][0-9]/g,`.${$ue}`)):!1:!1}function q_(e,t,n){typeof n.value=="object"&&(n.value=Yl(n.value)),!n.enumerable||n.get||n.set||!n.configurable||!n.writable||t==="__proto__"?Object.defineProperty(e,t,n):e[t]=n.value}function Yl(e){if(typeof e!="object")return e;var t=0,n,r,o,s=Object.prototype.toString.call(e);if(s==="[object Object]"?o=Object.create(e.__proto__||null):s==="[object Array]"?o=Array(e.length):s==="[object Set]"?(o=new Set,e.forEach(function(i){o.add(Yl(i))})):s==="[object Map]"?(o=new Map,e.forEach(function(i,l){o.set(Yl(l),Yl(i))})):s==="[object Date]"?o=new Date(+e):s==="[object RegExp]"?o=new RegExp(e.source,e.flags):s==="[object DataView]"?o=new e.constructor(Yl(e.buffer)):s==="[object ArrayBuffer]"?o=e.slice(0):s.slice(-6)==="Array]"&&(o=new e.constructor(e)),o){for(r=Object.getOwnPropertySymbols(e);t0,errors:t}}function Sb(e,t,n="",r={}){return typeof e!="object"||e===null?r:Object.keys(e).reduce((o,s)=>{const i=e[s],l=`${n===""?"":`${n}.`}${s}`,u=Vs(l,t);let p=!1;return typeof i=="function"&&(o[l]=i(u,t,l)),typeof i=="object"&&Array.isArray(u)&&(p=!0,u.forEach((h,m)=>Sb(i,t,`${l}.${m}`,o))),typeof i=="object"&&typeof u=="object"&&u!==null&&(p||Sb(i,t,l,o)),o},r)}function kb(e,t){return X_(typeof e=="function"?e(t):Sb(e,t))}function Op(e,t,n){if(typeof e!="string")return{hasError:!1,error:null};const r=kb(t,n),o=Object.keys(r.errors).find(s=>e.split(".").every((i,l)=>i===s.split(".")[l]));return{hasError:!!o,error:o?r.errors[o]:null}}function Lue(e,{from:t,to:n},r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o],i=o[t];return s.splice(t,1),s.splice(n,0,i),Mg(e,s,r)}var zue=Object.defineProperty,Y_=Object.getOwnPropertySymbols,Fue=Object.prototype.hasOwnProperty,Bue=Object.prototype.propertyIsEnumerable,Q_=(e,t,n)=>t in e?zue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Hue=(e,t)=>{for(var n in t||(t={}))Fue.call(t,n)&&Q_(e,n,t[n]);if(Y_)for(var n of Y_(t))Bue.call(t,n)&&Q_(e,n,t[n]);return e};function Wue(e,{from:t,to:n},r){const o=`${e}.${t}`,s=`${e}.${n}`,i=Hue({},r);return Object.keys(r).every(l=>{let u,p;if(l.startsWith(o)&&(u=l,p=l.replace(o,s)),l.startsWith(s)&&(u=l.replace(s,o),p=l),u&&p){const h=i[u],m=i[p];return m===void 0?delete i[u]:i[u]=m,h===void 0?delete i[p]:i[p]=h,!1}return!0}),i}function Vue(e,t,n){const r=Vs(e,n);return Array.isArray(r)?Mg(e,r.filter((o,s)=>s!==t),n):n}var Uue=Object.defineProperty,Z_=Object.getOwnPropertySymbols,Gue=Object.prototype.hasOwnProperty,Kue=Object.prototype.propertyIsEnumerable,J_=(e,t,n)=>t in e?Uue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,que=(e,t)=>{for(var n in t||(t={}))Gue.call(t,n)&&J_(e,n,t[n]);if(Z_)for(var n of Z_(t))Kue.call(t,n)&&J_(e,n,t[n]);return e};function ej(e,t){const n=e.substring(t.length+1).split(".")[0];return parseInt(n,10)}function tj(e,t,n,r){if(t===void 0)return n;const o=`${String(e)}`;let s=n;r===-1&&(s=HO(`${o}.${t}`,s));const i=que({},s),l=new Set;return Object.entries(s).filter(([u])=>{if(!u.startsWith(`${o}.`))return!1;const p=ej(u,o);return Number.isNaN(p)?!1:p>=t}).forEach(([u,p])=>{const h=ej(u,o),m=u.replace(`${o}.${h}`,`${o}.${h+r}`);i[m]=p,l.add(m),l.has(u)||delete i[u]}),i}function Xue(e,t,n,r){const o=Vs(e,r);if(!Array.isArray(o))return r;const s=[...o];return s.splice(typeof n=="number"?n:s.length,0,t),Mg(e,s,r)}function nj(e,t){const n=Object.keys(e);if(typeof t=="string"){const r=n.filter(o=>o.startsWith(`${t}.`));return e[t]||r.some(o=>e[o])||!1}return n.some(r=>e[r])}function Yue(e){return t=>{if(!t)e(t);else if(typeof t=="function")e(t);else if(typeof t=="object"&&"nativeEvent"in t){const{currentTarget:n}=t;n instanceof HTMLInputElement?n.type==="checkbox"?e(n.checked):e(n.value):(n instanceof HTMLTextAreaElement||n instanceof HTMLSelectElement)&&e(n.value)}else e(t)}}var Que=Object.defineProperty,Zue=Object.defineProperties,Jue=Object.getOwnPropertyDescriptors,rj=Object.getOwnPropertySymbols,ede=Object.prototype.hasOwnProperty,tde=Object.prototype.propertyIsEnumerable,oj=(e,t,n)=>t in e?Que(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ea=(e,t)=>{for(var n in t||(t={}))ede.call(t,n)&&oj(e,n,t[n]);if(rj)for(var n of rj(t))tde.call(t,n)&&oj(e,n,t[n]);return e},qv=(e,t)=>Zue(e,Jue(t));function il({initialValues:e={},initialErrors:t={},initialDirty:n={},initialTouched:r={},clearInputErrorOnChange:o=!0,validateInputOnChange:s=!1,validateInputOnBlur:i=!1,transformValues:l=p=>p,validate:u}={}){const[p,h]=d.useState(r),[m,v]=d.useState(n),[b,y]=d.useState(e),[x,w]=d.useState(wb(t)),k=d.useRef(e),_=U=>{k.current=U},j=d.useCallback(()=>h({}),[]),I=U=>{const G=U?Ea(Ea({},b),U):b;_(G),v({})},E=d.useCallback(U=>w(G=>wb(typeof U=="function"?U(G):U)),[]),M=d.useCallback(()=>w({}),[]),D=d.useCallback(()=>{y(e),M(),_(e),v({}),j()},[]),R=d.useCallback((U,G)=>E(te=>qv(Ea({},te),{[U]:G})),[]),A=d.useCallback(U=>E(G=>{if(typeof U!="string")return G;const te=Ea({},G);return delete te[U],te}),[]),O=d.useCallback(U=>v(G=>{if(typeof U!="string")return G;const te=HO(U,G);return delete te[U],te}),[]),T=d.useCallback((U,G)=>{const te=K_(U,s);O(U),h(ae=>qv(Ea({},ae),{[U]:!0})),y(ae=>{const oe=Mg(U,G,ae);if(te){const pe=Op(U,u,oe);pe.hasError?R(U,pe.error):A(U)}return oe}),!te&&o&&R(U,null)},[]),K=d.useCallback(U=>{y(G=>{const te=typeof U=="function"?U(G):U;return Ea(Ea({},G),te)}),o&&M()},[]),F=d.useCallback((U,G)=>{O(U),y(te=>Lue(U,G,te)),w(te=>Wue(U,G,te))},[]),V=d.useCallback((U,G)=>{O(U),y(te=>Vue(U,G,te)),w(te=>tj(U,G,te,-1))},[]),X=d.useCallback((U,G,te)=>{O(U),y(ae=>Xue(U,G,te,ae)),w(ae=>tj(U,te,ae,1))},[]),W=d.useCallback(()=>{const U=kb(u,b);return w(U.errors),U},[b,u]),z=d.useCallback(U=>{const G=Op(U,u,b);return G.hasError?R(U,G.error):A(U),G},[b,u]),Y=(U,{type:G="input",withError:te=!0,withFocus:ae=!0}={})=>{const pe={onChange:Yue(ue=>T(U,ue))};return te&&(pe.error=x[U]),G==="checkbox"?pe.checked=Vs(U,b):pe.value=Vs(U,b),ae&&(pe.onFocus=()=>h(ue=>qv(Ea({},ue),{[U]:!0})),pe.onBlur=()=>{if(K_(U,i)){const ue=Op(U,u,b);ue.hasError?R(U,ue.error):A(U)}}),pe},B=(U,G)=>te=>{te==null||te.preventDefault();const ae=W();ae.hasErrors?G==null||G(ae.errors,b,te):U==null||U(l(b),te)},q=U=>l(U||b),re=d.useCallback(U=>{U.preventDefault(),D()},[]),Q=U=>{if(U){const te=Vs(U,m);if(typeof te=="boolean")return te;const ae=Vs(U,b),oe=Vs(U,k.current);return!V_(ae,oe)}return Object.keys(m).length>0?nj(m):!V_(b,k.current)},le=d.useCallback(U=>nj(p,U),[p]),se=d.useCallback(U=>U?!Op(U,u,b).hasError:!kb(u,b).hasErrors,[b,u]);return{values:b,errors:x,setValues:K,setErrors:E,setFieldValue:T,setFieldError:R,clearFieldError:A,clearErrors:M,reset:D,validate:W,validateField:z,reorderListItem:F,removeListItem:V,insertListItem:X,getInputProps:Y,onSubmit:B,onReset:re,isDirty:Q,isTouched:le,setTouched:h,setDirty:v,resetTouched:j,resetDirty:I,isValid:se,getTransformedValues:q}}function gn(e){const{...t}=e,{base50:n,base100:r,base200:o,base300:s,base800:i,base700:l,base900:u,accent500:p,accent300:h}=Vd(),{colorMode:m}=la();return a.jsx(wE,{styles:()=>({input:{color:Ae(u,r)(m),backgroundColor:Ae(n,u)(m),borderColor:Ae(o,i)(m),borderWidth:2,outline:"none",":focus":{borderColor:Ae(h,p)(m)}},label:{color:Ae(l,s)(m),fontWeight:"normal",marginBottom:4}}),...t})}const nde=[{value:"sd-1",label:on["sd-1"]},{value:"sd-2",label:on["sd-2"]},{value:"sdxl",label:on.sdxl},{value:"sdxl-refiner",label:on["sdxl-refiner"]}];function Qd(e){const{...t}=e,{t:n}=Z();return a.jsx(In,{label:n("modelManager.baseModel"),data:nde,...t})}function VO(e){const{data:t}=u5(),{...n}=e;return a.jsx(In,{label:"Config File",placeholder:"Select A Config File",data:t||[],...n})}const rde=[{value:"normal",label:"Normal"},{value:"inpaint",label:"Inpaint"},{value:"depth",label:"Depth"}];function Og(e){const{...t}=e,{t:n}=Z();return a.jsx(In,{label:n("modelManager.variant"),data:rde,...t})}function um(e,t=!0){let n;t?n=new RegExp("[^\\\\/]+(?=\\.)"):n=new RegExp("[^\\\\/]+(?=[\\\\/]?$)");const r=e.match(n);return r?r[0]:""}function UO(e){const{t}=Z(),n=ee(),{model_path:r}=e,o=il({initialValues:{model_name:r?um(r):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"checkpoint",error:void 0,vae:"",variant:"normal",config:"configs\\stable-diffusion\\v1-inference.yaml"}}),[s]=d5(),[i,l]=d.useState(!1),u=p=>{s({body:p}).unwrap().then(h=>{n(Tt(Ft({title:t("modelManager.modelAdded",{modelName:p.model_name}),status:"success"}))),o.reset(),r&&n(kd(null))}).catch(h=>{h&&n(Tt(Ft({title:t("toast.modelAddFailed"),status:"error"})))})};return a.jsx("form",{onSubmit:o.onSubmit(p=>u(p)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(gn,{label:t("modelManager.model"),required:!0,...o.getInputProps("model_name")}),a.jsx(Qd,{label:t("modelManager.baseModel"),...o.getInputProps("base_model")}),a.jsx(gn,{label:t("modelManager.modelLocation"),required:!0,...o.getInputProps("path"),onBlur:p=>{if(o.values.model_name===""){const h=um(p.currentTarget.value);h&&o.setFieldValue("model_name",h)}}}),a.jsx(gn,{label:t("modelManager.description"),...o.getInputProps("description")}),a.jsx(gn,{label:t("modelManager.vaeLocation"),...o.getInputProps("vae")}),a.jsx(Og,{label:t("modelManager.variant"),...o.getInputProps("variant")}),a.jsxs($,{flexDirection:"column",width:"100%",gap:2,children:[i?a.jsx(gn,{required:!0,label:t("modelManager.customConfigFileLocation"),...o.getInputProps("config")}):a.jsx(VO,{required:!0,width:"100%",...o.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:t("modelManager.useCustomConfig")}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})]})})}function GO(e){const{t}=Z(),n=ee(),{model_path:r}=e,[o]=d5(),s=il({initialValues:{model_name:r?um(r,!1):"",base_model:"sd-1",model_type:"main",path:r||"",description:"",model_format:"diffusers",error:void 0,vae:"",variant:"normal"}}),i=l=>{o({body:l}).unwrap().then(u=>{n(Tt(Ft({title:t("modelManager.modelAdded",{modelName:l.model_name}),status:"success"}))),s.reset(),r&&n(kd(null))}).catch(u=>{u&&n(Tt(Ft({title:t("toast.modelAddFailed"),status:"error"})))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",gap:2,children:[a.jsx(gn,{required:!0,label:t("modelManager.model"),...s.getInputProps("model_name")}),a.jsx(Qd,{label:t("modelManager.baseModel"),...s.getInputProps("base_model")}),a.jsx(gn,{required:!0,label:t("modelManager.modelLocation"),placeholder:t("modelManager.modelLocationValidationMsg"),...s.getInputProps("path"),onBlur:l=>{if(s.values.model_name===""){const u=um(l.currentTarget.value,!1);u&&s.setFieldValue("model_name",u)}}}),a.jsx(gn,{label:t("modelManager.description"),...s.getInputProps("description")}),a.jsx(gn,{label:t("modelManager.vaeLocation"),...s.getInputProps("vae")}),a.jsx(Og,{label:t("modelManager.variant"),...s.getInputProps("variant")}),a.jsx(it,{mt:2,type:"submit",children:t("modelManager.addModel")})]})})}const KO=[{label:"Diffusers",value:"diffusers"},{label:"Checkpoint / Safetensors",value:"checkpoint"}];function ode(){const[e,t]=d.useState("diffusers"),{t:n}=Z();return a.jsxs($,{flexDirection:"column",gap:4,width:"100%",children:[a.jsx(In,{label:n("modelManager.modelType"),value:e,data:KO,onChange:r=>{r&&t(r)}}),a.jsxs($,{sx:{p:4,borderRadius:4,bg:"base.300",_dark:{bg:"base.850"}},children:[e==="diffusers"&&a.jsx(GO,{}),e==="checkpoint"&&a.jsx(UO,{})]})]})}const sde=[{label:"None",value:"none"},{label:"v_prediction",value:"v_prediction"},{label:"epsilon",value:"epsilon"},{label:"sample",value:"sample"}];function ade(){const e=ee(),{t}=Z(),n=L(l=>l.system.isProcessing),[r,{isLoading:o}]=f5(),s=il({initialValues:{location:"",prediction_type:void 0}}),i=l=>{const u={location:l.location,prediction_type:l.prediction_type==="none"?void 0:l.prediction_type};r({body:u}).unwrap().then(p=>{e(Tt(Ft({title:t("toast.modelAddSimple"),status:"success"}))),s.reset()}).catch(p=>{p&&(console.log(p),e(Tt(Ft({title:`${p.data.detail} `,status:"error"}))))})};return a.jsx("form",{onSubmit:s.onSubmit(l=>i(l)),style:{width:"100%"},children:a.jsxs($,{flexDirection:"column",width:"100%",gap:4,children:[a.jsx(gn,{label:t("modelManager.modelLocation"),placeholder:t("modelManager.simpleModelDesc"),w:"100%",...s.getInputProps("location")}),a.jsx(In,{label:t("modelManager.predictionType"),data:sde,defaultValue:"none",...s.getInputProps("prediction_type")}),a.jsx(it,{type:"submit",isLoading:o,isDisabled:o||n,children:t("modelManager.addModel")})]})})}function ide(){const[e,t]=d.useState("simple");return a.jsxs($,{flexDirection:"column",width:"100%",overflow:"scroll",maxHeight:window.innerHeight-250,gap:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{size:"sm",isChecked:e=="simple",onClick:()=>t("simple"),children:"Simple"}),a.jsx(it,{size:"sm",isChecked:e=="advanced",onClick:()=>t("advanced"),children:"Advanced"})]}),a.jsxs($,{sx:{p:4,borderRadius:4,background:"base.200",_dark:{background:"base.800"}},children:[e==="simple"&&a.jsx(ade,{}),e==="advanced"&&a.jsx(ode,{})]})]})}function lde(e){const{...t}=e;return a.jsx(m6,{w:"100%",...t,children:e.children})}function cde(){const e=L(x=>x.modelmanager.searchFolder),[t,n]=d.useState(""),{data:r}=Bo(Ci),{foundModels:o,alreadyInstalled:s,filteredModels:i}=p5({search_path:e||""},{selectFromResult:({data:x})=>{const w=RN(r==null?void 0:r.entities),k=rr(w,"path"),_=ON(x,k),j=LN(x,k);return{foundModels:x,alreadyInstalled:sj(j,t),filteredModels:sj(_,t)}}}),[l,{isLoading:u}]=f5(),p=ee(),{t:h}=Z(),m=d.useCallback(x=>{const w=x.currentTarget.id.split("\\").splice(-1)[0];l({body:{location:x.currentTarget.id}}).unwrap().then(k=>{p(Tt(Ft({title:`Added Model: ${w}`,status:"success"})))}).catch(k=>{k&&p(Tt(Ft({title:h("toast.modelAddFailed"),status:"error"})))})},[p,l,h]),v=d.useCallback(x=>{n(x.target.value)},[]),b=({models:x,showActions:w=!0})=>x.map(k=>a.jsxs($,{sx:{p:4,gap:4,alignItems:"center",borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{w:"100%",sx:{flexDirection:"column",minW:"25%"},children:[a.jsx(ye,{sx:{fontWeight:600},children:k.split("\\").slice(-1)[0]}),a.jsx(ye,{sx:{fontSize:"sm",color:"base.600",_dark:{color:"base.400"}},children:k})]}),w?a.jsxs($,{gap:2,children:[a.jsx(it,{id:k,onClick:m,isLoading:u,children:h("modelManager.quickAdd")}),a.jsx(it,{onClick:()=>p(kd(k)),isLoading:u,children:h("modelManager.advanced")})]}):a.jsx(ye,{sx:{fontWeight:600,p:2,borderRadius:4,color:"accent.50",bg:"accent.400",_dark:{color:"accent.100",bg:"accent.600"}},children:"Installed"})]},k));return(()=>e?!o||o.length===0?a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",height:96,userSelect:"none",bg:"base.200",_dark:{bg:"base.900"}},children:a.jsx(ye,{variant:"subtext",children:h("modelManager.noModels")})}):a.jsxs($,{sx:{flexDirection:"column",gap:2,w:"100%",minW:"50%"},children:[a.jsx(uo,{onChange:v,label:h("modelManager.search"),labelPos:"side"}),a.jsxs($,{p:2,gap:2,children:[a.jsxs(ye,{sx:{fontWeight:600},children:["Models Found: ",o.length]}),a.jsxs(ye,{sx:{fontWeight:600,color:"accent.500",_dark:{color:"accent.200"}},children:["Not Installed: ",i.length]})]}),a.jsx(lde,{offsetScrollbars:!0,children:a.jsxs($,{gap:2,flexDirection:"column",children:[b({models:i}),b({models:s,showActions:!1})]})})]}):null)()}const sj=(e,t)=>{const n=[];return Pn(e,r=>{if(!r)return null;r.includes(t)&&n.push(r)}),n};function ude(){const e=L(l=>l.modelmanager.advancedAddScanModel),{t}=Z(),[n,r]=d.useState("diffusers"),[o,s]=d.useState(!0);d.useEffect(()=>{e&&[".ckpt",".safetensors",".pth",".pt"].some(l=>e.endsWith(l))?r("checkpoint"):r("diffusers")},[e,r,o]);const i=ee();return e?a.jsxs(Ie,{as:vn.div,initial:{x:-100,opacity:0},animate:{x:0,opacity:1,transition:{duration:.2}},sx:{display:"flex",flexDirection:"column",minWidth:"40%",maxHeight:window.innerHeight-300,overflow:"scroll",p:4,gap:4,borderRadius:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsx(ye,{size:"xl",fontWeight:600,children:o||n==="checkpoint"?"Add Checkpoint Model":"Add Diffusers Model"}),a.jsx(Te,{icon:a.jsx(JZ,{}),"aria-label":t("modelManager.closeAdvanced"),onClick:()=>i(kd(null)),size:"sm"})]}),a.jsx(In,{label:t("modelManager.modelType"),value:n,data:KO,onChange:l=>{l&&(r(l),s(l==="checkpoint"))}}),o?a.jsx(UO,{model_path:e},e):a.jsx(GO,{model_path:e},e)]}):null}function dde(){const e=ee(),{t}=Z(),n=L(l=>l.modelmanager.searchFolder),{refetch:r}=p5({search_path:n||""}),o=il({initialValues:{folder:""}}),s=d.useCallback(l=>{e(vw(l.folder))},[e]),i=()=>{r()};return a.jsx("form",{onSubmit:o.onSubmit(l=>s(l)),style:{width:"100%"},children:a.jsxs($,{sx:{w:"100%",gap:2,borderRadius:4,alignItems:"center"},children:[a.jsxs($,{w:"100%",alignItems:"center",gap:4,minH:12,children:[a.jsx(ye,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",minW:"max-content",_dark:{color:"base.300"}},children:"Folder"}),n?a.jsx($,{sx:{w:"100%",p:2,px:4,bg:"base.300",borderRadius:4,fontSize:"sm",fontWeight:"bold",_dark:{bg:"base.700"}},children:n}):a.jsx(uo,{w:"100%",size:"md",...o.getInputProps("folder")})]}),a.jsxs($,{gap:2,children:[n?a.jsx(Te,{"aria-label":t("modelManager.scanAgain"),tooltip:t("modelManager.scanAgain"),icon:a.jsx(WE,{}),onClick:i,fontSize:18,size:"sm"}):a.jsx(Te,{"aria-label":t("modelManager.findModels"),tooltip:t("modelManager.findModels"),icon:a.jsx(XZ,{}),fontSize:18,size:"sm",type:"submit"}),a.jsx(Te,{"aria-label":t("modelManager.clearCheckpointFolder"),tooltip:t("modelManager.clearCheckpointFolder"),icon:a.jsx(Kr,{}),size:"sm",onClick:()=>{e(vw(null)),e(kd(null))},isDisabled:!n,colorScheme:"red"})]})]})})}const fde=d.memo(dde);function pde(){return a.jsxs($,{flexDirection:"column",w:"100%",gap:4,children:[a.jsx(fde,{}),a.jsxs($,{gap:4,children:[a.jsx($,{sx:{maxHeight:window.innerHeight-300,overflow:"scroll",gap:4,w:"100%"},children:a.jsx(cde,{})}),a.jsx(ude,{})]})]})}function hde(){const[e,t]=d.useState("add"),{t:n}=Z();return a.jsxs($,{flexDirection:"column",gap:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>t("add"),isChecked:e=="add",size:"sm",width:"100%",children:n("modelManager.addModel")}),a.jsx(it,{onClick:()=>t("scan"),isChecked:e=="scan",size:"sm",width:"100%",children:n("modelManager.scanForModels")})]}),e=="add"&&a.jsx(ide,{}),e=="scan"&&a.jsx(pde,{})]})}const mde=[{label:"Stable Diffusion 1",value:"sd-1"},{label:"Stable Diffusion 2",value:"sd-2"}];function gde(){var z,Y;const{t:e}=Z(),t=ee(),{data:n}=Bo(Ci),[r,{isLoading:o}]=yA(),[s,i]=d.useState("sd-1"),l=Pw(n==null?void 0:n.entities,(B,q)=>(B==null?void 0:B.model_format)==="diffusers"&&(B==null?void 0:B.base_model)==="sd-1"),u=Pw(n==null?void 0:n.entities,(B,q)=>(B==null?void 0:B.model_format)==="diffusers"&&(B==null?void 0:B.base_model)==="sd-2"),p=d.useMemo(()=>({"sd-1":l,"sd-2":u}),[l,u]),[h,m]=d.useState(((z=Object.keys(p[s]))==null?void 0:z[0])??null),[v,b]=d.useState(((Y=Object.keys(p[s]))==null?void 0:Y[1])??null),[y,x]=d.useState(null),[w,k]=d.useState(""),[_,j]=d.useState(.5),[I,E]=d.useState("weighted_sum"),[M,D]=d.useState("root"),[R,A]=d.useState(""),[O,T]=d.useState(!1),K=Object.keys(p[s]).filter(B=>B!==v&&B!==y),F=Object.keys(p[s]).filter(B=>B!==h&&B!==y),V=Object.keys(p[s]).filter(B=>B!==h&&B!==v),X=B=>{i(B),m(null),b(null)},W=()=>{const B=[];let q=[h,v,y];q=q.filter(Q=>Q!==null),q.forEach(Q=>{var se;const le=(se=Q==null?void 0:Q.split("/"))==null?void 0:se[2];le&&B.push(le)});const re={model_names:B,merged_model_name:w!==""?w:B.join("-"),alpha:_,interp:I,force:O,merge_dest_directory:M==="root"?void 0:R};r({base_model:s,body:re}).unwrap().then(Q=>{t(Tt(Ft({title:e("modelManager.modelsMerged"),status:"success"})))}).catch(Q=>{Q&&t(Tt(Ft({title:e("modelManager.modelsMergeFailed"),status:"error"})))})};return a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsxs($,{sx:{flexDirection:"column",rowGap:1},children:[a.jsx(ye,{children:e("modelManager.modelMergeHeaderHelp1")}),a.jsx(ye,{fontSize:"sm",variant:"subtext",children:e("modelManager.modelMergeHeaderHelp2")})]}),a.jsxs($,{columnGap:4,children:[a.jsx(In,{label:"Model Type",w:"100%",data:mde,value:s,onChange:X}),a.jsx(Kt,{label:e("modelManager.modelOne"),w:"100%",value:h,placeholder:e("modelManager.selectModel"),data:K,onChange:B=>m(B)}),a.jsx(Kt,{label:e("modelManager.modelTwo"),w:"100%",placeholder:e("modelManager.selectModel"),value:v,data:F,onChange:B=>b(B)}),a.jsx(Kt,{label:e("modelManager.modelThree"),data:V,w:"100%",placeholder:e("modelManager.selectModel"),clearable:!0,onChange:B=>{B?(x(B),E("weighted_sum")):(x(null),E("add_difference"))}})]}),a.jsx(uo,{label:e("modelManager.mergedModelName"),value:w,onChange:B=>k(B.target.value)}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(Xe,{label:e("modelManager.alpha"),min:.01,max:.99,step:.01,value:_,onChange:B=>j(B),withInput:!0,withReset:!0,handleReset:()=>j(.5),withSliderMarks:!0}),a.jsx(ye,{variant:"subtext",fontSize:"sm",children:e("modelManager.modelMergeAlphaHelp")})]}),a.jsxs($,{sx:{padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(ye,{fontWeight:500,fontSize:"sm",variant:"subtext",children:e("modelManager.interpolationType")}),a.jsx(ih,{value:I,onChange:B=>E(B),children:a.jsx($,{columnGap:4,children:y===null?a.jsxs(a.Fragment,{children:[a.jsx(zs,{value:"weighted_sum",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.weightedSum")})}),a.jsx(zs,{value:"sigmoid",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.sigmoid")})}),a.jsx(zs,{value:"inv_sigmoid",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.inverseSigmoid")})})]}):a.jsx(zs,{value:"add_difference",children:a.jsx(Rt,{label:e("modelManager.modelMergeInterpAddDifferenceHelp"),children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.addDifference")})})})})})]}),a.jsxs($,{sx:{flexDirection:"column",padding:4,borderRadius:"base",gap:4,bg:"base.200",_dark:{bg:"base.900"}},children:[a.jsxs($,{columnGap:4,children:[a.jsx(ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:e("modelManager.mergedModelSaveLocation")}),a.jsx(ih,{value:M,onChange:B=>D(B),children:a.jsxs($,{columnGap:4,children:[a.jsx(zs,{value:"root",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.invokeAIFolder")})}),a.jsx(zs,{value:"custom",children:a.jsx(ye,{fontSize:"sm",children:e("modelManager.custom")})})]})})]}),M==="custom"&&a.jsx(uo,{label:e("modelManager.mergedModelCustomSaveLocation"),value:R,onChange:B=>A(B.target.value)})]}),a.jsx(ur,{label:e("modelManager.ignoreMismatch"),isChecked:O,onChange:B=>T(B.target.checked),fontWeight:"500"}),a.jsx(it,{onClick:W,isLoading:o,isDisabled:h===null||v===null,children:e("modelManager.merge")})]})}const vde=Pe((e,t)=>{const{t:n}=Z(),{acceptButtonText:r=n("common.accept"),acceptCallback:o,cancelButtonText:s=n("common.cancel"),cancelCallback:i,children:l,title:u,triggerComponent:p}=e,{isOpen:h,onOpen:m,onClose:v}=Mr(),b=d.useRef(null),y=()=>{o(),v()},x=()=>{i&&i(),v()};return a.jsxs(a.Fragment,{children:[d.cloneElement(p,{onClick:m,ref:t}),a.jsx($d,{isOpen:h,leastDestructiveRef:b,onClose:v,isCentered:!0,children:a.jsx(Wo,{children:a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:u}),a.jsx(Vo,{children:l}),a.jsxs(gs,{children:[a.jsx(it,{ref:b,onClick:x,children:s}),a.jsx(it,{colorScheme:"error",onClick:y,ml:3,children:r})]})]})})})]})}),Gy=d.memo(vde);function bde(e){const{model:t}=e,n=ee(),{t:r}=Z(),[o,{isLoading:s}]=CA(),[i,l]=d.useState("InvokeAIRoot"),[u,p]=d.useState("");d.useEffect(()=>{l("InvokeAIRoot")},[t]);const h=()=>{l("InvokeAIRoot")},m=()=>{const v={base_model:t.base_model,model_name:t.model_name,convert_dest_directory:i==="Custom"?u:void 0};if(i==="Custom"&&u===""){n(Tt(Ft({title:r("modelManager.noCustomLocationProvided"),status:"error"})));return}n(Tt(Ft({title:`${r("modelManager.convertingModelBegin")}: ${t.model_name}`,status:"info"}))),o(v).unwrap().then(()=>{n(Tt(Ft({title:`${r("modelManager.modelConverted")}: ${t.model_name}`,status:"success"})))}).catch(()=>{n(Tt(Ft({title:`${r("modelManager.modelConversionFailed")}: ${t.model_name}`,status:"error"})))})};return a.jsxs(Gy,{title:`${r("modelManager.convert")} ${t.model_name}`,acceptCallback:m,cancelCallback:h,acceptButtonText:`${r("modelManager.convert")}`,triggerComponent:a.jsxs(it,{size:"sm","aria-label":r("modelManager.convertToDiffusers"),className:" modal-close-btn",isLoading:s,children:["🧨 ",r("modelManager.convertToDiffusers")]}),motionPreset:"slideInBottom",children:[a.jsxs($,{flexDirection:"column",rowGap:4,children:[a.jsx(ye,{children:r("modelManager.convertToDiffusersHelpText1")}),a.jsxs(Od,{children:[a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText2")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText3")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText4")}),a.jsx(lo,{children:r("modelManager.convertToDiffusersHelpText5")})]}),a.jsx(ye,{children:r("modelManager.convertToDiffusersHelpText6")})]}),a.jsxs($,{flexDir:"column",gap:2,children:[a.jsxs($,{marginTop:4,flexDir:"column",gap:2,children:[a.jsx(ye,{fontWeight:"600",children:r("modelManager.convertToDiffusersSaveLocation")}),a.jsx(ih,{value:i,onChange:v=>l(v),children:a.jsxs($,{gap:4,children:[a.jsx(zs,{value:"InvokeAIRoot",children:a.jsx(Rt,{label:"Save converted model in the InvokeAI root folder",children:r("modelManager.invokeRoot")})}),a.jsx(zs,{value:"Custom",children:a.jsx(Rt,{label:"Save converted model in a custom folder",children:r("modelManager.custom")})})]})})]}),i==="Custom"&&a.jsxs($,{flexDirection:"column",rowGap:2,children:[a.jsx(ye,{fontWeight:"500",fontSize:"sm",variant:"subtext",children:r("modelManager.customSaveLocation")}),a.jsx(uo,{value:u,onChange:v=>{p(v.target.value)},width:"full"})]})]})]})}function xde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=h5(),{data:s}=u5(),[i,l]=d.useState(!1);d.useEffect(()=>{s!=null&&s.includes(n.config)||l(!0)},[s,n.config]);const u=ee(),{t:p}=Z(),h=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"checkpoint",vae:n.vae?n.vae:"",config:n.config?n.config:"",variant:n.variant},validate:{path:v=>v.trim().length===0?"Must provide a path":null}}),m=d.useCallback(v=>{const b={base_model:n.base_model,model_name:n.model_name,body:v};r(b).unwrap().then(y=>{h.setValues(y),u(Tt(Ft({title:p("modelManager.modelUpdated"),status:"success"})))}).catch(y=>{h.reset(),u(Tt(Ft({title:p("modelManager.modelUpdateFailed"),status:"error"})))})},[h,u,n.base_model,n.model_name,p,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{justifyContent:"space-between",alignItems:"center",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model"]})]}),[""].includes(n.base_model)?a.jsx(da,{sx:{p:2,borderRadius:4,bg:"error.200",_dark:{bg:"error.400"}},children:"Conversion Not Supported"}):a.jsx(bde,{model:n})]}),a.jsx(Vr,{}),a.jsx($,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",children:a.jsx("form",{onSubmit:h.onSubmit(v=>m(v)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:p("modelManager.name"),...h.getInputProps("model_name")}),a.jsx(gn,{label:p("modelManager.description"),...h.getInputProps("description")}),a.jsx(Qd,{required:!0,...h.getInputProps("base_model")}),a.jsx(Og,{required:!0,...h.getInputProps("variant")}),a.jsx(gn,{required:!0,label:p("modelManager.modelLocation"),...h.getInputProps("path")}),a.jsx(gn,{label:p("modelManager.vaeLocation"),...h.getInputProps("vae")}),a.jsxs($,{flexDirection:"column",gap:2,children:[i?a.jsx(gn,{required:!0,label:p("modelManager.config"),...h.getInputProps("config")}):a.jsx(VO,{required:!0,...h.getInputProps("config")}),a.jsx(ur,{isChecked:i,onChange:()=>l(!i),label:"Use Custom Config"})]}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:p("modelManager.updateModel")})]})})})]})}function yde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=h5(),s=ee(),{t:i}=Z(),l=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"main",path:n.path?n.path:"",description:n.description?n.description:"",model_format:"diffusers",vae:n.vae?n.vae:"",variant:n.variant},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),u=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Tt(Ft({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Tt(Ft({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[l,s,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model"]})]}),a.jsx(Vr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>u(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(gn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Qd,{required:!0,...l.getInputProps("base_model")}),a.jsx(Og,{required:!0,...l.getInputProps("variant")}),a.jsx(gn,{required:!0,label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(gn,{label:i("modelManager.vaeLocation"),...l.getInputProps("vae")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function Cde(e){const t=L(En),{model:n}=e,[r,{isLoading:o}]=wA(),s=ee(),{t:i}=Z(),l=il({initialValues:{model_name:n.model_name?n.model_name:"",base_model:n.base_model,model_type:"lora",path:n.path?n.path:"",description:n.description?n.description:"",model_format:n.model_format},validate:{path:p=>p.trim().length===0?"Must provide a path":null}}),u=d.useCallback(p=>{const h={base_model:n.base_model,model_name:n.model_name,body:p};r(h).unwrap().then(m=>{l.setValues(m),s(Tt(Ft({title:i("modelManager.modelUpdated"),status:"success"})))}).catch(m=>{l.reset(),s(Tt(Ft({title:i("modelManager.modelUpdateFailed"),status:"error"})))})},[s,l,n.base_model,n.model_name,i,r]);return a.jsxs($,{flexDirection:"column",rowGap:4,width:"100%",children:[a.jsxs($,{flexDirection:"column",children:[a.jsx(ye,{fontSize:"lg",fontWeight:"bold",children:n.model_name}),a.jsxs(ye,{fontSize:"sm",color:"base.400",children:[on[n.base_model]," Model ⋅"," ",SA[n.model_format]," format"]})]}),a.jsx(Vr,{}),a.jsx("form",{onSubmit:l.onSubmit(p=>u(p)),children:a.jsxs($,{flexDirection:"column",overflowY:"scroll",gap:4,children:[a.jsx(gn,{label:i("modelManager.name"),...l.getInputProps("model_name")}),a.jsx(gn,{label:i("modelManager.description"),...l.getInputProps("description")}),a.jsx(Qd,{...l.getInputProps("base_model")}),a.jsx(gn,{label:i("modelManager.modelLocation"),...l.getInputProps("path")}),a.jsx(it,{type:"submit",isDisabled:t||o,isLoading:o,children:i("modelManager.updateModel")})]})})]})}function wde(e){const t=L(En),{t:n}=Z(),r=ee(),[o]=kA(),[s]=_A(),{model:i,isSelected:l,setSelectedModelId:u}=e,p=d.useCallback(()=>{u(i.id)},[i.id,u]),h=d.useCallback(()=>{const m={main:o,lora:s,onnx:o}[i.model_type];m(i).unwrap().then(v=>{r(Tt(Ft({title:`${n("modelManager.modelDeleted")}: ${i.model_name}`,status:"success"})))}).catch(v=>{v&&r(Tt(Ft({title:`${n("modelManager.modelDeleteFailed")}: ${i.model_name}`,status:"error"})))}),u(void 0)},[o,s,i,u,r,n]);return a.jsxs($,{sx:{gap:2,alignItems:"center",w:"full"},children:[a.jsx($,{as:it,isChecked:l,sx:{justifyContent:"start",p:2,borderRadius:"base",w:"full",alignItems:"center",bg:l?"accent.400":"base.100",color:l?"base.50":"base.800",_hover:{bg:l?"accent.500":"base.300",color:l?"base.50":"base.800"},_dark:{color:l?"base.50":"base.100",bg:l?"accent.600":"base.850",_hover:{color:l?"base.50":"base.100",bg:l?"accent.550":"base.700"}}},onClick:p,children:a.jsxs($,{gap:4,alignItems:"center",children:[a.jsx(da,{minWidth:14,p:.5,fontSize:"sm",variant:"solid",children:jA[i.base_model]}),a.jsx(Rt,{label:i.description,hasArrow:!0,placement:"bottom",children:a.jsx(ye,{sx:{fontWeight:500},children:i.model_name})})]})}),a.jsx(Gy,{title:n("modelManager.deleteModel"),acceptCallback:h,acceptButtonText:n("modelManager.delete"),triggerComponent:a.jsx(Te,{icon:a.jsx(nte,{}),"aria-label":n("modelManager.deleteConfig"),isDisabled:t,colorScheme:"error"}),children:a.jsxs($,{rowGap:4,flexDirection:"column",children:[a.jsx("p",{style:{fontWeight:"bold"},children:n("modelManager.deleteMsg1")}),a.jsx("p",{children:n("modelManager.deleteMsg2")})]})})]})}const Sde=e=>{const{selectedModelId:t,setSelectedModelId:n}=e,{t:r}=Z(),[o,s]=d.useState(""),[i,l]=d.useState("all"),{filteredDiffusersModels:u,isLoadingDiffusersModels:p}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredDiffusersModels:Pu(j,"main","diffusers",o),isLoadingDiffusersModels:I})}),{filteredCheckpointModels:h,isLoadingCheckpointModels:m}=Bo(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredCheckpointModels:Pu(j,"main","checkpoint",o),isLoadingCheckpointModels:I})}),{filteredLoraModels:v,isLoadingLoraModels:b}=Cd(void 0,{selectFromResult:({data:j,isLoading:I})=>({filteredLoraModels:Pu(j,"lora",void 0,o),isLoadingLoraModels:I})}),{filteredOnnxModels:y,isLoadingOnnxModels:x}=Yu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOnnxModels:Pu(j,"onnx","onnx",o),isLoadingOnnxModels:I})}),{filteredOliveModels:w,isLoadingOliveModels:k}=Yu(Ci,{selectFromResult:({data:j,isLoading:I})=>({filteredOliveModels:Pu(j,"onnx","olive",o),isLoadingOliveModels:I})}),_=d.useCallback(j=>{s(j.target.value)},[]);return a.jsx($,{flexDirection:"column",rowGap:4,width:"50%",minWidth:"50%",children:a.jsxs($,{flexDirection:"column",gap:4,paddingInlineEnd:4,children:[a.jsxs(mn,{isAttached:!0,children:[a.jsx(it,{onClick:()=>l("all"),isChecked:i==="all",size:"sm",children:r("modelManager.allModels")}),a.jsx(it,{size:"sm",onClick:()=>l("diffusers"),isChecked:i==="diffusers",children:r("modelManager.diffusersModels")}),a.jsx(it,{size:"sm",onClick:()=>l("checkpoint"),isChecked:i==="checkpoint",children:r("modelManager.checkpointModels")}),a.jsx(it,{size:"sm",onClick:()=>l("onnx"),isChecked:i==="onnx",children:r("modelManager.onnxModels")}),a.jsx(it,{size:"sm",onClick:()=>l("olive"),isChecked:i==="olive",children:r("modelManager.oliveModels")}),a.jsx(it,{size:"sm",onClick:()=>l("lora"),isChecked:i==="lora",children:r("modelManager.loraModels")})]}),a.jsx(uo,{onChange:_,label:r("modelManager.search"),labelPos:"side"}),a.jsxs($,{flexDirection:"column",gap:4,maxHeight:window.innerHeight-280,overflow:"scroll",children:[p&&a.jsx(Vl,{loadingMessage:"Loading Diffusers..."}),["all","diffusers"].includes(i)&&!p&&u.length>0&&a.jsx(Wl,{title:"Diffusers",modelList:u,selected:{selectedModelId:t,setSelectedModelId:n}},"diffusers"),m&&a.jsx(Vl,{loadingMessage:"Loading Checkpoints..."}),["all","checkpoint"].includes(i)&&!m&&h.length>0&&a.jsx(Wl,{title:"Checkpoints",modelList:h,selected:{selectedModelId:t,setSelectedModelId:n}},"checkpoints"),b&&a.jsx(Vl,{loadingMessage:"Loading LoRAs..."}),["all","lora"].includes(i)&&!b&&v.length>0&&a.jsx(Wl,{title:"LoRAs",modelList:v,selected:{selectedModelId:t,setSelectedModelId:n}},"loras"),k&&a.jsx(Vl,{loadingMessage:"Loading Olives..."}),["all","olive"].includes(i)&&!k&&w.length>0&&a.jsx(Wl,{title:"Olives",modelList:w,selected:{selectedModelId:t,setSelectedModelId:n}},"olive"),x&&a.jsx(Vl,{loadingMessage:"Loading ONNX..."}),["all","onnx"].includes(i)&&!x&&y.length>0&&a.jsx(Wl,{title:"ONNX",modelList:y,selected:{selectedModelId:t,setSelectedModelId:n}},"onnx")]})]})})},kde=d.memo(Sde),Pu=(e,t,n,r)=>{const o=[];return Pn(e==null?void 0:e.entities,s=>{if(!s)return;const i=s.model_name.toLowerCase().includes(r.toLowerCase()),l=n===void 0||s.model_format===n,u=s.model_type===t;i&&l&&u&&o.push(s)}),o},Ky=d.memo(e=>a.jsx($,{flexDirection:"column",gap:4,borderRadius:4,p:4,sx:{bg:"base.200",_dark:{bg:"base.800"}},children:e.children}));Ky.displayName="StyledModelContainer";const Wl=d.memo(e=>{const{title:t,modelList:n,selected:r}=e;return a.jsx(Ky,{children:a.jsxs($,{sx:{gap:2,flexDir:"column"},children:[a.jsx(ye,{variant:"subtext",fontSize:"sm",children:t}),n.map(o=>a.jsx(wde,{model:o,isSelected:r.selectedModelId===o.id,setSelectedModelId:r.setSelectedModelId},o.id))]})})});Wl.displayName="ModelListWrapper";const Vl=d.memo(({loadingMessage:e})=>a.jsx(Ky,{children:a.jsxs($,{justifyContent:"center",alignItems:"center",flexDirection:"column",p:4,gap:8,children:[a.jsx(Xi,{}),a.jsx(ye,{variant:"subtext",children:e||"Fetching..."})]})}));Vl.displayName="FetchingModelsLoader";function _de(){const[e,t]=d.useState(),{mainModel:n}=Bo(Ci,{selectFromResult:({data:s})=>({mainModel:e?s==null?void 0:s.entities[e]:void 0})}),{loraModel:r}=Cd(void 0,{selectFromResult:({data:s})=>({loraModel:e?s==null?void 0:s.entities[e]:void 0})}),o=n||r;return a.jsxs($,{sx:{gap:8,w:"full",h:"full"},children:[a.jsx(kde,{selectedModelId:e,setSelectedModelId:t}),a.jsx(jde,{model:o})]})}const jde=e=>{const{model:t}=e;return(t==null?void 0:t.model_format)==="checkpoint"?a.jsx(xde,{model:t},t.id):(t==null?void 0:t.model_format)==="diffusers"?a.jsx(yde,{model:t},t.id):(t==null?void 0:t.model_type)==="lora"?a.jsx(Cde,{model:t},t.id):a.jsx($,{sx:{w:"full",h:"full",justifyContent:"center",alignItems:"center",maxH:96,userSelect:"none"},children:a.jsx(ye,{variant:"subtext",children:"No Model Selected"})})};function Pde(){const{t:e}=Z();return a.jsxs($,{sx:{w:"full",p:4,borderRadius:4,gap:4,justifyContent:"space-between",alignItems:"center",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsxs($,{sx:{flexDirection:"column",gap:2},children:[a.jsx(ye,{sx:{fontWeight:600},children:e("modelManager.syncModels")}),a.jsx(ye,{fontSize:"sm",sx:{_dark:{color:"base.400"}},children:e("modelManager.syncModelsDesc")})]}),a.jsx(Uc,{})]})}function Ide(){return a.jsx($,{children:a.jsx(Pde,{})})}const aj=[{id:"modelManager",label:vt.t("modelManager.modelManager"),content:a.jsx(_de,{})},{id:"importModels",label:vt.t("modelManager.importModels"),content:a.jsx(hde,{})},{id:"mergeModels",label:vt.t("modelManager.mergeModels"),content:a.jsx(gde,{})},{id:"settings",label:vt.t("modelManager.settings"),content:a.jsx(Ide,{})}],Ede=()=>a.jsxs(Ji,{isLazy:!0,variant:"line",layerStyle:"first",sx:{w:"full",h:"full",p:4,gap:4,borderRadius:"base"},children:[a.jsx(el,{children:aj.map(e=>a.jsx(Pr,{sx:{borderTopRadius:"base"},children:e.label},e.id))}),a.jsx(Fc,{sx:{w:"full",h:"full"},children:aj.map(e=>a.jsx(mo,{sx:{w:"full",h:"full"},children:e.content},e.id))})]}),Mde=d.memo(Ede),Ode={enum:"",boolean:!1,BooleanCollection:[],BooleanPolymorphic:!1,ClipField:void 0,Collection:[],CollectionItem:void 0,ColorCollection:[],ColorField:void 0,ColorPolymorphic:void 0,ConditioningCollection:[],ConditioningField:void 0,ConditioningPolymorphic:void 0,ControlCollection:[],ControlField:void 0,ControlNetModelField:void 0,ControlPolymorphic:void 0,DenoiseMaskField:void 0,float:0,FloatCollection:[],FloatPolymorphic:0,ImageCollection:[],ImageField:void 0,ImagePolymorphic:void 0,integer:0,IntegerCollection:[],IntegerPolymorphic:0,IPAdapterField:void 0,IPAdapterModelField:void 0,LatentsCollection:[],LatentsField:void 0,LatentsPolymorphic:void 0,LoRAModelField:void 0,MainModelField:void 0,ONNXModelField:void 0,Scheduler:"euler",SDXLMainModelField:void 0,SDXLRefinerModelField:void 0,string:"",StringCollection:[],StringPolymorphic:"",UNetField:void 0,VaeField:void 0,VaeModelField:void 0},Dde=(e,t)=>{const n={id:e,name:t.name,type:t.type,label:"",fieldKind:"input"};return n.value=t.default??Ode[t.type],n},Rde=ie([e=>e.nodes],e=>e.nodeTemplates),Xv={dragHandle:`.${Zi}`},Ade=()=>{const e=L(Rde),t=Xb();return d.useCallback(n=>{var b;const r=Ba();let o=window.innerWidth/2,s=window.innerHeight/2;const i=(b=document.querySelector("#workflow-editor"))==null?void 0:b.getBoundingClientRect();i&&(o=i.width/2-d1/2,s=i.height/2-d1/2);const{x:l,y:u}=t.project({x:o,y:s});if(n==="current_image")return{...Xv,id:r,type:"current_image",position:{x:l,y:u},data:{id:r,type:"current_image",isOpen:!0,label:"Current Image"}};if(n==="notes")return{...Xv,id:r,type:"notes",position:{x:l,y:u},data:{id:r,isOpen:!0,label:"Notes",notes:"",type:"notes"}};const p=e[n];if(p===void 0){console.error(`Unable to find template ${n}.`);return}const h=bw(p.inputs,(y,x,w)=>{const k=Ba(),_=Dde(k,x);return y[w]=_,y},{}),m=bw(p.outputs,(y,x,w)=>{const _={id:Ba(),name:w,type:x.type,fieldKind:"output"};return y[w]=_,y},{});return{...Xv,id:r,type:"invocation",position:{x:l,y:u},data:{id:r,type:n,version:p.version,label:"",notes:"",isOpen:!0,embedWorkflow:!1,isIntermediate:!0,inputs:h,outputs:m}}},[e,t])},qO=d.forwardRef(({label:e,description:t,...n},r)=>a.jsx("div",{ref:r,...n,children:a.jsxs("div",{children:[a.jsx(ye,{fontWeight:600,children:e}),a.jsx(ye,{size:"xs",sx:{color:"base.600",_dark:{color:"base.500"}},children:t})]})}));qO.displayName="AddNodePopoverSelectItem";const Nde=(e,t)=>{const n=new RegExp(e.trim().replace(/[-[\]{}()*+!<=:?./\\^$|#,]/g,"").split(" ").join(".*"),"gi");return n.test(t.label)||n.test(t.description)||t.tags.some(r=>n.test(r))},Tde=()=>{const e=ee(),t=Ade(),n=tl(),{t:r}=Z(),o=ie([xe],({nodes:y})=>{const x=rr(y.nodeTemplates,w=>({label:w.title,value:w.type,description:w.description,tags:w.tags}));return x.push({label:r("nodes.currentImage"),value:"current_image",description:r("nodes.currentImageDescription"),tags:["progress"]}),x.push({label:r("nodes.notes"),value:"notes",description:r("nodes.notesDescription"),tags:["notes"]}),x.sort((w,k)=>w.label.localeCompare(k.label)),{data:x,t:r}},we),{data:s}=L(o),i=L(y=>y.nodes.isAddNodePopoverOpen),l=d.useRef(null),u=d.useCallback(y=>{const x=t(y);if(!x){const w=r("nodes.unknownInvocation",{nodeType:y});n({status:"error",title:w});return}e(PA(x))},[e,t,n,r]),p=d.useCallback(y=>{y&&u(y)},[u]),h=d.useCallback(()=>{e(IA())},[e]),m=d.useCallback(()=>{e(m5())},[e]),v=d.useCallback(y=>{y.preventDefault(),m(),setTimeout(()=>{var x;(x=l.current)==null||x.focus()},0)},[m]),b=d.useCallback(()=>{h()},[h]);return Ze(["shift+a","space"],v),Ze(["escape"],b),a.jsxs(Fm,{initialFocusRef:l,isOpen:i,onClose:h,placement:"bottom",openDelay:0,closeDelay:0,closeOnBlur:!0,returnFocusOnClose:!0,children:[a.jsx(bP,{children:a.jsx($,{sx:{position:"absolute",top:"15%",insetInlineStart:"50%",pointerEvents:"none"}})}),a.jsx(Bm,{sx:{p:0,top:-1,shadow:"dark-lg",borderColor:"accent.300",borderWidth:"2px",borderStyle:"solid",_dark:{borderColor:"accent.400"}},children:a.jsx(Ax,{sx:{p:0},children:a.jsx(Kt,{inputRef:l,selectOnBlur:!1,placeholder:r("nodes.nodeSearch"),value:null,data:s,maxDropdownHeight:400,nothingFound:r("nodes.noMatchingNodes"),itemComponent:qO,filter:Nde,onChange:p,hoverOnSearchChange:!0,onDropdownClose:h,sx:{width:"32rem",input:{padding:"0.5rem"}}})})})]})},$de=d.memo(Tde);var Lde="\0",gi="\0",ij="",wr,Si,Lr,hd,fc,pc,so,as,Ta,is,$a,Fs,Bs,hc,mc,Hs,Oo,md,_b,_j;let zde=(_j=class{constructor(t){en(this,md);en(this,wr,!0);en(this,Si,!1);en(this,Lr,!1);en(this,hd,void 0);en(this,fc,()=>{});en(this,pc,()=>{});en(this,so,{});en(this,as,{});en(this,Ta,{});en(this,is,{});en(this,$a,{});en(this,Fs,{});en(this,Bs,{});en(this,hc,0);en(this,mc,0);en(this,Hs,void 0);en(this,Oo,void 0);t&&(ro(this,wr,t.hasOwnProperty("directed")?t.directed:!0),ro(this,Si,t.hasOwnProperty("multigraph")?t.multigraph:!1),ro(this,Lr,t.hasOwnProperty("compound")?t.compound:!1)),Se(this,Lr)&&(ro(this,Hs,{}),ro(this,Oo,{}),Se(this,Oo)[gi]={})}isDirected(){return Se(this,wr)}isMultigraph(){return Se(this,Si)}isCompound(){return Se(this,Lr)}setGraph(t){return ro(this,hd,t),this}graph(){return Se(this,hd)}setDefaultNodeLabel(t){return ro(this,fc,t),typeof t!="function"&&ro(this,fc,()=>t),this}nodeCount(){return Se(this,hc)}nodes(){return Object.keys(Se(this,so))}sources(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,as)[n]).length===0)}sinks(){var t=this;return this.nodes().filter(n=>Object.keys(Se(t,is)[n]).length===0)}setNodes(t,n){var r=arguments,o=this;return t.forEach(function(s){r.length>1?o.setNode(s,n):o.setNode(s)}),this}setNode(t,n){return Se(this,so).hasOwnProperty(t)?(arguments.length>1&&(Se(this,so)[t]=n),this):(Se(this,so)[t]=arguments.length>1?n:Se(this,fc).call(this,t),Se(this,Lr)&&(Se(this,Hs)[t]=gi,Se(this,Oo)[t]={},Se(this,Oo)[gi][t]=!0),Se(this,as)[t]={},Se(this,Ta)[t]={},Se(this,is)[t]={},Se(this,$a)[t]={},++bu(this,hc)._,this)}node(t){return Se(this,so)[t]}hasNode(t){return Se(this,so).hasOwnProperty(t)}removeNode(t){var n=this;if(Se(this,so).hasOwnProperty(t)){var r=o=>n.removeEdge(Se(n,Fs)[o]);delete Se(this,so)[t],Se(this,Lr)&&(os(this,md,_b).call(this,t),delete Se(this,Hs)[t],this.children(t).forEach(function(o){n.setParent(o)}),delete Se(this,Oo)[t]),Object.keys(Se(this,as)[t]).forEach(r),delete Se(this,as)[t],delete Se(this,Ta)[t],Object.keys(Se(this,is)[t]).forEach(r),delete Se(this,is)[t],delete Se(this,$a)[t],--bu(this,hc)._}return this}setParent(t,n){if(!Se(this,Lr))throw new Error("Cannot set parent in a non-compound graph");if(n===void 0)n=gi;else{n+="";for(var r=n;r!==void 0;r=this.parent(r))if(r===t)throw new Error("Setting "+n+" as parent of "+t+" would create a cycle");this.setNode(n)}return this.setNode(t),os(this,md,_b).call(this,t),Se(this,Hs)[t]=n,Se(this,Oo)[n][t]=!0,this}parent(t){if(Se(this,Lr)){var n=Se(this,Hs)[t];if(n!==gi)return n}}children(t=gi){if(Se(this,Lr)){var n=Se(this,Oo)[t];if(n)return Object.keys(n)}else{if(t===gi)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var n=Se(this,Ta)[t];if(n)return Object.keys(n)}successors(t){var n=Se(this,$a)[t];if(n)return Object.keys(n)}neighbors(t){var n=this.predecessors(t);if(n){const o=new Set(n);for(var r of this.successors(t))o.add(r);return Array.from(o.values())}}isLeaf(t){var n;return this.isDirected()?n=this.successors(t):n=this.neighbors(t),n.length===0}filterNodes(t){var n=new this.constructor({directed:Se(this,wr),multigraph:Se(this,Si),compound:Se(this,Lr)});n.setGraph(this.graph());var r=this;Object.entries(Se(this,so)).forEach(function([i,l]){t(i)&&n.setNode(i,l)}),Object.values(Se(this,Fs)).forEach(function(i){n.hasNode(i.v)&&n.hasNode(i.w)&&n.setEdge(i,r.edge(i))});var o={};function s(i){var l=r.parent(i);return l===void 0||n.hasNode(l)?(o[i]=l,l):l in o?o[l]:s(l)}return Se(this,Lr)&&n.nodes().forEach(i=>n.setParent(i,s(i))),n}setDefaultEdgeLabel(t){return ro(this,pc,t),typeof t!="function"&&ro(this,pc,()=>t),this}edgeCount(){return Se(this,mc)}edges(){return Object.values(Se(this,Fs))}setPath(t,n){var r=this,o=arguments;return t.reduce(function(s,i){return o.length>1?r.setEdge(s,i,n):r.setEdge(s,i),i}),this}setEdge(){var t,n,r,o,s=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(t=i.v,n=i.w,r=i.name,arguments.length===2&&(o=arguments[1],s=!0)):(t=i,n=arguments[1],r=arguments[3],arguments.length>2&&(o=arguments[2],s=!0)),t=""+t,n=""+n,r!==void 0&&(r=""+r);var l=Tu(Se(this,wr),t,n,r);if(Se(this,Bs).hasOwnProperty(l))return s&&(Se(this,Bs)[l]=o),this;if(r!==void 0&&!Se(this,Si))throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(n),Se(this,Bs)[l]=s?o:Se(this,pc).call(this,t,n,r);var u=Fde(Se(this,wr),t,n,r);return t=u.v,n=u.w,Object.freeze(u),Se(this,Fs)[l]=u,lj(Se(this,Ta)[n],t),lj(Se(this,$a)[t],n),Se(this,as)[n][l]=u,Se(this,is)[t][l]=u,bu(this,mc)._++,this}edge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r);return Se(this,Bs)[o]}edgeAsObj(){const t=this.edge(...arguments);return typeof t!="object"?{label:t}:t}hasEdge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r);return Se(this,Bs).hasOwnProperty(o)}removeEdge(t,n,r){var o=arguments.length===1?Yv(Se(this,wr),arguments[0]):Tu(Se(this,wr),t,n,r),s=Se(this,Fs)[o];return s&&(t=s.v,n=s.w,delete Se(this,Bs)[o],delete Se(this,Fs)[o],cj(Se(this,Ta)[n],t),cj(Se(this,$a)[t],n),delete Se(this,as)[n][o],delete Se(this,is)[t][o],bu(this,mc)._--),this}inEdges(t,n){var r=Se(this,as)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.v===n):o}}outEdges(t,n){var r=Se(this,is)[t];if(r){var o=Object.values(r);return n?o.filter(s=>s.w===n):o}}nodeEdges(t,n){var r=this.inEdges(t,n);if(r)return r.concat(this.outEdges(t,n))}},wr=new WeakMap,Si=new WeakMap,Lr=new WeakMap,hd=new WeakMap,fc=new WeakMap,pc=new WeakMap,so=new WeakMap,as=new WeakMap,Ta=new WeakMap,is=new WeakMap,$a=new WeakMap,Fs=new WeakMap,Bs=new WeakMap,hc=new WeakMap,mc=new WeakMap,Hs=new WeakMap,Oo=new WeakMap,md=new WeakSet,_b=function(t){delete Se(this,Oo)[Se(this,Hs)[t]][t]},_j);function lj(e,t){e[t]?e[t]++:e[t]=1}function cj(e,t){--e[t]||delete e[t]}function Tu(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}return o+ij+s+ij+(r===void 0?Lde:r)}function Fde(e,t,n,r){var o=""+t,s=""+n;if(!e&&o>s){var i=o;o=s,s=i}var l={v:o,w:s};return r&&(l.name=r),l}function Yv(e,t){return Tu(e,t.v,t.w,t.name)}var qy=zde,Bde="2.1.13",Hde={Graph:qy,version:Bde},Wde=qy,Vde={write:Ude,read:qde};function Ude(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Gde(e),edges:Kde(e)};return e.graph()!==void 0&&(t.value=structuredClone(e.graph())),t}function Gde(e){return e.nodes().map(function(t){var n=e.node(t),r=e.parent(t),o={v:t};return n!==void 0&&(o.value=n),r!==void 0&&(o.parent=r),o})}function Kde(e){return e.edges().map(function(t){var n=e.edge(t),r={v:t.v,w:t.w};return t.name!==void 0&&(r.name=t.name),n!==void 0&&(r.value=n),r})}function qde(e){var t=new Wde(e.options).setGraph(e.value);return e.nodes.forEach(function(n){t.setNode(n.v,n.value),n.parent&&t.setParent(n.v,n.parent)}),e.edges.forEach(function(n){t.setEdge({v:n.v,w:n.w,name:n.name},n.value)}),t}var Xde=Yde;function Yde(e){var t={},n=[],r;function o(s){t.hasOwnProperty(s)||(t[s]=!0,r.push(s),e.successors(s).forEach(o),e.predecessors(s).forEach(o))}return e.nodes().forEach(function(s){r=[],o(s),r.length&&n.push(r)}),n}var Jn,Ws,gd,jb,vd,Pb,gc,Wp,jj;let Qde=(jj=class{constructor(){en(this,gd);en(this,vd);en(this,gc);en(this,Jn,[]);en(this,Ws,{})}size(){return Se(this,Jn).length}keys(){return Se(this,Jn).map(function(t){return t.key})}has(t){return Se(this,Ws).hasOwnProperty(t)}priority(t){var n=Se(this,Ws)[t];if(n!==void 0)return Se(this,Jn)[n].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return Se(this,Jn)[0].key}add(t,n){var r=Se(this,Ws);if(t=String(t),!r.hasOwnProperty(t)){var o=Se(this,Jn),s=o.length;return r[t]=s,o.push({key:t,priority:n}),os(this,vd,Pb).call(this,s),!0}return!1}removeMin(){os(this,gc,Wp).call(this,0,Se(this,Jn).length-1);var t=Se(this,Jn).pop();return delete Se(this,Ws)[t.key],os(this,gd,jb).call(this,0),t.key}decrease(t,n){var r=Se(this,Ws)[t];if(n>Se(this,Jn)[r].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+Se(this,Jn)[r].priority+" New: "+n);Se(this,Jn)[r].priority=n,os(this,vd,Pb).call(this,r)}},Jn=new WeakMap,Ws=new WeakMap,gd=new WeakSet,jb=function(t){var n=Se(this,Jn),r=2*t,o=r+1,s=t;r>1,!(n[o].priority1;function efe(e,t,n,r){return tfe(e,String(t),n||Jde,r||function(o){return e.outEdges(o)})}function tfe(e,t,n,r){var o={},s=new Zde,i,l,u=function(p){var h=p.v!==i?p.v:p.w,m=o[h],v=n(p),b=l.distance+v;if(v<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+p+" Weight: "+v);b0&&(i=s.removeMin(),l=o[i],l.distance!==Number.POSITIVE_INFINITY);)r(i).forEach(u);return o}var nfe=YO,rfe=ofe;function ofe(e,t,n){return e.nodes().reduce(function(r,o){return r[o]=nfe(e,o,t,n),r},{})}var QO=sfe;function sfe(e){var t=0,n=[],r={},o=[];function s(i){var l=r[i]={onStack:!0,lowlink:t,index:t++};if(n.push(i),e.successors(i).forEach(function(h){r.hasOwnProperty(h)?r[h].onStack&&(l.lowlink=Math.min(l.lowlink,r[h].index)):(s(h),l.lowlink=Math.min(l.lowlink,r[h].lowlink))}),l.lowlink===l.index){var u=[],p;do p=n.pop(),r[p].onStack=!1,u.push(p);while(i!==p);o.push(u)}}return e.nodes().forEach(function(i){r.hasOwnProperty(i)||s(i)}),o}var afe=QO,ife=lfe;function lfe(e){return afe(e).filter(function(t){return t.length>1||t.length===1&&e.hasEdge(t[0],t[0])})}var cfe=dfe,ufe=()=>1;function dfe(e,t,n){return ffe(e,t||ufe,n||function(r){return e.outEdges(r)})}function ffe(e,t,n){var r={},o=e.nodes();return o.forEach(function(s){r[s]={},r[s][s]={distance:0},o.forEach(function(i){s!==i&&(r[s][i]={distance:Number.POSITIVE_INFINITY})}),n(s).forEach(function(i){var l=i.v===s?i.w:i.v,u=t(i);r[s][l]={distance:u,predecessor:s}})}),o.forEach(function(s){var i=r[s];o.forEach(function(l){var u=r[l];o.forEach(function(p){var h=u[s],m=i[p],v=u[p],b=h.distance+m.distance;be.successors(l):l=>e.neighbors(l),o=n==="post"?gfe:vfe,s=[],i={};return t.forEach(l=>{if(!e.hasNode(l))throw new Error("Graph does not have node: "+l);o(l,r,i,s)}),s}function gfe(e,t,n,r){for(var o=[[e,!1]];o.length>0;){var s=o.pop();s[1]?r.push(s[0]):n.hasOwnProperty(s[0])||(n[s[0]]=!0,o.push([s[0],!0]),t8(t(s[0]),i=>o.push([i,!1])))}}function vfe(e,t,n,r){for(var o=[e];o.length>0;){var s=o.pop();n.hasOwnProperty(s)||(n[s]=!0,r.push(s),t8(t(s),i=>o.push(i)))}}function t8(e,t){for(var n=e.length;n--;)t(e[n],n,e);return e}var bfe=e8,xfe=yfe;function yfe(e,t){return bfe(e,t,"post")}var Cfe=e8,wfe=Sfe;function Sfe(e,t){return Cfe(e,t,"pre")}var kfe=qy,_fe=XO,jfe=Pfe;function Pfe(e,t){var n=new kfe,r={},o=new _fe,s;function i(u){var p=u.v===s?u.w:u.v,h=o.priority(p);if(h!==void 0){var m=t(u);m0;){if(s=o.removeMin(),r.hasOwnProperty(s))n.setEdge(s,r[s]);else{if(l)throw new Error("Input graph is not connected: "+e);l=!0}e.nodeEdges(s).forEach(i)}return n}var Ife={components:Xde,dijkstra:YO,dijkstraAll:rfe,findCycles:ife,floydWarshall:cfe,isAcyclic:pfe,postorder:xfe,preorder:wfe,prim:jfe,tarjan:QO,topsort:JO},dj=Hde,Efe={Graph:dj.Graph,json:Vde,alg:Ife,version:dj.version};const fj=Rc(Efe),Mfe=()=>{const e=Xb(),t=L(r=>r.nodes.shouldValidateGraph);return d.useCallback(({source:r,sourceHandle:o,target:s,targetHandle:i})=>{var b,y;if(!t)return!0;const l=e.getEdges(),u=e.getNodes();if(!(r&&o&&s&&i))return!1;const p=e.getNode(r),h=e.getNode(s);if(!(p&&h&&p.data&&h.data))return!1;const m=(b=p.data.outputs[o])==null?void 0:b.type,v=(y=h.data.inputs[i])==null?void 0:y.type;if(!m||!v||l.filter(x=>x.target===s&&x.targetHandle===i).find(x=>{x.source===r&&x.sourceHandle})||l.find(x=>x.target===s&&x.targetHandle===i)&&v!=="CollectionItem")return!1;if(m!==v){const x=m==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(m)&&!Gs.includes(m),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const E=g5[v],M=v5[E];return m===E||m===M})(),_=m==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(m);return x||w||k||_||j||m==="integer"&&v==="float"}return n8(r,s,u,l)},[e,t])},n8=(e,t,n,r)=>{const o=new fj.Graph;return n.forEach(s=>{o.setNode(s.id)}),r.forEach(s=>{o.setEdge(s.source,s.target)}),o.setEdge(e,t),fj.alg.isAcyclic(o)},fd=e=>`var(--invokeai-colors-${e.split(".").join("-")})`,Ofe=ie(xe,({nodes:e})=>{const{shouldAnimateEdges:t,currentConnectionFieldType:n,shouldColorEdges:r}=e,o=fd(n&&r?Sd[n].color:"base.500");let s="react-flow__custom_connection-path";return t&&(s=s.concat(" animated")),{stroke:o,className:s}}),Dfe=({fromX:e,fromY:t,fromPosition:n,toX:r,toY:o,toPosition:s})=>{const{stroke:i,className:l}=L(Ofe),u={sourceX:e,sourceY:t,sourcePosition:n,targetX:r,targetY:o,targetPosition:s},[p]=Yb(u);return a.jsx("g",{children:a.jsx("path",{fill:"none",stroke:i,strokeWidth:2,className:l,d:p,style:{opacity:.8}})})},Rfe=d.memo(Dfe),r8=(e,t,n,r,o)=>ie(xe,({nodes:s})=>{var v,b;const i=s.nodes.find(y=>y.id===e),l=s.nodes.find(y=>y.id===n),u=Cn(i)&&Cn(l),p=(i==null?void 0:i.selected)||(l==null?void 0:l.selected)||o,h=u?(b=(v=i==null?void 0:i.data)==null?void 0:v.outputs[t||""])==null?void 0:b.type:void 0,m=h&&s.shouldColorEdges?fd(Sd[h].color):fd("base.500");return{isSelected:p,shouldAnimate:s.shouldAnimateEdges&&p,stroke:m}},we),Afe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,data:l,selected:u,source:p,target:h,sourceHandleId:m,targetHandleId:v})=>{const b=d.useMemo(()=>r8(p,m,h,v,u),[u,p,m,h,v]),{isSelected:y,shouldAnimate:x}=L(b),[w,k,_]=Yb({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s}),{base500:j}=Vd();return a.jsxs(a.Fragment,{children:[a.jsx(b5,{path:w,markerEnd:i,style:{strokeWidth:y?3:2,stroke:j,opacity:y?.8:.5,animation:x?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:x?5:"none"}}),(l==null?void 0:l.count)&&l.count>1&&a.jsx(EA,{children:a.jsx($,{sx:{position:"absolute",transform:`translate(-50%, -50%) translate(${k}px,${_}px)`},className:"nodrag nopan",children:a.jsx(da,{variant:"solid",sx:{bg:"base.500",opacity:y?.8:.5,boxShadow:"base"},children:l.count})})})]})},Nfe=d.memo(Afe),Tfe=({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o,targetPosition:s,markerEnd:i,selected:l,source:u,target:p,sourceHandleId:h,targetHandleId:m})=>{const v=d.useMemo(()=>r8(u,h,p,m,l),[u,h,p,m,l]),{isSelected:b,shouldAnimate:y,stroke:x}=L(v),[w]=Yb({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:s});return a.jsx(b5,{path:w,markerEnd:i,style:{strokeWidth:b?3:2,stroke:x,opacity:b?.8:.5,animation:y?"dashdraw 0.5s linear infinite":void 0,strokeDasharray:y?5:"none"}})},$fe=d.memo(Tfe),Lfe=e=>{const{nodeId:t,width:n,children:r,selected:o}=e,{isMouseOverNode:s,handleMouseOut:i,handleMouseOver:l}=uO(t),u=d.useMemo(()=>ie(xe,({nodes:_})=>{var j;return((j=_.nodeExecutionStates[t])==null?void 0:j.status)===Ks.IN_PROGRESS}),[t]),p=L(u),[h,m,v,b]=ds("shadows",["nodeInProgress.light","nodeInProgress.dark","shadows.xl","shadows.base"]),y=ee(),x=Li(h,m),w=L(_=>_.nodes.nodeOpacity),k=d.useCallback(_=>{!_.ctrlKey&&!_.altKey&&!_.metaKey&&!_.shiftKey&&y(MA(t)),y(x5())},[y,t]);return a.jsxs(Ie,{onClick:k,onMouseEnter:l,onMouseLeave:i,className:Zi,sx:{h:"full",position:"relative",borderRadius:"base",w:n??d1,transitionProperty:"common",transitionDuration:"0.1s",cursor:"grab",opacity:w},children:[a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"base",pointerEvents:"none",shadow:`${v}, ${b}, ${b}`,zIndex:-1}}),a.jsx(Ie,{sx:{position:"absolute",top:0,insetInlineEnd:0,bottom:0,insetInlineStart:0,borderRadius:"md",pointerEvents:"none",transitionProperty:"common",transitionDuration:"normal",opacity:.7,shadow:p?x:void 0,zIndex:-1}}),r,a.jsx(cO,{isSelected:o,isHovered:s})]})},Dg=d.memo(Lfe),zfe=ie(xe,({system:e,gallery:t})=>({imageDTO:t.selection[t.selection.length-1],progressImage:e.progressImage})),Ffe=e=>{const{progressImage:t,imageDTO:n}=OA(zfe);return t?a.jsx(Qv,{nodeProps:e,children:a.jsx(Qi,{src:t.dataURL,sx:{w:"full",h:"full",objectFit:"contain",borderRadius:"base"}})}):n?a.jsx(Qv,{nodeProps:e,children:a.jsx(oa,{imageDTO:n,isDragDisabled:!0,useThumbailFallback:!0})}):a.jsx(Qv,{nodeProps:e,children:a.jsx(Kn,{})})},Bfe=d.memo(Ffe),Qv=e=>{const[t,n]=d.useState(!1),r=()=>{n(!0)},o=()=>{n(!1)};return a.jsx(Dg,{nodeId:e.nodeProps.id,selected:e.nodeProps.selected,width:384,children:a.jsxs($,{onMouseEnter:r,onMouseLeave:o,className:Zi,sx:{position:"relative",flexDirection:"column"},children:[a.jsx($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",alignItems:"center",justifyContent:"center",h:8},children:a.jsx(ye,{sx:{fontSize:"sm",fontWeight:600,color:"base.700",_dark:{color:"base.200"}},children:"Current Image"})}),a.jsxs($,{layerStyle:"nodeBody",sx:{w:"full",h:"full",borderBottomRadius:"base",p:2},children:[e.children,t&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.1}},exit:{opacity:0,transition:{duration:.1}},style:{position:"absolute",top:40,left:-2,right:-2,bottom:0,pointerEvents:"none"},children:a.jsx(FO,{})},"nextPrevButtons")]})]})})},Hfe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.embedWorkflow:!1},we),[e]);return L(t)},o8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Br(o.data.outputs,s=>DA.includes(s.type)):!1},we),[e]);return L(t)},Wfe=({nodeId:e})=>{const t=ee(),n=o8(e),r=Hfe(e),o=d.useCallback(s=>{t(RA({nodeId:e,embedWorkflow:s.target.checked}))},[t,e]);return n?a.jsxs(sn,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Hn,{sx:{fontSize:"xs",mb:"1px"},children:"Embed Workflow"}),a.jsx(Sm,{className:"nopan",size:"sm",onChange:o,isChecked:r})]}):null},Vfe=d.memo(Wfe),Ufe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.isIntermediate:!1},we),[e]);return L(t)},Gfe=({nodeId:e})=>{const t=ee(),n=o8(e),r=Ufe(e),o=d.useCallback(s=>{t(AA({nodeId:e,isIntermediate:!s.target.checked}))},[t,e]);return n?a.jsxs(sn,{as:$,sx:{alignItems:"center",gap:2,w:"auto"},children:[a.jsx(Hn,{sx:{fontSize:"xs",mb:"1px"},children:"Save to Gallery"}),a.jsx(Sm,{className:"nopan",size:"sm",onChange:o,isChecked:!r})]}):null},Kfe=d.memo(Gfe),qfe=({nodeId:e})=>a.jsxs($,{className:Zi,layerStyle:"nodeFooter",sx:{w:"full",borderBottomRadius:"base",px:2,py:0,h:6,justifyContent:"space-between"},children:[a.jsx(Vfe,{nodeId:e}),a.jsx(Kfe,{nodeId:e})]}),Xfe=d.memo(qfe),Yfe=({nodeId:e,isOpen:t})=>{const n=ee(),r=NA(),o=d.useCallback(()=>{n(TA({nodeId:e,isOpen:!t})),r(e)},[n,t,e,r]);return a.jsx(Te,{className:"nodrag",onClick:o,"aria-label":"Minimize",sx:{minW:8,w:8,h:8,color:"base.500",_dark:{color:"base.500"},_hover:{color:"base.700",_dark:{color:"base.300"}}},variant:"link",icon:a.jsx(dg,{sx:{transform:t?"rotate(0deg)":"rotate(180deg)",transitionProperty:"common",transitionDuration:"normal"}})})},Xy=d.memo(Yfe),s8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?o.data.label:!1},we),[e]);return L(t)},a8=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return!1;const s=o?r.nodeTemplates[o.data.type]:void 0;return s==null?void 0:s.title},we),[e]);return L(t)},Qfe=({nodeId:e,title:t})=>{const n=ee(),r=s8(e),o=a8(e),{t:s}=Z(),[i,l]=d.useState(""),u=d.useCallback(async h=>{n($A({nodeId:e,label:h})),l(r||t||o||s("nodes.problemSettingTitle"))},[n,e,t,o,r,s]),p=d.useCallback(h=>{l(h)},[]);return d.useEffect(()=>{l(r||t||o||s("nodes.problemSettingTitle"))},[r,o,t,s]),a.jsx($,{sx:{overflow:"hidden",w:"full",h:"full",alignItems:"center",justifyContent:"center",cursor:"text"},children:a.jsxs(jm,{as:$,value:i,onChange:p,onSubmit:u,sx:{alignItems:"center",position:"relative",w:"full",h:"full"},children:[a.jsx(_m,{fontSize:"sm",sx:{p:0,w:"full"},noOfLines:1}),a.jsx(km,{className:"nodrag",fontSize:"sm",sx:{p:0,fontWeight:700,_focusVisible:{p:0,boxShadow:"none"}}}),a.jsx(Zfe,{})]})})},i8=d.memo(Qfe);function Zfe(){const{isEditing:e,getEditButtonProps:t}=Q5(),n=d.useCallback(r=>{const{onClick:o}=t();o&&o(r)},[t]);return e?null:a.jsx(Ie,{className:Zi,onDoubleClick:n,sx:{position:"absolute",w:"full",h:"full",top:0,cursor:"grab"}})}const Yy=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return o==null?void 0:o.data},we),[e]);return L(t)},Jfe=({nodeId:e})=>{const t=Yy(e),{base400:n,base600:r}=Vd(),o=Li(n,r),s=d.useMemo(()=>({borderWidth:0,borderRadius:"3px",width:"1rem",height:"1rem",backgroundColor:o,zIndex:-1}),[o]);return Yp(t)?a.jsxs(a.Fragment,{children:[a.jsx(Ou,{type:"target",id:`${t.id}-collapsed-target`,isConnectable:!1,position:Ul.Left,style:{...s,left:"-0.5rem"}}),rr(t.inputs,i=>a.jsx(Ou,{type:"target",id:i.name,isConnectable:!1,position:Ul.Left,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-input-handle`)),a.jsx(Ou,{type:"source",id:`${t.id}-collapsed-source`,isConnectable:!1,position:Ul.Right,style:{...s,right:"-0.5rem"}}),rr(t.outputs,i=>a.jsx(Ou,{type:"source",id:i.name,isConnectable:!1,position:Ul.Right,style:{visibility:"hidden"}},`${t.id}-${i.name}-collapsed-output-handle`))]}):null},epe=d.memo(Jfe),tpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);return r.nodeTemplates[(o==null?void 0:o.data.type)??""]},we),[e]);return L(t)},npe=({nodeId:e})=>{const t=ee(),n=Yy(e),{t:r}=Z(),o=d.useCallback(s=>{t(LA({nodeId:e,notes:s.target.value}))},[t,e]);return Yp(n)?a.jsxs(sn,{children:[a.jsx(Hn,{children:r("nodes.notes")}),a.jsx(sa,{value:n==null?void 0:n.notes,onChange:o,rows:10})]}):null},rpe=d.memo(npe),ope=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{var i;const o=r.nodes.find(l=>l.id===e);if(!Cn(o))return!1;const s=r.nodeTemplates[(o==null?void 0:o.data.type)??""];return!(s!=null&&s.version)||!((i=o.data)!=null&&i.version)?!1:Rj(s.version,o.data.version)===0},we),[e]);return L(t)},spe=({nodeId:e})=>{const{isOpen:t,onOpen:n,onClose:r}=Mr(),o=s8(e),s=a8(e),i=ope(e),{t:l}=Z();return a.jsxs(a.Fragment,{children:[a.jsx(Rt,{label:a.jsx(l8,{nodeId:e}),placement:"top",shouldWrapChildren:!0,children:a.jsx($,{className:"nodrag",onClick:n,sx:{alignItems:"center",justifyContent:"center",w:8,h:8,cursor:"pointer"},children:a.jsx(Tn,{as:TE,sx:{boxSize:4,w:8,color:i?"base.400":"error.400"}})})}),a.jsxs(Hi,{isOpen:t,onClose:r,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{children:o||s||l("nodes.unknownNode")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsx(rpe,{nodeId:e})}),a.jsx(gs,{})]})]})]})},ape=d.memo(spe),l8=d.memo(({nodeId:e})=>{const t=Yy(e),n=tpe(e),{t:r}=Z(),o=d.useMemo(()=>t!=null&&t.label&&(n!=null&&n.title)?`${t.label} (${n.title})`:t!=null&&t.label&&!n?t.label:!(t!=null&&t.label)&&n?n.title:r("nodes.unknownNode"),[t,n,r]),s=d.useMemo(()=>!Yp(t)||!n?null:t.version?n.version?Mw(t.version,n.version,"<")?a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.updateNode"),")"]}):Mw(t.version,n.version,">")?a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.updateApp"),")"]}):a.jsxs(ye,{as:"span",children:[r("nodes.version")," ",t.version]}):a.jsxs(ye,{as:"span",sx:{color:"error.500"},children:[r("nodes.version")," ",t.version," (",r("nodes.unknownTemplate"),")"]}):a.jsx(ye,{as:"span",sx:{color:"error.500"},children:r("nodes.versionUnknown")}),[t,n,r]);return Yp(t)?a.jsxs($,{sx:{flexDir:"column"},children:[a.jsx(ye,{as:"span",sx:{fontWeight:600},children:o}),a.jsx(ye,{sx:{opacity:.7,fontStyle:"oblique 5deg"},children:n==null?void 0:n.description}),s,(t==null?void 0:t.notes)&&a.jsx(ye,{children:t.notes})]}):a.jsx(ye,{sx:{fontWeight:600},children:r("nodes.unknownNode")})});l8.displayName="TooltipContent";const Zv=3,pj={circle:{transitionProperty:"none",transitionDuration:"0s"},".chakra-progress__track":{stroke:"transparent"}},ipe=({nodeId:e})=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>r.nodeExecutionStates[e]),[e]),n=L(t);return n?a.jsx(Rt,{label:a.jsx(c8,{nodeExecutionState:n}),placement:"top",children:a.jsx($,{className:Zi,sx:{w:5,h:"full",alignItems:"center",justifyContent:"flex-end"},children:a.jsx(u8,{nodeExecutionState:n})})}):null},lpe=d.memo(ipe),c8=d.memo(({nodeExecutionState:e})=>{const{status:t,progress:n,progressImage:r}=e,{t:o}=Z();return t===Ks.PENDING?a.jsx(ye,{children:"Pending"}):t===Ks.IN_PROGRESS?r?a.jsxs($,{sx:{pos:"relative",pt:1.5,pb:.5},children:[a.jsx(Qi,{src:r.dataURL,sx:{w:32,h:32,borderRadius:"base",objectFit:"contain"}}),n!==null&&a.jsxs(da,{variant:"solid",sx:{pos:"absolute",top:2.5,insetInlineEnd:1},children:[Math.round(n*100),"%"]})]}):n!==null?a.jsxs(ye,{children:[o("nodes.executionStateInProgress")," (",Math.round(n*100),"%)"]}):a.jsx(ye,{children:o("nodes.executionStateInProgress")}):t===Ks.COMPLETED?a.jsx(ye,{children:o("nodes.executionStateCompleted")}):t===Ks.FAILED?a.jsx(ye,{children:o("nodes.executionStateError")}):null});c8.displayName="TooltipLabel";const u8=d.memo(e=>{const{progress:t,status:n}=e.nodeExecutionState;return n===Ks.PENDING?a.jsx(Tn,{as:IZ,sx:{boxSize:Zv,color:"base.600",_dark:{color:"base.300"}}}):n===Ks.IN_PROGRESS?t===null?a.jsx(N1,{isIndeterminate:!0,size:"14px",color:"base.500",thickness:14,sx:pj}):a.jsx(N1,{value:Math.round(t*100),size:"14px",color:"base.500",thickness:14,sx:pj}):n===Ks.COMPLETED?a.jsx(Tn,{as:OE,sx:{boxSize:Zv,color:"ok.600",_dark:{color:"ok.300"}}}):n===Ks.FAILED?a.jsx(Tn,{as:OZ,sx:{boxSize:Zv,color:"error.600",_dark:{color:"error.300"}}}):null});u8.displayName="StatusIcon";const cpe=({nodeId:e,isOpen:t})=>a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",justifyContent:"space-between",h:8,textAlign:"center",fontWeight:500,color:"base.700",_dark:{color:"base.200"}},children:[a.jsx(Xy,{nodeId:e,isOpen:t}),a.jsx(i8,{nodeId:e}),a.jsxs($,{alignItems:"center",children:[a.jsx(lpe,{nodeId:e}),a.jsx(ape,{nodeId:e})]}),!t&&a.jsx(epe,{nodeId:e})]}),upe=d.memo(cpe),dpe=(e,t,n,r)=>ie(xe,o=>{if(!r)return vt.t("nodes.noFieldType");const{currentConnectionFieldType:s,connectionStartParams:i,nodes:l,edges:u}=o.nodes;if(!i||!s)return vt.t("nodes.noConnectionInProgress");const{handleType:p,nodeId:h,handleId:m}=i;if(!p||!h||!m)return vt.t("nodes.noConnectionData");const v=n==="target"?r:s,b=n==="source"?r:s;if(e===h)return vt.t("nodes.cannotConnectToSelf");if(n===p)return n==="source"?vt.t("nodes.cannotConnectOutputToOutput"):vt.t("nodes.cannotConnectInputToInput");if(u.find(x=>x.target===e&&x.targetHandle===t)&&v!=="CollectionItem")return vt.t("nodes.inputMayOnlyHaveOneConnection");if(b!==v){const x=b==="CollectionItem"&&!Us.includes(v),w=v==="CollectionItem"&&!Us.includes(b)&&!Gs.includes(b),k=Gs.includes(v)&&(()=>{if(!Gs.includes(v))return!1;const E=g5[v],M=v5[E];return b===E||b===M})(),_=b==="Collection"&&(Us.includes(v)||Gs.includes(v)),j=v==="Collection"&&Us.includes(b);if(!(x||w||k||_||j||b==="integer"&&v==="float"))return vt.t("nodes.fieldTypesMustMatch")}return n8(p==="source"?h:e,p==="source"?e:h,l,u)?null:vt.t("nodes.connectionWouldCreateCycle")}),fpe=(e,t,n)=>{const r=d.useMemo(()=>ie(xe,({nodes:s})=>{var l;const i=s.nodes.find(u=>u.id===e);if(Cn(i))return(l=i==null?void 0:i.data[Ub[n]][t])==null?void 0:l.type},we),[t,n,e]);return L(r)},ppe=ie(xe,({nodes:e})=>e.currentConnectionFieldType!==null&&e.connectionStartParams!==null),d8=({nodeId:e,fieldName:t,kind:n})=>{const r=fpe(e,t,n),o=d.useMemo(()=>ie(xe,({nodes:v})=>!!v.edges.filter(b=>(n==="input"?b.target:b.source)===e&&(n==="input"?b.targetHandle:b.sourceHandle)===t).length),[t,n,e]),s=d.useMemo(()=>dpe(e,t,n==="input"?"target":"source",r),[e,t,n,r]),i=d.useMemo(()=>ie(xe,({nodes:v})=>{var b,y,x;return((b=v.connectionStartParams)==null?void 0:b.nodeId)===e&&((y=v.connectionStartParams)==null?void 0:y.handleId)===t&&((x=v.connectionStartParams)==null?void 0:x.handleType)==={input:"target",output:"source"}[n]}),[t,n,e]),l=L(o),u=L(ppe),p=L(i),h=L(s),m=d.useMemo(()=>!!(u&&h&&!p),[h,u,p]);return{isConnected:l,isConnectionInProgress:u,isConnectionStartField:p,connectionError:h,shouldDim:m}},hpe=e=>{const{fieldTemplate:t,handleType:n,isConnectionInProgress:r,isConnectionStartField:o,connectionError:s}=e,{name:i,type:l}=t,{color:u,title:p}=Sd[l],h=d.useMemo(()=>{const v=Us.includes(l),b=Gs.includes(l),y=zA.includes(l),x=fd(u),w={backgroundColor:v||b?"var(--invokeai-colors-base-900)":x,position:"absolute",width:"1rem",height:"1rem",borderWidth:v||b?4:0,borderStyle:"solid",borderColor:x,borderRadius:y?4:"100%",zIndex:1};return n==="target"?w.insetInlineStart="-1rem":w.insetInlineEnd="-1rem",r&&!o&&s&&(w.filter="opacity(0.4) grayscale(0.7)"),r&&s?o?w.cursor="grab":w.cursor="not-allowed":w.cursor="crosshair",w},[s,n,r,o,l,u]),m=d.useMemo(()=>r&&o?p:r&&s?s??p:p,[s,r,o,p]);return a.jsx(Rt,{label:m,placement:n==="target"?"start":"end",hasArrow:!0,openDelay:xm,children:a.jsx(Ou,{type:n,id:i,position:n==="target"?Ul.Left:Ul.Right,style:h})})},f8=d.memo(hpe),mpe=({nodeId:e,fieldName:t})=>{const n=kg(e,t,"output"),{isConnected:r,isConnectionInProgress:o,isConnectionStartField:s,connectionError:i,shouldDim:l}=d8({nodeId:e,fieldName:t,kind:"output"});return(n==null?void 0:n.fieldKind)!=="output"?a.jsx(Eb,{shouldDim:l,children:a.jsxs(sn,{sx:{color:"error.400",textAlign:"right",fontSize:"sm"},children:["Unknown output: ",t]})}):a.jsxs(Eb,{shouldDim:l,children:[a.jsx(Rt,{label:a.jsx(Ly,{nodeId:e,fieldName:t,kind:"output"}),openDelay:xm,placement:"top",shouldWrapChildren:!0,hasArrow:!0,children:a.jsx(sn,{isDisabled:r,pe:2,children:a.jsx(Hn,{sx:{mb:0,fontWeight:500},children:n==null?void 0:n.title})})}),a.jsx(f8,{fieldTemplate:n,handleType:"source",isConnectionInProgress:o,isConnectionStartField:s,connectionError:i})]})},gpe=d.memo(mpe),Eb=d.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",justifyContent:"flex-end"},children:t}));Eb.displayName="OutputFieldWrapper";const vpe=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{var i;const s=o.nodes.find(l=>l.id===e);if(Cn(s))return((i=s==null?void 0:s.data.inputs[t])==null?void 0:i.value)!==void 0},we),[t,e]);return L(n)},bpe=(e,t)=>{const n=d.useMemo(()=>ie(xe,({nodes:o})=>{const s=o.nodes.find(u=>u.id===e);if(!Cn(s))return;const i=o.nodeTemplates[(s==null?void 0:s.data.type)??""],l=i==null?void 0:i.inputs[t];return l==null?void 0:l.input},we),[t,e]);return L(n)},xpe=({nodeId:e,fieldName:t,kind:n,children:r})=>{const o=ee(),s=dO(e,t),i=fO(e,t,n),l=bpe(e,t),{t:u}=Z(),p=d.useCallback(w=>{w.preventDefault()},[]),h=d.useMemo(()=>ie(xe,({nodes:w})=>({isExposed:!!w.workflow.exposedFields.find(_=>_.nodeId===e&&_.fieldName===t)}),we),[t,e]),m=d.useMemo(()=>["any","direct"].includes(l??"__UNKNOWN_INPUT__"),[l]),{isExposed:v}=L(h),b=d.useCallback(()=>{o(FA({nodeId:e,fieldName:t}))},[o,t,e]),y=d.useCallback(()=>{o(o5({nodeId:e,fieldName:t}))},[o,t,e]),x=d.useMemo(()=>{const w=[];return m&&!v&&w.push(a.jsx(Wt,{icon:a.jsx(ol,{}),onClick:b,children:"Add to Linear View"},`${e}.${t}.expose-field`)),m&&v&&w.push(a.jsx(Wt,{icon:a.jsx(VZ,{}),onClick:y,children:"Remove from Linear View"},`${e}.${t}.unexpose-field`)),w},[t,b,y,v,m,e]);return a.jsx(ky,{menuProps:{size:"sm",isLazy:!0},menuButtonProps:{bg:"transparent",_hover:{bg:"transparent"}},renderMenu:()=>x.length?a.jsx(Ka,{sx:{visibility:"visible !important"},motionProps:vc,onContextMenu:p,children:a.jsx(Sc,{title:s||i||u("nodes.unknownField"),children:x})}):null,children:r})},ype=d.memo(xpe),Cpe=({nodeId:e,fieldName:t})=>{const n=kg(e,t,"input"),r=vpe(e,t),{isConnected:o,isConnectionInProgress:s,isConnectionStartField:i,connectionError:l,shouldDim:u}=d8({nodeId:e,fieldName:t,kind:"input"}),p=d.useMemo(()=>{if((n==null?void 0:n.fieldKind)!=="input"||!n.required)return!1;if(!o&&n.input==="connection"||!r&&!o&&n.input==="any")return!0},[n,o,r]);return(n==null?void 0:n.fieldKind)!=="input"?a.jsx(Mb,{shouldDim:u,children:a.jsxs(sn,{sx:{color:"error.400",textAlign:"left",fontSize:"sm"},children:["Unknown input: ",t]})}):a.jsxs(Mb,{shouldDim:u,children:[a.jsxs(sn,{isInvalid:p,isDisabled:o,sx:{alignItems:"stretch",justifyContent:"space-between",ps:n.input==="direct"?0:2,gap:2,h:"full",w:"full"},children:[a.jsx(ype,{nodeId:e,fieldName:t,kind:"input",children:h=>a.jsx(Hn,{sx:{display:"flex",alignItems:"center",h:"full",mb:0,px:1,gap:2},children:a.jsx(hO,{ref:h,nodeId:e,fieldName:t,kind:"input",isMissingInput:p,withTooltip:!0})})}),a.jsx(Ie,{children:a.jsx(_O,{nodeId:e,fieldName:t})})]}),n.input!=="direct"&&a.jsx(f8,{fieldTemplate:n,handleType:"target",isConnectionInProgress:s,isConnectionStartField:i,connectionError:l})]})},hj=d.memo(Cpe),Mb=d.memo(({shouldDim:e,children:t})=>a.jsx($,{sx:{position:"relative",minH:8,py:.5,alignItems:"center",opacity:e?.5:1,transitionProperty:"opacity",transitionDuration:"0.1s",w:"full",h:"full"},children:t}));Mb.displayName="InputFieldWrapper";const wpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.outputs).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},Spe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(s=>s.id===e);return Cn(o)?Br(o.data.outputs,s=>BA.includes(s.type)):!1},we),[e]);return L(t)},kpe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>i.input==="connection").filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},_pe=e=>{const t=d.useMemo(()=>ie(xe,({nodes:r})=>{const o=r.nodes.find(i=>i.id===e);if(!Cn(o))return[];const s=r.nodeTemplates[o.data.type];return s?rr(s.inputs).filter(i=>["any","direct"].includes(i.input)).filter(i=>!i.ui_hidden).sort((i,l)=>(i.ui_order??0)-(l.ui_order??0)).map(i=>i.name).filter(i=>i!=="is_intermediate"):[]},we),[e]);return L(t)},jpe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>{const s=kpe(e),i=_pe(e),l=wpe(e),u=Spe(e);return a.jsxs(Dg,{nodeId:e,selected:o,children:[a.jsx(upe,{nodeId:e,isOpen:t,label:n,selected:o,type:r}),t&&a.jsxs(a.Fragment,{children:[a.jsx($,{layerStyle:"nodeBody",sx:{flexDirection:"column",w:"full",h:"full",py:2,gap:1,borderBottomRadius:u?0:"base"},children:a.jsxs($,{sx:{flexDir:"column",px:2,w:"full",h:"full"},children:[a.jsxs(Ga,{gridTemplateColumns:"1fr auto",gridAutoRows:"1fr",children:[s.map((p,h)=>a.jsx(td,{gridColumnStart:1,gridRowStart:h+1,children:a.jsx(hj,{nodeId:e,fieldName:p})},`${e}.${p}.input-field`)),l.map((p,h)=>a.jsx(td,{gridColumnStart:2,gridRowStart:h+1,children:a.jsx(gpe,{nodeId:e,fieldName:p})},`${e}.${p}.output-field`))]}),i.map(p=>a.jsx(hj,{nodeId:e,fieldName:p},`${e}.${p}.input-field`))]})}),u&&a.jsx(Xfe,{nodeId:e})]})]})},Ppe=d.memo(jpe),Ipe=({nodeId:e,isOpen:t,label:n,type:r,selected:o})=>a.jsxs(Dg,{nodeId:e,selected:o,children:[a.jsxs($,{className:Zi,layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:t?0:"base",alignItems:"center",h:8,fontWeight:600,fontSize:"sm"},children:[a.jsx(Xy,{nodeId:e,isOpen:t}),a.jsx(ye,{sx:{w:"full",textAlign:"center",pe:8,color:"error.500",_dark:{color:"error.300"}},children:n?`${n} (${r})`:r})]}),t&&a.jsx($,{layerStyle:"nodeBody",sx:{userSelect:"auto",flexDirection:"column",w:"full",h:"full",p:4,gap:1,borderBottomRadius:"base",fontSize:"sm"},children:a.jsxs(Ie,{children:[a.jsx(ye,{as:"span",children:"Unknown node type: "}),a.jsx(ye,{as:"span",fontWeight:600,children:r})]})})]}),Epe=d.memo(Ipe),Mpe=e=>{const{data:t,selected:n}=e,{id:r,type:o,isOpen:s,label:i}=t,l=d.useMemo(()=>ie(xe,({nodes:p})=>!!p.nodeTemplates[o]),[o]);return L(l)?a.jsx(Ppe,{nodeId:r,isOpen:s,label:i,type:o,selected:n}):a.jsx(Epe,{nodeId:r,isOpen:s,label:i,type:o,selected:n})},Ope=d.memo(Mpe),Dpe=e=>{const{id:t,data:n,selected:r}=e,{notes:o,isOpen:s}=n,i=ee(),l=d.useCallback(u=>{i(HA({nodeId:t,value:u.target.value}))},[i,t]);return a.jsxs(Dg,{nodeId:t,selected:r,children:[a.jsxs($,{layerStyle:"nodeHeader",sx:{borderTopRadius:"base",borderBottomRadius:s?0:"base",alignItems:"center",justifyContent:"space-between",h:8},children:[a.jsx(Xy,{nodeId:t,isOpen:s}),a.jsx(i8,{nodeId:t,title:"Notes"}),a.jsx(Ie,{minW:8})]}),s&&a.jsx(a.Fragment,{children:a.jsx($,{layerStyle:"nodeBody",className:"nopan",sx:{cursor:"auto",flexDirection:"column",borderBottomRadius:"base",w:"full",h:"full",p:2,gap:1},children:a.jsx($,{className:"nopan",sx:{flexDir:"column",w:"full",h:"full"},children:a.jsx(sa,{value:o,onChange:l,rows:8,resize:"none",sx:{fontSize:"xs"}})})})})]})},Rpe=d.memo(Dpe),Ape=["Delete","Backspace"],Npe={collapsed:Nfe,default:$fe},Tpe={invocation:Ope,current_image:Bfe,notes:Rpe},$pe={hideAttribution:!0},Lpe=ie(xe,({nodes:e})=>{const{shouldSnapToGrid:t,selectionMode:n}=e;return{shouldSnapToGrid:t,selectionMode:n}},we),zpe=()=>{const e=ee(),t=L(j=>j.nodes.nodes),n=L(j=>j.nodes.edges),r=L(j=>j.nodes.viewport),{shouldSnapToGrid:o,selectionMode:s}=L(Lpe),i=Mfe(),[l]=ds("radii",["base"]),u=d.useCallback(j=>{e(WA(j))},[e]),p=d.useCallback(j=>{e(VA(j))},[e]),h=d.useCallback((j,I)=>{e(UA(I))},[e]),m=d.useCallback(j=>{e(GA(j))},[e]),v=d.useCallback(()=>{e(KA())},[e]),b=d.useCallback(j=>{e(qA(j))},[e]),y=d.useCallback(j=>{e(XA(j))},[e]),x=d.useCallback(({nodes:j,edges:I})=>{e(YA(j?j.map(E=>E.id):[])),e(QA(I?I.map(E=>E.id):[]))},[e]),w=d.useCallback((j,I)=>{e(ZA(I))},[e]),k=d.useCallback(()=>{e(x5())},[e]),_=d.useCallback(j=>{JA.set(j),j.fitView()},[]);return Ze(["Ctrl+c","Meta+c"],j=>{j.preventDefault(),e(e9())}),Ze(["Ctrl+a","Meta+a"],j=>{j.preventDefault(),e(t9())}),Ze(["Ctrl+v","Meta+v"],j=>{j.preventDefault(),e(n9())}),a.jsx(r9,{id:"workflow-editor",defaultViewport:r,nodeTypes:Tpe,edgeTypes:Npe,nodes:t,edges:n,onInit:_,onNodesChange:u,onEdgesChange:p,onEdgesDelete:b,onNodesDelete:y,onConnectStart:h,onConnect:m,onConnectEnd:v,onMoveEnd:w,connectionLineComponent:Rfe,onSelectionChange:x,isValidConnection:i,minZoom:.1,snapToGrid:o,snapGrid:[25,25],connectionRadius:30,proOptions:$pe,style:{borderRadius:l},onPaneClick:k,deleteKeyCode:Ape,selectionMode:s,children:a.jsx(cT,{})})},Fpe=()=>{const e=ee(),{t}=Z(),n=d.useCallback(()=>{e(m5())},[e]);return a.jsx($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:2},children:a.jsx(Te,{tooltip:t("nodes.addNodeToolTip"),"aria-label":t("nodes.addNode"),icon:a.jsx(ol,{}),onClick:n})})},Bpe=d.memo(Fpe),Hpe=()=>{const e=ee(),t=zP("nodes"),{t:n}=Z();return d.useCallback(o=>{if(!o)return;const s=new FileReader;s.onload=async()=>{const i=s.result;try{const l=JSON.parse(String(i)),u=o9.safeParse(l);if(!u.success){const{message:p}=s9(u.error,{prefix:n("nodes.workflowValidation")});t.error({error:a9(u.error)},p),e(Tt(Ft({title:n("nodes.unableToValidateWorkflow"),status:"error",duration:5e3}))),s.abort();return}e(Wb(u.data)),s.abort()}catch{e(Tt(Ft({title:n("nodes.unableToLoadWorkflow"),status:"error"})))}},s.readAsText(o)},[e,t,n])},Wpe=d.memo(e=>e.error.issues[0]?a.jsx(ye,{children:xw(e.error.issues[0],{prefix:null}).toString()}):a.jsx(Od,{children:e.error.issues.map((t,n)=>a.jsx(lo,{children:a.jsx(ye,{children:xw(t,{prefix:null}).toString()})},n))}));Wpe.displayName="WorkflowValidationErrorContent";const Vpe=()=>{const{t:e}=Z(),t=d.useRef(null),n=Hpe();return a.jsx(aE,{resetRef:t,accept:"application/json",onChange:n,children:r=>a.jsx(Te,{icon:a.jsx(og,{}),tooltip:e("nodes.loadWorkflow"),"aria-label":e("nodes.loadWorkflow"),...r})})},Upe=d.memo(Vpe),Gpe=()=>{const{t:e}=Z(),t=ee(),{isOpen:n,onOpen:r,onClose:o}=Mr(),s=d.useRef(null),i=L(u=>u.nodes.nodes.length),l=d.useCallback(()=>{t(i9()),t(Tt(Ft({title:e("toast.nodesCleared"),status:"success"}))),o()},[t,e,o]);return a.jsxs(a.Fragment,{children:[a.jsx(Te,{icon:a.jsx(Kr,{}),tooltip:e("nodes.resetWorkflow"),"aria-label":e("nodes.resetWorkflow"),onClick:r,isDisabled:!i,colorScheme:"error"}),a.jsxs($d,{isOpen:n,onClose:o,leastDestructiveRef:s,isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Ld,{children:[a.jsx(Ho,{fontSize:"lg",fontWeight:"bold",children:e("nodes.resetWorkflow")}),a.jsx(Vo,{py:4,children:a.jsxs($,{flexDir:"column",gap:2,children:[a.jsx(ye,{children:e("nodes.resetWorkflowDesc")}),a.jsx(ye,{variant:"subtext",children:e("nodes.resetWorkflowDesc2")})]})}),a.jsxs(gs,{children:[a.jsx(bc,{ref:s,onClick:o,children:e("common.cancel")}),a.jsx(bc,{colorScheme:"error",ml:3,onClick:l,children:e("common.accept")})]})]})]})]})},Kpe=d.memo(Gpe),qpe=()=>{const{t:e}=Z(),t=lO(),n=d.useCallback(()=>{const r=new Blob([JSON.stringify(t,null,2)]),o=document.createElement("a");o.href=URL.createObjectURL(r),o.download=`${t.name||"My Workflow"}.json`,document.body.appendChild(o),o.click(),o.remove()},[t]);return a.jsx(Te,{icon:a.jsx(ng,{}),tooltip:e("nodes.downloadWorkflow"),"aria-label":e("nodes.downloadWorkflow"),onClick:n})},Xpe=d.memo(qpe),Ype=()=>a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineStart:"50%",transform:"translate(-50%)"},children:[a.jsx(Xpe,{}),a.jsx(Upe,{}),a.jsx(Kpe,{})]}),Qpe=d.memo(Ype),Zpe=()=>a.jsx($,{sx:{gap:2,flexDir:"column"},children:rr(Sd,({title:e,description:t,color:n},r)=>a.jsx(Rt,{label:t,children:a.jsx(da,{sx:{userSelect:"none",color:parseInt(n.split(".")[1]??"0",10)<500?"base.800":"base.50",bg:n},textAlign:"center",children:e})},r))}),Jpe=d.memo(Zpe),ehe=()=>{const{t:e}=Z(),t=ee(),n=d.useCallback(()=>{t(l9())},[t]);return a.jsx(it,{leftIcon:a.jsx(ZZ,{}),tooltip:e("nodes.reloadNodeTemplates"),"aria-label":e("nodes.reloadNodeTemplates"),onClick:n,children:e("nodes.reloadNodeTemplates")})},the=d.memo(ehe),Iu={fontWeight:600},nhe=ie(xe,({nodes:e})=>{const{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionMode:s}=e;return{shouldAnimateEdges:t,shouldValidateGraph:n,shouldSnapToGrid:r,shouldColorEdges:o,selectionModeIsChecked:s===c9.Full}},we),rhe=Pe((e,t)=>{const{isOpen:n,onOpen:r,onClose:o}=Mr(),s=ee(),{shouldAnimateEdges:i,shouldValidateGraph:l,shouldSnapToGrid:u,shouldColorEdges:p,selectionModeIsChecked:h}=L(nhe),m=d.useCallback(k=>{s(u9(k.target.checked))},[s]),v=d.useCallback(k=>{s(d9(k.target.checked))},[s]),b=d.useCallback(k=>{s(f9(k.target.checked))},[s]),y=d.useCallback(k=>{s(p9(k.target.checked))},[s]),x=d.useCallback(k=>{s(h9(k.target.checked))},[s]),{t:w}=Z();return a.jsxs(a.Fragment,{children:[a.jsx(Te,{ref:t,"aria-label":w("nodes.workflowSettings"),tooltip:w("nodes.workflowSettings"),icon:a.jsx(RE,{}),onClick:r}),a.jsxs(Hi,{isOpen:n,onClose:o,size:"2xl",isCentered:!0,children:[a.jsx(Wo,{}),a.jsxs(Wi,{children:[a.jsx(Ho,{children:w("nodes.workflowSettings")}),a.jsx(zd,{}),a.jsx(Vo,{children:a.jsxs($,{sx:{flexDirection:"column",gap:4,py:4},children:[a.jsx(io,{size:"sm",children:"General"}),a.jsx(Vt,{formLabelProps:Iu,onChange:v,isChecked:i,label:w("nodes.animatedEdges"),helperText:w("nodes.animatedEdgesHelp")}),a.jsx(Vr,{}),a.jsx(Vt,{formLabelProps:Iu,isChecked:u,onChange:b,label:w("nodes.snapToGrid"),helperText:w("nodes.snapToGridHelp")}),a.jsx(Vr,{}),a.jsx(Vt,{formLabelProps:Iu,isChecked:p,onChange:y,label:w("nodes.colorCodeEdges"),helperText:w("nodes.colorCodeEdgesHelp")}),a.jsx(Vt,{formLabelProps:Iu,isChecked:h,onChange:x,label:w("nodes.fullyContainNodes"),helperText:w("nodes.fullyContainNodesHelp")}),a.jsx(io,{size:"sm",pt:4,children:"Advanced"}),a.jsx(Vt,{formLabelProps:Iu,isChecked:l,onChange:m,label:w("nodes.validateConnections"),helperText:w("nodes.validateConnectionsHelp")}),a.jsx(the,{})]})})]})]})]})}),ohe=d.memo(rhe),she=()=>{const e=L(t=>t.nodes.shouldShowFieldTypeLegend);return a.jsxs($,{sx:{gap:2,position:"absolute",top:2,insetInlineEnd:2},children:[a.jsx(ohe,{}),e&&a.jsx(Jpe,{})]})},ahe=d.memo(she);function ihe(){const e=ee(),t=L(o=>o.nodes.nodeOpacity),{t:n}=Z(),r=d.useCallback(o=>{e(m9(o))},[e]);return a.jsx($,{alignItems:"center",children:a.jsxs(Lx,{"aria-label":n("nodes.nodeOpacity"),value:t,min:.5,max:1,step:.01,onChange:r,orientation:"vertical",defaultValue:30,h:"calc(100% - 0.5rem)",children:[a.jsx(Fx,{children:a.jsx(Bx,{})}),a.jsx(zx,{})]})})}function lhe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"}}]})(e)}function che(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z"}}]})(e)}function uhe(e){return Ne({tag:"svg",attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"}}]})(e)}const dhe=()=>{const{t:e}=Z(),{zoomIn:t,zoomOut:n,fitView:r}=Xb(),o=ee(),s=L(h=>h.nodes.shouldShowMinimapPanel),i=d.useCallback(()=>{t()},[t]),l=d.useCallback(()=>{n()},[n]),u=d.useCallback(()=>{r()},[r]),p=d.useCallback(()=>{o(g9(!s))},[s,o]);return a.jsxs(mn,{isAttached:!0,orientation:"vertical",children:[a.jsx(Te,{tooltip:e("nodes.zoomInNodes"),"aria-label":e("nodes.zoomInNodes"),onClick:i,icon:a.jsx(uhe,{})}),a.jsx(Te,{tooltip:e("nodes.zoomOutNodes"),"aria-label":e("nodes.zoomOutNodes"),onClick:l,icon:a.jsx(che,{})}),a.jsx(Te,{tooltip:e("nodes.fitViewportNodes"),"aria-label":e("nodes.fitViewportNodes"),onClick:u,icon:a.jsx(RZ,{})}),a.jsx(Te,{tooltip:e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),"aria-label":e(s?"nodes.hideMinimapnodes":"nodes.showMinimapnodes"),isChecked:s,onClick:p,icon:a.jsx(WZ,{})})]})},fhe=d.memo(dhe),phe=()=>a.jsxs($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineStart:2},children:[a.jsx(fhe,{}),a.jsx(ihe,{})]}),hhe=d.memo(phe),mhe=_e(rT),ghe=()=>{const e=L(r=>r.nodes.shouldShowMinimapPanel),t=Li("var(--invokeai-colors-accent-300)","var(--invokeai-colors-accent-600)"),n=Li("var(--invokeai-colors-blackAlpha-300)","var(--invokeai-colors-blackAlpha-600)");return a.jsx($,{sx:{gap:2,position:"absolute",bottom:2,insetInlineEnd:2},children:e&&a.jsx(mhe,{pannable:!0,zoomable:!0,nodeBorderRadius:15,sx:{m:"0 !important",backgroundColor:"base.200 !important",borderRadius:"base",_dark:{backgroundColor:"base.500 !important"},svg:{borderRadius:"inherit"}},nodeColor:t,maskColor:n})})},vhe=d.memo(ghe),bhe=()=>{const e=L(n=>n.nodes.isReady),{t}=Z();return a.jsxs($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center"},children:[a.jsx(nr,{children:e&&a.jsxs(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"relative",width:"100%",height:"100%"},children:[a.jsx(zpe,{}),a.jsx($de,{}),a.jsx(Bpe,{}),a.jsx(Qpe,{}),a.jsx(ahe,{}),a.jsx(hhe,{}),a.jsx(vhe,{})]})}),a.jsx(nr,{children:!e&&a.jsx(vn.div,{initial:{opacity:0},animate:{opacity:1,transition:{duration:.2}},exit:{opacity:0,transition:{duration:.2}},style:{position:"absolute",width:"100%",height:"100%"},children:a.jsx($,{layerStyle:"first",sx:{position:"relative",width:"full",height:"full",borderRadius:"base",alignItems:"center",justifyContent:"center",pointerEvents:"none"},children:a.jsx(Kn,{label:t("nodes.loadingNodes"),icon:yg})})})})]})},xhe=d.memo(bhe),yhe=()=>a.jsx(v9,{children:a.jsx(xhe,{})}),Che=d.memo(yhe),whe=()=>a.jsx(BO,{}),She=d.memo(whe);var Ob={exports:{}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Konva=void 0;var n=yw;Object.defineProperty(t,"Konva",{enumerable:!0,get:function(){return n.Konva}});const r=yw;e.exports=r.Konva})(Ob,Ob.exports);var khe=Ob.exports;const pd=Rc(khe);var p8={exports:{}};/** + * @license React + * react-reconciler.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 _he=function(t){var n={},r=d,o=Dp,s=Object.assign;function i(c){for(var f="https://reactjs.org/docs/error-decoder.html?invariant="+c,g=1;gJ||S[N]!==P[J]){var de=` +`+S[N].replace(" at new "," at ");return c.displayName&&de.includes("")&&(de=de.replace("",c.displayName)),de}while(1<=N&&0<=J);break}}}finally{Zc=!1,Error.prepareStackTrace=g}return(c=c?c.displayName||c.name:"")?ai(c):""}var Tg=Object.prototype.hasOwnProperty,ba=[],Je=-1;function St(c){return{current:c}}function xt(c){0>Je||(c.current=ba[Je],ba[Je]=null,Je--)}function kt(c,f){Je++,ba[Je]=c.current,c.current=f}var qn={},Ut=St(qn),kn=St(!1),lr=qn;function fl(c,f){var g=c.type.contextTypes;if(!g)return qn;var C=c.stateNode;if(C&&C.__reactInternalMemoizedUnmaskedChildContext===f)return C.__reactInternalMemoizedMaskedChildContext;var S={},P;for(P in g)S[P]=f[P];return C&&(c=c.stateNode,c.__reactInternalMemoizedUnmaskedChildContext=f,c.__reactInternalMemoizedMaskedChildContext=S),S}function gr(c){return c=c.childContextTypes,c!=null}function ef(){xt(kn),xt(Ut)}function e2(c,f,g){if(Ut.current!==qn)throw Error(i(168));kt(Ut,f),kt(kn,g)}function t2(c,f,g){var C=c.stateNode;if(f=f.childContextTypes,typeof C.getChildContext!="function")return g;C=C.getChildContext();for(var S in C)if(!(S in f))throw Error(i(108,R(c)||"Unknown",S));return s({},g,C)}function tf(c){return c=(c=c.stateNode)&&c.__reactInternalMemoizedMergedChildContext||qn,lr=Ut.current,kt(Ut,c),kt(kn,kn.current),!0}function n2(c,f,g){var C=c.stateNode;if(!C)throw Error(i(169));g?(c=t2(c,f,lr),C.__reactInternalMemoizedMergedChildContext=c,xt(kn),xt(Ut),kt(Ut,c)):xt(kn),kt(kn,g)}var So=Math.clz32?Math.clz32:P8,_8=Math.log,j8=Math.LN2;function P8(c){return c>>>=0,c===0?32:31-(_8(c)/j8|0)|0}var nf=64,rf=4194304;function eu(c){switch(c&-c){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 c&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return c&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return c}}function of(c,f){var g=c.pendingLanes;if(g===0)return 0;var C=0,S=c.suspendedLanes,P=c.pingedLanes,N=g&268435455;if(N!==0){var J=N&~S;J!==0?C=eu(J):(P&=N,P!==0&&(C=eu(P)))}else N=g&~S,N!==0?C=eu(N):P!==0&&(C=eu(P));if(C===0)return 0;if(f!==0&&f!==C&&!(f&S)&&(S=C&-C,P=f&-f,S>=P||S===16&&(P&4194240)!==0))return f;if(C&4&&(C|=g&16),f=c.entangledLanes,f!==0)for(c=c.entanglements,f&=C;0g;g++)f.push(c);return f}function tu(c,f,g){c.pendingLanes|=f,f!==536870912&&(c.suspendedLanes=0,c.pingedLanes=0),c=c.eventTimes,f=31-So(f),c[f]=g}function M8(c,f){var g=c.pendingLanes&~f;c.pendingLanes=f,c.suspendedLanes=0,c.pingedLanes=0,c.expiredLanes&=f,c.mutableReadLanes&=f,c.entangledLanes&=f,f=c.entanglements;var C=c.eventTimes;for(c=c.expirationTimes;0>=N,S-=N,Ds=1<<32-So(f)+S|g<Mt?(Bn=ht,ht=null):Bn=ht.sibling;var Ot=He(ce,ht,he[Mt],We);if(Ot===null){ht===null&&(ht=Bn);break}c&&ht&&Ot.alternate===null&&f(ce,ht),ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot,ht=Bn}if(Mt===he.length)return g(ce,ht),Zt&&li(ce,Mt),nt;if(ht===null){for(;MtMt?(Bn=ht,ht=null):Bn=ht.sibling;var ja=He(ce,ht,Ot.value,We);if(ja===null){ht===null&&(ht=Bn);break}c&&ht&&ja.alternate===null&&f(ce,ht),ne=P(ja,ne,Mt),gt===null?nt=ja:gt.sibling=ja,gt=ja,ht=Bn}if(Ot.done)return g(ce,ht),Zt&&li(ce,Mt),nt;if(ht===null){for(;!Ot.done;Mt++,Ot=he.next())Ot=pt(ce,Ot.value,We),Ot!==null&&(ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot);return Zt&&li(ce,Mt),nt}for(ht=C(ce,ht);!Ot.done;Mt++,Ot=he.next())Ot=qt(ht,ce,Mt,Ot.value,We),Ot!==null&&(c&&Ot.alternate!==null&&ht.delete(Ot.key===null?Mt:Ot.key),ne=P(Ot,ne,Mt),gt===null?nt=Ot:gt.sibling=Ot,gt=Ot);return c&&ht.forEach(function(m7){return f(ce,m7)}),Zt&&li(ce,Mt),nt}function $s(ce,ne,he,We){if(typeof he=="object"&&he!==null&&he.type===h&&he.key===null&&(he=he.props.children),typeof he=="object"&&he!==null){switch(he.$$typeof){case u:e:{for(var nt=he.key,gt=ne;gt!==null;){if(gt.key===nt){if(nt=he.type,nt===h){if(gt.tag===7){g(ce,gt.sibling),ne=S(gt,he.props.children),ne.return=ce,ce=ne;break e}}else if(gt.elementType===nt||typeof nt=="object"&&nt!==null&&nt.$$typeof===j&&C2(nt)===gt.type){g(ce,gt.sibling),ne=S(gt,he.props),ne.ref=ru(ce,gt,he),ne.return=ce,ce=ne;break e}g(ce,gt);break}else f(ce,gt);gt=gt.sibling}he.type===h?(ne=mi(he.props.children,ce.mode,We,he.key),ne.return=ce,ce=ne):(We=Wf(he.type,he.key,he.props,null,ce.mode,We),We.ref=ru(ce,ne,he),We.return=ce,ce=We)}return N(ce);case p:e:{for(gt=he.key;ne!==null;){if(ne.key===gt)if(ne.tag===4&&ne.stateNode.containerInfo===he.containerInfo&&ne.stateNode.implementation===he.implementation){g(ce,ne.sibling),ne=S(ne,he.children||[]),ne.return=ce,ce=ne;break e}else{g(ce,ne);break}else f(ce,ne);ne=ne.sibling}ne=V0(he,ce.mode,We),ne.return=ce,ce=ne}return N(ce);case j:return gt=he._init,$s(ce,ne,gt(he._payload),We)}if(X(he))return Bt(ce,ne,he,We);if(M(he))return yr(ce,ne,he,We);vf(ce,he)}return typeof he=="string"&&he!==""||typeof he=="number"?(he=""+he,ne!==null&&ne.tag===6?(g(ce,ne.sibling),ne=S(ne,he),ne.return=ce,ce=ne):(g(ce,ne),ne=W0(he,ce.mode,We),ne.return=ce,ce=ne),N(ce)):g(ce,ne)}return $s}var bl=w2(!0),S2=w2(!1),ou={},Jr=St(ou),su=St(ou),xl=St(ou);function Jo(c){if(c===ou)throw Error(i(174));return c}function r0(c,f){kt(xl,f),kt(su,c),kt(Jr,ou),c=z(f),xt(Jr),kt(Jr,c)}function yl(){xt(Jr),xt(su),xt(xl)}function k2(c){var f=Jo(xl.current),g=Jo(Jr.current);f=Y(g,c.type,f),g!==f&&(kt(su,c),kt(Jr,f))}function o0(c){su.current===c&&(xt(Jr),xt(su))}var ln=St(0);function bf(c){for(var f=c;f!==null;){if(f.tag===13){var g=f.memoizedState;if(g!==null&&(g=g.dehydrated,g===null||Es(g)||ha(g)))return f}else if(f.tag===19&&f.memoizedProps.revealOrder!==void 0){if(f.flags&128)return f}else if(f.child!==null){f.child.return=f,f=f.child;continue}if(f===c)break;for(;f.sibling===null;){if(f.return===null||f.return===c)return null;f=f.return}f.sibling.return=f.return,f=f.sibling}return null}var s0=[];function a0(){for(var c=0;cg?g:4,c(!0);var C=i0.transition;i0.transition={};try{c(!1),f()}finally{Et=g,i0.transition=C}}function H2(){return eo().memoizedState}function H8(c,f,g){var C=Sa(c);if(g={lane:C,action:g,hasEagerState:!1,eagerState:null,next:null},W2(c))V2(f,g);else if(g=p2(c,f,g,C),g!==null){var S=Zn();to(g,c,C,S),U2(g,f,C)}}function W8(c,f,g){var C=Sa(c),S={lane:C,action:g,hasEagerState:!1,eagerState:null,next:null};if(W2(c))V2(f,S);else{var P=c.alternate;if(c.lanes===0&&(P===null||P.lanes===0)&&(P=f.lastRenderedReducer,P!==null))try{var N=f.lastRenderedState,J=P(N,g);if(S.hasEagerState=!0,S.eagerState=J,ko(J,N)){var de=f.interleaved;de===null?(S.next=S,Jg(f)):(S.next=de.next,de.next=S),f.interleaved=S;return}}catch{}finally{}g=p2(c,f,S,C),g!==null&&(S=Zn(),to(g,c,C,S),U2(g,f,C))}}function W2(c){var f=c.alternate;return c===cn||f!==null&&f===cn}function V2(c,f){au=yf=!0;var g=c.pending;g===null?f.next=f:(f.next=g.next,g.next=f),c.pending=f}function U2(c,f,g){if(g&4194240){var C=f.lanes;C&=c.pendingLanes,g|=C,f.lanes=g,zg(c,g)}}var Sf={readContext:Zr,useCallback:Xn,useContext:Xn,useEffect:Xn,useImperativeHandle:Xn,useInsertionEffect:Xn,useLayoutEffect:Xn,useMemo:Xn,useReducer:Xn,useRef:Xn,useState:Xn,useDebugValue:Xn,useDeferredValue:Xn,useTransition:Xn,useMutableSource:Xn,useSyncExternalStore:Xn,useId:Xn,unstable_isNewReconciler:!1},V8={readContext:Zr,useCallback:function(c,f){return es().memoizedState=[c,f===void 0?null:f],c},useContext:Zr,useEffect:A2,useImperativeHandle:function(c,f,g){return g=g!=null?g.concat([c]):null,Cf(4194308,4,$2.bind(null,f,c),g)},useLayoutEffect:function(c,f){return Cf(4194308,4,c,f)},useInsertionEffect:function(c,f){return Cf(4,2,c,f)},useMemo:function(c,f){var g=es();return f=f===void 0?null:f,c=c(),g.memoizedState=[c,f],c},useReducer:function(c,f,g){var C=es();return f=g!==void 0?g(f):f,C.memoizedState=C.baseState=f,c={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:c,lastRenderedState:f},C.queue=c,c=c.dispatch=H8.bind(null,cn,c),[C.memoizedState,c]},useRef:function(c){var f=es();return c={current:c},f.memoizedState=c},useState:D2,useDebugValue:h0,useDeferredValue:function(c){return es().memoizedState=c},useTransition:function(){var c=D2(!1),f=c[0];return c=B8.bind(null,c[1]),es().memoizedState=c,[f,c]},useMutableSource:function(){},useSyncExternalStore:function(c,f,g){var C=cn,S=es();if(Zt){if(g===void 0)throw Error(i(407));g=g()}else{if(g=f(),Fn===null)throw Error(i(349));ui&30||P2(C,f,g)}S.memoizedState=g;var P={value:g,getSnapshot:f};return S.queue=P,A2(E2.bind(null,C,P,c),[c]),C.flags|=2048,cu(9,I2.bind(null,C,P,g,f),void 0,null),g},useId:function(){var c=es(),f=Fn.identifierPrefix;if(Zt){var g=Rs,C=Ds;g=(C&~(1<<32-So(C)-1)).toString(32)+g,f=":"+f+"R"+g,g=iu++,0N0&&(f.flags|=128,C=!0,fu(S,!1),f.lanes=4194304)}else{if(!C)if(c=bf(P),c!==null){if(f.flags|=128,C=!0,c=c.updateQueue,c!==null&&(f.updateQueue=c,f.flags|=4),fu(S,!0),S.tail===null&&S.tailMode==="hidden"&&!P.alternate&&!Zt)return Yn(f),null}else 2*Ln()-S.renderingStartTime>N0&&g!==1073741824&&(f.flags|=128,C=!0,fu(S,!1),f.lanes=4194304);S.isBackwards?(P.sibling=f.child,f.child=P):(c=S.last,c!==null?c.sibling=P:f.child=P,S.last=P)}return S.tail!==null?(f=S.tail,S.rendering=f,S.tail=f.sibling,S.renderingStartTime=Ln(),f.sibling=null,c=ln.current,kt(ln,C?c&1|2:c&1),f):(Yn(f),null);case 22:case 23:return F0(),g=f.memoizedState!==null,c!==null&&c.memoizedState!==null!==g&&(f.flags|=8192),g&&f.mode&1?Tr&1073741824&&(Yn(f),ue&&f.subtreeFlags&6&&(f.flags|=8192)):Yn(f),null;case 24:return null;case 25:return null}throw Error(i(156,f.tag))}function Z8(c,f){switch(Ug(f),f.tag){case 1:return gr(f.type)&&ef(),c=f.flags,c&65536?(f.flags=c&-65537|128,f):null;case 3:return yl(),xt(kn),xt(Ut),a0(),c=f.flags,c&65536&&!(c&128)?(f.flags=c&-65537|128,f):null;case 5:return o0(f),null;case 13:if(xt(ln),c=f.memoizedState,c!==null&&c.dehydrated!==null){if(f.alternate===null)throw Error(i(340));ml()}return c=f.flags,c&65536?(f.flags=c&-65537|128,f):null;case 19:return xt(ln),null;case 4:return yl(),null;case 10:return Qg(f.type._context),null;case 22:case 23:return F0(),null;case 24:return null;default:return null}}var If=!1,Qn=!1,J8=typeof WeakSet=="function"?WeakSet:Set,Ge=null;function wl(c,f){var g=c.ref;if(g!==null)if(typeof g=="function")try{g(null)}catch(C){Jt(c,f,C)}else g.current=null}function S0(c,f,g){try{g()}catch(C){Jt(c,f,C)}}var uC=!1;function e7(c,f){for(B(c.containerInfo),Ge=f;Ge!==null;)if(c=Ge,f=c.child,(c.subtreeFlags&1028)!==0&&f!==null)f.return=c,Ge=f;else for(;Ge!==null;){c=Ge;try{var g=c.alternate;if(c.flags&1024)switch(c.tag){case 0:case 11:case 15:break;case 1:if(g!==null){var C=g.memoizedProps,S=g.memoizedState,P=c.stateNode,N=P.getSnapshotBeforeUpdate(c.elementType===c.type?C:jo(c.type,C),S);P.__reactInternalSnapshotBeforeUpdate=N}break;case 3:ue&&Pt(c.stateNode.containerInfo);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(J){Jt(c,c.return,J)}if(f=c.sibling,f!==null){f.return=c.return,Ge=f;break}Ge=c.return}return g=uC,uC=!1,g}function pu(c,f,g){var C=f.updateQueue;if(C=C!==null?C.lastEffect:null,C!==null){var S=C=C.next;do{if((S.tag&c)===c){var P=S.destroy;S.destroy=void 0,P!==void 0&&S0(f,g,P)}S=S.next}while(S!==C)}}function Ef(c,f){if(f=f.updateQueue,f=f!==null?f.lastEffect:null,f!==null){var g=f=f.next;do{if((g.tag&c)===c){var C=g.create;g.destroy=C()}g=g.next}while(g!==f)}}function k0(c){var f=c.ref;if(f!==null){var g=c.stateNode;switch(c.tag){case 5:c=W(g);break;default:c=g}typeof f=="function"?f(c):f.current=c}}function dC(c){var f=c.alternate;f!==null&&(c.alternate=null,dC(f)),c.child=null,c.deletions=null,c.sibling=null,c.tag===5&&(f=c.stateNode,f!==null&&je(f)),c.stateNode=null,c.return=null,c.dependencies=null,c.memoizedProps=null,c.memoizedState=null,c.pendingProps=null,c.stateNode=null,c.updateQueue=null}function fC(c){return c.tag===5||c.tag===3||c.tag===4}function pC(c){e:for(;;){for(;c.sibling===null;){if(c.return===null||fC(c.return))return null;c=c.return}for(c.sibling.return=c.return,c=c.sibling;c.tag!==5&&c.tag!==6&&c.tag!==18;){if(c.flags&2||c.child===null||c.tag===4)continue e;c.child.return=c,c=c.child}if(!(c.flags&2))return c.stateNode}}function _0(c,f,g){var C=c.tag;if(C===5||C===6)c=c.stateNode,f?At(g,c,f):Qe(g,c);else if(C!==4&&(c=c.child,c!==null))for(_0(c,f,g),c=c.sibling;c!==null;)_0(c,f,g),c=c.sibling}function j0(c,f,g){var C=c.tag;if(C===5||C===6)c=c.stateNode,f?$e(g,c,f):ve(g,c);else if(C!==4&&(c=c.child,c!==null))for(j0(c,f,g),c=c.sibling;c!==null;)j0(c,f,g),c=c.sibling}var Vn=null,Po=!1;function ns(c,f,g){for(g=g.child;g!==null;)P0(c,f,g),g=g.sibling}function P0(c,f,g){if(Yo&&typeof Yo.onCommitFiberUnmount=="function")try{Yo.onCommitFiberUnmount(sf,g)}catch{}switch(g.tag){case 5:Qn||wl(g,f);case 6:if(ue){var C=Vn,S=Po;Vn=null,ns(c,f,g),Vn=C,Po=S,Vn!==null&&(Po?ze(Vn,g.stateNode):ke(Vn,g.stateNode))}else ns(c,f,g);break;case 18:ue&&Vn!==null&&(Po?Dn(Vn,g.stateNode):Ng(Vn,g.stateNode));break;case 4:ue?(C=Vn,S=Po,Vn=g.stateNode.containerInfo,Po=!0,ns(c,f,g),Vn=C,Po=S):(me&&(C=g.stateNode.containerInfo,S=Mn(C),Qt(C,S)),ns(c,f,g));break;case 0:case 11:case 14:case 15:if(!Qn&&(C=g.updateQueue,C!==null&&(C=C.lastEffect,C!==null))){S=C=C.next;do{var P=S,N=P.destroy;P=P.tag,N!==void 0&&(P&2||P&4)&&S0(g,f,N),S=S.next}while(S!==C)}ns(c,f,g);break;case 1:if(!Qn&&(wl(g,f),C=g.stateNode,typeof C.componentWillUnmount=="function"))try{C.props=g.memoizedProps,C.state=g.memoizedState,C.componentWillUnmount()}catch(J){Jt(g,f,J)}ns(c,f,g);break;case 21:ns(c,f,g);break;case 22:g.mode&1?(Qn=(C=Qn)||g.memoizedState!==null,ns(c,f,g),Qn=C):ns(c,f,g);break;default:ns(c,f,g)}}function hC(c){var f=c.updateQueue;if(f!==null){c.updateQueue=null;var g=c.stateNode;g===null&&(g=c.stateNode=new J8),f.forEach(function(C){var S=c7.bind(null,c,C);g.has(C)||(g.add(C),C.then(S,S))})}}function Io(c,f){var g=f.deletions;if(g!==null)for(var C=0;C";case Of:return":has("+(M0(c)||"")+")";case Df:return'[role="'+c.value+'"]';case Af:return'"'+c.value+'"';case Rf:return'[data-testname="'+c.value+'"]';default:throw Error(i(365))}}function yC(c,f){var g=[];c=[c,0];for(var C=0;CS&&(S=N),C&=~P}if(C=S,C=Ln()-C,C=(120>C?120:480>C?480:1080>C?1080:1920>C?1920:3e3>C?3e3:4320>C?4320:1960*n7(C/1960))-C,10c?16:c,wa===null)var C=!1;else{if(c=wa,wa=null,zf=0,yt&6)throw Error(i(331));var S=yt;for(yt|=4,Ge=c.current;Ge!==null;){var P=Ge,N=P.child;if(Ge.flags&16){var J=P.deletions;if(J!==null){for(var de=0;deLn()-A0?fi(c,0):R0|=g),xr(c,f)}function EC(c,f){f===0&&(c.mode&1?(f=rf,rf<<=1,!(rf&130023424)&&(rf=4194304)):f=1);var g=Zn();c=Zo(c,f),c!==null&&(tu(c,f,g),xr(c,g))}function l7(c){var f=c.memoizedState,g=0;f!==null&&(g=f.retryLane),EC(c,g)}function c7(c,f){var g=0;switch(c.tag){case 13:var C=c.stateNode,S=c.memoizedState;S!==null&&(g=S.retryLane);break;case 19:C=c.stateNode;break;default:throw Error(i(314))}C!==null&&C.delete(f),EC(c,g)}var MC;MC=function(c,f,g){if(c!==null)if(c.memoizedProps!==f.pendingProps||kn.current)vr=!0;else{if(!(c.lanes&g)&&!(f.flags&128))return vr=!1,Y8(c,f,g);vr=!!(c.flags&131072)}else vr=!1,Zt&&f.flags&1048576&&i2(f,cf,f.index);switch(f.lanes=0,f.tag){case 2:var C=f.type;_f(c,f),c=f.pendingProps;var S=fl(f,Ut.current);vl(f,g),S=c0(null,f,C,c,S,g);var P=u0();return f.flags|=1,typeof S=="object"&&S!==null&&typeof S.render=="function"&&S.$$typeof===void 0?(f.tag=1,f.memoizedState=null,f.updateQueue=null,gr(C)?(P=!0,tf(f)):P=!1,f.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,e0(f),S.updater=gf,f.stateNode=S,S._reactInternals=f,n0(f,C,c,g),f=b0(null,f,C,!0,P,g)):(f.tag=0,Zt&&P&&Vg(f),cr(null,f,S,g),f=f.child),f;case 16:C=f.elementType;e:{switch(_f(c,f),c=f.pendingProps,S=C._init,C=S(C._payload),f.type=C,S=f.tag=d7(C),c=jo(C,c),S){case 0:f=v0(null,f,C,c,g);break e;case 1:f=nC(null,f,C,c,g);break e;case 11:f=Q2(null,f,C,c,g);break e;case 14:f=Z2(null,f,C,jo(C.type,c),g);break e}throw Error(i(306,C,""))}return f;case 0:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),v0(c,f,C,S,g);case 1:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),nC(c,f,C,S,g);case 3:e:{if(rC(f),c===null)throw Error(i(387));C=f.pendingProps,P=f.memoizedState,S=P.element,h2(c,f),mf(f,C,null,g);var N=f.memoizedState;if(C=N.element,Ce&&P.isDehydrated)if(P={element:C,isDehydrated:!1,cache:N.cache,pendingSuspenseBoundaries:N.pendingSuspenseBoundaries,transitions:N.transitions},f.updateQueue.baseState=P,f.memoizedState=P,f.flags&256){S=Cl(Error(i(423)),f),f=oC(c,f,C,g,S);break e}else if(C!==S){S=Cl(Error(i(424)),f),f=oC(c,f,C,g,S);break e}else for(Ce&&(Qr=qe(f.stateNode.containerInfo),Nr=f,Zt=!0,_o=null,nu=!1),g=S2(f,null,C,g),f.child=g;g;)g.flags=g.flags&-3|4096,g=g.sibling;else{if(ml(),C===S){f=Ns(c,f,g);break e}cr(c,f,C,g)}f=f.child}return f;case 5:return k2(f),c===null&&Kg(f),C=f.type,S=f.pendingProps,P=c!==null?c.memoizedProps:null,N=S.children,U(C,S)?N=null:P!==null&&U(C,P)&&(f.flags|=32),tC(c,f),cr(c,f,N,g),f.child;case 6:return c===null&&Kg(f),null;case 13:return sC(c,f,g);case 4:return r0(f,f.stateNode.containerInfo),C=f.pendingProps,c===null?f.child=bl(f,null,C,g):cr(c,f,C,g),f.child;case 11:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),Q2(c,f,C,S,g);case 7:return cr(c,f,f.pendingProps,g),f.child;case 8:return cr(c,f,f.pendingProps.children,g),f.child;case 12:return cr(c,f,f.pendingProps.children,g),f.child;case 10:e:{if(C=f.type._context,S=f.pendingProps,P=f.memoizedProps,N=S.value,f2(f,C,N),P!==null)if(ko(P.value,N)){if(P.children===S.children&&!kn.current){f=Ns(c,f,g);break e}}else for(P=f.child,P!==null&&(P.return=f);P!==null;){var J=P.dependencies;if(J!==null){N=P.child;for(var de=J.firstContext;de!==null;){if(de.context===C){if(P.tag===1){de=As(-1,g&-g),de.tag=2;var Ee=P.updateQueue;if(Ee!==null){Ee=Ee.shared;var Ke=Ee.pending;Ke===null?de.next=de:(de.next=Ke.next,Ke.next=de),Ee.pending=de}}P.lanes|=g,de=P.alternate,de!==null&&(de.lanes|=g),Zg(P.return,g,f),J.lanes|=g;break}de=de.next}}else if(P.tag===10)N=P.type===f.type?null:P.child;else if(P.tag===18){if(N=P.return,N===null)throw Error(i(341));N.lanes|=g,J=N.alternate,J!==null&&(J.lanes|=g),Zg(N,g,f),N=P.sibling}else N=P.child;if(N!==null)N.return=P;else for(N=P;N!==null;){if(N===f){N=null;break}if(P=N.sibling,P!==null){P.return=N.return,N=P;break}N=N.return}P=N}cr(c,f,S.children,g),f=f.child}return f;case 9:return S=f.type,C=f.pendingProps.children,vl(f,g),S=Zr(S),C=C(S),f.flags|=1,cr(c,f,C,g),f.child;case 14:return C=f.type,S=jo(C,f.pendingProps),S=jo(C.type,S),Z2(c,f,C,S,g);case 15:return J2(c,f,f.type,f.pendingProps,g);case 17:return C=f.type,S=f.pendingProps,S=f.elementType===C?S:jo(C,S),_f(c,f),f.tag=1,gr(C)?(c=!0,tf(f)):c=!1,vl(f,g),x2(f,C,S),n0(f,C,S,g),b0(null,f,C,!0,c,g);case 19:return iC(c,f,g);case 22:return eC(c,f,g)}throw Error(i(156,f.tag))};function OC(c,f){return Fg(c,f)}function u7(c,f,g,C){this.tag=c,this.key=g,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=C,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function no(c,f,g,C){return new u7(c,f,g,C)}function H0(c){return c=c.prototype,!(!c||!c.isReactComponent)}function d7(c){if(typeof c=="function")return H0(c)?1:0;if(c!=null){if(c=c.$$typeof,c===x)return 11;if(c===_)return 14}return 2}function _a(c,f){var g=c.alternate;return g===null?(g=no(c.tag,f,c.key,c.mode),g.elementType=c.elementType,g.type=c.type,g.stateNode=c.stateNode,g.alternate=c,c.alternate=g):(g.pendingProps=f,g.type=c.type,g.flags=0,g.subtreeFlags=0,g.deletions=null),g.flags=c.flags&14680064,g.childLanes=c.childLanes,g.lanes=c.lanes,g.child=c.child,g.memoizedProps=c.memoizedProps,g.memoizedState=c.memoizedState,g.updateQueue=c.updateQueue,f=c.dependencies,g.dependencies=f===null?null:{lanes:f.lanes,firstContext:f.firstContext},g.sibling=c.sibling,g.index=c.index,g.ref=c.ref,g}function Wf(c,f,g,C,S,P){var N=2;if(C=c,typeof c=="function")H0(c)&&(N=1);else if(typeof c=="string")N=5;else e:switch(c){case h:return mi(g.children,S,P,f);case m:N=8,S|=8;break;case v:return c=no(12,g,f,S|2),c.elementType=v,c.lanes=P,c;case w:return c=no(13,g,f,S),c.elementType=w,c.lanes=P,c;case k:return c=no(19,g,f,S),c.elementType=k,c.lanes=P,c;case I:return Vf(g,S,P,f);default:if(typeof c=="object"&&c!==null)switch(c.$$typeof){case b:N=10;break e;case y:N=9;break e;case x:N=11;break e;case _:N=14;break e;case j:N=16,C=null;break e}throw Error(i(130,c==null?c:typeof c,""))}return f=no(N,g,f,S),f.elementType=c,f.type=C,f.lanes=P,f}function mi(c,f,g,C){return c=no(7,c,C,f),c.lanes=g,c}function Vf(c,f,g,C){return c=no(22,c,C,f),c.elementType=I,c.lanes=g,c.stateNode={isHidden:!1},c}function W0(c,f,g){return c=no(6,c,null,f),c.lanes=g,c}function V0(c,f,g){return f=no(4,c.children!==null?c.children:[],c.key,f),f.lanes=g,f.stateNode={containerInfo:c.containerInfo,pendingChildren:null,implementation:c.implementation},f}function f7(c,f,g,C,S){this.tag=f,this.containerInfo=c,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=oe,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Lg(0),this.expirationTimes=Lg(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Lg(0),this.identifierPrefix=C,this.onRecoverableError=S,Ce&&(this.mutableSourceEagerHydrationData=null)}function DC(c,f,g,C,S,P,N,J,de){return c=new f7(c,f,g,J,de),f===1?(f=1,P===!0&&(f|=8)):f=0,P=no(3,null,null,f),c.current=P,P.stateNode=c,P.memoizedState={element:C,isDehydrated:g,cache:null,transitions:null,pendingSuspenseBoundaries:null},e0(P),c}function RC(c){if(!c)return qn;c=c._reactInternals;e:{if(A(c)!==c||c.tag!==1)throw Error(i(170));var f=c;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(i(171))}if(c.tag===1){var g=c.type;if(gr(g))return t2(c,g,f)}return f}function AC(c){var f=c._reactInternals;if(f===void 0)throw typeof c.render=="function"?Error(i(188)):(c=Object.keys(c).join(","),Error(i(268,c)));return c=K(f),c===null?null:c.stateNode}function NC(c,f){if(c=c.memoizedState,c!==null&&c.dehydrated!==null){var g=c.retryLane;c.retryLane=g!==0&&g=Ee&&P>=pt&&S<=Ke&&N<=He){c.splice(f,1);break}else if(C!==Ee||g.width!==de.width||HeN){if(!(P!==pt||g.height!==de.height||KeS)){Ee>C&&(de.width+=Ee-C,de.x=C),KeP&&(de.height+=pt-P,de.y=P),Heg&&(g=N)),N ")+` + +No matching component was found for: + `)+c.join(" > ")}return null},n.getPublicRootInstance=function(c){if(c=c.current,!c.child)return null;switch(c.child.tag){case 5:return W(c.child.stateNode);default:return c.child.stateNode}},n.injectIntoDevTools=function(c){if(c={bundleType:c.bundleType,version:c.version,rendererPackageName:c.rendererPackageName,rendererConfig:c.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:l.ReactCurrentDispatcher,findHostInstanceByFiber:p7,findFiberByHostInstance:c.findFiberByHostInstance||h7,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0"},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")c=!1;else{var f=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(f.isDisabled||!f.supportsFiber)c=!0;else{try{sf=f.inject(c),Yo=f}catch{}c=!!f.checkDCE}}return c},n.isAlreadyRendering=function(){return!1},n.observeVisibleRects=function(c,f,g,C){if(!Ue)throw Error(i(363));c=O0(c,f);var S=mt(c,g,C).disconnect;return{disconnect:function(){S()}}},n.registerMutableSourceForHydration=function(c,f){var g=f._getVersion;g=g(f._source),c.mutableSourceEagerHydrationData==null?c.mutableSourceEagerHydrationData=[f,g]:c.mutableSourceEagerHydrationData.push(f,g)},n.runWithPriority=function(c,f){var g=Et;try{return Et=c,f()}finally{Et=g}},n.shouldError=function(){return null},n.shouldSuspend=function(){return!1},n.updateContainer=function(c,f,g,C){var S=f.current,P=Zn(),N=Sa(S);return g=RC(g),f.context===null?f.context=g:f.pendingContext=g,f=As(P,N),f.payload={element:c},C=C===void 0?null:C,C!==null&&(f.callback=C),c=ya(S,f,N),c!==null&&(to(c,S,N,P),hf(c,S,N)),N},n};p8.exports=_he;var jhe=p8.exports;const Phe=Rc(jhe);var h8={exports:{}},ll={};/** + * @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. + */ll.ConcurrentRoot=1;ll.ContinuousEventPriority=4;ll.DefaultEventPriority=16;ll.DiscreteEventPriority=1;ll.IdleEventPriority=536870912;ll.LegacyRoot=0;h8.exports=ll;var m8=h8.exports;const mj={children:!0,ref:!0,key:!0,style:!0,forwardedRef:!0,unstable_applyCache:!0,unstable_applyDrawHitFromCache:!0};let gj=!1,vj=!1;const Qy=".react-konva-event",Ihe=`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 +`,Ehe=`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 +`,Mhe={};function Rg(e,t,n=Mhe){if(!gj&&"zIndex"in t&&(console.warn(Ehe),gj=!0),!vj&&t.draggable){var r=t.x!==void 0||t.y!==void 0,o=t.onDragEnd||t.onDragMove;r&&!o&&(console.warn(Ihe),vj=!0)}for(var s in n)if(!mj[s]){var i=s.slice(0,2)==="on",l=n[s]!==t[s];if(i&&l){var u=s.substr(2).toLowerCase();u.substr(0,7)==="content"&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),e.off(u,n[s])}var p=!t.hasOwnProperty(s);p&&e.setAttr(s,void 0)}var h=t._useStrictMode,m={},v=!1;const b={};for(var s in t)if(!mj[s]){var i=s.slice(0,2)==="on",y=n[s]!==t[s];if(i&&y){var u=s.substr(2).toLowerCase();u.substr(0,7)==="content"&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),t[s]&&(b[u]=t[s])}!i&&(t[s]!==n[s]||h&&t[s]!==e.getAttr(s))&&(v=!0,m[s]=t[s])}v&&(e.setAttrs(m),si(e));for(var u in b)e.on(u+Qy,b[u])}function si(e){if(!b9.Konva.autoDrawEnabled){var t=e.getLayer()||e.getStage();t&&t.batchDraw()}}const g8={},Ohe={};pd.Node.prototype._applyProps=Rg;function Dhe(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),si(e)}function Rhe(e,t,n){let r=pd[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=pd.Group);const o={},s={};for(var i in t){var l=i.slice(0,2)==="on";l?s[i]=t[i]:o[i]=t[i]}const u=new r(o);return Rg(u,s),u}function Ahe(e,t,n){console.error(`Text components are not supported for now in ReactKonva. Your text is: "${e}"`)}function Nhe(e,t,n){return!1}function The(e){return e}function $he(){return null}function Lhe(){return null}function zhe(e,t,n,r){return Ohe}function Fhe(){}function Bhe(e){}function Hhe(e,t){return!1}function Whe(){return g8}function Vhe(){return g8}const Uhe=setTimeout,Ghe=clearTimeout,Khe=-1;function qhe(e,t){return!1}const Xhe=!1,Yhe=!0,Qhe=!0;function Zhe(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function Jhe(e,t){t.parent===e?t.moveToTop():e.add(t),si(e)}function v8(e,t,n){t._remove(),e.add(t),t.setZIndex(n.getZIndex()),si(e)}function eme(e,t,n){v8(e,t,n)}function tme(e,t){t.destroy(),t.off(Qy),si(e)}function nme(e,t){t.destroy(),t.off(Qy),si(e)}function rme(e,t,n){console.error(`Text components are not yet supported in ReactKonva. You text is: "${n}"`)}function ome(e,t,n){}function sme(e,t,n,r,o){Rg(e,o,r)}function ame(e){e.hide(),si(e)}function ime(e){}function lme(e,t){(t.visible==null||t.visible)&&e.show()}function cme(e,t){}function ume(e){}function dme(){}const fme=()=>m8.DefaultEventPriority,pme=Object.freeze(Object.defineProperty({__proto__:null,appendChild:Zhe,appendChildToContainer:Jhe,appendInitialChild:Dhe,cancelTimeout:Ghe,clearContainer:ume,commitMount:ome,commitTextUpdate:rme,commitUpdate:sme,createInstance:Rhe,createTextInstance:Ahe,detachDeletedInstance:dme,finalizeInitialChildren:Nhe,getChildHostContext:Vhe,getCurrentEventPriority:fme,getPublicInstance:The,getRootHostContext:Whe,hideInstance:ame,hideTextInstance:ime,idlePriority:Dp.unstable_IdlePriority,insertBefore:v8,insertInContainerBefore:eme,isPrimaryRenderer:Xhe,noTimeout:Khe,now:Dp.unstable_now,prepareForCommit:$he,preparePortalMount:Lhe,prepareUpdate:zhe,removeChild:tme,removeChildFromContainer:nme,resetAfterCommit:Fhe,resetTextContent:Bhe,run:Dp.unstable_runWithPriority,scheduleTimeout:Uhe,shouldDeprioritizeSubtree:Hhe,shouldSetTextContent:qhe,supportsMutation:Qhe,unhideInstance:lme,unhideTextInstance:cme,warnsIfNotActing:Yhe},Symbol.toStringTag,{value:"Module"}));var hme=Object.defineProperty,mme=Object.defineProperties,gme=Object.getOwnPropertyDescriptors,bj=Object.getOwnPropertySymbols,vme=Object.prototype.hasOwnProperty,bme=Object.prototype.propertyIsEnumerable,xj=(e,t,n)=>t in e?hme(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,yj=(e,t)=>{for(var n in t||(t={}))vme.call(t,n)&&xj(e,n,t[n]);if(bj)for(var n of bj(t))bme.call(t,n)&&xj(e,n,t[n]);return e},xme=(e,t)=>mme(e,gme(t));function b8(e,t,n){if(!e)return;if(n(e)===!0)return e;let r=t?e.return:e.child;for(;r;){const o=b8(r,t,n);if(o)return o;r=t?null:r.sibling}}function x8(e){try{return Object.defineProperties(e,{_currentRenderer:{get(){return null},set(){}},_currentRenderer2:{get(){return null},set(){}}})}catch{return e}}const Zy=x8(d.createContext(null));class y8 extends d.Component{render(){return d.createElement(Zy.Provider,{value:this._reactInternals},this.props.children)}}const{ReactCurrentOwner:Cj,ReactCurrentDispatcher:wj}=d.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function yme(){const e=d.useContext(Zy);if(e===null)throw new Error("its-fine: useFiber must be called within a !");const t=d.useId();return d.useMemo(()=>{for(const r of[Cj==null?void 0:Cj.current,e,e==null?void 0:e.alternate]){if(!r)continue;const o=b8(r,!1,s=>{let i=s.memoizedState;for(;i;){if(i.memoizedState===t)return!0;i=i.next}});if(o)return o}},[e,t])}function Cme(){var e,t;const n=yme(),[r]=d.useState(()=>new Map);r.clear();let o=n;for(;o;){const s=(e=o.type)==null?void 0:e._context;s&&s!==Zy&&!r.has(s)&&r.set(s,(t=wj==null?void 0:wj.current)==null?void 0:t.readContext(x8(s))),o=o.return}return r}function wme(){const e=Cme();return d.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>r=>d.createElement(t,null,d.createElement(n.Provider,xme(yj({},r),{value:e.get(n)}))),t=>d.createElement(y8,yj({},t))),[e])}function Sme(e){const t=H.useRef({});return H.useLayoutEffect(()=>{t.current=e}),H.useLayoutEffect(()=>()=>{t.current={}},[]),t.current}const kme=e=>{const t=H.useRef(),n=H.useRef(),r=H.useRef(),o=Sme(e),s=wme(),i=l=>{const{forwardedRef:u}=e;u&&(typeof u=="function"?u(l):u.current=l)};return H.useLayoutEffect(()=>(n.current=new pd.Stage({width:e.width,height:e.height,container:t.current}),i(n.current),r.current=$u.createContainer(n.current,m8.LegacyRoot,!1,null),$u.updateContainer(H.createElement(s,{},e.children),r.current),()=>{pd.isBrowser&&(i(null),$u.updateContainer(null,r.current,null),n.current.destroy())}),[]),H.useLayoutEffect(()=>{i(n.current),Rg(n.current,e,o),$u.updateContainer(H.createElement(s,{},e.children),r.current,null)}),H.createElement("div",{ref:t,id:e.id,accessKey:e.accessKey,className:e.className,role:e.role,style:e.style,tabIndex:e.tabIndex,title:e.title})},Eu="Layer",aa="Group",ks="Rect",vi="Circle",dm="Line",C8="Image",_me="Transformer",$u=Phe(pme);$u.injectIntoDevTools({findHostInstanceByFiber:()=>null,bundleType:0,version:H.version,rendererPackageName:"react-konva"});const jme=H.forwardRef((e,t)=>H.createElement(y8,{},H.createElement(kme,{...e,forwardedRef:t}))),Pme=ie([Lt,Co],(e,t)=>{const{tool:n,isMovingBoundingBox:r}=e;return{tool:n,isStaging:t,isMovingBoundingBox:r}},{memoizeOptions:{resultEqualityCheck:_t}}),Ime=()=>{const e=ee(),{tool:t,isStaging:n,isMovingBoundingBox:r}=L(Pme);return{handleDragStart:d.useCallback(()=>{(t==="move"||n)&&!r&&e(Qp(!0))},[e,r,n,t]),handleDragMove:d.useCallback(o=>{if(!((t==="move"||n)&&!r))return;const s={x:o.target.x(),y:o.target.y()};e(y5(s))},[e,r,n,t]),handleDragEnd:d.useCallback(()=>{(t==="move"||n)&&!r&&e(Qp(!1))},[e,r,n,t])}},Eme=ie([Lt,wn,Co],(e,t,n)=>{const{cursorPosition:r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isMaskEnabled:l,shouldSnapToGrid:u}=e;return{activeTabName:t,isCursorOnCanvas:!!r,shouldLockBoundingBox:o,shouldShowBoundingBox:s,tool:i,isStaging:n,isMaskEnabled:l,shouldSnapToGrid:u}},{memoizeOptions:{resultEqualityCheck:_t}}),Mme=()=>{const e=ee(),{activeTabName:t,shouldShowBoundingBox:n,tool:r,isStaging:o,isMaskEnabled:s,shouldSnapToGrid:i}=L(Eme),l=d.useRef(null),u=C5(),p=()=>e(w5());Ze(["shift+c"],()=>{p()},{enabled:()=>!o,preventDefault:!0},[]);const h=()=>e(Qb(!s));Ze(["h"],()=>{h()},{enabled:()=>!o,preventDefault:!0},[s]),Ze(["n"],()=>{e(Zp(!i))},{enabled:!0,preventDefault:!0},[i]),Ze("esc",()=>{e(x9())},{enabled:()=>!0,preventDefault:!0}),Ze("shift+h",()=>{e(y9(!n))},{enabled:()=>!o,preventDefault:!0},[t,n]),Ze(["space"],m=>{m.repeat||(u==null||u.container().focus(),r!=="move"&&(l.current=r,e(Jl("move"))),r==="move"&&l.current&&l.current!=="move"&&(e(Jl(l.current)),l.current="move"))},{keyup:!0,keydown:!0,preventDefault:!0},[r,l])},Jy=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}},w8=()=>{const e=ee(),t=f1(),n=C5();return{updateColorUnderCursor:()=>{if(!n||!t)return;const r=n.getPointerPosition();if(!r)return;const o=C9.pixelRatio,[s,i,l,u]=t.getContext().getImageData(r.x*o,r.y*o,1,1).data;u&&s&&i&&l&&e(w9({r:s,g:i,b:l,a:u}))},commitColorUnderCursor:()=>{e(S9())}}},Ome=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r}=t;return{tool:r,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),Dme=e=>{const t=ee(),{tool:n,isStaging:r}=L(Ome),{commitColorUnderCursor:o}=w8();return d.useCallback(s=>{if(!e.current)return;if(e.current.container().focus(),n==="move"||r){t(Qp(!0));return}if(n==="colorPicker"){o();return}const i=Jy(e.current);i&&(s.evt.preventDefault(),t(S5(!0)),t(k9([i.x,i.y])))},[e,n,r,t,o])},Rme=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),Ame=(e,t,n)=>{const r=ee(),{isDrawing:o,tool:s,isStaging:i}=L(Rme),{updateColorUnderCursor:l}=w8();return d.useCallback(()=>{if(!e.current)return;const u=Jy(e.current);if(u){if(r(_9(u)),n.current=u,s==="colorPicker"){l();return}!o||s==="move"||i||(t.current=!0,r(k5([u.x,u.y])))}},[t,r,o,i,n,e,s,l])},Nme=()=>{const e=ee();return d.useCallback(()=>{e(j9())},[e])},Tme=ie([wn,Lt,Co],(e,t,n)=>{const{tool:r,isDrawing:o}=t;return{tool:r,isDrawing:o,activeTabName:e,isStaging:n}},{memoizeOptions:{resultEqualityCheck:_t}}),$me=(e,t)=>{const n=ee(),{tool:r,isDrawing:o,isStaging:s}=L(Tme);return d.useCallback(()=>{if(r==="move"||s){n(Qp(!1));return}if(!t.current&&o&&e.current){const i=Jy(e.current);if(!i)return;n(k5([i.x,i.y]))}else t.current=!1;n(S5(!1))},[t,n,o,s,e,r])},Lme=ie([Lt],e=>{const{isMoveStageKeyHeld:t,stageScale:n}=e;return{isMoveStageKeyHeld:t,stageScale:n}},{memoizeOptions:{resultEqualityCheck:_t}}),zme=e=>{const t=ee(),{isMoveStageKeyHeld:n,stageScale:r}=L(Lme);return d.useCallback(o=>{if(!e.current||n)return;o.evt.preventDefault();const s=e.current.getPointerPosition();if(!s)return;const i={x:(s.x-e.current.x())/r,y:(s.y-e.current.y())/r};let l=o.evt.deltaY;o.evt.ctrlKey&&(l=-l);const u=Ni(r*E9**l,I9,P9),p={x:s.x-i.x*u,y:s.y-i.y*u};t(M9(u)),t(y5(p))},[e,n,r,t])},Fme=ie(Lt,e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,stageDimensions:r,stageScale:o,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i}=e;return{boundingBoxCoordinates:t,boundingBoxDimensions:n,shouldDarkenOutsideBoundingBox:s,stageCoordinates:i,stageDimensions:r,stageScale:o}},{memoizeOptions:{resultEqualityCheck:_t}}),Bme=()=>{const{boundingBoxCoordinates:e,boundingBoxDimensions:t,shouldDarkenOutsideBoundingBox:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=L(Fme);return a.jsxs(aa,{children:[a.jsx(ks,{offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fill:"rgba(0,0,0,0.4)",listening:!1,visible:n}),a.jsx(ks,{x:e.x,y:e.y,width:t.width,height:t.height,fill:"rgb(255,255,255)",listening:!1,visible:n,globalCompositeOperation:"destination-out"})]})},Hme=d.memo(Bme),Wme=ie([Lt],e=>{const{stageScale:t,stageCoordinates:n,stageDimensions:r}=e;return{stageScale:t,stageCoordinates:n,stageDimensions:r}},{memoizeOptions:{resultEqualityCheck:_t}}),Vme=()=>{const{stageScale:e,stageCoordinates:t,stageDimensions:n}=L(Wme),{colorMode:r}=la(),[o,s]=d.useState([]),[i,l]=ds("colors",["base.800","base.200"]),u=d.useCallback(p=>p/e,[e]);return d.useLayoutEffect(()=>{const{width:p,height:h}=n,{x:m,y:v}=t,b={x1:0,y1:0,x2:p,y2:h,offset:{x:u(m),y:u(v)}},y={x:Math.ceil(u(m)/64)*64,y:Math.ceil(u(v)/64)*64},x={x1:-y.x,y1:-y.y,x2:u(p)-y.x+64,y2:u(h)-y.y+64},k={x1:Math.min(b.x1,x.x1),y1:Math.min(b.y1,x.y1),x2:Math.max(b.x2,x.x2),y2:Math.max(b.y2,x.y2)},_=k.x2-k.x1,j=k.y2-k.y1,I=Math.round(_/64)+1,E=Math.round(j/64)+1,M=Iw(0,I).map(R=>a.jsx(dm,{x:k.x1+R*64,y:k.y1,points:[0,0,0,j],stroke:r==="dark"?i:l,strokeWidth:1},`x_${R}`)),D=Iw(0,E).map(R=>a.jsx(dm,{x:k.x1,y:k.y1+R*64,points:[0,0,_,0],stroke:r==="dark"?i:l,strokeWidth:1},`y_${R}`));s(M.concat(D))},[e,t,n,u,r,i,l]),a.jsx(aa,{children:o})},Ume=d.memo(Vme),Gme=ie([xo,Lt],(e,t)=>{const{progressImage:n,sessionId:r}=e,{sessionId:o,boundingBox:s}=t.layerState.stagingArea;return{boundingBox:s,progressImage:r===o?n:void 0}},{memoizeOptions:{resultEqualityCheck:_t}}),Kme=e=>{const{...t}=e,{progressImage:n,boundingBox:r}=L(Gme),[o,s]=d.useState(null);return d.useEffect(()=>{if(!n)return;const i=new Image;i.onload=()=>{s(i)},i.src=n.dataURL},[n]),n&&r&&o?a.jsx(C8,{x:r.x,y:r.y,width:r.width,height:r.height,image:o,listening:!1,...t}):null},qme=d.memo(Kme),Ai=e=>{const{r:t,g:n,b:r,a:o}=e;return`rgba(${t}, ${n}, ${r}, ${o})`},Xme=ie(Lt,e=>{const{maskColor:t,stageCoordinates:n,stageDimensions:r,stageScale:o}=e;return{stageCoordinates:n,stageDimensions:r,stageScale:o,maskColorString:Ai(t)}}),Sj=e=>`data:image/svg+xml;utf8, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`.replaceAll("black",e),Yme=e=>{const{...t}=e,{maskColorString:n,stageCoordinates:r,stageDimensions:o,stageScale:s}=L(Xme),[i,l]=d.useState(null),[u,p]=d.useState(0),h=d.useRef(null),m=d.useCallback(()=>{p(u+1),setTimeout(m,500)},[u]);return d.useEffect(()=>{if(i)return;const v=new Image;v.onload=()=>{l(v)},v.src=Sj(n)},[i,n]),d.useEffect(()=>{i&&(i.src=Sj(n))},[i,n]),d.useEffect(()=>{const v=setInterval(()=>p(b=>(b+1)%5),50);return()=>clearInterval(v)},[]),!i||!_l(r.x)||!_l(r.y)||!_l(s)||!_l(o.width)||!_l(o.height)?null:a.jsx(ks,{ref:h,offsetX:r.x/s,offsetY:r.y/s,height:o.height/s,width:o.width/s,fillPatternImage:i,fillPatternOffsetY:_l(u)?u:0,fillPatternRepeat:"repeat",fillPatternScale:{x:1/s,y:1/s},listening:!0,globalCompositeOperation:"source-in",...t})},Qme=d.memo(Yme),Zme=ie([Lt],e=>({objects:e.layerState.objects}),{memoizeOptions:{resultEqualityCheck:_t}}),Jme=e=>{const{...t}=e,{objects:n}=L(Zme);return a.jsx(aa,{listening:!1,...t,children:n.filter(O9).map((r,o)=>a.jsx(dm,{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"},o))})},ege=d.memo(Jme);var bi=d,tge=function(t,n,r){const o=bi.useRef("loading"),s=bi.useRef(),[i,l]=bi.useState(0),u=bi.useRef(),p=bi.useRef(),h=bi.useRef();return(u.current!==t||p.current!==n||h.current!==r)&&(o.current="loading",s.current=void 0,u.current=t,p.current=n,h.current=r),bi.useLayoutEffect(function(){if(!t)return;var m=document.createElement("img");function v(){o.current="loaded",s.current=m,l(Math.random())}function b(){o.current="failed",s.current=void 0,l(Math.random())}return m.addEventListener("load",v),m.addEventListener("error",b),n&&(m.crossOrigin=n),r&&(m.referrerPolicy=r),m.src=t,function(){m.removeEventListener("load",v),m.removeEventListener("error",b)}},[t,n,r]),[s.current,o.current]};const nge=Rc(tge),rge=e=>{const{width:t,height:n,x:r,y:o,imageName:s}=e.canvasImage,{currentData:i,isError:l}=Wr(s??Er.skipToken),[u]=nge((i==null?void 0:i.image_url)??"",D9.get()?"use-credentials":"anonymous");return l?a.jsx(ks,{x:r,y:o,width:t,height:n,fill:"red"}):a.jsx(C8,{x:r,y:o,image:u,listening:!1})},S8=d.memo(rge),oge=ie([Lt],e=>{const{layerState:{objects:t}}=e;return{objects:t}},{memoizeOptions:{resultEqualityCheck:_t}}),sge=()=>{const{objects:e}=L(oge);return e?a.jsx(aa,{name:"outpainting-objects",listening:!1,children:e.map((t,n)=>{if(R9(t))return a.jsx(S8,{canvasImage:t},n);if(A9(t)){const r=a.jsx(dm,{points:t.points,stroke:t.color?Ai(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?a.jsx(aa,{clipX:t.clip.x,clipY:t.clip.y,clipWidth:t.clip.width,clipHeight:t.clip.height,children:r},n):r}else{if(N9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:Ai(t.color)},n);if(T9(t))return a.jsx(ks,{x:t.x,y:t.y,width:t.width,height:t.height,fill:"rgb(255, 255, 255)",globalCompositeOperation:"destination-out"},n)}})}):null},age=d.memo(sge),ige=ie([Lt],e=>{const{layerState:t,shouldShowStagingImage:n,shouldShowStagingOutline:r,boundingBoxCoordinates:{x:o,y:s},boundingBoxDimensions:{width:i,height:l}}=e,{selectedImageIndex:u,images:p}=t.stagingArea;return{currentStagingAreaImage:p.length>0&&u!==void 0?p[u]:void 0,isOnFirstImage:u===0,isOnLastImage:u===p.length-1,shouldShowStagingImage:n,shouldShowStagingOutline:r,x:o,y:s,width:i,height:l}},{memoizeOptions:{resultEqualityCheck:_t}}),lge=e=>{const{...t}=e,{currentStagingAreaImage:n,shouldShowStagingImage:r,shouldShowStagingOutline:o,x:s,y:i,width:l,height:u}=L(ige);return a.jsxs(aa,{...t,children:[r&&n&&a.jsx(S8,{canvasImage:n}),o&&a.jsxs(aa,{children:[a.jsx(ks,{x:s,y:i,width:l,height:u,strokeWidth:1,stroke:"white",strokeScaleEnabled:!1}),a.jsx(ks,{x:s,y:i,width:l,height:u,dash:[4,4],strokeWidth:1,stroke:"black",strokeScaleEnabled:!1})]})]})},cge=d.memo(lge),uge=ie([Lt],e=>{const{layerState:{stagingArea:{images:t,selectedImageIndex:n,sessionId:r}},shouldShowStagingOutline:o,shouldShowStagingImage:s}=e;return{currentStagingAreaImage:t.length>0?t[n]:void 0,isOnFirstImage:n===0,isOnLastImage:n===t.length-1,shouldShowStagingImage:s,shouldShowStagingOutline:o,sessionId:r}},{memoizeOptions:{resultEqualityCheck:_t}}),dge=()=>{const e=ee(),{isOnFirstImage:t,isOnLastImage:n,currentStagingAreaImage:r,shouldShowStagingImage:o,sessionId:s}=L(uge),{t:i}=Z(),l=d.useCallback(()=>{e(Cw(!0))},[e]),u=d.useCallback(()=>{e(Cw(!1))},[e]);Ze(["left"],()=>{p()},{enabled:()=>!0,preventDefault:!0}),Ze(["right"],()=>{h()},{enabled:()=>!0,preventDefault:!0}),Ze(["enter"],()=>{m()},{enabled:()=>!0,preventDefault:!0});const p=d.useCallback(()=>e($9()),[e]),h=d.useCallback(()=>e(L9()),[e]),m=d.useCallback(()=>e(z9(s)),[e,s]),{data:v}=Wr((r==null?void 0:r.imageName)??Er.skipToken);return r?a.jsx($,{pos:"absolute",bottom:4,w:"100%",align:"center",justify:"center",onMouseOver:l,onMouseOut:u,children:a.jsxs(mn,{isAttached:!0,borderRadius:"base",shadow:"dark-lg",children:[a.jsx(Te,{tooltip:`${i("unifiedCanvas.previous")} (Left)`,"aria-label":`${i("unifiedCanvas.previous")} (Left)`,icon:a.jsx(yZ,{}),onClick:p,colorScheme:"accent",isDisabled:t}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.next")} (Right)`,"aria-label":`${i("unifiedCanvas.next")} (Right)`,icon:a.jsx(CZ,{}),onClick:h,colorScheme:"accent",isDisabled:n}),a.jsx(Te,{tooltip:`${i("unifiedCanvas.accept")} (Enter)`,"aria-label":`${i("unifiedCanvas.accept")} (Enter)`,icon:a.jsx(OE,{}),onClick:m,colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.showHide"),"aria-label":i("unifiedCanvas.showHide"),"data-alert":!o,icon:o?a.jsx(TZ,{}):a.jsx(NZ,{}),onClick:()=>e(F9(!o)),colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.saveToGallery"),"aria-label":i("unifiedCanvas.saveToGallery"),isDisabled:!v||!v.is_intermediate,icon:a.jsx(rg,{}),onClick:()=>{v&&e(B9({imageDTO:v}))},colorScheme:"accent"}),a.jsx(Te,{tooltip:i("unifiedCanvas.discardAll"),"aria-label":i("unifiedCanvas.discardAll"),icon:a.jsx(ol,{style:{transform:"rotate(45deg)"}}),onClick:()=>e(H9()),colorScheme:"error",fontSize:20})]})}):null},fge=d.memo(dge),pge=()=>{const e=L(l=>l.canvas.layerState),t=L(l=>l.canvas.boundingBoxCoordinates),n=L(l=>l.canvas.boundingBoxDimensions),r=L(l=>l.canvas.isMaskEnabled),o=L(l=>l.canvas.shouldPreserveMaskedArea),[s,i]=d.useState();return d.useEffect(()=>{i(void 0)},[e,t,n,r,o]),iJ(async()=>{const l=await W9(e,t,n,r,o);if(!l)return;const{baseImageData:u,maskImageData:p}=l,h=V9(u,p);i(h)},1e3,[e,t,n,r,o]),s},hge={txt2img:"Text to Image",img2img:"Image to Image",inpaint:"Inpaint",outpaint:"Inpaint"},mge=()=>{const e=pge();return a.jsxs(Ie,{children:["Mode: ",e?hge[e]:"..."]})},gge=d.memo(mge),Ql=e=>Math.round(e*100)/100,vge=ie([Lt],e=>{const{cursorPosition:t}=e,{cursorX:n,cursorY:r}=t?{cursorX:t.x,cursorY:t.y}:{cursorX:-1,cursorY:-1};return{cursorCoordinatesString:`(${Ql(n)}, ${Ql(r)})`}},{memoizeOptions:{resultEqualityCheck:_t}});function bge(){const{cursorCoordinatesString:e}=L(vge),{t}=Z();return a.jsx(Ie,{children:`${t("unifiedCanvas.cursorPosition")}: ${e}`})}const Db="var(--invokeai-colors-warning-500)",xge=ie([Lt],e=>{const{stageDimensions:{width:t,height:n},stageCoordinates:{x:r,y:o},boundingBoxDimensions:{width:s,height:i},scaledBoundingBoxDimensions:{width:l,height:u},boundingBoxCoordinates:{x:p,y:h},stageScale:m,shouldShowCanvasDebugInfo:v,layer:b,boundingBoxScaleMethod:y,shouldPreserveMaskedArea:x}=e;let w="inherit";return(y==="none"&&(s<512||i<512)||y==="manual"&&l*u<512*512)&&(w=Db),{activeLayerColor:b==="mask"?Db:"inherit",activeLayerString:b.charAt(0).toUpperCase()+b.slice(1),boundingBoxColor:w,boundingBoxCoordinatesString:`(${Ql(p)}, ${Ql(h)})`,boundingBoxDimensionsString:`${s}×${i}`,scaledBoundingBoxDimensionsString:`${l}×${u}`,canvasCoordinatesString:`${Ql(r)}×${Ql(o)}`,canvasDimensionsString:`${t}×${n}`,canvasScaleString:Math.round(m*100),shouldShowCanvasDebugInfo:v,shouldShowBoundingBox:y!=="auto",shouldShowScaledBoundingBox:y!=="none",shouldPreserveMaskedArea:x}},{memoizeOptions:{resultEqualityCheck:_t}}),yge=()=>{const{activeLayerColor:e,activeLayerString:t,boundingBoxColor:n,boundingBoxCoordinatesString:r,boundingBoxDimensionsString:o,scaledBoundingBoxDimensionsString:s,shouldShowScaledBoundingBox:i,canvasCoordinatesString:l,canvasDimensionsString:u,canvasScaleString:p,shouldShowCanvasDebugInfo:h,shouldShowBoundingBox:m,shouldPreserveMaskedArea:v}=L(xge),{t:b}=Z();return a.jsxs($,{sx:{flexDirection:"column",position:"absolute",top:0,insetInlineStart:0,opacity:.65,display:"flex",fontSize:"sm",padding:1,px:2,minWidth:48,margin:1,borderRadius:"base",pointerEvents:"none",bg:"base.200",_dark:{bg:"base.800"}},children:[a.jsx(gge,{}),a.jsx(Ie,{style:{color:e},children:`${b("unifiedCanvas.activeLayer")}: ${t}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasScale")}: ${p}%`}),v&&a.jsx(Ie,{style:{color:Db},children:"Preserve Masked Area: On"}),m&&a.jsx(Ie,{style:{color:n},children:`${b("unifiedCanvas.boundingBox")}: ${o}`}),i&&a.jsx(Ie,{style:{color:n},children:`${b("unifiedCanvas.scaledBoundingBox")}: ${s}`}),h&&a.jsxs(a.Fragment,{children:[a.jsx(Ie,{children:`${b("unifiedCanvas.boundingBoxPosition")}: ${r}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasDimensions")}: ${u}`}),a.jsx(Ie,{children:`${b("unifiedCanvas.canvasPosition")}: ${l}`}),a.jsx(bge,{})]})]})},Cge=d.memo(yge),wge=ie([xe],({canvas:e,generation:t})=>{const{boundingBoxCoordinates:n,boundingBoxDimensions:r,stageScale:o,isDrawing:s,isTransformingBoundingBox:i,isMovingBoundingBox:l,tool:u,shouldSnapToGrid:p}=e,{aspectRatio:h}=t;return{boundingBoxCoordinates:n,boundingBoxDimensions:r,isDrawing:s,isMovingBoundingBox:l,isTransformingBoundingBox:i,stageScale:o,shouldSnapToGrid:p,tool:u,hitStrokeWidth:20/o,aspectRatio:h}},{memoizeOptions:{resultEqualityCheck:_t}}),Sge=e=>{const{...t}=e,n=ee(),{boundingBoxCoordinates:r,boundingBoxDimensions:o,isDrawing:s,isMovingBoundingBox:i,isTransformingBoundingBox:l,stageScale:u,shouldSnapToGrid:p,tool:h,hitStrokeWidth:m,aspectRatio:v}=L(wge),b=d.useRef(null),y=d.useRef(null),[x,w]=d.useState(!1);d.useEffect(()=>{var F;!b.current||!y.current||(b.current.nodes([y.current]),(F=b.current.getLayer())==null||F.batchDraw())},[]);const k=64*u;Ze("N",()=>{n(Zp(!p))});const _=d.useCallback(F=>{if(!p){n(Q0({x:Math.floor(F.target.x()),y:Math.floor(F.target.y())}));return}const V=F.target.x(),X=F.target.y(),W=fr(V,64),z=fr(X,64);F.target.x(W),F.target.y(z),n(Q0({x:W,y:z}))},[n,p]),j=d.useCallback(()=>{if(!y.current)return;const F=y.current,V=F.scaleX(),X=F.scaleY(),W=Math.round(F.width()*V),z=Math.round(F.height()*X),Y=Math.round(F.x()),B=Math.round(F.y());if(v){const q=fr(W/v,64);n(No({width:W,height:q}))}else n(No({width:W,height:z}));n(Q0({x:p?Mu(Y,64):Y,y:p?Mu(B,64):B})),F.scaleX(1),F.scaleY(1)},[n,p,v]),I=d.useCallback((F,V,X)=>{const W=F.x%k,z=F.y%k;return{x:Mu(V.x,k)+W,y:Mu(V.y,k)+z}},[k]),E=()=>{n(Z0(!0))},M=()=>{n(Z0(!1)),n(J0(!1)),n(Xf(!1)),w(!1)},D=()=>{n(J0(!0))},R=()=>{n(Z0(!1)),n(J0(!1)),n(Xf(!1)),w(!1)},A=()=>{w(!0)},O=()=>{!l&&!i&&w(!1)},T=()=>{n(Xf(!0))},K=()=>{n(Xf(!1))};return a.jsxs(aa,{...t,children:[a.jsx(ks,{height:o.height,width:o.width,x:r.x,y:r.y,onMouseEnter:T,onMouseOver:T,onMouseLeave:K,onMouseOut:K}),a.jsx(ks,{draggable:!0,fillEnabled:!1,height:o.height,hitStrokeWidth:m,listening:!s&&h==="move",onDragStart:D,onDragEnd:R,onDragMove:_,onMouseDown:D,onMouseOut:O,onMouseOver:A,onMouseEnter:A,onMouseUp:R,onTransform:j,onTransformEnd:M,ref:y,stroke:x?"rgba(255,255,255,0.7)":"white",strokeWidth:(x?8:1)/u,width:o.width,x:r.x,y:r.y}),a.jsx(_me,{anchorCornerRadius:3,anchorDragBoundFunc:I,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:!s&&h==="move",onDragStart:D,onDragEnd:R,onMouseDown:E,onMouseUp:M,onTransformEnd:M,ref:b,rotateEnabled:!1})]})},kge=d.memo(Sge),_ge=ie(Lt,e=>{const{cursorPosition:t,brushSize:n,colorPickerColor:r,maskColor:o,brushColor:s,tool:i,layer:l,shouldShowBrush:u,isMovingBoundingBox:p,isTransformingBoundingBox:h,stageScale:m,stageDimensions:v,boundingBoxCoordinates:b,boundingBoxDimensions:y,shouldRestrictStrokesToBox:x}=e,w=x?{clipX:b.x,clipY:b.y,clipWidth:y.width,clipHeight:y.height}:{};return{cursorPosition:t,brushX:t?t.x:v.width/2,brushY:t?t.y:v.height/2,radius:n/2,colorPickerOuterRadius:ww/m,colorPickerInnerRadius:(ww-p1+1)/m,maskColorString:Ai({...o,a:.5}),brushColorString:Ai(s),colorPickerColorString:Ai(r),tool:i,layer:l,shouldShowBrush:u,shouldDrawBrushPreview:!(p||h||!t)&&u,strokeWidth:1.5/m,dotRadius:1.5/m,clip:w}},{memoizeOptions:{resultEqualityCheck:_t}}),jge=e=>{const{...t}=e,{brushX:n,brushY:r,radius:o,maskColorString:s,tool:i,layer:l,shouldDrawBrushPreview:u,dotRadius:p,strokeWidth:h,brushColorString:m,colorPickerColorString:v,colorPickerInnerRadius:b,colorPickerOuterRadius:y,clip:x}=L(_ge);return u?a.jsxs(aa,{listening:!1,...x,...t,children:[i==="colorPicker"?a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:y,stroke:m,strokeWidth:p1,strokeScaleEnabled:!1}),a.jsx(vi,{x:n,y:r,radius:b,stroke:v,strokeWidth:p1,strokeScaleEnabled:!1})]}):a.jsxs(a.Fragment,{children:[a.jsx(vi,{x:n,y:r,radius:o,fill:l==="mask"?s:m,globalCompositeOperation:i==="eraser"?"destination-out":"source-out"}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(255,255,255,0.4)",strokeWidth:h*2,strokeEnabled:!0,listening:!1}),a.jsx(vi,{x:n,y:r,radius:o,stroke:"rgba(0,0,0,1)",strokeWidth:h,strokeEnabled:!0,listening:!1})]}),a.jsx(vi,{x:n,y:r,radius:p*2,fill:"rgba(255,255,255,0.4)",listening:!1}),a.jsx(vi,{x:n,y:r,radius:p,fill:"rgba(0,0,0,1)",listening:!1})]}):null},Pge=d.memo(jge),Ige=ie([Lt,Co],(e,t)=>{const{isMaskEnabled:n,stageScale:r,shouldShowBoundingBox:o,isTransformingBoundingBox:s,isMouseOverBoundingBox:i,isMovingBoundingBox:l,stageDimensions:u,stageCoordinates:p,tool:h,isMovingStage:m,shouldShowIntermediates:v,shouldShowGrid:b,shouldRestrictStrokesToBox:y,shouldAntialias:x}=e;let w="none";return h==="move"||t?m?w="grabbing":w="grab":s?w=void 0:y&&!i&&(w="default"),{isMaskEnabled:n,isModifyingBoundingBox:s||l,shouldShowBoundingBox:o,shouldShowGrid:b,stageCoordinates:p,stageCursor:w,stageDimensions:u,stageScale:r,tool:h,isStaging:t,shouldShowIntermediates:v,shouldAntialias:x}},we),Ege=_e(jme,{shouldForwardProp:e=>!["sx"].includes(e)}),Mge=()=>{const{isMaskEnabled:e,isModifyingBoundingBox:t,shouldShowBoundingBox:n,shouldShowGrid:r,stageCoordinates:o,stageCursor:s,stageDimensions:i,stageScale:l,tool:u,isStaging:p,shouldShowIntermediates:h,shouldAntialias:m}=L(Ige);Mme();const v=ee(),b=d.useRef(null),y=d.useRef(null),x=d.useRef(null),w=d.useCallback(K=>{U9(K),y.current=K},[]),k=d.useCallback(K=>{G9(K),x.current=K},[]),_=d.useRef({x:0,y:0}),j=d.useRef(!1),I=zme(y),E=Dme(y),M=$me(y,j),D=Ame(y,j,_),R=Nme(),{handleDragStart:A,handleDragMove:O,handleDragEnd:T}=Ime();return d.useEffect(()=>{if(!b.current)return;const K=new ResizeObserver(F=>{for(const V of F)if(V.contentBoxSize){const{width:X,height:W}=V.contentRect;v(Sw({width:X,height:W}))}});return K.observe(b.current),v(Sw(b.current.getBoundingClientRect())),()=>{K.disconnect()}},[v]),a.jsxs($,{id:"canvas-container",ref:b,sx:{position:"relative",height:"100%",width:"100%",borderRadius:"base"},children:[a.jsx(Ie,{sx:{position:"absolute"},children:a.jsxs(Ege,{tabIndex:-1,ref:w,sx:{outline:"none",overflow:"hidden",cursor:s||void 0,canvas:{outline:"none"}},x:o.x,y:o.y,width:i.width,height:i.height,scale:{x:l,y:l},onTouchStart:E,onTouchMove:D,onTouchEnd:M,onMouseDown:E,onMouseLeave:R,onMouseMove:D,onMouseUp:M,onDragStart:A,onDragMove:O,onDragEnd:T,onContextMenu:K=>K.evt.preventDefault(),onWheel:I,draggable:(u==="move"||p)&&!t,children:[a.jsx(Eu,{id:"grid",visible:r,children:a.jsx(Ume,{})}),a.jsx(Eu,{id:"base",ref:k,listening:!1,imageSmoothingEnabled:m,children:a.jsx(age,{})}),a.jsxs(Eu,{id:"mask",visible:e,listening:!1,children:[a.jsx(ege,{visible:!0,listening:!1}),a.jsx(Qme,{listening:!1})]}),a.jsx(Eu,{children:a.jsx(Hme,{})}),a.jsxs(Eu,{id:"preview",imageSmoothingEnabled:m,children:[!p&&a.jsx(Pge,{visible:u!=="move",listening:!1}),a.jsx(cge,{visible:p}),h&&a.jsx(qme,{}),a.jsx(kge,{visible:n&&!p})]})]})}),a.jsx(Cge,{}),a.jsx(fge,{})]})},Oge=d.memo(Mge);function Dge(e,t,n=250){const[r,o]=d.useState(0);return d.useEffect(()=>{const s=setTimeout(()=>{r===1&&e(),o(0)},n);return r===2&&t(),()=>clearTimeout(s)},[r,e,t,n]),()=>o(s=>s+1)}const Rge=_e(xO,{baseStyle:{paddingInline:4},shouldForwardProp:e=>!["pickerColor"].includes(e)}),Jv={width:6,height:6,borderColor:"base.100"},Age=e=>{const{styleClass:t="",...n}=e;return a.jsx(Rge,{sx:{".react-colorful__hue-pointer":Jv,".react-colorful__saturation-pointer":Jv,".react-colorful__alpha-pointer":Jv},className:t,...n})},k8=d.memo(Age),Nge=ie([Lt,Co],(e,t)=>{const{maskColor:n,layer:r,isMaskEnabled:o,shouldPreserveMaskedArea:s}=e;return{layer:r,maskColor:n,maskColorString:Ai(n),isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:t}},{memoizeOptions:{resultEqualityCheck:_t}}),Tge=()=>{const e=ee(),{t}=Z(),{layer:n,maskColor:r,isMaskEnabled:o,shouldPreserveMaskedArea:s,isStaging:i}=L(Nge);Ze(["q"],()=>{l()},{enabled:()=>!i,preventDefault:!0},[n]),Ze(["shift+c"],()=>{u()},{enabled:()=>!i,preventDefault:!0},[]),Ze(["h"],()=>{p()},{enabled:()=>!i,preventDefault:!0},[o]);const l=()=>{e(_5(n==="mask"?"base":"mask"))},u=()=>e(w5()),p=()=>e(Qb(!o)),h=async()=>{e(X9())};return a.jsx(qd,{triggerComponent:a.jsx(mn,{children:a.jsx(Te,{"aria-label":t("unifiedCanvas.maskingOptions"),tooltip:t("unifiedCanvas.maskingOptions"),icon:a.jsx(zE,{}),isChecked:n==="mask",isDisabled:i})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(ur,{label:`${t("unifiedCanvas.enableMask")} (H)`,isChecked:o,onChange:p}),a.jsx(ur,{label:t("unifiedCanvas.preserveMaskedArea"),isChecked:s,onChange:m=>e(K9(m.target.checked))}),a.jsx(k8,{sx:{paddingTop:2,paddingBottom:2},pickerColor:r,onChange:m=>e(q9(m))}),a.jsx(it,{size:"sm",leftIcon:a.jsx(rg,{}),onClick:h,children:"Save Mask"}),a.jsxs(it,{size:"sm",leftIcon:a.jsx(Kr,{}),onClick:u,children:[t("unifiedCanvas.clearMask")," (Shift+C)"]})]})})},$ge=d.memo(Tge),Lge=ie([Lt,wn,xo],(e,t,n)=>{const{futureLayerStates:r}=e;return{canRedo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}});function zge(){const e=ee(),{canRedo:t,activeTabName:n}=L(Lge),{t:r}=Z(),o=()=>{e(Y9())};return Ze(["meta+shift+z","ctrl+shift+z","control+y","meta+y"],()=>{o()},{enabled:()=>t,preventDefault:!0},[n,t]),a.jsx(Te,{"aria-label":`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,tooltip:`${r("unifiedCanvas.redo")} (Ctrl+Shift+Z)`,icon:a.jsx(KZ,{}),onClick:o,isDisabled:!t})}const Fge=()=>{const e=L(Co),t=ee(),{t:n}=Z();return a.jsxs(Gy,{title:n("unifiedCanvas.clearCanvasHistory"),acceptCallback:()=>t(Q9()),acceptButtonText:n("unifiedCanvas.clearHistory"),triggerComponent:a.jsx(it,{size:"sm",leftIcon:a.jsx(Kr,{}),isDisabled:e,children:n("unifiedCanvas.clearCanvasHistory")}),children:[a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryMessage")}),a.jsx("br",{}),a.jsx("p",{children:n("unifiedCanvas.clearCanvasHistoryConfirm")})]})},Bge=d.memo(Fge),Hge=ie([Lt],e=>{const{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:u,shouldAntialias:p}=e;return{shouldAutoSave:t,shouldCropToBoundingBoxOnSave:n,shouldDarkenOutsideBoundingBox:r,shouldShowCanvasDebugInfo:o,shouldShowGrid:s,shouldShowIntermediates:i,shouldSnapToGrid:l,shouldRestrictStrokesToBox:u,shouldAntialias:p}},{memoizeOptions:{resultEqualityCheck:_t}}),Wge=()=>{const e=ee(),{t}=Z(),{shouldAutoSave:n,shouldCropToBoundingBoxOnSave:r,shouldDarkenOutsideBoundingBox:o,shouldShowCanvasDebugInfo:s,shouldShowGrid:i,shouldShowIntermediates:l,shouldSnapToGrid:u,shouldRestrictStrokesToBox:p,shouldAntialias:h}=L(Hge);Ze(["n"],()=>{e(Zp(!u))},{enabled:!0,preventDefault:!0},[u]);const m=v=>e(Zp(v.target.checked));return a.jsx(qd,{isLazy:!1,triggerComponent:a.jsx(Te,{tooltip:t("unifiedCanvas.canvasSettings"),"aria-label":t("unifiedCanvas.canvasSettings"),icon:a.jsx(VE,{})}),children:a.jsxs($,{direction:"column",gap:2,children:[a.jsx(ur,{label:t("unifiedCanvas.showIntermediates"),isChecked:l,onChange:v=>e(Z9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showGrid"),isChecked:i,onChange:v=>e(J9(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.snapToGrid"),isChecked:u,onChange:m}),a.jsx(ur,{label:t("unifiedCanvas.darkenOutsideSelection"),isChecked:o,onChange:v=>e(eN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.autoSaveToGallery"),isChecked:n,onChange:v=>e(tN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.saveBoxRegionOnly"),isChecked:r,onChange:v=>e(nN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.limitStrokesToBox"),isChecked:p,onChange:v=>e(rN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.showCanvasDebugInfo"),isChecked:s,onChange:v=>e(oN(v.target.checked))}),a.jsx(ur,{label:t("unifiedCanvas.antialiasing"),isChecked:h,onChange:v=>e(sN(v.target.checked))}),a.jsx(Bge,{})]})})},Vge=d.memo(Wge),Uge=ie([Lt,Co,xo],(e,t,n)=>{const{isProcessing:r}=n,{tool:o,brushColor:s,brushSize:i}=e;return{tool:o,isStaging:t,isProcessing:r,brushColor:s,brushSize:i}},{memoizeOptions:{resultEqualityCheck:_t}}),Gge=()=>{const e=ee(),{tool:t,brushColor:n,brushSize:r,isStaging:o}=L(Uge),{t:s}=Z();Ze(["b"],()=>{i()},{enabled:()=>!o,preventDefault:!0},[]),Ze(["e"],()=>{l()},{enabled:()=>!o,preventDefault:!0},[t]),Ze(["c"],()=>{u()},{enabled:()=>!o,preventDefault:!0},[t]),Ze(["shift+f"],()=>{p()},{enabled:()=>!o,preventDefault:!0}),Ze(["delete","backspace"],()=>{h()},{enabled:()=>!o,preventDefault:!0}),Ze(["BracketLeft"],()=>{r-5<=5?e(Yf(Math.max(r-1,1))):e(Yf(Math.max(r-5,1)))},{enabled:()=>!o,preventDefault:!0},[r]),Ze(["BracketRight"],()=>{e(Yf(Math.min(r+5,500)))},{enabled:()=>!o,preventDefault:!0},[r]),Ze(["Shift+BracketLeft"],()=>{e(ev({...n,a:Ni(n.a-.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]),Ze(["Shift+BracketRight"],()=>{e(ev({...n,a:Ni(n.a+.05,.05,1)}))},{enabled:()=>!o,preventDefault:!0},[n]);const i=()=>e(Jl("brush")),l=()=>e(Jl("eraser")),u=()=>e(Jl("colorPicker")),p=()=>e(aN()),h=()=>e(iN());return a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${s("unifiedCanvas.brush")} (B)`,tooltip:`${s("unifiedCanvas.brush")} (B)`,icon:a.jsx(UZ,{}),isChecked:t==="brush"&&!o,onClick:i,isDisabled:o}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraser")} (E)`,tooltip:`${s("unifiedCanvas.eraser")} (E)`,icon:a.jsx(EZ,{}),isChecked:t==="eraser"&&!o,isDisabled:o,onClick:l}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,tooltip:`${s("unifiedCanvas.fillBoundingBox")} (Shift+F)`,icon:a.jsx($Z,{}),isDisabled:o,onClick:p}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,tooltip:`${s("unifiedCanvas.eraseBoundingBox")} (Del/Backspace)`,icon:a.jsx(ol,{style:{transform:"rotate(45deg)"}}),isDisabled:o,onClick:h}),a.jsx(Te,{"aria-label":`${s("unifiedCanvas.colorPicker")} (C)`,tooltip:`${s("unifiedCanvas.colorPicker")} (C)`,icon:a.jsx(AZ,{}),isChecked:t==="colorPicker"&&!o,isDisabled:o,onClick:u}),a.jsx(qd,{triggerComponent:a.jsx(Te,{"aria-label":s("unifiedCanvas.brushOptions"),tooltip:s("unifiedCanvas.brushOptions"),icon:a.jsx(HE,{})}),children:a.jsxs($,{minWidth:60,direction:"column",gap:4,width:"100%",children:[a.jsx($,{gap:4,justifyContent:"space-between",children:a.jsx(Xe,{label:s("unifiedCanvas.brushSize"),value:r,withInput:!0,onChange:m=>e(Yf(m)),sliderNumberInputProps:{max:500}})}),a.jsx(k8,{sx:{width:"100%",paddingTop:2,paddingBottom:2},pickerColor:n,onChange:m=>e(ev(m))})]})})]})},Kge=d.memo(Gge),qge=ie([Lt,wn,xo],(e,t,n)=>{const{pastLayerStates:r}=e;return{canUndo:r.length>0&&!n.isProcessing,activeTabName:t}},{memoizeOptions:{resultEqualityCheck:_t}});function Xge(){const e=ee(),{t}=Z(),{canUndo:n,activeTabName:r}=L(qge),o=()=>{e(lN())};return Ze(["meta+z","ctrl+z"],()=>{o()},{enabled:()=>n,preventDefault:!0},[r,n]),a.jsx(Te,{"aria-label":`${t("unifiedCanvas.undo")} (Ctrl+Z)`,tooltip:`${t("unifiedCanvas.undo")} (Ctrl+Z)`,icon:a.jsx(Ud,{}),onClick:o,isDisabled:!n})}const Yge=ie([xo,Lt,Co],(e,t,n)=>{const{isProcessing:r}=e,{tool:o,shouldCropToBoundingBoxOnSave:s,layer:i,isMaskEnabled:l}=t;return{isProcessing:r,isStaging:n,isMaskEnabled:l,tool:o,layer:i,shouldCropToBoundingBoxOnSave:s}},{memoizeOptions:{resultEqualityCheck:_t}}),Qge=()=>{const e=ee(),{isProcessing:t,isStaging:n,isMaskEnabled:r,layer:o,tool:s}=L(Yge),i=f1(),{t:l}=Z(),{isClipboardAPIAvailable:u}=WM(),{getUploadButtonProps:p,getUploadInputProps:h}=Iy({postUploadAction:{type:"SET_CANVAS_INITIAL_IMAGE"}});Ze(["v"],()=>{m()},{enabled:()=>!n,preventDefault:!0},[]),Ze(["r"],()=>{b()},{enabled:()=>!0,preventDefault:!0},[i]),Ze(["shift+m"],()=>{x()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ze(["shift+s"],()=>{w()},{enabled:()=>!n,preventDefault:!0},[i,t]),Ze(["meta+c","ctrl+c"],()=>{k()},{enabled:()=>!n&&u,preventDefault:!0},[i,t,u]),Ze(["shift+d"],()=>{_()},{enabled:()=>!n,preventDefault:!0},[i,t]);const m=()=>e(Jl("move")),v=Dge(()=>b(!1),()=>b(!0)),b=(I=!1)=>{const E=f1();if(!E)return;const M=E.getClientRect({skipTransform:!0});e(uN({contentRect:M,shouldScaleTo1:I}))},y=()=>{e(Bj())},x=()=>{e(dN())},w=()=>{e(fN())},k=()=>{u&&e(pN())},_=()=>{e(hN())},j=I=>{const E=I;e(_5(E)),E==="mask"&&!r&&e(Qb(!0))};return a.jsxs($,{sx:{alignItems:"center",gap:2,flexWrap:"wrap"},children:[a.jsx(Ie,{w:24,children:a.jsx(In,{tooltip:`${l("unifiedCanvas.layer")} (Q)`,value:o,data:cN,onChange:j,disabled:n})}),a.jsx($ge,{}),a.jsx(Kge,{}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.move")} (V)`,tooltip:`${l("unifiedCanvas.move")} (V)`,icon:a.jsx(wZ,{}),isChecked:s==="move"||n,onClick:m}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.resetView")} (R)`,tooltip:`${l("unifiedCanvas.resetView")} (R)`,icon:a.jsx(jZ,{}),onClick:v})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,tooltip:`${l("unifiedCanvas.mergeVisible")} (Shift+M)`,icon:a.jsx(HZ,{}),onClick:x,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,tooltip:`${l("unifiedCanvas.saveToGallery")} (Shift+S)`,icon:a.jsx(rg,{}),onClick:w,isDisabled:n}),u&&a.jsx(Te,{"aria-label":`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,tooltip:`${l("unifiedCanvas.copyToClipboard")} (Cmd/Ctrl+C)`,icon:a.jsx(Wc,{}),onClick:k,isDisabled:n}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,tooltip:`${l("unifiedCanvas.downloadAsImage")} (Shift+D)`,icon:a.jsx(ng,{}),onClick:_,isDisabled:n})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Xge,{}),a.jsx(zge,{})]}),a.jsxs(mn,{isAttached:!0,children:[a.jsx(Te,{"aria-label":`${l("common.upload")}`,tooltip:`${l("common.upload")}`,icon:a.jsx(og,{}),isDisabled:n,...p()}),a.jsx("input",{...h()}),a.jsx(Te,{"aria-label":`${l("unifiedCanvas.clearCanvas")}`,tooltip:`${l("unifiedCanvas.clearCanvas")}`,icon:a.jsx(Kr,{}),onClick:y,colorScheme:"error",isDisabled:n})]}),a.jsx(mn,{isAttached:!0,children:a.jsx(Vge,{})})]})},Zge=d.memo(Qge),kj={id:"canvas-intial-image",actionType:"SET_CANVAS_INITIAL_IMAGE"},Jge=()=>{const{isOver:e,setNodeRef:t,active:n}=wM({id:"unifiedCanvas",data:kj});return a.jsxs($,{layerStyle:"first",ref:t,tabIndex:-1,sx:{flexDirection:"column",alignItems:"center",gap:4,p:2,borderRadius:"base",w:"full",h:"full"},children:[a.jsx(Zge,{}),a.jsx(Oge,{}),SM(kj,n)&&a.jsx(kM,{isOver:e,label:"Set Canvas Initial Image"})]})},e0e=d.memo(Jge),t0e=()=>a.jsx(e0e,{}),n0e=d.memo(t0e),r0e=[{id:"txt2img",translationKey:"common.txt2img",icon:a.jsx(Tn,{as:LZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(She,{})},{id:"img2img",translationKey:"common.img2img",icon:a.jsx(Tn,{as:Ui,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Oue,{})},{id:"unifiedCanvas",translationKey:"common.unifiedCanvas",icon:a.jsx(Tn,{as:Tne,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(n0e,{})},{id:"nodes",translationKey:"common.nodes",icon:a.jsx(Tn,{as:yg,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Che,{})},{id:"modelManager",translationKey:"modelManager.modelManager",icon:a.jsx(Tn,{as:PZ,sx:{boxSize:6,pointerEvents:"none"}}),content:a.jsx(Mde,{})}],o0e=ie([xe],({config:e})=>{const{disabledTabs:t}=e;return r0e.filter(r=>!t.includes(r.id))},{memoizeOptions:{resultEqualityCheck:_t}}),s0e=448,a0e=448,i0e=360,l0e=["modelManager"],c0e=["modelManager"],u0e=()=>{const e=L(mN),t=L(wn),n=L(o0e),{t:r}=Z(),o=ee(),s=d.useCallback(O=>{O.target instanceof HTMLElement&&O.target.blur()},[]),i=d.useMemo(()=>n.map(O=>a.jsx(Rt,{hasArrow:!0,label:String(r(O.translationKey)),placement:"end",children:a.jsxs(Pr,{onClick:s,children:[a.jsx(H5,{children:String(r(O.translationKey))}),O.icon]})},O.id)),[n,r,s]),l=d.useMemo(()=>n.map(O=>a.jsx(mo,{children:O.content},O.id)),[n]),u=d.useCallback(O=>{const T=gN[O];T&&o(Aa(T))},[o]),{minSize:p,isCollapsed:h,setIsCollapsed:m,ref:v,reset:b,expand:y,collapse:x,toggle:w}=M_(s0e,"pixels"),{ref:k,minSize:_,isCollapsed:j,setIsCollapsed:I,reset:E,expand:M,collapse:D,toggle:R}=M_(i0e,"pixels");Ze("f",()=>{j||h?(M(),y()):(x(),D())},[o,j,h]),Ze(["t","o"],()=>{w()},[o]),Ze("g",()=>{R()},[o]);const A=Ny();return a.jsxs(Ji,{variant:"appTabs",defaultIndex:e,index:e,onChange:u,sx:{flexGrow:1,gap:4},isLazy:!0,children:[a.jsxs(el,{sx:{pt:2,gap:4,flexDir:"column"},children:[i,a.jsx(Za,{}),a.jsx(MJ,{})]}),a.jsxs(Sg,{id:"app",autoSaveId:"app",direction:"horizontal",style:{height:"100%",width:"100%"},storage:A,units:"pixels",children:[!c0e.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(Ua,{order:0,id:"side",ref:v,defaultSize:p,minSize:p,onCollapse:m,collapsible:!0,children:t==="nodes"?a.jsx(pse,{}):a.jsx(Jce,{})}),a.jsx(im,{onDoubleClick:b,collapsedDirection:h?"left":void 0}),a.jsx(vse,{isSidePanelCollapsed:h,sidePanelRef:v})]}),a.jsx(Ua,{id:"main",order:1,minSize:a0e,children:a.jsx(Fc,{style:{height:"100%",width:"100%"},children:l})}),!l0e.includes(t)&&a.jsxs(a.Fragment,{children:[a.jsx(im,{onDoubleClick:E,collapsedDirection:j?"right":void 0}),a.jsx(Ua,{id:"gallery",ref:k,order:2,defaultSize:_,minSize:_,onCollapse:I,collapsible:!0,children:a.jsx(pre,{})}),a.jsx(mse,{isGalleryCollapsed:j,galleryPanelRef:k})]})]})]})},d0e=d.memo(u0e),f0e=d.createContext(null),e1={didCatch:!1,error:null};class p0e extends d.Component{constructor(t){super(t),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=e1}static getDerivedStateFromError(t){return{didCatch:!0,error:t}}resetErrorBoundary(){const{error:t}=this.state;if(t!==null){for(var n,r,o=arguments.length,s=new Array(o),i=0;i0&&arguments[0]!==void 0?arguments[0]:[],t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e.length!==t.length||e.some((n,r)=>!Object.is(n,t[r]))}const m0e=()=>{const e=ee(),[t,n]=d.useState(),[r,o]=d.useState(),{recallAllParameters:s}=xg(),i=tl(),{currentData:l}=Wr(t??Er.skipToken),{currentData:u}=vN(r??Er.skipToken);return{handlePreselectedImage:d.useCallback(h=>{h&&(h.action==="sendToCanvas"&&(n(h==null?void 0:h.imageName),l&&(e(Yj(l)),e(Aa("unifiedCanvas")),i({title:bN("toast.sentToUnifiedCanvas"),status:"info",duration:2500,isClosable:!0}))),h.action==="sendToImg2Img"&&(n(h==null?void 0:h.imageName),l&&e(gm(l))),h.action==="useAllParameters"&&(o(h==null?void 0:h.imageName),u&&s(u.metadata)))},[e,l,u,s,i])}};function g0e(e={}){let t;if(e.repoUrl)t=e.repoUrl;else if(e.user&&e.repo)t=`https://github.com/${e.user}/${e.repo}`;else throw new Error("You need to specify either the `repoUrl` option or both the `user` and `repo` options");const n=new URL(`${t}/issues/new`),r=["body","title","labels","template","milestone","assignee","projects"];for(const o of r){let s=e[o];if(s!==void 0){if(o==="labels"||o==="projects"){if(!Array.isArray(s))throw new TypeError(`The \`${o}\` option should be an array`);s=s.join(",")}n.searchParams.set(o,s)}}return n.toString()}const v0e=({error:e,resetErrorBoundary:t})=>{const n=A5(),r=d.useCallback(()=>{const s=JSON.stringify(xN(e),null,2);navigator.clipboard.writeText(`\`\`\` +${s} +\`\`\``),n({title:"Error Copied"})},[e,n]),o=d.useMemo(()=>g0e({user:"invoke-ai",repo:"InvokeAI",template:"BUG_REPORT.yml",title:`[bug]: ${e.name}: ${e.message}`}),[e.message,e.name]);return a.jsx($,{layerStyle:"body",sx:{w:"100vw",h:"100vh",alignItems:"center",justifyContent:"center",p:4},children:a.jsxs($,{layerStyle:"first",sx:{flexDir:"column",borderRadius:"base",justifyContent:"center",gap:8,p:16},children:[a.jsx(io,{children:"Something went wrong"}),a.jsx($,{layerStyle:"second",sx:{px:8,py:4,borderRadius:"base",gap:4,justifyContent:"space-between",alignItems:"center"},children:a.jsxs(ye,{sx:{fontWeight:600,color:"error.500",_dark:{color:"error.400"}},children:[e.name,": ",e.message]})}),a.jsxs($,{sx:{gap:4},children:[a.jsx(it,{leftIcon:a.jsx(lhe,{}),onClick:t,children:"Reset UI"}),a.jsx(it,{leftIcon:a.jsx(Wc,{}),onClick:r,children:"Copy Error"}),a.jsx(Mm,{href:o,isExternal:!0,children:a.jsx(it,{leftIcon:a.jsx(AE,{}),children:"Create Issue"})})]})]})})},b0e=d.memo(v0e),x0e=ie([xe],({hotkeys:e})=>{const{shift:t,ctrl:n,meta:r}=e;return{shift:t,ctrl:n,meta:r}},{memoizeOptions:{resultEqualityCheck:_t}}),y0e=()=>{const e=ee(),{shift:t,ctrl:n,meta:r}=L(x0e);return Ze("*",()=>{zp("shift")?!t&&e(Ir(!0)):t&&e(Ir(!1)),zp("ctrl")?!n&&e(kw(!0)):n&&e(kw(!1)),zp("meta")?!r&&e(_w(!0)):r&&e(_w(!1))},{keyup:!0,keydown:!0},[t,n,r]),Ze("1",()=>{e(Aa("txt2img"))}),Ze("2",()=>{e(Aa("img2img"))}),Ze("3",()=>{e(Aa("unifiedCanvas"))}),Ze("4",()=>{e(Aa("nodes"))}),Ze("5",()=>{e(Aa("modelManager"))}),null},C0e=d.memo(y0e),w0e={},S0e=({config:e=w0e,selectedImage:t})=>{const n=L(LP),r=zP("system"),o=ee(),{handlePreselectedImage:s}=m0e(),i=d.useCallback(()=>(localStorage.clear(),location.reload(),!1),[]);d.useEffect(()=>{vt.changeLanguage(n)},[n]),d.useEffect(()=>{s5(e)&&(r.info({config:e},"Received config"),o(yN(e)))},[o,e,r]),d.useEffect(()=>{o(CN())},[o]),d.useEffect(()=>{s(t)},[s,t]);const l=bg(wN);return a.jsxs(p0e,{onReset:i,FallbackComponent:b0e,children:[a.jsx(Ga,{w:"100vw",h:"100vh",position:"relative",overflow:"hidden",children:a.jsx(qV,{children:a.jsxs(Ga,{sx:{gap:4,p:4,gridAutoRows:"min-content auto",w:"full",h:"full"},children:[l||a.jsx(PJ,{}),a.jsx($,{sx:{gap:4,w:"full",h:"full"},children:a.jsx(d0e,{})})]})})}),a.jsx(fZ,{}),a.jsx(iZ,{}),a.jsx($W,{}),a.jsx(C0e,{})]})},D0e=d.memo(S0e);export{D0e as default}; diff --git a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-707a230a.js b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js similarity index 90% rename from invokeai/frontend/web/dist/assets/ThemeLocaleProvider-707a230a.js rename to invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js index f4bc264bf2..05d04a6ad3 100644 --- a/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-707a230a.js +++ b/invokeai/frontend/web/dist/assets/ThemeLocaleProvider-a3380d0c.js @@ -1,4 +1,4 @@ -import{x as m,h1 as Ze,w as y,Z as Ya,h2 as Za,a8 as ua,ac as d,h3 as b,h4 as o,h5 as Ja,h6 as h,h7 as fa,h8 as Qa,h9 as eo,aF as ro,ha as ao,a5 as oo,hb as to}from"./index-08cda350.js";import{s as ha,n as t,t as io,o as ma,p as no,q as ga,v as ya,w as pa,x as lo,y as Sa,z as xa,A as xr,B as so,D as co,E as bo,F as $a,G as ka,H as _a,J as vo,K as wa,L as uo,M as fo,N as ho,O as mo,Q as za,R as go,S as yo,T as po,U as So,V as xo,W as $o,e as ko,X as _o}from"./menu-3d10c968.js";var Ca=String.raw,Aa=Ca` +import{v as m,hj as Je,u as y,Y as Xa,hk as Ja,a7 as ua,ab as d,hl as b,hm as o,hn as Qa,ho as h,hp as fa,hq as Za,hr as eo,aE as ro,hs as ao,a4 as oo,ht as to}from"./index-f6c3f475.js";import{s as ha,n as t,t as io,o as ma,p as no,q as ga,v as ya,w as pa,x as lo,y as Sa,z as xa,A as xr,B as so,D as co,E as bo,F as $a,G as ka,H as _a,J as vo,K as wa,L as uo,M as fo,N as ho,O as mo,Q as za,R as go,S as yo,T as po,U as So,V as xo,W as $o,e as ko,X as _o}from"./menu-c9cc8c3d.js";var Ca=String.raw,Aa=Ca` :root, :host { --chakra-vh: 100vh; @@ -24,7 +24,7 @@ import{x as m,h1 as Ze,w as y,Z as Ya,h2 as Za,a8 as ua,ac as d,h3 as b,h4 as o, --chakra-vh: 100dvh; } } -`,wo=()=>m.jsx(Ze,{styles:Aa}),zo=({scope:e=""})=>m.jsx(Ze,{styles:Ca` +`,wo=()=>m.jsx(Je,{styles:Aa}),zo=({scope:e=""})=>m.jsx(Je,{styles:Ca` html { line-height: 1.5; -webkit-text-size-adjust: 100%; @@ -277,7 +277,7 @@ import{x as m,h1 as Ze,w as y,Z as Ya,h2 as Za,a8 as ua,ac as d,h3 as b,h4 as o, } ${Aa} - `}),Ce={light:"chakra-ui-light",dark:"chakra-ui-dark"};function Co(e={}){const{preventTransition:r=!0}=e,a={setDataset:i=>{const n=r?a.preventTransition():void 0;document.documentElement.dataset.theme=i,document.documentElement.style.colorScheme=i,n==null||n()},setClassName(i){document.body.classList.add(i?Ce.dark:Ce.light),document.body.classList.remove(i?Ce.light:Ce.dark)},query(){return window.matchMedia("(prefers-color-scheme: dark)")},getSystemTheme(i){var n;return((n=a.query().matches)!=null?n:i==="dark")?"dark":"light"},addListener(i){const n=a.query(),l=s=>{i(s.matches?"dark":"light")};return typeof n.addListener=="function"?n.addListener(l):n.addEventListener("change",l),()=>{typeof n.removeListener=="function"?n.removeListener(l):n.removeEventListener("change",l)}},preventTransition(){const i=document.createElement("style");return i.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(i),()=>{window.getComputedStyle(document.body),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.head.removeChild(i)})})}}};return a}var Ao="chakra-ui-color-mode";function Pa(e){return{ssr:!1,type:"localStorage",get(r){if(!(globalThis!=null&&globalThis.document))return r;let a;try{a=localStorage.getItem(e)||r}catch{}return a||r},set(r){try{localStorage.setItem(e,r)}catch{}}}}var Po=Pa(Ao),Pr=()=>{};function Tr(e,r){return e.type==="cookie"&&e.ssr?e.get(r):r}function Ta(e){const{value:r,children:a,options:{useSystemColorMode:i,initialColorMode:n,disableTransitionOnChange:l}={},colorModeManager:s=Po}=e,c=n==="dark"?"dark":"light",[v,x]=y.useState(()=>Tr(s,c)),[T,N]=y.useState(()=>Tr(s)),{getSystemTheme:te,setClassName:_e,setDataset:zr,addListener:Cr}=y.useMemo(()=>Co({preventTransition:l}),[l]),we=n==="system"&&!v?T:v,C=y.useCallback(ie=>{const ze=ie==="system"?te():ie;x(ze),_e(ze==="dark"),zr(ze),s.set(ze)},[s,te,_e,zr]);Ya(()=>{n==="system"&&N(te())},[]),y.useEffect(()=>{const ie=s.get();if(ie){C(ie);return}if(n==="system"){C("system");return}C(c)},[s,c,n,C]);const Ar=y.useCallback(()=>{C(we==="dark"?"light":"dark")},[we,C]);y.useEffect(()=>{if(i)return Cr(C)},[i,Cr,C]);const Xa=y.useMemo(()=>({colorMode:r??we,toggleColorMode:r?Pr:Ar,setColorMode:r?Pr:C,forced:r!==void 0}),[we,Ar,C,r]);return m.jsx(Za.Provider,{value:Xa,children:a})}Ta.displayName="ColorModeProvider";var To=["borders","breakpoints","colors","components","config","direction","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","shadows","sizes","space","styles","transition","zIndices"];function Fo(e){return ua(e)?To.every(r=>Object.prototype.hasOwnProperty.call(e,r)):!1}var Io={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"},Mo={"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)"},Bo={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},Eo={property:Io,easing:Mo,duration:Bo},Do=Eo,Ro={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},jo=Ro,Ho={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},Wo=Ho,Vo={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},Lo=Vo,qo={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"}},No=qo,Oo={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},Go=Oo,Uo={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"},Ko=Uo,Xo={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},Yo=Xo,Zo={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"}},Fa=Zo,Ia={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"},Jo={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"},Qo={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},et={...Ia,...Jo,container:Qo},Ma=et,rt={breakpoints:Lo,zIndices:jo,radii:Go,blur:Yo,colors:No,...Fa,sizes:Ma,shadows:Ko,space:Ia,borders:Wo,transition:Do},{defineMultiStyleConfig:at,definePartsStyle:de}=b(["stepper","step","title","description","indicator","separator","icon","number"]),F=d("stepper-indicator-size"),G=d("stepper-icon-size"),U=d("stepper-title-font-size"),ce=d("stepper-description-font-size"),ne=d("stepper-accent-color"),ot=de(({colorScheme:e})=>({stepper:{display:"flex",justifyContent:"space-between",gap:"4","&[data-orientation=vertical]":{flexDirection:"column",alignItems:"flex-start"},"&[data-orientation=horizontal]":{flexDirection:"row",alignItems:"center"},[ne.variable]:`colors.${e}.500`,_dark:{[ne.variable]:`colors.${e}.200`}},title:{fontSize:U.reference,fontWeight:"medium"},description:{fontSize:ce.reference,color:"chakra-subtle-text"},number:{fontSize:U.reference},step:{flexShrink:0,position:"relative",display:"flex",gap:"2","&[data-orientation=horizontal]":{alignItems:"center"},flex:"1","&:last-of-type:not([data-stretch])":{flex:"initial"}},icon:{flexShrink:0,width:G.reference,height:G.reference},indicator:{flexShrink:0,borderRadius:"full",width:F.reference,height:F.reference,display:"flex",justifyContent:"center",alignItems:"center","&[data-status=active]":{borderWidth:"2px",borderColor:ne.reference},"&[data-status=complete]":{bg:ne.reference,color:"chakra-inverse-text"},"&[data-status=incomplete]":{borderWidth:"2px"}},separator:{bg:"chakra-border-color",flex:"1","&[data-status=complete]":{bg:ne.reference},"&[data-orientation=horizontal]":{width:"100%",height:"2px",marginStart:"2"},"&[data-orientation=vertical]":{width:"2px",position:"absolute",height:"100%",maxHeight:`calc(100% - ${F.reference} - 8px)`,top:`calc(${F.reference} + 4px)`,insetStart:`calc(${F.reference} / 2 - 1px)`}}})),tt=at({baseStyle:ot,sizes:{xs:de({stepper:{[F.variable]:"sizes.4",[G.variable]:"sizes.3",[U.variable]:"fontSizes.xs",[ce.variable]:"fontSizes.xs"}}),sm:de({stepper:{[F.variable]:"sizes.6",[G.variable]:"sizes.4",[U.variable]:"fontSizes.sm",[ce.variable]:"fontSizes.xs"}}),md:de({stepper:{[F.variable]:"sizes.8",[G.variable]:"sizes.5",[U.variable]:"fontSizes.md",[ce.variable]:"fontSizes.sm"}}),lg:de({stepper:{[F.variable]:"sizes.10",[G.variable]:"sizes.6",[U.variable]:"fontSizes.lg",[ce.variable]:"fontSizes.md"}})},defaultProps:{size:"md",colorScheme:"blue"}});function W(e,r,a){return Math.min(Math.max(e,a),r)}class it extends Error{constructor(r){super(`Failed to parse color: "${r}"`)}}var be=it;function $r(e){if(typeof e!="string")throw new be(e);if(e.trim().toLowerCase()==="transparent")return[0,0,0,0];let r=e.trim();r=ut.test(e)?st(e):e;const a=dt.exec(r);if(a){const s=Array.from(a).slice(1);return[...s.slice(0,3).map(c=>parseInt(pe(c,2),16)),parseInt(pe(s[3]||"f",2),16)/255]}const i=ct.exec(r);if(i){const s=Array.from(i).slice(1);return[...s.slice(0,3).map(c=>parseInt(c,16)),parseInt(s[3]||"ff",16)/255]}const n=bt.exec(r);if(n){const s=Array.from(n).slice(1);return[...s.slice(0,3).map(c=>parseInt(c,10)),parseFloat(s[3]||"1")]}const l=vt.exec(r);if(l){const[s,c,v,x]=Array.from(l).slice(1).map(parseFloat);if(W(0,100,c)!==c)throw new be(e);if(W(0,100,v)!==v)throw new be(e);return[...ft(s,c,v),Number.isNaN(x)?1:x]}throw new be(e)}function nt(e){let r=5381,a=e.length;for(;a;)r=r*33^e.charCodeAt(--a);return(r>>>0)%2341}const Fr=e=>parseInt(e.replace(/_/g,""),36),lt="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((e,r)=>{const a=Fr(r.substring(0,3)),i=Fr(r.substring(3)).toString(16);let n="";for(let l=0;l<6-i.length;l++)n+="0";return e[a]=`${n}${i}`,e},{});function st(e){const r=e.toLowerCase().trim(),a=lt[nt(r)];if(!a)throw new be(e);return`#${a}`}const pe=(e,r)=>Array.from(Array(r)).map(()=>e).join(""),dt=new RegExp(`^#${pe("([a-f0-9])",3)}([a-f0-9])?$`,"i"),ct=new RegExp(`^#${pe("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),bt=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${pe(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),vt=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,ut=/^[a-z]+$/i,Ir=e=>Math.round(e*255),ft=(e,r,a)=>{let i=a/100;if(r===0)return[i,i,i].map(Ir);const n=(e%360+360)%360/60,l=(1-Math.abs(2*i-1))*(r/100),s=l*(1-Math.abs(n%2-1));let c=0,v=0,x=0;n>=0&&n<1?(c=l,v=s):n>=1&&n<2?(c=s,v=l):n>=2&&n<3?(v=l,x=s):n>=3&&n<4?(v=s,x=l):n>=4&&n<5?(c=s,x=l):n>=5&&n<6&&(c=l,x=s);const T=i-l/2,N=c+T,te=v+T,_e=x+T;return[N,te,_e].map(Ir)};function ht(e,r,a,i){return`rgba(${W(0,255,e).toFixed()}, ${W(0,255,r).toFixed()}, ${W(0,255,a).toFixed()}, ${parseFloat(W(0,1,i).toFixed(3))})`}function mt(e,r){const[a,i,n,l]=$r(e);return ht(a,i,n,l-r)}function gt(e){const[r,a,i,n]=$r(e);let l=s=>{const c=W(0,255,s).toString(16);return c.length===1?`0${c}`:c};return`#${l(r)}${l(a)}${l(i)}${n<1?l(Math.round(n*255)):""}`}function yt(e,r,a,i,n){for(r=r.split?r.split("."):r,i=0;iObject.keys(e).length===0,p=(e,r,a)=>{const i=yt(e,`colors.${r}`,r);try{return gt(i),i}catch{return a??"#000000"}},St=e=>{const[r,a,i]=$r(e);return(r*299+a*587+i*114)/1e3},xt=e=>r=>{const a=p(r,e);return St(a)<128?"dark":"light"},$t=e=>r=>xt(e)(r)==="dark",ae=(e,r)=>a=>{const i=p(a,e);return mt(i,1-r)};function Mr(e="1rem",r="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( + `}),Ce={light:"chakra-ui-light",dark:"chakra-ui-dark"};function Co(e={}){const{preventTransition:r=!0}=e,a={setDataset:i=>{const n=r?a.preventTransition():void 0;document.documentElement.dataset.theme=i,document.documentElement.style.colorScheme=i,n==null||n()},setClassName(i){document.body.classList.add(i?Ce.dark:Ce.light),document.body.classList.remove(i?Ce.light:Ce.dark)},query(){return window.matchMedia("(prefers-color-scheme: dark)")},getSystemTheme(i){var n;return((n=a.query().matches)!=null?n:i==="dark")?"dark":"light"},addListener(i){const n=a.query(),l=s=>{i(s.matches?"dark":"light")};return typeof n.addListener=="function"?n.addListener(l):n.addEventListener("change",l),()=>{typeof n.removeListener=="function"?n.removeListener(l):n.removeEventListener("change",l)}},preventTransition(){const i=document.createElement("style");return i.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(i),()=>{window.getComputedStyle(document.body),requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.head.removeChild(i)})})}}};return a}var Ao="chakra-ui-color-mode";function Pa(e){return{ssr:!1,type:"localStorage",get(r){if(!(globalThis!=null&&globalThis.document))return r;let a;try{a=localStorage.getItem(e)||r}catch{}return a||r},set(r){try{localStorage.setItem(e,r)}catch{}}}}var Po=Pa(Ao),Pr=()=>{};function Tr(e,r){return e.type==="cookie"&&e.ssr?e.get(r):r}function Ta(e){const{value:r,children:a,options:{useSystemColorMode:i,initialColorMode:n,disableTransitionOnChange:l}={},colorModeManager:s=Po}=e,c=n==="dark"?"dark":"light",[v,x]=y.useState(()=>Tr(s,c)),[T,N]=y.useState(()=>Tr(s)),{getSystemTheme:te,setClassName:_e,setDataset:zr,addListener:Cr}=y.useMemo(()=>Co({preventTransition:l}),[l]),we=n==="system"&&!v?T:v,C=y.useCallback(ie=>{const ze=ie==="system"?te():ie;x(ze),_e(ze==="dark"),zr(ze),s.set(ze)},[s,te,_e,zr]);Xa(()=>{n==="system"&&N(te())},[]),y.useEffect(()=>{const ie=s.get();if(ie){C(ie);return}if(n==="system"){C("system");return}C(c)},[s,c,n,C]);const Ar=y.useCallback(()=>{C(we==="dark"?"light":"dark")},[we,C]);y.useEffect(()=>{if(i)return Cr(C)},[i,Cr,C]);const Ka=y.useMemo(()=>({colorMode:r??we,toggleColorMode:r?Pr:Ar,setColorMode:r?Pr:C,forced:r!==void 0}),[we,Ar,C,r]);return m.jsx(Ja.Provider,{value:Ka,children:a})}Ta.displayName="ColorModeProvider";var To=["borders","breakpoints","colors","components","config","direction","fonts","fontSizes","fontWeights","letterSpacings","lineHeights","radii","shadows","sizes","space","styles","transition","zIndices"];function Fo(e){return ua(e)?To.every(r=>Object.prototype.hasOwnProperty.call(e,r)):!1}var Io={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"},Mo={"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)"},Bo={"ultra-fast":"50ms",faster:"100ms",fast:"150ms",normal:"200ms",slow:"300ms",slower:"400ms","ultra-slow":"500ms"},Eo={property:Io,easing:Mo,duration:Bo},Do=Eo,Ro={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},jo=Ro,Ho={none:0,"1px":"1px solid","2px":"2px solid","4px":"4px solid","8px":"8px solid"},Wo=Ho,Vo={base:"0em",sm:"30em",md:"48em",lg:"62em",xl:"80em","2xl":"96em"},Lo=Vo,qo={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"}},No=qo,Oo={none:"0",sm:"0.125rem",base:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},Go=Oo,Uo={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"},Yo=Uo,Ko={none:0,sm:"4px",base:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},Xo=Ko,Jo={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"}},Fa=Jo,Ia={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"},Qo={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"},Zo={sm:"640px",md:"768px",lg:"1024px",xl:"1280px"},et={...Ia,...Qo,container:Zo},Ma=et,rt={breakpoints:Lo,zIndices:jo,radii:Go,blur:Xo,colors:No,...Fa,sizes:Ma,shadows:Yo,space:Ia,borders:Wo,transition:Do},{defineMultiStyleConfig:at,definePartsStyle:de}=b(["stepper","step","title","description","indicator","separator","icon","number"]),F=d("stepper-indicator-size"),G=d("stepper-icon-size"),U=d("stepper-title-font-size"),ce=d("stepper-description-font-size"),ne=d("stepper-accent-color"),ot=de(({colorScheme:e})=>({stepper:{display:"flex",justifyContent:"space-between",gap:"4","&[data-orientation=vertical]":{flexDirection:"column",alignItems:"flex-start"},"&[data-orientation=horizontal]":{flexDirection:"row",alignItems:"center"},[ne.variable]:`colors.${e}.500`,_dark:{[ne.variable]:`colors.${e}.200`}},title:{fontSize:U.reference,fontWeight:"medium"},description:{fontSize:ce.reference,color:"chakra-subtle-text"},number:{fontSize:U.reference},step:{flexShrink:0,position:"relative",display:"flex",gap:"2","&[data-orientation=horizontal]":{alignItems:"center"},flex:"1","&:last-of-type:not([data-stretch])":{flex:"initial"}},icon:{flexShrink:0,width:G.reference,height:G.reference},indicator:{flexShrink:0,borderRadius:"full",width:F.reference,height:F.reference,display:"flex",justifyContent:"center",alignItems:"center","&[data-status=active]":{borderWidth:"2px",borderColor:ne.reference},"&[data-status=complete]":{bg:ne.reference,color:"chakra-inverse-text"},"&[data-status=incomplete]":{borderWidth:"2px"}},separator:{bg:"chakra-border-color",flex:"1","&[data-status=complete]":{bg:ne.reference},"&[data-orientation=horizontal]":{width:"100%",height:"2px",marginStart:"2"},"&[data-orientation=vertical]":{width:"2px",position:"absolute",height:"100%",maxHeight:`calc(100% - ${F.reference} - 8px)`,top:`calc(${F.reference} + 4px)`,insetStart:`calc(${F.reference} / 2 - 1px)`}}})),tt=at({baseStyle:ot,sizes:{xs:de({stepper:{[F.variable]:"sizes.4",[G.variable]:"sizes.3",[U.variable]:"fontSizes.xs",[ce.variable]:"fontSizes.xs"}}),sm:de({stepper:{[F.variable]:"sizes.6",[G.variable]:"sizes.4",[U.variable]:"fontSizes.sm",[ce.variable]:"fontSizes.xs"}}),md:de({stepper:{[F.variable]:"sizes.8",[G.variable]:"sizes.5",[U.variable]:"fontSizes.md",[ce.variable]:"fontSizes.sm"}}),lg:de({stepper:{[F.variable]:"sizes.10",[G.variable]:"sizes.6",[U.variable]:"fontSizes.lg",[ce.variable]:"fontSizes.md"}})},defaultProps:{size:"md",colorScheme:"blue"}});function W(e,r,a){return Math.min(Math.max(e,a),r)}class it extends Error{constructor(r){super(`Failed to parse color: "${r}"`)}}var be=it;function $r(e){if(typeof e!="string")throw new be(e);if(e.trim().toLowerCase()==="transparent")return[0,0,0,0];let r=e.trim();r=ut.test(e)?st(e):e;const a=dt.exec(r);if(a){const s=Array.from(a).slice(1);return[...s.slice(0,3).map(c=>parseInt(pe(c,2),16)),parseInt(pe(s[3]||"f",2),16)/255]}const i=ct.exec(r);if(i){const s=Array.from(i).slice(1);return[...s.slice(0,3).map(c=>parseInt(c,16)),parseInt(s[3]||"ff",16)/255]}const n=bt.exec(r);if(n){const s=Array.from(n).slice(1);return[...s.slice(0,3).map(c=>parseInt(c,10)),parseFloat(s[3]||"1")]}const l=vt.exec(r);if(l){const[s,c,v,x]=Array.from(l).slice(1).map(parseFloat);if(W(0,100,c)!==c)throw new be(e);if(W(0,100,v)!==v)throw new be(e);return[...ft(s,c,v),Number.isNaN(x)?1:x]}throw new be(e)}function nt(e){let r=5381,a=e.length;for(;a;)r=r*33^e.charCodeAt(--a);return(r>>>0)%2341}const Fr=e=>parseInt(e.replace(/_/g,""),36),lt="1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm".split(" ").reduce((e,r)=>{const a=Fr(r.substring(0,3)),i=Fr(r.substring(3)).toString(16);let n="";for(let l=0;l<6-i.length;l++)n+="0";return e[a]=`${n}${i}`,e},{});function st(e){const r=e.toLowerCase().trim(),a=lt[nt(r)];if(!a)throw new be(e);return`#${a}`}const pe=(e,r)=>Array.from(Array(r)).map(()=>e).join(""),dt=new RegExp(`^#${pe("([a-f0-9])",3)}([a-f0-9])?$`,"i"),ct=new RegExp(`^#${pe("([a-f0-9]{2})",3)}([a-f0-9]{2})?$`,"i"),bt=new RegExp(`^rgba?\\(\\s*(\\d+)\\s*${pe(",\\s*(\\d+)\\s*",2)}(?:,\\s*([\\d.]+))?\\s*\\)$`,"i"),vt=/^hsla?\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)$/i,ut=/^[a-z]+$/i,Ir=e=>Math.round(e*255),ft=(e,r,a)=>{let i=a/100;if(r===0)return[i,i,i].map(Ir);const n=(e%360+360)%360/60,l=(1-Math.abs(2*i-1))*(r/100),s=l*(1-Math.abs(n%2-1));let c=0,v=0,x=0;n>=0&&n<1?(c=l,v=s):n>=1&&n<2?(c=s,v=l):n>=2&&n<3?(v=l,x=s):n>=3&&n<4?(v=s,x=l):n>=4&&n<5?(c=s,x=l):n>=5&&n<6&&(c=l,x=s);const T=i-l/2,N=c+T,te=v+T,_e=x+T;return[N,te,_e].map(Ir)};function ht(e,r,a,i){return`rgba(${W(0,255,e).toFixed()}, ${W(0,255,r).toFixed()}, ${W(0,255,a).toFixed()}, ${parseFloat(W(0,1,i).toFixed(3))})`}function mt(e,r){const[a,i,n,l]=$r(e);return ht(a,i,n,l-r)}function gt(e){const[r,a,i,n]=$r(e);let l=s=>{const c=W(0,255,s).toString(16);return c.length===1?`0${c}`:c};return`#${l(r)}${l(a)}${l(i)}${n<1?l(Math.round(n*255)):""}`}function yt(e,r,a,i,n){for(r=r.split?r.split("."):r,i=0;iObject.keys(e).length===0,p=(e,r,a)=>{const i=yt(e,`colors.${r}`,r);try{return gt(i),i}catch{return a??"#000000"}},St=e=>{const[r,a,i]=$r(e);return(r*299+a*587+i*114)/1e3},xt=e=>r=>{const a=p(r,e);return St(a)<128?"dark":"light"},$t=e=>r=>xt(e)(r)==="dark",ae=(e,r)=>a=>{const i=p(a,e);return mt(i,1-r)};function Mr(e="1rem",r="rgba(255, 255, 255, 0.15)"){return{backgroundImage:`linear-gradient( 45deg, ${r} 25%, transparent 25%, @@ -286,12 +286,12 @@ import{x as m,h1 as Ze,w as y,Z as Ya,h2 as Za,a8 as ua,ac as d,h3 as b,h4 as o, ${r} 75%, transparent 75%, transparent - )`,backgroundSize:`${e} ${e}`}}var kt=()=>`#${Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}`;function _t(e){const r=kt();return!e||pt(e)?r:e.string&&e.colors?zt(e.string,e.colors):e.string&&!e.colors?wt(e.string):e.colors&&!e.string?Ct(e.colors):r}function wt(e){let r=0;if(e.length===0)return r.toString();for(let i=0;i>i*8&255;a+=`00${n.toString(16)}`.substr(-2)}return a}function zt(e,r){let a=0;if(e.length===0)return r[0];for(let i=0;ir.map(Ba).join(` ${e} `).replace(/calc/g,""),Br=(...e)=>`calc(${Je("+",...e)})`,Er=(...e)=>`calc(${Je("-",...e)})`,gr=(...e)=>`calc(${Je("*",...e)})`,Dr=(...e)=>`calc(${Je("/",...e)})`,Rr=e=>{const r=Ba(e);return r!=null&&!Number.isNaN(parseFloat(r))?String(r).startsWith("-")?String(r).slice(1):`-${r}`:gr(r,-1)},I=Object.assign(e=>({add:(...r)=>I(Br(e,...r)),subtract:(...r)=>I(Er(e,...r)),multiply:(...r)=>I(gr(e,...r)),divide:(...r)=>I(Dr(e,...r)),negate:()=>I(Rr(e)),toString:()=>e.toString()}),{add:Br,subtract:Er,multiply:gr,divide:Dr,negate:Rr});function At(e){return!Number.isInteger(parseFloat(e.toString()))}function Pt(e,r="-"){return e.replace(/\s+/g,r)}function Ea(e){const r=Pt(e.toString());return r.includes("\\.")?e:At(e)?r.replace(".","\\."):e}function Tt(e,r=""){return[r,Ea(e)].filter(Boolean).join("-")}function Ft(e,r){return`var(${Ea(e)}${r?`, ${r}`:""})`}function It(e,r=""){return`--${Tt(e,r)}`}function f(e,r){const a=It(e,r==null?void 0:r.prefix);return{variable:a,reference:Ft(a,Mt(r==null?void 0:r.fallback))}}function Mt(e){return typeof e=="string"?e:e==null?void 0:e.reference}var{defineMultiStyleConfig:Bt,definePartsStyle:We}=b(ha.keys),fe=f("switch-track-width"),V=f("switch-track-height"),rr=f("switch-track-diff"),Et=I.subtract(fe,V),yr=f("switch-thumb-x"),le=f("switch-bg"),Dt=o(e=>{const{colorScheme:r}=e;return{borderRadius:"full",p:"0.5",width:[fe.reference],height:[V.reference],transitionProperty:"common",transitionDuration:"fast",[le.variable]:"colors.gray.300",_dark:{[le.variable]:"colors.whiteAlpha.400"},_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed"},_checked:{[le.variable]:`colors.${r}.500`,_dark:{[le.variable]:`colors.${r}.200`}},bg:le.reference}}),Rt=o({bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[V.reference],height:[V.reference],_checked:{transform:`translateX(${yr.reference})`}}),jt=We(e=>({container:{[rr.variable]:Et,[yr.variable]:rr.reference,_rtl:{[yr.variable]:I(rr).negate().toString()}},track:Dt(e),thumb:Rt})),Ht={sm:We({container:{[fe.variable]:"1.375rem",[V.variable]:"sizes.3"}}),md:We({container:{[fe.variable]:"1.875rem",[V.variable]:"sizes.4"}}),lg:We({container:{[fe.variable]:"2.875rem",[V.variable]:"sizes.6"}})},Wt=Bt({baseStyle:jt,sizes:Ht,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Vt,definePartsStyle:J}=b(io.keys),Lt=J({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"}}),Ke=o({"&[data-is-numeric=true]":{textAlign:"end"}}),qt=J(e=>{const{colorScheme:r}=e;return{th:{color:t("gray.600","gray.400")(e),borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ke},td:{borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ke},caption:{color:t("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Nt=J(e=>{const{colorScheme:r}=e;return{th:{color:t("gray.600","gray.400")(e),borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ke},td:{borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ke},caption:{color:t("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e)},td:{background:t(`${r}.100`,`${r}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Ot={simple:qt,striped:Nt,unstyled:o({})},Gt={sm:J({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:J({th:{px:"6",py:"3",lineHeight:"4",fontSize:"xs"},td:{px:"6",py:"4",lineHeight:"5"},caption:{px:"6",py:"2",fontSize:"sm"}}),lg:J({th:{px:"8",py:"4",lineHeight:"5",fontSize:"sm"},td:{px:"8",py:"5",lineHeight:"6"},caption:{px:"6",py:"2",fontSize:"md"}})},Ut=Vt({baseStyle:Lt,variants:Ot,sizes:Gt,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),$=d("tabs-color"),z=d("tabs-bg"),Ae=d("tabs-border-color"),{defineMultiStyleConfig:Kt,definePartsStyle:P}=b(ma.keys),Xt=o(e=>{const{orientation:r}=e;return{display:r==="vertical"?"flex":"block"}}),Yt=o(e=>{const{isFitted:r}=e;return{flex:r?1:void 0,transitionProperty:"common",transitionDuration:"normal",_focusVisible:{zIndex:1,boxShadow:"outline"},_disabled:{cursor:"not-allowed",opacity:.4}}}),Zt=o(e=>{const{align:r="start",orientation:a}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[r],flexDirection:a==="vertical"?"column":"row"}}),Jt=o({p:4}),Qt=P(e=>({root:Xt(e),tab:Yt(e),tablist:Zt(e),tabpanel:Jt})),ei={sm:P({tab:{py:1,px:4,fontSize:"sm"}}),md:P({tab:{fontSize:"md",py:2,px:4}}),lg:P({tab:{fontSize:"lg",py:3,px:4}})},ri=P(e=>{const{colorScheme:r,orientation:a}=e,i=a==="vertical",n=i?"borderStart":"borderBottom",l=i?"marginStart":"marginBottom";return{tablist:{[n]:"2px solid",borderColor:"inherit"},tab:{[n]:"2px solid",borderColor:"transparent",[l]:"-2px",_selected:{[$.variable]:`colors.${r}.600`,_dark:{[$.variable]:`colors.${r}.300`},borderColor:"currentColor"},_active:{[z.variable]:"colors.gray.200",_dark:{[z.variable]:"colors.whiteAlpha.300"}},_disabled:{_active:{bg:"none"}},color:$.reference,bg:z.reference}}}),ai=P(e=>{const{colorScheme:r}=e;return{tab:{borderTopRadius:"md",border:"1px solid",borderColor:"transparent",mb:"-1px",[Ae.variable]:"transparent",_selected:{[$.variable]:`colors.${r}.600`,[Ae.variable]:"colors.white",_dark:{[$.variable]:`colors.${r}.300`,[Ae.variable]:"colors.gray.800"},borderColor:"inherit",borderBottomColor:Ae.reference},color:$.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),oi=P(e=>{const{colorScheme:r}=e;return{tab:{border:"1px solid",borderColor:"inherit",[z.variable]:"colors.gray.50",_dark:{[z.variable]:"colors.whiteAlpha.50"},mb:"-1px",_notLast:{marginEnd:"-1px"},_selected:{[z.variable]:"colors.white",[$.variable]:`colors.${r}.600`,_dark:{[z.variable]:"colors.gray.800",[$.variable]:`colors.${r}.300`},borderColor:"inherit",borderTopColor:"currentColor",borderBottomColor:"transparent"},color:$.reference,bg:z.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),ti=P(e=>{const{colorScheme:r,theme:a}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:p(a,`${r}.700`),bg:p(a,`${r}.100`)}}}}),ii=P(e=>{const{colorScheme:r}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",[$.variable]:"colors.gray.600",_dark:{[$.variable]:"inherit"},_selected:{[$.variable]:"colors.white",[z.variable]:`colors.${r}.600`,_dark:{[$.variable]:"colors.gray.800",[z.variable]:`colors.${r}.300`}},color:$.reference,bg:z.reference}}}),ni=P({}),li={line:ri,enclosed:ai,"enclosed-colored":oi,"soft-rounded":ti,"solid-rounded":ii,unstyled:ni},si=Kt({baseStyle:Qt,sizes:ei,variants:li,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),g=Ja("badge",["bg","color","shadow"]),di=o({px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),ci=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.500`,.6)(a);return{[g.bg.variable]:`colors.${r}.500`,[g.color.variable]:"colors.white",_dark:{[g.bg.variable]:i,[g.color.variable]:"colors.whiteAlpha.800"}}}),bi=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.200`,.16)(a);return{[g.bg.variable]:`colors.${r}.100`,[g.color.variable]:`colors.${r}.800`,_dark:{[g.bg.variable]:i,[g.color.variable]:`colors.${r}.200`}}}),vi=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.200`,.8)(a);return{[g.color.variable]:`colors.${r}.500`,_dark:{[g.color.variable]:i},[g.shadow.variable]:`inset 0 0 0px 1px ${g.color.reference}`}}),ui={solid:ci,subtle:bi,outline:vi},he=h({baseStyle:di,variants:ui,defaultProps:{variant:"subtle",colorScheme:"gray"}}),{defineMultiStyleConfig:fi,definePartsStyle:L}=b(no.keys),jr=d("tag-bg"),Hr=d("tag-color"),ar=d("tag-shadow"),Ve=d("tag-min-height"),Le=d("tag-min-width"),qe=d("tag-font-size"),Ne=d("tag-padding-inline"),hi=o({fontWeight:"medium",lineHeight:1.2,outline:0,[Hr.variable]:g.color.reference,[jr.variable]:g.bg.reference,[ar.variable]:g.shadow.reference,color:Hr.reference,bg:jr.reference,boxShadow:ar.reference,borderRadius:"md",minH:Ve.reference,minW:Le.reference,fontSize:qe.reference,px:Ne.reference,_focusVisible:{[ar.variable]:"shadows.outline"}}),mi=o({lineHeight:1.2,overflow:"visible"}),gi=o({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}}),yi=L({container:hi,label:mi,closeButton:gi}),pi={sm:L({container:{[Ve.variable]:"sizes.5",[Le.variable]:"sizes.5",[qe.variable]:"fontSizes.xs",[Ne.variable]:"space.2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:L({container:{[Ve.variable]:"sizes.6",[Le.variable]:"sizes.6",[qe.variable]:"fontSizes.sm",[Ne.variable]:"space.2"}}),lg:L({container:{[Ve.variable]:"sizes.8",[Le.variable]:"sizes.8",[qe.variable]:"fontSizes.md",[Ne.variable]:"space.3"}})},Si={subtle:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.subtle(e)}}),solid:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.solid(e)}}),outline:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.outline(e)}})},xi=fi({variants:Si,baseStyle:yi,sizes:pi,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),{definePartsStyle:M,defineMultiStyleConfig:$i}=b(ga.keys),K=d("input-height"),X=d("input-font-size"),Y=d("input-padding"),Z=d("input-border-radius"),ki=M({addon:{height:K.reference,fontSize:X.reference,px:Y.reference,borderRadius:Z.reference},field:{width:"100%",height:K.reference,fontSize:X.reference,px:Y.reference,borderRadius:Z.reference,minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),D={lg:o({[X.variable]:"fontSizes.lg",[Y.variable]:"space.4",[Z.variable]:"radii.md",[K.variable]:"sizes.12"}),md:o({[X.variable]:"fontSizes.md",[Y.variable]:"space.4",[Z.variable]:"radii.md",[K.variable]:"sizes.10"}),sm:o({[X.variable]:"fontSizes.sm",[Y.variable]:"space.3",[Z.variable]:"radii.sm",[K.variable]:"sizes.8"}),xs:o({[X.variable]:"fontSizes.xs",[Y.variable]:"space.2",[Z.variable]:"radii.sm",[K.variable]:"sizes.6"})},_i={lg:M({field:D.lg,group:D.lg}),md:M({field:D.md,group:D.md}),sm:M({field:D.sm,group:D.sm}),xs:M({field:D.xs,group:D.xs})};function kr(e){const{focusBorderColor:r,errorBorderColor:a}=e;return{focusBorderColor:r||t("blue.500","blue.300")(e),errorBorderColor:a||t("red.500","red.300")(e)}}var wi=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:t("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i),boxShadow:`0 0 0 1px ${p(r,i)}`},_focusVisible:{zIndex:1,borderColor:p(r,a),boxShadow:`0 0 0 1px ${p(r,a)}`}},addon:{border:"1px solid",borderColor:t("inherit","whiteAlpha.50")(e),bg:t("gray.100","whiteAlpha.300")(e)}}}),zi=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"2px solid",borderColor:"transparent",bg:t("gray.100","whiteAlpha.50")(e),_hover:{bg:t("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i)},_focusVisible:{bg:"transparent",borderColor:p(r,a)}},addon:{border:"2px solid",borderColor:"transparent",bg:t("gray.100","whiteAlpha.50")(e)}}}),Ci=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{borderBottom:"1px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent",_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i),boxShadow:`0px 1px 0px 0px ${p(r,i)}`},_focusVisible:{borderColor:p(r,a),boxShadow:`0px 1px 0px 0px ${p(r,a)}`}},addon:{borderBottom:"2px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent"}}}),Ai=M({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),Pi={outline:wi,filled:zi,flushed:Ci,unstyled:Ai},u=$i({baseStyle:ki,sizes:_i,variants:Pi,defaultProps:{size:"md",variant:"outline"}}),Wr,Ti=o({...(Wr=u.baseStyle)==null?void 0:Wr.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"}),Vr,Lr,Fi={outline:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.outline(e).field)!=null?a:{}}),flushed:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.flushed(e).field)!=null?a:{}}),filled:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.filled(e).field)!=null?a:{}}),unstyled:(Lr=(Vr=u.variants)==null?void 0:Vr.unstyled.field)!=null?Lr:{}},qr,Nr,Or,Gr,Ur,Kr,Xr,Yr,Ii={xs:(Nr=(qr=u.sizes)==null?void 0:qr.xs.field)!=null?Nr:{},sm:(Gr=(Or=u.sizes)==null?void 0:Or.sm.field)!=null?Gr:{},md:(Kr=(Ur=u.sizes)==null?void 0:Ur.md.field)!=null?Kr:{},lg:(Yr=(Xr=u.sizes)==null?void 0:Xr.lg.field)!=null?Yr:{}},Mi=h({baseStyle:Ti,sizes:Ii,variants:Fi,defaultProps:{size:"md",variant:"outline"}}),Pe=f("tooltip-bg"),or=f("tooltip-fg"),Bi=f("popper-arrow-bg"),Ei=o({bg:Pe.reference,color:or.reference,[Pe.variable]:"colors.gray.700",[or.variable]:"colors.whiteAlpha.900",_dark:{[Pe.variable]:"colors.gray.300",[or.variable]:"colors.gray.900"},[Bi.variable]:Pe.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"}),Di=h({baseStyle:Ei}),{defineMultiStyleConfig:Ri,definePartsStyle:ve}=b(ya.keys),ji=o(e=>{const{colorScheme:r,theme:a,isIndeterminate:i,hasStripe:n}=e,l=t(Mr(),Mr("1rem","rgba(0,0,0,0.1)"))(e),s=t(`${r}.500`,`${r}.200`)(e),c=`linear-gradient( + )`,backgroundSize:`${e} ${e}`}}var kt=()=>`#${Math.floor(Math.random()*16777215).toString(16).padEnd(6,"0")}`;function _t(e){const r=kt();return!e||pt(e)?r:e.string&&e.colors?zt(e.string,e.colors):e.string&&!e.colors?wt(e.string):e.colors&&!e.string?Ct(e.colors):r}function wt(e){let r=0;if(e.length===0)return r.toString();for(let i=0;i>i*8&255;a+=`00${n.toString(16)}`.substr(-2)}return a}function zt(e,r){let a=0;if(e.length===0)return r[0];for(let i=0;ir.map(Ba).join(` ${e} `).replace(/calc/g,""),Br=(...e)=>`calc(${Qe("+",...e)})`,Er=(...e)=>`calc(${Qe("-",...e)})`,gr=(...e)=>`calc(${Qe("*",...e)})`,Dr=(...e)=>`calc(${Qe("/",...e)})`,Rr=e=>{const r=Ba(e);return r!=null&&!Number.isNaN(parseFloat(r))?String(r).startsWith("-")?String(r).slice(1):`-${r}`:gr(r,-1)},I=Object.assign(e=>({add:(...r)=>I(Br(e,...r)),subtract:(...r)=>I(Er(e,...r)),multiply:(...r)=>I(gr(e,...r)),divide:(...r)=>I(Dr(e,...r)),negate:()=>I(Rr(e)),toString:()=>e.toString()}),{add:Br,subtract:Er,multiply:gr,divide:Dr,negate:Rr});function At(e){return!Number.isInteger(parseFloat(e.toString()))}function Pt(e,r="-"){return e.replace(/\s+/g,r)}function Ea(e){const r=Pt(e.toString());return r.includes("\\.")?e:At(e)?r.replace(".","\\."):e}function Tt(e,r=""){return[r,Ea(e)].filter(Boolean).join("-")}function Ft(e,r){return`var(${Ea(e)}${r?`, ${r}`:""})`}function It(e,r=""){return`--${Tt(e,r)}`}function f(e,r){const a=It(e,r==null?void 0:r.prefix);return{variable:a,reference:Ft(a,Mt(r==null?void 0:r.fallback))}}function Mt(e){return typeof e=="string"?e:e==null?void 0:e.reference}var{defineMultiStyleConfig:Bt,definePartsStyle:We}=b(ha.keys),fe=f("switch-track-width"),V=f("switch-track-height"),rr=f("switch-track-diff"),Et=I.subtract(fe,V),yr=f("switch-thumb-x"),le=f("switch-bg"),Dt=o(e=>{const{colorScheme:r}=e;return{borderRadius:"full",p:"0.5",width:[fe.reference],height:[V.reference],transitionProperty:"common",transitionDuration:"fast",[le.variable]:"colors.gray.300",_dark:{[le.variable]:"colors.whiteAlpha.400"},_focusVisible:{boxShadow:"outline"},_disabled:{opacity:.4,cursor:"not-allowed"},_checked:{[le.variable]:`colors.${r}.500`,_dark:{[le.variable]:`colors.${r}.200`}},bg:le.reference}}),Rt=o({bg:"white",transitionProperty:"transform",transitionDuration:"normal",borderRadius:"inherit",width:[V.reference],height:[V.reference],_checked:{transform:`translateX(${yr.reference})`}}),jt=We(e=>({container:{[rr.variable]:Et,[yr.variable]:rr.reference,_rtl:{[yr.variable]:I(rr).negate().toString()}},track:Dt(e),thumb:Rt})),Ht={sm:We({container:{[fe.variable]:"1.375rem",[V.variable]:"sizes.3"}}),md:We({container:{[fe.variable]:"1.875rem",[V.variable]:"sizes.4"}}),lg:We({container:{[fe.variable]:"2.875rem",[V.variable]:"sizes.6"}})},Wt=Bt({baseStyle:jt,sizes:Ht,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Vt,definePartsStyle:Q}=b(io.keys),Lt=Q({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"}}),Ye=o({"&[data-is-numeric=true]":{textAlign:"end"}}),qt=Q(e=>{const{colorScheme:r}=e;return{th:{color:t("gray.600","gray.400")(e),borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ye},td:{borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ye},caption:{color:t("gray.600","gray.100")(e)},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Nt=Q(e=>{const{colorScheme:r}=e;return{th:{color:t("gray.600","gray.400")(e),borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ye},td:{borderBottom:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e),...Ye},caption:{color:t("gray.600","gray.100")(e)},tbody:{tr:{"&:nth-of-type(odd)":{"th, td":{borderBottomWidth:"1px",borderColor:t(`${r}.100`,`${r}.700`)(e)},td:{background:t(`${r}.100`,`${r}.700`)(e)}}}},tfoot:{tr:{"&:last-of-type":{th:{borderBottomWidth:0}}}}}}),Ot={simple:qt,striped:Nt,unstyled:o({})},Gt={sm:Q({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:Q({th:{px:"6",py:"3",lineHeight:"4",fontSize:"xs"},td:{px:"6",py:"4",lineHeight:"5"},caption:{px:"6",py:"2",fontSize:"sm"}}),lg:Q({th:{px:"8",py:"4",lineHeight:"5",fontSize:"sm"},td:{px:"8",py:"5",lineHeight:"6"},caption:{px:"6",py:"2",fontSize:"md"}})},Ut=Vt({baseStyle:Lt,variants:Ot,sizes:Gt,defaultProps:{variant:"simple",size:"md",colorScheme:"gray"}}),$=d("tabs-color"),z=d("tabs-bg"),Ae=d("tabs-border-color"),{defineMultiStyleConfig:Yt,definePartsStyle:P}=b(ma.keys),Kt=o(e=>{const{orientation:r}=e;return{display:r==="vertical"?"flex":"block"}}),Xt=o(e=>{const{isFitted:r}=e;return{flex:r?1:void 0,transitionProperty:"common",transitionDuration:"normal",_focusVisible:{zIndex:1,boxShadow:"outline"},_disabled:{cursor:"not-allowed",opacity:.4}}}),Jt=o(e=>{const{align:r="start",orientation:a}=e;return{justifyContent:{end:"flex-end",center:"center",start:"flex-start"}[r],flexDirection:a==="vertical"?"column":"row"}}),Qt=o({p:4}),Zt=P(e=>({root:Kt(e),tab:Xt(e),tablist:Jt(e),tabpanel:Qt})),ei={sm:P({tab:{py:1,px:4,fontSize:"sm"}}),md:P({tab:{fontSize:"md",py:2,px:4}}),lg:P({tab:{fontSize:"lg",py:3,px:4}})},ri=P(e=>{const{colorScheme:r,orientation:a}=e,i=a==="vertical",n=i?"borderStart":"borderBottom",l=i?"marginStart":"marginBottom";return{tablist:{[n]:"2px solid",borderColor:"inherit"},tab:{[n]:"2px solid",borderColor:"transparent",[l]:"-2px",_selected:{[$.variable]:`colors.${r}.600`,_dark:{[$.variable]:`colors.${r}.300`},borderColor:"currentColor"},_active:{[z.variable]:"colors.gray.200",_dark:{[z.variable]:"colors.whiteAlpha.300"}},_disabled:{_active:{bg:"none"}},color:$.reference,bg:z.reference}}}),ai=P(e=>{const{colorScheme:r}=e;return{tab:{borderTopRadius:"md",border:"1px solid",borderColor:"transparent",mb:"-1px",[Ae.variable]:"transparent",_selected:{[$.variable]:`colors.${r}.600`,[Ae.variable]:"colors.white",_dark:{[$.variable]:`colors.${r}.300`,[Ae.variable]:"colors.gray.800"},borderColor:"inherit",borderBottomColor:Ae.reference},color:$.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),oi=P(e=>{const{colorScheme:r}=e;return{tab:{border:"1px solid",borderColor:"inherit",[z.variable]:"colors.gray.50",_dark:{[z.variable]:"colors.whiteAlpha.50"},mb:"-1px",_notLast:{marginEnd:"-1px"},_selected:{[z.variable]:"colors.white",[$.variable]:`colors.${r}.600`,_dark:{[z.variable]:"colors.gray.800",[$.variable]:`colors.${r}.300`},borderColor:"inherit",borderTopColor:"currentColor",borderBottomColor:"transparent"},color:$.reference,bg:z.reference},tablist:{mb:"-1px",borderBottom:"1px solid",borderColor:"inherit"}}}),ti=P(e=>{const{colorScheme:r,theme:a}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",color:"gray.600",_selected:{color:p(a,`${r}.700`),bg:p(a,`${r}.100`)}}}}),ii=P(e=>{const{colorScheme:r}=e;return{tab:{borderRadius:"full",fontWeight:"semibold",[$.variable]:"colors.gray.600",_dark:{[$.variable]:"inherit"},_selected:{[$.variable]:"colors.white",[z.variable]:`colors.${r}.600`,_dark:{[$.variable]:"colors.gray.800",[z.variable]:`colors.${r}.300`}},color:$.reference,bg:z.reference}}}),ni=P({}),li={line:ri,enclosed:ai,"enclosed-colored":oi,"soft-rounded":ti,"solid-rounded":ii,unstyled:ni},si=Yt({baseStyle:Zt,sizes:ei,variants:li,defaultProps:{size:"md",variant:"line",colorScheme:"blue"}}),g=Qa("badge",["bg","color","shadow"]),di=o({px:1,textTransform:"uppercase",fontSize:"xs",borderRadius:"sm",fontWeight:"bold",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),ci=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.500`,.6)(a);return{[g.bg.variable]:`colors.${r}.500`,[g.color.variable]:"colors.white",_dark:{[g.bg.variable]:i,[g.color.variable]:"colors.whiteAlpha.800"}}}),bi=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.200`,.16)(a);return{[g.bg.variable]:`colors.${r}.100`,[g.color.variable]:`colors.${r}.800`,_dark:{[g.bg.variable]:i,[g.color.variable]:`colors.${r}.200`}}}),vi=o(e=>{const{colorScheme:r,theme:a}=e,i=ae(`${r}.200`,.8)(a);return{[g.color.variable]:`colors.${r}.500`,_dark:{[g.color.variable]:i},[g.shadow.variable]:`inset 0 0 0px 1px ${g.color.reference}`}}),ui={solid:ci,subtle:bi,outline:vi},he=h({baseStyle:di,variants:ui,defaultProps:{variant:"subtle",colorScheme:"gray"}}),{defineMultiStyleConfig:fi,definePartsStyle:L}=b(no.keys),jr=d("tag-bg"),Hr=d("tag-color"),ar=d("tag-shadow"),Ve=d("tag-min-height"),Le=d("tag-min-width"),qe=d("tag-font-size"),Ne=d("tag-padding-inline"),hi=o({fontWeight:"medium",lineHeight:1.2,outline:0,[Hr.variable]:g.color.reference,[jr.variable]:g.bg.reference,[ar.variable]:g.shadow.reference,color:Hr.reference,bg:jr.reference,boxShadow:ar.reference,borderRadius:"md",minH:Ve.reference,minW:Le.reference,fontSize:qe.reference,px:Ne.reference,_focusVisible:{[ar.variable]:"shadows.outline"}}),mi=o({lineHeight:1.2,overflow:"visible"}),gi=o({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}}),yi=L({container:hi,label:mi,closeButton:gi}),pi={sm:L({container:{[Ve.variable]:"sizes.5",[Le.variable]:"sizes.5",[qe.variable]:"fontSizes.xs",[Ne.variable]:"space.2"},closeButton:{marginEnd:"-2px",marginStart:"0.35rem"}}),md:L({container:{[Ve.variable]:"sizes.6",[Le.variable]:"sizes.6",[qe.variable]:"fontSizes.sm",[Ne.variable]:"space.2"}}),lg:L({container:{[Ve.variable]:"sizes.8",[Le.variable]:"sizes.8",[qe.variable]:"fontSizes.md",[Ne.variable]:"space.3"}})},Si={subtle:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.subtle(e)}}),solid:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.solid(e)}}),outline:L(e=>{var r;return{container:(r=he.variants)==null?void 0:r.outline(e)}})},xi=fi({variants:Si,baseStyle:yi,sizes:pi,defaultProps:{size:"md",variant:"subtle",colorScheme:"gray"}}),{definePartsStyle:M,defineMultiStyleConfig:$i}=b(ga.keys),Y=d("input-height"),K=d("input-font-size"),X=d("input-padding"),J=d("input-border-radius"),ki=M({addon:{height:Y.reference,fontSize:K.reference,px:X.reference,borderRadius:J.reference},field:{width:"100%",height:Y.reference,fontSize:K.reference,px:X.reference,borderRadius:J.reference,minWidth:0,outline:0,position:"relative",appearance:"none",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed"}}}),D={lg:o({[K.variable]:"fontSizes.lg",[X.variable]:"space.4",[J.variable]:"radii.md",[Y.variable]:"sizes.12"}),md:o({[K.variable]:"fontSizes.md",[X.variable]:"space.4",[J.variable]:"radii.md",[Y.variable]:"sizes.10"}),sm:o({[K.variable]:"fontSizes.sm",[X.variable]:"space.3",[J.variable]:"radii.sm",[Y.variable]:"sizes.8"}),xs:o({[K.variable]:"fontSizes.xs",[X.variable]:"space.2",[J.variable]:"radii.sm",[Y.variable]:"sizes.6"})},_i={lg:M({field:D.lg,group:D.lg}),md:M({field:D.md,group:D.md}),sm:M({field:D.sm,group:D.sm}),xs:M({field:D.xs,group:D.xs})};function kr(e){const{focusBorderColor:r,errorBorderColor:a}=e;return{focusBorderColor:r||t("blue.500","blue.300")(e),errorBorderColor:a||t("red.500","red.300")(e)}}var wi=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"1px solid",borderColor:"inherit",bg:"inherit",_hover:{borderColor:t("gray.300","whiteAlpha.400")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i),boxShadow:`0 0 0 1px ${p(r,i)}`},_focusVisible:{zIndex:1,borderColor:p(r,a),boxShadow:`0 0 0 1px ${p(r,a)}`}},addon:{border:"1px solid",borderColor:t("inherit","whiteAlpha.50")(e),bg:t("gray.100","whiteAlpha.300")(e)}}}),zi=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{border:"2px solid",borderColor:"transparent",bg:t("gray.100","whiteAlpha.50")(e),_hover:{bg:t("gray.200","whiteAlpha.100")(e)},_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i)},_focusVisible:{bg:"transparent",borderColor:p(r,a)}},addon:{border:"2px solid",borderColor:"transparent",bg:t("gray.100","whiteAlpha.50")(e)}}}),Ci=M(e=>{const{theme:r}=e,{focusBorderColor:a,errorBorderColor:i}=kr(e);return{field:{borderBottom:"1px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent",_readOnly:{boxShadow:"none !important",userSelect:"all"},_invalid:{borderColor:p(r,i),boxShadow:`0px 1px 0px 0px ${p(r,i)}`},_focusVisible:{borderColor:p(r,a),boxShadow:`0px 1px 0px 0px ${p(r,a)}`}},addon:{borderBottom:"2px solid",borderColor:"inherit",borderRadius:"0",px:"0",bg:"transparent"}}}),Ai=M({field:{bg:"transparent",px:"0",height:"auto"},addon:{bg:"transparent",px:"0",height:"auto"}}),Pi={outline:wi,filled:zi,flushed:Ci,unstyled:Ai},u=$i({baseStyle:ki,sizes:_i,variants:Pi,defaultProps:{size:"md",variant:"outline"}}),Wr,Ti=o({...(Wr=u.baseStyle)==null?void 0:Wr.field,paddingY:"2",minHeight:"20",lineHeight:"short",verticalAlign:"top"}),Vr,Lr,Fi={outline:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.outline(e).field)!=null?a:{}}),flushed:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.flushed(e).field)!=null?a:{}}),filled:o(e=>{var r,a;return(a=(r=u.variants)==null?void 0:r.filled(e).field)!=null?a:{}}),unstyled:(Lr=(Vr=u.variants)==null?void 0:Vr.unstyled.field)!=null?Lr:{}},qr,Nr,Or,Gr,Ur,Yr,Kr,Xr,Ii={xs:(Nr=(qr=u.sizes)==null?void 0:qr.xs.field)!=null?Nr:{},sm:(Gr=(Or=u.sizes)==null?void 0:Or.sm.field)!=null?Gr:{},md:(Yr=(Ur=u.sizes)==null?void 0:Ur.md.field)!=null?Yr:{},lg:(Xr=(Kr=u.sizes)==null?void 0:Kr.lg.field)!=null?Xr:{}},Mi=h({baseStyle:Ti,sizes:Ii,variants:Fi,defaultProps:{size:"md",variant:"outline"}}),Pe=f("tooltip-bg"),or=f("tooltip-fg"),Bi=f("popper-arrow-bg"),Ei=o({bg:Pe.reference,color:or.reference,[Pe.variable]:"colors.gray.700",[or.variable]:"colors.whiteAlpha.900",_dark:{[Pe.variable]:"colors.gray.300",[or.variable]:"colors.gray.900"},[Bi.variable]:Pe.reference,px:"2",py:"0.5",borderRadius:"sm",fontWeight:"medium",fontSize:"sm",boxShadow:"md",maxW:"xs",zIndex:"tooltip"}),Di=h({baseStyle:Ei}),{defineMultiStyleConfig:Ri,definePartsStyle:ve}=b(ya.keys),ji=o(e=>{const{colorScheme:r,theme:a,isIndeterminate:i,hasStripe:n}=e,l=t(Mr(),Mr("1rem","rgba(0,0,0,0.1)"))(e),s=t(`${r}.500`,`${r}.200`)(e),c=`linear-gradient( to right, transparent 0%, ${p(a,s)} 50%, transparent 100% - )`;return{...!i&&n&&l,...i?{bgImage:c}:{bgColor:s}}}),Hi=o({lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"}),Wi=o(e=>({bg:t("gray.100","whiteAlpha.300")(e)})),Vi=o(e=>({transitionProperty:"common",transitionDuration:"slow",...ji(e)})),Li=ve(e=>({label:Hi,filledTrack:Vi(e),track:Wi(e)})),qi={xs:ve({track:{h:"1"}}),sm:ve({track:{h:"2"}}),md:ve({track:{h:"3"}}),lg:ve({track:{h:"4"}})},Ni=Ri({sizes:qi,baseStyle:Li,defaultProps:{size:"md",colorScheme:"blue"}}),Oi=e=>typeof e=="function";function S(e,...r){return Oi(e)?e(...r):e}var{definePartsStyle:Oe,defineMultiStyleConfig:Gi}=b(pa.keys),me=d("checkbox-size"),Ui=o(e=>{const{colorScheme:r}=e;return{w:me.reference,h:me.reference,transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:t(`${r}.500`,`${r}.200`)(e),borderColor:t(`${r}.500`,`${r}.200`)(e),color:t("white","gray.900")(e),_hover:{bg:t(`${r}.600`,`${r}.300`)(e),borderColor:t(`${r}.600`,`${r}.300`)(e)},_disabled:{borderColor:t("gray.200","transparent")(e),bg:t("gray.200","whiteAlpha.300")(e),color:t("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:t(`${r}.500`,`${r}.200`)(e),borderColor:t(`${r}.500`,`${r}.200`)(e),color:t("white","gray.900")(e)},_disabled:{bg:t("gray.100","whiteAlpha.100")(e),borderColor:t("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:t("red.500","red.300")(e)}}}),Ki=o({_disabled:{cursor:"not-allowed"}}),Xi=o({userSelect:"none",_disabled:{opacity:.4}}),Yi=o({transitionProperty:"transform",transitionDuration:"normal"}),Zi=Oe(e=>({icon:Yi,container:Ki,control:S(Ui,e),label:Xi})),Ji={sm:Oe({control:{[me.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:Oe({control:{[me.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:Oe({control:{[me.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},Xe=Gi({baseStyle:Zi,sizes:Ji,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Qi,definePartsStyle:Ge}=b(lo.keys),en=o(e=>{var r;const a=(r=S(Xe.baseStyle,e))==null?void 0:r.control;return{...a,borderRadius:"full",_checked:{...a==null?void 0:a._checked,_before:{content:'""',display:"inline-block",pos:"relative",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}}}}),rn=Ge(e=>{var r,a,i,n;return{label:(a=(r=Xe).baseStyle)==null?void 0:a.call(r,e).label,container:(n=(i=Xe).baseStyle)==null?void 0:n.call(i,e).container,control:en(e)}}),an={md:Ge({control:{w:"4",h:"4"},label:{fontSize:"md"}}),lg:Ge({control:{w:"5",h:"5"},label:{fontSize:"lg"}}),sm:Ge({control:{width:"3",height:"3"},label:{fontSize:"sm"}})},on=Qi({baseStyle:rn,sizes:an,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:tn,definePartsStyle:nn}=b(Sa.keys),Te=d("select-bg"),Zr,ln=o({...(Zr=u.baseStyle)==null?void 0:Zr.field,appearance:"none",paddingBottom:"1px",lineHeight:"normal",bg:Te.reference,[Te.variable]:"colors.white",_dark:{[Te.variable]:"colors.gray.700"},"> option, > optgroup":{bg:Te.reference}}),sn=o({width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}}),dn=nn({field:ln,icon:sn}),Fe=o({paddingInlineEnd:"8"}),Jr,Qr,ea,ra,aa,oa,ta,ia,cn={lg:{...(Jr=u.sizes)==null?void 0:Jr.lg,field:{...(Qr=u.sizes)==null?void 0:Qr.lg.field,...Fe}},md:{...(ea=u.sizes)==null?void 0:ea.md,field:{...(ra=u.sizes)==null?void 0:ra.md.field,...Fe}},sm:{...(aa=u.sizes)==null?void 0:aa.sm,field:{...(oa=u.sizes)==null?void 0:oa.sm.field,...Fe}},xs:{...(ta=u.sizes)==null?void 0:ta.xs,field:{...(ia=u.sizes)==null?void 0:ia.xs.field,...Fe},icon:{insetEnd:"1"}}},bn=tn({baseStyle:dn,sizes:cn,variants:u.variants,defaultProps:u.defaultProps}),tr=d("skeleton-start-color"),ir=d("skeleton-end-color"),vn=o({[tr.variable]:"colors.gray.100",[ir.variable]:"colors.gray.400",_dark:{[tr.variable]:"colors.gray.800",[ir.variable]:"colors.gray.600"},background:tr.reference,borderColor:ir.reference,opacity:.7,borderRadius:"sm"}),un=h({baseStyle:vn}),nr=d("skip-link-bg"),fn=o({borderRadius:"md",fontWeight:"semibold",_focusVisible:{boxShadow:"outline",padding:"4",position:"fixed",top:"6",insetStart:"6",[nr.variable]:"colors.white",_dark:{[nr.variable]:"colors.gray.700"},bg:nr.reference}}),hn=h({baseStyle:fn}),{defineMultiStyleConfig:mn,definePartsStyle:Qe}=b(xa.keys),Se=d("slider-thumb-size"),xe=d("slider-track-size"),j=d("slider-bg"),gn=o(e=>{const{orientation:r}=e;return{display:"inline-block",position:"relative",cursor:"pointer",_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"},...xr({orientation:r,vertical:{h:"100%"},horizontal:{w:"100%"}})}}),yn=o(e=>({...xr({orientation:e.orientation,horizontal:{h:xe.reference},vertical:{w:xe.reference}}),overflow:"hidden",borderRadius:"sm",[j.variable]:"colors.gray.200",_dark:{[j.variable]:"colors.whiteAlpha.200"},_disabled:{[j.variable]:"colors.gray.300",_dark:{[j.variable]:"colors.whiteAlpha.300"}},bg:j.reference})),pn=o(e=>{const{orientation:r}=e;return{...xr({orientation:r,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:Se.reference,h:Se.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"}}}),Sn=o(e=>{const{colorScheme:r}=e;return{width:"inherit",height:"inherit",[j.variable]:`colors.${r}.500`,_dark:{[j.variable]:`colors.${r}.200`},bg:j.reference}}),xn=Qe(e=>({container:gn(e),track:yn(e),thumb:pn(e),filledTrack:Sn(e)})),$n=Qe({container:{[Se.variable]:"sizes.4",[xe.variable]:"sizes.1"}}),kn=Qe({container:{[Se.variable]:"sizes.3.5",[xe.variable]:"sizes.1"}}),_n=Qe({container:{[Se.variable]:"sizes.2.5",[xe.variable]:"sizes.0.5"}}),wn={lg:$n,md:kn,sm:_n},zn=mn({baseStyle:xn,sizes:wn,defaultProps:{size:"md",colorScheme:"blue"}}),H=f("spinner-size"),Cn=o({width:[H.reference],height:[H.reference]}),An={xs:o({[H.variable]:"sizes.3"}),sm:o({[H.variable]:"sizes.4"}),md:o({[H.variable]:"sizes.6"}),lg:o({[H.variable]:"sizes.8"}),xl:o({[H.variable]:"sizes.12"})},Pn=h({baseStyle:Cn,sizes:An,defaultProps:{size:"md"}}),{defineMultiStyleConfig:Tn,definePartsStyle:Da}=b(so.keys),Fn=o({fontWeight:"medium"}),In=o({opacity:.8,marginBottom:"2"}),Mn=o({verticalAlign:"baseline",fontWeight:"semibold"}),Bn=o({marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"}),En=Da({container:{},label:Fn,helpText:In,number:Mn,icon:Bn}),Dn={md:Da({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},Rn=Tn({baseStyle:En,sizes:Dn,defaultProps:{size:"md"}}),lr=d("kbd-bg"),jn=o({[lr.variable]:"colors.gray.100",_dark:{[lr.variable]:"colors.whiteAlpha.100"},bg:lr.reference,borderRadius:"md",borderWidth:"1px",borderBottomWidth:"3px",fontSize:"0.8em",fontWeight:"bold",lineHeight:"normal",px:"0.4em",whiteSpace:"nowrap"}),Hn=h({baseStyle:jn}),Wn=o({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}}),Vn=h({baseStyle:Wn}),{defineMultiStyleConfig:Ln,definePartsStyle:qn}=b(co.keys),Nn=o({marginEnd:"2",display:"inline",verticalAlign:"text-bottom"}),On=qn({icon:Nn}),Gn=Ln({baseStyle:On}),{defineMultiStyleConfig:Un,definePartsStyle:Kn}=b(bo.keys),A=d("menu-bg"),sr=d("menu-shadow"),Xn=o({[A.variable]:"#fff",[sr.variable]:"shadows.sm",_dark:{[A.variable]:"colors.gray.700",[sr.variable]:"shadows.dark-lg"},color:"inherit",minW:"3xs",py:"2",zIndex:1,borderRadius:"md",borderWidth:"1px",bg:A.reference,boxShadow:sr.reference}),Yn=o({py:"1.5",px:"3",transitionProperty:"background",transitionDuration:"ultra-fast",transitionTimingFunction:"ease-in",_focus:{[A.variable]:"colors.gray.100",_dark:{[A.variable]:"colors.whiteAlpha.100"}},_active:{[A.variable]:"colors.gray.200",_dark:{[A.variable]:"colors.whiteAlpha.200"}},_expanded:{[A.variable]:"colors.gray.100",_dark:{[A.variable]:"colors.whiteAlpha.100"}},_disabled:{opacity:.4,cursor:"not-allowed"},bg:A.reference}),Zn=o({mx:4,my:2,fontWeight:"semibold",fontSize:"sm"}),Jn=o({display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0}),Qn=o({opacity:.6}),el=o({border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6}),rl=o({transitionProperty:"common",transitionDuration:"normal"}),al=Kn({button:rl,list:Xn,item:Yn,groupTitle:Zn,icon:Jn,command:Qn,divider:el}),ol=Un({baseStyle:al}),{defineMultiStyleConfig:tl,definePartsStyle:pr}=b($a.keys),dr=d("modal-bg"),cr=d("modal-shadow"),il=o({bg:"blackAlpha.600",zIndex:"modal"}),nl=o(e=>{const{isCentered:r,scrollBehavior:a}=e;return{display:"flex",zIndex:"modal",justifyContent:"center",alignItems:r?"center":"flex-start",overflow:a==="inside"?"hidden":"auto",overscrollBehaviorY:"none"}}),ll=o(e=>{const{isCentered:r,scrollBehavior:a}=e;return{borderRadius:"md",color:"inherit",my:r?"auto":"16",mx:r?"auto":void 0,zIndex:"modal",maxH:a==="inside"?"calc(100% - 7.5rem)":void 0,[dr.variable]:"colors.white",[cr.variable]:"shadows.lg",_dark:{[dr.variable]:"colors.gray.700",[cr.variable]:"shadows.dark-lg"},bg:dr.reference,boxShadow:cr.reference}}),sl=o({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),dl=o({position:"absolute",top:"2",insetEnd:"3"}),cl=o(e=>{const{scrollBehavior:r}=e;return{px:"6",py:"2",flex:"1",overflow:r==="inside"?"auto":void 0}}),bl=o({px:"6",py:"4"}),vl=pr(e=>({overlay:il,dialogContainer:S(nl,e),dialog:S(ll,e),header:sl,closeButton:dl,body:S(cl,e),footer:bl}));function w(e){return pr(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var ul={xs:w("xs"),sm:w("sm"),md:w("md"),lg:w("lg"),xl:w("xl"),"2xl":w("2xl"),"3xl":w("3xl"),"4xl":w("4xl"),"5xl":w("5xl"),"6xl":w("6xl"),full:w("full")},fl=tl({baseStyle:vl,sizes:ul,defaultProps:{size:"md"}}),{defineMultiStyleConfig:hl,definePartsStyle:Ra}=b(ka.keys),_r=f("number-input-stepper-width"),ja=f("number-input-input-padding"),ml=I(_r).add("0.5rem").toString(),br=f("number-input-bg"),vr=f("number-input-color"),ur=f("number-input-border-color"),gl=o({[_r.variable]:"sizes.6",[ja.variable]:ml}),yl=o(e=>{var r,a;return(a=(r=S(u.baseStyle,e))==null?void 0:r.field)!=null?a:{}}),pl=o({width:_r.reference}),Sl=o({borderStart:"1px solid",borderStartColor:ur.reference,color:vr.reference,bg:br.reference,[vr.variable]:"colors.chakra-body-text",[ur.variable]:"colors.chakra-border-color",_dark:{[vr.variable]:"colors.whiteAlpha.800",[ur.variable]:"colors.whiteAlpha.300"},_active:{[br.variable]:"colors.gray.200",_dark:{[br.variable]:"colors.whiteAlpha.300"}},_disabled:{opacity:.4,cursor:"not-allowed"}}),xl=Ra(e=>{var r;return{root:gl,field:(r=S(yl,e))!=null?r:{},stepperGroup:pl,stepper:Sl}});function Ie(e){var r,a,i;const n=(r=u.sizes)==null?void 0:r[e],l={lg:"md",md:"md",sm:"sm",xs:"sm"},s=(i=(a=n.field)==null?void 0:a.fontSize)!=null?i:"md",c=Fa.fontSizes[s];return Ra({field:{...n.field,paddingInlineEnd:ja.reference,verticalAlign:"top"},stepper:{fontSize:I(c).multiply(.75).toString(),_first:{borderTopEndRadius:l[e]},_last:{borderBottomEndRadius:l[e],mt:"-1px",borderTopWidth:1}}})}var $l={xs:Ie("xs"),sm:Ie("sm"),md:Ie("md"),lg:Ie("lg")},kl=hl({baseStyle:xl,sizes:$l,variants:u.variants,defaultProps:u.defaultProps}),na,_l=o({...(na=u.baseStyle)==null?void 0:na.field,textAlign:"center"}),wl={lg:o({fontSize:"lg",w:12,h:12,borderRadius:"md"}),md:o({fontSize:"md",w:10,h:10,borderRadius:"md"}),sm:o({fontSize:"sm",w:8,h:8,borderRadius:"sm"}),xs:o({fontSize:"xs",w:6,h:6,borderRadius:"sm"})},la,sa,zl={outline:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.outline,e))==null?void 0:a.field)!=null?i:{}}),flushed:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.flushed,e))==null?void 0:a.field)!=null?i:{}}),filled:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.filled,e))==null?void 0:a.field)!=null?i:{}}),unstyled:(sa=(la=u.variants)==null?void 0:la.unstyled.field)!=null?sa:{}},Cl=h({baseStyle:_l,sizes:wl,variants:zl,defaultProps:u.defaultProps}),{defineMultiStyleConfig:Al,definePartsStyle:Pl}=b(_a.keys),Me=f("popper-bg"),Tl=f("popper-arrow-bg"),da=f("popper-arrow-shadow-color"),Fl=o({zIndex:10}),Il=o({[Me.variable]:"colors.white",bg:Me.reference,[Tl.variable]:Me.reference,[da.variable]:"colors.gray.200",_dark:{[Me.variable]:"colors.gray.700",[da.variable]:"colors.whiteAlpha.300"},width:"xs",border:"1px solid",borderColor:"inherit",borderRadius:"md",boxShadow:"sm",zIndex:"inherit",_focusVisible:{outline:0,boxShadow:"outline"}}),Ml=o({px:3,py:2,borderBottomWidth:"1px"}),Bl=o({px:3,py:2}),El=o({px:3,py:2,borderTopWidth:"1px"}),Dl=o({position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2}),Rl=Pl({popper:Fl,content:Il,header:Ml,body:Bl,footer:El,closeButton:Dl}),jl=Al({baseStyle:Rl}),{definePartsStyle:Sr,defineMultiStyleConfig:Hl}=b(vo.keys),fr=d("drawer-bg"),hr=d("drawer-box-shadow");function O(e){return Sr(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var Wl=o({bg:"blackAlpha.600",zIndex:"overlay"}),Vl=o({display:"flex",zIndex:"modal",justifyContent:"center"}),Ll=o(e=>{const{isFullHeight:r}=e;return{...r&&{height:"100vh"},zIndex:"modal",maxH:"100vh",color:"inherit",[fr.variable]:"colors.white",[hr.variable]:"shadows.lg",_dark:{[fr.variable]:"colors.gray.700",[hr.variable]:"shadows.dark-lg"},bg:fr.reference,boxShadow:hr.reference}}),ql=o({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),Nl=o({position:"absolute",top:"2",insetEnd:"3"}),Ol=o({px:"6",py:"2",flex:"1",overflow:"auto"}),Gl=o({px:"6",py:"4"}),Ul=Sr(e=>({overlay:Wl,dialogContainer:Vl,dialog:S(Ll,e),header:ql,closeButton:Nl,body:Ol,footer:Gl})),Kl={xs:O("xs"),sm:O("md"),md:O("lg"),lg:O("2xl"),xl:O("4xl"),full:O("full")},Xl=Hl({baseStyle:Ul,sizes:Kl,defaultProps:{size:"xs"}}),{definePartsStyle:Yl,defineMultiStyleConfig:Zl}=b(wa.keys),Jl=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),Ql=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),es=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),rs=Yl({preview:Jl,input:Ql,textarea:es}),as=Zl({baseStyle:rs}),{definePartsStyle:os,defineMultiStyleConfig:ts}=b(uo.keys),Q=d("form-control-color"),is=o({marginStart:"1",[Q.variable]:"colors.red.500",_dark:{[Q.variable]:"colors.red.300"},color:Q.reference}),ns=o({mt:"2",[Q.variable]:"colors.gray.600",_dark:{[Q.variable]:"colors.whiteAlpha.600"},color:Q.reference,lineHeight:"normal",fontSize:"sm"}),ls=os({container:{width:"100%",position:"relative"},requiredIndicator:is,helperText:ns}),ss=ts({baseStyle:ls}),{definePartsStyle:ds,defineMultiStyleConfig:cs}=b(fo.keys),ee=d("form-error-color"),bs=o({[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference,mt:"2",fontSize:"sm",lineHeight:"normal"}),vs=o({marginEnd:"0.5em",[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference}),us=ds({text:bs,icon:vs}),fs=cs({baseStyle:us}),hs=o({fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}}),ms=h({baseStyle:hs}),gs=o({fontFamily:"heading",fontWeight:"bold"}),ys={"4xl":o({fontSize:["6xl",null,"7xl"],lineHeight:1}),"3xl":o({fontSize:["5xl",null,"6xl"],lineHeight:1}),"2xl":o({fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]}),xl:o({fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]}),lg:o({fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]}),md:o({fontSize:"xl",lineHeight:1.2}),sm:o({fontSize:"md",lineHeight:1.2}),xs:o({fontSize:"sm",lineHeight:1.2})},ps=h({baseStyle:gs,sizes:ys,defaultProps:{size:"xl"}}),{defineMultiStyleConfig:Ss,definePartsStyle:xs}=b(ho.keys),mr=d("breadcrumb-link-decor"),$s=o({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",outline:"none",color:"inherit",textDecoration:mr.reference,[mr.variable]:"none","&:not([aria-current=page])":{cursor:"pointer",_hover:{[mr.variable]:"underline"},_focusVisible:{boxShadow:"outline"}}}),ks=xs({link:$s}),_s=Ss({baseStyle:ks}),ws=o({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"}}}),Ha=o(e=>{const{colorScheme:r,theme:a}=e;if(r==="gray")return{color:t("gray.800","whiteAlpha.900")(e),_hover:{bg:t("gray.100","whiteAlpha.200")(e)},_active:{bg:t("gray.200","whiteAlpha.300")(e)}};const i=ae(`${r}.200`,.12)(a),n=ae(`${r}.200`,.24)(a);return{color:t(`${r}.600`,`${r}.200`)(e),bg:"transparent",_hover:{bg:t(`${r}.50`,i)(e)},_active:{bg:t(`${r}.100`,n)(e)}}}),zs=o(e=>{const{colorScheme:r}=e,a=t("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:r==="gray"?a:"currentColor",".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)":{marginEnd:"-1px"},".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)":{marginBottom:"-1px"},...S(Ha,e)}}),Cs={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},As=o(e=>{var r;const{colorScheme:a}=e;if(a==="gray"){const v=t("gray.100","whiteAlpha.200")(e);return{bg:v,color:t("gray.800","whiteAlpha.900")(e),_hover:{bg:t("gray.200","whiteAlpha.300")(e),_disabled:{bg:v}},_active:{bg:t("gray.300","whiteAlpha.400")(e)}}}const{bg:i=`${a}.500`,color:n="white",hoverBg:l=`${a}.600`,activeBg:s=`${a}.700`}=(r=Cs[a])!=null?r:{},c=t(i,`${a}.200`)(e);return{bg:c,color:t(n,"gray.800")(e),_hover:{bg:t(l,`${a}.300`)(e),_disabled:{bg:c}},_active:{bg:t(s,`${a}.400`)(e)}}}),Ps=o(e=>{const{colorScheme:r}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:t(`${r}.500`,`${r}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:t(`${r}.700`,`${r}.500`)(e)}}}),Ts=o({bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"}),Fs={ghost:Ha,outline:zs,solid:As,link:Ps,unstyled:Ts},Is={lg:o({h:"12",minW:"12",fontSize:"lg",px:"6"}),md:o({h:"10",minW:"10",fontSize:"md",px:"4"}),sm:o({h:"8",minW:"8",fontSize:"sm",px:"3"}),xs:o({h:"6",minW:"6",fontSize:"xs",px:"2"})},Ms=h({baseStyle:ws,variants:Fs,sizes:Is,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}}),{definePartsStyle:q,defineMultiStyleConfig:Bs}=b(mo.keys),Ye=d("card-bg"),B=d("card-padding"),Wa=d("card-shadow"),Ue=d("card-radius"),Va=d("card-border-width","0"),La=d("card-border-color"),Es=q({container:{[Ye.variable]:"colors.chakra-body-bg",backgroundColor:Ye.reference,boxShadow:Wa.reference,borderRadius:Ue.reference,color:"chakra-body-text",borderWidth:Va.reference,borderColor:La.reference},body:{padding:B.reference,flex:"1 1 0%"},header:{padding:B.reference},footer:{padding:B.reference}}),Ds={sm:q({container:{[Ue.variable]:"radii.base",[B.variable]:"space.3"}}),md:q({container:{[Ue.variable]:"radii.md",[B.variable]:"space.5"}}),lg:q({container:{[Ue.variable]:"radii.xl",[B.variable]:"space.7"}})},Rs={elevated:q({container:{[Wa.variable]:"shadows.base",_dark:{[Ye.variable]:"colors.gray.700"}}}),outline:q({container:{[Va.variable]:"1px",[La.variable]:"colors.chakra-border-color"}}),filled:q({container:{[Ye.variable]:"colors.chakra-subtle-bg"}}),unstyled:{body:{[B.variable]:0},header:{[B.variable]:0},footer:{[B.variable]:0}}},js=Bs({baseStyle:Es,variants:Rs,sizes:Ds,defaultProps:{variant:"elevated",size:"md"}}),ge=f("close-button-size"),se=f("close-button-bg"),Hs=o({w:[ge.reference],h:[ge.reference],borderRadius:"md",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{[se.variable]:"colors.blackAlpha.100",_dark:{[se.variable]:"colors.whiteAlpha.100"}},_active:{[se.variable]:"colors.blackAlpha.200",_dark:{[se.variable]:"colors.whiteAlpha.200"}},_focusVisible:{boxShadow:"outline"},bg:se.reference}),Ws={lg:o({[ge.variable]:"sizes.10",fontSize:"md"}),md:o({[ge.variable]:"sizes.8",fontSize:"xs"}),sm:o({[ge.variable]:"sizes.6",fontSize:"2xs"})},Vs=h({baseStyle:Hs,sizes:Ws,defaultProps:{size:"md"}}),{variants:Ls,defaultProps:qs}=he,Ns=o({fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),Os=h({baseStyle:Ns,variants:Ls,defaultProps:qs}),Gs=o({w:"100%",mx:"auto",maxW:"prose",px:"4"}),Us=h({baseStyle:Gs}),Ks=o({opacity:.6,borderColor:"inherit"}),Xs=o({borderStyle:"solid"}),Ys=o({borderStyle:"dashed"}),Zs={solid:Xs,dashed:Ys},Js=h({baseStyle:Ks,variants:Zs,defaultProps:{variant:"solid"}}),{definePartsStyle:Qs,defineMultiStyleConfig:e0}=b(za.keys),r0=o({borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}}),a0=o({transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"}),o0=o({pt:"2",px:"4",pb:"5"}),t0=o({fontSize:"1.25em"}),i0=Qs({container:r0,button:a0,panel:o0,icon:t0}),n0=e0({baseStyle:i0}),{definePartsStyle:ke,defineMultiStyleConfig:l0}=b(go.keys),k=d("alert-fg"),E=d("alert-bg"),s0=ke({container:{bg:E.reference,px:"4",py:"3"},title:{fontWeight:"bold",lineHeight:"6",marginEnd:"2"},description:{lineHeight:"6"},icon:{color:k.reference,flexShrink:0,marginEnd:"3",w:"5",h:"6"},spinner:{color:k.reference,flexShrink:0,marginEnd:"3",w:"5",h:"5"}});function wr(e){const{theme:r,colorScheme:a}=e,i=ae(`${a}.200`,.16)(r);return{light:`colors.${a}.100`,dark:i}}var d0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark}}}}),c0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark},paddingStart:"3",borderStartWidth:"4px",borderStartColor:k.reference}}}),b0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark},pt:"2",borderTopWidth:"4px",borderTopColor:k.reference}}}),v0=ke(e=>{const{colorScheme:r}=e;return{container:{[k.variable]:"colors.white",[E.variable]:`colors.${r}.500`,_dark:{[k.variable]:"colors.gray.900",[E.variable]:`colors.${r}.200`},color:k.reference}}}),u0={subtle:d0,"left-accent":c0,"top-accent":b0,solid:v0},f0=l0({baseStyle:s0,variants:u0,defaultProps:{variant:"subtle",colorScheme:"blue"}}),{definePartsStyle:qa,defineMultiStyleConfig:h0}=b(yo.keys),re=d("avatar-border-color"),ye=d("avatar-bg"),$e=d("avatar-font-size"),oe=d("avatar-size"),m0=o({borderRadius:"full",border:"0.2em solid",borderColor:re.reference,[re.variable]:"white",_dark:{[re.variable]:"colors.gray.800"}}),g0=o({bg:ye.reference,fontSize:$e.reference,width:oe.reference,height:oe.reference,lineHeight:"1",[ye.variable]:"colors.gray.200",_dark:{[ye.variable]:"colors.whiteAlpha.400"}}),y0=o(e=>{const{name:r,theme:a}=e,i=r?_t({string:r}):"colors.gray.400",n=$t(i)(a);let l="white";return n||(l="gray.800"),{bg:ye.reference,fontSize:$e.reference,color:l,borderColor:re.reference,verticalAlign:"top",width:oe.reference,height:oe.reference,"&:not([data-loaded])":{[ye.variable]:i},[re.variable]:"colors.white",_dark:{[re.variable]:"colors.gray.800"}}}),p0=o({fontSize:$e.reference,lineHeight:"1"}),S0=qa(e=>({badge:S(m0,e),excessLabel:S(g0,e),container:S(y0,e),label:p0}));function R(e){const r=e!=="100%"?Ma[e]:void 0;return qa({container:{[oe.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`},excessLabel:{[oe.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`}})}var x0={"2xs":R(4),xs:R(6),sm:R(8),md:R(12),lg:R(16),xl:R(24),"2xl":R(32),full:R("100%")},$0=h0({baseStyle:S0,sizes:x0,defaultProps:{size:"md"}}),k0={Accordion:n0,Alert:f0,Avatar:$0,Badge:he,Breadcrumb:_s,Button:Ms,Checkbox:Xe,CloseButton:Vs,Code:Os,Container:Us,Divider:Js,Drawer:Xl,Editable:as,Form:ss,FormError:fs,FormLabel:ms,Heading:ps,Input:u,Kbd:Hn,Link:Vn,List:Gn,Menu:ol,Modal:fl,NumberInput:kl,PinInput:Cl,Popover:jl,Progress:Ni,Radio:on,Select:bn,Skeleton:un,SkipLink:hn,Slider:zn,Spinner:Pn,Stat:Rn,Switch:Wt,Table:Ut,Tabs:si,Tag:xi,Textarea:Mi,Tooltip:Di,Card:js,Stepper:tt},_0={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-inverse-text":{_light:"white",_dark:"gray.800"},"chakra-subtle-bg":{_light:"gray.100",_dark:"gray.700"},"chakra-subtle-text":{_light:"gray.600",_dark:"gray.400"},"chakra-placeholder-color":{_light:"gray.500",_dark:"whiteAlpha.400"}}},w0={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"}}},z0="ltr",C0={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},Na={semanticTokens:_0,direction:z0,...rt,components:k0,styles:w0,config:C0};function ue(e){return typeof e=="function"}function A0(...e){return r=>e.reduce((a,i)=>i(a),r)}var P0=e=>function(...a){let i=[...a],n=a[a.length-1];return Fo(n)&&i.length>1?i=i.slice(0,i.length-1):n=e,A0(...i.map(l=>s=>ue(l)?l(s):F0(s,l)))(n)},T0=P0(Na);function F0(...e){return fa({},...e,Oa)}function Oa(e,r,a,i){if((ue(e)||ue(r))&&Object.prototype.hasOwnProperty.call(i,a))return(...n)=>{const l=ue(e)?e(...n):e,s=ue(r)?r(...n):r;return fa({},l,s,Oa)}}function I0(e={}){const{strict:r=!0,errorMessage:a="useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",name:i}=e,n=y.createContext(void 0);n.displayName=i;function l(){var s;const c=y.useContext(n);if(!c&&r){const v=new Error(a);throw v.name="ContextError",(s=Error.captureStackTrace)==null||s.call(Error,v,l),v}return c}return[n.Provider,l,n]}function M0(e){const{cssVarsRoot:r,theme:a,children:i}=e,n=y.useMemo(()=>Qa(a),[a]);return m.jsxs(eo,{theme:n,children:[m.jsx(B0,{root:r}),i]})}function B0({root:e=":host, :root"}){const r=[e,"[data-theme]"].join(",");return m.jsx(Ze,{styles:a=>({[r]:a.__cssVars})})}I0({name:"StylesContext",errorMessage:"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` "});function E0(){const{colorMode:e}=ro();return m.jsx(Ze,{styles:r=>{const a=ao(r,"styles.global"),i=oo(a,{theme:r,colorMode:e});return i?to(i)(r):void 0}})}var Ga=y.createContext({getDocument(){return document},getWindow(){return window}});Ga.displayName="EnvironmentContext";function Ua(e){const{children:r,environment:a,disabled:i}=e,n=y.useRef(null),l=y.useMemo(()=>a||{getDocument:()=>{var c,v;return(v=(c=n.current)==null?void 0:c.ownerDocument)!=null?v:document},getWindow:()=>{var c,v;return(v=(c=n.current)==null?void 0:c.ownerDocument.defaultView)!=null?v:window}},[a]),s=!i||!a;return m.jsxs(Ga.Provider,{value:l,children:[r,s&&m.jsx("span",{id:"__chakra_env",hidden:!0,ref:n})]})}Ua.displayName="EnvironmentProvider";var D0=e=>{const{children:r,colorModeManager:a,portalZIndex:i,resetScope:n,resetCSS:l=!0,theme:s={},environment:c,cssVarsRoot:v,disableEnvironment:x,disableGlobalStyle:T}=e,N=m.jsx(Ua,{environment:c,disabled:x,children:r});return m.jsx(M0,{theme:s,cssVarsRoot:v,children:m.jsxs(Ta,{colorModeManager:a,options:s.config,children:[l?m.jsx(zo,{scope:n}):m.jsx(wo,{}),!T&&m.jsx(E0,{}),i?m.jsx(po,{zIndex:i,children:N}):N]})})},R0=e=>function({children:a,theme:i=e,toastOptions:n,...l}){return m.jsxs(D0,{theme:i,...l,children:[m.jsx(So,{value:n==null?void 0:n.defaultOptions,children:a}),m.jsx(xo,{...n})]})},j0=R0(Na);function _(e,r,a=!1){e=String(e),r=String(r);const i=Array.from({length:21},(s,c)=>c*50),n=[0,5,10,15,20,25,30,35,40,45,50,55,59,64,68,73,77,82,86,95,100];return i.reduce((s,c,v)=>{const x=a?n[v]/100:1,T=a?50:n[i.length-1-v];return s[c]=`hsl(${e} ${r}% ${T}% / ${x})`,s},{})}const Be={H:220,S:16},Ee={H:250,S:42},De={H:47,S:42},Re={H:28,S:42},je={H:113,S:42},He={H:0,S:42},H0={base:_(Be.H,Be.S),baseAlpha:_(Be.H,Be.S,!0),accent:_(Ee.H,Ee.S),accentAlpha:_(Ee.H,Ee.S,!0),working:_(De.H,De.S),workingAlpha:_(De.H,De.S,!0),warning:_(Re.H,Re.S),warningAlpha:_(Re.H,Re.S,!0),ok:_(je.H,je.S),okAlpha:_(je.H,je.S,!0),error:_(He.H,He.S),errorAlpha:_(He.H,He.S,!0)},{definePartsStyle:W0,defineMultiStyleConfig:V0}=b(za.keys),L0=o({border:"none"}),q0=o(e=>{const{colorScheme:r}=e;return{fontWeight:"600",fontSize:"sm",border:"none",borderRadius:"base",bg:t(`${r}.200`,`${r}.700`)(e),color:t(`${r}.900`,`${r}.100`)(e),_hover:{bg:t(`${r}.250`,`${r}.650`)(e)},_expanded:{bg:t(`${r}.250`,`${r}.650`)(e),borderBottomRadius:"none",_hover:{bg:t(`${r}.300`,`${r}.600`)(e)}}}}),N0=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.100`,`${r}.800`)(e),borderRadius:"base",borderTopRadius:"none"}}),O0=o({}),G0=W0(e=>({container:L0,button:q0(e),panel:N0(e),icon:O0})),U0=V0({variants:{invokeAI:G0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),K0=o(e=>{const{colorScheme:r}=e;if(r==="base"){const n={bg:t("base.150","base.700")(e),color:t("base.300","base.500")(e),svg:{fill:t("base.500","base.500")(e)},opacity:1},l={bg:"none",color:t("base.300","base.500")(e),svg:{fill:t("base.500","base.500")(e)},opacity:1};return{bg:t("base.250","base.600")(e),color:t("base.850","base.100")(e),borderRadius:"base",svg:{fill:t("base.850","base.100")(e)},_hover:{bg:t("base.300","base.500")(e),color:t("base.900","base.50")(e),svg:{fill:t("base.900","base.50")(e)},_disabled:n},_disabled:n,'&[data-progress="true"]':{...l,_hover:l}}}const a={bg:t(`${r}.250`,`${r}.700`)(e),color:t(`${r}.50`,`${r}.500`)(e),svg:{fill:t(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:1,filter:t(void 0,"saturate(65%)")(e)},i={color:t(`${r}.50`,`${r}.500`)(e),svg:{fill:t(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:.7,filter:t(void 0,"saturate(65%)")(e)};return{bg:t(`${r}.400`,`${r}.600`)(e),color:t("base.50","base.100")(e),borderRadius:"base",svg:{fill:t("base.50","base.100")(e)},_disabled:a,_hover:{bg:t(`${r}.500`,`${r}.500`)(e),color:t("white","base.50")(e),svg:{fill:t("white","base.50")(e)},_disabled:a},'&[data-progress="true"]':{...i,_hover:i}}}),X0=o(e=>{const{colorScheme:r}=e,a=t("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:r==="gray"?a:"currentColor",".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)":{marginEnd:"-1px"},".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)":{marginBottom:"-1px"}}}),Y0=h({variants:{invokeAI:K0,invokeAIOutline:X0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),{definePartsStyle:Z0,defineMultiStyleConfig:J0}=b(pa.keys),Q0=o(e=>{const{colorScheme:r}=e;return{bg:t("base.200","base.700")(e),borderColor:t("base.300","base.600")(e),color:t("base.900","base.100")(e),_checked:{bg:t(`${r}.300`,`${r}.500`)(e),borderColor:t(`${r}.300`,`${r}.500`)(e),color:t(`${r}.900`,`${r}.100`)(e),_hover:{bg:t(`${r}.400`,`${r}.500`)(e),borderColor:t(`${r}.400`,`${r}.500`)(e)},_disabled:{borderColor:"transparent",bg:"whiteAlpha.300",color:"whiteAlpha.500"}},_indeterminate:{bg:t(`${r}.300`,`${r}.600`)(e),borderColor:t(`${r}.300`,`${r}.600`)(e),color:t(`${r}.900`,`${r}.100`)(e)},_disabled:{bg:"whiteAlpha.100",borderColor:"transparent"},_focusVisible:{boxShadow:"none",outline:"none"},_invalid:{borderColor:t("error.600","error.300")(e)}}}),ed=Z0(e=>({control:Q0(e)})),rd=J0({variants:{invokeAI:ed},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{definePartsStyle:ad,defineMultiStyleConfig:od}=b(wa.keys),td=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),id=o(e=>({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6},"::selection":{color:t("accent.900","accent.50")(e),bg:t("accent.200","accent.400")(e)}})),nd=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),ld=ad(e=>({preview:td,input:id(e),textarea:nd})),sd=od({variants:{invokeAI:ld},defaultProps:{size:"sm",variant:"invokeAI"}}),dd=o(e=>({fontSize:"sm",marginEnd:0,mb:1,fontWeight:"400",transitionProperty:"common",transitionDuration:"normal",whiteSpace:"nowrap",_disabled:{opacity:.4},color:t("base.700","base.300")(e),_invalid:{color:t("error.500","error.300")(e)}})),cd=h({variants:{invokeAI:dd},defaultProps:{variant:"invokeAI"}}),er=e=>({outline:"none",borderWidth:2,borderStyle:"solid",borderColor:t("base.200","base.800")(e),bg:t("base.50","base.900")(e),borderRadius:"base",color:t("base.900","base.100")(e),boxShadow:"none",_hover:{borderColor:t("base.300","base.600")(e)},_focus:{borderColor:t("accent.200","accent.600")(e),boxShadow:"none",_hover:{borderColor:t("accent.300","accent.500")(e)}},_invalid:{borderColor:t("error.300","error.600")(e),boxShadow:"none",_hover:{borderColor:t("error.400","error.500")(e)}},_disabled:{borderColor:t("base.300","base.700")(e),bg:t("base.300","base.700")(e),color:t("base.600","base.400")(e),_hover:{borderColor:t("base.300","base.700")(e)}},_placeholder:{color:t("base.700","base.400")(e)},"::selection":{bg:t("accent.200","accent.400")(e)}}),{definePartsStyle:bd,defineMultiStyleConfig:vd}=b(ga.keys),ud=bd(e=>({field:er(e)})),fd=vd({variants:{invokeAI:ud},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:hd,definePartsStyle:md}=b($a.keys),gd=o(e=>({bg:t("blackAlpha.700","blackAlpha.700")(e)})),yd=o({}),pd=o(()=>({layerStyle:"first",maxH:"80vh"})),Sd=o(()=>({fontWeight:"600",fontSize:"lg",layerStyle:"first",borderTopRadius:"base",borderInlineEndRadius:"base"})),xd=o({}),$d=o({overflowY:"scroll"}),kd=o({}),_d=md(e=>({overlay:gd(e),dialogContainer:yd,dialog:pd(),header:Sd(),closeButton:xd,body:$d,footer:kd})),wd=hd({variants:{invokeAI:_d},defaultProps:{variant:"invokeAI",size:"lg"}}),{defineMultiStyleConfig:zd,definePartsStyle:Cd}=b(ka.keys),Ad=o(e=>({height:8})),Pd=o(e=>({border:"none",fontWeight:"600",height:"auto",py:1,ps:2,pe:6,...er(e)})),Td=o(e=>({display:"flex"})),Fd=o(e=>({border:"none",px:2,py:0,mx:-2,my:0,svg:{color:t("base.700","base.300")(e),width:2.5,height:2.5,_hover:{color:t("base.900","base.100")(e)}}})),Id=Cd(e=>({root:Ad(e),field:Pd(e),stepperGroup:Td(e),stepper:Fd(e)})),Md=zd({variants:{invokeAI:Id},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:Bd,definePartsStyle:Ed}=b(_a.keys),Dd=f("popper-bg"),Rd=f("popper-arrow-bg"),jd=f("popper-arrow-shadow-color"),Hd=o(e=>({[Rd.variable]:t("colors.base.100","colors.base.800")(e),[Dd.variable]:t("colors.base.100","colors.base.800")(e),[jd.variable]:t("colors.base.400","colors.base.600")(e),minW:"unset",width:"unset",p:4,bg:t("base.100","base.800")(e),border:"none",shadow:"dark-lg"})),Wd=Ed(e=>({content:Hd(e)})),Vd=Bd({variants:{invokeAI:Wd},defaultProps:{variant:"invokeAI"}}),{defineMultiStyleConfig:Ld,definePartsStyle:qd}=b(ya.keys),Nd=o(e=>({bg:"accentAlpha.700"})),Od=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.200`,`${r}.700`)(e)}}),Gd=qd(e=>({filledTrack:Nd(e),track:Od(e)})),Ud=Ld({variants:{invokeAI:Gd},defaultProps:{variant:"invokeAI"}}),Kd={"::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},{definePartsStyle:Xd,defineMultiStyleConfig:Yd}=b(Sa.keys),Zd=o(e=>({color:t("base.200","base.300")(e)})),Jd=o(e=>({fontWeight:"600",...er(e)})),Qd=Xd(e=>({field:Jd(e),icon:Zd(e)})),ec=Yd({variants:{invokeAI:Qd},defaultProps:{size:"sm",variant:"invokeAI"}}),ca=d("skeleton-start-color"),ba=d("skeleton-end-color"),rc=o({borderRadius:"base",maxW:"full",maxH:"full",_light:{[ca.variable]:"colors.base.250",[ba.variable]:"colors.base.450"},_dark:{[ca.variable]:"colors.base.700",[ba.variable]:"colors.base.500"}}),ac=h({variants:{invokeAI:rc},defaultProps:{variant:"invokeAI"}}),{definePartsStyle:oc,defineMultiStyleConfig:tc}=b(xa.keys),ic=o(e=>({bg:t("base.400","base.600")(e),h:1.5})),nc=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.400`,`${r}.600`)(e),h:1.5}}),lc=o(e=>({w:e.orientation==="horizontal"?2:4,h:e.orientation==="horizontal"?4:2,bg:t("base.50","base.100")(e)})),sc=o(e=>({fontSize:"2xs",fontWeight:"500",color:t("base.700","base.400")(e),mt:2,insetInlineStart:"unset"})),dc=oc(e=>({container:{_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"}},track:ic(e),filledTrack:nc(e),thumb:lc(e),mark:sc(e)})),cc=tc({variants:{invokeAI:dc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:bc,definePartsStyle:vc}=b(ha.keys),uc=o(e=>{const{colorScheme:r}=e;return{bg:t("base.300","base.600")(e),_focusVisible:{boxShadow:"none"},_checked:{bg:t(`${r}.400`,`${r}.500`)(e)}}}),fc=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.50`,`${r}.50`)(e)}}),hc=vc(e=>({container:{},track:uc(e),thumb:fc(e)})),mc=bc({variants:{invokeAI:hc},defaultProps:{size:"md",variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:gc,definePartsStyle:Ka}=b(ma.keys),yc=o(e=>({display:"flex",columnGap:4})),pc=o(e=>({})),Sc=o(e=>{const{colorScheme:r}=e;return{display:"flex",flexDirection:"column",gap:1,color:t("base.700","base.400")(e),button:{fontSize:"sm",padding:2,borderRadius:"base",textShadow:t("0 0 0.3rem var(--invokeai-colors-accent-100)","0 0 0.3rem var(--invokeai-colors-accent-900)")(e),svg:{fill:t("base.700","base.300")(e)},_selected:{bg:t("accent.400","accent.600")(e),color:t("base.50","base.100")(e),svg:{fill:t("base.50","base.100")(e),filter:t(`drop-shadow(0px 0px 0.3rem var(--invokeai-colors-${r}-600))`,`drop-shadow(0px 0px 0.3rem var(--invokeai-colors-${r}-800))`)(e)},_hover:{bg:t("accent.500","accent.500")(e),color:t("white","base.50")(e),svg:{fill:t("white","base.50")(e)}}},_hover:{bg:t("base.100","base.800")(e),color:t("base.900","base.50")(e),svg:{fill:t("base.800","base.100")(e)}}}}}),xc=o(e=>({padding:0,height:"100%"})),$c=Ka(e=>({root:yc(e),tab:pc(e),tablist:Sc(e),tabpanel:xc(e)})),kc=Ka(e=>({tab:{borderTopRadius:"base",px:4,py:1,fontSize:"sm",color:t("base.600","base.400")(e),fontWeight:500,_selected:{color:t("accent.600","accent.400")(e)}},tabpanel:{p:0,pt:4,w:"full",h:"full"},tabpanels:{w:"full",h:"full"}})),_c=gc({variants:{line:kc,appTabs:$c},defaultProps:{variant:"appTabs",colorScheme:"accent"}}),wc=o(e=>({color:t("base.500","base.400")(e)})),zc=h({variants:{subtext:wc}}),Cc=o(e=>({...er(e),"::-webkit-scrollbar":{display:"initial"},"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, + )`;return{...!i&&n&&l,...i?{bgImage:c}:{bgColor:s}}}),Hi=o({lineHeight:"1",fontSize:"0.25em",fontWeight:"bold",color:"white"}),Wi=o(e=>({bg:t("gray.100","whiteAlpha.300")(e)})),Vi=o(e=>({transitionProperty:"common",transitionDuration:"slow",...ji(e)})),Li=ve(e=>({label:Hi,filledTrack:Vi(e),track:Wi(e)})),qi={xs:ve({track:{h:"1"}}),sm:ve({track:{h:"2"}}),md:ve({track:{h:"3"}}),lg:ve({track:{h:"4"}})},Ni=Ri({sizes:qi,baseStyle:Li,defaultProps:{size:"md",colorScheme:"blue"}}),Oi=e=>typeof e=="function";function S(e,...r){return Oi(e)?e(...r):e}var{definePartsStyle:Oe,defineMultiStyleConfig:Gi}=b(pa.keys),me=d("checkbox-size"),Ui=o(e=>{const{colorScheme:r}=e;return{w:me.reference,h:me.reference,transitionProperty:"box-shadow",transitionDuration:"normal",border:"2px solid",borderRadius:"sm",borderColor:"inherit",color:"white",_checked:{bg:t(`${r}.500`,`${r}.200`)(e),borderColor:t(`${r}.500`,`${r}.200`)(e),color:t("white","gray.900")(e),_hover:{bg:t(`${r}.600`,`${r}.300`)(e),borderColor:t(`${r}.600`,`${r}.300`)(e)},_disabled:{borderColor:t("gray.200","transparent")(e),bg:t("gray.200","whiteAlpha.300")(e),color:t("gray.500","whiteAlpha.500")(e)}},_indeterminate:{bg:t(`${r}.500`,`${r}.200`)(e),borderColor:t(`${r}.500`,`${r}.200`)(e),color:t("white","gray.900")(e)},_disabled:{bg:t("gray.100","whiteAlpha.100")(e),borderColor:t("gray.100","transparent")(e)},_focusVisible:{boxShadow:"outline"},_invalid:{borderColor:t("red.500","red.300")(e)}}}),Yi=o({_disabled:{cursor:"not-allowed"}}),Ki=o({userSelect:"none",_disabled:{opacity:.4}}),Xi=o({transitionProperty:"transform",transitionDuration:"normal"}),Ji=Oe(e=>({icon:Xi,container:Yi,control:S(Ui,e),label:Ki})),Qi={sm:Oe({control:{[me.variable]:"sizes.3"},label:{fontSize:"sm"},icon:{fontSize:"3xs"}}),md:Oe({control:{[me.variable]:"sizes.4"},label:{fontSize:"md"},icon:{fontSize:"2xs"}}),lg:Oe({control:{[me.variable]:"sizes.5"},label:{fontSize:"lg"},icon:{fontSize:"2xs"}})},Ke=Gi({baseStyle:Ji,sizes:Qi,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:Zi,definePartsStyle:Ge}=b(lo.keys),en=o(e=>{var r;const a=(r=S(Ke.baseStyle,e))==null?void 0:r.control;return{...a,borderRadius:"full",_checked:{...a==null?void 0:a._checked,_before:{content:'""',display:"inline-block",pos:"relative",w:"50%",h:"50%",borderRadius:"50%",bg:"currentColor"}}}}),rn=Ge(e=>{var r,a,i,n;return{label:(a=(r=Ke).baseStyle)==null?void 0:a.call(r,e).label,container:(n=(i=Ke).baseStyle)==null?void 0:n.call(i,e).container,control:en(e)}}),an={md:Ge({control:{w:"4",h:"4"},label:{fontSize:"md"}}),lg:Ge({control:{w:"5",h:"5"},label:{fontSize:"lg"}}),sm:Ge({control:{width:"3",height:"3"},label:{fontSize:"sm"}})},on=Zi({baseStyle:rn,sizes:an,defaultProps:{size:"md",colorScheme:"blue"}}),{defineMultiStyleConfig:tn,definePartsStyle:nn}=b(Sa.keys),Te=d("select-bg"),Jr,ln=o({...(Jr=u.baseStyle)==null?void 0:Jr.field,appearance:"none",paddingBottom:"1px",lineHeight:"normal",bg:Te.reference,[Te.variable]:"colors.white",_dark:{[Te.variable]:"colors.gray.700"},"> option, > optgroup":{bg:Te.reference}}),sn=o({width:"6",height:"100%",insetEnd:"2",position:"relative",color:"currentColor",fontSize:"xl",_disabled:{opacity:.5}}),dn=nn({field:ln,icon:sn}),Fe=o({paddingInlineEnd:"8"}),Qr,Zr,ea,ra,aa,oa,ta,ia,cn={lg:{...(Qr=u.sizes)==null?void 0:Qr.lg,field:{...(Zr=u.sizes)==null?void 0:Zr.lg.field,...Fe}},md:{...(ea=u.sizes)==null?void 0:ea.md,field:{...(ra=u.sizes)==null?void 0:ra.md.field,...Fe}},sm:{...(aa=u.sizes)==null?void 0:aa.sm,field:{...(oa=u.sizes)==null?void 0:oa.sm.field,...Fe}},xs:{...(ta=u.sizes)==null?void 0:ta.xs,field:{...(ia=u.sizes)==null?void 0:ia.xs.field,...Fe},icon:{insetEnd:"1"}}},bn=tn({baseStyle:dn,sizes:cn,variants:u.variants,defaultProps:u.defaultProps}),tr=d("skeleton-start-color"),ir=d("skeleton-end-color"),vn=o({[tr.variable]:"colors.gray.100",[ir.variable]:"colors.gray.400",_dark:{[tr.variable]:"colors.gray.800",[ir.variable]:"colors.gray.600"},background:tr.reference,borderColor:ir.reference,opacity:.7,borderRadius:"sm"}),un=h({baseStyle:vn}),nr=d("skip-link-bg"),fn=o({borderRadius:"md",fontWeight:"semibold",_focusVisible:{boxShadow:"outline",padding:"4",position:"fixed",top:"6",insetStart:"6",[nr.variable]:"colors.white",_dark:{[nr.variable]:"colors.gray.700"},bg:nr.reference}}),hn=h({baseStyle:fn}),{defineMultiStyleConfig:mn,definePartsStyle:Ze}=b(xa.keys),Se=d("slider-thumb-size"),xe=d("slider-track-size"),j=d("slider-bg"),gn=o(e=>{const{orientation:r}=e;return{display:"inline-block",position:"relative",cursor:"pointer",_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"},...xr({orientation:r,vertical:{h:"100%"},horizontal:{w:"100%"}})}}),yn=o(e=>({...xr({orientation:e.orientation,horizontal:{h:xe.reference},vertical:{w:xe.reference}}),overflow:"hidden",borderRadius:"sm",[j.variable]:"colors.gray.200",_dark:{[j.variable]:"colors.whiteAlpha.200"},_disabled:{[j.variable]:"colors.gray.300",_dark:{[j.variable]:"colors.whiteAlpha.300"}},bg:j.reference})),pn=o(e=>{const{orientation:r}=e;return{...xr({orientation:r,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:Se.reference,h:Se.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"}}}),Sn=o(e=>{const{colorScheme:r}=e;return{width:"inherit",height:"inherit",[j.variable]:`colors.${r}.500`,_dark:{[j.variable]:`colors.${r}.200`},bg:j.reference}}),xn=Ze(e=>({container:gn(e),track:yn(e),thumb:pn(e),filledTrack:Sn(e)})),$n=Ze({container:{[Se.variable]:"sizes.4",[xe.variable]:"sizes.1"}}),kn=Ze({container:{[Se.variable]:"sizes.3.5",[xe.variable]:"sizes.1"}}),_n=Ze({container:{[Se.variable]:"sizes.2.5",[xe.variable]:"sizes.0.5"}}),wn={lg:$n,md:kn,sm:_n},zn=mn({baseStyle:xn,sizes:wn,defaultProps:{size:"md",colorScheme:"blue"}}),H=f("spinner-size"),Cn=o({width:[H.reference],height:[H.reference]}),An={xs:o({[H.variable]:"sizes.3"}),sm:o({[H.variable]:"sizes.4"}),md:o({[H.variable]:"sizes.6"}),lg:o({[H.variable]:"sizes.8"}),xl:o({[H.variable]:"sizes.12"})},Pn=h({baseStyle:Cn,sizes:An,defaultProps:{size:"md"}}),{defineMultiStyleConfig:Tn,definePartsStyle:Da}=b(so.keys),Fn=o({fontWeight:"medium"}),In=o({opacity:.8,marginBottom:"2"}),Mn=o({verticalAlign:"baseline",fontWeight:"semibold"}),Bn=o({marginEnd:1,w:"3.5",h:"3.5",verticalAlign:"middle"}),En=Da({container:{},label:Fn,helpText:In,number:Mn,icon:Bn}),Dn={md:Da({label:{fontSize:"sm"},helpText:{fontSize:"sm"},number:{fontSize:"2xl"}})},Rn=Tn({baseStyle:En,sizes:Dn,defaultProps:{size:"md"}}),lr=d("kbd-bg"),jn=o({[lr.variable]:"colors.gray.100",_dark:{[lr.variable]:"colors.whiteAlpha.100"},bg:lr.reference,borderRadius:"md",borderWidth:"1px",borderBottomWidth:"3px",fontSize:"0.8em",fontWeight:"bold",lineHeight:"normal",px:"0.4em",whiteSpace:"nowrap"}),Hn=h({baseStyle:jn}),Wn=o({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",cursor:"pointer",textDecoration:"none",outline:"none",color:"inherit",_hover:{textDecoration:"underline"},_focusVisible:{boxShadow:"outline"}}),Vn=h({baseStyle:Wn}),{defineMultiStyleConfig:Ln,definePartsStyle:qn}=b(co.keys),Nn=o({marginEnd:"2",display:"inline",verticalAlign:"text-bottom"}),On=qn({icon:Nn}),Gn=Ln({baseStyle:On}),{defineMultiStyleConfig:Un,definePartsStyle:Yn}=b(bo.keys),A=d("menu-bg"),sr=d("menu-shadow"),Kn=o({[A.variable]:"#fff",[sr.variable]:"shadows.sm",_dark:{[A.variable]:"colors.gray.700",[sr.variable]:"shadows.dark-lg"},color:"inherit",minW:"3xs",py:"2",zIndex:1,borderRadius:"md",borderWidth:"1px",bg:A.reference,boxShadow:sr.reference}),Xn=o({py:"1.5",px:"3",transitionProperty:"background",transitionDuration:"ultra-fast",transitionTimingFunction:"ease-in",_focus:{[A.variable]:"colors.gray.100",_dark:{[A.variable]:"colors.whiteAlpha.100"}},_active:{[A.variable]:"colors.gray.200",_dark:{[A.variable]:"colors.whiteAlpha.200"}},_expanded:{[A.variable]:"colors.gray.100",_dark:{[A.variable]:"colors.whiteAlpha.100"}},_disabled:{opacity:.4,cursor:"not-allowed"},bg:A.reference}),Jn=o({mx:4,my:2,fontWeight:"semibold",fontSize:"sm"}),Qn=o({display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0}),Zn=o({opacity:.6}),el=o({border:0,borderBottom:"1px solid",borderColor:"inherit",my:"2",opacity:.6}),rl=o({transitionProperty:"common",transitionDuration:"normal"}),al=Yn({button:rl,list:Kn,item:Xn,groupTitle:Jn,icon:Qn,command:Zn,divider:el}),ol=Un({baseStyle:al}),{defineMultiStyleConfig:tl,definePartsStyle:pr}=b($a.keys),dr=d("modal-bg"),cr=d("modal-shadow"),il=o({bg:"blackAlpha.600",zIndex:"modal"}),nl=o(e=>{const{isCentered:r,scrollBehavior:a}=e;return{display:"flex",zIndex:"modal",justifyContent:"center",alignItems:r?"center":"flex-start",overflow:a==="inside"?"hidden":"auto",overscrollBehaviorY:"none"}}),ll=o(e=>{const{isCentered:r,scrollBehavior:a}=e;return{borderRadius:"md",color:"inherit",my:r?"auto":"16",mx:r?"auto":void 0,zIndex:"modal",maxH:a==="inside"?"calc(100% - 7.5rem)":void 0,[dr.variable]:"colors.white",[cr.variable]:"shadows.lg",_dark:{[dr.variable]:"colors.gray.700",[cr.variable]:"shadows.dark-lg"},bg:dr.reference,boxShadow:cr.reference}}),sl=o({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),dl=o({position:"absolute",top:"2",insetEnd:"3"}),cl=o(e=>{const{scrollBehavior:r}=e;return{px:"6",py:"2",flex:"1",overflow:r==="inside"?"auto":void 0}}),bl=o({px:"6",py:"4"}),vl=pr(e=>({overlay:il,dialogContainer:S(nl,e),dialog:S(ll,e),header:sl,closeButton:dl,body:S(cl,e),footer:bl}));function w(e){return pr(e==="full"?{dialog:{maxW:"100vw",minH:"$100vh",my:"0",borderRadius:"0"}}:{dialog:{maxW:e}})}var ul={xs:w("xs"),sm:w("sm"),md:w("md"),lg:w("lg"),xl:w("xl"),"2xl":w("2xl"),"3xl":w("3xl"),"4xl":w("4xl"),"5xl":w("5xl"),"6xl":w("6xl"),full:w("full")},fl=tl({baseStyle:vl,sizes:ul,defaultProps:{size:"md"}}),{defineMultiStyleConfig:hl,definePartsStyle:Ra}=b(ka.keys),_r=f("number-input-stepper-width"),ja=f("number-input-input-padding"),ml=I(_r).add("0.5rem").toString(),br=f("number-input-bg"),vr=f("number-input-color"),ur=f("number-input-border-color"),gl=o({[_r.variable]:"sizes.6",[ja.variable]:ml}),yl=o(e=>{var r,a;return(a=(r=S(u.baseStyle,e))==null?void 0:r.field)!=null?a:{}}),pl=o({width:_r.reference}),Sl=o({borderStart:"1px solid",borderStartColor:ur.reference,color:vr.reference,bg:br.reference,[vr.variable]:"colors.chakra-body-text",[ur.variable]:"colors.chakra-border-color",_dark:{[vr.variable]:"colors.whiteAlpha.800",[ur.variable]:"colors.whiteAlpha.300"},_active:{[br.variable]:"colors.gray.200",_dark:{[br.variable]:"colors.whiteAlpha.300"}},_disabled:{opacity:.4,cursor:"not-allowed"}}),xl=Ra(e=>{var r;return{root:gl,field:(r=S(yl,e))!=null?r:{},stepperGroup:pl,stepper:Sl}});function Ie(e){var r,a,i;const n=(r=u.sizes)==null?void 0:r[e],l={lg:"md",md:"md",sm:"sm",xs:"sm"},s=(i=(a=n.field)==null?void 0:a.fontSize)!=null?i:"md",c=Fa.fontSizes[s];return Ra({field:{...n.field,paddingInlineEnd:ja.reference,verticalAlign:"top"},stepper:{fontSize:I(c).multiply(.75).toString(),_first:{borderTopEndRadius:l[e]},_last:{borderBottomEndRadius:l[e],mt:"-1px",borderTopWidth:1}}})}var $l={xs:Ie("xs"),sm:Ie("sm"),md:Ie("md"),lg:Ie("lg")},kl=hl({baseStyle:xl,sizes:$l,variants:u.variants,defaultProps:u.defaultProps}),na,_l=o({...(na=u.baseStyle)==null?void 0:na.field,textAlign:"center"}),wl={lg:o({fontSize:"lg",w:12,h:12,borderRadius:"md"}),md:o({fontSize:"md",w:10,h:10,borderRadius:"md"}),sm:o({fontSize:"sm",w:8,h:8,borderRadius:"sm"}),xs:o({fontSize:"xs",w:6,h:6,borderRadius:"sm"})},la,sa,zl={outline:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.outline,e))==null?void 0:a.field)!=null?i:{}}),flushed:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.flushed,e))==null?void 0:a.field)!=null?i:{}}),filled:o(e=>{var r,a,i;return(i=(a=S((r=u.variants)==null?void 0:r.filled,e))==null?void 0:a.field)!=null?i:{}}),unstyled:(sa=(la=u.variants)==null?void 0:la.unstyled.field)!=null?sa:{}},Cl=h({baseStyle:_l,sizes:wl,variants:zl,defaultProps:u.defaultProps}),{defineMultiStyleConfig:Al,definePartsStyle:Pl}=b(_a.keys),Me=f("popper-bg"),Tl=f("popper-arrow-bg"),da=f("popper-arrow-shadow-color"),Fl=o({zIndex:10}),Il=o({[Me.variable]:"colors.white",bg:Me.reference,[Tl.variable]:Me.reference,[da.variable]:"colors.gray.200",_dark:{[Me.variable]:"colors.gray.700",[da.variable]:"colors.whiteAlpha.300"},width:"xs",border:"1px solid",borderColor:"inherit",borderRadius:"md",boxShadow:"sm",zIndex:"inherit",_focusVisible:{outline:0,boxShadow:"outline"}}),Ml=o({px:3,py:2,borderBottomWidth:"1px"}),Bl=o({px:3,py:2}),El=o({px:3,py:2,borderTopWidth:"1px"}),Dl=o({position:"absolute",borderRadius:"md",top:1,insetEnd:2,padding:2}),Rl=Pl({popper:Fl,content:Il,header:Ml,body:Bl,footer:El,closeButton:Dl}),jl=Al({baseStyle:Rl}),{definePartsStyle:Sr,defineMultiStyleConfig:Hl}=b(vo.keys),fr=d("drawer-bg"),hr=d("drawer-box-shadow");function O(e){return Sr(e==="full"?{dialog:{maxW:"100vw",h:"100vh"}}:{dialog:{maxW:e}})}var Wl=o({bg:"blackAlpha.600",zIndex:"overlay"}),Vl=o({display:"flex",zIndex:"modal",justifyContent:"center"}),Ll=o(e=>{const{isFullHeight:r}=e;return{...r&&{height:"100vh"},zIndex:"modal",maxH:"100vh",color:"inherit",[fr.variable]:"colors.white",[hr.variable]:"shadows.lg",_dark:{[fr.variable]:"colors.gray.700",[hr.variable]:"shadows.dark-lg"},bg:fr.reference,boxShadow:hr.reference}}),ql=o({px:"6",py:"4",fontSize:"xl",fontWeight:"semibold"}),Nl=o({position:"absolute",top:"2",insetEnd:"3"}),Ol=o({px:"6",py:"2",flex:"1",overflow:"auto"}),Gl=o({px:"6",py:"4"}),Ul=Sr(e=>({overlay:Wl,dialogContainer:Vl,dialog:S(Ll,e),header:ql,closeButton:Nl,body:Ol,footer:Gl})),Yl={xs:O("xs"),sm:O("md"),md:O("lg"),lg:O("2xl"),xl:O("4xl"),full:O("full")},Kl=Hl({baseStyle:Ul,sizes:Yl,defaultProps:{size:"xs"}}),{definePartsStyle:Xl,defineMultiStyleConfig:Jl}=b(wa.keys),Ql=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),Zl=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),es=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),rs=Xl({preview:Ql,input:Zl,textarea:es}),as=Jl({baseStyle:rs}),{definePartsStyle:os,defineMultiStyleConfig:ts}=b(uo.keys),Z=d("form-control-color"),is=o({marginStart:"1",[Z.variable]:"colors.red.500",_dark:{[Z.variable]:"colors.red.300"},color:Z.reference}),ns=o({mt:"2",[Z.variable]:"colors.gray.600",_dark:{[Z.variable]:"colors.whiteAlpha.600"},color:Z.reference,lineHeight:"normal",fontSize:"sm"}),ls=os({container:{width:"100%",position:"relative"},requiredIndicator:is,helperText:ns}),ss=ts({baseStyle:ls}),{definePartsStyle:ds,defineMultiStyleConfig:cs}=b(fo.keys),ee=d("form-error-color"),bs=o({[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference,mt:"2",fontSize:"sm",lineHeight:"normal"}),vs=o({marginEnd:"0.5em",[ee.variable]:"colors.red.500",_dark:{[ee.variable]:"colors.red.300"},color:ee.reference}),us=ds({text:bs,icon:vs}),fs=cs({baseStyle:us}),hs=o({fontSize:"md",marginEnd:"3",mb:"2",fontWeight:"medium",transitionProperty:"common",transitionDuration:"normal",opacity:1,_disabled:{opacity:.4}}),ms=h({baseStyle:hs}),gs=o({fontFamily:"heading",fontWeight:"bold"}),ys={"4xl":o({fontSize:["6xl",null,"7xl"],lineHeight:1}),"3xl":o({fontSize:["5xl",null,"6xl"],lineHeight:1}),"2xl":o({fontSize:["4xl",null,"5xl"],lineHeight:[1.2,null,1]}),xl:o({fontSize:["3xl",null,"4xl"],lineHeight:[1.33,null,1.2]}),lg:o({fontSize:["2xl",null,"3xl"],lineHeight:[1.33,null,1.2]}),md:o({fontSize:"xl",lineHeight:1.2}),sm:o({fontSize:"md",lineHeight:1.2}),xs:o({fontSize:"sm",lineHeight:1.2})},ps=h({baseStyle:gs,sizes:ys,defaultProps:{size:"xl"}}),{defineMultiStyleConfig:Ss,definePartsStyle:xs}=b(ho.keys),mr=d("breadcrumb-link-decor"),$s=o({transitionProperty:"common",transitionDuration:"fast",transitionTimingFunction:"ease-out",outline:"none",color:"inherit",textDecoration:mr.reference,[mr.variable]:"none","&:not([aria-current=page])":{cursor:"pointer",_hover:{[mr.variable]:"underline"},_focusVisible:{boxShadow:"outline"}}}),ks=xs({link:$s}),_s=Ss({baseStyle:ks}),ws=o({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"}}}),Ha=o(e=>{const{colorScheme:r,theme:a}=e;if(r==="gray")return{color:t("gray.800","whiteAlpha.900")(e),_hover:{bg:t("gray.100","whiteAlpha.200")(e)},_active:{bg:t("gray.200","whiteAlpha.300")(e)}};const i=ae(`${r}.200`,.12)(a),n=ae(`${r}.200`,.24)(a);return{color:t(`${r}.600`,`${r}.200`)(e),bg:"transparent",_hover:{bg:t(`${r}.50`,i)(e)},_active:{bg:t(`${r}.100`,n)(e)}}}),zs=o(e=>{const{colorScheme:r}=e,a=t("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:r==="gray"?a:"currentColor",".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)":{marginEnd:"-1px"},".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)":{marginBottom:"-1px"},...S(Ha,e)}}),Cs={yellow:{bg:"yellow.400",color:"black",hoverBg:"yellow.500",activeBg:"yellow.600"},cyan:{bg:"cyan.400",color:"black",hoverBg:"cyan.500",activeBg:"cyan.600"}},As=o(e=>{var r;const{colorScheme:a}=e;if(a==="gray"){const v=t("gray.100","whiteAlpha.200")(e);return{bg:v,color:t("gray.800","whiteAlpha.900")(e),_hover:{bg:t("gray.200","whiteAlpha.300")(e),_disabled:{bg:v}},_active:{bg:t("gray.300","whiteAlpha.400")(e)}}}const{bg:i=`${a}.500`,color:n="white",hoverBg:l=`${a}.600`,activeBg:s=`${a}.700`}=(r=Cs[a])!=null?r:{},c=t(i,`${a}.200`)(e);return{bg:c,color:t(n,"gray.800")(e),_hover:{bg:t(l,`${a}.300`)(e),_disabled:{bg:c}},_active:{bg:t(s,`${a}.400`)(e)}}}),Ps=o(e=>{const{colorScheme:r}=e;return{padding:0,height:"auto",lineHeight:"normal",verticalAlign:"baseline",color:t(`${r}.500`,`${r}.200`)(e),_hover:{textDecoration:"underline",_disabled:{textDecoration:"none"}},_active:{color:t(`${r}.700`,`${r}.500`)(e)}}}),Ts=o({bg:"none",color:"inherit",display:"inline",lineHeight:"inherit",m:"0",p:"0"}),Fs={ghost:Ha,outline:zs,solid:As,link:Ps,unstyled:Ts},Is={lg:o({h:"12",minW:"12",fontSize:"lg",px:"6"}),md:o({h:"10",minW:"10",fontSize:"md",px:"4"}),sm:o({h:"8",minW:"8",fontSize:"sm",px:"3"}),xs:o({h:"6",minW:"6",fontSize:"xs",px:"2"})},Ms=h({baseStyle:ws,variants:Fs,sizes:Is,defaultProps:{variant:"solid",size:"md",colorScheme:"gray"}}),{definePartsStyle:q,defineMultiStyleConfig:Bs}=b(mo.keys),Xe=d("card-bg"),B=d("card-padding"),Wa=d("card-shadow"),Ue=d("card-radius"),Va=d("card-border-width","0"),La=d("card-border-color"),Es=q({container:{[Xe.variable]:"colors.chakra-body-bg",backgroundColor:Xe.reference,boxShadow:Wa.reference,borderRadius:Ue.reference,color:"chakra-body-text",borderWidth:Va.reference,borderColor:La.reference},body:{padding:B.reference,flex:"1 1 0%"},header:{padding:B.reference},footer:{padding:B.reference}}),Ds={sm:q({container:{[Ue.variable]:"radii.base",[B.variable]:"space.3"}}),md:q({container:{[Ue.variable]:"radii.md",[B.variable]:"space.5"}}),lg:q({container:{[Ue.variable]:"radii.xl",[B.variable]:"space.7"}})},Rs={elevated:q({container:{[Wa.variable]:"shadows.base",_dark:{[Xe.variable]:"colors.gray.700"}}}),outline:q({container:{[Va.variable]:"1px",[La.variable]:"colors.chakra-border-color"}}),filled:q({container:{[Xe.variable]:"colors.chakra-subtle-bg"}}),unstyled:{body:{[B.variable]:0},header:{[B.variable]:0},footer:{[B.variable]:0}}},js=Bs({baseStyle:Es,variants:Rs,sizes:Ds,defaultProps:{variant:"elevated",size:"md"}}),ge=f("close-button-size"),se=f("close-button-bg"),Hs=o({w:[ge.reference],h:[ge.reference],borderRadius:"md",transitionProperty:"common",transitionDuration:"normal",_disabled:{opacity:.4,cursor:"not-allowed",boxShadow:"none"},_hover:{[se.variable]:"colors.blackAlpha.100",_dark:{[se.variable]:"colors.whiteAlpha.100"}},_active:{[se.variable]:"colors.blackAlpha.200",_dark:{[se.variable]:"colors.whiteAlpha.200"}},_focusVisible:{boxShadow:"outline"},bg:se.reference}),Ws={lg:o({[ge.variable]:"sizes.10",fontSize:"md"}),md:o({[ge.variable]:"sizes.8",fontSize:"xs"}),sm:o({[ge.variable]:"sizes.6",fontSize:"2xs"})},Vs=h({baseStyle:Hs,sizes:Ws,defaultProps:{size:"md"}}),{variants:Ls,defaultProps:qs}=he,Ns=o({fontFamily:"mono",fontSize:"sm",px:"0.2em",borderRadius:"sm",bg:g.bg.reference,color:g.color.reference,boxShadow:g.shadow.reference}),Os=h({baseStyle:Ns,variants:Ls,defaultProps:qs}),Gs=o({w:"100%",mx:"auto",maxW:"prose",px:"4"}),Us=h({baseStyle:Gs}),Ys=o({opacity:.6,borderColor:"inherit"}),Ks=o({borderStyle:"solid"}),Xs=o({borderStyle:"dashed"}),Js={solid:Ks,dashed:Xs},Qs=h({baseStyle:Ys,variants:Js,defaultProps:{variant:"solid"}}),{definePartsStyle:Zs,defineMultiStyleConfig:e0}=b(za.keys),r0=o({borderTopWidth:"1px",borderColor:"inherit",_last:{borderBottomWidth:"1px"}}),a0=o({transitionProperty:"common",transitionDuration:"normal",fontSize:"md",_focusVisible:{boxShadow:"outline"},_hover:{bg:"blackAlpha.50"},_disabled:{opacity:.4,cursor:"not-allowed"},px:"4",py:"2"}),o0=o({pt:"2",px:"4",pb:"5"}),t0=o({fontSize:"1.25em"}),i0=Zs({container:r0,button:a0,panel:o0,icon:t0}),n0=e0({baseStyle:i0}),{definePartsStyle:ke,defineMultiStyleConfig:l0}=b(go.keys),k=d("alert-fg"),E=d("alert-bg"),s0=ke({container:{bg:E.reference,px:"4",py:"3"},title:{fontWeight:"bold",lineHeight:"6",marginEnd:"2"},description:{lineHeight:"6"},icon:{color:k.reference,flexShrink:0,marginEnd:"3",w:"5",h:"6"},spinner:{color:k.reference,flexShrink:0,marginEnd:"3",w:"5",h:"5"}});function wr(e){const{theme:r,colorScheme:a}=e,i=ae(`${a}.200`,.16)(r);return{light:`colors.${a}.100`,dark:i}}var d0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark}}}}),c0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark},paddingStart:"3",borderStartWidth:"4px",borderStartColor:k.reference}}}),b0=ke(e=>{const{colorScheme:r}=e,a=wr(e);return{container:{[k.variable]:`colors.${r}.500`,[E.variable]:a.light,_dark:{[k.variable]:`colors.${r}.200`,[E.variable]:a.dark},pt:"2",borderTopWidth:"4px",borderTopColor:k.reference}}}),v0=ke(e=>{const{colorScheme:r}=e;return{container:{[k.variable]:"colors.white",[E.variable]:`colors.${r}.500`,_dark:{[k.variable]:"colors.gray.900",[E.variable]:`colors.${r}.200`},color:k.reference}}}),u0={subtle:d0,"left-accent":c0,"top-accent":b0,solid:v0},f0=l0({baseStyle:s0,variants:u0,defaultProps:{variant:"subtle",colorScheme:"blue"}}),{definePartsStyle:qa,defineMultiStyleConfig:h0}=b(yo.keys),re=d("avatar-border-color"),ye=d("avatar-bg"),$e=d("avatar-font-size"),oe=d("avatar-size"),m0=o({borderRadius:"full",border:"0.2em solid",borderColor:re.reference,[re.variable]:"white",_dark:{[re.variable]:"colors.gray.800"}}),g0=o({bg:ye.reference,fontSize:$e.reference,width:oe.reference,height:oe.reference,lineHeight:"1",[ye.variable]:"colors.gray.200",_dark:{[ye.variable]:"colors.whiteAlpha.400"}}),y0=o(e=>{const{name:r,theme:a}=e,i=r?_t({string:r}):"colors.gray.400",n=$t(i)(a);let l="white";return n||(l="gray.800"),{bg:ye.reference,fontSize:$e.reference,color:l,borderColor:re.reference,verticalAlign:"top",width:oe.reference,height:oe.reference,"&:not([data-loaded])":{[ye.variable]:i},[re.variable]:"colors.white",_dark:{[re.variable]:"colors.gray.800"}}}),p0=o({fontSize:$e.reference,lineHeight:"1"}),S0=qa(e=>({badge:S(m0,e),excessLabel:S(g0,e),container:S(y0,e),label:p0}));function R(e){const r=e!=="100%"?Ma[e]:void 0;return qa({container:{[oe.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`},excessLabel:{[oe.variable]:r??e,[$e.variable]:`calc(${r??e} / 2.5)`}})}var x0={"2xs":R(4),xs:R(6),sm:R(8),md:R(12),lg:R(16),xl:R(24),"2xl":R(32),full:R("100%")},$0=h0({baseStyle:S0,sizes:x0,defaultProps:{size:"md"}}),k0={Accordion:n0,Alert:f0,Avatar:$0,Badge:he,Breadcrumb:_s,Button:Ms,Checkbox:Ke,CloseButton:Vs,Code:Os,Container:Us,Divider:Qs,Drawer:Kl,Editable:as,Form:ss,FormError:fs,FormLabel:ms,Heading:ps,Input:u,Kbd:Hn,Link:Vn,List:Gn,Menu:ol,Modal:fl,NumberInput:kl,PinInput:Cl,Popover:jl,Progress:Ni,Radio:on,Select:bn,Skeleton:un,SkipLink:hn,Slider:zn,Spinner:Pn,Stat:Rn,Switch:Wt,Table:Ut,Tabs:si,Tag:xi,Textarea:Mi,Tooltip:Di,Card:js,Stepper:tt},_0={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-inverse-text":{_light:"white",_dark:"gray.800"},"chakra-subtle-bg":{_light:"gray.100",_dark:"gray.700"},"chakra-subtle-text":{_light:"gray.600",_dark:"gray.400"},"chakra-placeholder-color":{_light:"gray.500",_dark:"whiteAlpha.400"}}},w0={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"}}},z0="ltr",C0={useSystemColorMode:!1,initialColorMode:"light",cssVarPrefix:"chakra"},Na={semanticTokens:_0,direction:z0,...rt,components:k0,styles:w0,config:C0};function ue(e){return typeof e=="function"}function A0(...e){return r=>e.reduce((a,i)=>i(a),r)}var P0=e=>function(...a){let i=[...a],n=a[a.length-1];return Fo(n)&&i.length>1?i=i.slice(0,i.length-1):n=e,A0(...i.map(l=>s=>ue(l)?l(s):F0(s,l)))(n)},T0=P0(Na);function F0(...e){return fa({},...e,Oa)}function Oa(e,r,a,i){if((ue(e)||ue(r))&&Object.prototype.hasOwnProperty.call(i,a))return(...n)=>{const l=ue(e)?e(...n):e,s=ue(r)?r(...n):r;return fa({},l,s,Oa)}}function I0(e={}){const{strict:r=!0,errorMessage:a="useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",name:i}=e,n=y.createContext(void 0);n.displayName=i;function l(){var s;const c=y.useContext(n);if(!c&&r){const v=new Error(a);throw v.name="ContextError",(s=Error.captureStackTrace)==null||s.call(Error,v,l),v}return c}return[n.Provider,l,n]}function M0(e){const{cssVarsRoot:r,theme:a,children:i}=e,n=y.useMemo(()=>Za(a),[a]);return m.jsxs(eo,{theme:n,children:[m.jsx(B0,{root:r}),i]})}function B0({root:e=":host, :root"}){const r=[e,"[data-theme]"].join(",");return m.jsx(Je,{styles:a=>({[r]:a.__cssVars})})}I0({name:"StylesContext",errorMessage:"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` "});function E0(){const{colorMode:e}=ro();return m.jsx(Je,{styles:r=>{const a=ao(r,"styles.global"),i=oo(a,{theme:r,colorMode:e});return i?to(i)(r):void 0}})}var Ga=y.createContext({getDocument(){return document},getWindow(){return window}});Ga.displayName="EnvironmentContext";function Ua(e){const{children:r,environment:a,disabled:i}=e,n=y.useRef(null),l=y.useMemo(()=>a||{getDocument:()=>{var c,v;return(v=(c=n.current)==null?void 0:c.ownerDocument)!=null?v:document},getWindow:()=>{var c,v;return(v=(c=n.current)==null?void 0:c.ownerDocument.defaultView)!=null?v:window}},[a]),s=!i||!a;return m.jsxs(Ga.Provider,{value:l,children:[r,s&&m.jsx("span",{id:"__chakra_env",hidden:!0,ref:n})]})}Ua.displayName="EnvironmentProvider";var D0=e=>{const{children:r,colorModeManager:a,portalZIndex:i,resetScope:n,resetCSS:l=!0,theme:s={},environment:c,cssVarsRoot:v,disableEnvironment:x,disableGlobalStyle:T}=e,N=m.jsx(Ua,{environment:c,disabled:x,children:r});return m.jsx(M0,{theme:s,cssVarsRoot:v,children:m.jsxs(Ta,{colorModeManager:a,options:s.config,children:[l?m.jsx(zo,{scope:n}):m.jsx(wo,{}),!T&&m.jsx(E0,{}),i?m.jsx(po,{zIndex:i,children:N}):N]})})},R0=e=>function({children:a,theme:i=e,toastOptions:n,...l}){return m.jsxs(D0,{theme:i,...l,children:[m.jsx(So,{value:n==null?void 0:n.defaultOptions,children:a}),m.jsx(xo,{...n})]})},j0=R0(Na);function _(e,r,a=!1){e=String(e),r=String(r);const i=Array.from({length:21},(s,c)=>c*50),n=[0,5,10,15,20,25,30,35,40,45,50,55,59,64,68,73,77,82,86,95,100];return i.reduce((s,c,v)=>{const x=a?n[v]/100:1,T=a?50:n[i.length-1-v];return s[c]=`hsl(${e} ${r}% ${T}% / ${x})`,s},{})}const Be={H:220,S:16},Ee={H:250,S:42},De={H:47,S:42},Re={H:28,S:42},je={H:113,S:42},He={H:0,S:42},H0={base:_(Be.H,Be.S),baseAlpha:_(Be.H,Be.S,!0),accent:_(Ee.H,Ee.S),accentAlpha:_(Ee.H,Ee.S,!0),working:_(De.H,De.S),workingAlpha:_(De.H,De.S,!0),warning:_(Re.H,Re.S),warningAlpha:_(Re.H,Re.S,!0),ok:_(je.H,je.S),okAlpha:_(je.H,je.S,!0),error:_(He.H,He.S),errorAlpha:_(He.H,He.S,!0)},{definePartsStyle:W0,defineMultiStyleConfig:V0}=b(za.keys),L0=o({border:"none"}),q0=o(e=>{const{colorScheme:r}=e;return{fontWeight:"600",fontSize:"sm",border:"none",borderRadius:"base",bg:t(`${r}.200`,`${r}.700`)(e),color:t(`${r}.900`,`${r}.100`)(e),_hover:{bg:t(`${r}.250`,`${r}.650`)(e)},_expanded:{bg:t(`${r}.250`,`${r}.650`)(e),borderBottomRadius:"none",_hover:{bg:t(`${r}.300`,`${r}.600`)(e)}}}}),N0=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.100`,`${r}.800`)(e),borderRadius:"base",borderTopRadius:"none"}}),O0=o({}),G0=W0(e=>({container:L0,button:q0(e),panel:N0(e),icon:O0})),U0=V0({variants:{invokeAI:G0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),Y0=o(e=>{const{colorScheme:r}=e;if(r==="base"){const n={bg:t("base.150","base.700")(e),color:t("base.300","base.500")(e),svg:{fill:t("base.500","base.500")(e)},opacity:1},l={bg:"none",color:t("base.300","base.500")(e),svg:{fill:t("base.500","base.500")(e)},opacity:1};return{bg:t("base.250","base.600")(e),color:t("base.850","base.100")(e),borderRadius:"base",svg:{fill:t("base.850","base.100")(e)},_hover:{bg:t("base.300","base.500")(e),color:t("base.900","base.50")(e),svg:{fill:t("base.900","base.50")(e)},_disabled:n},_disabled:n,'&[data-progress="true"]':{...l,_hover:l}}}const a={bg:t(`${r}.250`,`${r}.700`)(e),color:t(`${r}.50`,`${r}.500`)(e),svg:{fill:t(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:1,filter:t(void 0,"saturate(65%)")(e)},i={color:t(`${r}.50`,`${r}.500`)(e),svg:{fill:t(`${r}.50`,`${r}.500`)(e),filter:"unset"},opacity:.7,filter:t(void 0,"saturate(65%)")(e)};return{bg:t(`${r}.400`,`${r}.600`)(e),color:t("base.50","base.100")(e),borderRadius:"base",svg:{fill:t("base.50","base.100")(e)},_disabled:a,_hover:{bg:t(`${r}.500`,`${r}.500`)(e),color:t("white","base.50")(e),svg:{fill:t("white","base.50")(e)},_disabled:a},'&[data-progress="true"]':{...i,_hover:i}}}),K0=o(e=>{const{colorScheme:r}=e,a=t("gray.200","whiteAlpha.300")(e);return{border:"1px solid",borderColor:r==="gray"?a:"currentColor",".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)":{marginEnd:"-1px"},".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)":{marginBottom:"-1px"}}}),X0=h({variants:{invokeAI:Y0,invokeAIOutline:K0},defaultProps:{variant:"invokeAI",colorScheme:"base"}}),{definePartsStyle:J0,defineMultiStyleConfig:Q0}=b(pa.keys),Z0=o(e=>{const{colorScheme:r}=e;return{bg:t("base.200","base.700")(e),borderColor:t("base.300","base.600")(e),color:t("base.900","base.100")(e),_checked:{bg:t(`${r}.300`,`${r}.500`)(e),borderColor:t(`${r}.300`,`${r}.500`)(e),color:t(`${r}.900`,`${r}.100`)(e),_hover:{bg:t(`${r}.400`,`${r}.500`)(e),borderColor:t(`${r}.400`,`${r}.500`)(e)},_disabled:{borderColor:"transparent",bg:"whiteAlpha.300",color:"whiteAlpha.500"}},_indeterminate:{bg:t(`${r}.300`,`${r}.600`)(e),borderColor:t(`${r}.300`,`${r}.600`)(e),color:t(`${r}.900`,`${r}.100`)(e)},_disabled:{bg:"whiteAlpha.100",borderColor:"transparent"},_focusVisible:{boxShadow:"none",outline:"none"},_invalid:{borderColor:t("error.600","error.300")(e)}}}),ed=J0(e=>({control:Z0(e)})),rd=Q0({variants:{invokeAI:ed},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{definePartsStyle:ad,defineMultiStyleConfig:od}=b(wa.keys),td=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal"}),id=o(e=>({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6},"::selection":{color:t("accent.900","accent.50")(e),bg:t("accent.200","accent.400")(e)}})),nd=o({borderRadius:"md",py:"1",transitionProperty:"common",transitionDuration:"normal",width:"full",_focusVisible:{boxShadow:"outline"},_placeholder:{opacity:.6}}),ld=ad(e=>({preview:td,input:id(e),textarea:nd})),sd=od({variants:{invokeAI:ld},defaultProps:{size:"sm",variant:"invokeAI"}}),dd=o(e=>({fontSize:"sm",marginEnd:0,mb:1,fontWeight:"400",transitionProperty:"common",transitionDuration:"normal",whiteSpace:"nowrap",_disabled:{opacity:.4},color:t("base.700","base.300")(e),_invalid:{color:t("error.500","error.300")(e)}})),cd=h({variants:{invokeAI:dd},defaultProps:{variant:"invokeAI"}}),er=e=>({outline:"none",borderWidth:2,borderStyle:"solid",borderColor:t("base.200","base.800")(e),bg:t("base.50","base.900")(e),borderRadius:"base",color:t("base.900","base.100")(e),boxShadow:"none",_hover:{borderColor:t("base.300","base.600")(e)},_focus:{borderColor:t("accent.200","accent.600")(e),boxShadow:"none",_hover:{borderColor:t("accent.300","accent.500")(e)}},_invalid:{borderColor:t("error.300","error.600")(e),boxShadow:"none",_hover:{borderColor:t("error.400","error.500")(e)}},_disabled:{borderColor:t("base.300","base.700")(e),bg:t("base.300","base.700")(e),color:t("base.600","base.400")(e),_hover:{borderColor:t("base.300","base.700")(e)}},_placeholder:{color:t("base.700","base.400")(e)},"::selection":{bg:t("accent.200","accent.400")(e)}}),{definePartsStyle:bd,defineMultiStyleConfig:vd}=b(ga.keys),ud=bd(e=>({field:er(e)})),fd=vd({variants:{invokeAI:ud},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:hd,definePartsStyle:md}=b($a.keys),gd=o(e=>({bg:t("blackAlpha.700","blackAlpha.700")(e)})),yd=o({}),pd=o(()=>({layerStyle:"first",maxH:"80vh"})),Sd=o(()=>({fontWeight:"600",fontSize:"lg",layerStyle:"first",borderTopRadius:"base",borderInlineEndRadius:"base"})),xd=o({}),$d=o({overflowY:"scroll"}),kd=o({}),_d=md(e=>({overlay:gd(e),dialogContainer:yd,dialog:pd(),header:Sd(),closeButton:xd,body:$d,footer:kd})),wd=hd({variants:{invokeAI:_d},defaultProps:{variant:"invokeAI",size:"lg"}}),{defineMultiStyleConfig:zd,definePartsStyle:Cd}=b(ka.keys),Ad=o(e=>({height:8})),Pd=o(e=>({border:"none",fontWeight:"600",height:"auto",py:1,ps:2,pe:6,...er(e)})),Td=o(e=>({display:"flex"})),Fd=o(e=>({border:"none",px:2,py:0,mx:-2,my:0,svg:{color:t("base.700","base.300")(e),width:2.5,height:2.5,_hover:{color:t("base.900","base.100")(e)}}})),Id=Cd(e=>({root:Ad(e),field:Pd(e),stepperGroup:Td(e),stepper:Fd(e)})),Md=zd({variants:{invokeAI:Id},defaultProps:{size:"sm",variant:"invokeAI"}}),{defineMultiStyleConfig:Bd,definePartsStyle:Ed}=b(_a.keys),Dd=f("popper-bg"),Rd=f("popper-arrow-bg"),jd=f("popper-arrow-shadow-color"),Hd=o(e=>({[Rd.variable]:t("colors.base.100","colors.base.800")(e),[Dd.variable]:t("colors.base.100","colors.base.800")(e),[jd.variable]:t("colors.base.400","colors.base.600")(e),minW:"unset",width:"unset",p:4,bg:t("base.100","base.800")(e),border:"none",shadow:"dark-lg"})),Wd=Ed(e=>({content:Hd(e)})),Vd=Bd({variants:{invokeAI:Wd},defaultProps:{variant:"invokeAI"}}),{defineMultiStyleConfig:Ld,definePartsStyle:qd}=b(ya.keys),Nd=o(e=>({bg:"accentAlpha.700"})),Od=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.200`,`${r}.700`)(e)}}),Gd=qd(e=>({filledTrack:Nd(e),track:Od(e)})),Ud=Ld({variants:{invokeAI:Gd},defaultProps:{variant:"invokeAI"}}),Yd={"::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none"},{definePartsStyle:Kd,defineMultiStyleConfig:Xd}=b(Sa.keys),Jd=o(e=>({color:t("base.200","base.300")(e)})),Qd=o(e=>({fontWeight:"600",...er(e)})),Zd=Kd(e=>({field:Qd(e),icon:Jd(e)})),ec=Xd({variants:{invokeAI:Zd},defaultProps:{size:"sm",variant:"invokeAI"}}),ca=d("skeleton-start-color"),ba=d("skeleton-end-color"),rc=o({borderRadius:"base",maxW:"full",maxH:"full",_light:{[ca.variable]:"colors.base.250",[ba.variable]:"colors.base.450"},_dark:{[ca.variable]:"colors.base.700",[ba.variable]:"colors.base.500"}}),ac=h({variants:{invokeAI:rc},defaultProps:{variant:"invokeAI"}}),{definePartsStyle:oc,defineMultiStyleConfig:tc}=b(xa.keys),ic=o(e=>({bg:t("base.400","base.600")(e),h:1.5})),nc=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.400`,`${r}.600`)(e),h:1.5}}),lc=o(e=>({w:e.orientation==="horizontal"?2:4,h:e.orientation==="horizontal"?4:2,bg:t("base.50","base.100")(e)})),sc=o(e=>({fontSize:"2xs",fontWeight:"500",color:t("base.700","base.400")(e),mt:2,insetInlineStart:"unset"})),dc=oc(e=>({container:{_disabled:{opacity:.6,cursor:"default",pointerEvents:"none"}},track:ic(e),filledTrack:nc(e),thumb:lc(e),mark:sc(e)})),cc=tc({variants:{invokeAI:dc},defaultProps:{variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:bc,definePartsStyle:vc}=b(ha.keys),uc=o(e=>{const{colorScheme:r}=e;return{bg:t("base.300","base.600")(e),_focusVisible:{boxShadow:"none"},_checked:{bg:t(`${r}.400`,`${r}.500`)(e)}}}),fc=o(e=>{const{colorScheme:r}=e;return{bg:t(`${r}.50`,`${r}.50`)(e)}}),hc=vc(e=>({container:{},track:uc(e),thumb:fc(e)})),mc=bc({variants:{invokeAI:hc},defaultProps:{size:"md",variant:"invokeAI",colorScheme:"accent"}}),{defineMultiStyleConfig:gc,definePartsStyle:Ya}=b(ma.keys),yc=o(e=>({display:"flex",columnGap:4})),pc=o(e=>({})),Sc=o(e=>{const{colorScheme:r}=e;return{display:"flex",flexDirection:"column",gap:1,color:t("base.700","base.400")(e),button:{fontSize:"sm",padding:2,borderRadius:"base",textShadow:t("0 0 0.3rem var(--invokeai-colors-accent-100)","0 0 0.3rem var(--invokeai-colors-accent-900)")(e),svg:{fill:t("base.700","base.300")(e)},_selected:{bg:t("accent.400","accent.600")(e),color:t("base.50","base.100")(e),svg:{fill:t("base.50","base.100")(e),filter:t(`drop-shadow(0px 0px 0.3rem var(--invokeai-colors-${r}-600))`,`drop-shadow(0px 0px 0.3rem var(--invokeai-colors-${r}-800))`)(e)},_hover:{bg:t("accent.500","accent.500")(e),color:t("white","base.50")(e),svg:{fill:t("white","base.50")(e)}}},_hover:{bg:t("base.100","base.800")(e),color:t("base.900","base.50")(e),svg:{fill:t("base.800","base.100")(e)}}}}}),xc=o(e=>({padding:0,height:"100%"})),$c=Ya(e=>({root:yc(e),tab:pc(e),tablist:Sc(e),tabpanel:xc(e)})),kc=Ya(e=>({tab:{borderTopRadius:"base",px:4,py:1,fontSize:"sm",color:t("base.600","base.400")(e),fontWeight:500,_selected:{color:t("accent.600","accent.400")(e)}},tabpanel:{p:0,pt:4,w:"full",h:"full"},tabpanels:{w:"full",h:"full"}})),_c=gc({variants:{line:kc,appTabs:$c},defaultProps:{variant:"appTabs",colorScheme:"accent"}}),wc=o(e=>({color:t("base.500","base.400")(e)})),zc=h({variants:{subtext:wc}}),Cc=o(e=>({...er(e),"::-webkit-scrollbar":{display:"initial"},"::-webkit-resizer":{backgroundImage:`linear-gradient(135deg, var(--invokeai-colors-base-50) 0%, var(--invokeai-colors-base-50) 70%, var(--invokeai-colors-base-200) 70%, @@ -307,4 +307,4 @@ import{x as m,h1 as Ze,w as y,Z as Ya,h2 as Za,a8 as ua,ac as d,h3 as b,h4 as o, var(--invokeai-colors-base-900) 0%, var(--invokeai-colors-base-900) 70%, var(--invokeai-colors-base-800) 70%, - var(--invokeai-colors-base-800) 100%)`}}},p:2})),Ac=h({variants:{invokeAI:Cc},defaultProps:{size:"md",variant:"invokeAI"}}),Pc=f("popper-arrow-bg"),Tc=o(e=>({borderRadius:"base",shadow:"dark-lg",bg:t("base.700","base.200")(e),[Pc.variable]:t("colors.base.700","colors.base.200")(e),pb:1.5})),Fc=h({baseStyle:Tc}),va={backgroundColor:"accentAlpha.150 !important",borderColor:"accentAlpha.700 !important",borderRadius:"base !important",borderStyle:"dashed !important",_dark:{borderColor:"accent.400 !important"}},Ic={".react-flow__nodesselection-rect":{...va,padding:"1rem !important",boxSizing:"content-box !important",transform:"translate(-1rem, -1rem) !important"},".react-flow__selection":va},Mc={config:{cssVarPrefix:"invokeai",initialColorMode:"dark",useSystemColorMode:!1},layerStyles:{body:{bg:"base.50",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.50"}},first:{bg:"base.100",color:"base.900",".chakra-ui-dark &":{bg:"base.850",color:"base.100"}},second:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.800",color:"base.100"}},third:{bg:"base.300",color:"base.900",".chakra-ui-dark &":{bg:"base.750",color:"base.100"}},nodeBody:{bg:"base.100",color:"base.900",".chakra-ui-dark &":{bg:"base.800",color:"base.100"}},nodeHeader:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.100"}},nodeFooter:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.100"}}},styles:{global:()=>({layerStyle:"body","*":{...Kd},...Ic})},direction:"ltr",fonts:{body:"'Inter Variable', sans-serif"},shadows:{light:{accent:"0 0 10px 0 var(--invokeai-colors-accent-300)",accentHover:"0 0 10px 0 var(--invokeai-colors-accent-400)",ok:"0 0 7px var(--invokeai-colors-ok-600)",working:"0 0 7px var(--invokeai-colors-working-600)",error:"0 0 7px var(--invokeai-colors-error-600)"},dark:{accent:"0 0 10px 0 var(--invokeai-colors-accent-600)",accentHover:"0 0 10px 0 var(--invokeai-colors-accent-500)",ok:"0 0 7px var(--invokeai-colors-ok-400)",working:"0 0 7px var(--invokeai-colors-working-400)",error:"0 0 7px var(--invokeai-colors-error-400)"},selected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 4px var(--invokeai-colors-accent-400)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 4px var(--invokeai-colors-accent-500)"},hoverSelected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 4px var(--invokeai-colors-accent-500)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 4px var(--invokeai-colors-accent-400)"},hoverUnselected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 3px var(--invokeai-colors-accent-500)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 3px var(--invokeai-colors-accent-400)"},nodeSelected:{light:"0 0 0 3px var(--invokeai-colors-accent-400)",dark:"0 0 0 3px var(--invokeai-colors-accent-500)"},nodeHovered:{light:"0 0 0 2px var(--invokeai-colors-accent-500)",dark:"0 0 0 2px var(--invokeai-colors-accent-400)"},nodeHoveredSelected:{light:"0 0 0 3px var(--invokeai-colors-accent-500)",dark:"0 0 0 3px var(--invokeai-colors-accent-400)"},nodeInProgress:{light:"0 0 0 2px var(--invokeai-colors-accent-500), 0 0 10px 2px var(--invokeai-colors-accent-600)",dark:"0 0 0 2px var(--invokeai-colors-yellow-400), 0 0 20px 2px var(--invokeai-colors-orange-700)"}},colors:H0,components:{Button:Y0,Input:fd,Editable:sd,Textarea:Ac,Tabs:_c,Progress:Ud,Accordion:U0,FormLabel:cd,Switch:mc,NumberInput:Md,Select:ec,Skeleton:ac,Slider:cc,Popover:Vd,Modal:wd,Checkbox:rd,Menu:$o,Text:zc,Tooltip:Fc}};const Bc=()=>y.useMemo(()=>({colorScheme:"dark",fontFamily:"'Inter Variable', sans-serif",components:{ScrollArea:{defaultProps:{scrollbarSize:10},styles:{scrollbar:{"&:hover":{backgroundColor:"var(--invokeai-colors-baseAlpha-300)"}},thumb:{backgroundColor:"var(--invokeai-colors-baseAlpha-300)"}}}}}),[]),Ec=Pa("@@invokeai-color-mode");function Dc({children:e}){const{i18n:r}=ko(),a=r.dir(),i=y.useMemo(()=>T0({...Mc,direction:a}),[a]);y.useEffect(()=>{document.body.dir=a},[a]);const n=Bc();return m.jsx(_o,{theme:n,children:m.jsx(j0,{theme:i,colorModeManager:Ec,children:e})})}const Hc=y.memo(Dc);export{Hc as default}; + var(--invokeai-colors-base-800) 100%)`}}},p:2})),Ac=h({variants:{invokeAI:Cc},defaultProps:{size:"md",variant:"invokeAI"}}),Pc=f("popper-arrow-bg"),Tc=o(e=>({borderRadius:"base",shadow:"dark-lg",bg:t("base.700","base.200")(e),[Pc.variable]:t("colors.base.700","colors.base.200")(e),pb:1.5})),Fc=h({baseStyle:Tc}),va={backgroundColor:"accentAlpha.150 !important",borderColor:"accentAlpha.700 !important",borderRadius:"base !important",borderStyle:"dashed !important",_dark:{borderColor:"accent.400 !important"}},Ic={".react-flow__nodesselection-rect":{...va,padding:"1rem !important",boxSizing:"content-box !important",transform:"translate(-1rem, -1rem) !important"},".react-flow__selection":va},Mc={config:{cssVarPrefix:"invokeai",initialColorMode:"dark",useSystemColorMode:!1},layerStyles:{body:{bg:"base.50",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.50"}},first:{bg:"base.100",color:"base.900",".chakra-ui-dark &":{bg:"base.850",color:"base.100"}},second:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.800",color:"base.100"}},third:{bg:"base.300",color:"base.900",".chakra-ui-dark &":{bg:"base.750",color:"base.100"}},nodeBody:{bg:"base.100",color:"base.900",".chakra-ui-dark &":{bg:"base.800",color:"base.100"}},nodeHeader:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.100"}},nodeFooter:{bg:"base.200",color:"base.900",".chakra-ui-dark &":{bg:"base.900",color:"base.100"}}},styles:{global:()=>({layerStyle:"body","*":{...Yd},...Ic})},direction:"ltr",fonts:{body:"'Inter Variable', sans-serif"},shadows:{light:{accent:"0 0 10px 0 var(--invokeai-colors-accent-300)",accentHover:"0 0 10px 0 var(--invokeai-colors-accent-400)",ok:"0 0 7px var(--invokeai-colors-ok-600)",working:"0 0 7px var(--invokeai-colors-working-600)",error:"0 0 7px var(--invokeai-colors-error-600)"},dark:{accent:"0 0 10px 0 var(--invokeai-colors-accent-600)",accentHover:"0 0 10px 0 var(--invokeai-colors-accent-500)",ok:"0 0 7px var(--invokeai-colors-ok-400)",working:"0 0 7px var(--invokeai-colors-working-400)",error:"0 0 7px var(--invokeai-colors-error-400)"},selected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 4px var(--invokeai-colors-accent-400)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 4px var(--invokeai-colors-accent-500)"},hoverSelected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 4px var(--invokeai-colors-accent-500)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 4px var(--invokeai-colors-accent-400)"},hoverUnselected:{light:"0px 0px 0px 1px var(--invokeai-colors-base-150), 0px 0px 0px 3px var(--invokeai-colors-accent-500)",dark:"0px 0px 0px 1px var(--invokeai-colors-base-900), 0px 0px 0px 3px var(--invokeai-colors-accent-400)"},nodeSelected:{light:"0 0 0 3px var(--invokeai-colors-accent-400)",dark:"0 0 0 3px var(--invokeai-colors-accent-500)"},nodeHovered:{light:"0 0 0 2px var(--invokeai-colors-accent-500)",dark:"0 0 0 2px var(--invokeai-colors-accent-400)"},nodeHoveredSelected:{light:"0 0 0 3px var(--invokeai-colors-accent-500)",dark:"0 0 0 3px var(--invokeai-colors-accent-400)"},nodeInProgress:{light:"0 0 0 2px var(--invokeai-colors-accent-500), 0 0 10px 2px var(--invokeai-colors-accent-600)",dark:"0 0 0 2px var(--invokeai-colors-yellow-400), 0 0 20px 2px var(--invokeai-colors-orange-700)"}},colors:H0,components:{Button:X0,Input:fd,Editable:sd,Textarea:Ac,Tabs:_c,Progress:Ud,Accordion:U0,FormLabel:cd,Switch:mc,NumberInput:Md,Select:ec,Skeleton:ac,Slider:cc,Popover:Vd,Modal:wd,Checkbox:rd,Menu:$o,Text:zc,Tooltip:Fc}};const Bc=()=>y.useMemo(()=>({colorScheme:"dark",fontFamily:"'Inter Variable', sans-serif",components:{ScrollArea:{defaultProps:{scrollbarSize:10},styles:{scrollbar:{"&:hover":{backgroundColor:"var(--invokeai-colors-baseAlpha-300)"}},thumb:{backgroundColor:"var(--invokeai-colors-baseAlpha-300)"}}}}}),[]),Ec=Pa("@@invokeai-color-mode");function Dc({children:e}){const{i18n:r}=ko(),a=r.dir(),i=y.useMemo(()=>T0({...Mc,direction:a}),[a]);y.useEffect(()=>{document.body.dir=a},[a]);const n=Bc();return m.jsx(_o,{theme:n,children:m.jsx(j0,{theme:i,colorModeManager:Ec,children:e})})}const Hc=y.memo(Dc);export{Hc as default}; diff --git a/invokeai/frontend/web/dist/assets/index-08cda350.js b/invokeai/frontend/web/dist/assets/index-08cda350.js deleted file mode 100644 index 40c468ebd5..0000000000 --- a/invokeai/frontend/web/dist/assets/index-08cda350.js +++ /dev/null @@ -1,126 +0,0 @@ -var Kj=Object.defineProperty;var Xj=(e,t,n)=>t in e?Kj(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Kb=(e,t,n)=>(Xj(e,typeof t!="symbol"?t+"":t,n),n);function PR(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 s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).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 De=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function vu(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Yj(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var OR={exports:{}},Ov={},RR={exports:{}},Ue={};/** - * @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 Bp=Symbol.for("react.element"),Zj=Symbol.for("react.portal"),Qj=Symbol.for("react.fragment"),Jj=Symbol.for("react.strict_mode"),eV=Symbol.for("react.profiler"),tV=Symbol.for("react.provider"),nV=Symbol.for("react.context"),rV=Symbol.for("react.forward_ref"),iV=Symbol.for("react.suspense"),oV=Symbol.for("react.memo"),sV=Symbol.for("react.lazy"),z4=Symbol.iterator;function aV(e){return e===null||typeof e!="object"?null:(e=z4&&e[z4]||e["@@iterator"],typeof e=="function"?e:null)}var IR={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},MR=Object.assign,NR={};function Od(e,t,n){this.props=e,this.context=t,this.refs=NR,this.updater=n||IR}Od.prototype.isReactComponent={};Od.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")};Od.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function DR(){}DR.prototype=Od.prototype;function WC(e,t,n){this.props=e,this.context=t,this.refs=NR,this.updater=n||IR}var qC=WC.prototype=new DR;qC.constructor=WC;MR(qC,Od.prototype);qC.isPureReactComponent=!0;var U4=Array.isArray,LR=Object.prototype.hasOwnProperty,KC={current:null},$R={key:!0,ref:!0,__self:!0,__source:!0};function FR(e,t,n){var r,i={},o=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(o=""+t.key),t)LR.call(t,r)&&!$R.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,U=M[F];if(0>>1;Fi(X,D))Zi(z,X)?(M[F]=z,M[Z]=D,F=Z):(M[F]=X,M[q]=D,F=q);else if(Zi(z,D))M[F]=z,M[Z]=D,F=Z;else break e}}return O}function i(M,O){var D=M.sortIndex-O.sortIndex;return D!==0?D:M.id-O.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var l=[],u=[],c=1,d=null,f=3,h=!1,p=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(M){for(var O=n(u);O!==null;){if(O.callback===null)r(u);else if(O.startTime<=M)r(u),O.sortIndex=O.expirationTime,t(l,O);else break;O=n(u)}}function v(M){if(m=!1,g(M),!p)if(n(l)!==null)p=!0,N(S);else{var O=n(u);O!==null&&$(v,O.startTime-M)}}function S(M,O){p=!1,m&&(m=!1,_(x),x=-1),h=!0;var D=f;try{for(g(O),d=n(l);d!==null&&(!(d.expirationTime>O)||M&&!P());){var F=d.callback;if(typeof F=="function"){d.callback=null,f=d.priorityLevel;var U=F(d.expirationTime<=O);O=e.unstable_now(),typeof U=="function"?d.callback=U:d===n(l)&&r(l),g(O)}else r(l);d=n(l)}if(d!==null)var V=!0;else{var q=n(u);q!==null&&$(v,q.startTime-O),V=!1}return V}finally{d=null,f=D,h=!1}}var w=!1,C=null,x=-1,A=5,T=-1;function P(){return!(e.unstable_now()-TM||125F?(M.sortIndex=D,t(u,M),n(l)===null&&M===n(u)&&(m?(_(x),x=-1):m=!0,$(v,D-F))):(M.sortIndex=U,t(l,M),p||h||(p=!0,N(S))),M},e.unstable_shouldYield=P,e.unstable_wrapCallback=function(M){var O=f;return function(){var D=f;f=O;try{return M.apply(this,arguments)}finally{f=D}}}})(jR);UR.exports=jR;var vV=UR.exports;/** - * @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 VR=I,oi=vV;function ee(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"),ew=Object.prototype.hasOwnProperty,_V=/^[: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]*$/,G4={},H4={};function bV(e){return ew.call(H4,e)?!0:ew.call(G4,e)?!1:_V.test(e)?H4[e]=!0:(G4[e]=!0,!1)}function SV(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 wV(e,t,n,r){if(t===null||typeof t>"u"||SV(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 Or(e,t,n,r,i,o,s){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=s}var Jn={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Jn[e]=new Or(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Jn[t]=new Or(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Jn[e]=new Or(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Jn[e]=new Or(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){Jn[e]=new Or(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Jn[e]=new Or(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Jn[e]=new Or(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Jn[e]=new Or(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Jn[e]=new Or(e,5,!1,e.toLowerCase(),null,!1,!1)});var YC=/[\-:]([a-z])/g;function ZC(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(YC,ZC);Jn[t]=new Or(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(YC,ZC);Jn[t]=new Or(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(YC,ZC);Jn[t]=new Or(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Jn[e]=new Or(e,1,!1,e.toLowerCase(),null,!1,!1)});Jn.xlinkHref=new Or("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Jn[e]=new Or(e,1,!1,e.toLowerCase(),null,!0,!0)});function QC(e,t,n,r){var i=Jn.hasOwnProperty(t)?Jn[t]:null;(i!==null?i.type!==0:r||!(2a||i[s]!==o[a]){var l=` -`+i[s].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=s&&0<=a);break}}}finally{Zb=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?If(e):""}function xV(e){switch(e.tag){case 5:return If(e.type);case 16:return If("Lazy");case 13:return If("Suspense");case 19:return If("SuspenseList");case 0:case 2:case 15:return e=Qb(e.type,!1),e;case 11:return e=Qb(e.type.render,!1),e;case 1:return e=Qb(e.type,!0),e;default:return""}}function iw(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 pc:return"Fragment";case hc:return"Portal";case tw:return"Profiler";case JC:return"StrictMode";case nw:return"Suspense";case rw:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case WR:return(e.displayName||"Context")+".Consumer";case HR:return(e._context.displayName||"Context")+".Provider";case e3:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case t3:return t=e.displayName||null,t!==null?t:iw(e.type)||"Memo";case ia:t=e._payload,e=e._init;try{return iw(e(t))}catch{}}return null}function CV(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 iw(t);case 8:return t===JC?"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 Ba(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function KR(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function EV(e){var t=KR(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(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function zg(e){e._valueTracker||(e._valueTracker=EV(e))}function XR(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=KR(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function L0(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 ow(e,t){var n=t.checked;return Xt({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function q4(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Ba(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 YR(e,t){t=t.checked,t!=null&&QC(e,"checked",t,!1)}function sw(e,t){YR(e,t);var n=Ba(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")?aw(e,t.type,n):t.hasOwnProperty("defaultValue")&&aw(e,t.type,Ba(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function K4(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 aw(e,t,n){(t!=="number"||L0(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Mf=Array.isArray;function Rc(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Ug.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function mh(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Gf={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},TV=["Webkit","ms","Moz","O"];Object.keys(Gf).forEach(function(e){TV.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Gf[t]=Gf[e]})});function e9(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Gf.hasOwnProperty(e)&&Gf[e]?(""+t).trim():t+"px"}function t9(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=e9(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var AV=Xt({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 cw(e,t){if(t){if(AV[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(ee(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(ee(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(ee(61))}if(t.style!=null&&typeof t.style!="object")throw Error(ee(62))}}function dw(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 fw=null;function n3(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var hw=null,Ic=null,Mc=null;function Z4(e){if(e=jp(e)){if(typeof hw!="function")throw Error(ee(280));var t=e.stateNode;t&&(t=Dv(t),hw(e.stateNode,e.type,t))}}function n9(e){Ic?Mc?Mc.push(e):Mc=[e]:Ic=e}function r9(){if(Ic){var e=Ic,t=Mc;if(Mc=Ic=null,Z4(e),t)for(e=0;e>>=0,e===0?32:31-(FV(e)/BV|0)|0}var jg=64,Vg=4194304;function Nf(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 z0(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,s=n&268435455;if(s!==0){var a=s&~i;a!==0?r=Nf(a):(o&=s,o!==0&&(r=Nf(o)))}else s=n&~i,s!==0?r=Nf(s):o!==0&&(r=Nf(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function zp(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-no(t),e[t]=n}function VV(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=Wf),sT=String.fromCharCode(32),aT=!1;function x9(e,t){switch(e){case"keyup":return yG.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function C9(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gc=!1;function _G(e,t){switch(e){case"compositionend":return C9(t);case"keypress":return t.which!==32?null:(aT=!0,sT);case"textInput":return e=t.data,e===sT&&aT?null:e;default:return null}}function bG(e,t){if(gc)return e==="compositionend"||!c3&&x9(e,t)?(e=S9(),t0=a3=ga=null,gc=!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=dT(n)}}function k9(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?k9(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function P9(){for(var e=window,t=L0();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=L0(e.document)}return t}function d3(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 PG(e){var t=P9(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&k9(n.ownerDocument.documentElement,n)){if(r!==null&&d3(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=fT(n,o);var s=fT(n,r);i&&s&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.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,mc=null,_w=null,Kf=null,bw=!1;function hT(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;bw||mc==null||mc!==L0(r)||(r=mc,"selectionStart"in r&&d3(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}),Kf&&wh(Kf,r)||(Kf=r,r=V0(_w,"onSelect"),0_c||(e.current=Tw[_c],Tw[_c]=null,_c--)}function bt(e,t){_c++,Tw[_c]=e.current,e.current=t}var za={},hr=tl(za),Ur=tl(!1),eu=za;function nd(e,t){var n=e.type.contextTypes;if(!n)return za;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 jr(e){return e=e.childContextTypes,e!=null}function H0(){Rt(Ur),Rt(hr)}function bT(e,t,n){if(hr.current!==za)throw Error(ee(168));bt(hr,t),bt(Ur,n)}function F9(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(ee(108,CV(e)||"Unknown",i));return Xt({},n,r)}function W0(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||za,eu=hr.current,bt(hr,e),bt(Ur,Ur.current),!0}function ST(e,t,n){var r=e.stateNode;if(!r)throw Error(ee(169));n?(e=F9(e,t,eu),r.__reactInternalMemoizedMergedChildContext=e,Rt(Ur),Rt(hr),bt(hr,e)):Rt(Ur),bt(Ur,n)}var ms=null,Lv=!1,fS=!1;function B9(e){ms===null?ms=[e]:ms.push(e)}function UG(e){Lv=!0,B9(e)}function nl(){if(!fS&&ms!==null){fS=!0;var e=0,t=ot;try{var n=ms;for(ot=1;e>=s,i-=s,Ss=1<<32-no(t)+i|n<x?(A=C,C=null):A=C.sibling;var T=f(_,C,g[x],v);if(T===null){C===null&&(C=A);break}e&&C&&T.alternate===null&&t(_,C),y=o(T,y,x),w===null?S=T:w.sibling=T,w=T,C=A}if(x===g.length)return n(_,C),Ft&&kl(_,x),S;if(C===null){for(;xx?(A=C,C=null):A=C.sibling;var P=f(_,C,T.value,v);if(P===null){C===null&&(C=A);break}e&&C&&P.alternate===null&&t(_,C),y=o(P,y,x),w===null?S=P:w.sibling=P,w=P,C=A}if(T.done)return n(_,C),Ft&&kl(_,x),S;if(C===null){for(;!T.done;x++,T=g.next())T=d(_,T.value,v),T!==null&&(y=o(T,y,x),w===null?S=T:w.sibling=T,w=T);return Ft&&kl(_,x),S}for(C=r(_,C);!T.done;x++,T=g.next())T=h(C,_,x,T.value,v),T!==null&&(e&&T.alternate!==null&&C.delete(T.key===null?x:T.key),y=o(T,y,x),w===null?S=T:w.sibling=T,w=T);return e&&C.forEach(function(L){return t(_,L)}),Ft&&kl(_,x),S}function b(_,y,g,v){if(typeof g=="object"&&g!==null&&g.type===pc&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case Bg:e:{for(var S=g.key,w=y;w!==null;){if(w.key===S){if(S=g.type,S===pc){if(w.tag===7){n(_,w.sibling),y=i(w,g.props.children),y.return=_,_=y;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===ia&&kT(S)===w.type){n(_,w.sibling),y=i(w,g.props),y.ref=df(_,w,g),y.return=_,_=y;break e}n(_,w);break}else t(_,w);w=w.sibling}g.type===pc?(y=Kl(g.props.children,_.mode,v,g.key),y.return=_,_=y):(v=u0(g.type,g.key,g.props,null,_.mode,v),v.ref=df(_,y,g),v.return=_,_=v)}return s(_);case hc:e:{for(w=g.key;y!==null;){if(y.key===w)if(y.tag===4&&y.stateNode.containerInfo===g.containerInfo&&y.stateNode.implementation===g.implementation){n(_,y.sibling),y=i(y,g.children||[]),y.return=_,_=y;break e}else{n(_,y);break}else t(_,y);y=y.sibling}y=bS(g,_.mode,v),y.return=_,_=y}return s(_);case ia:return w=g._init,b(_,y,w(g._payload),v)}if(Mf(g))return p(_,y,g,v);if(sf(g))return m(_,y,g,v);Yg(_,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,y!==null&&y.tag===6?(n(_,y.sibling),y=i(y,g),y.return=_,_=y):(n(_,y),y=_S(g,_.mode,v),y.return=_,_=y),s(_)):n(_,y)}return b}var id=q9(!0),K9=q9(!1),Vp={},Fo=tl(Vp),Th=tl(Vp),Ah=tl(Vp);function $l(e){if(e===Vp)throw Error(ee(174));return e}function b3(e,t){switch(bt(Ah,t),bt(Th,e),bt(Fo,Vp),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:uw(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=uw(t,e)}Rt(Fo),bt(Fo,t)}function od(){Rt(Fo),Rt(Th),Rt(Ah)}function X9(e){$l(Ah.current);var t=$l(Fo.current),n=uw(t,e.type);t!==n&&(bt(Th,e),bt(Fo,n))}function S3(e){Th.current===e&&(Rt(Fo),Rt(Th))}var Gt=tl(0);function Q0(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)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 hS=[];function w3(){for(var e=0;en?n:4,e(!0);var r=pS.transition;pS.transition={};try{e(!1),t()}finally{ot=n,pS.transition=r}}function dI(){return Oi().memoizedState}function HG(e,t,n){var r=Pa(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},fI(e))hI(t,n);else if(n=V9(e,t,n,r),n!==null){var i=Er();ro(n,e,r,i),pI(n,t,r)}}function WG(e,t,n){var r=Pa(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(fI(e))hI(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,a=o(s,n);if(i.hasEagerState=!0,i.eagerState=a,lo(a,s)){var l=t.interleaved;l===null?(i.next=i,v3(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=V9(e,t,i,r),n!==null&&(i=Er(),ro(n,e,r,i),pI(n,t,r))}}function fI(e){var t=e.alternate;return e===Kt||t!==null&&t===Kt}function hI(e,t){Xf=J0=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function pI(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,i3(e,n)}}var ey={readContext:Pi,useCallback:rr,useContext:rr,useEffect:rr,useImperativeHandle:rr,useInsertionEffect:rr,useLayoutEffect:rr,useMemo:rr,useReducer:rr,useRef:rr,useState:rr,useDebugValue:rr,useDeferredValue:rr,useTransition:rr,useMutableSource:rr,useSyncExternalStore:rr,useId:rr,unstable_isNewReconciler:!1},qG={readContext:Pi,useCallback:function(e,t){return xo().memoizedState=[e,t===void 0?null:t],e},useContext:Pi,useEffect:OT,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,o0(4194308,4,sI.bind(null,t,e),n)},useLayoutEffect:function(e,t){return o0(4194308,4,e,t)},useInsertionEffect:function(e,t){return o0(4,2,e,t)},useMemo:function(e,t){var n=xo();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=xo();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=HG.bind(null,Kt,e),[r.memoizedState,e]},useRef:function(e){var t=xo();return e={current:e},t.memoizedState=e},useState:PT,useDebugValue:A3,useDeferredValue:function(e){return xo().memoizedState=e},useTransition:function(){var e=PT(!1),t=e[0];return e=GG.bind(null,e[1]),xo().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Kt,i=xo();if(Ft){if(n===void 0)throw Error(ee(407));n=n()}else{if(n=t(),Ln===null)throw Error(ee(349));nu&30||Q9(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,OT(eI.bind(null,r,o,e),[e]),r.flags|=2048,Oh(9,J9.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=xo(),t=Ln.identifierPrefix;if(Ft){var n=ws,r=Ss;n=(r&~(1<<32-no(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=kh++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[ko]=t,e[Eh]=r,xI(e,t,!1,!1),t.stateNode=e;e:{switch(s=dw(n,r),n){case"dialog":Ct("cancel",e),Ct("close",e),i=r;break;case"iframe":case"object":case"embed":Ct("load",e),i=r;break;case"video":case"audio":for(i=0;iad&&(t.flags|=128,r=!0,ff(o,!1),t.lanes=4194304)}else{if(!r)if(e=Q0(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ff(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Ft)return ir(t),null}else 2*an()-o.renderingStartTime>ad&&n!==1073741824&&(t.flags|=128,r=!0,ff(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(n=o.last,n!==null?n.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=an(),t.sibling=null,n=Gt.current,bt(Gt,r?n&1|2:n&1),t):(ir(t),null);case 22:case 23:return M3(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Qr&1073741824&&(ir(t),t.subtreeFlags&6&&(t.flags|=8192)):ir(t),null;case 24:return null;case 25:return null}throw Error(ee(156,t.tag))}function tH(e,t){switch(h3(t),t.tag){case 1:return jr(t.type)&&H0(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return od(),Rt(Ur),Rt(hr),w3(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return S3(t),null;case 13:if(Rt(Gt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(ee(340));rd()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Rt(Gt),null;case 4:return od(),null;case 10:return y3(t.type._context),null;case 22:case 23:return M3(),null;case 24:return null;default:return null}}var Qg=!1,ar=!1,nH=typeof WeakSet=="function"?WeakSet:Set,pe=null;function xc(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){en(e,t,r)}else n.current=null}function Fw(e,t,n){try{n()}catch(r){en(e,t,r)}}var BT=!1;function rH(e,t){if(Sw=U0,e=P9(),d3(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 s=0,a=-1,l=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var h;d!==n||i!==0&&d.nodeType!==3||(a=s+i),d!==o||r!==0&&d.nodeType!==3||(l=s+r),d.nodeType===3&&(s+=d.nodeValue.length),(h=d.firstChild)!==null;)f=d,d=h;for(;;){if(d===e)break t;if(f===n&&++u===i&&(a=s),f===o&&++c===r&&(l=s),(h=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=h}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(ww={focusedElem:e,selectionRange:n},U0=!1,pe=t;pe!==null;)if(t=pe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,pe=e;else for(;pe!==null;){t=pe;try{var p=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,b=p.memoizedState,_=t.stateNode,y=_.getSnapshotBeforeUpdate(t.elementType===t.type?m:qi(t.type,m),b);_.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(ee(163))}}catch(v){en(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,pe=e;break}pe=t.return}return p=BT,BT=!1,p}function Yf(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&&Fw(t,n,o)}i=i.next}while(i!==r)}}function Bv(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 Bw(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 TI(e){var t=e.alternate;t!==null&&(e.alternate=null,TI(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ko],delete t[Eh],delete t[Ew],delete t[BG],delete t[zG])),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 AI(e){return e.tag===5||e.tag===3||e.tag===4}function zT(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||AI(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 zw(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=G0));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}function Uw(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(Uw(e,t,n),e=e.sibling;e!==null;)Uw(e,t,n),e=e.sibling}var qn=null,Ki=!1;function Zs(e,t,n){for(n=n.child;n!==null;)kI(e,t,n),n=n.sibling}function kI(e,t,n){if($o&&typeof $o.onCommitFiberUnmount=="function")try{$o.onCommitFiberUnmount(Rv,n)}catch{}switch(n.tag){case 5:ar||xc(n,t);case 6:var r=qn,i=Ki;qn=null,Zs(e,t,n),qn=r,Ki=i,qn!==null&&(Ki?(e=qn,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):qn.removeChild(n.stateNode));break;case 18:qn!==null&&(Ki?(e=qn,n=n.stateNode,e.nodeType===8?dS(e.parentNode,n):e.nodeType===1&&dS(e,n),bh(e)):dS(qn,n.stateNode));break;case 4:r=qn,i=Ki,qn=n.stateNode.containerInfo,Ki=!0,Zs(e,t,n),qn=r,Ki=i;break;case 0:case 11:case 14:case 15:if(!ar&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&Fw(n,t,s),i=i.next}while(i!==r)}Zs(e,t,n);break;case 1:if(!ar&&(xc(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){en(n,t,a)}Zs(e,t,n);break;case 21:Zs(e,t,n);break;case 22:n.mode&1?(ar=(r=ar)||n.memoizedState!==null,Zs(e,t,n),ar=r):Zs(e,t,n);break;default:Zs(e,t,n)}}function UT(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new nH),t.forEach(function(r){var i=fH.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function Hi(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=an()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*oH(r/1960))-r,10e?16:e,ma===null)var r=!1;else{if(e=ma,ma=null,ry=0,Xe&6)throw Error(ee(331));var i=Xe;for(Xe|=4,pe=e.current;pe!==null;){var o=pe,s=o.child;if(pe.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lan()-R3?ql(e,0):O3|=n),Vr(e,t)}function LI(e,t){t===0&&(e.mode&1?(t=Vg,Vg<<=1,!(Vg&130023424)&&(Vg=4194304)):t=1);var n=Er();e=Ns(e,t),e!==null&&(zp(e,t,n),Vr(e,n))}function dH(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),LI(e,n)}function fH(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(ee(314))}r!==null&&r.delete(t),LI(e,n)}var $I;$I=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ur.current)$r=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return $r=!1,JG(e,t,n);$r=!!(e.flags&131072)}else $r=!1,Ft&&t.flags&1048576&&z9(t,K0,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;s0(e,t),e=t.pendingProps;var i=nd(t,hr.current);Dc(t,n),i=C3(null,t,r,e,i,n);var o=E3();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,jr(r)?(o=!0,W0(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,_3(t),i.updater=$v,t.stateNode=i,i._reactInternals=t,Rw(t,r,e,n),t=Nw(null,t,r,!0,o,n)):(t.tag=0,Ft&&o&&f3(t),wr(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(s0(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=pH(r),e=qi(r,e),i){case 0:t=Mw(null,t,r,e,n);break e;case 1:t=LT(null,t,r,e,n);break e;case 11:t=NT(null,t,r,e,n);break e;case 14:t=DT(null,t,r,qi(r.type,e),n);break e}throw Error(ee(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qi(r,i),Mw(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qi(r,i),LT(e,t,r,i,n);case 3:e:{if(bI(t),e===null)throw Error(ee(387));r=t.pendingProps,o=t.memoizedState,i=o.element,G9(e,t),Z0(t,r,null,n);var s=t.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=sd(Error(ee(423)),t),t=$T(e,t,r,n,i);break e}else if(r!==i){i=sd(Error(ee(424)),t),t=$T(e,t,r,n,i);break e}else for(ti=Ta(t.stateNode.containerInfo.firstChild),ri=t,Ft=!0,Yi=null,n=K9(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(rd(),r===i){t=Ds(e,t,n);break e}wr(e,t,r,n)}t=t.child}return t;case 5:return X9(t),e===null&&kw(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,xw(r,i)?s=null:o!==null&&xw(r,o)&&(t.flags|=32),_I(e,t),wr(e,t,s,n),t.child;case 6:return e===null&&kw(t),null;case 13:return SI(e,t,n);case 4:return b3(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=id(t,null,r,n):wr(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qi(r,i),NT(e,t,r,i,n);case 7:return wr(e,t,t.pendingProps,n),t.child;case 8:return wr(e,t,t.pendingProps.children,n),t.child;case 12:return wr(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,s=i.value,bt(X0,r._currentValue),r._currentValue=s,o!==null)if(lo(o.value,s)){if(o.children===i.children&&!Ur.current){t=Ds(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){s=o.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=Es(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Pw(o.return,n,t),a.lanes|=n;break}l=l.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(ee(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Pw(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}wr(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,Dc(t,n),i=Pi(i),r=r(i),t.flags|=1,wr(e,t,r,n),t.child;case 14:return r=t.type,i=qi(r,t.pendingProps),i=qi(r.type,i),DT(e,t,r,i,n);case 15:return yI(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:qi(r,i),s0(e,t),t.tag=1,jr(r)?(e=!0,W0(t)):e=!1,Dc(t,n),W9(t,r,i),Rw(t,r,i,n),Nw(null,t,r,!0,e,n);case 19:return wI(e,t,n);case 22:return vI(e,t,n)}throw Error(ee(156,t.tag))};function FI(e,t){return c9(e,t)}function hH(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 Ti(e,t,n,r){return new hH(e,t,n,r)}function D3(e){return e=e.prototype,!(!e||!e.isReactComponent)}function pH(e){if(typeof e=="function")return D3(e)?1:0;if(e!=null){if(e=e.$$typeof,e===e3)return 11;if(e===t3)return 14}return 2}function Oa(e,t){var n=e.alternate;return n===null?(n=Ti(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 u0(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")D3(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case pc:return Kl(n.children,i,o,t);case JC:s=8,i|=8;break;case tw:return e=Ti(12,n,t,i|2),e.elementType=tw,e.lanes=o,e;case nw:return e=Ti(13,n,t,i),e.elementType=nw,e.lanes=o,e;case rw:return e=Ti(19,n,t,i),e.elementType=rw,e.lanes=o,e;case qR:return Uv(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case HR:s=10;break e;case WR:s=9;break e;case e3:s=11;break e;case t3:s=14;break e;case ia:s=16,r=null;break e}throw Error(ee(130,e==null?e:typeof e,""))}return t=Ti(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Kl(e,t,n,r){return e=Ti(7,e,r,t),e.lanes=n,e}function Uv(e,t,n,r){return e=Ti(22,e,r,t),e.elementType=qR,e.lanes=n,e.stateNode={isHidden:!1},e}function _S(e,t,n){return e=Ti(6,e,null,t),e.lanes=n,e}function bS(e,t,n){return t=Ti(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function gH(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=eS(0),this.expirationTimes=eS(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=eS(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function L3(e,t,n,r,i,o,s,a,l){return e=new gH(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Ti(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},_3(o),e}function mH(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(jI)}catch(e){console.error(e)}}jI(),zR.exports=ui;var Zi=zR.exports;const bAe=vu(Zi);var XT=Zi;J2.createRoot=XT.createRoot,J2.hydrateRoot=XT.hydrateRoot;const SH="modulepreload",wH=function(e,t){return new URL(e,t).href},YT={},VI=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=wH(o,r),o in YT)return;YT[o]=!0;const s=o.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const d=i[c];if(d.href===o&&(!s||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${a}`))return;const u=document.createElement("link");if(u.rel=s?"stylesheet":SH,s||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),s)return new Promise((c,d)=>{u.addEventListener("load",c),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};function Dn(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:Wv(e)?2:qv(e)?3:0}function Ra(e,t){return Ua(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function c0(e,t){return Ua(e)===2?e.get(t):e[t]}function GI(e,t,n){var r=Ua(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function HI(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function Wv(e){return kH&&e instanceof Map}function qv(e){return PH&&e instanceof Set}function kn(e){return e.o||e.t}function U3(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=qI(e);delete t[Oe];for(var n=Fc(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=xH),Object.freeze(e),t&&Ls(e,function(n,r){return Gp(r,!0)},!0)),e}function xH(){Dn(2)}function j3(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function Bo(e){var t=qw[e];return t||Dn(18,e),t}function V3(e,t){qw[e]||(qw[e]=t)}function Ih(){return Nh}function SS(e,t){t&&(Bo("Patches"),e.u=[],e.s=[],e.v=t)}function sy(e){Ww(e),e.p.forEach(CH),e.p=null}function Ww(e){e===Nh&&(Nh=e.l)}function ZT(e){return Nh={p:[],l:Nh,h:e,m:!0,_:0}}function CH(e){var t=e[Oe];t.i===0||t.i===1?t.j():t.g=!0}function wS(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||Bo("ES5").S(t,e,r),r?(n[Oe].P&&(sy(t),Dn(4)),Gr(e)&&(e=ay(t,e),t.l||ly(t,e)),t.u&&Bo("Patches").M(n[Oe].t,e,t.u,t.s)):e=ay(t,n,[]),sy(t),t.u&&t.v(t.u,t.s),e!==Xv?e:void 0}function ay(e,t,n){if(j3(t))return t;var r=t[Oe];if(!r)return Ls(t,function(a,l){return QT(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return ly(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=U3(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),Ls(o,function(a,l){return QT(e,r,i,a,l,n,s)}),ly(e,i,!1),n&&e.u&&Bo("Patches").N(r,n,e.u,e.s)}return r.o}function QT(e,t,n,r,i,o,s){if(Tr(i)){var a=ay(e,i,o&&t&&t.i!==3&&!Ra(t.R,r)?o.concat(r):void 0);if(GI(n,r,a),!Tr(a))return;e.m=!1}else s&&n.add(i);if(Gr(i)&&!j3(i)){if(!e.h.D&&e._<1)return;ay(e,i),t&&t.A.l||ly(e,i)}}function ly(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&Gp(t,n)}function xS(e,t){var n=e[Oe];return(n?kn(n):e)[t]}function JT(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 Lr(e){e.P||(e.P=!0,e.l&&Lr(e.l))}function CS(e){e.o||(e.o=U3(e.t))}function Mh(e,t,n){var r=Wv(t)?Bo("MapSet").F(t,n):qv(t)?Bo("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Ih(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=Dh;s&&(l=[a],u=Lf);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):Bo("ES5").J(t,n);return(n?n.A:Ih()).p.push(r),r}function Kv(e){return Tr(e)||Dn(22,e),function t(n){if(!Gr(n))return n;var r,i=n[Oe],o=Ua(n);if(i){if(!i.P&&(i.i<4||!Bo("ES5").K(i)))return i.t;i.I=!0,r=e6(n,o),i.I=!1}else r=e6(n,o);return Ls(r,function(s,a){i&&c0(i.t,s)===a||GI(r,s,t(a))}),o===3?new Set(r):r}(e)}function e6(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return U3(e)}function G3(){function e(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var l=this[Oe];return Dh.get(l,o)},set:function(l){var u=this[Oe];Dh.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][Oe];if(!a.P)switch(a.i){case 5:r(a)&&Lr(a);break;case 4:n(a)&&Lr(a)}}}function n(o){for(var s=o.t,a=o.k,l=Fc(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==Oe){var d=s[c];if(d===void 0&&!Ra(s,c))return!0;var f=a[c],h=f&&f[Oe];if(h?h.t!==d:!HI(f,d))return!0}}var p=!!s[Oe];return l.length!==Fc(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);if(a&&!a.get)return!0;for(var l=0;l1?_-1:0),g=1;g<_;g++)y[g-1]=arguments[g];return l.produce(m,function(v){var S;return(S=o).call.apply(S,[b,v].concat(y))})}}var u;if(typeof o!="function"&&Dn(6),s!==void 0&&typeof s!="function"&&Dn(7),Gr(i)){var c=ZT(r),d=Mh(r,i,void 0),f=!0;try{u=o(d),f=!1}finally{f?sy(c):Ww(c)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return SS(c,s),wS(m,c)},function(m){throw sy(c),m}):(SS(c,s),wS(u,c))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===Xv&&(u=void 0),r.D&&Gp(u,!0),s){var h=[],p=[];Bo("Patches").M(i,u,h,p),s(h,p)}return u}Dn(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f=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 s=Bo("Patches").$;return Tr(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),si=new KI,XI=si.produce,q3=si.produceWithPatches.bind(si),RH=si.setAutoFreeze.bind(si),IH=si.setUseProxies.bind(si),Kw=si.applyPatches.bind(si),MH=si.createDraft.bind(si),NH=si.finishDraft.bind(si);const rl=XI,SAe=Object.freeze(Object.defineProperty({__proto__:null,Immer:KI,applyPatches:Kw,castDraft:TH,castImmutable:AH,createDraft:MH,current:Kv,default:rl,enableAllPlugins:EH,enableES5:G3,enableMapSet:WI,enablePatches:H3,finishDraft:NH,freeze:Gp,immerable:$c,isDraft:Tr,isDraftable:Gr,nothing:Xv,original:z3,produce:XI,produceWithPatches:q3,setAutoFreeze:RH,setUseProxies:IH},Symbol.toStringTag,{value:"Module"}));function Lh(e){"@babel/helpers - typeof";return Lh=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Lh(e)}function DH(e,t){if(Lh(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(Lh(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function LH(e){var t=DH(e,"string");return Lh(t)==="symbol"?t:String(t)}function $H(e,t,n){return t=LH(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r6(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 i6(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(Kn(1));return n(Hp)(e,t)}if(typeof e!="function")throw new Error(Kn(2));var i=e,o=t,s=[],a=s,l=!1;function u(){a===s&&(a=s.slice())}function c(){if(l)throw new Error(Kn(3));return o}function d(m){if(typeof m!="function")throw new Error(Kn(4));if(l)throw new Error(Kn(5));var b=!0;return u(),a.push(m),function(){if(b){if(l)throw new Error(Kn(6));b=!1,u();var y=a.indexOf(m);a.splice(y,1),s=null}}}function f(m){if(!FH(m))throw new Error(Kn(7));if(typeof m.type>"u")throw new Error(Kn(8));if(l)throw new Error(Kn(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var b=s=a,_=0;_"u")throw new Error(Kn(12));if(typeof n(void 0,{type:ld.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(Kn(13))})}function Md(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(Kn(14));d[h]=b,c=c||b!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function s6(e,t){return function(){return t(e.apply(this,arguments))}}function ZI(e,t){if(typeof e=="function")return s6(e,t);if(typeof e!="object"||e===null)throw new Error(Kn(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=s6(i,t))}return n}function ud(){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 uy}function i(a,l){r(a)===uy&&(n.unshift({key:a,value:l}),n.length>e&&n.pop())}function o(){return n}function s(){n=[]}return{get:r,put:i,getEntries:o,clear:s}}var QI=function(t,n){return t===n};function VH(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]",value:e};if(typeof e!="object"||e===null||o!=null&&o.has(e))return!1;for(var a=r!=null?r(e):Object.entries(e),l=i.length>0,u=function(b,_){var y=t?t+"."+b:b;if(l){var g=i.some(function(v){return v instanceof RegExp?v.test(y):y===v});if(g)return"continue"}if(!n(_))return{value:{keyPath:y,value:_}};if(typeof _=="object"&&(s=sM(_,y,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function oW(e){return""+e}function dM(e){var t={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return e(i),[t,n,r]}function sW(e){return typeof e=="function"}function fM(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?dM(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(sW(e))l=function(){return Xw(e())};else{var u=Xw(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=ja([o[f.type]],s.filter(function(p){var m=p.matcher;return m(f)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[a]),h.reduce(function(p,m){if(m)if(Tr(p)){var b=p,_=m(b,f);return _===void 0?p:_}else{if(Gr(p))return rl(p,function(y){return m(y,f)});var _=m(p,f);if(_===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return _}return p},d)}return c.getInitialState=l,c}function aW(e,t){return e+"/"+t}function Ht(e){var t=e.name;if(!t)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof e.initialState=="function"?e.initialState:Xw(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=aW(t,c),h,p;"reducer"in d?(h=d.reducer,p=d.prepare):h=d,o[c]=h,s[f]=h,a[c]=p?me(f,p):me(f)});function l(){var c=typeof e.extraReducers=="function"?dM(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],b=m===void 0?void 0:m,_=Fr(Fr({},f),s);return fM(n,function(y){for(var g in _)y.addCase(g,_[g]);for(var v=0,S=p;v0;if(y){var g=p.filter(function(v){return u(b,v,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var b=hM(p,e,m),_=b[0],y=b[1];d(y,m),n(_,m)}return{removeAll:dW(l),addOne:on(t),addMany:on(n),setOne:on(r),setMany:on(i),setAll:on(o),updateOne:on(c),updateMany:on(d),upsertOne:on(f),upsertMany:on(h),removeOne:on(s),removeMany:on(a)}}function fW(e,t){var n=pM(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(y,g){return a([y],g)}function a(y,g){y=Xl(y);var v=y.filter(function(S){return!(Jf(S,e)in g.entities)});v.length!==0&&b(v,g)}function l(y,g){return u([y],g)}function u(y,g){y=Xl(y),y.length!==0&&b(y,g)}function c(y,g){y=Xl(y),g.entities={},g.ids=[],a(y,g)}function d(y,g){return f([y],g)}function f(y,g){for(var v=!1,S=0,w=y;S-1;return n&&r}function Kp(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function Qv(){for(var e=[],t=0;t0)for(var g=h.getState(),v=Array.from(n.values()),S=0,w=v;SMath.floor(e/t)*t,Po=(e,t)=>Math.round(e/t)*t;var OW=typeof global=="object"&&global&&global.Object===Object&&global;const IM=OW;var RW=typeof self=="object"&&self&&self.Object===Object&&self,IW=IM||RW||Function("return this")();const Zo=IW;var MW=Zo.Symbol;const Ri=MW;var MM=Object.prototype,NW=MM.hasOwnProperty,DW=MM.toString,pf=Ri?Ri.toStringTag:void 0;function LW(e){var t=NW.call(e,pf),n=e[pf];try{e[pf]=void 0;var r=!0}catch{}var i=DW.call(e);return r&&(t?e[pf]=n:delete e[pf]),i}var $W=Object.prototype,FW=$W.toString;function BW(e){return FW.call(e)}var zW="[object Null]",UW="[object Undefined]",p6=Ri?Ri.toStringTag:void 0;function sl(e){return e==null?e===void 0?UW:zW:p6&&p6 in Object(e)?LW(e):BW(e)}function co(e){return e!=null&&typeof e=="object"}var jW="[object Symbol]";function Jv(e){return typeof e=="symbol"||co(e)&&sl(e)==jW}function Q3(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=bq)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Cq(e){return function(){return e}}var Eq=function(){try{var e=wu(Object,"defineProperty");return e({},"",{}),e}catch{}}();const hy=Eq;var Tq=hy?function(e,t){return hy(e,"toString",{configurable:!0,enumerable:!1,value:Cq(t),writable:!0})}:e1;const Aq=Tq;var kq=xq(Aq);const $M=kq;function FM(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var Nq=9007199254740991,Dq=/^(?:0|[1-9]\d*)$/;function e5(e,t){var n=typeof e;return t=t??Nq,!!t&&(n=="number"||n!="symbol"&&Dq.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=Fq}function xu(e){return e!=null&&t5(e.length)&&!J3(e)}function jM(e,t,n){if(!Ar(n))return!1;var r=typeof t;return(r=="number"?xu(n)&&e5(t,n.length):r=="string"&&t in n)?Qp(n[t],e):!1}function VM(e){return UM(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,s&&jM(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function JK(e,t){var n=this.__data__,r=n1(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function js(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?YM(a,t-1,n,r,i):l5(i,a):r||(i[i.length]=a)}return i}function mX(e){var t=e==null?0:e.length;return t?YM(e,1):[]}function yX(e){return $M(zM(e,void 0,mX),e+"")}var vX=KM(Object.getPrototypeOf,Object);const u5=vX;var _X="[object Object]",bX=Function.prototype,SX=Object.prototype,ZM=bX.toString,wX=SX.hasOwnProperty,xX=ZM.call(Object);function QM(e){if(!co(e)||sl(e)!=_X)return!1;var t=u5(e);if(t===null)return!0;var n=wX.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&ZM.call(n)==xX}function JM(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r=r?e:JM(e,t,n)}var EX="\\ud800-\\udfff",TX="\\u0300-\\u036f",AX="\\ufe20-\\ufe2f",kX="\\u20d0-\\u20ff",PX=TX+AX+kX,OX="\\ufe0e\\ufe0f",RX="\\u200d",IX=RegExp("["+RX+EX+PX+OX+"]");function c5(e){return IX.test(e)}function MX(e){return e.split("")}var e7="\\ud800-\\udfff",NX="\\u0300-\\u036f",DX="\\ufe20-\\ufe2f",LX="\\u20d0-\\u20ff",$X=NX+DX+LX,FX="\\ufe0e\\ufe0f",BX="["+e7+"]",Jw="["+$X+"]",ex="\\ud83c[\\udffb-\\udfff]",zX="(?:"+Jw+"|"+ex+")",t7="[^"+e7+"]",n7="(?:\\ud83c[\\udde6-\\uddff]){2}",r7="[\\ud800-\\udbff][\\udc00-\\udfff]",UX="\\u200d",i7=zX+"?",o7="["+FX+"]?",jX="(?:"+UX+"(?:"+[t7,n7,r7].join("|")+")"+o7+i7+")*",VX=o7+i7+jX,GX="(?:"+[t7+Jw+"?",Jw,n7,r7,BX].join("|")+")",HX=RegExp(ex+"(?="+ex+")|"+GX+VX,"g");function WX(e){return e.match(HX)||[]}function qX(e){return c5(e)?WX(e):MX(e)}function KX(e){return function(t){t=i1(t);var n=c5(t)?qX(t):void 0,r=n?n[0]:t.charAt(0),i=n?CX(n,1).join(""):t.slice(1);return r[e]()+i}}var XX=KX("toUpperCase");const s7=XX;function a7(e,t,n,r){var i=-1,o=e==null?0:e.length;for(r&&o&&(n=e[++i]);++i=t?e:t)),e}function ya(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=kS(n),n=n===n?n:0),t!==void 0&&(t=kS(t),t=t===t?t:0),BY(kS(e),t,n)}function zY(){this.__data__=new js,this.size=0}function UY(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function jY(e){return this.__data__.get(e)}function VY(e){return this.__data__.has(e)}var GY=200;function HY(e,t){var n=this.__data__;if(n instanceof js){var r=n.__data__;if(!zh||r.lengtha))return!1;var u=o.get(e),c=o.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,h=n&EQ?new Uh:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),Nd(e,A7(e),n),r&&(n=th(n,LJ|$J|FJ,DJ));for(var i=t.length;i--;)j7(n,t[i]);return n});const l1=BJ;var zJ=F7("length");const UJ=zJ;var V7="\\ud800-\\udfff",jJ="\\u0300-\\u036f",VJ="\\ufe20-\\ufe2f",GJ="\\u20d0-\\u20ff",HJ=jJ+VJ+GJ,WJ="\\ufe0e\\ufe0f",qJ="["+V7+"]",sx="["+HJ+"]",ax="\\ud83c[\\udffb-\\udfff]",KJ="(?:"+sx+"|"+ax+")",G7="[^"+V7+"]",H7="(?:\\ud83c[\\udde6-\\uddff]){2}",W7="[\\ud800-\\udbff][\\udc00-\\udfff]",XJ="\\u200d",q7=KJ+"?",K7="["+WJ+"]?",YJ="(?:"+XJ+"(?:"+[G7,H7,W7].join("|")+")"+K7+q7+")*",ZJ=K7+q7+YJ,QJ="(?:"+[G7+sx+"?",sx,H7,W7,qJ].join("|")+")",q6=RegExp(ax+"(?="+ax+")|"+QJ+ZJ,"g");function JJ(e){for(var t=q6.lastIndex=0;q6.test(e);)++t;return t}function eee(e){return c5(e)?JJ(e):UJ(e)}function tee(e,t,n,r,i){return i(e,function(o,s,a){n=r?(r=!1,o):t(n,o,s,a)}),n}function lx(e,t,n){var r=mn(e)?a7:tee,i=arguments.length<3;return r(e,Dd(t),n,i,Ld)}var nee="[object Map]",ree="[object Set]";function u1(e){if(e==null)return 0;if(xu(e))return OJ(e)?eee(e):e.length;var t=fd(e);return t==nee||t==ree?e.size:XM(e).length}function iee(e,t){var n;return Ld(e,function(r,i,o){return n=t(r,i,o),!n}),!!n}function nh(e,t,n){var r=mn(e)?M7:iee;return n&&jM(e,t,n)&&(t=void 0),r(e,Dd(t))}var oee=FY(function(e,t,n){return e+(n?" ":"")+s7(t)});const see=oee;var aee=1/0,lee=jc&&1/h5(new jc([,-0]))[1]==aee?function(e){return new jc(e)}:_q;const uee=lee;var cee=200;function dee(e,t,n){var r=-1,i=Mq,o=e.length,s=!0,a=[],l=a;if(n)s=!1,i=wJ;else if(o>=cee){var u=t?null:uee(e);if(u)return h5(u);s=!1,i=N7,l=new Uh}else l=t?[]:a;e:for(;++r{NJ(e,t.payload)}}}),{configChanged:hee}=Y7.actions,pee=Y7.reducer,CAe={"sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},EAe={"sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"},gee={"sd-1":{maxClip:12,markers:[0,1,2,3,4,8,12]},"sd-2":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},sdxl:{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},"sdxl-refiner":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]}},TAe={lycoris:"LyCORIS",diffusers:"Diffusers"},AAe=0,mee=4294967295;var Ze;(function(e){e.assertEqual=i=>i;function t(i){}e.assertIs=t;function n(i){throw new Error}e.assertNever=n,e.arrayToEnum=i=>{const o={};for(const s of i)o[s]=s;return o},e.getValidEnumValues=i=>{const o=e.objectKeys(i).filter(a=>typeof i[i[a]]!="number"),s={};for(const a of o)s[a]=i[a];return e.objectValues(s)},e.objectValues=i=>e.objectKeys(i).map(function(o){return i[o]}),e.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const o=[];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&o.push(s);return o},e.find=(i,o)=>{for(const s of i)if(o(s))return s},e.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function r(i,o=" | "){return i.map(s=>typeof s=="string"?`'${s}'`:s).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(i,o)=>typeof o=="bigint"?o.toString():o})(Ze||(Ze={}));var ux;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(ux||(ux={}));const ue=Ze.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),fa=e=>{switch(typeof e){case"undefined":return ue.undefined;case"string":return ue.string;case"number":return isNaN(e)?ue.nan:ue.number;case"boolean":return ue.boolean;case"function":return ue.function;case"bigint":return ue.bigint;case"symbol":return ue.symbol;case"object":return Array.isArray(e)?ue.array:e===null?ue.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?ue.promise:typeof Map<"u"&&e instanceof Map?ue.map:typeof Set<"u"&&e instanceof Set?ue.set:typeof Date<"u"&&e instanceof Date?ue.date:ue.object;default:return ue.unknown}},te=Ze.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),yee=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class oo extends Error{constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const n=t||function(o){return o.message},r={_errors:[]},i=o=>{for(const s of o.issues)if(s.code==="invalid_union")s.unionErrors.map(i);else if(s.code==="invalid_return_type")i(s.returnTypeError);else if(s.code==="invalid_arguments")i(s.argumentsError);else if(s.path.length===0)r._errors.push(n(s));else{let a=r,l=0;for(;ln.message){const n={},r=[];for(const i of this.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}oo.create=e=>new oo(e);const jh=(e,t)=>{let n;switch(e.code){case te.invalid_type:e.received===ue.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case te.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Ze.jsonStringifyReplacer)}`;break;case te.unrecognized_keys:n=`Unrecognized key(s) in object: ${Ze.joinValues(e.keys,", ")}`;break;case te.invalid_union:n="Invalid input";break;case te.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Ze.joinValues(e.options)}`;break;case te.invalid_enum_value:n=`Invalid enum value. Expected ${Ze.joinValues(e.options)}, received '${e.received}'`;break;case te.invalid_arguments:n="Invalid function arguments";break;case te.invalid_return_type:n="Invalid function return type";break;case te.invalid_date:n="Invalid date";break;case te.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Ze.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case te.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case te.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case te.custom:n="Invalid input";break;case te.invalid_intersection_types:n="Intersection results could not be merged";break;case te.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case te.not_finite:n="Number must be finite";break;default:n=t.defaultError,Ze.assertNever(e)}return{message:n}};let Z7=jh;function vee(e){Z7=e}function my(){return Z7}const yy=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],s={...i,path:o};let a="";const l=r.filter(u=>!!u).slice().reverse();for(const u of l)a=u(s,{data:t,defaultError:a}).message;return{...i,path:o,message:i.message||a}},_ee=[];function fe(e,t){const n=yy({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,my(),jh].filter(r=>!!r)});e.common.issues.push(n)}class pr{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const i of n){if(i.status==="aborted")return ke;i.status==="dirty"&&t.dirty(),r.push(i.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const i of n)r.push({key:await i.key,value:await i.value});return pr.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const i of n){const{key:o,value:s}=i;if(o.status==="aborted"||s.status==="aborted")return ke;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const ke=Object.freeze({status:"aborted"}),Q7=e=>({status:"dirty",value:e}),kr=e=>({status:"valid",value:e}),cx=e=>e.status==="aborted",dx=e=>e.status==="dirty",Vh=e=>e.status==="valid",vy=e=>typeof Promise<"u"&&e instanceof Promise;var xe;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(xe||(xe={}));class Wo{constructor(t,n,r,i){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const X6=(e,t)=>{if(Vh(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new oo(e.common.issues);return this._error=n,this._error}}};function Re(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(s,a)=>s.code!=="invalid_type"?{message:a.defaultError}:typeof a.data>"u"?{message:r??a.defaultError}:{message:n??a.defaultError},description:i}}class Ie{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return fa(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:fa(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new pr,ctx:{common:t.parent.common,data:t.data,parsedType:fa(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if(vy(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const i={common:{issues:[],async:(r=n==null?void 0:n.async)!==null&&r!==void 0?r:!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:fa(t)},o=this._parseSync({data:t,path:i.path,parent:i});return X6(i,o)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:fa(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await(vy(i)?i:Promise.resolve(i));return X6(r,o)}refine(t,n){const r=i=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(i):n;return this._refinement((i,o)=>{const s=t(i),a=()=>o.addIssue({code:te.custom,...r(i)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>l?!0:(a(),!1)):s?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,i)=>t(r)?!0:(i.addIssue(typeof n=="function"?n(r,i):n),!1))}_refinement(t){return new fo({schema:this,typeName:Ee.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Ts.create(this,this._def)}nullable(){return lu.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return so.create(this,this._def)}promise(){return pd.create(this,this._def)}or(t){return qh.create([this,t],this._def)}and(t){return Kh.create(this,t,this._def)}transform(t){return new fo({...Re(this._def),schema:this,typeName:Ee.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new Jh({...Re(this._def),innerType:this,defaultValue:n,typeName:Ee.ZodDefault})}brand(){return new eN({typeName:Ee.ZodBranded,type:this,...Re(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new wy({...Re(this._def),innerType:this,catchValue:n,typeName:Ee.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return rg.create(this,t)}readonly(){return Cy.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const bee=/^c[^\s-]{8,}$/i,See=/^[a-z][a-z0-9]*$/,wee=/[0-9A-HJKMNP-TV-Z]{26}/,xee=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Cee=/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Eee=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Tee=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,Aee=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,kee=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):e.precision===0?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Pee(e,t){return!!((t==="v4"||!t)&&Tee.test(e)||(t==="v6"||!t)&&Aee.test(e))}class to extends Ie{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:te.invalid_string,...xe.errToObj(r)}),this.nonempty=t=>this.min(1,xe.errToObj(t)),this.trim=()=>new to({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new to({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new to({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==ue.string){const o=this._getOrReturnCtx(t);return fe(o,{code:te.invalid_type,expected:ue.string,received:o.parsedType}),ke}const r=new pr;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),fe(i,{code:te.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const s=t.data.length>o.value,a=t.data.length"u"?null:t==null?void 0:t.precision,offset:(n=t==null?void 0:t.offset)!==null&&n!==void 0?n:!1,...xe.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...xe.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...xe.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...xe.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...xe.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...xe.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...xe.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...xe.errToObj(n)})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new to({checks:[],typeName:Ee.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...Re(e)})};function Oee(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r,o=parseInt(e.toFixed(i).replace(".","")),s=parseInt(t.toFixed(i).replace(".",""));return o%s/Math.pow(10,i)}class Ga extends Ie{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==ue.number){const o=this._getOrReturnCtx(t);return fe(o,{code:te.invalid_type,expected:ue.number,received:o.parsedType}),ke}let r;const i=new pr;for(const o of this._def.checks)o.kind==="int"?Ze.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),fe(r,{code:te.invalid_type,expected:"integer",received:"float",message:o.message}),i.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),fe(r,{code:te.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?Oee(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),fe(r,{code:te.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),fe(r,{code:te.not_finite,message:o.message}),i.dirty()):Ze.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,xe.toString(n))}gt(t,n){return this.setLimit("min",t,!1,xe.toString(n))}lte(t,n){return this.setLimit("max",t,!0,xe.toString(n))}lt(t,n){return this.setLimit("max",t,!1,xe.toString(n))}setLimit(t,n,r,i){return new Ga({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:xe.toString(i)}]})}_addCheck(t){return new Ga({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:xe.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:xe.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:xe.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:xe.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:xe.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:xe.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:xe.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:xe.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:xe.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&&Ze.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew Ga({checks:[],typeName:Ee.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...Re(e)});class Ha extends Ie{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==ue.bigint){const o=this._getOrReturnCtx(t);return fe(o,{code:te.invalid_type,expected:ue.bigint,received:o.parsedType}),ke}let r;const i=new pr;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),fe(r,{code:te.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),fe(r,{code:te.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Ze.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,xe.toString(n))}gt(t,n){return this.setLimit("min",t,!1,xe.toString(n))}lte(t,n){return this.setLimit("max",t,!0,xe.toString(n))}lt(t,n){return this.setLimit("max",t,!1,xe.toString(n))}setLimit(t,n,r,i){return new Ha({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:xe.toString(i)}]})}_addCheck(t){return new Ha({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:xe.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:xe.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:xe.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:xe.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:xe.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new Ha({checks:[],typeName:Ee.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...Re(e)})};class Gh extends Ie{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ue.boolean){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.boolean,received:r.parsedType}),ke}return kr(t.data)}}Gh.create=e=>new Gh({typeName:Ee.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...Re(e)});class su extends Ie{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==ue.date){const o=this._getOrReturnCtx(t);return fe(o,{code:te.invalid_type,expected:ue.date,received:o.parsedType}),ke}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return fe(o,{code:te.invalid_date}),ke}const r=new pr;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),fe(i,{code:te.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Ze.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new su({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:xe.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:xe.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew su({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:Ee.ZodDate,...Re(e)});class _y extends Ie{_parse(t){if(this._getType(t)!==ue.symbol){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.symbol,received:r.parsedType}),ke}return kr(t.data)}}_y.create=e=>new _y({typeName:Ee.ZodSymbol,...Re(e)});class Hh extends Ie{_parse(t){if(this._getType(t)!==ue.undefined){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.undefined,received:r.parsedType}),ke}return kr(t.data)}}Hh.create=e=>new Hh({typeName:Ee.ZodUndefined,...Re(e)});class Wh extends Ie{_parse(t){if(this._getType(t)!==ue.null){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.null,received:r.parsedType}),ke}return kr(t.data)}}Wh.create=e=>new Wh({typeName:Ee.ZodNull,...Re(e)});class hd extends Ie{constructor(){super(...arguments),this._any=!0}_parse(t){return kr(t.data)}}hd.create=e=>new hd({typeName:Ee.ZodAny,...Re(e)});class Yl extends Ie{constructor(){super(...arguments),this._unknown=!0}_parse(t){return kr(t.data)}}Yl.create=e=>new Yl({typeName:Ee.ZodUnknown,...Re(e)});class $s extends Ie{_parse(t){const n=this._getOrReturnCtx(t);return fe(n,{code:te.invalid_type,expected:ue.never,received:n.parsedType}),ke}}$s.create=e=>new $s({typeName:Ee.ZodNever,...Re(e)});class by extends Ie{_parse(t){if(this._getType(t)!==ue.undefined){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.void,received:r.parsedType}),ke}return kr(t.data)}}by.create=e=>new by({typeName:Ee.ZodVoid,...Re(e)});class so extends Ie{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==ue.array)return fe(n,{code:te.invalid_type,expected:ue.array,received:n.parsedType}),ke;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(fe(n,{code:te.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((s,a)=>i.type._parseAsync(new Wo(n,s,n.path,a)))).then(s=>pr.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new Wo(n,s,n.path,a)));return pr.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new so({...this._def,minLength:{value:t,message:xe.toString(n)}})}max(t,n){return new so({...this._def,maxLength:{value:t,message:xe.toString(n)}})}length(t,n){return new so({...this._def,exactLength:{value:t,message:xe.toString(n)}})}nonempty(t){return this.min(1,t)}}so.create=(e,t)=>new so({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Ee.ZodArray,...Re(t)});function sc(e){if(e instanceof Vt){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Ts.create(sc(r))}return new Vt({...e._def,shape:()=>t})}else return e instanceof so?new so({...e._def,type:sc(e.element)}):e instanceof Ts?Ts.create(sc(e.unwrap())):e instanceof lu?lu.create(sc(e.unwrap())):e instanceof qo?qo.create(e.items.map(t=>sc(t))):e}class Vt extends Ie{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=Ze.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==ue.object){const u=this._getOrReturnCtx(t);return fe(u,{code:te.invalid_type,expected:ue.object,received:u.parsedType}),ke}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof $s&&this._def.unknownKeys==="strip"))for(const u in i.data)s.includes(u)||a.push(u);const l=[];for(const u of s){const c=o[u],d=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new Wo(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof $s){const u=this._def.unknownKeys;if(u==="passthrough")for(const c of a)l.push({key:{status:"valid",value:c},value:{status:"valid",value:i.data[c]}});else if(u==="strict")a.length>0&&(fe(i,{code:te.unrecognized_keys,keys:a}),r.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const c of a){const d=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new Wo(i,d,i.path,c)),alwaysSet:c in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const u=[];for(const c of l){const d=await c.key;u.push({key:d,value:await c.value,alwaysSet:c.alwaysSet})}return u}).then(u=>pr.mergeObjectSync(r,u)):pr.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return xe.errToObj,new Vt({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{var i,o,s,a;const l=(s=(o=(i=this._def).errorMap)===null||o===void 0?void 0:o.call(i,n,r).message)!==null&&s!==void 0?s:r.defaultError;return n.code==="unrecognized_keys"?{message:(a=xe.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new Vt({...this._def,unknownKeys:"strip"})}passthrough(){return new Vt({...this._def,unknownKeys:"passthrough"})}extend(t){return new Vt({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new Vt({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Ee.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new Vt({...this._def,catchall:t})}pick(t){const n={};return Ze.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new Vt({...this._def,shape:()=>n})}omit(t){const n={};return Ze.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new Vt({...this._def,shape:()=>n})}deepPartial(){return sc(this)}partial(t){const n={};return Ze.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new Vt({...this._def,shape:()=>n})}required(t){const n={};return Ze.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Ts;)o=o._def.innerType;n[r]=o}}),new Vt({...this._def,shape:()=>n})}keyof(){return J7(Ze.objectKeys(this.shape))}}Vt.create=(e,t)=>new Vt({shape:()=>e,unknownKeys:"strip",catchall:$s.create(),typeName:Ee.ZodObject,...Re(t)});Vt.strictCreate=(e,t)=>new Vt({shape:()=>e,unknownKeys:"strict",catchall:$s.create(),typeName:Ee.ZodObject,...Re(t)});Vt.lazycreate=(e,t)=>new Vt({shape:e,unknownKeys:"strip",catchall:$s.create(),typeName:Ee.ZodObject,...Re(t)});class qh extends Ie{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function i(o){for(const a of o)if(a.result.status==="valid")return a.result;for(const a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;const s=o.map(a=>new oo(a.ctx.common.issues));return fe(n,{code:te.invalid_union,unionErrors:s}),ke}if(n.common.async)return Promise.all(r.map(async o=>{const s={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:s}),ctx:s}})).then(i);{let o;const s=[];for(const l of r){const u={...n,common:{...n.common,issues:[]},parent:null},c=l._parseSync({data:n.data,path:n.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!o&&(o={result:c,ctx:u}),u.common.issues.length&&s.push(u.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const a=s.map(l=>new oo(l));return fe(n,{code:te.invalid_union,unionErrors:a}),ke}}get options(){return this._def.options}}qh.create=(e,t)=>new qh({options:e,typeName:Ee.ZodUnion,...Re(t)});const f0=e=>e instanceof Yh?f0(e.schema):e instanceof fo?f0(e.innerType()):e instanceof Zh?[e.value]:e instanceof Wa?e.options:e instanceof Qh?Object.keys(e.enum):e instanceof Jh?f0(e._def.innerType):e instanceof Hh?[void 0]:e instanceof Wh?[null]:null;class c1 extends Ie{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ue.object)return fe(n,{code:te.invalid_type,expected:ue.object,received:n.parsedType}),ke;const r=this.discriminator,i=n.data[r],o=this.optionsMap.get(i);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(fe(n,{code:te.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ke)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const i=new Map;for(const o of n){const s=f0(o.shape[t]);if(!s)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const a of s){if(i.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);i.set(a,o)}}return new c1({typeName:Ee.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...Re(r)})}}function fx(e,t){const n=fa(e),r=fa(t);if(e===t)return{valid:!0,data:e};if(n===ue.object&&r===ue.object){const i=Ze.objectKeys(t),o=Ze.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=fx(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===ue.array&&r===ue.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(cx(o)||cx(s))return ke;const a=fx(o.value,s.value);return a.valid?((dx(o)||dx(s))&&n.dirty(),{status:n.value,value:a.data}):(fe(r,{code:te.invalid_intersection_types}),ke)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,s])=>i(o,s)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}Kh.create=(e,t,n)=>new Kh({left:e,right:t,typeName:Ee.ZodIntersection,...Re(n)});class qo extends Ie{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ue.array)return fe(r,{code:te.invalid_type,expected:ue.array,received:r.parsedType}),ke;if(r.data.lengththis._def.items.length&&(fe(r,{code:te.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((s,a)=>{const l=this._def.items[a]||this._def.rest;return l?l._parse(new Wo(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>pr.mergeArray(n,s)):pr.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new qo({...this._def,rest:t})}}qo.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new qo({items:e,typeName:Ee.ZodTuple,rest:null,...Re(t)})};class Xh extends Ie{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ue.object)return fe(r,{code:te.invalid_type,expected:ue.object,received:r.parsedType}),ke;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new Wo(r,a,r.path,a)),value:s._parse(new Wo(r,r.data[a],r.path,a))});return r.common.async?pr.mergeObjectAsync(n,i):pr.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof Ie?new Xh({keyType:t,valueType:n,typeName:Ee.ZodRecord,...Re(r)}):new Xh({keyType:to.create(),valueType:t,typeName:Ee.ZodRecord,...Re(n)})}}class Sy extends Ie{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ue.map)return fe(r,{code:te.invalid_type,expected:ue.map,received:r.parsedType}),ke;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new Wo(r,a,r.path,[u,"key"])),value:o._parse(new Wo(r,l,r.path,[u,"value"]))}));if(r.common.async){const a=new Map;return Promise.resolve().then(async()=>{for(const l of s){const u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return ke;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}})}else{const a=new Map;for(const l of s){const u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return ke;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}Sy.create=(e,t,n)=>new Sy({valueType:t,keyType:e,typeName:Ee.ZodMap,...Re(n)});class au extends Ie{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==ue.set)return fe(r,{code:te.invalid_type,expected:ue.set,received:r.parsedType}),ke;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(fe(r,{code:te.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),n.dirty());const o=this._def.valueType;function s(l){const u=new Set;for(const c of l){if(c.status==="aborted")return ke;c.status==="dirty"&&n.dirty(),u.add(c.value)}return{status:n.value,value:u}}const a=[...r.data.values()].map((l,u)=>o._parse(new Wo(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new au({...this._def,minSize:{value:t,message:xe.toString(n)}})}max(t,n){return new au({...this._def,maxSize:{value:t,message:xe.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}au.create=(e,t)=>new au({valueType:e,minSize:null,maxSize:null,typeName:Ee.ZodSet,...Re(t)});class Vc extends Ie{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ue.function)return fe(n,{code:te.invalid_type,expected:ue.function,received:n.parsedType}),ke;function r(a,l){return yy({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,my(),jh].filter(u=>!!u),issueData:{code:te.invalid_arguments,argumentsError:l}})}function i(a,l){return yy({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,my(),jh].filter(u=>!!u),issueData:{code:te.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;if(this._def.returns instanceof pd){const a=this;return kr(async function(...l){const u=new oo([]),c=await a._def.args.parseAsync(l,o).catch(h=>{throw u.addIssue(r(l,h)),u}),d=await Reflect.apply(s,this,c);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw u.addIssue(i(d,h)),u})})}else{const a=this;return kr(function(...l){const u=a._def.args.safeParse(l,o);if(!u.success)throw new oo([r(l,u.error)]);const c=Reflect.apply(s,this,u.data),d=a._def.returns.safeParse(c,o);if(!d.success)throw new oo([i(c,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new Vc({...this._def,args:qo.create(t).rest(Yl.create())})}returns(t){return new Vc({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new Vc({args:t||qo.create([]).rest(Yl.create()),returns:n||Yl.create(),typeName:Ee.ZodFunction,...Re(r)})}}class Yh extends Ie{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Yh.create=(e,t)=>new Yh({getter:e,typeName:Ee.ZodLazy,...Re(t)});class Zh extends Ie{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return fe(n,{received:n.data,code:te.invalid_literal,expected:this._def.value}),ke}return{status:"valid",value:t.data}}get value(){return this._def.value}}Zh.create=(e,t)=>new Zh({value:e,typeName:Ee.ZodLiteral,...Re(t)});function J7(e,t){return new Wa({values:e,typeName:Ee.ZodEnum,...Re(t)})}class Wa extends Ie{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return fe(n,{expected:Ze.joinValues(r),received:n.parsedType,code:te.invalid_type}),ke}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return fe(n,{received:n.data,code:te.invalid_enum_value,options:r}),ke}return kr(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t){return Wa.create(t)}exclude(t){return Wa.create(this.options.filter(n=>!t.includes(n)))}}Wa.create=J7;class Qh extends Ie{_parse(t){const n=Ze.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==ue.string&&r.parsedType!==ue.number){const i=Ze.objectValues(n);return fe(r,{expected:Ze.joinValues(i),received:r.parsedType,code:te.invalid_type}),ke}if(n.indexOf(t.data)===-1){const i=Ze.objectValues(n);return fe(r,{received:r.data,code:te.invalid_enum_value,options:i}),ke}return kr(t.data)}get enum(){return this._def.values}}Qh.create=(e,t)=>new Qh({values:e,typeName:Ee.ZodNativeEnum,...Re(t)});class pd extends Ie{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==ue.promise&&n.common.async===!1)return fe(n,{code:te.invalid_type,expected:ue.promise,received:n.parsedType}),ke;const r=n.parsedType===ue.promise?n.data:Promise.resolve(n.data);return kr(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}pd.create=(e,t)=>new pd({type:e,typeName:Ee.ZodPromise,...Re(t)});class fo extends Ie{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ee.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null,o={addIssue:s=>{fe(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),i.type==="preprocess"){const s=i.transform(r.data,o);return r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(s).then(a=>this._def.schema._parseAsync({data:a,path:r.path,parent:r})):this._def.schema._parseSync({data:s,path:r.path,parent:r})}if(i.type==="refinement"){const s=a=>{const l=i.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?ke:(a.status==="dirty"&&n.dirty(),s(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?ke:(a.status==="dirty"&&n.dirty(),s(a.value).then(()=>({status:n.value,value:a.value}))))}if(i.type==="transform")if(r.common.async===!1){const s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Vh(s))return s;const a=i.transform(s.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(s=>Vh(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Ze.assertNever(i)}}fo.create=(e,t,n)=>new fo({schema:e,typeName:Ee.ZodEffects,effect:t,...Re(n)});fo.createWithPreprocess=(e,t,n)=>new fo({schema:t,effect:{type:"preprocess",transform:e},typeName:Ee.ZodEffects,...Re(n)});class Ts extends Ie{_parse(t){return this._getType(t)===ue.undefined?kr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ts.create=(e,t)=>new Ts({innerType:e,typeName:Ee.ZodOptional,...Re(t)});class lu extends Ie{_parse(t){return this._getType(t)===ue.null?kr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}lu.create=(e,t)=>new lu({innerType:e,typeName:Ee.ZodNullable,...Re(t)});class Jh extends Ie{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===ue.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}Jh.create=(e,t)=>new Jh({innerType:e,typeName:Ee.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...Re(t)});class wy extends Ie{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return vy(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new oo(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new oo(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}wy.create=(e,t)=>new wy({innerType:e,typeName:Ee.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...Re(t)});class xy extends Ie{_parse(t){if(this._getType(t)!==ue.nan){const r=this._getOrReturnCtx(t);return fe(r,{code:te.invalid_type,expected:ue.nan,received:r.parsedType}),ke}return{status:"valid",value:t.data}}}xy.create=e=>new xy({typeName:Ee.ZodNaN,...Re(e)});const Ree=Symbol("zod_brand");class eN extends Ie{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class rg extends Ie{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?ke:o.status==="dirty"?(n.dirty(),Q7(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?ke:i.status==="dirty"?(n.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(t,n){return new rg({in:t,out:n,typeName:Ee.ZodPipeline})}}class Cy extends Ie{_parse(t){const n=this._def.innerType._parse(t);return Vh(n)&&(n.value=Object.freeze(n.value)),n}}Cy.create=(e,t)=>new Cy({innerType:e,typeName:Ee.ZodReadonly,...Re(t)});const tN=(e,t={},n)=>e?hd.create().superRefine((r,i)=>{var o,s;if(!e(r)){const a=typeof t=="function"?t(r):typeof t=="string"?{message:t}:t,l=(s=(o=a.fatal)!==null&&o!==void 0?o:n)!==null&&s!==void 0?s:!0,u=typeof a=="string"?{message:a}:a;i.addIssue({code:"custom",...u,fatal:l})}}):hd.create(),Iee={object:Vt.lazycreate};var Ee;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(Ee||(Ee={}));const Mee=(e,t={message:`Input not instance of ${e.name}`})=>tN(n=>n instanceof e,t),nN=to.create,rN=Ga.create,Nee=xy.create,Dee=Ha.create,iN=Gh.create,Lee=su.create,$ee=_y.create,Fee=Hh.create,Bee=Wh.create,zee=hd.create,Uee=Yl.create,jee=$s.create,Vee=by.create,Gee=so.create,Hee=Vt.create,Wee=Vt.strictCreate,qee=qh.create,Kee=c1.create,Xee=Kh.create,Yee=qo.create,Zee=Xh.create,Qee=Sy.create,Jee=au.create,ete=Vc.create,tte=Yh.create,nte=Zh.create,rte=Wa.create,ite=Qh.create,ote=pd.create,Y6=fo.create,ste=Ts.create,ate=lu.create,lte=fo.createWithPreprocess,ute=rg.create,cte=()=>nN().optional(),dte=()=>rN().optional(),fte=()=>iN().optional(),hte={string:e=>to.create({...e,coerce:!0}),number:e=>Ga.create({...e,coerce:!0}),boolean:e=>Gh.create({...e,coerce:!0}),bigint:e=>Ha.create({...e,coerce:!0}),date:e=>su.create({...e,coerce:!0})},pte=ke;var j=Object.freeze({__proto__:null,defaultErrorMap:jh,setErrorMap:vee,getErrorMap:my,makeIssue:yy,EMPTY_PATH:_ee,addIssueToContext:fe,ParseStatus:pr,INVALID:ke,DIRTY:Q7,OK:kr,isAborted:cx,isDirty:dx,isValid:Vh,isAsync:vy,get util(){return Ze},get objectUtil(){return ux},ZodParsedType:ue,getParsedType:fa,ZodType:Ie,ZodString:to,ZodNumber:Ga,ZodBigInt:Ha,ZodBoolean:Gh,ZodDate:su,ZodSymbol:_y,ZodUndefined:Hh,ZodNull:Wh,ZodAny:hd,ZodUnknown:Yl,ZodNever:$s,ZodVoid:by,ZodArray:so,ZodObject:Vt,ZodUnion:qh,ZodDiscriminatedUnion:c1,ZodIntersection:Kh,ZodTuple:qo,ZodRecord:Xh,ZodMap:Sy,ZodSet:au,ZodFunction:Vc,ZodLazy:Yh,ZodLiteral:Zh,ZodEnum:Wa,ZodNativeEnum:Qh,ZodPromise:pd,ZodEffects:fo,ZodTransformer:fo,ZodOptional:Ts,ZodNullable:lu,ZodDefault:Jh,ZodCatch:wy,ZodNaN:xy,BRAND:Ree,ZodBranded:eN,ZodPipeline:rg,ZodReadonly:Cy,custom:tN,Schema:Ie,ZodSchema:Ie,late:Iee,get ZodFirstPartyTypeKind(){return Ee},coerce:hte,any:zee,array:Gee,bigint:Dee,boolean:iN,date:Lee,discriminatedUnion:Kee,effect:Y6,enum:rte,function:ete,instanceof:Mee,intersection:Xee,lazy:tte,literal:nte,map:Qee,nan:Nee,nativeEnum:ite,never:jee,null:Bee,nullable:ate,number:rN,object:Hee,oboolean:fte,onumber:dte,optional:ste,ostring:cte,pipeline:ute,preprocess:lte,promise:ote,record:Zee,set:Jee,strictObject:Wee,string:nN,symbol:$ee,transformer:Y6,tuple:Yee,undefined:Fee,union:qee,unknown:Uee,void:Vee,NEVER:pte,ZodIssueCode:te,quotelessJson:yee,ZodError:oo});const gte=j.string(),kAe=e=>gte.safeParse(e).success,mte=j.string(),PAe=e=>mte.safeParse(e).success,yte=j.string(),OAe=e=>yte.safeParse(e).success,vte=j.string(),RAe=e=>vte.safeParse(e).success,_te=j.number().int().min(1),IAe=e=>_te.safeParse(e).success,bte=j.number().min(1),MAe=e=>bte.safeParse(e).success,oN=j.enum(["euler","deis","ddim","ddpm","dpmpp_2s","dpmpp_2m","dpmpp_2m_sde","dpmpp_sde","heun","kdpm_2","lms","pndm","unipc","euler_k","dpmpp_2s_k","dpmpp_2m_k","dpmpp_2m_sde_k","dpmpp_sde_k","heun_k","lms_k","euler_a","kdpm_2_a"]),NAe=e=>oN.safeParse(e).success,DAe={euler:"Euler",deis:"DEIS",ddim:"DDIM",ddpm:"DDPM",dpmpp_sde:"DPM++ SDE",dpmpp_2s:"DPM++ 2S",dpmpp_2m:"DPM++ 2M",dpmpp_2m_sde:"DPM++ 2M SDE",heun:"Heun",kdpm_2:"KDPM 2",lms:"LMS",pndm:"PNDM",unipc:"UniPC",euler_k:"Euler Karras",dpmpp_sde_k:"DPM++ SDE Karras",dpmpp_2s_k:"DPM++ 2S Karras",dpmpp_2m_k:"DPM++ 2M Karras",dpmpp_2m_sde_k:"DPM++ 2M SDE Karras",heun_k:"Heun Karras",lms_k:"LMS Karras",euler_a:"Euler Ancestral",kdpm_2_a:"KDPM 2 Ancestral"},Ste=j.number().int().min(0).max(mee),LAe=e=>Ste.safeParse(e).success,wte=j.number().multipleOf(8).min(64),$Ae=e=>wte.safeParse(e).success,xte=j.number().multipleOf(8).min(64),FAe=e=>xte.safeParse(e).success,$d=j.enum(["sd-1","sd-2","sdxl","sdxl-refiner"]),p5=j.object({model_name:j.string().min(1),base_model:$d,model_type:j.literal("main")}),BAe=e=>p5.safeParse(e).success,g5=j.object({model_name:j.string().min(1),base_model:j.literal("sdxl-refiner"),model_type:j.literal("main")}),zAe=e=>g5.safeParse(e).success,Cte=j.object({model_name:j.string().min(1),base_model:$d,model_type:j.literal("onnx")}),Fd=j.union([p5,Cte]),Ete=j.object({model_name:j.string().min(1),base_model:$d}),UAe=j.object({model_name:j.string().min(1),base_model:$d}),jAe=j.object({model_name:j.string().min(1),base_model:$d}),Tte=j.number().min(0).max(1),VAe=e=>Tte.safeParse(e).success;j.enum(["fp16","fp32"]);const Ate=j.number().min(1).max(10),GAe=e=>Ate.safeParse(e).success,kte=j.number().min(1).max(10),HAe=e=>kte.safeParse(e).success,Pte=j.number().min(0).max(1),WAe=e=>Pte.safeParse(e).success;j.enum(["box","gaussian"]);const po={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:"euler",maskBlur:16,maskBlurMethod:"box",canvasCoherenceSteps:20,canvasCoherenceStrength:.3,seed:0,seedWeights:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,shouldRandomizeSeed:!0,shouldUseNoiseSettings:!1,steps:50,threshold:0,tileSize:32,variationAmount:.1,width:512,shouldUseSymmetry:!1,horizontalSymmetrySteps:0,verticalSymmetrySteps:0,model:null,vae:null,vaePrecision:"fp32",seamlessXAxis:!1,seamlessYAxis:!1,clipSkip:0,shouldUseCpuNoise:!0,shouldShowAdvancedOptions:!1,aspectRatio:null,shouldLockAspectRatio:!1},Ote=po,sN=Ht({name:"generation",initialState:Ote,reducers:{setPositivePrompt:(e,t)=>{e.positivePrompt=t.payload},setNegativePrompt:(e,t)=>{e.negativePrompt=t.payload},setIterations:(e,t)=>{e.iterations=t.payload},setSteps:(e,t)=>{e.steps=t.payload},clampSymmetrySteps:e=>{e.horizontalSymmetrySteps=ya(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=ya(e.verticalSymmetrySteps,0,e.steps)},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},toggleSize:e=>{const[t,n]=[e.width,e.height];e.width=n,e.height=t},setScheduler:(e,t)=>{e.scheduler=t.payload},setSeed:(e,t)=>{e.seed=t.payload,e.shouldRandomizeSeed=!1},setImg2imgStrength:(e,t)=>{e.img2imgStrength=t.payload},setSeamlessXAxis:(e,t)=>{e.seamlessXAxis=t.payload},setSeamlessYAxis:(e,t)=>{e.seamlessYAxis=t.payload},setShouldFitToWidthHeight:(e,t)=>{e.shouldFitToWidthHeight=t.payload},resetSeed:e=>{e.seed=-1},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},resetParametersState:e=>({...e,...po}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setMaskBlur:(e,t)=>{e.maskBlur=t.payload},setMaskBlurMethod:(e,t)=>{e.maskBlurMethod=t.payload},setCanvasCoherenceSteps:(e,t)=>{e.canvasCoherenceSteps=t.payload},setCanvasCoherenceStrength:(e,t)=>{e.canvasCoherenceStrength=t.payload},setTileSize:(e,t)=>{e.tileSize=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},setShouldUseSymmetry:(e,t)=>{e.shouldUseSymmetry=t.payload},setHorizontalSymmetrySteps:(e,t)=>{e.horizontalSymmetrySteps=t.payload},setVerticalSymmetrySteps:(e,t)=>{e.verticalSymmetrySteps=t.payload},setShouldUseNoiseSettings:(e,t)=>{e.shouldUseNoiseSettings=t.payload},initialImageChanged:(e,t)=>{const{image_name:n,width:r,height:i}=t.payload;e.initialImage={imageName:n,width:r,height:i}},modelChanged:(e,t)=>{if(e.model=t.payload,e.model===null)return;const{maxClip:n}=gee[e.model.base_model];e.clipSkip=ya(e.clipSkip,0,n)},vaeSelected:(e,t)=>{e.vae=t.payload},vaePrecisionChanged:(e,t)=>{e.vaePrecision=t.payload},setClipSkip:(e,t)=>{e.clipSkip=t.payload},shouldUseCpuNoiseChanged:(e,t)=>{e.shouldUseCpuNoise=t.payload},setShouldShowAdvancedOptions:(e,t)=>{e.shouldShowAdvancedOptions=t.payload,t.payload||(e.clipSkip=0)},setAspectRatio:(e,t)=>{const n=t.payload;e.aspectRatio=n,n&&(e.height=Po(e.width/n,8))},setShouldLockAspectRatio:(e,t)=>{e.shouldLockAspectRatio=t.payload}},extraReducers:e=>{e.addCase(hee,(t,n)=>{var i;const r=(i=n.payload.sd)==null?void 0:i.defaultModel;if(r&&!t.model){const[o,s,a]=r.split("/"),l=p5.safeParse({model_name:a,base_model:o,model_type:s});l.success&&(t.model=l.data)}}),e.addCase(Ite,(t,n)=>{n.payload||(t.clipSkip=0)})}}),{clampSymmetrySteps:qAe,clearInitialImage:m5,resetParametersState:KAe,resetSeed:XAe,setCfgScale:YAe,setWidth:Z6,setHeight:Q6,toggleSize:ZAe,setImg2imgStrength:QAe,setInfillMethod:Rte,setIterations:JAe,setPerlin:eke,setPositivePrompt:tke,setNegativePrompt:nke,setScheduler:rke,setMaskBlur:ike,setMaskBlurMethod:oke,setCanvasCoherenceSteps:ske,setCanvasCoherenceStrength:ake,setSeed:lke,setSeedWeights:uke,setShouldFitToWidthHeight:cke,setShouldGenerateVariations:dke,setShouldRandomizeSeed:fke,setSteps:hke,setThreshold:pke,setTileSize:gke,setVariationAmount:mke,setShouldUseSymmetry:yke,setHorizontalSymmetrySteps:vke,setVerticalSymmetrySteps:_ke,initialImageChanged:d1,modelChanged:va,vaeSelected:aN,setShouldUseNoiseSettings:bke,setSeamlessXAxis:Ske,setSeamlessYAxis:wke,setClipSkip:xke,shouldUseCpuNoiseChanged:Cke,setShouldShowAdvancedOptions:Ite,setAspectRatio:Mte,setShouldLockAspectRatio:Eke,vaePrecisionChanged:Tke}=sN.actions,Nte=sN.reducer;let br=[],ig=(e,t)=>{let n=[],r={get(){return r.lc||r.listen(()=>{})(),r.value},l:t||0,lc:0,listen(i,o){return r.lc=n.push(i,o||r.l)/2,()=>{let s=n.indexOf(i);~s&&(n.splice(s,2),r.lc--,r.lc||r.off())}},notify(i){let o=!br.length;for(let s=0;s(e.events=e.events||{},e.events[n+om]||(e.events[n+om]=r(i=>{e.events[n].reduceRight((o,s)=>(s(o),o),{shared:{},...i})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let i=e.events[n],o=i.indexOf(t);i.splice(o,1),i.length||(delete e.events[n],e.events[n+om](),delete e.events[n+om])}),$te=1e3,Fte=(e,t)=>Lte(e,r=>{let i=t(r);i&&e.events[im].push(i)},Dte,r=>{let i=e.listen;e.listen=(...s)=>(!e.lc&&!e.active&&(e.active=!0,r()),i(...s));let o=e.off;return e.events[im]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[im])s();e.events[im]=[]}},$te)},()=>{e.listen=i,e.off=o}}),Bte=(e,t)=>{Array.isArray(e)||(e=[e]);let n,r=()=>{let o=e.map(s=>s.get());(n===void 0||o.some((s,a)=>s!==n[a]))&&(n=o,i.set(t(...o)))},i=ig(void 0,Math.max(...e.map(o=>o.l))+1);return Fte(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const zte={"Content-Type":"application/json"},Ute=/\/*$/;function jte(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e;async function o(s,a){const{headers:l,body:u,params:c={},parseAs:d="json",querySerializer:f=n??Vte,bodySerializer:h=r??Gte,...p}=a||{},m=Hte(s,{baseUrl:i.baseUrl,params:c,querySerializer:f}),b=Wte(zte,e==null?void 0:e.headers,l,c.header),_={redirect:"follow",...i,...p,headers:b};u&&(_.body=h(u)),_.body instanceof FormData&&b.delete("Content-Type");const y=await t(m,_);if(y.status===204||y.headers.get("Content-Length")==="0")return y.ok?{data:{},response:y}:{error:{},response:y};if(y.ok){let v=y.body;if(d!=="stream"){const S=y.clone();v=typeof S[d]=="function"?await S[d]():await S.text()}return{data:v,response:y}}let g={};try{g=await y.clone().json()}catch{g=await y.clone().text()}return{error:g,response:y}}return{async GET(s,a){return o(s,{...a,method:"GET"})},async PUT(s,a){return o(s,{...a,method:"PUT"})},async POST(s,a){return o(s,{...a,method:"POST"})},async DELETE(s,a){return o(s,{...a,method:"DELETE"})},async OPTIONS(s,a){return o(s,{...a,method:"OPTIONS"})},async HEAD(s,a){return o(s,{...a,method:"HEAD"})},async PATCH(s,a){return o(s,{...a,method:"PATCH"})},async TRACE(s,a){return o(s,{...a,method:"TRACE"})}}}function Vte(e){const t=new URLSearchParams;if(e&&typeof e=="object")for(const[n,r]of Object.entries(e))r!=null&&t.set(n,r);return t.toString()}function Gte(e){return JSON.stringify(e)}function Hte(e,t){let n=`${t.baseUrl?t.baseUrl.replace(Ute,""):""}${e}`;if(t.params.path)for(const[r,i]of Object.entries(t.params.path))n=n.replace(`{${r}}`,encodeURIComponent(String(i)));if(t.params.query){const r=t.querySerializer(t.params.query);r&&(n+=`?${r}`)}return n}function Wte(...e){const t=new Headers;for(const n of e){if(!n||typeof n!="object")continue;const r=n instanceof Headers?n.entries():Object.entries(n);for(const[i,o]of r)o===null?t.delete(i):o!==void 0&&t.set(i,o)}return t}const ep=ig(),tp=ig(),Ey=ig(),f1=Bte([ep,tp,Ey],(e,t,n)=>jte({headers:{...e?{Authorization:`Bearer ${e}`}:{},...n?{"project-id":n}:{}},baseUrl:`${t??""}`})),er=Va("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{POST:r}=f1.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{body:n});return o?t({arg:e,status:s.status,error:o}):i}),qte=e=>Ar(e)&&"status"in e,Kte=e=>Ar(e)&&"detail"in e,Bd=Va("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{PUT:r}=f1.get(),{error:i,response:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(i){if(qte(i)&&i.status===403)return t({arg:e,status:o.status,error:i.body.detail});if(Kte(i)&&o.status===403)return t({arg:e,status:o.status,error:i.detail});if(i)return t({arg:e,status:o.status,error:i})}}),al=Va("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{DELETE:r}=f1.get(),{data:i,error:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});Va("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{GET:r}=f1.get(),{data:i,error:o}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const lN=Ni(er.rejected,Bd.rejected),sm=(e,t,n,r,i,o,s)=>{const a=Math.floor(e/2-(n+i/2)*s),l=Math.floor(t/2-(r+o/2)*s);return{x:a,y:l}},am=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r;return Math.min(1,Math.min(o,s))},Ake=.999,kke=.1,Pke=20,lm=.95,Oke=30,Rke=10,Xte=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),Gu=e=>{const{width:t,height:n}=e,r={width:t,height:n},i=512*512,o=t/n;let s=t*n,a=448;for(;s1?(r.width=a,r.height=Po(a/o,64)):o<1&&(r.height=a,r.width=Po(a*o,64)),s=r.width*r.height;return r},Yte=e=>({width:Po(e.width,64),height:Po(e.height,64)}),Ike=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],Mke=[{label:"None",value:"none"},{label:"Auto",value:"auto"},{label:"Manual",value:"manual"}],uN=e=>e.kind==="line"&&e.layer==="mask",Nke=e=>e.kind==="line"&&e.layer==="base",Zte=e=>e.kind==="image"&&e.layer==="base",Dke=e=>e.kind==="fillRect"&&e.layer==="base",Lke=e=>e.kind==="eraseRect"&&e.layer==="base",Qte=e=>e.kind==="line",ac={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},cN={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"none",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,futureLayerStates:[],isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:ac,maskColor:{r:255,g:90,b:90,a:1},maxHistory:128,minimumStageScale:1,pastLayerStates:[],scaledBoundingBoxDimensions:{width:512,height:512},shouldAntialias:!0,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,stageCoordinates:{x:0,y:0},stageDimensions:{width:0,height:0},stageScale:1,tool:"brush"},dN=Ht({name:"canvas",initialState:cN,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(Jt(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!uN(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,{width:r,height:i}=n,{stageDimensions:o}=e,s={width:nm(ya(r,64,512),64),height:nm(ya(i,64,512),64)},a={x:Po(r/2-s.width/2,64),y:Po(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=Gu(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Jt(e.layerState)),e.layerState={...ac,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[];const l=am(o.width,o.height,r,i,lm),u=sm(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u},setBoundingBoxDimensions:(e,t)=>{const n=Yte(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=Gu(n);e.scaledBoundingBoxDimensions=r}},flipBoundingBoxAxes:e=>{const[t,n]=[e.boundingBoxDimensions.width,e.boundingBoxDimensions.height];e.boundingBoxDimensions={width:n,height:t}},setBoundingBoxCoordinates:(e,t)=>{e.boundingBoxCoordinates=Xte(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=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=[]},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},canvasSessionIdChanged:(e,t)=>{e.layerState.stagingArea.sessionId=t.payload},stagingAreaInitialized:(e,t)=>{const{sessionId:n,boundingBox:r}=t.payload;e.layerState.stagingArea={boundingBox:r,sessionId:n,images:[],selectedImageIndex:-1}},addImageToStagingArea:(e,t)=>{const n=t.payload;!n||!e.layerState.stagingArea.boundingBox||(e.pastLayerStates.push(Jt(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea.images.push({kind:"image",layer:"base",...e.layerState.stagingArea.boundingBox,imageName:n.image_name}),e.layerState.stagingArea.selectedImageIndex=e.layerState.stagingArea.images.length-1,e.futureLayerStates=[])},discardStagedImages:e=>{e.pastLayerStates.push(Jt(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...ac.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(Jt(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(Jt(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:s}=e;if(n==="move"||n==="colorPicker")return;const a=o/2,l=r==="base"&&n==="brush"?{color:i}:{};e.pastLayerStates.push(Jt(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const u={kind:"line",layer:r,tool:n,strokeWidth:a,points:t.payload,...l};s&&(u.clip={...e.boundingBoxCoordinates,...e.boundingBoxDimensions}),e.layerState.objects.push(u),e.futureLayerStates=[]},addPointToCurrentLine:(e,t)=>{const n=e.layerState.objects.findLast(Qte);n&&n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();t&&(e.futureLayerStates.unshift(Jt(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();t&&(e.pastLayerStates.push(Jt(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(Jt(e.layerState)),e.layerState=ac,e.futureLayerStates=[]},canvasResized:(e,t)=>{const{width:n,height:r}=t.payload,i={width:Math.floor(n),height:Math.floor(r)};if(e.stageDimensions=i,!e.layerState.objects.find(Zte)){const o=am(i.width,i.height,512,512,lm),s=sm(i.width,i.height,0,0,512,512,o),a={width:512,height:512};if(e.stageScale=o,e.stageCoordinates=s,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=a,e.boundingBoxScaleMethod==="auto"){const l=Gu(a);e.scaledBoundingBoxDimensions=l}}},resetCanvasView:(e,t)=>{const{contentRect:n,shouldScaleTo1:r}=t.payload,{stageDimensions:{width:i,height:o}}=e,{x:s,y:a,width:l,height:u}=n;if(l!==0&&u!==0){const c=r?1:am(i,o,l,u,lm),d=sm(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=am(i,o,512,512,lm),d=sm(i,o,0,0,512,512,c),f={width:512,height:512};if(e.stageScale=c,e.stageCoordinates=d,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=f,e.boundingBoxScaleMethod==="auto"){const h=Gu(f);e.scaledBoundingBoxDimensions=h}}},nextStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex,n=e.layerState.stagingArea.images.length;e.layerState.stagingArea.selectedImageIndex=Math.min(t+1,n-1)},prevStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex;e.layerState.stagingArea.selectedImageIndex=Math.max(t-1,0)},commitStagingAreaImage:(e,t)=>{if(!e.layerState.stagingArea.images.length)return;const{images:n,selectedImageIndex:r}=e.layerState.stagingArea;e.pastLayerStates.push(Jt(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const i=n[r];i&&e.layerState.objects.push({...i}),e.layerState.stagingArea={...ac.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,s=r.height/i;if(n.x<0||n.x+t.width>o||n.y<0||n.y+t.height>s){const a={width:nm(ya(o,64,512),64),height:nm(ya(s,64,512),64)},l={x:Po(o/2-a.width/2,64),y:Po(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=Gu(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=Gu(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},setShouldAntialias:(e,t)=>{e.shouldAntialias=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(Jt(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}},extraReducers:e=>{e.addCase(al.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=ac.stagingArea)}),e.addCase(Mte,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=Po(t.boundingBoxDimensions.width/r,64))})}}),{addEraseRect:$ke,addFillRect:Fke,addImageToStagingArea:Jte,addLine:Bke,addPointToCurrentLine:zke,clearCanvasHistory:Uke,clearMask:jke,commitColorPickerColor:Vke,commitStagingAreaImage:ene,discardStagedImages:Gke,fitBoundingBoxToStage:Hke,mouseLeftCanvas:Wke,nextStagingAreaImage:qke,prevStagingAreaImage:Kke,redo:Xke,resetCanvas:y5,resetCanvasInteractionState:Yke,resetCanvasView:Zke,setBoundingBoxCoordinates:Qke,setBoundingBoxDimensions:J6,setBoundingBoxPreviewFill:Jke,setBoundingBoxScaleMethod:e8e,flipBoundingBoxAxes:t8e,setBrushColor:n8e,setBrushSize:r8e,setColorPickerColor:i8e,setCursorPosition:o8e,setInitialCanvasImage:fN,setIsDrawing:s8e,setIsMaskEnabled:a8e,setIsMouseOverBoundingBox:l8e,setIsMoveBoundingBoxKeyHeld:u8e,setIsMoveStageKeyHeld:c8e,setIsMovingBoundingBox:d8e,setIsMovingStage:f8e,setIsTransformingBoundingBox:h8e,setLayer:p8e,setMaskColor:g8e,setMergedCanvas:tne,setShouldAutoSave:m8e,setShouldCropToBoundingBoxOnSave:y8e,setShouldDarkenOutsideBoundingBox:v8e,setShouldLockBoundingBox:_8e,setShouldPreserveMaskedArea:b8e,setShouldShowBoundingBox:S8e,setShouldShowBrush:w8e,setShouldShowBrushPreview:x8e,setShouldShowCanvasDebugInfo:C8e,setShouldShowCheckboardTransparency:E8e,setShouldShowGrid:T8e,setShouldShowIntermediates:A8e,setShouldShowStagingImage:k8e,setShouldShowStagingOutline:P8e,setShouldSnapToGrid:O8e,setStageCoordinates:R8e,setStageScale:I8e,setTool:M8e,toggleShouldLockBoundingBox:N8e,toggleTool:D8e,undo:L8e,setScaledBoundingBoxDimensions:$8e,setShouldRestrictStrokesToBox:F8e,stagingAreaInitialized:nne,canvasSessionIdChanged:rne,setShouldAntialias:B8e,canvasResized:z8e}=dN.actions,ine=dN.reducer,one={isModalOpen:!1,imagesToChange:[]},hN=Ht({name:"changeBoardModal",initialState:one,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToChangeSelected:(e,t)=>{e.imagesToChange=t.payload},changeBoardReset:e=>{e.imagesToChange=[],e.isModalOpen=!1}}}),{isModalOpenChanged:U8e,imagesToChangeSelected:j8e,changeBoardReset:V8e}=hN.actions,sne=hN.reducer,Pn=["general"],_a=["control","mask","user","other"],ane=100,um=20;/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const lne=4,eA=0,tA=1,une=2;function zd(e){let t=e.length;for(;--t>=0;)e[t]=0}const cne=0,pN=1,dne=2,fne=3,hne=258,v5=29,og=256,np=og+1+v5,Gc=30,_5=19,gN=2*np+1,Bl=15,IS=16,pne=7,b5=256,mN=16,yN=17,vN=18,hx=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),h0=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),gne=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),_N=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),mne=512,ys=new Array((np+2)*2);zd(ys);const rh=new Array(Gc*2);zd(rh);const rp=new Array(mne);zd(rp);const ip=new Array(hne-fne+1);zd(ip);const S5=new Array(v5);zd(S5);const Ty=new Array(Gc);zd(Ty);function MS(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let bN,SN,wN;function NS(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const xN=e=>e<256?rp[e]:rp[256+(e>>>7)],op=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Br=(e,t,n)=>{e.bi_valid>IS-n?(e.bi_buf|=t<>IS-e.bi_valid,e.bi_valid+=n-IS):(e.bi_buf|=t<{Br(e,n[t*2],n[t*2+1])},CN=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},yne=e=>{e.bi_valid===16?(op(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},vne=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let u,c,d,f,h,p,m=0;for(f=0;f<=Bl;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;ul&&(f=l,m++),n[c*2+1]=f,!(c>r)&&(e.bl_count[f]++,h=0,c>=a&&(h=s[c-a]),p=n[c*2],e.opt_len+=p*(f+h),o&&(e.static_len+=p*(i[c*2+1]+h)));if(m!==0){do{for(f=l-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[l]--,m-=2}while(m>0);for(f=l;f!==0;f--)for(c=e.bl_count[f];c!==0;)d=e.heap[--u],!(d>r)&&(n[d*2+1]!==f&&(e.opt_len+=(f-n[d*2+1])*n[d*2],n[d*2+1]=f),c--)}},EN=(e,t,n)=>{const r=new Array(Bl+1);let i=0,o,s;for(o=1;o<=Bl;o++)i=i+n[o-1]<<1,r[o]=i;for(s=0;s<=t;s++){let a=e[s*2+1];a!==0&&(e[s*2]=CN(r[a]++,a))}},_ne=()=>{let e,t,n,r,i;const o=new Array(Bl+1);for(n=0,r=0;r>=7;r{let t;for(t=0;t{e.bi_valid>8?op(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},nA=(e,t,n,r)=>{const i=t*2,o=n*2;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,o=0,s,a;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+o++]&255,r+=(e.pending_buf[e.sym_buf+o++]&255)<<8,i=e.pending_buf[e.sym_buf+o++],r===0?Oo(e,i,t):(s=ip[i],Oo(e,s+og+1,t),a=hx[s],a!==0&&(i-=S5[s],Br(e,i,a)),r--,s=xN(r),Oo(e,s,n),a=h0[s],a!==0&&(r-=Ty[s],Br(e,r,a)));while(o{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,o=t.stat_desc.elems;let s,a,l=-1,u;for(e.heap_len=0,e.heap_max=gN,s=0;s>1;s>=1;s--)DS(e,n,s);u=o;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],DS(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=a,n[u*2]=n[s*2]+n[a*2],e.depth[u]=(e.depth[s]>=e.depth[a]?e.depth[s]:e.depth[a])+1,n[s*2+1]=n[a*2+1]=u,e.heap[1]=u++,DS(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],vne(e,t),EN(n,l,e.bl_count)},iA=(e,t,n)=>{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=s,s=t[(r+1)*2+1],!(++a{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),r=0;r<=n;r++)if(o=s,s=t[(r+1)*2+1],!(++a{let t;for(iA(e,e.dyn_ltree,e.l_desc.max_code),iA(e,e.dyn_dtree,e.d_desc.max_code),px(e,e.bl_desc),t=_5-1;t>=3&&e.bl_tree[_N[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Sne=(e,t,n,r)=>{let i;for(Br(e,t-257,5),Br(e,n-1,5),Br(e,r-4,4),i=0;i{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return eA;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return tA;for(n=32;n{sA||(_ne(),sA=!0),e.l_desc=new NS(e.dyn_ltree,bN),e.d_desc=new NS(e.dyn_dtree,SN),e.bl_desc=new NS(e.bl_tree,wN),e.bi_buf=0,e.bi_valid=0,TN(e)},kN=(e,t,n,r)=>{Br(e,(cne<<1)+(r?1:0),3),AN(e),op(e,n),op(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Cne=e=>{Br(e,pN<<1,3),Oo(e,b5,ys),yne(e)},Ene=(e,t,n,r)=>{let i,o,s=0;e.level>0?(e.strm.data_type===une&&(e.strm.data_type=wne(e)),px(e,e.l_desc),px(e,e.d_desc),s=bne(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?kN(e,t,n,r):e.strategy===lne||o===i?(Br(e,(pN<<1)+(r?1:0),3),rA(e,ys,rh)):(Br(e,(dne<<1)+(r?1:0),3),Sne(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),rA(e,e.dyn_ltree,e.dyn_dtree)),TN(e),r&&AN(e)},Tne=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(ip[n]+og+1)*2]++,e.dyn_dtree[xN(t)*2]++),e.sym_next===e.sym_end);var Ane=xne,kne=kN,Pne=Ene,One=Tne,Rne=Cne,Ine={_tr_init:Ane,_tr_stored_block:kne,_tr_flush_block:Pne,_tr_tally:One,_tr_align:Rne};const Mne=(e,t,n,r)=>{let i=e&65535|0,o=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,o=o+i|0;while(--s);i%=65521,o%=65521}return i|o<<16|0};var sp=Mne;const Nne=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Dne=new Uint32Array(Nne()),Lne=(e,t,n,r)=>{const i=Dne,o=r+n;e^=-1;for(let s=r;s>>8^i[(e^t[s])&255];return e^-1};var Rn=Lne,gd={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},sg={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:$ne,_tr_stored_block:gx,_tr_flush_block:Fne,_tr_tally:Ia,_tr_align:Bne}=Ine,{Z_NO_FLUSH:Ma,Z_PARTIAL_FLUSH:zne,Z_FULL_FLUSH:Une,Z_FINISH:Ei,Z_BLOCK:aA,Z_OK:Xn,Z_STREAM_END:lA,Z_STREAM_ERROR:zo,Z_DATA_ERROR:jne,Z_BUF_ERROR:LS,Z_DEFAULT_COMPRESSION:Vne,Z_FILTERED:Gne,Z_HUFFMAN_ONLY:cm,Z_RLE:Hne,Z_FIXED:Wne,Z_DEFAULT_STRATEGY:qne,Z_UNKNOWN:Kne,Z_DEFLATED:h1}=sg,Xne=9,Yne=15,Zne=8,Qne=29,Jne=256,mx=Jne+1+Qne,ere=30,tre=19,nre=2*mx+1,rre=15,He=3,ba=258,Uo=ba+He+1,ire=32,md=42,w5=57,yx=69,vx=73,_x=91,bx=103,zl=113,$f=666,xr=1,Ud=2,uu=3,jd=4,ore=3,Ul=(e,t)=>(e.msg=gd[t],t),uA=e=>e*2-(e>4?9:0),ha=e=>{let t=e.length;for(;--t>=0;)e[t]=0},sre=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let are=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},ni=(e,t)=>{Fne(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Yr(e.strm)},et=(e,t)=>{e.pending_buf[e.pending++]=t},gf=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Sx=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=sp(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Rn(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},PN=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,o,s=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-Uo?e.strstart-(e.w_size-Uo):0,u=e.window,c=e.w_mask,d=e.prev,f=e.strstart+ba;let h=u[r+s-1],p=u[r+s];e.prev_length>=e.good_match&&(n>>=2),a>e.lookahead&&(a=e.lookahead);do if(i=t,!(u[i+s]!==p||u[i+s-1]!==h||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&rs){if(e.match_start=t,s=o,o>=a)break;h=u[r+s-1],p=u[r+s]}}while((t=d[t&c])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},yd=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Uo)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),sre(e),r+=t),e.strm.avail_in===0)break;if(n=Sx(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=He)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Na(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Na(e,e.ins_h,e.window[i+He-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,o,s=0,a=e.strm.avail_in;do{if(r=65535,o=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(r=i+e.strm.avail_in),r>o&&(r=o),r>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Yr(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(Sx(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_watero&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(Sx(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,n=o>e.w_size?e.w_size:o,i=e.strstart-e.block_start,(i>=n||(i||t===Ei)&&t!==Ma&&e.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,s=t===Ei&&e.strm.avail_in===0&&r===i?1:0,gx(e,e.block_start,r,s),e.block_start+=r,Yr(e.strm)),s?uu:xr)},$S=(e,t)=>{let n,r;for(;;){if(e.lookahead=He&&(e.ins_h=Na(e,e.ins_h,e.window[e.strstart+He-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-Uo&&(e.match_length=PN(e,n)),e.match_length>=He)if(r=Ia(e,e.strstart-e.match_start,e.match_length-He),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=He){e.match_length--;do e.strstart++,e.ins_h=Na(e,e.ins_h,e.window[e.strstart+He-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Na(e,e.ins_h,e.window[e.strstart+1]);else r=Ia(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(ni(e,!1),e.strm.avail_out===0))return xr}return e.insert=e.strstart{let n,r,i;for(;;){if(e.lookahead=He&&(e.ins_h=Na(e,e.ins_h,e.window[e.strstart+He-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=He-1,n!==0&&e.prev_length4096)&&(e.match_length=He-1)),e.prev_length>=He&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-He,r=Ia(e,e.strstart-1-e.prev_match,e.prev_length-He),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=Na(e,e.ins_h,e.window[e.strstart+He-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=He-1,e.strstart++,r&&(ni(e,!1),e.strm.avail_out===0))return xr}else if(e.match_available){if(r=Ia(e,0,e.window[e.strstart-1]),r&&ni(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return xr}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=Ia(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let n,r,i,o;const s=e.window;for(;;){if(e.lookahead<=ba){if(yd(e),e.lookahead<=ba&&t===Ma)return xr;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=He&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){o=e.strstart+ba;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=He?(n=Ia(e,1,e.match_length-He),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Ia(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(ni(e,!1),e.strm.avail_out===0))return xr}return e.insert=0,t===Ei?(ni(e,!0),e.strm.avail_out===0?uu:jd):e.sym_next&&(ni(e,!1),e.strm.avail_out===0)?xr:Ud},ure=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(yd(e),e.lookahead===0)){if(t===Ma)return xr;break}if(e.match_length=0,n=Ia(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(ni(e,!1),e.strm.avail_out===0))return xr}return e.insert=0,t===Ei?(ni(e,!0),e.strm.avail_out===0?uu:jd):e.sym_next&&(ni(e,!1),e.strm.avail_out===0)?xr:Ud};function bo(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const Ff=[new bo(0,0,0,0,ON),new bo(4,4,8,4,$S),new bo(4,5,16,8,$S),new bo(4,6,32,32,$S),new bo(4,4,16,16,Hu),new bo(8,16,32,32,Hu),new bo(8,16,128,128,Hu),new bo(8,32,128,256,Hu),new bo(32,128,258,1024,Hu),new bo(32,258,258,4096,Hu)],cre=e=>{e.window_size=2*e.w_size,ha(e.head),e.max_lazy_match=Ff[e.level].max_lazy,e.good_match=Ff[e.level].good_length,e.nice_match=Ff[e.level].nice_length,e.max_chain_length=Ff[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=He-1,e.match_available=0,e.ins_h=0};function dre(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=h1,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(nre*2),this.dyn_dtree=new Uint16Array((2*ere+1)*2),this.bl_tree=new Uint16Array((2*tre+1)*2),ha(this.dyn_ltree),ha(this.dyn_dtree),ha(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(rre+1),this.heap=new Uint16Array(2*mx+1),ha(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*mx+1),ha(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const ag=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==md&&t.status!==w5&&t.status!==yx&&t.status!==vx&&t.status!==_x&&t.status!==bx&&t.status!==zl&&t.status!==$f?1:0},RN=e=>{if(ag(e))return Ul(e,zo);e.total_in=e.total_out=0,e.data_type=Kne;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?w5:t.wrap?md:zl,e.adler=t.wrap===2?0:1,t.last_flush=-2,$ne(t),Xn},IN=e=>{const t=RN(e);return t===Xn&&cre(e.state),t},fre=(e,t)=>ag(e)||e.state.wrap!==2?zo:(e.state.gzhead=t,Xn),MN=(e,t,n,r,i,o)=>{if(!e)return zo;let s=1;if(t===Vne&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>Xne||n!==h1||r<8||r>15||t<0||t>9||o<0||o>Wne||r===8&&s!==1)return Ul(e,zo);r===8&&(r=9);const a=new dre;return e.state=a,a.strm=e,a.status=md,a.wrap=s,a.gzhead=null,a.w_bits=r,a.w_size=1<MN(e,t,h1,Yne,Zne,qne),pre=(e,t)=>{if(ag(e)||t>aA||t<0)return e?Ul(e,zo):zo;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===$f&&t!==Ei)return Ul(e,e.avail_out===0?LS:zo);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Yr(e),e.avail_out===0)return n.last_flush=-1,Xn}else if(e.avail_in===0&&uA(t)<=uA(r)&&t!==Ei)return Ul(e,LS);if(n.status===$f&&e.avail_in!==0)return Ul(e,LS);if(n.status===md&&n.wrap===0&&(n.status=zl),n.status===md){let i=h1+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=cm||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=ire),i+=31-i%31,gf(n,i),n.strstart!==0&&(gf(n,e.adler>>>16),gf(n,e.adler&65535)),e.adler=1,n.status=zl,Yr(e),n.pending!==0)return n.last_flush=-1,Xn}if(n.status===w5){if(e.adler=0,et(n,31),et(n,139),et(n,8),n.gzhead)et(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),et(n,n.gzhead.time&255),et(n,n.gzhead.time>>8&255),et(n,n.gzhead.time>>16&255),et(n,n.gzhead.time>>24&255),et(n,n.level===9?2:n.strategy>=cm||n.level<2?4:0),et(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(et(n,n.gzhead.extra.length&255),et(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Rn(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=yx;else if(et(n,0),et(n,0),et(n,0),et(n,0),et(n,0),et(n,n.level===9?2:n.strategy>=cm||n.level<2?4:0),et(n,ore),n.status=zl,Yr(e),n.pending!==0)return n.last_flush=-1,Xn}if(n.status===yx){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let a=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=a,Yr(e),n.pending!==0)return n.last_flush=-1,Xn;i=0,o-=a}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=vx}if(n.status===vx){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i)),Yr(e),n.pending!==0)return n.last_flush=-1,Xn;i=0}n.gzindexi&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=_x}if(n.status===_x){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i)),Yr(e),n.pending!==0)return n.last_flush=-1,Xn;i=0}n.gzindexi&&(e.adler=Rn(e.adler,n.pending_buf,n.pending-i,i))}n.status=bx}if(n.status===bx){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Yr(e),n.pending!==0))return n.last_flush=-1,Xn;et(n,e.adler&255),et(n,e.adler>>8&255),e.adler=0}if(n.status=zl,Yr(e),n.pending!==0)return n.last_flush=-1,Xn}if(e.avail_in!==0||n.lookahead!==0||t!==Ma&&n.status!==$f){let i=n.level===0?ON(n,t):n.strategy===cm?ure(n,t):n.strategy===Hne?lre(n,t):Ff[n.level].func(n,t);if((i===uu||i===jd)&&(n.status=$f),i===xr||i===uu)return e.avail_out===0&&(n.last_flush=-1),Xn;if(i===Ud&&(t===zne?Bne(n):t!==aA&&(gx(n,0,0,!1),t===Une&&(ha(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Yr(e),e.avail_out===0))return n.last_flush=-1,Xn}return t!==Ei?Xn:n.wrap<=0?lA:(n.wrap===2?(et(n,e.adler&255),et(n,e.adler>>8&255),et(n,e.adler>>16&255),et(n,e.adler>>24&255),et(n,e.total_in&255),et(n,e.total_in>>8&255),et(n,e.total_in>>16&255),et(n,e.total_in>>24&255)):(gf(n,e.adler>>>16),gf(n,e.adler&65535)),Yr(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Xn:lA)},gre=e=>{if(ag(e))return zo;const t=e.state.status;return e.state=null,t===zl?Ul(e,jne):Xn},mre=(e,t)=>{let n=t.length;if(ag(e))return zo;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==md||r.lookahead)return zo;if(i===1&&(e.adler=sp(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(ha(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}const o=e.avail_in,s=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,yd(r);r.lookahead>=He;){let l=r.strstart,u=r.lookahead-(He-1);do r.ins_h=Na(r,r.ins_h,r.window[l+He-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--u);r.strstart=l,r.lookahead=He-1,yd(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=He-1,r.match_available=0,e.next_in=s,e.input=a,e.avail_in=o,r.wrap=i,Xn};var yre=hre,vre=MN,_re=IN,bre=RN,Sre=fre,wre=pre,xre=gre,Cre=mre,Ere="pako deflate (from Nodeca project)",ih={deflateInit:yre,deflateInit2:vre,deflateReset:_re,deflateResetKeep:bre,deflateSetHeader:Sre,deflate:wre,deflateEnd:xre,deflateSetDictionary:Cre,deflateInfo:Ere};const Tre=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Are=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)Tre(n,r)&&(e[r]=n[r])}}return e},kre=e=>{let t=0;for(let r=0,i=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ap[254]=ap[254]=1;var Pre=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,o,s=e.length,a=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};const Ore=(e,t)=>{if(t<65534&&e.subarray&&NN)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=a-1;continue}for(s&=a===2?31:a===3?15:7;a>1&&r1){o[i++]=65533;continue}s<65536?o[i++]=s:(s-=65536,o[i++]=55296|s>>10&1023,o[i++]=56320|s&1023)}return Ore(o,i)},Ire=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+ap[e[n]]>t?n:t},lp={string2buf:Pre,buf2string:Rre,utf8border:Ire};function Mre(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var DN=Mre;const LN=Object.prototype.toString,{Z_NO_FLUSH:Nre,Z_SYNC_FLUSH:Dre,Z_FULL_FLUSH:Lre,Z_FINISH:$re,Z_OK:Ay,Z_STREAM_END:Fre,Z_DEFAULT_COMPRESSION:Bre,Z_DEFAULT_STRATEGY:zre,Z_DEFLATED:Ure}=sg;function x5(e){this.options=p1.assign({level:Bre,method:Ure,chunkSize:16384,windowBits:15,memLevel:8,strategy:zre},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new DN,this.strm.avail_out=0;let n=ih.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ay)throw new Error(gd[n]);if(t.header&&ih.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=lp.string2buf(t.dictionary):LN.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=ih.deflateSetDictionary(this.strm,r),n!==Ay)throw new Error(gd[n]);this._dict_set=!0}}x5.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?$re:Nre,typeof e=="string"?n.input=lp.string2buf(e):LN.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===Dre||o===Lre)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=ih.deflate(n,o),i===Fre)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=ih.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ay;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};x5.prototype.onData=function(e){this.chunks.push(e)};x5.prototype.onEnd=function(e){e===Ay&&(this.result=p1.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const dm=16209,jre=16191;var Vre=function(t,n){let r,i,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,C,x,A,T;const P=t.state;r=t.next_in,A=t.input,i=r+(t.avail_in-5),o=t.next_out,T=t.output,s=o-(n-t.avail_out),a=o+(t.avail_out-257),l=P.dmax,u=P.wsize,c=P.whave,d=P.wnext,f=P.window,h=P.hold,p=P.bits,m=P.lencode,b=P.distcode,_=(1<>>24,h>>>=v,p-=v,v=g>>>16&255,v===0)T[o++]=g&65535;else if(v&16){S=g&65535,v&=15,v&&(p>>=v,p-=v),p<15&&(h+=A[r++]<>>24,h>>>=v,p-=v,v=g>>>16&255,v&16){if(w=g&65535,v&=15,pl){t.msg="invalid distance too far back",P.mode=dm;break e}if(h>>>=v,p-=v,v=o-s,w>v){if(v=w-v,v>c&&P.sane){t.msg="invalid distance too far back",P.mode=dm;break e}if(C=0,x=f,d===0){if(C+=u-v,v2;)T[o++]=x[C++],T[o++]=x[C++],T[o++]=x[C++],S-=3;S&&(T[o++]=x[C++],S>1&&(T[o++]=x[C++]))}else{C=o-w;do T[o++]=T[C++],T[o++]=T[C++],T[o++]=T[C++],S-=3;while(S>2);S&&(T[o++]=T[C++],S>1&&(T[o++]=T[C++]))}}else if(v&64){t.msg="invalid distance code",P.mode=dm;break e}else{g=b[(g&65535)+(h&(1<>3,r-=S,p-=S<<3,h&=(1<{const l=a.bits;let u=0,c=0,d=0,f=0,h=0,p=0,m=0,b=0,_=0,y=0,g,v,S,w,C,x=null,A;const T=new Uint16Array(Wu+1),P=new Uint16Array(Wu+1);let L=null,R,E,k;for(u=0;u<=Wu;u++)T[u]=0;for(c=0;c=1&&T[f]===0;f--);if(h>f&&(h=f),f===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,a.bits=1,0;for(d=1;d0&&(e===fA||f!==1))return-1;for(P[1]=0,u=1;ucA||e===hA&&_>dA)return 1;for(;;){R=u-m,s[c]+1=A?(E=L[s[c]-A],k=x[s[c]-A]):(E=32+64,k=0),g=1<>m)+v]=R<<24|E<<16|k|0;while(v!==0);for(g=1<>=1;if(g!==0?(y&=g-1,y+=g):y=0,c++,--T[u]===0){if(u===f)break;u=t[n+s[c]]}if(u>h&&(y&w)!==S){for(m===0&&(m=h),C+=d,p=u-m,b=1<cA||e===hA&&_>dA)return 1;S=y&w,i[S]=h<<24|p<<16|C-o|0}}return y!==0&&(i[C+y]=u-m<<24|64<<16|0),a.bits=h,0};var oh=Kre;const Xre=0,$N=1,FN=2,{Z_FINISH:pA,Z_BLOCK:Yre,Z_TREES:fm,Z_OK:cu,Z_STREAM_END:Zre,Z_NEED_DICT:Qre,Z_STREAM_ERROR:Mi,Z_DATA_ERROR:BN,Z_MEM_ERROR:zN,Z_BUF_ERROR:Jre,Z_DEFLATED:gA}=sg,g1=16180,mA=16181,yA=16182,vA=16183,_A=16184,bA=16185,SA=16186,wA=16187,xA=16188,CA=16189,ky=16190,is=16191,BS=16192,EA=16193,zS=16194,TA=16195,AA=16196,kA=16197,PA=16198,hm=16199,pm=16200,OA=16201,RA=16202,IA=16203,MA=16204,NA=16205,US=16206,DA=16207,LA=16208,Dt=16209,UN=16210,jN=16211,eie=852,tie=592,nie=15,rie=nie,$A=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function iie(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Cu=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.modejN?1:0},VN=e=>{if(Cu(e))return Mi;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=g1,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(eie),t.distcode=t.distdyn=new Int32Array(tie),t.sane=1,t.back=-1,cu},GN=e=>{if(Cu(e))return Mi;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,VN(e)},HN=(e,t)=>{let n;if(Cu(e))return Mi;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Mi:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,GN(e))},WN=(e,t)=>{if(!e)return Mi;const n=new iie;e.state=n,n.strm=e,n.window=null,n.mode=g1;const r=HN(e,t);return r!==cu&&(e.state=null),r},oie=e=>WN(e,rie);let FA=!0,jS,VS;const sie=e=>{if(FA){jS=new Int32Array(512),VS=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(oh($N,e.lens,0,288,jS,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;oh(FN,e.lens,0,32,VS,0,e.work,{bits:5}),FA=!1}e.lencode=jS,e.lenbits=9,e.distcode=VS,e.distbits=5},qN=(e,t,n,r)=>{let i;const o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(t.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(t.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,s,a,l,u,c,d,f,h,p,m,b=0,_,y,g,v,S,w,C,x;const A=new Uint8Array(4);let T,P;const L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Cu(e)||!e.output||!e.input&&e.avail_in!==0)return Mi;n=e.state,n.mode===is&&(n.mode=BS),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,d=a,f=l,x=cu;e:for(;;)switch(n.mode){case g1:if(n.wrap===0){n.mode=BS;break}for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Rn(n.check,A,2,0),u=0,c=0,n.mode=mA;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Dt;break}if((u&15)!==gA){e.msg="unknown compression method",n.mode=Dt;break}if(u>>>=4,c-=4,C=(u&15)+8,n.wbits===0&&(n.wbits=C),C>15||C>n.wbits){e.msg="invalid window size",n.mode=Dt;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Rn(n.check,A,2,0)),u=0,c=0,n.mode=yA;case yA:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>8&255,A[2]=u>>>16&255,A[3]=u>>>24&255,n.check=Rn(n.check,A,4,0)),u=0,c=0,n.mode=vA;case vA:for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>8),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Rn(n.check,A,2,0)),u=0,c=0,n.mode=_A;case _A:if(n.flags&1024){for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Rn(n.check,A,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=bA;case bA:if(n.flags&1024&&(h=n.length,h>a&&(h=a),h&&(n.head&&(C=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+h),C)),n.flags&512&&n.wrap&4&&(n.check=Rn(n.check,r,h,o)),a-=h,o+=h,n.length-=h),n.length))break e;n.length=0,n.mode=SA;case SA:if(n.flags&2048){if(a===0)break e;h=0;do C=r[o+h++],n.head&&C&&n.length<65536&&(n.head.name+=String.fromCharCode(C));while(C&&h>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=is;break;case CA:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>=c&7,c-=c&7,n.mode=US;break}for(;c<3;){if(a===0)break e;a--,u+=r[o++]<>>=1,c-=1,u&3){case 0:n.mode=EA;break;case 1:if(sie(n),n.mode=hm,t===fm){u>>>=2,c-=2;break e}break;case 2:n.mode=AA;break;case 3:e.msg="invalid block type",n.mode=Dt}u>>>=2,c-=2;break;case EA:for(u>>>=c&7,c-=c&7;c<32;){if(a===0)break e;a--,u+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Dt;break}if(n.length=u&65535,u=0,c=0,n.mode=zS,t===fm)break e;case zS:n.mode=TA;case TA:if(h=n.length,h){if(h>a&&(h=a),h>l&&(h=l),h===0)break e;i.set(r.subarray(o,o+h),s),a-=h,o+=h,l-=h,s+=h,n.length-=h;break}n.mode=is;break;case AA:for(;c<14;){if(a===0)break e;a--,u+=r[o++]<>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Dt;break}n.have=0,n.mode=kA;case kA:for(;n.have>>=3,c-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},x=oh(Xre,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,x){e.msg="invalid code lengths set",n.mode=Dt;break}n.have=0,n.mode=PA;case PA:for(;n.have>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=_,c-=_,n.lens[n.have++]=g;else{if(g===16){for(P=_+2;c>>=_,c-=_,n.have===0){e.msg="invalid bit length repeat",n.mode=Dt;break}C=n.lens[n.have-1],h=3+(u&3),u>>>=2,c-=2}else if(g===17){for(P=_+3;c>>=_,c-=_,C=0,h=3+(u&7),u>>>=3,c-=3}else{for(P=_+7;c>>=_,c-=_,C=0,h=11+(u&127),u>>>=7,c-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Dt;break}for(;h--;)n.lens[n.have++]=C}}if(n.mode===Dt)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Dt;break}if(n.lenbits=9,T={bits:n.lenbits},x=oh($N,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,x){e.msg="invalid literal/lengths set",n.mode=Dt;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},x=oh(FN,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,x){e.msg="invalid distances set",n.mode=Dt;break}if(n.mode=hm,t===fm)break e;case hm:n.mode=pm;case pm:if(a>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=o,e.avail_in=a,n.hold=u,n.bits=c,Vre(e,f),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,n.mode===is&&(n.back=-1);break}for(n.back=0;b=n.lencode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,n.length=g,y===0){n.mode=NA;break}if(y&32){n.back=-1,n.mode=is;break}if(y&64){e.msg="invalid literal/length code",n.mode=Dt;break}n.extra=y&15,n.mode=OA;case OA:if(n.extra){for(P=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=RA;case RA:for(;b=n.distcode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,y&64){e.msg="invalid distance code",n.mode=Dt;break}n.offset=g,n.extra=y&15,n.mode=IA;case IA:if(n.extra){for(P=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Dt;break}n.mode=MA;case MA:if(l===0)break e;if(h=f-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Dt;break}h>n.wnext?(h-=n.wnext,p=n.wsize-h):p=n.wnext-h,h>n.length&&(h=n.length),m=n.window}else m=i,p=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do i[s++]=m[p++];while(--h);n.length===0&&(n.mode=pm);break;case NA:if(l===0)break e;i[s++]=n.length,l--,n.mode=pm;break;case US:if(n.wrap){for(;c<32;){if(a===0)break e;a--,u|=r[o++]<{if(Cu(e))return Mi;let t=e.state;return t.window&&(t.window=null),e.state=null,cu},uie=(e,t)=>{if(Cu(e))return Mi;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,cu):Mi},cie=(e,t)=>{const n=t.length;let r,i,o;return Cu(e)||(r=e.state,r.wrap!==0&&r.mode!==ky)?Mi:r.mode===ky&&(i=1,i=sp(i,t,n,0),i!==r.check)?BN:(o=qN(e,t,n,n),o?(r.mode=UN,zN):(r.havedict=1,cu))};var die=GN,fie=HN,hie=VN,pie=oie,gie=WN,mie=aie,yie=lie,vie=uie,_ie=cie,bie="pako inflate (from Nodeca project)",vs={inflateReset:die,inflateReset2:fie,inflateResetKeep:hie,inflateInit:pie,inflateInit2:gie,inflate:mie,inflateEnd:yie,inflateGetHeader:vie,inflateSetDictionary:_ie,inflateInfo:bie};function Sie(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var wie=Sie;const KN=Object.prototype.toString,{Z_NO_FLUSH:xie,Z_FINISH:Cie,Z_OK:up,Z_STREAM_END:GS,Z_NEED_DICT:HS,Z_STREAM_ERROR:Eie,Z_DATA_ERROR:BA,Z_MEM_ERROR:Tie}=sg;function lg(e){this.options=p1.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new DN,this.strm.avail_out=0;let n=vs.inflateInit2(this.strm,t.windowBits);if(n!==up)throw new Error(gd[n]);if(this.header=new wie,vs.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=lp.string2buf(t.dictionary):KN.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=vs.inflateSetDictionary(this.strm,t.dictionary),n!==up)))throw new Error(gd[n])}lg.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,s,a;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?Cie:xie,KN.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=vs.inflate(n,s),o===HS&&i&&(o=vs.inflateSetDictionary(n,i),o===up?o=vs.inflate(n,s):o===BA&&(o=HS));n.avail_in>0&&o===GS&&n.state.wrap>0&&e[n.next_in]!==0;)vs.inflateReset(n),o=vs.inflate(n,s);switch(o){case Eie:case BA:case HS:case Tie:return this.onEnd(o),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(n.avail_out===0||o===GS))if(this.options.to==="string"){let l=lp.utf8border(n.output,n.next_out),u=n.next_out-l,c=lp.buf2string(n.output,l);n.next_out=u,n.avail_out=r-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(c)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===up&&a===0)){if(o===GS)return o=vs.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};lg.prototype.onData=function(e){this.chunks.push(e)};lg.prototype.onEnd=function(e){e===up&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=p1.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function C5(e,t){const n=new lg(t);if(n.push(e),n.err)throw n.msg||gd[n.err];return n.result}function Aie(e,t){return t=t||{},t.raw=!0,C5(e,t)}var kie=lg,Pie=C5,Oie=Aie,Rie=C5,Iie=sg,Mie={Inflate:kie,inflate:Pie,inflateRaw:Oie,ungzip:Rie,constants:Iie};const{Inflate:G8e,inflate:Nie,inflateRaw:H8e,ungzip:W8e}=Mie;var XN=Nie;const YN=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=3988292384^t>>>1:t=t>>>1;YN[e]=t}function Die(e){let t=-1;for(let n=0;n>>8;return t^-1}var Lt;(function(e){e[e.GRAYSCALE=0]="GRAYSCALE",e[e.TRUE_COLOR=2]="TRUE_COLOR",e[e.PALETTE=3]="PALETTE",e[e.GRAYSCALE_WITH_ALPHA=4]="GRAYSCALE_WITH_ALPHA",e[e.TRUE_COLOR_WITH_ALPHA=6]="TRUE_COLOR_WITH_ALPHA"})(Lt||(Lt={}));const Lie={[Lt.GRAYSCALE]:1,[Lt.TRUE_COLOR]:3,[Lt.PALETTE]:1,[Lt.GRAYSCALE_WITH_ALPHA]:2,[Lt.TRUE_COLOR_WITH_ALPHA]:4},$ie=1;var Jr;(function(e){e[e.NONE=0]="NONE",e[e.SUB=1]="SUB",e[e.UP=2]="UP",e[e.AVERAGE=3]="AVERAGE",e[e.PAETH=4]="PAETH"})(Jr||(Jr={}));const Fie={[Jr.NONE](e){return e},[Jr.SUB](e,t){const n=new Uint8Array(e.length);for(let r=0;r>1;r[i]=e[i]+a}return r},[Jr.PAETH](e,t,n){const r=new Uint8Array(e.length);for(let i=0;i>7&1,i>>6&1,i>>5&1,i>>4&1,i>>3&1,i>>2&1,i>>1&1,i&1)}else if(t===2){const i=e[r++];n.push(i>>6&3,i>>4&3,i>>2&3,i&3)}else if(t===4){const i=e[r++];n.push(i>>4&15,i&15)}else if(t===8){const i=e[r++];n.push(i)}else if(t===16)n.push(e[r++]<<8|e[r++]);else throw new Error("Unsupported depth: "+t);return n}const QN=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];function zie(e,t,n){if(!e)return[{passWidth:t,passHeight:n,passIndex:0}];const r=[];return QN.forEach(function({x:i,y:o},s){const a=t%8,l=n%8,u=t-a>>3,c=n-l>>3;let d=u*i.length;for(let h=0;h>3||1;let p=0,m=new Uint8Array;for(let b=0;b>3)+$ie,w=u[p];if(!(w in Jr))throw new Error("Unsupported filter type: "+w);const C=Fie[w],x=C(u.slice(p+1,p+S),h,m);m=x;let A=0;const T=Bie(x,o);for(let L=0;L<_;L++){const R=P();a&&R[0]===a[0]&&R[1]===a[1]&&R[2]===a[2]&&(R[3]=0);const E=Uie(t,r,g,L,v);for(let k=0;k127)if(r>191&&r<224){if(t>=e.length)throw new Error("UTF-8 decode: incomplete 2-byte sequence");r=(r&31)<<6|e[t++]&63}else if(r>223&&r<240){if(t+1>=e.length)throw new Error("UTF-8 decode: incomplete 3-byte sequence");r=(r&15)<<12|(e[t++]&63)<<6|e[t++]&63}else if(r>239&&r<248){if(t+2>=e.length)throw new Error("UTF-8 decode: incomplete 4-byte sequence");r=(r&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63}else throw new Error("UTF-8 decode: unknown multibyte start 0x"+r.toString(16)+" at index "+(t-1));if(r<=65535)n+=String.fromCharCode(r);else if(r<=1114111)r-=65536,n+=String.fromCharCode(r>>10|55296),n+=String.fromCharCode(r&1023|56320);else throw new Error("UTF-8 decode: code point 0x"+r.toString(16)+" exceeds UTF-16 reach")}return n}function Gie(e,t){const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}const Qs=1e5;function Hie(e){const t=new Uint8Array(e);let n=new Uint8Array;const r={width:0,height:0,depth:0,colorType:0,compression:0,interlace:0,filter:0,data:[]};let i=0;function o(){return t[i++]<<24|t[i++]<<16|t[i++]<<8|t[i++]}function s(){return t[i++]<<8|t[i++]}function a(){return t[i++]}function l(){const M=[];let O=0;for(;(O=t[i++])!==0;)M.push(O);return new Uint8Array(M)}function u(M){const O=i+M;let D="";for(;iJN.safeParse(e).success||Wie.safeParse(e).success;j.enum(["connection","direct","any"]);const eD=j.object({id:j.string().trim().min(1),name:j.string().trim().min(1),type:JN}),qie=eD.extend({fieldKind:j.literal("output")}),zt=eD.extend({fieldKind:j.literal("input"),label:j.string()}),ug=j.object({model_name:j.string().trim().min(1),base_model:$d}),E5=j.object({image_name:j.string().trim().min(1)}),Kie=j.object({latents_name:j.string().trim().min(1),seed:j.number().int().optional()}),Xie=j.object({conditioning_name:j.string().trim().min(1)}),Yie=j.object({mask_name:j.string().trim().min(1),masked_latents_name:j.string().trim().min(1).optional()}),Zie=zt.extend({type:j.literal("integer"),value:j.number().int().optional()}),Qie=zt.extend({type:j.literal("float"),value:j.number().optional()}),Jie=zt.extend({type:j.literal("string"),value:j.string().optional()}),eoe=zt.extend({type:j.literal("boolean"),value:j.boolean().optional()}),toe=zt.extend({type:j.literal("enum"),value:j.union([j.string(),j.number()]).optional()}),noe=zt.extend({type:j.literal("LatentsField"),value:Kie.optional()}),roe=zt.extend({type:j.literal("DenoiseMaskField"),value:Yie.optional()}),ioe=zt.extend({type:j.literal("ConditioningField"),value:Xie.optional()}),ooe=ug,tD=j.object({image:E5,control_model:ooe,control_weight:j.union([j.number(),j.array(j.number())]).optional(),begin_step_percent:j.number().optional(),end_step_percent:j.number().optional(),control_mode:j.enum(["balanced","more_prompt","more_control","unbalanced"]).optional(),resize_mode:j.enum(["just_resize","crop_resize","fill_resize","just_resize_simple"]).optional()}),soe=zt.extend({type:j.literal("ControlField"),value:tD.optional()}),aoe=j.enum(["onnx","main","vae","lora","controlnet","embedding"]),loe=j.enum(["unet","text_encoder","text_encoder_2","tokenizer","tokenizer_2","vae","vae_decoder","vae_encoder","scheduler","safety_checker"]),vd=ug.extend({model_type:aoe,submodel:loe.optional()}),nD=vd.extend({weight:j.number().optional()}),uoe=j.object({unet:vd,scheduler:vd,loras:j.array(nD)}),coe=zt.extend({type:j.literal("UNetField"),value:uoe.optional()}),doe=j.object({tokenizer:vd,text_encoder:vd,skipped_layers:j.number(),loras:j.array(nD)}),foe=zt.extend({type:j.literal("ClipField"),value:doe.optional()}),hoe=j.object({vae:vd}),poe=zt.extend({type:j.literal("VaeField"),value:hoe.optional()}),goe=zt.extend({type:j.literal("ImageField"),value:E5.optional()}),moe=zt.extend({type:j.literal("ImageCollection"),value:j.array(E5).optional()}),yoe=zt.extend({type:j.literal("MainModelField"),value:Fd.optional()}),voe=zt.extend({type:j.literal("SDXLMainModelField"),value:Fd.optional()}),_oe=zt.extend({type:j.literal("SDXLRefinerModelField"),value:Fd.optional()}),rD=ug,boe=zt.extend({type:j.literal("VaeModelField"),value:rD.optional()}),iD=ug,Soe=zt.extend({type:j.literal("LoRAModelField"),value:iD.optional()}),woe=ug,xoe=zt.extend({type:j.literal("ControlNetModelField"),value:woe.optional()}),Coe=zt.extend({type:j.literal("Collection"),value:j.array(j.any()).optional()}),Eoe=zt.extend({type:j.literal("CollectionItem"),value:j.any().optional()}),Toe=j.object({r:j.number().int().min(0).max(255),g:j.number().int().min(0).max(255),b:j.number().int().min(0).max(255),a:j.number().int().min(0).max(255)}),Aoe=zt.extend({type:j.literal("ColorField"),value:Toe.optional()}),koe=zt.extend({type:j.literal("Scheduler"),value:oN.optional()}),Poe=j.discriminatedUnion("type",[Zie,Qie,Jie,eoe,goe,noe,roe,ioe,coe,foe,poe,soe,toe,yoe,voe,_oe,boe,Soe,xoe,Coe,Eoe,Aoe,moe,koe]),q8e=e=>!!(e&&e.fieldKind==="input"),K8e=e=>!!(e&&e.fieldKind==="input"),Ooe=e=>"class"in e&&e.class==="invocation",Roe=e=>"class"in e&&e.class==="output",UA=e=>!("$ref"in e),Ioe=j.object({app_version:j.string().nullish(),generation_mode:j.string().nullish(),created_by:j.string().nullish(),positive_prompt:j.string().nullish(),negative_prompt:j.string().nullish(),width:j.number().int().nullish(),height:j.number().int().nullish(),seed:j.number().int().nullish(),rand_device:j.string().nullish(),cfg_scale:j.number().nullish(),steps:j.number().int().nullish(),scheduler:j.string().nullish(),clip_skip:j.number().int().nullish(),model:Fd.nullish(),controlnets:j.array(tD).nullish(),loras:j.array(j.object({lora:iD,weight:j.number()})).nullish(),vae:rD.nullish(),strength:j.number().nullish(),init_image:j.string().nullish(),positive_style_prompt:j.string().nullish(),negative_style_prompt:j.string().nullish(),refiner_model:g5.nullish(),refiner_cfg_scale:j.number().nullish(),refiner_steps:j.number().int().nullish(),refiner_scheduler:j.string().nullish(),refiner_positive_aesthetic_store:j.number().nullish(),refiner_negative_aesthetic_store:j.number().nullish(),refiner_start:j.number().nullish()}).catchall(j.record(j.any())),Moe=j.object({id:j.string().trim().min(1),type:j.string().trim().min(1),inputs:j.record(Poe),outputs:j.record(qie),label:j.string(),isOpen:j.boolean(),notes:j.string(),embedWorkflow:j.boolean(),isIntermediate:j.boolean()}),Noe=j.object({id:j.string().trim().min(1),type:j.literal("notes"),label:j.string(),isOpen:j.boolean(),notes:j.string()}),oD=j.object({x:j.number(),y:j.number()}).default({x:0,y:0}),Py=j.number().gt(0).nullish(),sD=j.object({id:j.string().trim().min(1),type:j.literal("invocation"),data:Moe,width:Py,height:Py,position:oD}),Doe=e=>sD.safeParse(e).success,Loe=j.object({id:j.string().trim().min(1),type:j.literal("notes"),data:Noe,width:Py,height:Py,position:oD}),aD=j.discriminatedUnion("type",[sD,Loe]),$oe=j.object({source:j.string().trim().min(1),sourceHandle:j.string().trim().min(1),target:j.string().trim().min(1),targetHandle:j.string().trim().min(1),id:j.string().trim().min(1),type:j.literal("default")}),Foe=j.object({source:j.string().trim().min(1),target:j.string().trim().min(1),id:j.string().trim().min(1),type:j.literal("collapsed")}),lD=j.union([$oe,Foe]),Boe=j.object({nodeId:j.string().trim().min(1),fieldName:j.string().trim().min(1)}),zoe=j.string().refine(e=>{const[t,n,r]=e.split(".");return t!==void 0&&n!==void 0&&r!==void 0&&Number.isInteger(Number(t))&&Number.isInteger(Number(n))&&Number.isInteger(Number(r))}),uD=j.object({name:j.string().default(""),author:j.string().default(""),description:j.string().default(""),version:j.string().default(""),contact:j.string().default(""),tags:j.string().default(""),notes:j.string().default(""),nodes:j.array(aD).default([]),edges:j.array(lD).default([]),exposedFields:j.array(Boe).default([]),meta:j.object({version:zoe}).default({version:"1.0.0"})}),X8e=uD.transform(e=>{const t=NB.getState().nodes.nodeTemplates,{nodes:n,edges:r}=e,i=[],o=n.filter(Doe),s=U7(o,"id");return o.forEach((a,l)=>{t[a.data.type]||(i.push({message:`Node "${a.data.label||a.data.id}" skipped`,issues:[`Unable to find template for type "${a.data.type}"`],data:a}),delete n[l])}),r.forEach((a,l)=>{const u=s[a.source],c=s[a.target],d=[];if(u?a.type==="default"&&!(a.sourceHandle in u.data.outputs)&&d.push(`Output field "${a.source}.${a.sourceHandle}" does not exist`):d.push(`Output node ${a.source} does not exist`),c?a.type==="default"&&!(a.targetHandle in c.data.inputs)&&d.push(`Input field "${a.target}.${a.targetHandle}" does not exist`):d.push(`Input node ${a.target} does not exist`),d.length){delete r[l];const f=a.type==="default"?a.sourceHandle:a.source,h=a.type==="default"?a.targetHandle:a.target;i.push({message:`Edge "${f} -> ${h}" skipped`,issues:d,data:a})}}),{workflow:e,warnings:i}}),An=e=>!!(e&&e.type==="invocation"),Y8e=e=>!!(e&&!["notes","current_image"].includes(e.type)),jA=e=>!!(e&&e.type==="notes");var ps=(e=>(e[e.PENDING=0]="PENDING",e[e.IN_PROGRESS=1]="IN_PROGRESS",e[e.COMPLETED=2]="COMPLETED",e[e.FAILED=3]="FAILED",e))(ps||{});const Uoe=async e=>{const t={},n=await e.arrayBuffer(),r=Hie(n).text,i=py(r,"invokeai_metadata");if(i){const s=Ioe.safeParse(JSON.parse(i));s.success&&(t.metadata=s.data)}const o=py(r,"invokeai_workflow");if(o){const s=uD.safeParse(JSON.parse(o));s.success&&(t.workflow=s.data)}return t};var Oy=globalThis&&globalThis.__generator||function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(c){return l([u,c])}}function l(u){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=u[0]&2?i.return:u[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,u[1])).done)return o;switch(i=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,i=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&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"||navigator.onLine===void 0?!0:navigator.onLine}function Zoe(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var WA=uo;function fD(e,t){if(e===t||!(WA(e)&&WA(t)||Array.isArray(e)&&Array.isArray(t)))return t;for(var n=Object.keys(t),r=Object.keys(e),i=n.length===r.length,o=Array.isArray(t)?[]:{},s=0,a=n;s=200&&e.status<=299},Joe=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function KA(e){if(!uo(e))return e;for(var t=sn({},e),n=0,r=Object.entries(t);n"u"&&a===qA&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(g,v){return My(t,null,function(){var S,w,C,x,A,T,P,L,R,E,k,N,$,M,O,D,F,U,V,q,X,Z,z,W,Q,J,se,oe,Me,Ae,_e,je,he,It,Bn,Zt;return Oy(this,function(wt){switch(wt.label){case 0:return S=v.signal,w=v.getState,C=v.extra,x=v.endpoint,A=v.forced,T=v.type,L=typeof g=="string"?{url:g}:g,R=L.url,E=L.headers,k=E===void 0?new Headers(_.headers):E,N=L.params,$=N===void 0?void 0:N,M=L.responseHandler,O=M===void 0?m??"json":M,D=L.validateStatus,F=D===void 0?b??Qoe:D,U=L.timeout,V=U===void 0?p:U,q=GA(L,["url","headers","params","responseHandler","validateStatus","timeout"]),X=sn(No(sn({},_),{signal:S}),q),k=new Headers(KA(k)),Z=X,[4,o(k,{getState:w,extra:C,endpoint:x,forced:A,type:T})];case 1:Z.headers=wt.sent()||k,z=function(ht){return typeof ht=="object"&&(uo(ht)||Array.isArray(ht)||typeof ht.toJSON=="function")},!X.headers.has("content-type")&&z(X.body)&&X.headers.set("content-type",f),z(X.body)&&c(X.headers)&&(X.body=JSON.stringify(X.body,h)),$&&(W=~R.indexOf("?")?"&":"?",Q=l?l($):new URLSearchParams(KA($)),R+=W+Q),R=Xoe(r,R),J=new Request(R,X),se=J.clone(),P={request:se},Me=!1,Ae=V&&setTimeout(function(){Me=!0,v.abort()},V),wt.label=2;case 2:return wt.trys.push([2,4,5,6]),[4,a(J)];case 3:return oe=wt.sent(),[3,6];case 4:return _e=wt.sent(),[2,{error:{status:Me?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(_e)},meta:P}];case 5:return Ae&&clearTimeout(Ae),[7];case 6:je=oe.clone(),P.response=je,It="",wt.label=7;case 7:return wt.trys.push([7,9,,10]),[4,Promise.all([y(oe,O).then(function(ht){return he=ht},function(ht){return Bn=ht}),je.text().then(function(ht){return It=ht},function(){})])];case 8:if(wt.sent(),Bn)throw Bn;return[3,10];case 9:return Zt=wt.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:oe.status,data:It,error:String(Zt)},meta:P}];case 10:return[2,F(oe,he)?{data:he,meta:P}:{error:{status:oe.status,data:he},meta:P}]}})})};function y(g,v){return My(this,null,function(){var S;return Oy(this,function(w){switch(w.label){case 0:return typeof v=="function"?[2,v(g)]:(v==="content-type"&&(v=c(g.headers)?"json":"text"),v!=="json"?[3,2]:[4,g.text()]);case 1:return S=w.sent(),[2,S.length?JSON.parse(S):null];case 2:return[2,g.text()]}})})}}var XA=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),T5=me("__rtkq/focused"),hD=me("__rtkq/unfocused"),A5=me("__rtkq/online"),pD=me("__rtkq/offline"),Ko;(function(e){e.query="query",e.mutation="mutation"})(Ko||(Ko={}));function gD(e){return e.type===Ko.query}function tse(e){return e.type===Ko.mutation}function mD(e,t,n,r,i,o){return nse(e)?e(t,n,r,i).map(wx).map(o):Array.isArray(e)?e.map(wx).map(o):[]}function nse(e){return typeof e=="function"}function wx(e){return typeof e=="string"?{type:e}:e}function KS(e){return e!=null}var cp=Symbol("forceQueryFn"),xx=function(e){return typeof e[cp]=="function"};function rse(e){var t=e.serializeQueryArgs,n=e.queryThunk,r=e.mutationThunk,i=e.api,o=e.context,s=new Map,a=new Map,l=i.internalActions,u=l.unsubscribeQueryResult,c=l.removeMutationResult,d=l.updateSubscriptionOptions;return{buildInitiateQuery:y,buildInitiateMutation:g,getRunningQueryThunk:p,getRunningMutationThunk:m,getRunningQueriesThunk:b,getRunningMutationsThunk:_,getRunningOperationPromises:h,removalWarning:f};function f(){throw new Error(`This method had to be removed due to a conceptual bug in RTK. - Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details. - See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`)}function h(){typeof process<"u";var v=function(S){return Array.from(S.values()).flatMap(function(w){return w?Object.values(w):[]})};return Ry(Ry([],v(s)),v(a)).filter(KS)}function p(v,S){return function(w){var C,x=o.endpointDefinitions[v],A=t({queryArgs:S,endpointDefinition:x,endpointName:v});return(C=s.get(w))==null?void 0:C[A]}}function m(v,S){return function(w){var C;return(C=a.get(w))==null?void 0:C[S]}}function b(){return function(v){return Object.values(s.get(v)||{}).filter(KS)}}function _(){return function(v){return Object.values(a.get(v)||{}).filter(KS)}}function y(v,S){var w=function(C,x){var A=x===void 0?{}:x,T=A.subscribe,P=T===void 0?!0:T,L=A.forceRefetch,R=A.subscriptionOptions,E=cp,k=A[E];return function(N,$){var M,O,D=t({queryArgs:C,endpointDefinition:S,endpointName:v}),F=n((M={type:"query",subscribe:P,forceRefetch:L,subscriptionOptions:R,endpointName:v,originalArgs:C,queryCacheKey:D},M[cp]=k,M)),U=i.endpoints[v].select(C),V=N(F),q=U($()),X=V.requestId,Z=V.abort,z=q.requestId!==X,W=(O=s.get(N))==null?void 0:O[D],Q=function(){return U($())},J=Object.assign(k?V.then(Q):z&&!W?Promise.resolve(q):Promise.all([W,V]).then(Q),{arg:C,requestId:X,subscriptionOptions:R,queryCacheKey:D,abort:Z,unwrap:function(){return My(this,null,function(){var oe;return Oy(this,function(Me){switch(Me.label){case 0:return[4,J];case 1:if(oe=Me.sent(),oe.isError)throw oe.error;return[2,oe.data]}})})},refetch:function(){return N(w(C,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){P&&N(u({queryCacheKey:D,requestId:X}))},updateSubscriptionOptions:function(oe){J.subscriptionOptions=oe,N(d({endpointName:v,requestId:X,queryCacheKey:D,options:oe}))}});if(!W&&!z&&!k){var se=s.get(N)||{};se[D]=J,s.set(N,se),J.then(function(){delete se[D],Object.keys(se).length||s.delete(N)})}return J}};return w}function g(v){return function(S,w){var C=w===void 0?{}:w,x=C.track,A=x===void 0?!0:x,T=C.fixedCacheKey;return function(P,L){var R=r({type:"mutation",endpointName:v,originalArgs:S,track:A,fixedCacheKey:T}),E=P(R),k=E.requestId,N=E.abort,$=E.unwrap,M=E.unwrap().then(function(U){return{data:U}}).catch(function(U){return{error:U}}),O=function(){P(c({requestId:k,fixedCacheKey:T}))},D=Object.assign(M,{arg:E.arg,requestId:k,abort:N,unwrap:$,unsubscribe:O,reset:O}),F=a.get(P)||{};return a.set(P,F),F[k]=D,D.then(function(){delete F[k],Object.keys(F).length||a.delete(P)}),T&&(F[T]=D,D.then(function(){F[T]===D&&(delete F[T],Object.keys(F).length||a.delete(P))})),D}}}}function YA(e){return e}function ise(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,v,S){return function(w){var C=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:v,endpointDefinition:C,endpointName:g}),patches:S}))}},l=function(g,v,S){return function(w,C){var x,A,T=s.endpoints[g].select(v)(C()),P={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,v,P.inversePatches))}};if(T.status===$t.uninitialized)return P;if("data"in T)if(Gr(T.data)){var L=q3(T.data,S),R=L[1],E=L[2];(x=P.patches).push.apply(x,R),(A=P.inversePatches).push.apply(A,E)}else{var k=S(T.data);P.patches.push({op:"replace",path:[],value:k}),P.inversePatches.push({op:"replace",path:[],value:T.data})}return w(s.util.patchQueryData(g,v,P.patches)),P}},u=function(g,v,S){return function(w){var C;return w(s.endpoints[g].initiate(v,(C={subscribe:!1,forceRefetch:!0},C[cp]=function(){return{data:S}},C)))}},c=function(g,v){return My(t,[g,v],function(S,w){var C,x,A,T,P,L,R,E,k,N,$,M,O,D,F,U,V,q,X=w.signal,Z=w.abort,z=w.rejectWithValue,W=w.fulfillWithValue,Q=w.dispatch,J=w.getState,se=w.extra;return Oy(this,function(oe){switch(oe.label){case 0:C=i[S.endpointName],oe.label=1;case 1:return oe.trys.push([1,8,,13]),x=YA,A=void 0,T={signal:X,abort:Z,dispatch:Q,getState:J,extra:se,endpoint:S.endpointName,type:S.type,forced:S.type==="query"?d(S,J()):void 0},P=S.type==="query"?S[cp]:void 0,P?(A=P(),[3,6]):[3,2];case 2:return C.query?[4,r(C.query(S.originalArgs),T,C.extraOptions)]:[3,4];case 3:return A=oe.sent(),C.transformResponse&&(x=C.transformResponse),[3,6];case 4:return[4,C.queryFn(S.originalArgs,T,C.extraOptions,function(Me){return r(Me,T,C.extraOptions)})];case 5:A=oe.sent(),oe.label=6;case 6:if(typeof process<"u",A.error)throw new XA(A.error,A.meta);return $=W,[4,x(A.data,A.meta,S.originalArgs)];case 7:return[2,$.apply(void 0,[oe.sent(),(V={fulfilledTimeStamp:Date.now(),baseQueryMeta:A.meta},V[Fl]=!0,V)])];case 8:if(M=oe.sent(),O=M,!(O instanceof XA))return[3,12];D=YA,C.query&&C.transformErrorResponse&&(D=C.transformErrorResponse),oe.label=9;case 9:return oe.trys.push([9,11,,12]),F=z,[4,D(O.value,O.meta,S.originalArgs)];case 10:return[2,F.apply(void 0,[oe.sent(),(q={baseQueryMeta:O.meta},q[Fl]=!0,q)])];case 11:return U=oe.sent(),O=U,[3,12];case 12:throw typeof process<"u",console.error(O),O;case 13:return[2]}})})};function d(g,v){var S,w,C,x,A=(w=(S=v[n])==null?void 0:S.queries)==null?void 0:w[g.queryCacheKey],T=(C=v[n])==null?void 0:C.config.refetchOnMountOrArgChange,P=A==null?void 0:A.fulfilledTimeStamp,L=(x=g.forceRefetch)!=null?x:g.subscribe&&T;return L?L===!0||(Number(new Date)-Number(P))/1e3>=L:!1}var f=Va(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Fl]=!0,g},condition:function(g,v){var S=v.getState,w,C,x,A=S(),T=(C=(w=A[n])==null?void 0:w.queries)==null?void 0:C[g.queryCacheKey],P=T==null?void 0:T.fulfilledTimeStamp,L=g.originalArgs,R=T==null?void 0:T.originalArgs,E=i[g.endpointName];return xx(g)?!0:(T==null?void 0:T.status)==="pending"?!1:d(g,A)||gD(E)&&((x=E==null?void 0:E.forceRefetch)!=null&&x.call(E,{currentArg:L,previousArg:R,endpointState:T,state:A}))?!0:!P},dispatchConditionRejection:!0}),h=Va(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[Fl]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},b=function(g,v,S){return function(w,C){var x=p(S)&&S.force,A=m(S)&&S.ifOlderThan,T=function(E){return E===void 0&&(E=!0),s.endpoints[g].initiate(v,{forceRefetch:E})},P=s.endpoints[g].select(v)(C());if(x)w(T());else if(A){var L=P==null?void 0:P.fulfilledTimeStamp;if(!L){w(T());return}var R=(Number(new Date)-Number(new Date(L)))/1e3>=A;R&&w(T())}else w(T(!1))}};function _(g){return function(v){var S,w;return((w=(S=v==null?void 0:v.meta)==null?void 0:S.arg)==null?void 0:w.endpointName)===g}}function y(g,v){return{matchPending:Bc(Qv(g),_(v)),matchFulfilled:Bc(ol(g),_(v)),matchRejected:Bc(cd(g),_(v))}}return{queryThunk:f,mutationThunk:h,prefetch:b,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:y}}function yD(e,t,n,r){return mD(n[e.meta.arg.endpointName][t],ol(e)?e.payload:void 0,Xp(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function gm(e,t,n){var r=e[t];r&&n(r)}function dp(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function ZA(e,t,n){var r=e[dp(t)];r&&n(r)}var mf={};function ose(e){var t=e.reducerPath,n=e.queryThunk,r=e.mutationThunk,i=e.context,o=i.endpointDefinitions,s=i.apiUid,a=i.extractRehydrationInfo,l=i.hasRehydrationInfo,u=e.assertTagType,c=e.config,d=me(t+"/resetApiState"),f=Ht({name:t+"/queries",initialState:mf,reducers:{removeQueryResult:{reducer:function(S,w){var C=w.payload.queryCacheKey;delete S[C]},prepare:d0()},queryResultPatched:function(S,w){var C=w.payload,x=C.queryCacheKey,A=C.patches;gm(S,x,function(T){T.data=Kw(T.data,A.concat())})}},extraReducers:function(S){S.addCase(n.pending,function(w,C){var x=C.meta,A=C.meta.arg,T,P,L=xx(A);(A.subscribe||L)&&((P=w[T=A.queryCacheKey])!=null||(w[T]={status:$t.uninitialized,endpointName:A.endpointName})),gm(w,A.queryCacheKey,function(R){R.status=$t.pending,R.requestId=L&&R.requestId?R.requestId:x.requestId,A.originalArgs!==void 0&&(R.originalArgs=A.originalArgs),R.startedTimeStamp=x.startedTimeStamp})}).addCase(n.fulfilled,function(w,C){var x=C.meta,A=C.payload;gm(w,x.arg.queryCacheKey,function(T){var P;if(!(T.requestId!==x.requestId&&!xx(x.arg))){var L=o[x.arg.endpointName].merge;if(T.status=$t.fulfilled,L)if(T.data!==void 0){var R=x.fulfilledTimeStamp,E=x.arg,k=x.baseQueryMeta,N=x.requestId,$=rl(T.data,function(M){return L(M,A,{arg:E.originalArgs,baseQueryMeta:k,fulfilledTimeStamp:R,requestId:N})});T.data=$}else T.data=A;else T.data=(P=o[x.arg.endpointName].structuralSharing)==null||P?fD(Tr(T.data)?z3(T.data):T.data,A):A;delete T.error,T.fulfilledTimeStamp=x.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,C){var x=C.meta,A=x.condition,T=x.arg,P=x.requestId,L=C.error,R=C.payload;gm(w,T.queryCacheKey,function(E){if(!A){if(E.requestId!==P)return;E.status=$t.rejected,E.error=R??L}})}).addMatcher(l,function(w,C){for(var x=a(C).queries,A=0,T=Object.entries(x);A"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?kse:Ase;bD.useSyncExternalStore=_d.useSyncExternalStore!==void 0?_d.useSyncExternalStore:Pse;_D.exports=bD;var Ose=_D.exports,SD={exports:{}},wD={};/** - * @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 m1=I,Rse=Ose;function Ise(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Mse=typeof Object.is=="function"?Object.is:Ise,Nse=Rse.useSyncExternalStore,Dse=m1.useRef,Lse=m1.useEffect,$se=m1.useMemo,Fse=m1.useDebugValue;wD.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=Dse(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=$se(function(){function l(h){if(!u){if(u=!0,c=h,h=r(h),i!==void 0&&s.hasValue){var p=s.value;if(i(p,h))return d=p}return d=h}if(p=d,Mse(c,h))return p;var m=r(h);return i!==void 0&&i(p,m)?p:(c=h,d=m)}var u=!1,c,d,f=n===void 0?null:n;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,n,r,i]);var a=Nse(e,o[0],o[1]);return Lse(function(){s.hasValue=!0,s.value=a},[a]),Fse(a),a};SD.exports=wD;var xD=SD.exports;const Bse=vu(xD);function zse(e){e()}let CD=zse;const Use=e=>CD=e,jse=()=>CD,ik=Symbol.for("react-redux-context"),ok=typeof globalThis<"u"?globalThis:{};function Vse(){var e;if(!I.createContext)return{};const t=(e=ok[ik])!=null?e:ok[ik]=new Map;let n=t.get(I.createContext);return n||(n=I.createContext(null),t.set(I.createContext,n)),n}const qa=Vse();function k5(e=qa){return function(){return I.useContext(e)}}const ED=k5(),Gse=()=>{throw new Error("uSES not initialized!")};let TD=Gse;const Hse=e=>{TD=e},Wse=(e,t)=>e===t;function qse(e=qa){const t=e===qa?ED:k5(e);return function(r,i={}){const{equalityFn:o=Wse,stabilityCheck:s=void 0,noopCheck:a=void 0}=typeof i=="function"?{equalityFn:i}:i,{store:l,subscription:u,getServerState:c,stabilityCheck:d,noopCheck:f}=t();I.useRef(!0);const h=I.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=TD(u.addNestedSub,l.getState,c||l.getState,h,o);return I.useDebugValue(p),p}}const AD=qse();function Ny(){return Ny=Object.assign?Object.assign.bind():function(e){for(var t=1;t{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 sk={notify(){},get:()=>[]};function oae(e,t){let n,r=sk;function i(d){return l(),r.subscribe(d)}function o(){r.notify()}function s(){c.onStateChange&&c.onStateChange()}function a(){return!!n}function l(){n||(n=t?t.addNestedSub(s):e.subscribe(s),r=iae())}function u(){n&&(n(),n=void 0,r.clear(),r=sk)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const sae=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",aae=sae?I.useLayoutEffect:I.useEffect;function ak(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function Dy(e,t){if(ak(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i=0;i{const u=oae(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=I.useMemo(()=>e.getState(),[e]);aae(()=>{const{subscription:u}=s;return u.onStateChange=u.notifyNestedSubs,u.trySubscribe(),a!==e.getState()&&u.notifyNestedSubs(),()=>{u.tryUnsubscribe(),u.onStateChange=void 0}},[s,a]);const l=t||qa;return I.createElement(l.Provider,{value:s},n)}function MD(e=qa){const t=e===qa?ED:k5(e);return function(){const{store:r}=t();return r}}const ND=MD();function uae(e=qa){const t=e===qa?ND:MD(e);return function(){return t().dispatch}}const DD=uae();Hse(xD.useSyncExternalStoreWithSelector);Use(Zi.unstable_batchedUpdates);var cae=globalThis&&globalThis.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n{const r=tp.get(),i=ep.get(),o=Ey.get();return ese({baseUrl:`${r??""}/api/v1`,prepareHeaders:a=>(i&&a.set("Authorization",`Bearer ${i}`),o&&a.set("project-id",o),a)})(e,t,n)},Ka=Eae({baseQuery:Aae,reducerPath:"api",tagTypes:Tae,endpoints:()=>({})}),kae=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:ne==null,Nae=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),Ex=Symbol("encodeFragmentIdentifier");function Dae(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const i=n.length;return r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[dn(t,e),"[",i,"]"].join("")]:[...n,[dn(t,e),"[",dn(i,e),"]=",dn(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[dn(t,e),"[]"].join("")]:[...n,[dn(t,e),"[]=",dn(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[dn(t,e),":list="].join("")]:[...n,[dn(t,e),":list=",dn(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t=e.arrayFormat==="bracket-separator"?"[]=":"=";return n=>(r,i)=>i===void 0||e.skipNull&&i===null||e.skipEmptyString&&i===""?r:(i=i===null?"":i,r.length===0?[[dn(n,e),t,dn(i,e)].join("")]:[[r,dn(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,dn(t,e)]:[...n,[dn(t,e),"=",dn(r,e)].join("")]}}function Lae(e){let t;switch(e.arrayFormat){case"index":return(n,r,i)=>{if(t=/\[(\d*)]$/.exec(n),n=n.replace(/\[\d*]$/,""),!t){i[n]=r;return}i[n]===void 0&&(i[n]={}),i[n][t[1]]=r};case"bracket":return(n,r,i)=>{if(t=/(\[])$/.exec(n),n=n.replace(/\[]$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"colon-list-separator":return(n,r,i)=>{if(t=/(:list)$/.exec(n),n=n.replace(/:list$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"comma":case"separator":return(n,r,i)=>{const o=typeof r=="string"&&r.includes(e.arrayFormatSeparator),s=typeof r=="string"&&!o&&_s(r,e).includes(e.arrayFormatSeparator);r=s?_s(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>_s(l,e)):r===null?r:_s(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&_s(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>_s(a,e));if(i[n]===void 0){i[n]=s;return}i[n]=[...i[n],...s]};default:return(n,r,i)=>{if(i[n]===void 0){i[n]=r;return}i[n]=[...[i[n]].flat(),r]}}}function FD(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function dn(e,t){return t.encode?t.strict?Nae(e):encodeURIComponent(e):e}function _s(e,t){return t.decode?Rae(e):e}function BD(e){return Array.isArray(e)?e.sort():typeof e=="object"?BD(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function zD(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function $ae(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function hk(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?e=Number(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")&&(e=e.toLowerCase()==="true"),e}function N5(e){e=zD(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function D5(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},FD(t.arrayFormatSeparator);const n=Lae(t),r=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return r;for(const i of e.split("&")){if(i==="")continue;const o=t.decode?i.replace(/\+/g," "):i;let[s,a]=$D(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:_s(a,t),n(_s(s,t),a,r)}for(const[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null)for(const[s,a]of Object.entries(o))o[s]=hk(a,t);else r[i]=hk(o,t);return t.sort===!1?r:(t.sort===!0?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((i,o)=>{const s=r[o];return s&&typeof s=="object"&&!Array.isArray(s)?i[o]=BD(s):i[o]=s,i},Object.create(null))}function UD(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},FD(t.arrayFormatSeparator);const n=s=>t.skipNull&&Mae(e[s])||t.skipEmptyString&&e[s]==="",r=Dae(t),i={};for(const[s,a]of Object.entries(e))n(s)||(i[s]=a);const o=Object.keys(i);return t.sort!==!1&&o.sort(t.sort),o.map(s=>{const a=e[s];return a===void 0?"":a===null?dn(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?dn(s,t)+"[]":a.reduce(r(s),[]).join("&"):dn(s,t)+"="+dn(a,t)}).filter(s=>s.length>0).join("&")}function jD(e,t){var i;t={decode:!0,...t};let[n,r]=$D(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:D5(N5(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:_s(r,t)}:{}}}function VD(e,t){t={encode:!0,strict:!0,[Ex]:!0,...t};const n=zD(e.url).split("?")[0]||"",r=N5(e.url),i={...D5(r,{sort:!1}),...e.query};let o=UD(i,t);o&&(o=`?${o}`);let s=$ae(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[Ex]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function GD(e,t,n){n={parseFragmentIdentifier:!0,[Ex]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=jD(e,n);return VD({url:r,query:Iae(i,t),fragmentIdentifier:o},n)}function Fae(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return GD(e,r,n)}const g0=Object.freeze(Object.defineProperty({__proto__:null,exclude:Fae,extract:N5,parse:D5,parseUrl:jD,pick:GD,stringify:UD,stringifyUrl:VD},Symbol.toStringTag,{value:"Module"})),wl=(e,t)=>{if(!e)return!1;const n=$y.selectAll(e);if(n.length<=1)return!0;const r=[],i=[];for(let o=0;o=a}else{const o=i[i.length-1];if(!o)return!1;const s=new Date(t.created_at),a=new Date(o.created_at);return s>=a}},gi=e=>Pn.includes(e.image_category)?Pn:_a,Tt=il({selectId:e=>e.image_name,sortComparer:(e,t)=>e.starred&&!t.starred?-1:!e.starred&&t.starred?1:kae(t.created_at,e.created_at)}),$y=Tt.getSelectors(),Zr=e=>`images/?${g0.stringify(e,{arrayFormat:"none"})}`,Wn=Ka.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:t=>{const n=[{type:"Board",id:Pe}];return t&&n.push(...t.items.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:t=>{const n=[{type:"Board",id:Pe}];return t&&n.push(...t.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),getBoardImagesTotal:e.query({query:t=>({url:Zr({board_id:t??"none",categories:Pn,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardImagesTotal",id:r??"none"}],transformResponse:t=>t.total}),getBoardAssetsTotal:e.query({query:t=>({url:Zr({board_id:t??"none",categories:_a,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:Pe}]}),updateBoard:e.mutation({query:({board_id:t,changes:n})=>({url:`boards/${t}`,method:"PATCH",body:n}),invalidatesTags:(t,n,r)=>[{type:"Board",id:r.board_id}]})})}),{useListBoardsQuery:Z8e,useListAllBoardsQuery:Q8e,useGetBoardImagesTotalQuery:J8e,useGetBoardAssetsTotalQuery:ePe,useCreateBoardMutation:tPe,useUpdateBoardMutation:nPe,useListAllImageNamesForBoardQuery:rPe}=Wn,ne=Ka.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:Zr(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:Zr({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return Zr({board_id:n,categories:r})},transformResponse(t){const{items:n}=t;return Tt.addMany(Tt.getInitialState(),n)},merge:(t,n)=>{Tt.addMany(t,$y.selectAll(n))},forceRefetch({currentArg:t,previousArg:n}){return(t==null?void 0:t.offset)!==(n==null?void 0:n.offset)},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;$y.selectAll(i).forEach(o=>{n(ne.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:Zr({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/i/${t}`}),providesTags:(t,n,r)=>[{type:"Image",id:r}],keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/i/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getImageMetadataFromFile:e.query({query:t=>({url:`images/i/${t}/full`,responseHandler:async n=>await n.blob()}),providesTags:(t,n,r)=>[{type:"ImageMetadataFromFile",id:r}],transformResponse:t=>Uoe(t),keepUnusedDataFor:86400}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/i/${t}`,method:"DELETE"}),invalidatesTags:(t,n,{board_id:r})=>[{type:"BoardImagesTotal",id:r??"none"},{type:"BoardAssetsTotal",id:r??"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){const{image_name:i,board_id:o}=t,s={board_id:o??"none",categories:gi(t)},a=n(ne.util.updateQueryData("listImages",s,l=>{Tt.removeOne(l,i)}));try{await r}catch{a.undo()}}}),deleteImages:e.mutation({query:({imageDTOs:t})=>({url:"images/delete",method:"POST",body:{image_names:t.map(r=>r.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{var o;const i=(o=r[0])==null?void 0:o.board_id;return[{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"}]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,o=U7(t,"image_name");i.deleted_images.forEach(s=>{const a=o[s];if(a){const l={board_id:a.board_id??"none",categories:gi(a)};n(ne.util.updateQueryData("listImages",l,u=>{Tt.removeOne(u,s)}))}})}catch{}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{is_intermediate:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,is_intermediate:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[];s.push(r(ne.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=gi(t);if(n)s.push(r(ne.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{Tt.removeOne(l,t.image_name)})));else{const l={board_id:t.board_id??"none",categories:a},u=ne.endpoints.listImages.select(l)(o()),{data:c}=Pn.includes(t.image_category)?Wn.endpoints.getBoardImagesTotal.select(t.board_id??"none")(o()):Wn.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=wl(u.data,t);(d||f)&&s.push(r(ne.util.updateQueryData("listImages",l,h=>{Tt.upsertOne(h,t)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{session_id:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,session_id:n},{dispatch:r,queryFulfilled:i}){const o=[];o.push(r(ne.util.updateQueryData("getImageDTO",t.image_name,s=>{Object.assign(s,{session_id:n})})));try{await i}catch{o.forEach(s=>s.undo())}}}),starImages:e.mutation({query:({imageDTOs:t})=>({url:"images/star",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=gi(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Zr({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=gi(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(ne.util.updateQueryData("getImageDTO",c,b=>{b.starred=!0}));const d={board_id:l??"none",categories:a},f=ne.endpoints.listImages.select(d)(i()),{data:h}=Pn.includes(u.image_category)?Wn.endpoints.getBoardImagesTotal.select(l??"none")(i()):Wn.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=um?wl(f.data,u):!0;(p||m)&&n(ne.util.updateQueryData("listImages",d,b=>{Tt.upsertOne(b,{...u,starred:!0})}))})}catch{}}}),unstarImages:e.mutation({query:({imageDTOs:t})=>({url:"images/unstar",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=gi(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Zr({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=gi(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(ne.util.updateQueryData("getImageDTO",c,b=>{b.starred=!1}));const d={board_id:l??"none",categories:a},f=ne.endpoints.listImages.select(d)(i()),{data:h}=Pn.includes(u.image_category)?Wn.endpoints.getBoardImagesTotal.select(l??"none")(i()):Wn.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=um?wl(f.data,u):!0;(p||m)&&n(ne.util.updateQueryData("listImages",d,b=>{Tt.upsertOne(b,{...u,starred:!1})}))})}catch{}}}),uploadImage:e.mutation({query:({file:t,image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s})=>{const a=new FormData;return a.append("file",t),{url:"images/upload",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o==="none"?void 0:o,crop_visible:s}}},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;if(i.is_intermediate)return;n(ne.util.upsertQueryData("getImageDTO",i.image_name,i));const o=gi(i);n(ne.util.updateQueryData("listImages",{board_id:i.board_id??"none",categories:o},s=>{Tt.addOne(s,i)})),n(ne.util.invalidateTags([{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}]))}catch{}}}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:()=>[{type:"Board",id:Pe},{type:"ImageList",id:Zr({board_id:"none",categories:Pn})},{type:"ImageList",id:Zr({board_id:"none",categories:_a})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_board_images:o}=i;o.forEach(l=>{n(ne.util.updateQueryData("getImageDTO",l,u=>{u.board_id=void 0}))});const s=[{categories:Pn},{categories:_a}],a=o.map(l=>({id:l,changes:{board_id:void 0}}));s.forEach(l=>{n(ne.util.updateQueryData("listImages",l,u=>{Tt.updateMany(u,a)}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:()=>[{type:"Board",id:Pe},{type:"ImageList",id:Zr({board_id:"none",categories:Pn})},{type:"ImageList",id:Zr({board_id:"none",categories:_a})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_images:o}=i;[{categories:Pn},{categories:_a}].forEach(a=>{n(ne.util.updateQueryData("listImages",a,l=>{Tt.removeMany(l,o)}))})}catch{}}}),addImageToBoard:e.mutation({query:({board_id:t,imageDTO:n})=>{const{image_name:r}=n;return{url:"board_images/",method:"POST",body:{board_id:t,image_name:r}}},invalidatesTags:(t,n,{board_id:r,imageDTO:i})=>[{type:"Board",id:r},{type:"BoardImagesTotal",id:r},{type:"BoardAssetsTotal",id:r},{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=gi(n);if(s.push(r(ne.util.updateQueryData("getImageDTO",n.image_name,l=>{l.board_id=t}))),!n.is_intermediate){s.push(r(ne.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},h=>{Tt.removeOne(h,n.image_name)})));const l={board_id:t??"none",categories:a},u=ne.endpoints.listImages.select(l)(o()),{data:c}=Pn.includes(n.image_category)?Wn.endpoints.getBoardImagesTotal.select(n.board_id??"none")(o()):Wn.endpoints.getBoardAssetsTotal.select(n.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=wl(u.data,n);(d||f)&&s.push(r(ne.util.updateQueryData("listImages",l,h=>{Tt.addOne(h,n)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{image_name:n}=t;return{url:"board_images/",method:"DELETE",body:{image_name:n}}},invalidatesTags:(t,n,{imageDTO:r})=>{const{board_id:i}=r;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=gi(t),s=[];s.push(n(ne.util.updateQueryData("getImageDTO",t.image_name,f=>{f.board_id=void 0}))),s.push(n(ne.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},f=>{Tt.removeOne(f,t.image_name)})));const a={board_id:"none",categories:o},l=ne.endpoints.listImages.select(a)(i()),{data:u}=Pn.includes(t.image_category)?Wn.endpoints.getBoardImagesTotal.select(t.board_id??"none")(i()):Wn.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(i()),c=l.data&&l.data.ids.length>=(u??0),d=wl(l.data,t);(c||d)&&s.push(n(ne.util.updateQueryData("listImages",a,f=>{Tt.upsertOne(f,t)})));try{await r}catch{s.forEach(f=>f.undo())}}}),addImagesToBoard:e.mutation({query:({board_id:t,imageDTOs:n})=>({url:"board_images/batch",method:"POST",body:{image_names:n.map(r=>r.image_name),board_id:t}}),invalidatesTags:(t,n,{imageDTOs:r,board_id:i})=>{var s;const o=(s=r[0])==null?void 0:s.board_id;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:o??"none"},{type:"BoardAssetsTotal",id:o??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({board_id:t,imageDTOs:n},{dispatch:r,queryFulfilled:i,getState:o}){try{const{data:s}=await i,{added_image_names:a}=s;a.forEach(l=>{r(ne.util.updateQueryData("getImageDTO",l,_=>{_.board_id=t}));const u=n.find(_=>_.image_name===l);if(!u)return;const c=gi(u),d=u.board_id;r(ne.util.updateQueryData("listImages",{board_id:d??"none",categories:c},_=>{Tt.removeOne(_,u.image_name)}));const f={board_id:t,categories:c},h=ne.endpoints.listImages.select(f)(o()),{data:p}=Pn.includes(u.image_category)?Wn.endpoints.getBoardImagesTotal.select(t??"none")(o()):Wn.endpoints.getBoardAssetsTotal.select(t??"none")(o()),m=h.data&&h.data.ids.length>=(p??0),b=(p||0)>=um?wl(h.data,u):!0;(m||b)&&r(ne.util.updateQueryData("listImages",f,_=>{Tt.upsertOne(_,{...u,board_id:t})}))})}catch{}}}),removeImagesFromBoard:e.mutation({query:({imageDTOs:t})=>({url:"board_images/batch/delete",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{const i=[],o=[{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}];return t==null||t.removed_image_names.forEach(s=>{var l;const a=(l=r.find(u=>u.image_name===s))==null?void 0:l.board_id;!a||i.includes(a)||(o.push({type:"Board",id:a}),o.push({type:"BoardImagesTotal",id:a}),o.push({type:"BoardAssetsTotal",id:a}))}),o},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{removed_image_names:s}=o;s.forEach(a=>{n(ne.util.updateQueryData("getImageDTO",a,m=>{m.board_id=void 0}));const l=t.find(m=>m.image_name===a);if(!l)return;const u=gi(l);n(ne.util.updateQueryData("listImages",{board_id:l.board_id??"none",categories:u},m=>{Tt.removeOne(m,l.image_name)}));const c={board_id:"none",categories:u},d=ne.endpoints.listImages.select(c)(i()),{data:f}=Pn.includes(l.image_category)?Wn.endpoints.getBoardImagesTotal.select(l.board_id??"none")(i()):Wn.endpoints.getBoardAssetsTotal.select(l.board_id??"none")(i()),h=d.data&&d.data.ids.length>=(f??0),p=(f||0)>=um?wl(d.data,l):!0;(h||p)&&n(ne.util.updateQueryData("listImages",c,m=>{Tt.upsertOne(m,{...l,board_id:"none"})}))})}catch{}}})})}),{useGetIntermediatesCountQuery:iPe,useListImagesQuery:oPe,useLazyListImagesQuery:sPe,useGetImageDTOQuery:aPe,useGetImageMetadataQuery:lPe,useDeleteImageMutation:uPe,useDeleteImagesMutation:cPe,useUploadImageMutation:dPe,useClearIntermediatesMutation:fPe,useAddImagesToBoardMutation:hPe,useRemoveImagesFromBoardMutation:pPe,useAddImageToBoardMutation:gPe,useRemoveImageFromBoardMutation:mPe,useChangeImageIsIntermediateMutation:yPe,useChangeImageSessionIdMutation:vPe,useDeleteBoardAndImagesMutation:_Pe,useDeleteBoardMutation:bPe,useStarImagesMutation:SPe,useUnstarImagesMutation:wPe,useGetImageMetadataFromFileQuery:xPe}=ne,HD=me("socket/socketConnected"),WD=me("socket/appSocketConnected"),qD=me("socket/socketDisconnected"),KD=me("socket/appSocketDisconnected"),L5=me("socket/socketSubscribed"),XD=me("socket/appSocketSubscribed"),YD=me("socket/socketUnsubscribed"),ZD=me("socket/appSocketUnsubscribed"),QD=me("socket/socketInvocationStarted"),$5=me("socket/appSocketInvocationStarted"),F5=me("socket/socketInvocationComplete"),B5=me("socket/appSocketInvocationComplete"),JD=me("socket/socketInvocationError"),$1=me("socket/appSocketInvocationError"),eL=me("socket/socketGraphExecutionStateComplete"),tL=me("socket/appSocketGraphExecutionStateComplete"),nL=me("socket/socketGeneratorProgress"),z5=me("socket/appSocketGeneratorProgress"),rL=me("socket/socketModelLoadStarted"),Bae=me("socket/appSocketModelLoadStarted"),iL=me("socket/socketModelLoadCompleted"),zae=me("socket/appSocketModelLoadCompleted"),oL=me("socket/socketSessionRetrievalError"),sL=me("socket/appSocketSessionRetrievalError"),aL=me("socket/socketInvocationRetrievalError"),lL=me("socket/appSocketInvocationRetrievalError"),U5=me("controlNet/imageProcessed"),lc={none:{type:"none",label:"none",description:"",default:{type:"none"}},canny_image_processor:{type:"canny_image_processor",label:"Canny",description:"",default:{id:"canny_image_processor",type:"canny_image_processor",low_threshold:100,high_threshold:200}},content_shuffle_image_processor:{type:"content_shuffle_image_processor",label:"Content Shuffle",description:"",default:{id:"content_shuffle_image_processor",type:"content_shuffle_image_processor",detect_resolution:512,image_resolution:512,h:512,w:512,f:256}},hed_image_processor:{type:"hed_image_processor",label:"HED",description:"",default:{id:"hed_image_processor",type:"hed_image_processor",detect_resolution:512,image_resolution:512,scribble:!1}},lineart_anime_image_processor:{type:"lineart_anime_image_processor",label:"Lineart Anime",description:"",default:{id:"lineart_anime_image_processor",type:"lineart_anime_image_processor",detect_resolution:512,image_resolution:512}},lineart_image_processor:{type:"lineart_image_processor",label:"Lineart",description:"",default:{id:"lineart_image_processor",type:"lineart_image_processor",detect_resolution:512,image_resolution:512,coarse:!1}},mediapipe_face_processor:{type:"mediapipe_face_processor",label:"Mediapipe Face",description:"",default:{id:"mediapipe_face_processor",type:"mediapipe_face_processor",max_faces:1,min_confidence:.5}},midas_depth_image_processor:{type:"midas_depth_image_processor",label:"Depth (Midas)",description:"",default:{id:"midas_depth_image_processor",type:"midas_depth_image_processor",a_mult:2,bg_th:.1}},mlsd_image_processor:{type:"mlsd_image_processor",label:"M-LSD",description:"",default:{id:"mlsd_image_processor",type:"mlsd_image_processor",detect_resolution:512,image_resolution:512,thr_d:.1,thr_v:.1}},normalbae_image_processor:{type:"normalbae_image_processor",label:"Normal BAE",description:"",default:{id:"normalbae_image_processor",type:"normalbae_image_processor",detect_resolution:512,image_resolution:512}},openpose_image_processor:{type:"openpose_image_processor",label:"Openpose",description:"",default:{id:"openpose_image_processor",type:"openpose_image_processor",detect_resolution:512,image_resolution:512,hand_and_face:!1}},pidi_image_processor:{type:"pidi_image_processor",label:"PIDI",description:"",default:{id:"pidi_image_processor",type:"pidi_image_processor",detect_resolution:512,image_resolution:512,scribble:!1,safe:!1}},zoe_depth_image_processor:{type:"zoe_depth_image_processor",label:"Depth (Zoe)",description:"",default:{id:"zoe_depth_image_processor",type:"zoe_depth_image_processor"}}},_m={canny:"canny_image_processor",mlsd:"mlsd_image_processor",depth:"midas_depth_image_processor",bae:"normalbae_image_processor",lineart:"lineart_image_processor",lineart_anime:"lineart_anime_image_processor",softedge:"hed_image_processor",shuffle:"content_shuffle_image_processor",openpose:"openpose_image_processor",mediapipe:"mediapipe_face_processor"},pk={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:lc.canny_image_processor.default,shouldAutoConfig:!0},Tx={controlNets:{},isEnabled:!1,pendingControlImages:[]},uL=Ht({name:"controlNet",initialState:Tx,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??pk,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=Jt(i);o.controlNetId=r,e.controlNets[r]=o},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...pk,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload,r=e.controlNets[n];r&&(r.isEnabled=!r.isEnabled)},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload,i=e.controlNets[n];i&&(i.controlImage=r,i.processedControlImage=null,r!==null&&i.processorType!=="none"&&e.pendingControlImages.push(n))},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(o=>o!==n))},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload,i=e.controlNets[n];if(i&&(i.model=r,i.processedControlImage=null,i.shouldAutoConfig)){let o;for(const s in _m)if(r.model_name.includes(s)){o=_m[s];break}o?(i.processorType=o,i.processorNode=lc[o].default):(i.processorType="none",i.processorNode=lc.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload,i=e.controlNets[n];i&&(i.weight=r)},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.beginStepPct=r)},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.endStepPct=r)},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload,i=e.controlNets[n];i&&(i.controlMode=r)},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload,i=e.controlNets[n];i&&(i.resizeMode=r)},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=i.processorNode;i.processorNode={...o,...r},i.shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=null,i.processorType=r,i.processorNode=lc[r].default,i.shouldAutoConfig=!1)},controlNetAutoConfigToggled:(e,t)=>{var o;const{controlNetId:n}=t.payload,r=e.controlNets[n];if(!r)return;const i=!r.shouldAutoConfig;if(i){let s;for(const a in _m)if((o=r.model)!=null&&o.model_name.includes(a)){s=_m[a];break}s?(r.processorType=s,r.processorNode=lc[s].default):(r.processorType="none",r.processorNode=lc.none.default)}r.shouldAutoConfig=i},controlNetReset:()=>({...Tx})},extraReducers:e=>{e.addCase(U5,(t,n)=>{const r=t.controlNets[n.payload.controlNetId];r&&r.controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase($1,t=>{t.pendingControlImages=[]}),e.addMatcher(lN,t=>{t.pendingControlImages=[]}),e.addMatcher(ne.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;Ii(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:CPe,controlNetAdded:EPe,controlNetDuplicated:TPe,controlNetAddedFromImage:APe,controlNetRemoved:cL,controlNetImageChanged:Eu,controlNetProcessedImageChanged:j5,controlNetToggled:kPe,controlNetModelChanged:gk,controlNetWeightChanged:PPe,controlNetBeginStepPctChanged:OPe,controlNetEndStepPctChanged:RPe,controlNetControlModeChanged:IPe,controlNetResizeModeChanged:MPe,controlNetProcessorParamsChanged:Uae,controlNetProcessorTypeChanged:jae,controlNetReset:Vae,controlNetAutoConfigToggled:mk}=uL.actions,Gae=uL.reducer,Hae={imagesToDelete:[],isModalOpen:!1},dL=Ht({name:"deleteImageModal",initialState:Hae,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToDeleteSelected:(e,t)=>{e.imagesToDelete=t.payload},imageDeletionCanceled:e=>{e.imagesToDelete=[],e.isModalOpen=!1}}}),{isModalOpenChanged:V5,imagesToDeleteSelected:Wae,imageDeletionCanceled:NPe}=dL.actions,qae=dL.reducer,fL={isEnabled:!1,maxPrompts:100,combinatorial:!0},Kae=fL,hL=Ht({name:"dynamicPrompts",initialState:Kae,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=fL.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}}}),{isEnabledToggled:DPe,maxPromptsChanged:LPe,maxPromptsReset:$Pe,combinatorialToggled:FPe}=hL.actions,Xae=hL.reducer,pL={selection:[],shouldAutoSwitch:!0,autoAssignBoardOnClick:!0,autoAddBoardId:"none",galleryImageMinimumWidth:96,selectedBoardId:"none",galleryView:"images",boardSearchText:""},gL=Ht({name:"gallery",initialState:pL,reducers:{imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},selectionChanged:(e,t)=>{e.selection=t.payload},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},autoAssignBoardOnClickChanged:(e,t)=>{e.autoAssignBoardOnClick=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},autoAddBoardIdChanged:(e,t)=>{if(!t.payload){e.autoAddBoardId="none";return}e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload},boardSearchTextChanged:(e,t)=>{e.boardSearchText=t.payload}},extraReducers:e=>{e.addMatcher(Zae,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId="none",t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId="none")}),e.addMatcher(Wn.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId="none"))})}}),{imageSelected:jo,shouldAutoSwitchChanged:BPe,autoAssignBoardOnClickChanged:zPe,setGalleryImageMinimumWidth:UPe,boardIdSelected:Ax,autoAddBoardIdChanged:jPe,galleryViewChanged:Fy,selectionChanged:mL,boardSearchTextChanged:VPe}=gL.actions,Yae=gL.reducer,Zae=Ni(ne.endpoints.deleteBoard.matchFulfilled,ne.endpoints.deleteBoardAndImages.matchFulfilled),yk={weight:.75},Qae={loras:{}},yL=Ht({name:"lora",initialState:Qae,reducers:{loraAdded:(e,t)=>{const{model_name:n,id:r,base_model:i}=t.payload;e.loras[r]={id:r,model_name:n,base_model:i,...yk}},loraRemoved:(e,t)=>{const n=t.payload;delete e.loras[n]},lorasCleared:e=>{e.loras={}},loraWeightChanged:(e,t)=>{const{id:n,weight:r}=t.payload,i=e.loras[n];i&&(i.weight=r)},loraWeightReset:(e,t)=>{const n=t.payload,r=e.loras[n];r&&(r.weight=yk.weight)}}}),{loraAdded:GPe,loraRemoved:vL,loraWeightChanged:HPe,loraWeightReset:WPe,lorasCleared:qPe}=yL.actions,Jae=yL.reducer;function Li(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{let t;const n=new Set,r=(l,u)=>{const c=typeof l=="function"?l(t):l;if(!Object.is(c,t)){const d=t;t=u??typeof c!="object"?c:Object.assign({},t,c),n.forEach(f=>f(t,d))}},i=()=>t,a={setState:r,getState:i,subscribe:l=>(n.add(l),()=>n.delete(l)),destroy:()=>{n.clear()}};return t=e(r,i,a),a},ele=e=>e?vk(e):vk,{useSyncExternalStoreWithSelector:tle}=Bse;function _L(e,t=e.getState,n){const r=tle(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return I.useDebugValue(r),r}const _k=(e,t)=>{const n=ele(e),r=(i,o=t)=>_L(n,i,o);return Object.assign(r,n),r},nle=(e,t)=>e?_k(e,t):_k;function Hr(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,i]of e)if(!Object.is(i,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r=0;r{}};function F1(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}m0.prototype=F1.prototype={constructor:m0,on:function(e,t){var n=this._,r=ile(e+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var n=new Array(i),r=0,i,o;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Sk.hasOwnProperty(t)?{space:Sk[t],local:e}:e}function sle(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===kx&&t.documentElement.namespaceURI===kx?t.createElement(e):t.createElementNS(n,e)}}function ale(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function bL(e){var t=B1(e);return(t.local?ale:sle)(t)}function lle(){}function G5(e){return e==null?lle:function(){return this.querySelector(e)}}function ule(e){typeof e!="function"&&(e=G5(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=y+1);!(S=b[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Nle(e){e||(e=Dle);function t(d,f){return d&&f?e(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,i=new Array(r),o=0;ot?1:e>=t?0:NaN}function Lle(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function $le(){return Array.from(this)}function Fle(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Xle:typeof t=="function"?Zle:Yle)(e,t,n??"")):bd(this.node(),e)}function bd(e,t){return e.style.getPropertyValue(t)||EL(e).getComputedStyle(e,null).getPropertyValue(t)}function Jle(e){return function(){delete this[e]}}function eue(e,t){return function(){this[e]=t}}function tue(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function nue(e,t){return arguments.length>1?this.each((t==null?Jle:typeof t=="function"?tue:eue)(e,t)):this.node()[e]}function TL(e){return e.trim().split(/^|\s+/)}function H5(e){return e.classList||new AL(e)}function AL(e){this._node=e,this._names=TL(e.getAttribute("class")||"")}AL.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function kL(e,t){for(var n=H5(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Oue(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function Px(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:o,x:s,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}Px.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function zue(e){return!e.ctrlKey&&!e.button}function Uue(){return this.parentNode}function jue(e,t){return t??{x:e.x,y:e.y}}function Vue(){return navigator.maxTouchPoints||"ontouchstart"in this}function Gue(){var e=zue,t=Uue,n=jue,r=Vue,i={},o=F1("start","drag","end"),s=0,a,l,u,c,d=0;function f(v){v.on("mousedown.drag",h).filter(r).on("touchstart.drag",b).on("touchmove.drag",_,Bue).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(v,S){if(!(c||!e.call(this,v,S))){var w=g(this,t.call(this,v,S),v,S,"mouse");w&&(Qi(v.view).on("mousemove.drag",p,fp).on("mouseup.drag",m,fp),IL(v.view),JS(v),u=!1,a=v.clientX,l=v.clientY,w("start",v))}}function p(v){if(Hc(v),!u){var S=v.clientX-a,w=v.clientY-l;u=S*S+w*w>d}i.mouse("drag",v)}function m(v){Qi(v.view).on("mousemove.drag mouseup.drag",null),ML(v.view,u),Hc(v),i.mouse("end",v)}function b(v,S){if(e.call(this,v,S)){var w=v.changedTouches,C=t.call(this,v,S),x=w.length,A,T;for(A=0;A>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Sm(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Sm(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Wue.exec(e))?new zr(t[1],t[2],t[3],1):(t=que.exec(e))?new zr(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Kue.exec(e))?Sm(t[1],t[2],t[3],t[4]):(t=Xue.exec(e))?Sm(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Yue.exec(e))?kk(t[1],t[2]/100,t[3]/100,1):(t=Zue.exec(e))?kk(t[1],t[2]/100,t[3]/100,t[4]):wk.hasOwnProperty(e)?Ek(wk[e]):e==="transparent"?new zr(NaN,NaN,NaN,0):null}function Ek(e){return new zr(e>>16&255,e>>8&255,e&255,1)}function Sm(e,t,n,r){return r<=0&&(e=t=n=NaN),new zr(e,t,n,r)}function ece(e){return e instanceof dg||(e=gp(e)),e?(e=e.rgb(),new zr(e.r,e.g,e.b,e.opacity)):new zr}function Ox(e,t,n,r){return arguments.length===1?ece(e):new zr(e,t,n,r??1)}function zr(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}W5(zr,Ox,NL(dg,{brighter(e){return e=e==null?zy:Math.pow(zy,e),new zr(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?hp:Math.pow(hp,e),new zr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new zr(Zl(this.r),Zl(this.g),Zl(this.b),Uy(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Tk,formatHex:Tk,formatHex8:tce,formatRgb:Ak,toString:Ak}));function Tk(){return`#${Vl(this.r)}${Vl(this.g)}${Vl(this.b)}`}function tce(){return`#${Vl(this.r)}${Vl(this.g)}${Vl(this.b)}${Vl((isNaN(this.opacity)?1:this.opacity)*255)}`}function Ak(){const e=Uy(this.opacity);return`${e===1?"rgb(":"rgba("}${Zl(this.r)}, ${Zl(this.g)}, ${Zl(this.b)}${e===1?")":`, ${e})`}`}function Uy(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Zl(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Vl(e){return e=Zl(e),(e<16?"0":"")+e.toString(16)}function kk(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ji(e,t,n,r)}function DL(e){if(e instanceof Ji)return new Ji(e.h,e.s,e.l,e.opacity);if(e instanceof dg||(e=gp(e)),!e)return new Ji;if(e instanceof Ji)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),s=NaN,a=o-i,l=(o+i)/2;return a?(t===o?s=(n-r)/a+(n0&&l<1?0:s,new Ji(s,a,l,e.opacity)}function nce(e,t,n,r){return arguments.length===1?DL(e):new Ji(e,t,n,r??1)}function Ji(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}W5(Ji,nce,NL(dg,{brighter(e){return e=e==null?zy:Math.pow(zy,e),new Ji(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?hp:Math.pow(hp,e),new Ji(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new zr(e2(e>=240?e-240:e+120,i,r),e2(e,i,r),e2(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ji(Pk(this.h),wm(this.s),wm(this.l),Uy(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Uy(this.opacity);return`${e===1?"hsl(":"hsla("}${Pk(this.h)}, ${wm(this.s)*100}%, ${wm(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Pk(e){return e=(e||0)%360,e<0?e+360:e}function wm(e){return Math.max(0,Math.min(1,e||0))}function e2(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const LL=e=>()=>e;function rce(e,t){return function(n){return e+n*t}}function ice(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function oce(e){return(e=+e)==1?$L:function(t,n){return n-t?ice(t,n,e):LL(isNaN(t)?n:t)}}function $L(e,t){var n=t-e;return n?rce(e,n):LL(isNaN(e)?t:e)}const Ok=function e(t){var n=oce(t);function r(i,o){var s=n((i=Ox(i)).r,(o=Ox(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=$L(i.opacity,o.opacity);return function(c){return i.r=s(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function sa(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Rx=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,t2=new RegExp(Rx.source,"g");function sce(e){return function(){return e}}function ace(e){return function(t){return e(t)+""}}function lce(e,t){var n=Rx.lastIndex=t2.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Rx.exec(e))&&(i=t2.exec(t));)(o=i.index)>n&&(o=t.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,l.push({i:s,x:sa(r,i)})),n=t2.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:sa(u,c)})):c&&d.push(i(d)+"rotate("+c+r)}function a(u,c,d,f){u!==c?f.push({i:d.push(i(d)+"skewX(",null,r)-2,x:sa(u,c)}):c&&d.push(i(d)+"skewX("+c+r)}function l(u,c,d,f,h,p){if(u!==d||c!==f){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:sa(u,d)},{i:m-2,x:sa(c,f)})}else(d!==1||f!==1)&&h.push(i(h)+"scale("+d+","+f+")")}return function(u,c){var d=[],f=[];return u=e(u),c=e(c),o(u.translateX,u.translateY,c.translateX,c.translateY,d,f),s(u.rotate,c.rotate,d,f),a(u.skewX,c.skewX,d,f),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,f),u=c=null,function(h){for(var p=-1,m=f.length,b;++p=0&&e._call.call(void 0,t),e=e._next;--Sd}function Mk(){du=(Vy=mp.now())+z1,Sd=Bf=0;try{vce()}finally{Sd=0,bce(),du=0}}function _ce(){var e=mp.now(),t=e-Vy;t>zL&&(z1-=t,Vy=e)}function bce(){for(var e,t=jy,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:jy=n);zf=e,Mx(r)}function Mx(e){if(!Sd){Bf&&(Bf=clearTimeout(Bf));var t=e-du;t>24?(e<1/0&&(Bf=setTimeout(Mk,e-mp.now()-z1)),yf&&(yf=clearInterval(yf))):(yf||(Vy=mp.now(),yf=setInterval(_ce,zL)),Sd=1,UL(Mk))}}function Nk(e,t,n){var r=new Gy;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var Sce=F1("start","end","cancel","interrupt"),wce=[],VL=0,Dk=1,Nx=2,y0=3,Lk=4,Dx=5,v0=6;function U1(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;xce(e,n,{name:t,index:r,group:i,on:Sce,tween:wce,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:VL})}function K5(e,t){var n=go(e,t);if(n.state>VL)throw new Error("too late; already scheduled");return n}function Qo(e,t){var n=go(e,t);if(n.state>y0)throw new Error("too late; already running");return n}function go(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function xce(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=jL(o,0,n.time);function o(u){n.state=Dk,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var c,d,f,h;if(n.state!==Dk)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===y0)return Nk(s);h.state===Lk?(h.state=v0,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+cNx&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Jce(e,t,n){var r,i,o=Qce(t)?K5:Qo;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function ede(e,t){var n=this._id;return arguments.length<2?go(this.node(),n).on.on(e):this.each(Jce(n,e,t))}function tde(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function nde(){return this.on("end.remove",tde(this._id))}function rde(e){var t=this._name,n=this._id;typeof e!="function"&&(e=G5(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function kde(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function xs(e,t,n){this.k=e,this.x=t,this.y=n}xs.prototype={constructor:xs,scale:function(e){return e===1?this:new xs(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new xs(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Da=new xs(1,0,0);xs.prototype;function n2(e){e.stopImmediatePropagation()}function vf(e){e.preventDefault(),e.stopImmediatePropagation()}function Pde(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Ode(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function $k(){return this.__zoom||Da}function Rde(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Ide(){return navigator.maxTouchPoints||"ontouchstart"in this}function Mde(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],o=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Nde(){var e=Pde,t=Ode,n=Mde,r=Rde,i=Ide,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=mce,u=F1("start","zoom","end"),c,d,f,h=500,p=150,m=0,b=10;function _(E){E.property("__zoom",$k).on("wheel.zoom",x,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",T).filter(i).on("touchstart.zoom",P).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",R).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(E,k,N,$){var M=E.selection?E.selection():E;M.property("__zoom",$k),E!==M?S(E,k,N,$):M.interrupt().each(function(){w(this,arguments).event($).start().zoom(null,typeof k=="function"?k.apply(this,arguments):k).end()})},_.scaleBy=function(E,k,N,$){_.scaleTo(E,function(){var M=this.__zoom.k,O=typeof k=="function"?k.apply(this,arguments):k;return M*O},N,$)},_.scaleTo=function(E,k,N,$){_.transform(E,function(){var M=t.apply(this,arguments),O=this.__zoom,D=N==null?v(M):typeof N=="function"?N.apply(this,arguments):N,F=O.invert(D),U=typeof k=="function"?k.apply(this,arguments):k;return n(g(y(O,U),D,F),M,s)},N,$)},_.translateBy=function(E,k,N,$){_.transform(E,function(){return n(this.__zoom.translate(typeof k=="function"?k.apply(this,arguments):k,typeof N=="function"?N.apply(this,arguments):N),t.apply(this,arguments),s)},null,$)},_.translateTo=function(E,k,N,$,M){_.transform(E,function(){var O=t.apply(this,arguments),D=this.__zoom,F=$==null?v(O):typeof $=="function"?$.apply(this,arguments):$;return n(Da.translate(F[0],F[1]).scale(D.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof N=="function"?-N.apply(this,arguments):-N),O,s)},$,M)};function y(E,k){return k=Math.max(o[0],Math.min(o[1],k)),k===E.k?E:new xs(k,E.x,E.y)}function g(E,k,N){var $=k[0]-N[0]*E.k,M=k[1]-N[1]*E.k;return $===E.x&&M===E.y?E:new xs(E.k,$,M)}function v(E){return[(+E[0][0]+ +E[1][0])/2,(+E[0][1]+ +E[1][1])/2]}function S(E,k,N,$){E.on("start.zoom",function(){w(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event($).end()}).tween("zoom",function(){var M=this,O=arguments,D=w(M,O).event($),F=t.apply(M,O),U=N==null?v(F):typeof N=="function"?N.apply(M,O):N,V=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),q=M.__zoom,X=typeof k=="function"?k.apply(M,O):k,Z=l(q.invert(U).concat(V/q.k),X.invert(U).concat(V/X.k));return function(z){if(z===1)z=X;else{var W=Z(z),Q=V/W[2];z=new xs(Q,U[0]-W[0]*Q,U[1]-W[1]*Q)}D.zoom(null,z)}})}function w(E,k,N){return!N&&E.__zooming||new C(E,k)}function C(E,k){this.that=E,this.args=k,this.active=0,this.sourceEvent=null,this.extent=t.apply(E,k),this.taps=0}C.prototype={event:function(E){return E&&(this.sourceEvent=E),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(E,k){return this.mouse&&E!=="mouse"&&(this.mouse[1]=k.invert(this.mouse[0])),this.touch0&&E!=="touch"&&(this.touch0[1]=k.invert(this.touch0[0])),this.touch1&&E!=="touch"&&(this.touch1[1]=k.invert(this.touch1[0])),this.that.__zoom=k,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(E){var k=Qi(this.that).datum();u.call(E,this.that,new kde(E,{sourceEvent:this.sourceEvent,target:_,type:E,transform:this.that.__zoom,dispatch:u}),k)}};function x(E,...k){if(!e.apply(this,arguments))return;var N=w(this,k).event(E),$=this.__zoom,M=Math.max(o[0],Math.min(o[1],$.k*Math.pow(2,r.apply(this,arguments)))),O=Eo(E);if(N.wheel)(N.mouse[0][0]!==O[0]||N.mouse[0][1]!==O[1])&&(N.mouse[1]=$.invert(N.mouse[0]=O)),clearTimeout(N.wheel);else{if($.k===M)return;N.mouse=[O,$.invert(O)],_0(this),N.start()}vf(E),N.wheel=setTimeout(D,p),N.zoom("mouse",n(g(y($,M),N.mouse[0],N.mouse[1]),N.extent,s));function D(){N.wheel=null,N.end()}}function A(E,...k){if(f||!e.apply(this,arguments))return;var N=E.currentTarget,$=w(this,k,!0).event(E),M=Qi(E.view).on("mousemove.zoom",U,!0).on("mouseup.zoom",V,!0),O=Eo(E,N),D=E.clientX,F=E.clientY;IL(E.view),n2(E),$.mouse=[O,this.__zoom.invert(O)],_0(this),$.start();function U(q){if(vf(q),!$.moved){var X=q.clientX-D,Z=q.clientY-F;$.moved=X*X+Z*Z>m}$.event(q).zoom("mouse",n(g($.that.__zoom,$.mouse[0]=Eo(q,N),$.mouse[1]),$.extent,s))}function V(q){M.on("mousemove.zoom mouseup.zoom",null),ML(q.view,$.moved),vf(q),$.event(q).end()}}function T(E,...k){if(e.apply(this,arguments)){var N=this.__zoom,$=Eo(E.changedTouches?E.changedTouches[0]:E,this),M=N.invert($),O=N.k*(E.shiftKey?.5:2),D=n(g(y(N,O),$,M),t.apply(this,k),s);vf(E),a>0?Qi(this).transition().duration(a).call(S,D,$,E):Qi(this).call(_.transform,D,$,E)}}function P(E,...k){if(e.apply(this,arguments)){var N=E.touches,$=N.length,M=w(this,k,E.changedTouches.length===$).event(E),O,D,F,U;for(n2(E),D=0;D<$;++D)F=N[D],U=Eo(F,this),U=[U,this.__zoom.invert(U),F.identifier],M.touch0?!M.touch1&&M.touch0[2]!==U[2]&&(M.touch1=U,M.taps=0):(M.touch0=U,O=!0,M.taps=1+!!c);c&&(c=clearTimeout(c)),O&&(M.taps<2&&(d=U[0],c=setTimeout(function(){c=null},h)),_0(this),M.start())}}function L(E,...k){if(this.__zooming){var N=w(this,k).event(E),$=E.changedTouches,M=$.length,O,D,F,U;for(vf(E),O=0;O"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},qL=Bs.error001();function rn(e,t){const n=I.useContext(j1);if(n===null)throw new Error(qL);return _L(n,e,t)}const Fn=()=>{const e=I.useContext(j1);if(e===null)throw new Error(qL);return I.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Lde=e=>e.userSelectionActive?"none":"all";function $de({position:e,children:t,className:n,style:r,...i}){const o=rn(Lde),s=`${e}`.split("-");return Y.jsx("div",{className:Li(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function Fde({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:Y.jsx($de,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:Y.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Bde=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:i=!0,labelBgStyle:o={},labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...c})=>{const d=I.useRef(null),[f,h]=I.useState({x:0,y:0,width:0,height:0}),p=Li(["react-flow__edge-textwrapper",u]);return I.useEffect(()=>{if(d.current){const m=d.current.getBBox();h({x:m.x,y:m.y,width:m.width,height:m.height})}},[n]),typeof n>"u"||!n?null:Y.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&Y.jsx("rect",{width:f.width+2*s[0],x:-s[0],y:-s[1],height:f.height+2*s[1],className:"react-flow__edge-textbg",style:o,rx:a,ry:a}),Y.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var zde=I.memo(Bde);const Y5=e=>({width:e.offsetWidth,height:e.offsetHeight}),wd=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Z5=(e={x:0,y:0},t)=>({x:wd(e.x,t[0][0],t[1][0]),y:wd(e.y,t[0][1],t[1][1])}),Fk=(e,t,n)=>en?-wd(Math.abs(e-n),1,50)/50:0,KL=(e,t)=>{const n=Fk(e.x,35,t.width-35)*20,r=Fk(e.y,35,t.height-35)*20;return[n,r]},XL=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},YL=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),yp=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),ZL=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Bk=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),KPe=(e,t)=>ZL(YL(yp(e),yp(t))),Lx=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Ude=e=>Ai(e.width)&&Ai(e.height)&&Ai(e.x)&&Ai(e.y),Ai=e=>!isNaN(e)&&isFinite(e),xn=Symbol.for("internals"),QL=["Enter"," ","Escape"],jde=(e,t)=>{},Vde=e=>"nativeEvent"in e;function $x(e){var i,o;const t=Vde(e)?e.nativeEvent:e,n=((o=(i=t.composedPath)==null?void 0:i.call(t))==null?void 0:o[0])||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n==null?void 0:n.nodeName)||(n==null?void 0:n.hasAttribute("contenteditable"))||!!(n!=null&&n.closest(".nokey"))}const JL=e=>"clientX"in e,La=(e,t)=>{var o,s;const n=JL(e),r=n?e.clientX:(o=e.touches)==null?void 0:o[0].clientX,i=n?e.clientY:(s=e.touches)==null?void 0:s[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:i-((t==null?void 0:t.top)??0)}},Hy=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},fg=({id:e,path:t,labelX:n,labelY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h=20})=>Y.jsxs(Y.Fragment,{children:[Y.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&Y.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&Ai(n)&&Ai(r)?Y.jsx(zde,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});fg.displayName="BaseEdge";function _f(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function e$({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[b,_,y]=n$({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return Y.jsx(fg,{path:b,labelX:_,labelY:y,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});Q5.displayName="SimpleBezierEdge";const Uk={[we.Left]:{x:-1,y:0},[we.Right]:{x:1,y:0},[we.Top]:{x:0,y:-1},[we.Bottom]:{x:0,y:1}},Gde=({source:e,sourcePosition:t=we.Bottom,target:n})=>t===we.Left||t===we.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Hde({source:e,sourcePosition:t=we.Bottom,target:n,targetPosition:r=we.Top,center:i,offset:o}){const s=Uk[t],a=Uk[r],l={x:e.x+s.x*o,y:e.y+s.y*o},u={x:n.x+a.x*o,y:n.y+a.y*o},c=Gde({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const b={x:0,y:0},_={x:0,y:0},[y,g,v,S]=e$({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||y,m=i.y||g;const C=[{x:p,y:l.y},{x:p,y:u.y}],x=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?C:x:h=d==="x"?x:C}else{const C=[{x:l.x,y:u.y}],x=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?x:C:h=s.y===f?C:x,t===r){const R=Math.abs(e[d]-n[d]);if(R<=o){const E=Math.min(o-1,o-R);s[d]===f?b[d]=(l[d]>e[d]?-1:1)*E:_[d]=(u[d]>n[d]?-1:1)*E}}if(t!==r){const R=d==="x"?"y":"x",E=s[d]===a[R],k=l[R]>u[R],N=l[R]=L?(p=(A.x+T.x)/2,m=h[0].y):(p=h[0].x,m=(A.y+T.y)/2)}return[[e,{x:l.x+b.x,y:l.y+b.y},...h,{x:u.x+_.x,y:u.y+_.y},n],p,m,v,S]}function Wde(e,t,n,r){const i=Math.min(jk(e,t)/2,jk(t,n)/2,r),{x:o,y:s}=t;if(e.x===o&&o===n.x||e.y===s&&s===n.y)return`L${o} ${s}`;if(e.y===s){const u=e.x{let g="";return y>0&&y{const[_,y,g]=Fx({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:r,targetPosition:f,borderRadius:m==null?void 0:m.borderRadius,offset:m==null?void 0:m.offset});return Y.jsx(fg,{path:_,labelX:y,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:b})});V1.displayName="SmoothStepEdge";const J5=I.memo(e=>{var t;return Y.jsx(V1,{...e,pathOptions:I.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});J5.displayName="StepEdge";function qde({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=e$({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const eE=I.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})=>{const[p,m,b]=qde({sourceX:e,sourceY:t,targetX:n,targetY:r});return Y.jsx(fg,{path:p,labelX:m,labelY:b,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});eE.displayName="StraightEdge";function Em(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Vk({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case we.Left:return[t-Em(t-r,o),n];case we.Right:return[t+Em(r-t,o),n];case we.Top:return[t,n-Em(n-i,o)];case we.Bottom:return[t,n+Em(i-n,o)]}}function r$({sourceX:e,sourceY:t,sourcePosition:n=we.Bottom,targetX:r,targetY:i,targetPosition:o=we.Top,curvature:s=.25}){const[a,l]=Vk({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=Vk({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=t$({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${i}`,d,f,h,p]}const qy=I.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=we.Bottom,targetPosition:o=we.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:b})=>{const[_,y,g]=r$({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return Y.jsx(fg,{path:_,labelX:y,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:b})});qy.displayName="BezierEdge";const tE=I.createContext(null),Kde=tE.Provider;tE.Consumer;const Xde=()=>I.useContext(tE),Yde=e=>"id"in e&&"source"in e&&"target"in e,i$=e=>"id"in e&&!("source"in e)&&!("target"in e),Zde=(e,t,n)=>{if(!i$(e))return[];const r=n.filter(i=>i.source===e.id).map(i=>i.target);return t.filter(i=>r.includes(i.id))},Qde=(e,t,n)=>{if(!i$(e))return[];const r=n.filter(i=>i.target===e.id).map(i=>i.source);return t.filter(i=>r.includes(i.id))},Jde=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,Bx=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,efe=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),o$=(e,t)=>{if(!e.source||!e.target)return t;let n;return Yde(e)?n={...e}:n={...e,id:Jde(e)},efe(n,t)?t:t.concat(n)},s$=({x:e,y:t},[n,r,i],o,[s,a])=>{const l={x:(e-n)/i,y:(t-r)/i};return o?{x:s*Math.round(l.x/s),y:a*Math.round(l.y/a)}:l},tfe=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),qc=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],i={x:e.position.x-n,y:e.position.y-r};return{...i,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:i}},nE=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,i)=>{const{x:o,y:s}=qc(i,t).positionAbsolute;return YL(r,yp({x:o,y:s,width:i.width||0,height:i.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return ZL(n)},a$=(e,t,[n,r,i]=[0,0,1],o=!1,s=!1,a=[0,0])=>{const l={x:(t.x-n)/i,y:(t.y-r)/i,width:t.width/i,height:t.height/i},u=[];return e.forEach(c=>{const{width:d,height:f,selectable:h=!0,hidden:p=!1}=c;if(s&&!h||p)return!1;const{positionAbsolute:m}=qc(c,a),b={x:m.x,y:m.y,width:d||0,height:f||0},_=Lx(l,b),y=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&_>0,v=(d||0)*(f||0);(y||g||_>=v||c.dragging)&&u.push(c)}),u},rE=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},l$=(e,t,n,r,i,o=.1)=>{const s=t/(e.width*(1+o)),a=n/(e.height*(1+o)),l=Math.min(s,a),u=wd(l,r,i),c=e.x+e.width/2,d=e.y+e.height/2,f=t/2-c*u,h=n/2-d*u;return[f,h,u]},Rl=(e,t=0)=>e.transition().duration(t);function Gk(e,t,n,r){return(t[n]||[]).reduce((i,o)=>{var s,a;return`${e.id}-${o.id}-${n}`!==r&&i.push({id:o.id||null,type:n,nodeId:e.id,x:(((s=e.positionAbsolute)==null?void 0:s.x)??0)+o.x+o.width/2,y:(((a=e.positionAbsolute)==null?void 0:a.y)??0)+o.y+o.height/2}),i},[])}function nfe(e,t,n,r,i,o){const{x:s,y:a}=La(e),u=t.elementsFromPoint(s,a).find(p=>p.classList.contains("react-flow__handle"));if(u){const p=u.getAttribute("data-nodeid");if(p){const m=iE(void 0,u),b=u.getAttribute("data-handleid"),_=o({nodeId:p,id:b,type:m});if(_)return{handle:{id:b,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:_}}}let c=[],d=1/0;if(i.forEach(p=>{const m=Math.sqrt((p.x-n.x)**2+(p.y-n.y)**2);if(m<=r){const b=o(p);m<=d&&(mp.isValid),h=c.some(({handle:p})=>p.type==="target");return c.find(({handle:p,validHandleResult:m})=>h?p.type==="target":f?m.isValid:!0)||c[0]}const rfe={source:null,target:null,sourceHandle:null,targetHandle:null},u$=()=>({handleDomNode:null,isValid:!1,connection:rfe,endHandle:null});function c$(e,t,n,r,i,o,s){const a=i==="target",l=s.querySelector(`.react-flow__handle[data-id="${e==null?void 0:e.nodeId}-${e==null?void 0:e.id}-${e==null?void 0:e.type}"]`),u={...u$(),handleDomNode:l};if(l){const c=iE(void 0,l),d=l.getAttribute("data-nodeid"),f=l.getAttribute("data-handleid"),h=l.classList.contains("connectable"),p=l.classList.contains("connectableend"),m={source:a?d:n,sourceHandle:a?f:r,target:a?n:d,targetHandle:a?r:f};u.connection=m,h&&p&&(t===fu.Strict?a&&c==="source"||!a&&c==="target":d!==n||f!==r)&&(u.endHandle={nodeId:d,handleId:f,type:c},u.isValid=o(m))}return u}function ife({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[xn]){const{handleBounds:s}=o[xn];let a=[],l=[];s&&(a=Gk(o,s,"source",`${t}-${n}-${r}`),l=Gk(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function iE(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function r2(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function ofe(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function d$({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=XL(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:b,getNodes:_,cancelConnection:y}=o();let g=0,v;const{x:S,y:w}=La(e),C=c==null?void 0:c.elementFromPoint(S,w),x=iE(l,C),A=f==null?void 0:f.getBoundingClientRect();if(!A||!x)return;let T,P=La(e,A),L=!1,R=null,E=!1,k=null;const N=ife({nodes:_(),nodeId:n,handleId:t,handleType:x}),$=()=>{if(!h)return;const[D,F]=KL(P,A);b({x:D,y:F}),g=requestAnimationFrame($)};s({connectionPosition:P,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:x,connectionStartHandle:{nodeId:n,handleId:t,type:x},connectionEndHandle:null}),m==null||m(e,{nodeId:n,handleId:t,handleType:x});function M(D){const{transform:F}=o();P=La(D,A);const{handle:U,validHandleResult:V}=nfe(D,c,s$(P,F,!1,[1,1]),p,N,q=>c$(q,d,n,t,i?"target":"source",a,c));if(v=U,L||($(),L=!0),k=V.handleDomNode,R=V.connection,E=V.isValid,s({connectionPosition:v&&E?tfe({x:v.x,y:v.y},F):P,connectionStatus:ofe(!!v,E),connectionEndHandle:V.endHandle}),!v&&!E&&!k)return r2(T);R.source!==R.target&&k&&(r2(T),T=k,k.classList.add("connecting","react-flow__handle-connecting"),k.classList.toggle("valid",E),k.classList.toggle("react-flow__handle-valid",E))}function O(D){var F,U;(v||k)&&R&&E&&(r==null||r(R)),(U=(F=o()).onConnectEnd)==null||U.call(F,D),l&&(u==null||u(D)),r2(T),y(),cancelAnimationFrame(g),L=!1,E=!1,R=null,k=null,c.removeEventListener("mousemove",M),c.removeEventListener("mouseup",O),c.removeEventListener("touchmove",M),c.removeEventListener("touchend",O)}c.addEventListener("mousemove",M),c.addEventListener("mouseup",O),c.addEventListener("touchmove",M),c.addEventListener("touchend",O)}const Hk=()=>!0,sfe=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),afe=(e,t,n)=>r=>{const{connectionStartHandle:i,connectionEndHandle:o,connectionClickStartHandle:s}=r;return{connecting:(i==null?void 0:i.nodeId)===e&&(i==null?void 0:i.handleId)===t&&(i==null?void 0:i.type)===n||(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.handleId)===t&&(o==null?void 0:o.type)===n,clickConnecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.handleId)===t&&(s==null?void 0:s.type)===n}},f$=I.forwardRef(({type:e="source",position:t=we.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:o=!0,id:s,onConnect:a,children:l,className:u,onMouseDown:c,onTouchStart:d,...f},h)=>{var A,T;const p=s||null,m=e==="target",b=Fn(),_=Xde(),{connectOnClick:y,noPanClassName:g}=rn(sfe,Hr),{connecting:v,clickConnecting:S}=rn(afe(_,p,e),Hr);_||(T=(A=b.getState()).onError)==null||T.call(A,"010",Bs.error010());const w=P=>{const{defaultEdgeOptions:L,onConnect:R,hasDefaultEdges:E}=b.getState(),k={...L,...P};if(E){const{edges:N,setEdges:$}=b.getState();$(o$(k,N))}R==null||R(k),a==null||a(k)},C=P=>{if(!_)return;const L=JL(P);i&&(L&&P.button===0||!L)&&d$({event:P,handleId:p,nodeId:_,onConnect:w,isTarget:m,getState:b.getState,setState:b.setState,isValidConnection:n||b.getState().isValidConnection||Hk}),L?c==null||c(P):d==null||d(P)},x=P=>{const{onClickConnectStart:L,onClickConnectEnd:R,connectionClickStartHandle:E,connectionMode:k,isValidConnection:N}=b.getState();if(!_||!E&&!i)return;if(!E){L==null||L(P,{nodeId:_,handleId:p,handleType:e}),b.setState({connectionClickStartHandle:{nodeId:_,type:e,handleId:p}});return}const $=XL(P.target),M=n||N||Hk,{connection:O,isValid:D}=c$({nodeId:_,id:p,type:e},k,E.nodeId,E.handleId||null,E.type,M,$);D&&w(O),R==null||R(P),b.setState({connectionClickStartHandle:null})};return Y.jsx("div",{"data-handleid":p,"data-nodeid":_,"data-handlepos":t,"data-id":`${_}-${p}-${e}`,className:Li(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:S,connectionindicator:r&&(i&&!v||o&&v)}]),onMouseDown:C,onTouchStart:C,onClick:y?x:void 0,ref:h,...f,children:l})});f$.displayName="Handle";var Ky=I.memo(f$);const h$=({data:e,isConnectable:t,targetPosition:n=we.Top,sourcePosition:r=we.Bottom})=>Y.jsxs(Y.Fragment,{children:[Y.jsx(Ky,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,Y.jsx(Ky,{type:"source",position:r,isConnectable:t})]});h$.displayName="DefaultNode";var zx=I.memo(h$);const p$=({data:e,isConnectable:t,sourcePosition:n=we.Bottom})=>Y.jsxs(Y.Fragment,{children:[e==null?void 0:e.label,Y.jsx(Ky,{type:"source",position:n,isConnectable:t})]});p$.displayName="InputNode";var g$=I.memo(p$);const m$=({data:e,isConnectable:t,targetPosition:n=we.Top})=>Y.jsxs(Y.Fragment,{children:[Y.jsx(Ky,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});m$.displayName="OutputNode";var y$=I.memo(m$);const oE=()=>null;oE.displayName="GroupNode";const lfe=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Tm=e=>e.id;function ufe(e,t){return Hr(e.selectedNodes.map(Tm),t.selectedNodes.map(Tm))&&Hr(e.selectedEdges.map(Tm),t.selectedEdges.map(Tm))}const v$=I.memo(({onSelectionChange:e})=>{const t=Fn(),{selectedNodes:n,selectedEdges:r}=rn(lfe,ufe);return I.useEffect(()=>{var o,s;const i={nodes:n,edges:r};e==null||e(i),(s=(o=t.getState()).onSelectionChange)==null||s.call(o,i)},[n,r,e]),null});v$.displayName="SelectionListener";const cfe=e=>!!e.onSelectionChange;function dfe({onSelectionChange:e}){const t=rn(cfe);return e||t?Y.jsx(v$,{onSelectionChange:e}):null}const ffe=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function qu(e,t){I.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function $e(e,t,n){I.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const hfe=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:i,onConnectStart:o,onConnectEnd:s,onClickConnectStart:a,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:c,nodesFocusable:d,edgesFocusable:f,edgesUpdatable:h,elevateNodesOnSelect:p,minZoom:m,maxZoom:b,nodeExtent:_,onNodesChange:y,onEdgesChange:g,elementsSelectable:v,connectionMode:S,snapGrid:w,snapToGrid:C,translateExtent:x,connectOnClick:A,defaultEdgeOptions:T,fitView:P,fitViewOptions:L,onNodesDelete:R,onEdgesDelete:E,onNodeDrag:k,onNodeDragStart:N,onNodeDragStop:$,onSelectionDrag:M,onSelectionDragStart:O,onSelectionDragStop:D,noPanClassName:F,nodeOrigin:U,rfId:V,autoPanOnConnect:q,autoPanOnNodeDrag:X,onError:Z,connectionRadius:z,isValidConnection:W})=>{const{setNodes:Q,setEdges:J,setDefaultNodesAndEdges:se,setMinZoom:oe,setMaxZoom:Me,setTranslateExtent:Ae,setNodeExtent:_e,reset:je}=rn(ffe,Hr),he=Fn();return I.useEffect(()=>{const It=r==null?void 0:r.map(Bn=>({...Bn,...T}));return se(n,It),()=>{je()}},[]),$e("defaultEdgeOptions",T,he.setState),$e("connectionMode",S,he.setState),$e("onConnect",i,he.setState),$e("onConnectStart",o,he.setState),$e("onConnectEnd",s,he.setState),$e("onClickConnectStart",a,he.setState),$e("onClickConnectEnd",l,he.setState),$e("nodesDraggable",u,he.setState),$e("nodesConnectable",c,he.setState),$e("nodesFocusable",d,he.setState),$e("edgesFocusable",f,he.setState),$e("edgesUpdatable",h,he.setState),$e("elementsSelectable",v,he.setState),$e("elevateNodesOnSelect",p,he.setState),$e("snapToGrid",C,he.setState),$e("snapGrid",w,he.setState),$e("onNodesChange",y,he.setState),$e("onEdgesChange",g,he.setState),$e("connectOnClick",A,he.setState),$e("fitViewOnInit",P,he.setState),$e("fitViewOnInitOptions",L,he.setState),$e("onNodesDelete",R,he.setState),$e("onEdgesDelete",E,he.setState),$e("onNodeDrag",k,he.setState),$e("onNodeDragStart",N,he.setState),$e("onNodeDragStop",$,he.setState),$e("onSelectionDrag",M,he.setState),$e("onSelectionDragStart",O,he.setState),$e("onSelectionDragStop",D,he.setState),$e("noPanClassName",F,he.setState),$e("nodeOrigin",U,he.setState),$e("rfId",V,he.setState),$e("autoPanOnConnect",q,he.setState),$e("autoPanOnNodeDrag",X,he.setState),$e("onError",Z,he.setState),$e("connectionRadius",z,he.setState),$e("isValidConnection",W,he.setState),qu(e,Q),qu(t,J),qu(m,oe),qu(b,Me),qu(x,Ae),qu(_,_e),null},Wk={display:"none"},pfe={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},_$="react-flow__node-desc",b$="react-flow__edge-desc",gfe="react-flow__aria-live",mfe=e=>e.ariaLiveMessage;function yfe({rfId:e}){const t=rn(mfe);return Y.jsx("div",{id:`${gfe}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:pfe,children:t})}function vfe({rfId:e,disableKeyboardA11y:t}){return Y.jsxs(Y.Fragment,{children:[Y.jsxs("div",{id:`${_$}-${e}`,style:Wk,children:["Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),Y.jsx("div",{id:`${b$}-${e}`,style:Wk,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&Y.jsx(yfe,{rfId:e})]})}const _fe=typeof document<"u"?document:null;var vp=(e=null,t={target:_fe})=>{const[n,r]=I.useState(!1),i=I.useRef(!1),o=I.useRef(new Set([])),[s,a]=I.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),c=u.reduce((d,f)=>d.concat(...f),[]);return[u,c]}return[[],[]]},[e]);return I.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&$x(h))return!1;const p=Kk(h.code,a);o.current.add(h[p]),qk(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&$x(h))return!1;const p=Kk(h.code,a);qk(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),h.key==="Meta"&&o.current.clear(),i.current=!1},f=()=>{o.current.clear(),r(!1)};return(l=t==null?void 0:t.target)==null||l.addEventListener("keydown",c),(u=t==null?void 0:t.target)==null||u.addEventListener("keyup",d),window.addEventListener("blur",f),()=>{var h,p;(h=t==null?void 0:t.target)==null||h.removeEventListener("keydown",c),(p=t==null?void 0:t.target)==null||p.removeEventListener("keyup",d),window.removeEventListener("blur",f)}}},[e,r]),n};function qk(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function Kk(e,t){return t.includes(e)?"code":"key"}function S$(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=qc(i,r);return S$(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[xn])==null?void 0:s.z)??0)>(n.z??0)?((a=i[xn])==null?void 0:a.z)??0:n.z??0},r)}function w$(e,t,n){e.forEach(r=>{var i;if(r.parentNode&&!e.has(r.parentNode))throw new Error(`Parent node ${r.parentNode} not found`);if(r.parentNode||n!=null&&n[r.id]){const{x:o,y:s,z:a}=S$(r,e,{...r.position,z:((i=r[xn])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[xn].z=a,n!=null&&n[r.id]&&(r[xn].isParent=!0)}})}function i2(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(Ai(a.zIndex)?a.zIndex:0)+(a.selected?s:0),u=t.get(a.id),c={width:u==null?void 0:u.width,height:u==null?void 0:u.height,...a,positionAbsolute:{x:a.position.x,y:a.position.y}};a.parentNode&&(c.parentNode=a.parentNode,o[a.parentNode]=!0),Object.defineProperty(c,xn,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[xn])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),w$(i,n,o),i}function x$(e,t={}){const{getNodes:n,width:r,height:i,minZoom:o,maxZoom:s,d3Zoom:a,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:c,nodeOrigin:d}=e(),f=t.initial&&!u&&c;if(a&&l&&(f||!t.initial)){const p=n().filter(b=>{var y;const _=t.includeHiddenNodes?b.width&&b.height:!b.hidden;return(y=t.nodes)!=null&&y.length?_&&t.nodes.some(g=>g.id===b.id):_}),m=p.every(b=>b.width&&b.height);if(p.length>0&&m){const b=nE(p,d),[_,y,g]=l$(b,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),v=Da.translate(_,y).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(Rl(l,t.duration),v):a.transform(l,v),!0}}return!1}function bfe(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[xn]:r[xn],selected:n.selected})}),new Map(t)}function Sfe(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function Am({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:i,edges:o,onNodesChange:s,onEdgesChange:a,hasDefaultNodes:l,hasDefaultEdges:u}=n();e!=null&&e.length&&(l&&r({nodeInternals:bfe(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:Sfe(t,o)}),a==null||a(t))}const Ku=()=>{},wfe={zoomIn:Ku,zoomOut:Ku,zoomTo:Ku,getZoom:()=>1,setViewport:Ku,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:Ku,fitBounds:Ku,project:e=>e,viewportInitialized:!1},xfe=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),Cfe=()=>{const e=Fn(),{d3Zoom:t,d3Selection:n}=rn(xfe,Hr);return I.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(Rl(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(Rl(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(Rl(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=Da.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(Rl(n,o==null?void 0:o.duration),u)},getViewport:()=>{const[i,o,s]=e.getState().transform;return{x:i,y:o,zoom:s}},fitView:i=>x$(e.getState,i),setCenter:(i,o,s)=>{const{width:a,height:l,maxZoom:u}=e.getState(),c=typeof(s==null?void 0:s.zoom)<"u"?s.zoom:u,d=a/2-i*c,f=l/2-o*c,h=Da.translate(d,f).scale(c);t.transform(Rl(n,s==null?void 0:s.duration),h)},fitBounds:(i,o)=>{const{width:s,height:a,minZoom:l,maxZoom:u}=e.getState(),[c,d,f]=l$(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=Da.translate(c,d).scale(f);t.transform(Rl(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return s$(i,o,s,a)},viewportInitialized:!0}:wfe,[t,n])};function C$(){const e=Cfe(),t=Fn(),n=I.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=I.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=I.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(b=>({...b}))},[]),o=I.useCallback(m=>{const{edges:b=[]}=t.getState();return b.find(_=>_.id===m)},[]),s=I.useCallback(m=>{const{getNodes:b,setNodes:_,hasDefaultNodes:y,onNodesChange:g}=t.getState(),v=b(),S=typeof m=="function"?m(v):m;if(y)_(S);else if(g){const w=S.length===0?v.map(C=>({type:"remove",id:C.id})):S.map(C=>({item:C,type:"reset"}));g(w)}},[]),a=I.useCallback(m=>{const{edges:b=[],setEdges:_,hasDefaultEdges:y,onEdgesChange:g}=t.getState(),v=typeof m=="function"?m(b):m;if(y)_(v);else if(g){const S=v.length===0?b.map(w=>({type:"remove",id:w.id})):v.map(w=>({item:w,type:"reset"}));g(S)}},[]),l=I.useCallback(m=>{const b=Array.isArray(m)?m:[m],{getNodes:_,setNodes:y,hasDefaultNodes:g,onNodesChange:v}=t.getState();if(g){const w=[..._(),...b];y(w)}else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),u=I.useCallback(m=>{const b=Array.isArray(m)?m:[m],{edges:_=[],setEdges:y,hasDefaultEdges:g,onEdgesChange:v}=t.getState();if(g)y([..._,...b]);else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),c=I.useCallback(()=>{const{getNodes:m,edges:b=[],transform:_}=t.getState(),[y,g,v]=_;return{nodes:m().map(S=>({...S})),edges:b.map(S=>({...S})),viewport:{x:y,y:g,zoom:v}}},[]),d=I.useCallback(({nodes:m,edges:b})=>{const{nodeInternals:_,getNodes:y,edges:g,hasDefaultNodes:v,hasDefaultEdges:S,onNodesDelete:w,onEdgesDelete:C,onNodesChange:x,onEdgesChange:A}=t.getState(),T=(m||[]).map(k=>k.id),P=(b||[]).map(k=>k.id),L=y().reduce((k,N)=>{const $=!T.includes(N.id)&&N.parentNode&&k.find(O=>O.id===N.parentNode);return(typeof N.deletable=="boolean"?N.deletable:!0)&&(T.includes(N.id)||$)&&k.push(N),k},[]),R=g.filter(k=>typeof k.deletable=="boolean"?k.deletable:!0),E=R.filter(k=>P.includes(k.id));if(L||E){const k=rE(L,R),N=[...E,...k],$=N.reduce((M,O)=>(M.includes(O.id)||M.push(O.id),M),[]);if((S||v)&&(S&&t.setState({edges:g.filter(M=>!$.includes(M.id))}),v&&(L.forEach(M=>{_.delete(M.id)}),t.setState({nodeInternals:new Map(_)}))),$.length>0&&(C==null||C(N),A&&A($.map(M=>({id:M,type:"remove"})))),L.length>0&&(w==null||w(L),x)){const M=L.map(O=>({id:O.id,type:"remove"}));x(M)}}},[]),f=I.useCallback(m=>{const b=Ude(m),_=b?null:t.getState().nodeInternals.get(m.id);return[b?m:Bk(_),_,b]},[]),h=I.useCallback((m,b=!0,_)=>{const[y,g,v]=f(m);return y?(_||t.getState().getNodes()).filter(S=>{if(!v&&(S.id===g.id||!S.positionAbsolute))return!1;const w=Bk(S),C=Lx(w,y);return b&&C>0||C>=m.width*m.height}):[]},[]),p=I.useCallback((m,b,_=!0)=>{const[y]=f(m);if(!y)return!1;const g=Lx(y,b);return _&&g>0||g>=m.width*m.height},[]);return I.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:i,getEdge:o,setNodes:s,setEdges:a,addNodes:l,addEdges:u,toObject:c,deleteElements:d,getIntersectingNodes:h,isNodeIntersecting:p}),[e,n,r,i,o,s,a,l,u,c,d,h,p])}var Efe=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=Fn(),{deleteElements:r}=C$(),i=vp(e),o=vp(t);I.useEffect(()=>{if(i){const{edges:s,getNodes:a}=n.getState(),l=a().filter(c=>c.selected),u=s.filter(c=>c.selected);r({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[i]),I.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function Tfe(e){const t=Fn();I.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=Y5(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",Bs.error004())),t.setState({width:i.width||500,height:i.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const sE={position:"absolute",width:"100%",height:"100%",top:0,left:0},Afe=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,km=e=>({x:e.x,y:e.y,zoom:e.k}),Xu=(e,t)=>e.target.closest(`.${t}`),Xk=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Yk=e=>{const t=e.ctrlKey&&Hy()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},kfe=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),Pfe=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=Gl.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:b,preventScrolling:_=!0,children:y,noWheelClassName:g,noPanClassName:v})=>{const S=I.useRef(),w=Fn(),C=I.useRef(!1),x=I.useRef(!1),A=I.useRef(null),T=I.useRef({x:0,y:0,zoom:0}),{d3Zoom:P,d3Selection:L,d3ZoomHandler:R,userSelectionActive:E}=rn(kfe,Hr),k=vp(b),N=I.useRef(0),$=I.useRef(!1),M=I.useRef();return Tfe(A),I.useEffect(()=>{if(A.current){const O=A.current.getBoundingClientRect(),D=Nde().scaleExtent([p,m]).translateExtent(h),F=Qi(A.current).call(D),U=Da.translate(f.x,f.y).scale(wd(f.zoom,p,m)),V=[[0,0],[O.width,O.height]],q=D.constrain()(U,V,h);D.transform(F,q),D.wheelDelta(Yk),w.setState({d3Zoom:D,d3Selection:F,d3ZoomHandler:F.on("wheel.zoom"),transform:[q.x,q.y,q.k],domNode:A.current.closest(".react-flow")})}},[]),I.useEffect(()=>{L&&P&&(s&&!k&&!E?L.on("wheel.zoom",O=>{if(Xu(O,g))return!1;O.preventDefault(),O.stopImmediatePropagation();const D=L.property("__zoom").k||1,F=Hy();if(O.ctrlKey&&o&&F){const Q=Eo(O),J=Yk(O),se=D*Math.pow(2,J);P.scaleTo(L,se,Q,O);return}const U=O.deltaMode===1?20:1;let V=l===Gl.Vertical?0:O.deltaX*U,q=l===Gl.Horizontal?0:O.deltaY*U;!F&&O.shiftKey&&l!==Gl.Vertical&&(V=O.deltaY*U,q=0),P.translateBy(L,-(V/D)*a,-(q/D)*a,{internal:!0});const X=km(L.property("__zoom")),{onViewportChangeStart:Z,onViewportChange:z,onViewportChangeEnd:W}=w.getState();clearTimeout(M.current),$.current||($.current=!0,t==null||t(O,X),Z==null||Z(X)),$.current&&(e==null||e(O,X),z==null||z(X),M.current=setTimeout(()=>{n==null||n(O,X),W==null||W(X),$.current=!1},150))},{passive:!1}):typeof R<"u"&&L.on("wheel.zoom",function(O,D){if(!_||Xu(O,g))return null;O.preventDefault(),R.call(this,O,D)},{passive:!1}))},[E,s,l,L,P,R,k,o,_,g,t,e,n]),I.useEffect(()=>{P&&P.on("start",O=>{var U,V;if(!O.sourceEvent||O.sourceEvent.internal)return null;N.current=(U=O.sourceEvent)==null?void 0:U.button;const{onViewportChangeStart:D}=w.getState(),F=km(O.transform);C.current=!0,T.current=F,((V=O.sourceEvent)==null?void 0:V.type)==="mousedown"&&w.setState({paneDragging:!0}),D==null||D(F),t==null||t(O.sourceEvent,F)})},[P,t]),I.useEffect(()=>{P&&(E&&!C.current?P.on("zoom",null):E||P.on("zoom",O=>{var F;const{onViewportChange:D}=w.getState();if(w.setState({transform:[O.transform.x,O.transform.y,O.transform.k]}),x.current=!!(r&&Xk(d,N.current??0)),(e||D)&&!((F=O.sourceEvent)!=null&&F.internal)){const U=km(O.transform);D==null||D(U),e==null||e(O.sourceEvent,U)}}))},[E,P,e,d,r]),I.useEffect(()=>{P&&P.on("end",O=>{if(!O.sourceEvent||O.sourceEvent.internal)return null;const{onViewportChangeEnd:D}=w.getState();if(C.current=!1,w.setState({paneDragging:!1}),r&&Xk(d,N.current??0)&&!x.current&&r(O.sourceEvent),x.current=!1,(n||D)&&Afe(T.current,O.transform)){const F=km(O.transform);T.current=F,clearTimeout(S.current),S.current=setTimeout(()=>{D==null||D(F),n==null||n(O.sourceEvent,F)},s?150:0)}})},[P,s,d,n,r]),I.useEffect(()=>{P&&P.filter(O=>{const D=k||i,F=o&&O.ctrlKey;if(O.button===1&&O.type==="mousedown"&&(Xu(O,"react-flow__node")||Xu(O,"react-flow__edge")))return!0;if(!d&&!D&&!s&&!u&&!o||E||!u&&O.type==="dblclick"||Xu(O,g)&&O.type==="wheel"||Xu(O,v)&&O.type!=="wheel"||!o&&O.ctrlKey&&O.type==="wheel"||!D&&!s&&!F&&O.type==="wheel"||!d&&(O.type==="mousedown"||O.type==="touchstart")||Array.isArray(d)&&!d.includes(O.button)&&(O.type==="mousedown"||O.type==="touchstart"))return!1;const U=Array.isArray(d)&&d.includes(O.button)||!O.button||O.button<=1;return(!O.ctrlKey||O.type==="wheel")&&U})},[E,P,i,o,s,u,d,c,k]),Y.jsx("div",{className:"react-flow__renderer",ref:A,style:sE,children:y})},Ofe=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Rfe(){const{userSelectionActive:e,userSelectionRect:t}=rn(Ofe,Hr);return e&&t?Y.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function Zk(e,t){const n=e.find(r=>r.id===t.parentNode);if(n){const r=t.position.x+t.width-n.width,i=t.position.y+t.height-n.height;if(r>0||i>0||t.position.x<0||t.position.y<0){if(n.style={...n.style},n.style.width=n.style.width??n.width,n.style.height=n.style.height??n.height,r>0&&(n.style.width+=r),i>0&&(n.style.height+=i),t.position.x<0){const o=Math.abs(t.position.x);n.position.x=n.position.x-o,n.style.width+=o,t.position.x=0}if(t.position.y<0){const o=Math.abs(t.position.y);n.position.y=n.position.y-o,n.style.height+=o,t.position.y=0}n.width=n.style.width,n.height=n.style.height}}}function E$(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,i)=>{const o=e.filter(a=>a.id===i.id);if(o.length===0)return r.push(i),r;const s={...i};for(const a of o)if(a)switch(a.type){case"select":{s.selected=a.selected;break}case"position":{typeof a.position<"u"&&(s.position=a.position),typeof a.positionAbsolute<"u"&&(s.positionAbsolute=a.positionAbsolute),typeof a.dragging<"u"&&(s.dragging=a.dragging),s.expandParent&&Zk(r,s);break}case"dimensions":{typeof a.dimensions<"u"&&(s.width=a.dimensions.width,s.height=a.dimensions.height),typeof a.updateStyle<"u"&&(s.style={...s.style||{},...a.dimensions}),typeof a.resizing=="boolean"&&(s.resizing=a.resizing),s.expandParent&&Zk(r,s);break}case"remove":return r}return r.push(s),r},n)}function uc(e,t){return E$(e,t)}function xl(e,t){return E$(e,t)}const aa=(e,t)=>({id:e,type:"select",selected:t});function Ec(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(aa(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(aa(r.id,!1))),n},[])}const o2=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},Ife=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),T$=I.memo(({isSelecting:e,selectionMode:t=Xa.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=I.useRef(null),h=Fn(),p=I.useRef(0),m=I.useRef(0),b=I.useRef(),{userSelectionActive:_,elementsSelectable:y,dragging:g}=rn(Ife,Hr),v=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},S=R=>{o==null||o(R),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},w=R=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){R.preventDefault();return}s==null||s(R)},C=a?R=>a(R):void 0,x=R=>{const{resetSelectedElements:E,domNode:k}=h.getState();if(b.current=k==null?void 0:k.getBoundingClientRect(),!y||!e||R.button!==0||R.target!==f.current||!b.current)return;const{x:N,y:$}=La(R,b.current);E(),h.setState({userSelectionRect:{width:0,height:0,startX:N,startY:$,x:N,y:$}}),r==null||r(R)},A=R=>{const{userSelectionRect:E,nodeInternals:k,edges:N,transform:$,onNodesChange:M,onEdgesChange:O,nodeOrigin:D,getNodes:F}=h.getState();if(!e||!b.current||!E)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const U=La(R,b.current),V=E.startX??0,q=E.startY??0,X={...E,x:U.xJ.id),Q=z.map(J=>J.id);if(p.current!==Q.length){p.current=Q.length;const J=Ec(Z,Q);J.length&&(M==null||M(J))}if(m.current!==W.length){m.current=W.length;const J=Ec(N,W);J.length&&(O==null||O(J))}h.setState({userSelectionRect:X})},T=R=>{if(R.button!==0)return;const{userSelectionRect:E}=h.getState();!_&&E&&R.target===f.current&&(S==null||S(R)),h.setState({nodesSelectionActive:p.current>0}),v(),i==null||i(R)},P=R=>{_&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(R)),v()},L=y&&(e||_);return Y.jsxs("div",{className:Li(["react-flow__pane",{dragging:g,selection:e}]),onClick:L?void 0:o2(S,f),onContextMenu:o2(w,f),onWheel:o2(C,f),onMouseEnter:L?void 0:l,onMouseDown:L?x:void 0,onMouseMove:L?A:u,onMouseUp:L?T:void 0,onMouseLeave:L?P:c,ref:f,style:sE,children:[d,Y.jsx(Rfe,{})]})});T$.displayName="Pane";function A$(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:A$(n,t):!1}function Qk(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function Mfe(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!A$(i,e))&&(i.draggable||t&&typeof i.draggable>"u")).map(i=>{var o,s;return{id:i.id,position:i.position||{x:0,y:0},positionAbsolute:i.positionAbsolute||{x:0,y:0},distance:{x:n.x-(((o=i.positionAbsolute)==null?void 0:o.x)??0),y:n.y-(((s=i.positionAbsolute)==null?void 0:s.y)??0)},delta:{x:0,y:0},extent:i.extent,parentNode:i.parentNode,width:i.width,height:i.height}})}function Nfe(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function k$(e,t,n,r,i=[0,0],o){const s=Nfe(e,e.extent||r);let a=s;if(e.extent==="parent")if(e.parentNode&&e.width&&e.height){const c=n.get(e.parentNode),{x:d,y:f}=qc(c,i).positionAbsolute;a=c&&Ai(d)&&Ai(f)&&Ai(c.width)&&Ai(c.height)?[[d+e.width*i[0],f+e.height*i[1]],[d+c.width-e.width+e.width*i[0],f+c.height-e.height+e.height*i[1]]]:a}else o==null||o("005",Bs.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=qc(c,i).positionAbsolute;a=[[e.extent[0][0]+d,e.extent[0][1]+f],[e.extent[1][0]+d,e.extent[1][1]+f]]}let l={x:0,y:0};if(e.parentNode){const c=n.get(e.parentNode);l=qc(c,i).positionAbsolute}const u=a&&a!=="parent"?Z5(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function s2({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(i=>({...n.get(i.id),position:i.position,positionAbsolute:i.positionAbsolute}));return[e?r.find(i=>i.id===e):r[0],r]}const Jk=(e,t,n,r)=>{const i=t.querySelectorAll(e);if(!i||!i.length)return null;const o=Array.from(i),s=t.getBoundingClientRect(),a={x:s.width*r[0],y:s.height*r[1]};return o.map(l=>{const u=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(u.left-s.left-a.x)/n,y:(u.top-s.top-a.y)/n,...Y5(l)}})};function bf(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);i&&n(r,{...i})}}function Ux({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",Bs.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(o({nodes:[u]}),requestAnimationFrame(()=>{var c;return(c=r==null?void 0:r.current)==null?void 0:c.blur()})):i([e])}function Dfe(){const e=Fn();return I.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:i,snapToGrid:o}=e.getState(),s=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,l={x:(s-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:o?i[0]*Math.round(l.x/i[0]):l.x,ySnapped:o?i[1]*Math.round(l.y/i[1]):l.y,...l}},[])}function a2(e){return(t,n,r)=>e==null?void 0:e(t,r)}function P$({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=Fn(),[l,u]=I.useState(!1),c=I.useRef([]),d=I.useRef({x:null,y:null}),f=I.useRef(0),h=I.useRef(null),p=I.useRef({x:0,y:0}),m=I.useRef(null),b=I.useRef(!1),_=Dfe();return I.useEffect(()=>{if(e!=null&&e.current){const y=Qi(e.current),g=({x:S,y:w})=>{const{nodeInternals:C,onNodeDrag:x,onSelectionDrag:A,updateNodePositions:T,nodeExtent:P,snapGrid:L,snapToGrid:R,nodeOrigin:E,onError:k}=a.getState();d.current={x:S,y:w};let N=!1,$={x:0,y:0,x2:0,y2:0};if(c.current.length>1&&P){const O=nE(c.current,E);$=yp(O)}if(c.current=c.current.map(O=>{const D={x:S-O.distance.x,y:w-O.distance.y};R&&(D.x=L[0]*Math.round(D.x/L[0]),D.y=L[1]*Math.round(D.y/L[1]));const F=[[P[0][0],P[0][1]],[P[1][0],P[1][1]]];c.current.length>1&&P&&!O.extent&&(F[0][0]=O.positionAbsolute.x-$.x+P[0][0],F[1][0]=O.positionAbsolute.x+(O.width??0)-$.x2+P[1][0],F[0][1]=O.positionAbsolute.y-$.y+P[0][1],F[1][1]=O.positionAbsolute.y+(O.height??0)-$.y2+P[1][1]);const U=k$(O,D,C,F,E,k);return N=N||O.position.x!==U.position.x||O.position.y!==U.position.y,O.position=U.position,O.positionAbsolute=U.positionAbsolute,O}),!N)return;T(c.current,!0,!0),u(!0);const M=i?x:a2(A);if(M&&m.current){const[O,D]=s2({nodeId:i,dragItems:c.current,nodeInternals:C});M(m.current,O,D)}},v=()=>{if(!h.current)return;const[S,w]=KL(p.current,h.current);if(S!==0||w!==0){const{transform:C,panBy:x}=a.getState();d.current.x=(d.current.x??0)-S/C[2],d.current.y=(d.current.y??0)-w/C[2],x({x:S,y:w})&&g(d.current)}f.current=requestAnimationFrame(v)};if(t)y.on(".drag",null);else{const S=Gue().on("start",w=>{var N;const{nodeInternals:C,multiSelectionActive:x,domNode:A,nodesDraggable:T,unselectNodesAndEdges:P,onNodeDragStart:L,onSelectionDragStart:R}=a.getState(),E=i?L:a2(R);!s&&!x&&i&&((N=C.get(i))!=null&&N.selected||P()),i&&o&&s&&Ux({id:i,store:a,nodeRef:e});const k=_(w);if(d.current=k,c.current=Mfe(C,T,k,i),E&&c.current){const[$,M]=s2({nodeId:i,dragItems:c.current,nodeInternals:C});E(w.sourceEvent,$,M)}h.current=(A==null?void 0:A.getBoundingClientRect())||null,p.current=La(w.sourceEvent,h.current)}).on("drag",w=>{const C=_(w),{autoPanOnNodeDrag:x}=a.getState();!b.current&&x&&(b.current=!0,v()),(d.current.x!==C.xSnapped||d.current.y!==C.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=La(w.sourceEvent,h.current),g(C))}).on("end",w=>{if(u(!1),b.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:C,nodeInternals:x,onNodeDragStop:A,onSelectionDragStop:T}=a.getState(),P=i?A:a2(T);if(C(c.current,!1,!1),P){const[L,R]=s2({nodeId:i,dragItems:c.current,nodeInternals:x});P(w.sourceEvent,L,R)}}}).filter(w=>{const C=w.target;return!w.button&&(!n||!Qk(C,`.${n}`,e))&&(!r||Qk(C,r,e))});return y.call(S),()=>{y.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,_]),l}function O$(){const e=Fn();return I.useCallback(n=>{const{nodeInternals:r,nodeExtent:i,updateNodePositions:o,getNodes:s,snapToGrid:a,snapGrid:l,onError:u,nodesDraggable:c}=e.getState(),d=s().filter(y=>y.selected&&(y.draggable||c&&typeof y.draggable>"u")),f=a?l[0]:5,h=a?l[1]:5,p=n.isShiftPressed?4:1,m=n.x*f*p,b=n.y*h*p,_=d.map(y=>{if(y.positionAbsolute){const g={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+b};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:v,position:S}=k$(y,g,r,i,void 0,u);y.position=S,y.positionAbsolute=v}return y});o(_,!0,!1)},[])}const Kc={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var Sf=e=>{const t=({id:n,type:r,data:i,xPos:o,yPos:s,xPosOrigin:a,yPosOrigin:l,selected:u,onClick:c,onMouseEnter:d,onMouseMove:f,onMouseLeave:h,onContextMenu:p,onDoubleClick:m,style:b,className:_,isDraggable:y,isSelectable:g,isConnectable:v,isFocusable:S,selectNodesOnDrag:w,sourcePosition:C,targetPosition:x,hidden:A,resizeObserver:T,dragHandle:P,zIndex:L,isParent:R,noDragClassName:E,noPanClassName:k,initialized:N,disableKeyboardA11y:$,ariaLabel:M,rfId:O})=>{const D=Fn(),F=I.useRef(null),U=I.useRef(C),V=I.useRef(x),q=I.useRef(r),X=g||y||c||d||f||h,Z=O$(),z=bf(n,D.getState,d),W=bf(n,D.getState,f),Q=bf(n,D.getState,h),J=bf(n,D.getState,p),se=bf(n,D.getState,m),oe=_e=>{if(g&&(!w||!y)&&Ux({id:n,store:D,nodeRef:F}),c){const je=D.getState().nodeInternals.get(n);je&&c(_e,{...je})}},Me=_e=>{if(!$x(_e))if(QL.includes(_e.key)&&g){const je=_e.key==="Escape";Ux({id:n,store:D,unselect:je,nodeRef:F})}else!$&&y&&u&&Object.prototype.hasOwnProperty.call(Kc,_e.key)&&(D.setState({ariaLiveMessage:`Moved selected node ${_e.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),Z({x:Kc[_e.key].x,y:Kc[_e.key].y,isShiftPressed:_e.shiftKey}))};I.useEffect(()=>{if(F.current&&!A){const _e=F.current;return T==null||T.observe(_e),()=>T==null?void 0:T.unobserve(_e)}},[A]),I.useEffect(()=>{const _e=q.current!==r,je=U.current!==C,he=V.current!==x;F.current&&(_e||je||he)&&(_e&&(q.current=r),je&&(U.current=C),he&&(V.current=x),D.getState().updateNodeDimensions([{id:n,nodeElement:F.current,forceUpdate:!0}]))},[n,r,C,x]);const Ae=P$({nodeRef:F,disabled:A||!y,noDragClassName:E,handleSelector:P,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return A?null:Y.jsx("div",{className:Li(["react-flow__node",`react-flow__node-${r}`,{[k]:y},_,{selected:u,selectable:g,parent:R,dragging:Ae}]),ref:F,style:{zIndex:L,transform:`translate(${a}px,${l}px)`,pointerEvents:X?"all":"none",visibility:N?"visible":"hidden",...b},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:z,onMouseMove:W,onMouseLeave:Q,onContextMenu:J,onClick:oe,onDoubleClick:se,onKeyDown:S?Me:void 0,tabIndex:S?0:void 0,role:S?"button":void 0,"aria-describedby":$?void 0:`${_$}-${O}`,"aria-label":M,children:Y.jsx(Kde,{value:n,children:Y.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:v,sourcePosition:C,targetPosition:x,dragging:Ae,dragHandle:P,zIndex:L})})})};return t.displayName="NodeWrapper",I.memo(t)};const Lfe=e=>{const t=e.getNodes().filter(n=>n.selected);return{...nE(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function $fe({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=Fn(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=rn(Lfe,Hr),c=O$(),d=I.useRef(null);if(I.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),P$({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(b=>b.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(Kc,p.key)&&c({x:Kc[p.key].x,y:Kc[p.key].y,isShiftPressed:p.shiftKey})};return Y.jsx("div",{className:Li(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:Y.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:i,height:o,top:a,left:s}})})}var Ffe=I.memo($fe);const Bfe=e=>e.nodesSelectionActive,R$=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,deleteKeyCode:a,onMove:l,onMoveStart:u,onMoveEnd:c,selectionKeyCode:d,selectionOnDrag:f,selectionMode:h,onSelectionStart:p,onSelectionEnd:m,multiSelectionKeyCode:b,panActivationKeyCode:_,zoomActivationKeyCode:y,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:C,panOnScrollMode:x,zoomOnDoubleClick:A,panOnDrag:T,defaultViewport:P,translateExtent:L,minZoom:R,maxZoom:E,preventScrolling:k,onSelectionContextMenu:N,noWheelClassName:$,noPanClassName:M,disableKeyboardA11y:O})=>{const D=rn(Bfe),F=vp(d),V=vp(_)||T,q=F||f&&V!==!0;return Efe({deleteKeyCode:a,multiSelectionKeyCode:b}),Y.jsx(Pfe,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:C,panOnScrollMode:x,zoomOnDoubleClick:A,panOnDrag:!F&&V,defaultViewport:P,translateExtent:L,minZoom:R,maxZoom:E,zoomActivationKeyCode:y,preventScrolling:k,noWheelClassName:$,noPanClassName:M,children:Y.jsxs(T$,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:V,isSelecting:!!q,selectionMode:h,children:[e,D&&Y.jsx(Ffe,{onSelectionContextMenu:N,noPanClassName:M,disableKeyboardA11y:O})]})})};R$.displayName="FlowRenderer";var zfe=I.memo(R$);function Ufe(e){return rn(I.useCallback(n=>e?a$(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function jfe(e){const t={input:Sf(e.input||g$),default:Sf(e.default||zx),output:Sf(e.output||y$),group:Sf(e.group||oE)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=Sf(e[o]||zx),i),n);return{...t,...r}}const Vfe=({x:e,y:t,width:n,height:r,origin:i})=>!n||!r?{x:e,y:t}:i[0]<0||i[1]<0||i[0]>1||i[1]>1?{x:e,y:t}:{x:e-n*i[0],y:t-r*i[1]},Gfe=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),I$=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=rn(Gfe,Hr),a=Ufe(e.onlyRenderVisibleElements),l=I.useRef(),u=I.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const c=new ResizeObserver(d=>{const f=d.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));o(f)});return l.current=c,c},[]);return I.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),Y.jsx("div",{className:"react-flow__nodes",style:sE,children:a.map(c=>{var S,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",Bs.error003(d)),d="default");const f=e.nodeTypes[d]||e.nodeTypes.default,h=!!(c.draggable||t&&typeof c.draggable>"u"),p=!!(c.selectable||i&&typeof c.selectable>"u"),m=!!(c.connectable||n&&typeof c.connectable>"u"),b=!!(c.focusable||r&&typeof c.focusable>"u"),_=e.nodeExtent?Z5(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,y=(_==null?void 0:_.x)??0,g=(_==null?void 0:_.y)??0,v=Vfe({x:y,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return Y.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||we.Bottom,targetPosition:c.targetPosition||we.Top,hidden:c.hidden,xPos:y,yPos:g,xPosOrigin:v.x,yPosOrigin:v.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!c.selected,isDraggable:h,isSelectable:p,isConnectable:m,isFocusable:b,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((S=c[xn])==null?void 0:S.z)??0,isParent:!!((w=c[xn])!=null&&w.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!c.width&&!!c.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:c.ariaLabel},c.id)})})};I$.displayName="NodeRenderer";var Hfe=I.memo(I$);const Wfe=(e,t,n)=>n===we.Left?e-t:n===we.Right?e+t:e,qfe=(e,t,n)=>n===we.Top?e-t:n===we.Bottom?e+t:e,e8="react-flow__edgeupdater",t8=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>Y.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:Li([e8,`${e8}-${a}`]),cx:Wfe(t,r,e),cy:qfe(n,r,e),r,stroke:"transparent",fill:"transparent"}),Kfe=()=>!0;var Yu=e=>{const t=({id:n,className:r,type:i,data:o,onClick:s,onEdgeDoubleClick:a,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:b,source:_,target:y,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:C,targetPosition:x,elementsSelectable:A,hidden:T,sourceHandleId:P,targetHandleId:L,onContextMenu:R,onMouseEnter:E,onMouseMove:k,onMouseLeave:N,edgeUpdaterRadius:$,onEdgeUpdate:M,onEdgeUpdateStart:O,onEdgeUpdateEnd:D,markerEnd:F,markerStart:U,rfId:V,ariaLabel:q,isFocusable:X,isUpdatable:Z,pathOptions:z,interactionWidth:W})=>{const Q=I.useRef(null),[J,se]=I.useState(!1),[oe,Me]=I.useState(!1),Ae=Fn(),_e=I.useMemo(()=>`url(#${Bx(U,V)})`,[U,V]),je=I.useMemo(()=>`url(#${Bx(F,V)})`,[F,V]);if(T)return null;const he=Qt=>{const{edges:xt,addSelectedEdges:Kr}=Ae.getState();if(A&&(Ae.setState({nodesSelectionActive:!1}),Kr([n])),s){const hi=xt.find(Vi=>Vi.id===n);s(Qt,hi)}},It=_f(n,Ae.getState,a),Bn=_f(n,Ae.getState,R),Zt=_f(n,Ae.getState,E),wt=_f(n,Ae.getState,k),ht=_f(n,Ae.getState,N),cn=(Qt,xt)=>{if(Qt.button!==0)return;const{edges:Kr,isValidConnection:hi}=Ae.getState(),Vi=xt?y:_,ts=(xt?L:P)||null,Un=xt?"target":"source",Gi=hi||Kfe,vl=xt,yo=Kr.find(pt=>pt.id===n);Me(!0),O==null||O(Qt,yo,Un);const _l=pt=>{Me(!1),D==null||D(pt,yo,Un)};d$({event:Qt,handleId:ts,nodeId:Vi,onConnect:pt=>M==null?void 0:M(yo,pt),isTarget:vl,getState:Ae.getState,setState:Ae.setState,isValidConnection:Gi,edgeUpdaterType:Un,onEdgeUpdateEnd:_l})},Mr=Qt=>cn(Qt,!0),ji=Qt=>cn(Qt,!1),fi=()=>se(!0),tr=()=>se(!1),zn=!A&&!s,mr=Qt=>{var xt;if(QL.includes(Qt.key)&&A){const{unselectNodesAndEdges:Kr,addSelectedEdges:hi,edges:Vi}=Ae.getState();Qt.key==="Escape"?((xt=Q.current)==null||xt.blur(),Kr({edges:[Vi.find(Un=>Un.id===n)]})):hi([n])}};return Y.jsxs("g",{className:Li(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:zn,updating:J}]),onClick:he,onDoubleClick:It,onContextMenu:Bn,onMouseEnter:Zt,onMouseMove:wt,onMouseLeave:ht,onKeyDown:X?mr:void 0,tabIndex:X?0:void 0,role:X?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":q===null?void 0:q||`Edge from ${_} to ${y}`,"aria-describedby":X?`${b$}-${V}`:void 0,ref:Q,children:[!oe&&Y.jsx(e,{id:n,source:_,target:y,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:b,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:C,targetPosition:x,sourceHandleId:P,targetHandleId:L,markerStart:_e,markerEnd:je,pathOptions:z,interactionWidth:W}),Z&&Y.jsxs(Y.Fragment,{children:[(Z==="source"||Z===!0)&&Y.jsx(t8,{position:C,centerX:g,centerY:v,radius:$,onMouseDown:Mr,onMouseEnter:fi,onMouseOut:tr,type:"source"}),(Z==="target"||Z===!0)&&Y.jsx(t8,{position:x,centerX:S,centerY:w,radius:$,onMouseDown:ji,onMouseEnter:fi,onMouseOut:tr,type:"target"})]})]})};return t.displayName="EdgeWrapper",I.memo(t)};function Xfe(e){const t={default:Yu(e.default||qy),straight:Yu(e.bezier||eE),step:Yu(e.step||J5),smoothstep:Yu(e.step||V1),simplebezier:Yu(e.simplebezier||Q5)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=Yu(e[o]||qy),i),n);return{...t,...r}}function n8(e,t,n=null){const r=((n==null?void 0:n.x)||0)+t.x,i=((n==null?void 0:n.y)||0)+t.y,o=(n==null?void 0:n.width)||t.width,s=(n==null?void 0:n.height)||t.height;switch(e){case we.Top:return{x:r+o/2,y:i};case we.Right:return{x:r+o,y:i+s/2};case we.Bottom:return{x:r+o/2,y:i+s};case we.Left:return{x:r,y:i+s/2}}}function r8(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Yfe=(e,t,n,r,i,o)=>{const s=n8(n,e,t),a=n8(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function Zfe({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:i,targetHeight:o,width:s,height:a,transform:l}){const u={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+i),y2:Math.max(e.y+r,t.y+o)};u.x===u.x2&&(u.x2+=1),u.y===u.y2&&(u.y2+=1);const c=yp({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:s/l[2],height:a/l[2]}),d=Math.max(0,Math.min(c.x2,u.x2)-Math.max(c.x,u.x)),f=Math.max(0,Math.min(c.y2,u.y2)-Math.max(c.y,u.y));return Math.ceil(d*f)>0}function i8(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[xn])==null?void 0:r.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.x)<"u"&&typeof((o=e==null?void 0:e.positionAbsolute)==null?void 0:o.y)<"u";return[{x:((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.x)||0,y:((a=e==null?void 0:e.positionAbsolute)==null?void 0:a.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const Qfe=[{level:0,isMaxLevel:!0,edges:[]}];function Jfe(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=Ai(a.zIndex);let u=l?a.zIndex:0;if(n){const f=t.get(a.target),h=t.get(a.source),p=a.selected||(f==null?void 0:f.selected)||(h==null?void 0:h.selected),m=Math.max(((c=h==null?void 0:h[xn])==null?void 0:c.z)||0,((d=f==null?void 0:f[xn])==null?void 0:d.z)||0,1e3);u=(l?a.zIndex:0)+(p?m:0)}return s[u]?s[u].push(a):s[u]=[a],r=u>r?u:r,s},{}),o=Object.entries(i).map(([s,a])=>{const l=+s;return{edges:a,level:l,isMaxLevel:l===r}});return o.length===0?Qfe:o}function ehe(e,t,n){const r=rn(I.useCallback(i=>e?i.edges.filter(o=>{const s=t.get(o.source),a=t.get(o.target);return(s==null?void 0:s.width)&&(s==null?void 0:s.height)&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&Zfe({sourcePos:s.positionAbsolute||{x:0,y:0},targetPos:a.positionAbsolute||{x:0,y:0},sourceWidth:s.width,sourceHeight:s.height,targetWidth:a.width,targetHeight:a.height,width:i.width,height:i.height,transform:i.transform})}):i.edges,[e,t]));return Jfe(r,t,n)}const the=({color:e="none",strokeWidth:t=1})=>Y.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),nhe=({color:e="none",strokeWidth:t=1})=>Y.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),o8={[Wy.Arrow]:the,[Wy.ArrowClosed]:nhe};function rhe(e){const t=Fn();return I.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(o8,e)?o8[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",Bs.error009(e)),null)},[e])}const ihe=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:o="strokeWidth",strokeWidth:s,orient:a="auto-start-reverse"})=>{const l=rhe(t);return l?Y.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:"-10 -10 20 20",markerUnits:o,orient:a,refX:"0",refY:"0",children:Y.jsx(l,{color:n,strokeWidth:s})}):null},ohe=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((i,o)=>([o.markerStart,o.markerEnd].forEach(s=>{if(s&&typeof s=="object"){const a=Bx(s,t);r.includes(a)||(i.push({id:a,color:s.color||e,...s}),r.push(a))}}),i),[]).sort((i,o)=>i.id.localeCompare(o.id))},M$=({defaultColor:e,rfId:t})=>{const n=rn(I.useCallback(ohe({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return Y.jsx("defs",{children:n.map(r=>Y.jsx(ihe,{id:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient},r.id))})};M$.displayName="MarkerDefinitions";var she=I.memo(M$);const ahe=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),N$=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:i,noPanClassName:o,onEdgeUpdate:s,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:u,onEdgeMouseLeave:c,onEdgeClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,children:b})=>{const{edgesFocusable:_,edgesUpdatable:y,elementsSelectable:g,width:v,height:S,connectionMode:w,nodeInternals:C,onError:x}=rn(ahe,Hr),A=ehe(t,C,n);return v?Y.jsxs(Y.Fragment,{children:[A.map(({level:T,edges:P,isMaxLevel:L})=>Y.jsxs("svg",{style:{zIndex:T},width:v,height:S,className:"react-flow__edges react-flow__container",children:[L&&Y.jsx(she,{defaultColor:e,rfId:r}),Y.jsx("g",{children:P.map(R=>{const[E,k,N]=i8(C.get(R.source)),[$,M,O]=i8(C.get(R.target));if(!N||!O)return null;let D=R.type||"default";i[D]||(x==null||x("011",Bs.error011(D)),D="default");const F=i[D]||i.default,U=w===fu.Strict?M.target:(M.target??[]).concat(M.source??[]),V=r8(k.source,R.sourceHandle),q=r8(U,R.targetHandle),X=(V==null?void 0:V.position)||we.Bottom,Z=(q==null?void 0:q.position)||we.Top,z=!!(R.focusable||_&&typeof R.focusable>"u"),W=typeof s<"u"&&(R.updatable||y&&typeof R.updatable>"u");if(!V||!q)return x==null||x("008",Bs.error008(V,R)),null;const{sourceX:Q,sourceY:J,targetX:se,targetY:oe}=Yfe(E,V,X,$,q,Z);return Y.jsx(F,{id:R.id,className:Li([R.className,o]),type:D,data:R.data,selected:!!R.selected,animated:!!R.animated,hidden:!!R.hidden,label:R.label,labelStyle:R.labelStyle,labelShowBg:R.labelShowBg,labelBgStyle:R.labelBgStyle,labelBgPadding:R.labelBgPadding,labelBgBorderRadius:R.labelBgBorderRadius,style:R.style,source:R.source,target:R.target,sourceHandleId:R.sourceHandle,targetHandleId:R.targetHandle,markerEnd:R.markerEnd,markerStart:R.markerStart,sourceX:Q,sourceY:J,targetX:se,targetY:oe,sourcePosition:X,targetPosition:Z,elementsSelectable:g,onEdgeUpdate:s,onContextMenu:a,onMouseEnter:l,onMouseMove:u,onMouseLeave:c,onClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,rfId:r,ariaLabel:R.ariaLabel,isFocusable:z,isUpdatable:W,pathOptions:"pathOptions"in R?R.pathOptions:void 0,interactionWidth:R.interactionWidth},R.id)})})]},T)),b]}):null};N$.displayName="EdgeRenderer";var lhe=I.memo(N$);const uhe=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function che({children:e}){const t=rn(uhe);return Y.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function dhe(e){const t=C$(),n=I.useRef(!1);I.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const fhe={[we.Left]:we.Right,[we.Right]:we.Left,[we.Top]:we.Bottom,[we.Bottom]:we.Top},D$=({nodeId:e,handleType:t,style:n,type:r=pa.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,C,x;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=rn(I.useCallback(A=>({fromNode:A.nodeInternals.get(e),handleId:A.connectionHandleId,toX:(A.connectionPosition.x-A.transform[0])/A.transform[2],toY:(A.connectionPosition.y-A.transform[1])/A.transform[2],connectionMode:A.connectionMode}),[e]),Hr),d=(w=s==null?void 0:s[xn])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===fu.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(A=>A.id===a):f[0],p=h?h.x+h.width/2:(s.width??0)/2,m=h?h.y+h.height/2:s.height??0,b=(((C=s.positionAbsolute)==null?void 0:C.x)??0)+p,_=(((x=s.positionAbsolute)==null?void 0:x.y)??0)+m,y=h==null?void 0:h.position,g=y?fhe[y]:null;if(!y||!g)return null;if(i)return Y.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:b,fromY:_,toX:l,toY:u,fromPosition:y,toPosition:g,connectionStatus:o});let v="";const S={sourceX:b,sourceY:_,sourcePosition:y,targetX:l,targetY:u,targetPosition:g};return r===pa.Bezier?[v]=r$(S):r===pa.Step?[v]=Fx({...S,borderRadius:0}):r===pa.SmoothStep?[v]=Fx(S):r===pa.SimpleBezier?[v]=n$(S):v=`M${b},${_} ${l},${u}`,Y.jsx("path",{d:v,fill:"none",className:"react-flow__connection-path",style:n})};D$.displayName="ConnectionLine";const hhe=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function phe({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=rn(hhe,Hr);return!(i&&o&&a&&s)?null:Y.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:Y.jsx("g",{className:Li(["react-flow__connection",u]),children:Y.jsx(D$,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}function s8(e,t){return I.useRef(null),Fn(),I.useMemo(()=>t(e),[e])}const L$=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:i,onInit:o,onNodeClick:s,onEdgeClick:a,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,onSelectionContextMenu:p,onSelectionStart:m,onSelectionEnd:b,connectionLineType:_,connectionLineStyle:y,connectionLineComponent:g,connectionLineContainerStyle:v,selectionKeyCode:S,selectionOnDrag:w,selectionMode:C,multiSelectionKeyCode:x,panActivationKeyCode:A,zoomActivationKeyCode:T,deleteKeyCode:P,onlyRenderVisibleElements:L,elementsSelectable:R,selectNodesOnDrag:E,defaultViewport:k,translateExtent:N,minZoom:$,maxZoom:M,preventScrolling:O,defaultMarkerColor:D,zoomOnScroll:F,zoomOnPinch:U,panOnScroll:V,panOnScrollSpeed:q,panOnScrollMode:X,zoomOnDoubleClick:Z,panOnDrag:z,onPaneClick:W,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:se,onPaneScroll:oe,onPaneContextMenu:Me,onEdgeUpdate:Ae,onEdgeContextMenu:_e,onEdgeMouseEnter:je,onEdgeMouseMove:he,onEdgeMouseLeave:It,edgeUpdaterRadius:Bn,onEdgeUpdateStart:Zt,onEdgeUpdateEnd:wt,noDragClassName:ht,noWheelClassName:cn,noPanClassName:Mr,elevateEdgesOnSelect:ji,disableKeyboardA11y:fi,nodeOrigin:tr,nodeExtent:zn,rfId:mr})=>{const Qt=s8(e,jfe),xt=s8(t,Xfe);return dhe(o),Y.jsx(zfe,{onPaneClick:W,onPaneMouseEnter:Q,onPaneMouseMove:J,onPaneMouseLeave:se,onPaneContextMenu:Me,onPaneScroll:oe,deleteKeyCode:P,selectionKeyCode:S,selectionOnDrag:w,selectionMode:C,onSelectionStart:m,onSelectionEnd:b,multiSelectionKeyCode:x,panActivationKeyCode:A,zoomActivationKeyCode:T,elementsSelectable:R,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:F,zoomOnPinch:U,zoomOnDoubleClick:Z,panOnScroll:V,panOnScrollSpeed:q,panOnScrollMode:X,panOnDrag:z,defaultViewport:k,translateExtent:N,minZoom:$,maxZoom:M,onSelectionContextMenu:p,preventScrolling:O,noDragClassName:ht,noWheelClassName:cn,noPanClassName:Mr,disableKeyboardA11y:fi,children:Y.jsxs(che,{children:[Y.jsx(lhe,{edgeTypes:xt,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:Ae,onlyRenderVisibleElements:L,onEdgeContextMenu:_e,onEdgeMouseEnter:je,onEdgeMouseMove:he,onEdgeMouseLeave:It,onEdgeUpdateStart:Zt,onEdgeUpdateEnd:wt,edgeUpdaterRadius:Bn,defaultMarkerColor:D,noPanClassName:Mr,elevateEdgesOnSelect:!!ji,disableKeyboardA11y:fi,rfId:mr,children:Y.jsx(phe,{style:y,type:_,component:g,containerStyle:v})}),Y.jsx("div",{className:"react-flow__edgelabel-renderer"}),Y.jsx(Hfe,{nodeTypes:Qt,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:E,onlyRenderVisibleElements:L,noPanClassName:Mr,noDragClassName:ht,disableKeyboardA11y:fi,nodeOrigin:tr,nodeExtent:zn,rfId:mr})]})})};L$.displayName="GraphView";var ghe=I.memo(L$);const jx=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],ea={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:jx,nodeExtent:jx,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:fu.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:jde,isValidConnection:void 0},mhe=()=>nle((e,t)=>({...ea,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:i2(n,r,i,o)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(i=>({...r,...i}))})},setDefaultNodesAndEdges:(n,r)=>{const i=typeof n<"u",o=typeof r<"u",s=i?i2(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:s,edges:o?r:[],hasDefaultNodes:i,hasDefaultEdges:o})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:i,fitViewOnInit:o,fitViewOnInitDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:u}=t(),c=l==null?void 0:l.querySelector(".react-flow__viewport");if(!c)return;const d=window.getComputedStyle(c),{m22:f}=new window.DOMMatrixReadOnly(d.transform),h=n.reduce((m,b)=>{const _=i.get(b.id);if(_){const y=Y5(b.nodeElement);!!(y.width&&y.height&&(_.width!==y.width||_.height!==y.height||b.forceUpdate))&&(i.set(_.id,{..._,[xn]:{..._[xn],handleBounds:{source:Jk(".source",b.nodeElement,f,u),target:Jk(".target",b.nodeElement,f,u)}},...y}),m.push({id:_.id,type:"dimensions",dimensions:y}))}return m},[]);w$(i,u);const p=s||o&&!s&&x$(t,{initial:!0,...a});e({nodeInternals:new Map(i),fitViewOnInitDone:p}),(h==null?void 0:h.length)>0&&(r==null||r(h))},updateNodePositions:(n,r=!0,i=!1)=>{const{triggerNodeChanges:o}=t(),s=n.map(a=>{const l={id:a.id,type:"position",dragging:i};return r&&(l.positionAbsolute=a.positionAbsolute,l.position=a.position),l});o(s)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:i,hasDefaultNodes:o,nodeOrigin:s,getNodes:a,elevateNodesOnSelect:l}=t();if(n!=null&&n.length){if(o){const u=uc(n,a()),c=i2(u,i,s,l);e({nodeInternals:c})}r==null||r(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>aa(l,!0)):(s=Ec(o(),n),a=Ec(i,[])),Am({changedNodes:s,changedEdges:a,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>aa(l,!0)):(s=Ec(i,n),a=Ec(o(),[])),Am({changedNodes:a,changedEdges:s,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:i,getNodes:o}=t(),s=n||o(),a=r||i,l=s.map(c=>(c.selected=!1,aa(c.id,!1))),u=a.map(c=>aa(c.id,!1));Am({changedNodes:l,changedEdges:u,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:i}=t();r==null||r.scaleExtent([n,i]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:i}=t();r==null||r.scaleExtent([i,n]),e({maxZoom:n})},setTranslateExtent:n=>{var r;(r=t().d3Zoom)==null||r.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),o=r().filter(a=>a.selected).map(a=>aa(a.id,!1)),s=n.filter(a=>a.selected).map(a=>aa(a.id,!1));Am({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=Z5(i.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:i,height:o,d3Zoom:s,d3Selection:a,translateExtent:l}=t();if(!s||!a||!n.x&&!n.y)return!1;const u=Da.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),c=[[0,0],[i,o]],d=s==null?void 0:s.constrain()(u,c,l);return s.transform(a,d),r[0]!==d.x||r[1]!==d.y||r[2]!==d.k},cancelConnection:()=>e({connectionNodeId:ea.connectionNodeId,connectionHandleId:ea.connectionHandleId,connectionHandleType:ea.connectionHandleType,connectionStatus:ea.connectionStatus,connectionStartHandle:ea.connectionStartHandle,connectionEndHandle:ea.connectionEndHandle}),reset:()=>e({...ea})}),Object.is),$$=({children:e})=>{const t=I.useRef(null);return t.current||(t.current=mhe()),Y.jsx(Dde,{value:t.current,children:e})};$$.displayName="ReactFlowProvider";const F$=({children:e})=>I.useContext(j1)?Y.jsx(Y.Fragment,{children:e}):Y.jsx($$,{children:e});F$.displayName="ReactFlowWrapper";const yhe={input:g$,default:zx,output:y$,group:oE},vhe={default:qy,straight:eE,step:J5,smoothstep:V1,simplebezier:Q5},_he=[0,0],bhe=[15,15],She={x:0,y:0,zoom:1},whe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},xhe=I.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=yhe,edgeTypes:s=vhe,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,onNodeDragStart:C,onNodeDrag:x,onNodeDragStop:A,onNodesDelete:T,onEdgesDelete:P,onSelectionChange:L,onSelectionDragStart:R,onSelectionDrag:E,onSelectionDragStop:k,onSelectionContextMenu:N,onSelectionStart:$,onSelectionEnd:M,connectionMode:O=fu.Strict,connectionLineType:D=pa.Bezier,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,deleteKeyCode:q="Backspace",selectionKeyCode:X="Shift",selectionOnDrag:Z=!1,selectionMode:z=Xa.Full,panActivationKeyCode:W="Space",multiSelectionKeyCode:Q=Hy()?"Meta":"Control",zoomActivationKeyCode:J=Hy()?"Meta":"Control",snapToGrid:se=!1,snapGrid:oe=bhe,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Ae=!0,nodesDraggable:_e,nodesConnectable:je,nodesFocusable:he,nodeOrigin:It=_he,edgesFocusable:Bn,edgesUpdatable:Zt,elementsSelectable:wt,defaultViewport:ht=She,minZoom:cn=.5,maxZoom:Mr=2,translateExtent:ji=jx,preventScrolling:fi=!0,nodeExtent:tr,defaultMarkerColor:zn="#b1b1b7",zoomOnScroll:mr=!0,zoomOnPinch:Qt=!0,panOnScroll:xt=!1,panOnScrollSpeed:Kr=.5,panOnScrollMode:hi=Gl.Free,zoomOnDoubleClick:Vi=!0,panOnDrag:ts=!0,onPaneClick:Un,onPaneMouseEnter:Gi,onPaneMouseMove:vl,onPaneMouseLeave:yo,onPaneScroll:_l,onPaneContextMenu:jt,children:pt,onEdgeUpdate:jn,onEdgeContextMenu:Tn,onEdgeDoubleClick:nr,onEdgeMouseEnter:yr,onEdgeMouseMove:Nr,onEdgeMouseLeave:vo,onEdgeUpdateStart:vr,onEdgeUpdateEnd:Vn,edgeUpdaterRadius:ns=10,onNodesChange:Ks,onEdgesChange:Xs,noDragClassName:Fu="nodrag",noWheelClassName:rs="nowheel",noPanClassName:_r="nopan",fitView:bl=!1,fitViewOptions:Pb,connectOnClick:Ob=!0,attributionPosition:Rb,proOptions:Ib,defaultEdgeOptions:Ys,elevateNodesOnSelect:Mb=!0,elevateEdgesOnSelect:Nb=!1,disableKeyboardA11y:Dg=!1,autoPanOnConnect:Db=!0,autoPanOnNodeDrag:Lb=!0,connectionRadius:$b=20,isValidConnection:nf,onError:Fb,style:Bu,id:zu,...Bb},Uu)=>{const ju=zu||"1";return Y.jsx("div",{...Bb,style:{...Bu,...whe},ref:Uu,className:Li(["react-flow",i]),"data-testid":"rf__wrapper",id:zu,children:Y.jsxs(F$,{children:[Y.jsx(ghe,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,nodeTypes:o,edgeTypes:s,connectionLineType:D,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,selectionKeyCode:X,selectionOnDrag:Z,selectionMode:z,deleteKeyCode:q,multiSelectionKeyCode:Q,panActivationKeyCode:W,zoomActivationKeyCode:J,onlyRenderVisibleElements:Me,selectNodesOnDrag:Ae,defaultViewport:ht,translateExtent:ji,minZoom:cn,maxZoom:Mr,preventScrolling:fi,zoomOnScroll:mr,zoomOnPinch:Qt,zoomOnDoubleClick:Vi,panOnScroll:xt,panOnScrollSpeed:Kr,panOnScrollMode:hi,panOnDrag:ts,onPaneClick:Un,onPaneMouseEnter:Gi,onPaneMouseMove:vl,onPaneMouseLeave:yo,onPaneScroll:_l,onPaneContextMenu:jt,onSelectionContextMenu:N,onSelectionStart:$,onSelectionEnd:M,onEdgeUpdate:jn,onEdgeContextMenu:Tn,onEdgeDoubleClick:nr,onEdgeMouseEnter:yr,onEdgeMouseMove:Nr,onEdgeMouseLeave:vo,onEdgeUpdateStart:vr,onEdgeUpdateEnd:Vn,edgeUpdaterRadius:ns,defaultMarkerColor:zn,noDragClassName:Fu,noWheelClassName:rs,noPanClassName:_r,elevateEdgesOnSelect:Nb,rfId:ju,disableKeyboardA11y:Dg,nodeOrigin:It,nodeExtent:tr}),Y.jsx(hfe,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,nodesDraggable:_e,nodesConnectable:je,nodesFocusable:he,edgesFocusable:Bn,edgesUpdatable:Zt,elementsSelectable:wt,elevateNodesOnSelect:Mb,minZoom:cn,maxZoom:Mr,nodeExtent:tr,onNodesChange:Ks,onEdgesChange:Xs,snapToGrid:se,snapGrid:oe,connectionMode:O,translateExtent:ji,connectOnClick:Ob,defaultEdgeOptions:Ys,fitView:bl,fitViewOptions:Pb,onNodesDelete:T,onEdgesDelete:P,onNodeDragStart:C,onNodeDrag:x,onNodeDragStop:A,onSelectionDrag:E,onSelectionDragStart:R,onSelectionDragStop:k,noPanClassName:_r,nodeOrigin:It,rfId:ju,autoPanOnConnect:Db,autoPanOnNodeDrag:Lb,onError:Fb,connectionRadius:$b,isValidConnection:nf}),Y.jsx(dfe,{onSelectionChange:L}),pt,Y.jsx(Fde,{proOptions:Ib,position:Rb}),Y.jsx(vfe,{rfId:ju,disableKeyboardA11y:Dg})]})})});xhe.displayName="ReactFlow";const Che=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__edgelabel-renderer")};function XPe({children:e}){const t=rn(Che);return t?Zi.createPortal(e,t):null}function YPe(){const e=Fn();return I.useCallback(t=>{const{domNode:n,updateNodeDimensions:r}=e.getState(),o=(Array.isArray(t)?t:[t]).reduce((s,a)=>{const l=n==null?void 0:n.querySelector(`.react-flow__node[data-id="${a}"]`);return l&&s.push({id:a,nodeElement:l,forceUpdate:!0}),s},[]);requestAnimationFrame(()=>r(o))},[])}function Ehe(){const e=[];return function(t,n){if(typeof n!="object"||n===null)return n;for(;e.length>0&&e.at(-1)!==this;)e.pop();return e.includes(n)?"[Circular]":(e.push(n),n)}}const _p=Va("nodes/receivedOpenAPISchema",async(e,{rejectWithValue:t})=>{try{const r=await(await fetch("openapi.json")).json();return JSON.parse(JSON.stringify(r,Ehe()))}catch(n){return t({error:n})}});let Pm;const The=new Uint8Array(16);function Ahe(){if(!Pm&&(Pm=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Pm))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Pm(The)}const Hn=[];for(let e=0;e<256;++e)Hn.push((e+256).toString(16).slice(1));function khe(e,t=0){return(Hn[e[t+0]]+Hn[e[t+1]]+Hn[e[t+2]]+Hn[e[t+3]]+"-"+Hn[e[t+4]]+Hn[e[t+5]]+"-"+Hn[e[t+6]]+Hn[e[t+7]]+"-"+Hn[e[t+8]]+Hn[e[t+9]]+"-"+Hn[e[t+10]]+Hn[e[t+11]]+Hn[e[t+12]]+Hn[e[t+13]]+Hn[e[t+14]]+Hn[e[t+15]]).toLowerCase()}const Phe=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),a8={randomUUID:Phe};function B$(e,t,n){if(a8.randomUUID&&!t&&!e)return a8.randomUUID();e=e||{};const r=e.random||(e.rng||Ahe)();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 khe(r)}const ZPe=500,QPe=320,Ohe="node-drag-handle",Rhe=["ImageField","ImageCollection"],JPe=Rhe,eOe={input:"inputs",output:"outputs"},tOe=["Collection","IntegerCollection","FloatCollection","StringCollection","BooleanCollection","ImageCollection"],nOe={integer:{title:"Integer",description:"Integers are whole numbers, without a decimal point.",color:"red.500"},float:{title:"Float",description:"Floats are numbers with a decimal point.",color:"orange.500"},string:{title:"String",description:"Strings are text.",color:"yellow.500"},boolean:{title:"Boolean",color:"green.500",description:"Booleans are true or false."},enum:{title:"Enum",description:"Enums are values that may be one of a number of options.",color:"blue.500"},array:{title:"Array",description:"Enums are values that may be one of a number of options.",color:"base.500"},ImageField:{title:"Image",description:"Images may be passed between nodes.",color:"purple.500"},DenoiseMaskField:{title:"Denoise Mask",description:"Denoise Mask may be passed between nodes",color:"base.500"},LatentsField:{title:"Latents",description:"Latents may be passed between nodes.",color:"pink.500"},LatentsCollection:{title:"Latents Collection",description:"Latents may be passed between nodes.",color:"pink.500"},ConditioningField:{color:"cyan.500",title:"Conditioning",description:"Conditioning may be passed between nodes."},ConditioningCollection:{color:"cyan.500",title:"Conditioning Collection",description:"Conditioning may be passed between nodes."},ImageCollection:{title:"Image Collection",description:"A collection of images.",color:"base.300"},UNetField:{color:"red.500",title:"UNet",description:"UNet submodel."},ClipField:{color:"green.500",title:"Clip",description:"Tokenizer and text_encoder submodels."},VaeField:{color:"blue.500",title:"Vae",description:"Vae submodel."},ControlField:{color:"cyan.500",title:"Control",description:"Control info passed between nodes."},MainModelField:{color:"teal.500",title:"Model",description:"TODO"},SDXLRefinerModelField:{color:"teal.500",title:"Refiner Model",description:"TODO"},VaeModelField:{color:"teal.500",title:"VAE",description:"TODO"},LoRAModelField:{color:"teal.500",title:"LoRA",description:"TODO"},ControlNetModelField:{color:"teal.500",title:"ControlNet",description:"TODO"},Scheduler:{color:"base.500",title:"Scheduler",description:"TODO"},Collection:{color:"base.500",title:"Collection",description:"TODO"},CollectionItem:{color:"base.500",title:"Collection Item",description:"TODO"},ColorField:{title:"Color",description:"A RGBA color.",color:"base.500"},BooleanCollection:{title:"Boolean Collection",description:"A collection of booleans.",color:"green.500"},IntegerCollection:{title:"Integer Collection",description:"A collection of integers.",color:"red.500"},FloatCollection:{color:"orange.500",title:"Float Collection",description:"A collection of floats."},ColorCollection:{color:"base.500",title:"Color Collection",description:"A collection of colors."},ONNXModelField:{color:"base.500",title:"ONNX Model",description:"ONNX model field."},SDXLMainModelField:{color:"base.500",title:"SDXL Model",description:"SDXL model field."},StringCollection:{color:"yellow.500",title:"String Collection",description:"A collection of strings."}},l8=(e,t,n)=>{let r=t,i=n;for(;e.find(o=>o.position.x===r&&o.position.y===i);)r=r+50,i=i+50;return{x:r,y:i}},Ihe="1.0.0",l2={status:ps.PENDING,error:null,progress:null,progressImage:null,outputs:[]},Vx={meta:{version:Ihe},name:"",author:"",description:"",notes:"",tags:"",contact:"",version:"",exposedFields:[]},z$={nodes:[],edges:[],nodeTemplates:{},isReady:!1,connectionStartParams:null,currentConnectionFieldType:null,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,shouldValidateGraph:!0,shouldAnimateEdges:!0,shouldSnapToGrid:!1,shouldColorEdges:!0,isAddNodePopoverOpen:!1,nodeOpacity:1,selectedNodes:[],selectedEdges:[],workflow:Vx,nodeExecutionStates:{},viewport:{x:0,y:0,zoom:1},mouseOverField:null,mouseOverNode:null,nodesToCopy:[],edgesToCopy:[],selectionMode:Xa.Partial},mi=(e,t)=>{var l,u;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(c=>c.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!An(s))return;const a=(u=s.data)==null?void 0:u.inputs[r];a&&o>-1&&(a.value=i)},U$=Ht({name:"nodes",initialState:z$,reducers:{nodesChanged:(e,t)=>{e.nodes=uc(t.payload,e.nodes)},nodeAdded:(e,t)=>{const n=t.payload,r=l8(e.nodes,n.position.x,n.position.y);n.position=r,n.selected=!0,e.nodes=uc(e.nodes.map(i=>({id:i.id,type:"select",selected:!1})),e.nodes),e.edges=xl(e.edges.map(i=>({id:i.id,type:"select",selected:!1})),e.edges),e.nodes.push(n),An(n)&&(e.nodeExecutionStates[n.id]={nodeId:n.id,...l2})},edgesChanged:(e,t)=>{e.edges=xl(t.payload,e.edges)},connectionStarted:(e,t)=>{var l;e.connectionStartParams=t.payload;const{nodeId:n,handleId:r,handleType:i}=t.payload;if(!n||!r)return;const o=e.nodes.findIndex(u=>u.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!An(s))return;const a=i==="source"?s.data.outputs[r]:s.data.inputs[r];e.currentConnectionFieldType=(a==null?void 0:a.type)??null},connectionMade:(e,t)=>{e.currentConnectionFieldType&&(e.edges=o$({...t.payload,type:"default"},e.edges))},connectionEnded:e=>{e.connectionStartParams=null,e.currentConnectionFieldType=null},workflowExposedFieldAdded:(e,t)=>{e.workflow.exposedFields=K6(e.workflow.exposedFields.concat(t.payload),n=>`${n.nodeId}-${n.fieldName}`)},workflowExposedFieldRemoved:(e,t)=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(n=>!ng(n,t.payload))},fieldLabelChanged:(e,t)=>{const{nodeId:n,fieldName:r,label:i}=t.payload,o=e.nodes.find(a=>a.id===n);if(!An(o))return;const s=o.data.inputs[r];s&&(s.label=i)},nodeEmbedWorkflowChanged:(e,t)=>{var s;const{nodeId:n,embedWorkflow:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];An(o)&&(o.data.embedWorkflow=r)},nodeIsIntermediateChanged:(e,t)=>{var s;const{nodeId:n,isIntermediate:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];An(o)&&(o.data.isIntermediate=r)},nodeIsOpenChanged:(e,t)=>{var a;const{nodeId:n,isOpen:r}=t.payload,i=e.nodes.findIndex(l=>l.id===n),o=(a=e.nodes)==null?void 0:a[i];if(!An(o)&&!jA(o)||(o.data.isOpen=r,!An(o)))return;const s=rE([o],e.edges);if(r)s.forEach(l=>{delete l.hidden}),s.forEach(l=>{l.type==="collapsed"&&(e.edges=e.edges.filter(u=>u.id!==l.id))});else{const l=Qde(o,e.nodes,e.edges).filter(d=>An(d)&&d.data.isOpen===!1),u=Zde(o,e.nodes,e.edges).filter(d=>An(d)&&d.data.isOpen===!1),c=[];s.forEach(d=>{var f,h;if(d.target===n&&l.find(p=>p.id===d.source)){d.hidden=!0;const p=c.find(m=>m.source===d.source&&m.target===d.target);p?p.data={count:(((f=p.data)==null?void 0:f.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}if(d.source===n&&u.find(p=>p.id===d.target)){const p=c.find(m=>m.source===d.source&&m.target===d.target);d.hidden=!0,p?p.data={count:(((h=p.data)==null?void 0:h.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}}),c.length&&(e.edges=xl(c.map(d=>({type:"add",item:d})),e.edges))}},edgesDeleted:(e,t)=>{const r=t.payload.filter(i=>i.type==="collapsed");if(r.length){const i=[];r.forEach(o=>{e.edges.forEach(s=>{s.source===o.source&&s.target===o.target&&i.push({id:s.id,type:"remove"})})}),e.edges=xl(i,e.edges)}},nodesDeleted:(e,t)=>{t.payload.forEach(n=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(r=>r.nodeId!==n.id),An(n)&&delete e.nodeExecutionStates[n.id]})},nodeLabelChanged:(e,t)=>{var s;const{nodeId:n,label:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];An(o)&&(o.data.label=r)},nodeNotesChanged:(e,t)=>{var s;const{nodeId:n,notes:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];An(o)&&(o.data.notes=r)},selectedNodesChanged:(e,t)=>{e.selectedNodes=t.payload},selectedEdgesChanged:(e,t)=>{e.selectedEdges=t.payload},fieldStringValueChanged:(e,t)=>{mi(e,t)},fieldNumberValueChanged:(e,t)=>{mi(e,t)},fieldBooleanValueChanged:(e,t)=>{mi(e,t)},fieldImageValueChanged:(e,t)=>{mi(e,t)},fieldColorValueChanged:(e,t)=>{mi(e,t)},fieldMainModelValueChanged:(e,t)=>{mi(e,t)},fieldRefinerModelValueChanged:(e,t)=>{mi(e,t)},fieldVaeModelValueChanged:(e,t)=>{mi(e,t)},fieldLoRAModelValueChanged:(e,t)=>{mi(e,t)},fieldControlNetModelValueChanged:(e,t)=>{mi(e,t)},fieldEnumModelValueChanged:(e,t)=>{mi(e,t)},fieldSchedulerValueChanged:(e,t)=>{mi(e,t)},imageCollectionFieldValueChanged:(e,t)=>{var u,c;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(d=>d.id===n);if(o===-1)return;const s=(u=e.nodes)==null?void 0:u[o];if(!An(s))return;const a=(c=s.data)==null?void 0:c.inputs[r];if(!a)return;const l=Jt(a.value);if(!l){a.value=i;return}a.value=K6(l.concat(i),"image_name")},notesNodeValueChanged:(e,t)=>{var s;const{nodeId:n,value:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];jA(o)&&(o.data.notes=r)},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.nodeTemplates=t.payload,e.isReady=!0},nodeEditorReset:e=>{e.nodes=[],e.edges=[],e.workflow=Jt(Vx)},shouldValidateGraphChanged:(e,t)=>{e.shouldValidateGraph=t.payload},shouldAnimateEdgesChanged:(e,t)=>{e.shouldAnimateEdges=t.payload},shouldSnapToGridChanged:(e,t)=>{e.shouldSnapToGrid=t.payload},shouldColorEdgesChanged:(e,t)=>{e.shouldColorEdges=t.payload},nodeOpacityChanged:(e,t)=>{e.nodeOpacity=t.payload},workflowNameChanged:(e,t)=>{e.workflow.name=t.payload},workflowDescriptionChanged:(e,t)=>{e.workflow.description=t.payload},workflowTagsChanged:(e,t)=>{e.workflow.tags=t.payload},workflowAuthorChanged:(e,t)=>{e.workflow.author=t.payload},workflowNotesChanged:(e,t)=>{e.workflow.notes=t.payload},workflowVersionChanged:(e,t)=>{e.workflow.version=t.payload},workflowContactChanged:(e,t)=>{e.workflow.contact=t.payload},workflowLoaded:(e,t)=>{const{nodes:n,edges:r,...i}=t.payload;e.workflow=i,e.nodes=uc(n.map(o=>({item:{...o,dragHandle:`.${Ohe}`},type:"add"})),[]),e.edges=xl(r.map(o=>({item:o,type:"add"})),[]),e.nodeExecutionStates=n.reduce((o,s)=>(o[s.id]={nodeId:s.id,...l2},o),{})},workflowReset:e=>{e.workflow=Jt(Vx)},viewportChanged:(e,t)=>{e.viewport=t.payload},mouseOverFieldChanged:(e,t)=>{e.mouseOverField=t.payload},mouseOverNodeChanged:(e,t)=>{e.mouseOverNode=t.payload},selectedAll:e=>{e.nodes=uc(e.nodes.map(t=>({id:t.id,type:"select",selected:!0})),e.nodes),e.edges=xl(e.edges.map(t=>({id:t.id,type:"select",selected:!0})),e.edges)},selectionCopied:e=>{e.nodesToCopy=e.nodes.filter(t=>t.selected).map(Jt),e.edgesToCopy=e.edges.filter(t=>t.selected).map(Jt)},selectionPasted:e=>{const t=e.nodesToCopy.map(Jt),n=t.map(l=>l.data.id),r=e.edgesToCopy.filter(l=>n.includes(l.source)&&n.includes(l.target)).map(Jt);r.forEach(l=>l.selected=!0),t.forEach(l=>{const u=B$();r.forEach(d=>{d.source===l.data.id&&(d.source=u,d.id=d.id.replace(l.data.id,u)),d.target===l.data.id&&(d.target=u,d.id=d.id.replace(l.data.id,u))}),l.selected=!0,l.id=u,l.data.id=u;const c=l8(e.nodes,l.position.x,l.position.y);l.position=c});const i=t.map(l=>({item:l,type:"add"})),o=e.nodes.map(l=>({id:l.data.id,type:"select",selected:!1})),s=r.map(l=>({item:l,type:"add"})),a=e.edges.map(l=>({id:l.id,type:"select",selected:!1}));e.nodes=uc(i.concat(o),e.nodes),e.edges=xl(s.concat(a),e.edges),t.forEach(l=>{e.nodeExecutionStates[l.id]={nodeId:l.id,...l2}})},addNodePopoverOpened:e=>{e.isAddNodePopoverOpen=!0},addNodePopoverClosed:e=>{e.isAddNodePopoverOpen=!1},addNodePopoverToggled:e=>{e.isAddNodePopoverOpen=!e.isAddNodePopoverOpen},selectionModeChanged:(e,t)=>{e.selectionMode=t.payload?Xa.Full:Xa.Partial}},extraReducers:e=>{e.addCase(_p.pending,t=>{t.isReady=!1}),e.addCase($5,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=ps.IN_PROGRESS)}),e.addCase(B5,(t,n)=>{const{source_node_id:r,result:i}=n.payload.data,o=t.nodeExecutionStates[r];o&&(o.status=ps.COMPLETED,o.progress!==null&&(o.progress=1),o.outputs.push(i))}),e.addCase($1,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=ps.FAILED,i.error=n.payload.data.error,i.progress=null,i.progressImage=null)}),e.addCase(z5,(t,n)=>{const{source_node_id:r,step:i,total_steps:o,progress_image:s}=n.payload.data,a=t.nodeExecutionStates[r];a&&(a.status=ps.IN_PROGRESS,a.progress=(i+1)/o,a.progressImage=s??null)}),e.addCase(Bd.fulfilled,t=>{Ii(t.nodeExecutionStates,n=>{n.status=ps.PENDING,n.error=null,n.progress=null,n.progressImage=null,n.outputs=[]})}),e.addCase(al.fulfilled,t=>{kJ(t.nodeExecutionStates,n=>{n.status===ps.IN_PROGRESS&&(n.status=ps.PENDING)})})}}),{nodesChanged:rOe,edgesChanged:iOe,nodeAdded:oOe,nodesDeleted:sOe,connectionMade:aOe,connectionStarted:lOe,connectionEnded:uOe,shouldShowFieldTypeLegendChanged:cOe,shouldShowMinimapPanelChanged:dOe,nodeTemplatesBuilt:j$,nodeEditorReset:Mhe,imageCollectionFieldValueChanged:fOe,fieldStringValueChanged:hOe,fieldNumberValueChanged:pOe,fieldBooleanValueChanged:gOe,fieldImageValueChanged:G1,fieldColorValueChanged:mOe,fieldMainModelValueChanged:yOe,fieldVaeModelValueChanged:vOe,fieldLoRAModelValueChanged:_Oe,fieldEnumModelValueChanged:bOe,fieldControlNetModelValueChanged:SOe,fieldRefinerModelValueChanged:wOe,fieldSchedulerValueChanged:xOe,nodeIsOpenChanged:COe,nodeLabelChanged:EOe,nodeNotesChanged:TOe,edgesDeleted:AOe,shouldValidateGraphChanged:kOe,shouldAnimateEdgesChanged:POe,nodeOpacityChanged:OOe,shouldSnapToGridChanged:ROe,shouldColorEdgesChanged:IOe,selectedNodesChanged:MOe,selectedEdgesChanged:NOe,workflowNameChanged:DOe,workflowDescriptionChanged:LOe,workflowTagsChanged:$Oe,workflowAuthorChanged:FOe,workflowNotesChanged:BOe,workflowVersionChanged:zOe,workflowContactChanged:UOe,workflowLoaded:jOe,notesNodeValueChanged:VOe,workflowExposedFieldAdded:Nhe,workflowExposedFieldRemoved:GOe,fieldLabelChanged:HOe,viewportChanged:WOe,mouseOverFieldChanged:qOe,selectionCopied:KOe,selectionPasted:XOe,selectedAll:YOe,addNodePopoverOpened:ZOe,addNodePopoverClosed:QOe,addNodePopoverToggled:JOe,selectionModeChanged:eRe,nodeEmbedWorkflowChanged:tRe,nodeIsIntermediateChanged:nRe,mouseOverNodeChanged:rRe}=U$.actions,Dhe=U$.reducer,V$={esrganModelName:"RealESRGAN_x4plus.pth"},G$=Ht({name:"postprocessing",initialState:V$,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:iRe}=G$.actions,Lhe=G$.reducer,$he={positiveStylePrompt:"",negativeStylePrompt:"",shouldConcatSDXLStylePrompt:!0,shouldUseSDXLRefiner:!1,sdxlImg2ImgDenoisingStrength:.7,refinerModel:null,refinerSteps:20,refinerCFGScale:7.5,refinerScheduler:"euler",refinerPositiveAestheticScore:6,refinerNegativeAestheticScore:2.5,refinerStart:.8},H$=Ht({name:"sdxl",initialState:$he,reducers:{setPositiveStylePromptSDXL:(e,t)=>{e.positiveStylePrompt=t.payload},setNegativeStylePromptSDXL:(e,t)=>{e.negativeStylePrompt=t.payload},setShouldConcatSDXLStylePrompt:(e,t)=>{e.shouldConcatSDXLStylePrompt=t.payload},setShouldUseSDXLRefiner:(e,t)=>{e.shouldUseSDXLRefiner=t.payload},setSDXLImg2ImgDenoisingStrength:(e,t)=>{e.sdxlImg2ImgDenoisingStrength=t.payload},refinerModelChanged:(e,t)=>{e.refinerModel=t.payload},setRefinerSteps:(e,t)=>{e.refinerSteps=t.payload},setRefinerCFGScale:(e,t)=>{e.refinerCFGScale=t.payload},setRefinerScheduler:(e,t)=>{e.refinerScheduler=t.payload},setRefinerPositiveAestheticScore:(e,t)=>{e.refinerPositiveAestheticScore=t.payload},setRefinerNegativeAestheticScore:(e,t)=>{e.refinerNegativeAestheticScore=t.payload},setRefinerStart:(e,t)=>{e.refinerStart=t.payload}}}),{setPositiveStylePromptSDXL:oRe,setNegativeStylePromptSDXL:sRe,setShouldConcatSDXLStylePrompt:aRe,setShouldUseSDXLRefiner:Fhe,setSDXLImg2ImgDenoisingStrength:lRe,refinerModelChanged:u8,setRefinerSteps:uRe,setRefinerCFGScale:cRe,setRefinerScheduler:dRe,setRefinerPositiveAestheticScore:fRe,setRefinerNegativeAestheticScore:hRe,setRefinerStart:pRe}=H$.actions,Bhe=H$.reducer,hg=me("app/userInvoked"),zhe={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console&&console[e]&&console[e].apply(console,t)}};class Xy{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||zhe,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]=this.observers[r]||[],this.observers[r].push(n)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t]=this.observers[t].filter(r=>r!==n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{s(...r)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(s=>{s.apply(s,[t,...r])})}}function wf(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function c8(e){return e==null?"":""+e}function Uhe(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function aE(e,t,n){function r(s){return s&&s.indexOf("###")>-1?s.replace(/###/g,"."):s}function i(){return!e||typeof e=="string"}const o=typeof t!="string"?[].concat(t):t.split(".");for(;o.length>1;){if(i())return{};const s=r(o.shift());!e[s]&&n&&(e[s]=new n),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={}}return i()?{}:{obj:e,k:r(o.shift())}}function d8(e,t,n){const{obj:r,k:i}=aE(e,t,Object);r[i]=n}function jhe(e,t,n,r){const{obj:i,k:o}=aE(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function Yy(e,t){const{obj:n,k:r}=aE(e,t);if(n)return n[r]}function Vhe(e,t,n){const r=Yy(e,n);return r!==void 0?r:Yy(t,n)}function W$(e,t,n){for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):W$(e[r],t[r],n):e[r]=t[r]);return e}function Zu(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var Ghe={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function Hhe(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>Ghe[t]):e}const Whe=[" ",",","?","!",";"];function qhe(e,t,n){t=t||"",n=n||"";const r=Whe.filter(s=>t.indexOf(s)<0&&n.indexOf(s)<0);if(r.length===0)return!0;const i=new RegExp(`(${r.map(s=>s==="?"?"\\?":s).join("|")})`);let o=!i.test(e);if(!o){const s=e.indexOf(n);s>0&&!i.test(e.substring(0,s))&&(o=!0)}return o}function Zy(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let o=0;oo+s;)s++,a=r.slice(o,o+s).join(n),l=i[a];if(l===void 0)return;if(l===null)return null;if(t.endsWith(a)){if(typeof l=="string")return l;if(a&&typeof l[a]=="string")return l[a]}const u=r.slice(o+s).join(n);return u?Zy(l,u,n):void 0}i=i[r[o]]}return i}function Qy(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class f8 extends H1{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,s=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a=[t,n];r&&typeof r!="string"&&(a=a.concat(r)),r&&typeof r=="string"&&(a=a.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(a=t.split("."));const l=Yy(this.data,a);return l||!s||typeof r!="string"?l:Zy(this.data&&this.data[t]&&this.data[t][n],r,o)}addResource(t,n,r,i){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const s=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let a=[t,n];r&&(a=a.concat(s?r.split(s):r)),t.indexOf(".")>-1&&(a=t.split("."),i=n,n=a[1]),this.addNamespaces(n),d8(this.data,a,i),o.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const o in r)(typeof r[o]=="string"||Object.prototype.toString.apply(r[o])==="[object Array]")&&this.addResource(t,n,o,r[o],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},a=[t,n];t.indexOf(".")>-1&&(a=t.split("."),i=r,r=n,n=a[1]),this.addNamespaces(n);let l=Yy(this.data,a)||{};i?W$(l,r,o):l={...l,...r},d8(this.data,a,l),s.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var q$={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(o=>{this.processors[o]&&(t=this.processors[o].process(t,n,r,i))}),t}};const h8={};class Jy extends H1{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Uhe(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Do.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let o=n.ns||this.options.defaultNS||[];const s=r&&t.indexOf(r)>-1,a=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!qhe(t,r,i);if(s&&!a){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:o};const u=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(u[0])>-1)&&(o=u.shift()),t=u.join(i)}return typeof o=="string"&&(o=[o]),{key:t,namespaces:o}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,o=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:s,namespaces:a}=this.extractFromKey(t[t.length-1],n),l=a[a.length-1],u=n.lng||this.language,c=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&u.toLowerCase()==="cimode"){if(c){const v=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${v}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${v}${s}`}return i?{res:s,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:s}const d=this.resolve(t,n);let f=d&&d.res;const h=d&&d.usedKey||s,p=d&&d.exactUsedKey||s,m=Object.prototype.toString.apply(f),b=["[object Number]","[object Function]","[object RegExp]"],_=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject;if(y&&f&&(typeof f!="string"&&typeof f!="boolean"&&typeof f!="number")&&b.indexOf(m)<0&&!(typeof _=="string"&&m==="[object Array]")){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const v=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,f,{...n,ns:a}):`key '${s} (${this.language})' returned an object instead of string.`;return i?(d.res=v,d):v}if(o){const v=m==="[object Array]",S=v?[]:{},w=v?p:h;for(const C in f)if(Object.prototype.hasOwnProperty.call(f,C)){const x=`${w}${o}${C}`;S[C]=this.translate(x,{...n,joinArrays:!1,ns:a}),S[C]===x&&(S[C]=f[C])}f=S}}else if(y&&typeof _=="string"&&m==="[object Array]")f=f.join(_),f&&(f=this.extendTranslation(f,t,n,r));else{let v=!1,S=!1;const w=n.count!==void 0&&typeof n.count!="string",C=Jy.hasDefaultValue(n),x=w?this.pluralResolver.getSuffix(u,n.count,n):"",A=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",T=n[`defaultValue${x}`]||n[`defaultValue${A}`]||n.defaultValue;!this.isValidLookup(f)&&C&&(v=!0,f=T),this.isValidLookup(f)||(S=!0,f=s);const L=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&S?void 0:f,R=C&&T!==f&&this.options.updateMissing;if(S||v||R){if(this.logger.log(R?"updateKey":"missingKey",u,l,s,R?T:f),o){const $=this.resolve(s,{...n,keySeparator:!1});$&&$.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let E=[];const k=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&k&&k[0])for(let $=0;${const D=C&&O!==f?O:L;this.options.missingKeyHandler?this.options.missingKeyHandler($,l,M,D,R,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing($,l,M,D,R,n),this.emit("missingKey",$,l,M,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?E.forEach($=>{this.pluralResolver.getSuffixes($,n).forEach(M=>{N([$],s+M,n[`defaultValue${M}`]||T)})}):N(E,s,T))}f=this.extendTranslation(f,t,n,d,r),S&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(S||v)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,v?f:void 0):f=this.options.parseMissingKeyHandler(f))}return i?(d.res=f,d):f}extendTranslation(t,n,r,i,o){var s=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const u=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(u){const f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let d=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(d={...this.options.interpolation.defaultVariables,...d}),t=this.interpolator.interpolate(t,d,r.lng||this.language,r),u){const f=t.match(this.interpolator.nestingRegexp),h=f&&f.length;c1&&arguments[1]!==void 0?arguments[1]:{},r,i,o,s,a;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const u=this.extractFromKey(l,n),c=u.key;i=c;let d=u.namespaces;this.options.fallbackNS&&(d=d.concat(this.options.fallbackNS));const f=n.count!==void 0&&typeof n.count!="string",h=f&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),p=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",m=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);d.forEach(b=>{this.isValidLookup(r)||(a=b,!h8[`${m[0]}-${b}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(h8[`${m[0]}-${b}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(_=>{if(this.isValidLookup(r))return;s=_;const y=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,c,_,b,n);else{let v;f&&(v=this.pluralResolver.getSuffix(_,n.count,n));const S=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(y.push(c+v),n.ordinal&&v.indexOf(w)===0&&y.push(c+v.replace(w,this.options.pluralSeparator)),h&&y.push(c+S)),p){const C=`${c}${this.options.contextSeparator}${n.context}`;y.push(C),f&&(y.push(C+v),n.ordinal&&v.indexOf(w)===0&&y.push(C+v.replace(w,this.options.pluralSeparator)),h&&y.push(C+S))}}let g;for(;g=y.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(_,b,g,n))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function u2(e){return e.charAt(0).toUpperCase()+e.slice(1)}class p8{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Do.create("languageUtils")}getScriptPartFromCode(t){if(t=Qy(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=Qy(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=u2(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=u2(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=u2(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(o=>{if(o===i)return o;if(!(o.indexOf("-")<0&&i.indexOf("-")<0)&&o.indexOf(i)===0)return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Object.prototype.toString.apply(t)==="[object Array]")return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],o=s=>{s&&(this.isSupportedCode(s)?i.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(t))):typeof t=="string"&&o(this.formatLanguageCode(t)),r.forEach(s=>{i.indexOf(s)<0&&o(this.formatLanguageCode(s))}),i}}let Khe=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],Xhe={1:function(e){return+(e>1)},2:function(e){return+(e!=1)},3:function(e){return 0},4:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},5:function(e){return e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},6:function(e){return e==1?0:e>=2&&e<=4?1:2},7:function(e){return e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},8:function(e){return e==1?0:e==2?1:e!=8&&e!=11?2:3},9:function(e){return+(e>=2)},10:function(e){return e==1?0:e==2?1:e<7?2:e<11?3:4},11:function(e){return e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(e!==0)},14:function(e){return e==1?0:e==2?1:e==3?2:3},15:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2},16:function(e){return e%10==1&&e%100!=11?0:e!==0?1:2},17:function(e){return e==1||e%10==1&&e%100!=11?0:1},18:function(e){return e==0?0:e==1?1:2},19:function(e){return e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3},20:function(e){return e==1?0:e==0||e%100>0&&e%100<20?1:2},21:function(e){return e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0},22:function(e){return e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3}};const Yhe=["v1","v2","v3"],Zhe=["v4"],g8={zero:0,one:1,two:2,few:3,many:4,other:5};function Qhe(){const e={};return Khe.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:Xhe[t.fc]}})}),e}class Jhe{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=Do.create("pluralResolver"),(!this.options.compatibilityJSON||Zhe.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Qhe()}addRule(t,n){this.rules[t]=n}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(Qy(t),{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,o)=>g8[i]-g8[o]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const o=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?o():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!Yhe.includes(this.options.compatibilityJSON)}}function m8(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=Vhe(e,t,n);return!o&&i&&typeof n=="string"&&(o=Zy(e,n,r),o===void 0&&(o=Zy(t,n,r))),o}class epe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Do.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const n=t.interpolation;this.escape=n.escape!==void 0?n.escape:Hhe,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?Zu(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?Zu(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?Zu(n.nestingPrefix):n.nestingPrefixEscaped||Zu("$t("),this.nestingSuffix=n.nestingSuffix?Zu(n.nestingSuffix):n.nestingSuffixEscaped||Zu(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=n.alwaysFormat!==void 0?n.alwaysFormat:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=`${this.prefix}(.+?)${this.suffix}`;this.regexp=new RegExp(t,"g");const n=`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;this.regexpUnescape=new RegExp(n,"g");const r=`${this.nestingPrefix}(.+?)${this.nestingSuffix}`;this.nestingRegexp=new RegExp(r,"g")}interpolate(t,n,r,i){let o,s,a;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(p){return p.replace(/\$/g,"$$$$")}const c=p=>{if(p.indexOf(this.formatSeparator)<0){const y=m8(n,l,p,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(y,void 0,r,{...i,...n,interpolationkey:p}):y}const m=p.split(this.formatSeparator),b=m.shift().trim(),_=m.join(this.formatSeparator).trim();return this.format(m8(n,l,b,this.options.keySeparator,this.options.ignoreJSONStructure),_,r,{...i,...n,interpolationkey:b})};this.resetRegExp();const d=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:p=>u(p)},{regex:this.regexp,safeValue:p=>this.escapeValue?u(this.escape(p)):u(p)}].forEach(p=>{for(a=0;o=p.regex.exec(t);){const m=o[1].trim();if(s=c(m),s===void 0)if(typeof d=="function"){const _=d(t,o,i);s=typeof _=="string"?_:""}else if(i&&Object.prototype.hasOwnProperty.call(i,m))s="";else if(f){s=o[0];continue}else this.logger.warn(`missed to pass in variable ${m} for interpolating ${t}`),s="";else typeof s!="string"&&!this.useRawValueToEscape&&(s=c8(s));const b=p.safeValue(s);if(t=t.replace(o[0],b),f?(p.regex.lastIndex+=s.length,p.regex.lastIndex-=o[0].length):p.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,o,s;function a(l,u){const c=this.nestingOptionsSeparator;if(l.indexOf(c)<0)return l;const d=l.split(new RegExp(`${c}[ ]*{`));let f=`{${d[1]}`;l=d[0],f=this.interpolate(f,s);const h=f.match(/'/g),p=f.match(/"/g);(h&&h.length%2===0&&!p||p.length%2!==0)&&(f=f.replace(/'/g,'"'));try{s=JSON.parse(f),u&&(s={...u,...s})}catch(m){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,m),`${l}${c}${f}`}return delete s.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];s={...r},s=s.replace&&typeof s.replace!="string"?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const c=i[1].split(this.formatSeparator).map(d=>d.trim());i[1]=c.shift(),l=c,u=!0}if(o=n(a.call(this,i[1].trim(),s),s),o&&i[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=c8(o)),o||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),o=""),u&&(o=l.reduce((c,d)=>this.format(c,d,r.lng,{...r,interpolationkey:i[1].trim()}),o.trim())),t=t.replace(i[0],o),this.regexp.lastIndex=0}return t}}function tpe(e){let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(s=>{if(!s)return;const[a,...l]=s.split(":"),u=l.join(":").trim().replace(/^'+|'+$/g,"");n[a.trim()]||(n[a.trim()]=u),u==="false"&&(n[a.trim()]=!1),u==="true"&&(n[a.trim()]=!0),isNaN(u)||(n[a.trim()]=parseInt(u,10))})}return{formatName:t,formatOptions:n}}function Qu(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(Qy(i),o),t[s]=a),a(r)}}class npe{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Do.create("formatter"),this.options=t,this.formats={number:Qu((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:Qu((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:Qu((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:Qu((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:Qu((n,r)=>{const i=new Intl.ListFormat(n,{...r});return o=>i.format(o)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=Qu(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n.split(this.formatSeparator).reduce((a,l)=>{const{formatName:u,formatOptions:c}=tpe(l);if(this.formats[u]){let d=a;try{const f=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},h=f.locale||f.lng||i.locale||i.lng||r;d=this.formats[u](a,h,{...c,...i,...f})}catch(f){this.logger.warn(f)}return d}else this.logger.warn(`there was no format function for ${u}`);return a},t)}}function rpe(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class ipe extends H1{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=Do.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const o={},s={},a={},l={};return t.forEach(u=>{let c=!0;n.forEach(d=>{const f=`${u}|${d}`;!r.reload&&this.store.hasResourceBundle(u,d)?this.state[f]=2:this.state[f]<0||(this.state[f]===1?s[f]===void 0&&(s[f]=!0):(this.state[f]=1,c=!1,s[f]===void 0&&(s[f]=!0),o[f]===void 0&&(o[f]=!0),l[d]===void 0&&(l[d]=!0)))}),c||(a[u]=!0)}),(Object.keys(o).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(o),pending:Object.keys(s),toLoadLanguages:Object.keys(a),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),o=i[0],s=i[1];n&&this.emit("failedLoading",o,s,n),r&&this.store.addResourceBundle(o,s,r),this.state[t]=n?-1:2;const a={};this.queue.forEach(l=>{jhe(l.loaded,[o],s),rpe(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(u=>{a[u]||(a[u]={});const c=l.loaded[u];c.length&&c.forEach(d=>{a[u][d]===void 0&&(a[u][d]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",a),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,s=arguments.length>5?arguments[5]:void 0;if(!t.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:o,callback:s});return}this.readingCalls++;const a=(u,c)=>{if(this.readingCalls--,this.waitingReads.length>0){const d=this.waitingReads.shift();this.read(d.lng,d.ns,d.fcName,d.tried,d.wait,d.callback)}if(u&&c&&i{this.read.call(this,t,n,r,i+1,o*2,s)},o);return}s(u,c)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const u=l(t,n);u&&typeof u.then=="function"?u.then(c=>a(null,c)).catch(a):a(null,u)}catch(u){a(u)}return}return l(t,n,a)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const o=this.queueLoad(t,n,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(s=>{this.loadOne(s)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],o=r[1];this.read(i,o,"read",void 0,void 0,(s,a)=>{s&&this.logger.warn(`${n}loading namespace ${o} for language ${i} failed`,s),!s&&a&&this.logger.log(`${n}loaded namespace ${o} for language ${i}`,a),this.loaded(t,s,a)})}saveMissing(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},a=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l={...s,isUpdate:o},u=this.backend.create.bind(this.backend);if(u.length<6)try{let c;u.length===5?c=u(t,n,r,i,l):c=u(t,n,r,i),c&&typeof c.then=="function"?c.then(d=>a(null,d)).catch(a):a(null,c)}catch(c){a(c)}else u(t,n,r,i,a,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}}function y8(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let n={};if(typeof t[1]=="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(i=>{n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:(e,t,n,r)=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function v8(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Om(){}function ope(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class bp extends H1{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=v8(t),this.services={},this.logger=Do,this.modules={external:[]},ope(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=y8();this.options={...i,...this.options,...v8(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);function o(c){return c?typeof c=="function"?new c:c:null}if(!this.options.isClone){this.modules.logger?Do.init(o(this.modules.logger),this.options):Do.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=npe);const d=new p8(this.options);this.store=new f8(this.options.resources,this.options);const f=this.services;f.logger=Do,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new Jhe(d,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=o(c),f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new epe(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new ipe(o(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",function(h){for(var p=arguments.length,m=new Array(p>1?p-1:0),b=1;b1?p-1:0),b=1;b{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Om),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=function(){return t.store[c](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=function(){return t.store[c](...arguments),t}});const l=wf(),u=()=>{const c=(d,f)=>{this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(f),r(d,f)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initImmediate?u():setTimeout(u,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Om;const i=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode")return r();const o=[],s=a=>{if(!a)return;this.services.languageUtils.toResolveHierarchy(a).forEach(u=>{o.indexOf(u)<0&&o.push(u)})};i?s(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload&&this.options.preload.forEach(a=>s(a)),this.services.backendConnector.load(o,this.options.ns,a=>{!a&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(a)})}else r(null)}reloadResources(t,n,r){const i=wf();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Om),this.services.backendConnector.reload(t,n,o=>{i.resolve(),r(o)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&q$.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=wf();this.emit("languageChanging",t);const o=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},s=(l,u)=>{u?(o(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},a=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const u=typeof l=="string"?l:this.services.languageUtils.getBestMatchFromCodes(l);u&&(this.language||o(u),this.translator.language||this.translator.changeLanguage(u),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(u)),this.loadResources(u,c=>{s(c,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),i}getFixedT(t,n,r){var i=this;const o=function(s,a){let l;if(typeof a!="object"){for(var u=arguments.length,c=new Array(u>2?u-2:0),d=2;d`${l.keyPrefix}${f}${p}`):h=l.keyPrefix?`${l.keyPrefix}${f}${s}`:s,i.t(h,l)};return typeof t=="string"?o.lng=t:o.lngs=t,o.ns=n,o.keyPrefix=r,o}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(a,l)=>{const u=this.services.backendConnector.state[`${a}|${l}`];return u===-1||u===2};if(n.precheck){const a=n.precheck(this,s);if(a!==void 0)return a}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(r,t)&&(!i||s(o,t)))}loadNamespaces(t,n){const r=wf();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=wf();typeof t=="string"&&(t=[t]);const i=this.options.preload||[],o=t.filter(s=>i.indexOf(s)<0);return o.length?(this.options.preload=i.concat(o),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new p8(y8());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new bp(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Om;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new bp(i);return(t.debug!==void 0||t.prefix!==void 0)&&(o.logger=o.logger.clone(t)),["store","services","language"].forEach(a=>{o[a]=this[a]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r&&(o.store=new f8(this.store.data,i),o.services.resourceStore=o.store),o.translator=new Jy(o.services,i),o.translator.on("*",function(a){for(var l=arguments.length,u=new Array(l>1?l-1:0),c=1;ctypeof e=="string"?{title:e,status:"info",isClosable:!0,duration:2500}:{status:"info",isClosable:!0,duration:2500,...e},spe=j.object({status:j.literal(422),error:j.object({detail:j.array(j.object({loc:j.array(j.string()),msg:j.string(),type:j.string()}))})}),K$={isConnected:!1,isProcessing:!1,isGFPGANAvailable:!0,isESRGANAvailable:!0,shouldConfirmOnDelete:!0,currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatusHasSteps:!1,isCancelable:!0,enableImageDebugging:!1,toastQueue:[],progressImage:null,shouldAntialiasProgressImage:!1,sessionId:null,cancelType:"immediate",isCancelScheduled:!1,subscribedNodeIds:[],wereModelsReceived:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,shouldUseNSFWChecker:!1,shouldUseWatermarker:!1},X$=Ht({name:"system",initialState:K$,reducers:{setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.statusTranslationKey=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},setEnableImageDebugging:(e,t)=>{e.enableImageDebugging=t.payload},addToast:(e,t)=>{e.toastQueue.push(t.payload)},clearToastQueue:e=>{e.toastQueue=[]},cancelScheduled:e=>{e.isCancelScheduled=!0},scheduledCancelAborted:e=>{e.isCancelScheduled=!1},cancelTypeChanged:(e,t)=>{e.cancelType=t.payload},subscribedNodeIdsSet:(e,t)=>{e.subscribedNodeIds=t.payload},consoleLogLevelChanged:(e,t)=>{e.consoleLogLevel=t.payload},shouldLogToConsoleChanged:(e,t)=>{e.shouldLogToConsole=t.payload},shouldAntialiasProgressImageChanged:(e,t)=>{e.shouldAntialiasProgressImage=t.payload},isPersistedChanged:(e,t)=>{e.isPersisted=t.payload},languageChanged:(e,t)=>{e.language=t.payload},progressImageSet(e,t){e.progressImage=t.payload},shouldUseNSFWCheckerChanged(e,t){e.shouldUseNSFWChecker=t.payload},shouldUseWatermarkerChanged(e,t){e.shouldUseWatermarker=t.payload}},extraReducers(e){e.addCase(XD,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(ZD,t=>{t.sessionId=null}),e.addCase(WD,t=>{t.isConnected=!0,t.isCancelable=!0,t.isProcessing=!1,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.currentIteration=0,t.totalIterations=0,t.statusTranslationKey="common.statusConnected"}),e.addCase(KD,t=>{t.isConnected=!1,t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusDisconnected"}),e.addCase($5,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase(z5,(t,n)=>{const{step:r,total_steps:i,progress_image:o}=n.payload.data;t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!0,t.currentStep=r+1,t.totalSteps=i,t.progressImage=o??null,t.statusTranslationKey="common.statusGenerating"}),e.addCase(B5,(t,n)=>{const{data:r}=n.payload;t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusProcessingComplete",t.canceledSession===r.graph_execution_state_id&&(t.isProcessing=!1,t.isCancelable=!0)}),e.addCase(tL,t=>{t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null}),e.addCase(hg,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(al.fulfilled,(t,n)=>{t.canceledSession=n.meta.arg.session_id,t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null,t.toastQueue.push(Sa({title:sh("toast.canceled"),status:"warning"}))}),e.addMatcher(lN,(t,n)=>{var o,s,a;t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null;let r;const i=5e3;if(((o=n.payload)==null?void 0:o.status)===422){const l=spe.safeParse(n.payload);if(l.success){l.data.error.detail.map(u=>{t.toastQueue.push(Sa({title:s7(u.msg),status:"error",description:`Path: - ${u.loc.slice(3).join(".")}`,duration:i}))});return}}else(s=n.payload)!=null&&s.error&&(r=(a=n.payload)==null?void 0:a.error);t.toastQueue.push(Sa({title:sh("toast.serverError"),status:"error",description:py(r,"detail","Unknown Error"),duration:i}))}),e.addMatcher(dpe,(t,n)=>{t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusError",t.progressImage=null,t.toastQueue.push(Sa({title:sh("toast.serverError"),status:"error",description:see(n.payload.data.error_type)}))})}}),{setIsProcessing:gRe,setShouldConfirmOnDelete:mRe,setCurrentStatus:yRe,setIsCancelable:vRe,setEnableImageDebugging:_Re,addToast:Wt,clearToastQueue:bRe,cancelScheduled:SRe,scheduledCancelAborted:wRe,cancelTypeChanged:xRe,subscribedNodeIdsSet:CRe,consoleLogLevelChanged:ERe,shouldLogToConsoleChanged:TRe,isPersistedChanged:ARe,shouldAntialiasProgressImageChanged:kRe,languageChanged:PRe,progressImageSet:ape,shouldUseNSFWCheckerChanged:lpe,shouldUseWatermarkerChanged:upe}=X$.actions,cpe=X$.reducer,dpe=Ni($1,sL,lL),fpe={searchFolder:null,advancedAddScanModel:null},Y$=Ht({name:"modelmanager",initialState:fpe,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:ORe,setAdvancedAddScanModel:RRe}=Y$.actions,hpe=Y$.reducer,Z$={shift:!1,ctrl:!1,meta:!1},Q$=Ht({name:"hotkeys",initialState:Z$,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload},ctrlKeyPressed:(e,t)=>{e.ctrl=t.payload},metaKeyPressed:(e,t)=>{e.meta=t.payload}}}),{shiftKeyPressed:IRe,ctrlKeyPressed:MRe,metaKeyPressed:NRe}=Q$.actions,ppe=Q$.reducer,J$=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],_8=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=J$.indexOf(t)},eF={activeTab:0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,shouldAutoChangeDimensions:!1,favoriteSchedulers:[],globalContextMenuCloseTrigger:0,panels:{}},tF=Ht({name:"ui",initialState:eF,reducers:{setActiveTab:(e,t)=>{_8(e,t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShouldUseCanvasBetaLayout:(e,t)=>{e.shouldUseCanvasBetaLayout=t.payload},setShouldHidePreview:(e,t)=>{e.shouldHidePreview=t.payload},setShouldShowExistingModelsInSearch:(e,t)=>{e.shouldShowExistingModelsInSearch=t.payload},setShouldUseSliders:(e,t)=>{e.shouldUseSliders=t.payload},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker},setShouldAutoChangeDimensions:(e,t)=>{e.shouldAutoChangeDimensions=t.payload},contextMenusClosed:e=>{e.globalContextMenuCloseTrigger+=1},panelsChanged:(e,t)=>{e.panels[t.payload.name]=t.payload.value}},extraReducers(e){e.addCase(d1,t=>{_8(t,"img2img")})}}),{setActiveTab:gpe,setShouldShowImageDetails:DRe,setShouldUseCanvasBetaLayout:LRe,setShouldShowExistingModelsInSearch:$Re,setShouldUseSliders:FRe,setShouldHidePreview:BRe,setShouldShowProgressInViewer:zRe,favoriteSchedulersChanged:URe,toggleEmbeddingPicker:jRe,setShouldAutoChangeDimensions:VRe,contextMenusClosed:GRe,panelsChanged:HRe}=tF.actions,mpe=tF.reducer,ype=Yj(zH);nF=Gx=void 0;var vpe=ype,_pe=function(){var t=[],n=[],r=void 0,i=function(u){return r=u,function(c){return function(d){return vpe.compose.apply(void 0,n)(c)(d)}}},o=function(){for(var u,c,d=arguments.length,f=Array(d),h=0;h=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(u){throw u},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,a;return{s:function(){n=n.call(e)},n:function(){var u=n.next();return o=u.done,u},e:function(u){s=!0,a=u},f:function(){try{!o&&n.return!=null&&n.return()}finally{if(s)throw a}}}}function iF(e,t){if(e){if(typeof e=="string")return S8(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return S8(e,t)}}function S8(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,i=r.prefix,o=r.driver,s=r.persistWholeStore,a=r.serialize;try{var l=s?Mpe:Npe;yield l(t,n,{prefix:i,driver:o,serialize:a})}catch(u){console.warn("redux-remember: persist error",u)}});return function(){return e.apply(this,arguments)}}();function E8(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(u){n(u);return}a.done?t(l):Promise.resolve(l).then(r,i)}function T8(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){E8(o,r,i,s,a,"next",l)}function a(l){E8(o,r,i,s,a,"throw",l)}s(void 0)})}}var Lpe=function(){var e=T8(function*(t,n,r){var i=r.prefix,o=r.driver,s=r.serialize,a=r.unserialize,l=r.persistThrottle,u=r.persistDebounce,c=r.persistWholeStore;yield kpe(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=T8(function*(){var p=rF(t.getState(),n);yield Dpe(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),uE(p,d)||t.dispatch({type:xpe,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(Epe(f,u)):t.subscribe(Cpe(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const $pe=Lpe;function Sp(e){"@babel/helpers - typeof";return Sp=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sp(e)}function A8(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 f2(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:n.state,i=arguments.length>1?arguments[1]:void 0;i.type&&(i.type==="@@INIT"||i.type.startsWith("@@redux/INIT"))&&(n.state=f2({},r));var o=typeof t=="function"?t:Md(t);switch(i.type){case Hx:{var s=f2(f2({},n.state),i.payload||{});return n.state=o(s,{type:Hx,payload:s}),n.state}default:return o(r,i)}}},jpe=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=r.prefix,o=i===void 0?"@@remember-":i,s=r.serialize,a=s===void 0?function(b,_){return JSON.stringify(b)}:s,l=r.unserialize,u=l===void 0?function(b,_){return JSON.parse(b)}:l,c=r.persistThrottle,d=c===void 0?100:c,f=r.persistDebounce,h=r.persistWholeStore,p=h===void 0?!1:h;if(!t)throw Error("redux-remember error: driver required");if(!Array.isArray(n))throw Error("redux-remember error: rememberedKeys needs to be an array");var m=function(_){return function(y,g,v){var S=_(y,g,v);return $pe(S,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),S}};return m};const WRe=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],Vpe="@@invokeai-",Gpe=["cursorPosition"],Hpe=["pendingControlImages"],Wpe=["selection","selectedBoardId","galleryView"],qpe=["nodeTemplates","connectionStartParams","currentConnectionFieldType","selectedNodes","selectedEdges","isReady","nodesToCopy","edgesToCopy"],Kpe=[],Xpe=[],Ype=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","isPersisted","isUploading"],Zpe=["shouldShowImageDetails","globalContextMenuCloseTrigger","panels"],Qpe={canvas:Gpe,gallery:Wpe,generation:Kpe,nodes:qpe,postprocessing:Xpe,system:Ype,ui:Zpe,controlNet:Hpe},Jpe=(e,t)=>{const n=l1(e,Qpe[t]??[]);return JSON.stringify(n)},ege={canvas:cN,gallery:pL,generation:po,nodes:z$,postprocessing:V$,system:K$,config:X7,ui:eF,hotkeys:Z$,controlNet:Tx},tge=(e,t)=>SJ(JSON.parse(e),ege[t]),sF=me("nodes/textToImageGraphBuilt"),aF=me("nodes/imageToImageGraphBuilt"),lF=me("nodes/canvasGraphBuilt"),uF=me("nodes/nodesGraphBuilt"),nge=Ni(sF,aF,lF,uF),rge=e=>{if(nge(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return _p.fulfilled.match(e)?{...e,payload:""}:j$.match(e)?{...e,payload:""}:e},ige=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","@@REMEMBER_PERSISTED"],oge=e=>e;var cF={},q1={},K1={};Object.defineProperty(K1,"__esModule",{value:!0});K1.createLogMethods=void 0;var sge=function(){return{debug:console.debug.bind(console),error:console.error.bind(console),fatal:console.error.bind(console),info:console.info.bind(console),trace:console.debug.bind(console),warn:console.warn.bind(console)}};K1.createLogMethods=sge;var cE={},X1={};Object.defineProperty(X1,"__esModule",{value:!0});X1.boolean=void 0;const age=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1"].includes(e.trim().toLowerCase());case"[object Number]":return e.valueOf()===1;case"[object Boolean]":return e.valueOf();default:return!1}};X1.boolean=age;var Y1={};Object.defineProperty(Y1,"__esModule",{value:!0});Y1.isBooleanable=void 0;const lge=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1","false","f","no","n","off","0"].includes(e.trim().toLowerCase());case"[object Number]":return[0,1].includes(e.valueOf());case"[object Boolean]":return!0;default:return!1}};Y1.isBooleanable=lge;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isBooleanable=e.boolean=void 0;const t=X1;Object.defineProperty(e,"boolean",{enumerable:!0,get:function(){return t.boolean}});const n=Y1;Object.defineProperty(e,"isBooleanable",{enumerable:!0,get:function(){return n.isBooleanable}})})(cE);var k8=Object.prototype.toString,dF=function(t){var n=k8.call(t),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&k8.call(t.callee)==="[object Function]"),r},h2,P8;function uge(){if(P8)return h2;P8=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=dF,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),s=i.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(f){var h=f.constructor;return h&&h.prototype===f},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},c=function(){if(typeof window>"u")return!1;for(var f in window)try{if(!u["$"+f]&&t.call(window,f)&&window[f]!==null&&typeof window[f]=="object")try{l(window[f])}catch{return!0}}catch{return!0}return!1}(),d=function(f){if(typeof window>"u"||!c)return l(f);try{return l(f)}catch{return!1}};e=function(h){var p=h!==null&&typeof h=="object",m=n.call(h)==="[object Function]",b=r(h),_=p&&n.call(h)==="[object String]",y=[];if(!p&&!m&&!b)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(_&&h.length>0&&!t.call(h,0))for(var v=0;v0)for(var S=0;S"u"||!On?ze:On(Uint8Array),Jl={"%AggregateError%":typeof AggregateError>"u"?ze:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?ze:ArrayBuffer,"%ArrayIteratorPrototype%":Ju&&On?On([][Symbol.iterator]()):ze,"%AsyncFromSyncIteratorPrototype%":ze,"%AsyncFunction%":cc,"%AsyncGenerator%":cc,"%AsyncGeneratorFunction%":cc,"%AsyncIteratorPrototype%":cc,"%Atomics%":typeof Atomics>"u"?ze:Atomics,"%BigInt%":typeof BigInt>"u"?ze:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?ze:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?ze:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?ze:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?ze:Float32Array,"%Float64Array%":typeof Float64Array>"u"?ze:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?ze:FinalizationRegistry,"%Function%":hF,"%GeneratorFunction%":cc,"%Int8Array%":typeof Int8Array>"u"?ze:Int8Array,"%Int16Array%":typeof Int16Array>"u"?ze:Int16Array,"%Int32Array%":typeof Int32Array>"u"?ze:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ju&&On?On(On([][Symbol.iterator]())):ze,"%JSON%":typeof JSON=="object"?JSON:ze,"%Map%":typeof Map>"u"?ze:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Ju||!On?ze:On(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?ze:Promise,"%Proxy%":typeof Proxy>"u"?ze:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?ze:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?ze:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Ju||!On?ze:On(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?ze:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ju&&On?On(""[Symbol.iterator]()):ze,"%Symbol%":Ju?Symbol:ze,"%SyntaxError%":xd,"%ThrowTypeError%":Ege,"%TypedArray%":Age,"%TypeError%":Xc,"%Uint8Array%":typeof Uint8Array>"u"?ze:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?ze:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?ze:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?ze:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?ze:WeakMap,"%WeakRef%":typeof WeakRef>"u"?ze:WeakRef,"%WeakSet%":typeof WeakSet>"u"?ze:WeakSet};if(On)try{null.error}catch(e){var kge=On(On(e));Jl["%Error.prototype%"]=kge}var Pge=function e(t){var n;if(t==="%AsyncFunction%")n=g2("async function () {}");else if(t==="%GeneratorFunction%")n=g2("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=g2("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&On&&(n=On(i.prototype))}return Jl[t]=n,n},N8={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},pg=fF,tv=Cge,Oge=pg.call(Function.call,Array.prototype.concat),Rge=pg.call(Function.apply,Array.prototype.splice),D8=pg.call(Function.call,String.prototype.replace),nv=pg.call(Function.call,String.prototype.slice),Ige=pg.call(Function.call,RegExp.prototype.exec),Mge=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Nge=/\\(\\)?/g,Dge=function(t){var n=nv(t,0,1),r=nv(t,-1);if(n==="%"&&r!=="%")throw new xd("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new xd("invalid intrinsic syntax, expected opening `%`");var i=[];return D8(t,Mge,function(o,s,a,l){i[i.length]=a?D8(l,Nge,"$1"):s||o}),i},Lge=function(t,n){var r=t,i;if(tv(N8,r)&&(i=N8[r],r="%"+i[0]+"%"),tv(Jl,r)){var o=Jl[r];if(o===cc&&(o=Pge(r)),typeof o>"u"&&!n)throw new Xc("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new xd("intrinsic "+t+" does not exist!")},$ge=function(t,n){if(typeof t!="string"||t.length===0)throw new Xc("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new Xc('"allowMissing" argument must be a boolean');if(Ige(/^%?[^%]*%?$/,t)===null)throw new xd("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=Dge(t),i=r.length>0?r[0]:"",o=Lge("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],Rge(r,Oge([0,1],u)));for(var c=1,d=!0;c=r.length){var m=Ql(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=tv(a,f),a=a[f];d&&!l&&(Jl[s]=a)}}return a},Fge=$ge,qx=Fge("%Object.defineProperty%",!0),Kx=function(){if(qx)try{return qx({},"a",{value:1}),!0}catch{return!1}return!1};Kx.hasArrayLengthDefineBug=function(){if(!Kx())return null;try{return qx([],"length",{value:1}).length!==1}catch{return!0}};var Bge=Kx,zge=fge,Uge=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",jge=Object.prototype.toString,Vge=Array.prototype.concat,pF=Object.defineProperty,Gge=function(e){return typeof e=="function"&&jge.call(e)==="[object Function]"},Hge=Bge(),gF=pF&&Hge,Wge=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!Gge(r)||!r())return}gF?pF(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},mF=function(e,t){var n=arguments.length>2?arguments[2]:{},r=zge(t);Uge&&(r=Vge.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i":return t>e;case":<":return t=":return t>=e;case":<=":return t<=e;default:throw new Error("Unimplemented comparison operator: ".concat(n))}};e_.testComparisonRange=hme;var t_={};Object.defineProperty(t_,"__esModule",{value:!0});t_.testRange=void 0;var pme=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};t_.testRange=pme;(function(e){var t=De&&De.__assign||function(){return t=Object.assign||function(c){for(var d,f=1,h=arguments.length;f0?{path:l.path,query:new RegExp("("+l.keywords.map(function(u){return(0,yme.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};n_.highlight=_me;var r_={},xF={exports:{}};(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(De,function(){function t(u,c,d){return this.id=++t.highestId,this.name=u,this.symbols=c,this.postprocess=d,this}t.highestId=0,t.prototype.toString=function(u){var c=typeof u>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,u).map(l).join(" ")+" ● "+this.symbols.slice(u).map(l).join(" ");return this.name+" → "+c};function n(u,c,d,f){this.rule=u,this.dot=c,this.reference=d,this.data=[],this.wantedBy=f,this.isComplete=this.dot===u.symbols.length}n.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},n.prototype.nextState=function(u){var c=new n(this.rule,this.dot+1,this.reference,this.wantedBy);return c.left=this,c.right=u,c.isComplete&&(c.data=c.build(),c.right=void 0),c},n.prototype.build=function(){var u=[],c=this;do u.push(c.right.data),c=c.left;while(c.left);return u.reverse(),u},n.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,s.fail))};function r(u,c){this.grammar=u,this.index=c,this.states=[],this.wants={},this.scannable=[],this.completed={}}r.prototype.process=function(u){for(var c=this.states,d=this.wants,f=this.completed,h=0;h0&&c.push(" ^ "+f+" more lines identical to this"),f=0,c.push(" "+m)),d=m}},s.prototype.getSymbolDisplay=function(u){return a(u)},s.prototype.buildFirstStateStack=function(u,c){if(c.indexOf(u)!==-1)return null;if(u.wantedBy.length===0)return[u];var d=u.wantedBy[0],f=[u].concat(c),h=this.buildFirstStateStack(d,f);return h===null?null:[u].concat(h)},s.prototype.save=function(){var u=this.table[this.current];return u.lexerState=this.lexerState,u},s.prototype.restore=function(u){var c=u.index;this.current=c,this.table[c]=u,this.table.splice(c+1),this.lexerState=u.lexerState,this.results=this.finish()},s.prototype.rewind=function(u){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[u])},s.prototype.finish=function(){var u=[],c=this.grammar.start,d=this.table[this.table.length-1];return d.states.forEach(function(f){f.rule.name===c&&f.dot===f.rule.symbols.length&&f.reference===0&&f.data!==s.fail&&u.push(f)}),u.map(function(f){return f.data})};function a(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return"character matching "+u;if(u.type)return u.type+" token";if(u.test)return"token matching "+String(u.test);throw new Error("Unknown symbol type: "+u)}}function l(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return u.toString();if(u.type)return"%"+u.type;if(u.test)return"<"+String(u.test)+">";throw new Error("Unknown symbol type: "+u)}}return{Parser:s,Grammar:i,Rule:t}})})(xF);var bme=xF.exports,hu={},CF={},ll={};ll.__esModule=void 0;ll.__esModule=!0;var Sme=typeof Object.setPrototypeOf=="function",wme=typeof Object.getPrototypeOf=="function",xme=typeof Object.defineProperty=="function",Cme=typeof Object.create=="function",Eme=typeof Object.prototype.hasOwnProperty=="function",Tme=function(t,n){Sme?Object.setPrototypeOf(t,n):t.__proto__=n};ll.setPrototypeOf=Tme;var Ame=function(t){return wme?Object.getPrototypeOf(t):t.__proto__||t.prototype};ll.getPrototypeOf=Ame;var L8=!1,kme=function e(t,n,r){if(xme&&!L8)try{Object.defineProperty(t,n,r)}catch{L8=!0,e(t,n,r)}else t[n]=r.value};ll.defineProperty=kme;var EF=function(t,n){return Eme?t.hasOwnProperty(t,n):t[n]===void 0};ll.hasOwnProperty=EF;var Pme=function(t,n){if(Cme)return Object.create(t,n);var r=function(){};r.prototype=t;var i=new r;if(typeof n>"u")return i;if(typeof n=="null")throw new Error("PropertyDescriptors must not be null.");if(typeof n=="object")for(var o in n)EF(n,o)&&(i[o]=n[o].value);return i};ll.objectCreate=Pme;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=ll,n=t.setPrototypeOf,r=t.getPrototypeOf,i=t.defineProperty,o=t.objectCreate,s=new Error().toString()==="[object Error]",a="";function l(u){var c=this.constructor,d=c.name||function(){var b=c.toString().match(/^function\s*([^\s(]+)/);return b===null?a||"Error":b[1]}(),f=d==="Error",h=f?a:d,p=Error.apply(this,arguments);if(n(p,r(this)),!(p instanceof c)||!(p instanceof l)){var p=this;Error.apply(this,arguments),i(p,"message",{configurable:!0,enumerable:!1,value:u,writable:!0})}if(i(p,"name",{configurable:!0,enumerable:!1,value:h,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(p,f?l:c),p.stack===void 0){var m=new Error(u);m.name=p.name,p.stack=m.stack}return s&&i(p,"toString",{configurable:!0,enumerable:!1,value:function(){return(this.name||"Error")+(typeof this.message>"u"?"":": "+this.message)},writable:!0}),p}a=l.name||"ExtendableError",l.prototype=o(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),e.ExtendableError=l,e.default=e.ExtendableError})(CF);var TF=De&&De.__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){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(hu,"__esModule",{value:!0});hu.SyntaxError=hu.LiqeError=void 0;var Ome=CF,AF=function(e){TF(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(Ome.ExtendableError);hu.LiqeError=AF;var Rme=function(e){TF(t,e);function t(n,r,i,o){var s=e.call(this,n)||this;return s.message=n,s.offset=r,s.line=i,s.column=o,s}return t}(AF);hu.SyntaxError=Rme;var hE={},rv=De&&De.__assign||function(){return rv=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$2"]},{name:"comparison_operator$subexpression$1$string$3",symbols:[{literal:":"},{literal:"<"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$3"]},{name:"comparison_operator$subexpression$1$string$4",symbols:[{literal:":"},{literal:">"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$4"]},{name:"comparison_operator$subexpression$1$string$5",symbols:[{literal:":"},{literal:"<"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$5"]},{name:"comparison_operator",symbols:["comparison_operator$subexpression$1"],postprocess:function(e,t){return{location:{start:t,end:t+e[0][0].length},type:"ComparisonOperator",operator:e[0][0]}}},{name:"regex",symbols:["regex_body","regex_flags"],postprocess:function(e){return e.join("")}},{name:"regex_body$ebnf$1",symbols:[]},{name:"regex_body$ebnf$1",symbols:["regex_body$ebnf$1","regex_body_char"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_body",symbols:[{literal:"/"},"regex_body$ebnf$1",{literal:"/"}],postprocess:function(e){return"/"+e[1].join("")+"/"}},{name:"regex_body_char",symbols:[/[^\\]/],postprocess:ss},{name:"regex_body_char",symbols:[{literal:"\\"},/[^\\]/],postprocess:function(e){return"\\"+e[1]}},{name:"regex_flags",symbols:[]},{name:"regex_flags$ebnf$1",symbols:[/[gmiyusd]/]},{name:"regex_flags$ebnf$1",symbols:["regex_flags$ebnf$1",/[gmiyusd]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_flags",symbols:["regex_flags$ebnf$1"],postprocess:function(e){return e[0].join("")}},{name:"unquoted_value$ebnf$1",symbols:[]},{name:"unquoted_value$ebnf$1",symbols:["unquoted_value$ebnf$1",/[a-zA-Z\.\-_*@#$]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"unquoted_value",symbols:[/[a-zA-Z_*@#$]/,"unquoted_value$ebnf$1"],postprocess:function(e){return e[0]+e[1].join("")}}],ParserStart:"main"};hE.default=Ime;var kF={},i_={},yg={};Object.defineProperty(yg,"__esModule",{value:!0});yg.isSafePath=void 0;var Mme=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,Nme=function(e){return Mme.test(e)};yg.isSafePath=Nme;Object.defineProperty(i_,"__esModule",{value:!0});i_.createGetValueFunctionBody=void 0;var Dme=yg,Lme=function(e){if(!(0,Dme.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};i_.createGetValueFunctionBody=Lme;(function(e){var t=De&&De.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,l=arguments.length;a\d+) col (?\d+)/,jme=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new OF.default.Parser(zme),n;try{n=t.feed(e).results}catch(o){if(typeof(o==null?void 0:o.message)=="string"&&typeof(o==null?void 0:o.offset)=="number"){var r=o.message.match(Ume);throw r?new $me.SyntaxError("Syntax error at line ".concat(r.groups.line," column ").concat(r.groups.column),o.offset,Number(r.groups.line),Number(r.groups.column)):o}throw o}if(n.length===0)throw new Error("Found no parsings.");if(n.length>1)throw new Error("Ambiguous results.");var i=(0,Bme.hydrateAst)(n[0]);return i};r_.parse=jme;var o_={};Object.defineProperty(o_,"__esModule",{value:!0});o_.test=void 0;var Vme=gg,Gme=function(e,t){return(0,Vme.filter)(e,[t]).length===1};o_.test=Gme;var RF={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.serialize=void 0;var t=function(o,s){return s==="double"?'"'.concat(o,'"'):s==="single"?"'".concat(o,"'"):o},n=function(o){if(o.type==="LiteralExpression")return o.quoted&&typeof o.value=="string"?t(o.value,o.quotes):String(o.value);if(o.type==="RegexExpression")return String(o.value);if(o.type==="RangeExpression"){var s=o.range,a=s.min,l=s.max,u=s.minInclusive,c=s.maxInclusive;return"".concat(u?"[":"{").concat(a," TO ").concat(l).concat(c?"]":"}")}if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")},r=function(o){if(o.type!=="Tag")throw new Error("Expected a tag expression.");var s=o.field,a=o.expression,l=o.operator;if(s.type==="ImplicitField")return n(a);var u=s.quoted?t(s.name,s.quotes):s.name,c=" ".repeat(a.location.start-l.location.end);return u+l.operator+c+n(a)},i=function(o){if(o.type==="ParenthesizedExpression"){if(!("location"in o.expression))throw new Error("Expected location in expression.");if(!o.location.end)throw new Error("Expected location end.");var s=" ".repeat(o.expression.location.start-(o.location.start+1)),a=" ".repeat(o.location.end-o.expression.location.end-1);return"(".concat(s).concat((0,e.serialize)(o.expression)).concat(a,")")}if(o.type==="Tag")return r(o);if(o.type==="LogicalExpression"){var l="";return o.operator.type==="BooleanOperator"?(l+=" ".repeat(o.operator.location.start-o.left.location.end),l+=o.operator.operator,l+=" ".repeat(o.right.location.start-o.operator.location.end)):l=" ".repeat(o.right.location.start-o.left.location.end),"".concat((0,e.serialize)(o.left)).concat(l).concat((0,e.serialize)(o.right))}if(o.type==="UnaryOperator")return(o.operator==="NOT"?"NOT ":o.operator)+(0,e.serialize)(o.operand);if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")};e.serialize=i})(RF);var s_={};Object.defineProperty(s_,"__esModule",{value:!0});s_.isSafeUnquotedExpression=void 0;var Hme=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};s_.isSafeUnquotedExpression=Hme;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isSafeUnquotedExpression=e.serialize=e.SyntaxError=e.LiqeError=e.test=e.parse=e.highlight=e.filter=void 0;var t=gg;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=n_;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=r_;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=o_;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=hu;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=RF;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=s_;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(wF);var vg={},IF={},pu={};Object.defineProperty(pu,"__esModule",{value:!0});pu.ROARR_LOG_FORMAT_VERSION=pu.ROARR_VERSION=void 0;pu.ROARR_VERSION="5.0.0";pu.ROARR_LOG_FORMAT_VERSION="2.0.0";var _g={};Object.defineProperty(_g,"__esModule",{value:!0});_g.logLevels=void 0;_g.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var MF={},a_={};Object.defineProperty(a_,"__esModule",{value:!0});a_.hasOwnProperty=void 0;const Wme=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);a_.hasOwnProperty=Wme;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=a_;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(MF);var NF={},l_={},u_={};Object.defineProperty(u_,"__esModule",{value:!0});u_.tokenize=void 0;const qme=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,Kme=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=qme.exec(e))!==null;){t.index>i&&(o={literal:e.slice(i,t.index),type:"literal"},n.push(o));const s=t[0];i=t.index+s.length,s==="\\%"||s==="%%"?o&&o.type==="literal"?o.literal+="%":(o={literal:"%",type:"literal"},n.push(o)):t.groups&&(o={conversion:t.groups.conversion,flag:t.groups.flag||null,placeholder:s,position:t.groups.position?Number.parseInt(t.groups.position,10)-1:r++,precision:t.groups.precision?Number.parseInt(t.groups.precision.slice(1),10):null,type:"placeholder",width:t.groups.width?Number.parseInt(t.groups.width,10):null},n.push(o))}return i<=e.length-1&&(o&&o.type==="literal"?o.literal+=e.slice(i):n.push({literal:e.slice(i),type:"literal"})),n};u_.tokenize=Kme;Object.defineProperty(l_,"__esModule",{value:!0});l_.createPrintf=void 0;const $8=cE,Xme=u_,Yme=(e,t)=>t.placeholder,Zme=e=>{var t;const n=(o,s,a)=>a==="-"?o.padEnd(s," "):a==="-+"?((Number(o)>=0?"+":"")+o).padEnd(s," "):a==="+"?((Number(o)>=0?"+":"")+o).padStart(s," "):a==="0"?o.padStart(s,"0"):o.padStart(s," "),r=(t=e==null?void 0:e.formatUnboundExpression)!==null&&t!==void 0?t:Yme,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=Xme.tokenize(o));let l="";for(const u of a)if(u.type==="literal")l+=u.literal;else{let c=s[u.position];if(c===void 0)l+=r(o,u,s);else if(u.conversion==="b")l+=$8.boolean(c)?"true":"false";else if(u.conversion==="B")l+=$8.boolean(c)?"TRUE":"FALSE";else if(u.conversion==="c")l+=c;else if(u.conversion==="C")l+=String(c).toUpperCase();else if(u.conversion==="i"||u.conversion==="d")c=String(Math.trunc(c)),u.width!==null&&(c=n(c,u.width,u.flag)),l+=c;else if(u.conversion==="e")l+=Number(c).toExponential();else if(u.conversion==="E")l+=Number(c).toExponential().toUpperCase();else if(u.conversion==="f")u.precision!==null&&(c=Number(c).toFixed(u.precision)),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="o")l+=(Number.parseInt(String(c),10)>>>0).toString(8);else if(u.conversion==="s")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="S")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=String(c).toUpperCase();else if(u.conversion==="u")l+=Number.parseInt(String(c),10)>>>0;else if(u.conversion==="x")c=(Number.parseInt(String(c),10)>>>0).toString(16),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else throw new Error("Unknown format specifier.")}return l}};l_.createPrintf=Zme;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=l_;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(NF);var Xx={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=b();r.configure=b,r.stringify=r,r.default=r,t.stringify=r,t.configure=b,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function o(_){return _.length<5e3&&!i.test(_)?`"${_}"`:JSON.stringify(_)}function s(_){if(_.length>200)return _.sort();for(let y=1;y<_.length;y++){const g=_[y];let v=y;for(;v!==0&&_[v-1]>g;)_[v]=_[v-1],v--;_[v]=g}return _}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(_){return a.call(_)!==void 0&&_.length!==0}function u(_,y,g){_.length= 1`)}return g===void 0?1/0:g}function h(_){return _===1?"1 item":`${_} items`}function p(_){const y=new Set;for(const g of _)(typeof g=="string"||typeof g=="number")&&y.add(String(g));return y}function m(_){if(n.call(_,"strict")){const y=_.strict;if(typeof y!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(y)return g=>{let v=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(v+=` (${g.toString()})`),new Error(v)}}}function b(_){_={..._};const y=m(_);y&&(_.bigint===void 0&&(_.bigint=!1),"circularValue"in _||(_.circularValue=Error));const g=c(_),v=d(_,"bigint"),S=d(_,"deterministic"),w=f(_,"maximumDepth"),C=f(_,"maximumBreadth");function x(R,E,k,N,$,M){let O=E[R];switch(typeof O=="object"&&O!==null&&typeof O.toJSON=="function"&&(O=O.toJSON(R)),O=N.call(E,R,O),typeof O){case"string":return o(O);case"object":{if(O===null)return"null";if(k.indexOf(O)!==-1)return g;let D="",F=",";const U=M;if(Array.isArray(O)){if(O.length===0)return"[]";if(wC){const se=O.length-C-1;D+=`${F}"... ${h(se)} not stringified"`}return $!==""&&(D+=` -${U}`),k.pop(),`[${D}]`}let V=Object.keys(O);const q=V.length;if(q===0)return"{}";if(wC){const W=q-C;D+=`${Z}"...":${X}"${h(W)} not stringified"`,Z=F}return $!==""&&Z.length>1&&(D=` -${M}${D} -${U}`),k.pop(),`{${D}}`}case"number":return isFinite(O)?String(O):y?y(O):"null";case"boolean":return O===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(O);default:return y?y(O):void 0}}function A(R,E,k,N,$,M){switch(typeof E=="object"&&E!==null&&typeof E.toJSON=="function"&&(E=E.toJSON(R)),typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(k.indexOf(E)!==-1)return g;const O=M;let D="",F=",";if(Array.isArray(E)){if(E.length===0)return"[]";if(wC){const z=E.length-C-1;D+=`${F}"... ${h(z)} not stringified"`}return $!==""&&(D+=` -${O}`),k.pop(),`[${D}]`}k.push(E);let U="";$!==""&&(M+=$,F=`, -${M}`,U=" ");let V="";for(const q of N){const X=A(q,E[q],k,N,$,M);X!==void 0&&(D+=`${V}${o(q)}:${U}${X}`,V=F)}return $!==""&&V.length>1&&(D=` -${M}${D} -${O}`),k.pop(),`{${D}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function T(R,E,k,N,$){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(R),typeof E!="object")return T(R,E,k,N,$);if(E===null)return"null"}if(k.indexOf(E)!==-1)return g;const M=$;if(Array.isArray(E)){if(E.length===0)return"[]";if(wC){const J=E.length-C-1;X+=`${Z}"... ${h(J)} not stringified"`}return X+=` -${M}`,k.pop(),`[${X}]`}let O=Object.keys(E);const D=O.length;if(D===0)return"{}";if(wC){const X=D-C;U+=`${V}"...": "${h(X)} not stringified"`,V=F}return V!==""&&(U=` -${$}${U} -${M}`),k.pop(),`{${U}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function P(R,E,k){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(R),typeof E!="object")return P(R,E,k);if(E===null)return"null"}if(k.indexOf(E)!==-1)return g;let N="";if(Array.isArray(E)){if(E.length===0)return"[]";if(wC){const q=E.length-C-1;N+=`,"... ${h(q)} not stringified"`}return k.pop(),`[${N}]`}let $=Object.keys(E);const M=$.length;if(M===0)return"{}";if(wC){const F=M-C;N+=`${O}"...":"${h(F)} not stringified"`}return k.pop(),`{${N}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function L(R,E,k){if(arguments.length>1){let N="";if(typeof k=="number"?N=" ".repeat(Math.min(k,10)):typeof k=="string"&&(N=k.slice(0,10)),E!=null){if(typeof E=="function")return x("",{"":R},[],E,N,"");if(Array.isArray(E))return A("",R,[],p(E),N,"")}if(N.length!==0)return T("",R,[],N,"")}return P("",R,[])}return L}})(Xx,Xx.exports);var Qme=Xx.exports;(function(e){var t=De&&De.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.createLogger=void 0;const n=pu,r=_g,i=MF,o=NF,s=t(dE),a=t(Qme);let l=!1;const u=(0,s.default)(),c=()=>u.ROARR,d=()=>({messageContext:{},transforms:[]}),f=()=>{const g=c().asyncLocalStorage;if(!g)throw new Error("AsyncLocalContext is unavailable.");const v=g.getStore();return v||d()},h=()=>!!c().asyncLocalStorage,p=()=>{if(h()){const g=f();return(0,i.hasOwnProperty)(g,"sequenceRoot")&&(0,i.hasOwnProperty)(g,"sequence")&&typeof g.sequence=="number"?String(g.sequenceRoot)+"."+String(g.sequence++):String(c().sequence++)}return String(c().sequence++)},m=(g,v)=>(S,w,C,x,A,T,P,L,R,E)=>{g.child({logLevel:v})(S,w,C,x,A,T,P,L,R,E)},b=1e3,_=(g,v)=>(S,w,C,x,A,T,P,L,R,E)=>{const k=(0,a.default)({a:S,b:w,c:C,d:x,e:A,f:T,g:P,h:L,i:R,j:E,logLevel:v});if(!k)throw new Error("Expected key to be a string");const N=c().onceLog;N.has(k)||(N.add(k),N.size>b&&N.clear(),g.child({logLevel:v})(S,w,C,x,A,T,P,L,R,E))},y=(g,v={},S=[])=>{const w=(C,x,A,T,P,L,R,E,k,N)=>{const $=Date.now(),M=p();let O;h()?O=f():O=d();let D,F;if(typeof C=="string"?D={...O.messageContext,...v}:D={...O.messageContext,...v,...C},typeof C=="string"&&x===void 0)F=C;else if(typeof C=="string"){if(!C.includes("%"))throw new Error("When a string parameter is followed by other arguments, then it is assumed that you are attempting to format a message using printf syntax. You either forgot to add printf bindings or if you meant to add context to the log message, pass them in an object as the first parameter.");F=(0,o.printf)(C,x,A,T,P,L,R,E,k,N)}else{let V=x;if(typeof x!="string")if(x===void 0)V="";else throw new TypeError("Message must be a string. Received "+typeof x+".");F=(0,o.printf)(V,A,T,P,L,R,E,k,N)}let U={context:D,message:F,sequence:M,time:$,version:n.ROARR_LOG_FORMAT_VERSION};for(const V of[...O.transforms,...S])if(U=V(U),typeof U!="object"||U===null)throw new Error("Message transform function must return a message object.");g(U)};return w.child=C=>{let x;return h()?x=f():x=d(),typeof C=="function"?(0,e.createLogger)(g,{...x.messageContext,...v,...C},[C,...S]):(0,e.createLogger)(g,{...x.messageContext,...v,...C},S)},w.getContext=()=>{let C;return h()?C=f():C=d(),{...C.messageContext,...v}},w.adopt=async(C,x)=>{if(!h())return l===!1&&(l=!0,g({context:{logLevel:r.logLevels.warn,package:"roarr"},message:"async_hooks are unavailable; Roarr.adopt will not function as expected",sequence:p(),time:Date.now(),version:n.ROARR_LOG_FORMAT_VERSION})),C();const A=f();let T;(0,i.hasOwnProperty)(A,"sequenceRoot")&&(0,i.hasOwnProperty)(A,"sequence")&&typeof A.sequence=="number"?T=A.sequenceRoot+"."+String(A.sequence++):T=String(c().sequence++);let P={...A.messageContext};const L=[...A.transforms];typeof x=="function"?L.push(x):P={...P,...x};const R=c().asyncLocalStorage;if(!R)throw new Error("Async local context unavailable.");return R.run({messageContext:P,sequence:0,sequenceRoot:T,transforms:L},()=>C())},w.debug=m(w,r.logLevels.debug),w.debugOnce=_(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=_(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=_(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=_(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=_(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=_(w,r.logLevels.warn),w};e.createLogger=y})(IF);var c_={},Jme=function(t,n){for(var r=t.split("."),i=n.split("."),o=0;o<3;o++){var s=Number(r[o]),a=Number(i[o]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0},e0e=De&&De.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(c_,"__esModule",{value:!0});c_.createRoarrInitialGlobalStateBrowser=void 0;const F8=pu,B8=e0e(Jme),t0e=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(B8.default),t.includes(F8.ROARR_VERSION)||t.push(F8.ROARR_VERSION),t.sort(B8.default),{sequence:0,...e,versions:t}};c_.createRoarrInitialGlobalStateBrowser=t0e;var d_={};Object.defineProperty(d_,"__esModule",{value:!0});d_.getLogLevelName=void 0;const n0e=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";d_.getLogLevelName=n0e;(function(e){var t=De&&De.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.getLogLevelName=e.logLevels=e.Roarr=e.ROARR=void 0;const n=IF,r=c_,o=(0,t(dE).default)(),s=(0,r.createRoarrInitialGlobalStateBrowser)(o.ROARR||{});e.ROARR=s,o.ROARR=s;const a=d=>JSON.stringify(d),l=(0,n.createLogger)(d=>{var f;s.write&&s.write(((f=s.serializeMessage)!==null&&f!==void 0?f:a)(d))});e.Roarr=l;var u=_g;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=d_;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(vg);var r0e=De&&De.__rest||function(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);i0?h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message," %O"),m,b,_,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,b,_)}}};q1.createLogWriter=f0e;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=q1;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(cF);vg.ROARR.write=cF.createLogWriter();const LF={};vg.Roarr.child(LF);const f_=ig(vg.Roarr.child(LF)),re=e=>f_.get().child({namespace:e}),qRe=["trace","debug","info","warn","error","fatal"],KRe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},h0e=()=>{le({actionCreator:ene,effect:async(e,{dispatch:t,getState:n})=>{const r=re("canvas"),i=n(),{sessionId:o,isProcessing:s}=i.system,a=e.payload;if(s){if(!a){r.debug("No canvas session, skipping cancel");return}if(a!==o){r.debug({canvasSessionId:a,session_id:o},"Canvas session does not match global session, skipping cancel");return}t(al({session_id:o}))}}})};me("app/appStarted");const p0e=()=>{le({matcher:ne.endpoints.listImages.matchFulfilled,effect:async(e,{dispatch:t,unsubscribe:n,cancelActiveListeners:r})=>{if(e.meta.arg.queryCacheKey!==Zr({board_id:"none",categories:Pn}))return;r(),n();const i=e.payload;if(i.ids.length>0){const o=Tt.getSelectors().selectAll(i)[0];t(jo(o??null))}}})},pE=Ka.injectEndpoints({endpoints:e=>({getAppVersion:e.query({query:()=>({url:"app/version",method:"GET"}),providesTags:["AppVersion"],keepUnusedDataFor:864e5}),getAppConfig:e.query({query:()=>({url:"app/config",method:"GET"}),providesTags:["AppConfig"],keepUnusedDataFor:864e5})})}),{useGetAppVersionQuery:XRe,useGetAppConfigQuery:YRe}=pE,g0e=()=>{le({matcher:pE.endpoints.getAppConfig.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const{infill_methods:r=[],nsfw_methods:i=[],watermarking_methods:o=[]}=e.payload,s=t().generation.infillMethod;r.includes(s)||n(Rte(r[0])),i.includes("nsfw_checker")||n(lpe(!1)),o.includes("invisible_watermark")||n(upe(!1))}})},m0e=me("app/appStarted"),y0e=()=>{le({actionCreator:m0e,effect:async(e,{unsubscribe:t,cancelActiveListeners:n})=>{n(),t()}})},gE={memoizeOptions:{resultEqualityCheck:ng}},$F=(e,t)=>{var d;const{generation:n,canvas:r,nodes:i,controlNet:o}=e,s=((d=n.initialImage)==null?void 0:d.imageName)===t,a=r.layerState.objects.some(f=>f.kind==="image"&&f.imageName===t),l=i.nodes.filter(An).some(f=>nh(f.data.inputs,h=>{var p;return h.type==="ImageField"&&((p=h.value)==null?void 0:p.image_name)===t})),u=nh(o.controlNets,f=>f.controlImage===t||f.processedControlImage===t);return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u}},v0e=fr([e=>e],e=>{const{imagesToDelete:t}=e.deleteImageModal;return t.length?t.map(r=>$F(e,r.image_name)):[]},gE),_0e=()=>{le({matcher:ne.endpoints.deleteBoardAndImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{deleted_images:r}=e.payload;let i=!1,o=!1,s=!1,a=!1;const l=n();r.forEach(u=>{const c=$F(l,u);c.isInitialImage&&!i&&(t(m5()),i=!0),c.isCanvasImage&&!o&&(t(y5()),o=!0),c.isNodesImage&&!s&&(t(Mhe()),s=!0),c.isControlNetImage&&!a&&(t(Vae()),a=!0)})}})},b0e=()=>{le({matcher:Ni(Ax,Fy),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=Ax.match(e)?e.payload:o.gallery.selectedBoardId,l=(Fy.match(e)?e.payload:o.gallery.galleryView)==="images"?Pn:_a,u={board_id:s??"none",categories:l};if(await r(()=>ne.endpoints.listImages.select(u)(t()).isSuccess,5e3)){const{data:d}=ne.endpoints.listImages.select(u)(t());if(d){const f=$y.selectAll(d)[0];n(jo(f??null))}else n(jo(null))}else n(jo(null))}})},S0e=me("canvas/canvasSavedToGallery"),w0e=me("canvas/canvasMaskSavedToGallery"),x0e=me("canvas/canvasCopiedToClipboard"),C0e=me("canvas/canvasDownloadedAsImage"),E0e=me("canvas/canvasMerged"),T0e=me("canvas/stagingAreaImageSaved"),A0e=me("canvas/canvasMaskToControlNet"),k0e=me("canvas/canvasImageToControlNet");let FF=null,BF=null;const ZRe=e=>{FF=e},h_=()=>FF,QRe=e=>{BF=e},P0e=()=>BF,O0e=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),iv=async(e,t)=>await O0e(e.toCanvas(t)),p_=async e=>{const t=h_();if(!t)return;const{shouldCropToBoundingBoxOnSave:n,boundingBoxCoordinates:r,boundingBoxDimensions:i}=e.canvas,o=t.clone();o.scale({x:1,y:1});const s=o.getAbsolutePosition(),a=n?{x:r.x+s.x,y:r.y+s.y,width:i.width,height:i.height}:o.getClientRect();return iv(o,a)},R0e=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},I0e=()=>{le({actionCreator:x0e,effect:async(e,{dispatch:t,getState:n})=>{const r=f_.get().child({namespace:"canvasCopiedToClipboardListener"}),i=n(),o=await p_(i);if(!o){r.error("Problem getting base layer blob"),t(Wt({title:"Problem Copying Canvas",description:"Unable to export base layer",status:"error"}));return}R0e(o),t(Wt({title:"Canvas Copied to Clipboard",status:"success"}))}})},M0e=(e,t)=>{const n=URL.createObjectURL(e),r=document.createElement("a");r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),r.remove()},N0e=()=>{le({actionCreator:C0e,effect:async(e,{dispatch:t,getState:n})=>{const r=f_.get().child({namespace:"canvasSavedToGalleryListener"}),i=n(),o=await p_(i);if(!o){r.error("Problem getting base layer blob"),t(Wt({title:"Problem Downloading Canvas",description:"Unable to export base layer",status:"error"}));return}M0e(o,"canvas.png"),t(Wt({title:"Canvas Downloaded",status:"success"}))}})},D0e=()=>{le({actionCreator:k0e,effect:async(e,{dispatch:t,getState:n})=>{const r=re("canvas"),i=n(),o=await p_(i);if(!o){r.error("Problem getting base layer blob"),t(Wt({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}const{autoAddBoardId:s}=i.gallery,a=await t(ne.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Sent to ControlNet & Assets"}}})).unwrap(),{image_name:l}=a;t(Eu({controlNetId:e.payload.controlNet.controlNetId,controlImage:l}))}})};var mE={exports:{}},g_={},zF={},Le={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e._registerNode=e.Konva=e.glob=void 0;var t=Math.PI/180;function n(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}e.glob=typeof De<"u"?De:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},e.Konva={_global:e.glob,version:"9.2.0",isBrowser:n(),isUnminified:/param/.test((function(i){}).toString()),dblClickWindow:400,getAngle(i){return e.Konva.angleDeg?i*t:i},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 e.Konva.DD.isDragging},isDragReady(){return!!e.Konva.DD.node},releaseCanvasOnDestroy:!0,document:e.glob.document,_injectGlobal(i){e.glob.Konva=i}};const r=i=>{e.Konva[i.prototype.getClassName()]=i};e._registerNode=r,e.Konva._injectGlobal(e.Konva)})(Le);var Yt={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=Le;class n{constructor(v=[1,0,0,1,0,0]){this.dirty=!1,this.m=v&&v.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 n(this.m)}copyInto(v){v.m[0]=this.m[0],v.m[1]=this.m[1],v.m[2]=this.m[2],v.m[3]=this.m[3],v.m[4]=this.m[4],v.m[5]=this.m[5]}point(v){var S=this.m;return{x:S[0]*v.x+S[2]*v.y+S[4],y:S[1]*v.x+S[3]*v.y+S[5]}}translate(v,S){return this.m[4]+=this.m[0]*v+this.m[2]*S,this.m[5]+=this.m[1]*v+this.m[3]*S,this}scale(v,S){return this.m[0]*=v,this.m[1]*=v,this.m[2]*=S,this.m[3]*=S,this}rotate(v){var S=Math.cos(v),w=Math.sin(v),C=this.m[0]*S+this.m[2]*w,x=this.m[1]*S+this.m[3]*w,A=this.m[0]*-w+this.m[2]*S,T=this.m[1]*-w+this.m[3]*S;return this.m[0]=C,this.m[1]=x,this.m[2]=A,this.m[3]=T,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(v,S){var w=this.m[0]+this.m[2]*S,C=this.m[1]+this.m[3]*S,x=this.m[2]+this.m[0]*v,A=this.m[3]+this.m[1]*v;return this.m[0]=w,this.m[1]=C,this.m[2]=x,this.m[3]=A,this}multiply(v){var S=this.m[0]*v.m[0]+this.m[2]*v.m[1],w=this.m[1]*v.m[0]+this.m[3]*v.m[1],C=this.m[0]*v.m[2]+this.m[2]*v.m[3],x=this.m[1]*v.m[2]+this.m[3]*v.m[3],A=this.m[0]*v.m[4]+this.m[2]*v.m[5]+this.m[4],T=this.m[1]*v.m[4]+this.m[3]*v.m[5]+this.m[5];return this.m[0]=S,this.m[1]=w,this.m[2]=C,this.m[3]=x,this.m[4]=A,this.m[5]=T,this}invert(){var v=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),S=this.m[3]*v,w=-this.m[1]*v,C=-this.m[2]*v,x=this.m[0]*v,A=v*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),T=v*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=S,this.m[1]=w,this.m[2]=C,this.m[3]=x,this.m[4]=A,this.m[5]=T,this}getMatrix(){return this.m}decompose(){var v=this.m[0],S=this.m[1],w=this.m[2],C=this.m[3],x=this.m[4],A=this.m[5],T=v*C-S*w;let P={x,y:A,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(v!=0||S!=0){var L=Math.sqrt(v*v+S*S);P.rotation=S>0?Math.acos(v/L):-Math.acos(v/L),P.scaleX=L,P.scaleY=T/L,P.skewX=(v*w+S*C)/T,P.skewY=0}else if(w!=0||C!=0){var R=Math.sqrt(w*w+C*C);P.rotation=Math.PI/2-(C>0?Math.acos(-w/R):-Math.acos(w/R)),P.scaleX=T/R,P.scaleY=R,P.skewX=0,P.skewY=(v*w+S*C)/T}return P.rotation=e.Util._getRotation(P.rotation),P}}e.Transform=n;var r="[object Array]",i="[object Number]",o="[object String]",s="[object Boolean]",a=Math.PI/180,l=180/Math.PI,u="#",c="",d="0",f="Konva warning: ",h="Konva error: ",p="rgb(",m={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]},b=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,_=[];const y=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(g){setTimeout(g,60)};e.Util={_isElement(g){return!!(g&&g.nodeType==1)},_isFunction(g){return!!(g&&g.constructor&&g.call&&g.apply)},_isPlainObject(g){return!!g&&g.constructor===Object},_isArray(g){return Object.prototype.toString.call(g)===r},_isNumber(g){return Object.prototype.toString.call(g)===i&&!isNaN(g)&&isFinite(g)},_isString(g){return Object.prototype.toString.call(g)===o},_isBoolean(g){return Object.prototype.toString.call(g)===s},isObject(g){return g instanceof Object},isValidSelector(g){if(typeof g!="string")return!1;var v=g[0];return v==="#"||v==="."||v===v.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){_.push(g),_.length===1&&y(function(){const v=_;_=[],v.forEach(function(S){S()})})},createCanvasElement(){var g=document.createElement("canvas");try{g.style=g.style||{}}catch{}return g},createImageElement(){return document.createElement("img")},_isInDocument(g){for(;g=g.parentNode;)if(g==document)return!0;return!1},_urlToImage(g,v){var S=e.Util.createImageElement();S.onload=function(){v(S)},S.src=g},_rgbToHex(g,v,S){return((1<<24)+(g<<16)+(v<<8)+S).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var v=parseInt(g,16);return{r:v>>16&255,g:v>>8&255,b:v&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var v;return g in m?(v=m[g],{r:v[0],g:v[1],b:v[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(v=b.exec(g.replace(/ /g,"")),{r:parseInt(v[1],10),g:parseInt(v[2],10),b:parseInt(v[3],10)}):{r:0,g:0,b:0}},colorToRGBA(g){return g=g||"black",e.Util._namedColorToRBA(g)||e.Util._hex3ColorToRGBA(g)||e.Util._hex4ColorToRGBA(g)||e.Util._hex6ColorToRGBA(g)||e.Util._hex8ColorToRGBA(g)||e.Util._rgbColorToRGBA(g)||e.Util._rgbaColorToRGBA(g)||e.Util._hslColorToRGBA(g)},_namedColorToRBA(g){var v=m[g.toLowerCase()];return v?{r:v[0],g:v[1],b:v[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var v=g.split(/ *, */).map(Number);return{r:v[0],g:v[1],b:v[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var v=g.split(/ *, */).map((S,w)=>S.slice(-1)==="%"?w===3?parseInt(S)/100:parseInt(S)/100*255:Number(S));return{r:v[0],g:v[1],b:v[2],a:v[3]}}},_hex8ColorToRGBA(g){if(g[0]==="#"&&g.length===9)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:parseInt(g.slice(7,9),16)/255}},_hex6ColorToRGBA(g){if(g[0]==="#"&&g.length===7)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:1}},_hex4ColorToRGBA(g){if(g[0]==="#"&&g.length===5)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:parseInt(g[4]+g[4],16)/255}},_hex3ColorToRGBA(g){if(g[0]==="#"&&g.length===4)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:1}},_hslColorToRGBA(g){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(g)){const[v,...S]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(S[0])/360,C=Number(S[1])/100,x=Number(S[2])/100;let A,T,P;if(C===0)return P=x*255,{r:Math.round(P),g:Math.round(P),b:Math.round(P),a:1};x<.5?A=x*(1+C):A=x+C-x*C;const L=2*x-A,R=[0,0,0];for(let E=0;E<3;E++)T=w+1/3*-(E-1),T<0&&T++,T>1&&T--,6*T<1?P=L+(A-L)*6*T:2*T<1?P=A:3*T<2?P=L+(A-L)*(2/3-T)*6:P=L,R[E]=P*255;return{r:Math.round(R[0]),g:Math.round(R[1]),b:Math.round(R[2]),a:1}}},haveIntersection(g,v){return!(v.x>g.x+g.width||v.x+v.widthg.y+g.height||v.y+v.height1?(A=S,T=w,P=(S-C)*(S-C)+(w-x)*(w-x)):(A=g+R*(S-g),T=v+R*(w-v),P=(A-C)*(A-C)+(T-x)*(T-x))}return[A,T,P]},_getProjectionToLine(g,v,S){var w=e.Util.cloneObject(g),C=Number.MAX_VALUE;return v.forEach(function(x,A){if(!(!S&&A===v.length-1)){var T=v[(A+1)%v.length],P=e.Util._getProjectionToSegment(x.x,x.y,T.x,T.y,g.x,g.y),L=P[0],R=P[1],E=P[2];Ev.length){var A=v;v=g,g=A}for(w=0;w{v.width=0,v.height=0})},drawRoundedRectPath(g,v,S,w){let C=0,x=0,A=0,T=0;typeof w=="number"?C=x=A=T=Math.min(w,v/2,S/2):(C=Math.min(w[0]||0,v/2,S/2),x=Math.min(w[1]||0,v/2,S/2),T=Math.min(w[2]||0,v/2,S/2),A=Math.min(w[3]||0,v/2,S/2)),g.moveTo(C,0),g.lineTo(v-x,0),g.arc(v-x,x,x,Math.PI*3/2,0,!1),g.lineTo(v,S-T),g.arc(v-T,S-T,T,0,Math.PI/2,!1),g.lineTo(A,S),g.arc(A,S-A,A,Math.PI/2,Math.PI,!1),g.lineTo(0,C),g.arc(C,C,C,Math.PI,Math.PI*3/2,!1)}}})(Yt);var Ut={},Ne={},be={};Object.defineProperty(be,"__esModule",{value:!0});be.getComponentValidator=be.getBooleanValidator=be.getNumberArrayValidator=be.getFunctionValidator=be.getStringOrGradientValidator=be.getStringValidator=be.getNumberOrAutoValidator=be.getNumberOrArrayOfNumbersValidator=be.getNumberValidator=be.alphaComponent=be.RGBComponent=void 0;const Gs=Le,nn=Yt;function Hs(e){return nn.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||nn.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function L0e(e){return e>255?255:e<0?0:Math.round(e)}be.RGBComponent=L0e;function $0e(e){return e>1?1:e<1e-4?1e-4:e}be.alphaComponent=$0e;function F0e(){if(Gs.Konva.isUnminified)return function(e,t){return nn.Util._isNumber(e)||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}be.getNumberValidator=F0e;function B0e(e){if(Gs.Konva.isUnminified)return function(t,n){let r=nn.Util._isNumber(t),i=nn.Util._isArray(t)&&t.length==e;return!r&&!i&&nn.Util.warn(Hs(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}be.getNumberOrArrayOfNumbersValidator=B0e;function z0e(){if(Gs.Konva.isUnminified)return function(e,t){var n=nn.Util._isNumber(e),r=e==="auto";return n||r||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}be.getNumberOrAutoValidator=z0e;function U0e(){if(Gs.Konva.isUnminified)return function(e,t){return nn.Util._isString(e)||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}be.getStringValidator=U0e;function j0e(){if(Gs.Konva.isUnminified)return function(e,t){const n=nn.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}be.getStringOrGradientValidator=j0e;function V0e(){if(Gs.Konva.isUnminified)return function(e,t){return nn.Util._isFunction(e)||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}be.getFunctionValidator=V0e;function G0e(){if(Gs.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(nn.Util._isArray(e)?e.forEach(function(r){nn.Util._isNumber(r)||nn.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}be.getNumberArrayValidator=G0e;function H0e(){if(Gs.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||nn.Util.warn(Hs(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}be.getBooleanValidator=H0e;function W0e(e){if(Gs.Konva.isUnminified)return function(t,n){return t==null||nn.Util.isObject(t)||nn.Util.warn(Hs(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}be.getComponentValidator=W0e;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=Yt,n=be;var r="get",i="set";e.Factory={addGetterSetter(o,s,a,l,u){e.Factory.addGetter(o,s,a),e.Factory.addSetter(o,s,l,u),e.Factory.addOverloadedGetterSetter(o,s)},addGetter(o,s,a){var l=r+t.Util._capitalize(s);o.prototype[l]=o.prototype[l]||function(){var u=this.attrs[s];return u===void 0?a:u}},addSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]||e.Factory.overWriteSetter(o,s,a,l)},overWriteSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]=function(c){return a&&c!==void 0&&c!==null&&(c=a.call(this,c,s)),this._setAttr(s,c),l&&l.call(this),this}},addComponentsGetterSetter(o,s,a,l,u){var c=a.length,d=t.Util._capitalize,f=r+d(s),h=i+d(s),p,m;o.prototype[f]=function(){var _={};for(p=0;p{this._setAttr(s+d(v),void 0)}),this._fireChangeEvent(s,y,_),u&&u.call(this),this},e.Factory.addOverloadedGetterSetter(o,s)},addOverloadedGetterSetter(o,s){var a=t.Util._capitalize(s),l=i+a,u=r+a;o.prototype[s]=function(){return arguments.length?(this[l](arguments[0]),this):this[u]()}},addDeprecatedGetterSetter(o,s,a,l){t.Util.error("Adding deprecated "+s);var u=r+t.Util._capitalize(s),c=s+" property is deprecated and will be removed soon. Look at Konva change log for more information.";o.prototype[u]=function(){t.Util.error(c);var d=this.attrs[s];return d===void 0?a:d},e.Factory.addSetter(o,s,l,function(){t.Util.error(c)}),e.Factory.addOverloadedGetterSetter(o,s)},backCompat(o,s){t.Util.each(s,function(a,l){var u=o.prototype[l],c=r+t.Util._capitalize(a),d=i+t.Util._capitalize(a);function f(){u.apply(this,arguments),t.Util.error('"'+a+'" method is deprecated and will be removed soon. Use ""'+l+'" instead.')}o.prototype[a]=f,o.prototype[c]=f,o.prototype[d]=f})},afterSetFilter(){this._filterUpToDate=!1}}})(Ne);var ao={},As={};Object.defineProperty(As,"__esModule",{value:!0});As.HitContext=As.SceneContext=As.Context=void 0;const UF=Yt,q0e=Le;function K0e(e){var t=[],n=e.length,r=UF.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=X0e+u.join(U8)+Y0e)):(o+=a.property,t||(o+=tye+a.val)),o+=J0e;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=rye&&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){const n=t.attrs.lineCap;n&&this.setAttr("lineCap",n)}_applyOpacity(t){var n=t.getAbsoluteOpacity();n!==1&&this.setAttr("globalAlpha",n)}_applyLineJoin(t){const n=t.attrs.lineJoin;n&&this.setAttr("lineJoin",n)}setAttr(t,n){this._context[t]=n}arc(t,n,r,i,o,s){this._context.arc(t,n,r,i,o,s)}arcTo(t,n,r,i,o){this._context.arcTo(t,n,r,i,o)}beginPath(){this._context.beginPath()}bezierCurveTo(t,n,r,i,o,s){this._context.bezierCurveTo(t,n,r,i,o,s)}clearRect(t,n,r,i){this._context.clearRect(t,n,r,i)}clip(...t){this._context.clip.apply(this._context,t)}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,s){return this._context.createRadialGradient(t,n,r,i,o,s)}drawImage(t,n,r,i,o,s,a,l,u){var c=arguments,d=this._context;c.length===3?d.drawImage(t,n,r):c.length===5?d.drawImage(t,n,r,i,o):c.length===9&&d.drawImage(t,n,r,i,o,s,a,l,u)}ellipse(t,n,r,i,o,s,a,l){this._context.ellipse(t,n,r,i,o,s,a,l)}isPointInPath(t,n,r,i){return r?this._context.isPointInPath(r,t,n,i):this._context.isPointInPath(t,n,i)}fill(...t){this._context.fill.apply(this._context,t)}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,s){this._context.setTransform(t,n,r,i,o,s)}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,s){this._context.transform(t,n,r,i,o,s)}translate(t,n){this._context.translate(t,n)}_enableTrace(){var t=this,n=j8.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=K0e(Array.prototype.slice.call(arguments,0)),u=l.apply(t,arguments),t._trace({method:a,args:o}),u}};for(i=0;i{i.dragStatus==="dragging"&&(r=!0)}),r},justDragged:!1,get node(){var r;return e.DD._dragElements.forEach(i=>{r=i.node}),r},_dragElements:new Map,_drag(r){const i=[];e.DD._dragElements.forEach((o,s)=>{const{node:a}=o,l=a.getStage();l.setPointersPositions(r),o.pointerId===void 0&&(o.pointerId=n.Util._getFirstPointerId(r));const u=l._changedPointerPositions.find(f=>f.id===o.pointerId);if(u){if(o.dragStatus!=="dragging"){var c=a.dragDistance(),d=Math.max(Math.abs(u.x-o.startPointerPos.x),Math.abs(u.y-o.startPointerPos.y));if(d{o.fire("dragmove",{type:"dragmove",target:o,evt:r},!0)})},_endDragBefore(r){const i=[];e.DD._dragElements.forEach(o=>{const{node:s}=o,a=s.getStage();if(r&&a.setPointersPositions(r),!a._changedPointerPositions.find(c=>c.id===o.pointerId))return;(o.dragStatus==="dragging"||o.dragStatus==="stopped")&&(e.DD.justDragged=!0,t.Konva._mouseListenClick=!1,t.Konva._touchListenClick=!1,t.Konva._pointerListenClick=!1,o.dragStatus="stopped");const u=o.node.getLayer()||o.node instanceof t.Konva.Stage&&o.node;u&&i.indexOf(u)===-1&&i.push(u)}),i.forEach(o=>{o.draw()})},_endDragAfter(r){e.DD._dragElements.forEach((i,o)=>{i.dragStatus==="stopped"&&i.node.fire("dragend",{type:"dragend",target:i.node,evt:r},!0),i.dragStatus!=="dragging"&&e.DD._dragElements.delete(o)})}},t.Konva.isBrowser&&(window.addEventListener("mouseup",e.DD._endDragBefore,!0),window.addEventListener("touchend",e.DD._endDragBefore,!0),window.addEventListener("mousemove",e.DD._drag),window.addEventListener("touchmove",e.DD._drag),window.addEventListener("mouseup",e.DD._endDragAfter,!1),window.addEventListener("touchend",e.DD._endDragAfter,!1))})(v_);Object.defineProperty(Ut,"__esModule",{value:!0});Ut.Node=void 0;const Be=Yt,bg=Ne,Im=ao,Cl=Le,yi=v_,ln=be;var w0="absoluteOpacity",Mm="allEventListeners",fs="absoluteTransform",V8="absoluteScale",El="canvas",dye="Change",fye="children",hye="konva",Yx="listening",G8="mouseenter",H8="mouseleave",W8="set",q8="Shape",x0=" ",K8="stage",na="transform",pye="Stage",Zx="visible",gye=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(x0);let mye=1;class Te{constructor(t){this._id=mye++,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===na||t===fs)&&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===na||t===fs,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(x0);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(El)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===fs&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(El)){const{scene:t,filter:n,hit:r}=this._cache.get(El);Be.Util.releaseCanvas(t,n,r),this._cache.delete(El)}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),s=n.pixelRatio,a=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,c=n.drawBorder||!1,d=n.hitCanvasPixelRatio||1;if(!i||!o){Be.Util.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,a-=u,l-=u;var f=new Im.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new Im.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new Im.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),b=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(El),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),b.save(),m.translate(-a,-l),b.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(w0),this._clearSelfAndDescendantCache(V8),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),b.restore(),c&&(m.save(),m.beginPath(),m.rect(0,0,i,o),m.closePath(),m.setAttr("strokeStyle","red"),m.setAttr("lineWidth",5),m.stroke(),m.restore()),this._cache.set(El,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(El)}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,s,a,l=this.getAbsoluteTransform(n);return r.forEach(function(u){var c=l.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),{x:i,y:o,width:s-i,height:a-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(),s,a,l,u;if(t){if(!this._filterUpToDate){var c=r.pixelRatio;i.setSize(r.width/r.pixelRatio,r.height/r.pixelRatio);try{for(s=t.length,o.clear(),o.drawImage(r._canvas,0,0,r.getWidth()/c,r.getHeight()/c),a=o.getImageData(0,0,i.getWidth(),i.getHeight()),l=0;l{var n,r;if(!t)return this;for(n in t)n!==fye&&(r=W8+Be.Util._capitalize(n),Be.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(Yx,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(Zx,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;yi.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!Cl.Konva.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,s,a;function l(u){for(i=[],o=u.length,s=0;s0&&i[0].getDepth()<=t&&l(i)}return n.nodeType!==pye&&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(na),this._clearSelfAndDescendantCache(fs)),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 Be.Transform,s=this.offset();return o.m=i.slice(),o.translate(s.x,s.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(na);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(na),this._clearSelfAndDescendantCache(fs),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,s;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,s=0;s0?(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return Be.Util.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 Be.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&Be.Util.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(w0,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,s,a;t.attrs={};for(r in n)i=n[r],a=Be.Util.isObject(i)&&!Be.Util._isPlainObject(i)&&!Be.Util._isArray(i),!a&&(o=typeof this[r]=="function"&&this[r],delete n[r],s=o?o.call(this):null,n[r]=i,s!==i&&(t.attrs[r]=i));return t.className=this.getClassName(),Be.Util._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==null?void 0:t.callback;i&&delete t.callback,Be.Util._urlToImage(this.toDataURL(t),function(o){n(o),i==null||i(o)})}catch(i){r(i)}})}toBlob(t){return new Promise((n,r)=>{try{const i=t==null?void 0:t.callback;i&&delete t.callback,this.toCanvas(t).toBlob(o=>{n(o),i==null||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():Cl.Konva.dragDistance}_off(t,n,r){var i=this.eventListeners[t],o,s,a;for(o=0;o=0;if(r&&!this.isDragging()){var i=!1;yi.DD._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=yi.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&yi.DD._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 Be.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return Be.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=Te.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),Cl.Konva[r]||(Be.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=Cl.Konva[r];if(o=new l(t.attrs),i)for(s=i.length,a=0;a0}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(t.length===0)return this;if(t.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=v2.Node.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=v2.Node.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(),s=this._getCanvasCache(),a=s&&s.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(a){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(),s=this._getCanvasCache(),a=s&&s.hit;if(a){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(),s=this.clipWidth(),a=this.clipHeight(),l=this.clipFunc(),u=s&&a||l;const c=r===this;if(u){o.save();var d=this.getAbsoluteTransform(r),f=d.getMatrix();o.transform(f[0],f[1],f[2],f[3],f[4],f[5]),o.beginPath();let b;if(l)b=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,b),f=d.copy().invert().getMatrix(),o.transform(f[0],f[1],f[2],f[3],f[4],f[5])}var m=!c&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";m&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(b){b[t](n,r)}),m&&o.restore(),u&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,s,a,l,u={x:1/0,y:1/0,width:0,height:0},c=this;(n=this.children)===null||n===void 0||n.forEach(function(m){if(m.visible()){var b=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});b.width===0&&b.height===0||(o===void 0?(o=b.x,s=b.y,a=b.x+b.width,l=b.y+b.height):(o=Math.min(o,b.x),s=Math.min(s,b.y),a=Math.max(a,b.x+b.width),l=Math.max(l,b.y+b.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hZ.indexOf("pointer")>=0?"pointer":Z.indexOf("touch")>=0?"touch":"mouse",U=Z=>{const z=F(Z);if(z==="pointer")return i.Konva.pointerEventsEnabled&&D.pointer;if(z==="touch")return D.touch;if(z==="mouse")return D.mouse};function V(Z={}){return(Z.clipFunc||Z.clipWidth||Z.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),Z}const q="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);";e.stages=[];class X extends r.Container{constructor(z){super(V(z)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),e.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{V(this.attrs)}),this._checkVisibility()}_validateAdd(z){const W=z.getType()==="Layer",Q=z.getType()==="FastLayer";W||Q||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const z=this.visible()?"":"none";this.content.style.display=z}setContainer(z){if(typeof z===c){if(z.charAt(0)==="."){var W=z.slice(1);z=document.getElementsByClassName(W)[0]}else{var Q;z.charAt(0)!=="#"?Q=z:Q=z.slice(1),z=document.getElementById(Q)}if(!z)throw"Can not find container in document with id "+Q}return this._setAttr("container",z),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),z.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var z=this.children,W=z.length,Q;for(Q=0;Q-1&&e.stages.splice(W,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const z=this._pointerPositions[0]||this._changedPointerPositions[0];return z?{x:z.x,y:z.y}:(t.Util.warn(q),null)}_getPointerById(z){return this._pointerPositions.find(W=>W.id===z)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(z){z=z||{},z.x=z.x||0,z.y=z.y||0,z.width=z.width||this.width(),z.height=z.height||this.height();var W=new o.SceneCanvas({width:z.width,height:z.height,pixelRatio:z.pixelRatio||1}),Q=W.getContext()._context,J=this.children;return(z.x||z.y)&&Q.translate(-1*z.x,-1*z.y),J.forEach(function(se){if(se.isVisible()){var oe=se._toKonvaCanvas(z);Q.drawImage(oe._canvas,z.x,z.y,oe.getWidth()/oe.getPixelRatio(),oe.getHeight()/oe.getPixelRatio())}}),W}getIntersection(z){if(!z)return null;var W=this.children,Q=W.length,J=Q-1,se;for(se=J;se>=0;se--){const oe=W[se].getIntersection(z);if(oe)return oe}return null}_resizeDOM(){var z=this.width(),W=this.height();this.content&&(this.content.style.width=z+d,this.content.style.height=W+d),this.bufferCanvas.setSize(z,W),this.bufferHitCanvas.setSize(z,W),this.children.forEach(Q=>{Q.setSize({width:z,height:W}),Q.draw()})}add(z,...W){if(arguments.length>1){for(var Q=0;QM&&t.Util.warn("The stage has "+J+" 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."),z.setSize({width:this.width(),height:this.height()}),z.draw(),i.Konva.isBrowser&&this.content.appendChild(z.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(z){return l.hasPointerCapture(z,this)}setPointerCapture(z){l.setPointerCapture(z,this)}releaseCapture(z){l.releaseCapture(z,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&O.forEach(([z,W])=>{this.content.addEventListener(z,Q=>{this[W](Q)},{passive:!1})})}_pointerenter(z){this.setPointersPositions(z);const W=U(z.type);this._fire(W.pointerenter,{evt:z,target:this,currentTarget:this})}_pointerover(z){this.setPointersPositions(z);const W=U(z.type);this._fire(W.pointerover,{evt:z,target:this,currentTarget:this})}_getTargetShape(z){let W=this[z+"targetShape"];return W&&!W.getStage()&&(W=null),W}_pointerleave(z){const W=U(z.type),Q=F(z.type);if(W){this.setPointersPositions(z);var J=this._getTargetShape(Q),se=!s.DD.isDragging||i.Konva.hitOnDragEnabled;J&&se?(J._fireAndBubble(W.pointerout,{evt:z}),J._fireAndBubble(W.pointerleave,{evt:z}),this._fire(W.pointerleave,{evt:z,target:this,currentTarget:this}),this[Q+"targetShape"]=null):se&&(this._fire(W.pointerleave,{evt:z,target:this,currentTarget:this}),this._fire(W.pointerout,{evt:z,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(z){const W=U(z.type),Q=F(z.type);if(W){this.setPointersPositions(z);var J=!1;this._changedPointerPositions.forEach(se=>{var oe=this.getIntersection(se);if(s.DD.justDragged=!1,i.Konva["_"+Q+"ListenClick"]=!0,!(oe&&oe.isListening()))return;i.Konva.capturePointerEventsEnabled&&oe.setPointerCapture(se.id),this[Q+"ClickStartShape"]=oe,oe._fireAndBubble(W.pointerdown,{evt:z,pointerId:se.id}),J=!0;const Ae=z.type.indexOf("touch")>=0;oe.preventDefault()&&z.cancelable&&Ae&&z.preventDefault()}),J||this._fire(W.pointerdown,{evt:z,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(z){const W=U(z.type),Q=F(z.type);if(!W)return;s.DD.isDragging&&s.DD.node.preventDefault()&&z.cancelable&&z.preventDefault(),this.setPointersPositions(z);var J=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!J)return;var se={};let oe=!1;var Me=this._getTargetShape(Q);this._changedPointerPositions.forEach(Ae=>{const _e=l.getCapturedShape(Ae.id)||this.getIntersection(Ae),je=Ae.id,he={evt:z,pointerId:je};var It=Me!==_e;if(It&&Me&&(Me._fireAndBubble(W.pointerout,Object.assign({},he),_e),Me._fireAndBubble(W.pointerleave,Object.assign({},he),_e)),_e){if(se[_e._id])return;se[_e._id]=!0}_e&&_e.isListening()?(oe=!0,It&&(_e._fireAndBubble(W.pointerover,Object.assign({},he),Me),_e._fireAndBubble(W.pointerenter,Object.assign({},he),Me),this[Q+"targetShape"]=_e),_e._fireAndBubble(W.pointermove,Object.assign({},he))):Me&&(this._fire(W.pointerover,{evt:z,target:this,currentTarget:this,pointerId:je}),this[Q+"targetShape"]=null)}),oe||this._fire(W.pointermove,{evt:z,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(z){const W=U(z.type),Q=F(z.type);if(!W)return;this.setPointersPositions(z);const J=this[Q+"ClickStartShape"],se=this[Q+"ClickEndShape"];var oe={};let Me=!1;this._changedPointerPositions.forEach(Ae=>{const _e=l.getCapturedShape(Ae.id)||this.getIntersection(Ae);if(_e){if(_e.releaseCapture(Ae.id),oe[_e._id])return;oe[_e._id]=!0}const je=Ae.id,he={evt:z,pointerId:je};let It=!1;i.Konva["_"+Q+"InDblClickWindow"]?(It=!0,clearTimeout(this[Q+"DblTimeout"])):s.DD.justDragged||(i.Konva["_"+Q+"InDblClickWindow"]=!0,clearTimeout(this[Q+"DblTimeout"])),this[Q+"DblTimeout"]=setTimeout(function(){i.Konva["_"+Q+"InDblClickWindow"]=!1},i.Konva.dblClickWindow),_e&&_e.isListening()?(Me=!0,this[Q+"ClickEndShape"]=_e,_e._fireAndBubble(W.pointerup,Object.assign({},he)),i.Konva["_"+Q+"ListenClick"]&&J&&J===_e&&(_e._fireAndBubble(W.pointerclick,Object.assign({},he)),It&&se&&se===_e&&_e._fireAndBubble(W.pointerdblclick,Object.assign({},he)))):(this[Q+"ClickEndShape"]=null,i.Konva["_"+Q+"ListenClick"]&&this._fire(W.pointerclick,{evt:z,target:this,currentTarget:this,pointerId:je}),It&&this._fire(W.pointerdblclick,{evt:z,target:this,currentTarget:this,pointerId:je}))}),Me||this._fire(W.pointerup,{evt:z,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+Q+"ListenClick"]=!1,z.cancelable&&Q!=="touch"&&z.preventDefault()}_contextmenu(z){this.setPointersPositions(z);var W=this.getIntersection(this.getPointerPosition());W&&W.isListening()?W._fireAndBubble(L,{evt:z}):this._fire(L,{evt:z,target:this,currentTarget:this})}_wheel(z){this.setPointersPositions(z);var W=this.getIntersection(this.getPointerPosition());W&&W.isListening()?W._fireAndBubble($,{evt:z}):this._fire($,{evt:z,target:this,currentTarget:this})}_pointercancel(z){this.setPointersPositions(z);const W=l.getCapturedShape(z.pointerId)||this.getIntersection(this.getPointerPosition());W&&W._fireAndBubble(S,l.createEvent(z)),l.releaseCapture(z.pointerId)}_lostpointercapture(z){l.releaseCapture(z.pointerId)}setPointersPositions(z){var W=this._getContentPosition(),Q=null,J=null;z=z||window.event,z.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(z.touches,se=>{this._pointerPositions.push({id:se.identifier,x:(se.clientX-W.left)/W.scaleX,y:(se.clientY-W.top)/W.scaleY})}),Array.prototype.forEach.call(z.changedTouches||z.touches,se=>{this._changedPointerPositions.push({id:se.identifier,x:(se.clientX-W.left)/W.scaleX,y:(se.clientY-W.top)/W.scaleY})})):(Q=(z.clientX-W.left)/W.scaleX,J=(z.clientY-W.top)/W.scaleY,this.pointerPos={x:Q,y:J},this._pointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(z)}],this._changedPointerPositions=[{x:Q,y:J,id:t.Util._getFirstPointerId(z)}])}_setPointerPosition(z){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(z)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var z=this.content.getBoundingClientRect();return{top:z.top,left:z.left,scaleX:z.width/this.content.clientWidth||1,scaleY:z.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!i.Konva.isBrowser){var z=this.container();if(!z)throw"Stage has no container. A container is required.";z.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"),z.appendChild(this.content),this._resizeDOM()}}cache(){return t.Util.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(z){z.batchDraw()}),this}}e.Stage=X,X.prototype.nodeType=u,(0,a._registerNode)(X),n.Factory.addGetterSetter(X,"container")})(GF);var Sg={},Cn={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=Le,n=Yt,r=Ne,i=Ut,o=be,s=Le,a=ei;var l="hasShadow",u="shadowRGBA",c="patternImage",d="linearGradient",f="radialGradient";let h;function p(){return h||(h=n.Util.createCanvasElement().getContext("2d"),h)}e.shapes={};function m(A){const T=this.attrs.fillRule;T?A.fill(T):A.fill()}function b(A){A.stroke()}function _(A){A.fill()}function y(A){A.stroke()}function g(){this._clearCache(l)}function v(){this._clearCache(u)}function S(){this._clearCache(c)}function w(){this._clearCache(d)}function C(){this._clearCache(f)}class x extends i.Node{constructor(T){super(T);let P;for(;P=n.Util.getRandomColor(),!(P&&!(P in e.shapes)););this.colorKey=P,e.shapes[P]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.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(l,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(c,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var T=p();const P=T.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(P&&P.setTransform){const L=new n.Transform;L.translate(this.fillPatternX(),this.fillPatternY()),L.rotate(t.Konva.getAngle(this.fillPatternRotation())),L.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),L.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const R=L.getMatrix(),E=typeof DOMMatrix>"u"?{a:R[0],b:R[1],c:R[2],d:R[3],e:R[4],f:R[5]}:new DOMMatrix(R);P.setTransform(E)}return P}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var T=this.fillLinearGradientColorStops();if(T){for(var P=p(),L=this.fillLinearGradientStartPoint(),R=this.fillLinearGradientEndPoint(),E=P.createLinearGradient(L.x,L.y,R.x,R.y),k=0;kthis.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 P=this.getStage(),L=P.bufferHitCanvas,R;return L.getContext().clear(),this.drawHit(L,null,!0),R=L.context.getImageData(Math.round(T.x),Math.round(T.y),1,1).data,R[3]>0}destroy(){return i.Node.prototype.destroy.call(this),delete e.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(T){var P;if(!this.getStage()||!((P=this.attrs.perfectDrawEnabled)!==null&&P!==void 0?P:!0))return!1;const R=T||this.hasFill(),E=this.hasStroke(),k=this.getAbsoluteOpacity()!==1;if(R&&E&&k)return!0;const N=this.hasShadow(),$=this.shadowForStrokeEnabled();return!!(R&&E&&N&&$)}setStrokeHitEnabled(T){n.Util.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 P=T.skipTransform,L=T.relativeTo,R=this.getSelfRect(),k=!T.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,N=R.width+k,$=R.height+k,M=!T.skipShadow&&this.hasShadow(),O=M?this.shadowOffsetX():0,D=M?this.shadowOffsetY():0,F=N+Math.abs(O),U=$+Math.abs(D),V=M&&this.shadowBlur()||0,q=F+V*2,X=U+V*2,Z={width:q,height:X,x:-(k/2+V)+Math.min(O,0)+R.x,y:-(k/2+V)+Math.min(D,0)+R.y};return P?Z:this._transformedRect(Z,L)}drawScene(T,P){var L=this.getLayer(),R=T||L.getCanvas(),E=R.getContext(),k=this._getCanvasCache(),N=this.getSceneFunc(),$=this.hasShadow(),M,O,D,F=R.isCache,U=P===this;if(!this.isVisible()&&!U)return this;if(k){E.save();var V=this.getAbsoluteTransform(P).getMatrix();return E.transform(V[0],V[1],V[2],V[3],V[4],V[5]),this._drawCachedSceneCanvas(E),E.restore(),this}if(!N)return this;if(E.save(),this._useBufferCanvas()&&!F){M=this.getStage(),O=M.bufferCanvas,D=O.getContext(),D.clear(),D.save(),D._applyLineJoin(this);var q=this.getAbsoluteTransform(P).getMatrix();D.transform(q[0],q[1],q[2],q[3],q[4],q[5]),N.call(this,D,this),D.restore();var X=O.pixelRatio;$&&E._applyShadow(this),E._applyOpacity(this),E._applyGlobalCompositeOperation(this),E.drawImage(O._canvas,0,0,O.width/X,O.height/X)}else{if(E._applyLineJoin(this),!U){var q=this.getAbsoluteTransform(P).getMatrix();E.transform(q[0],q[1],q[2],q[3],q[4],q[5]),E._applyOpacity(this),E._applyGlobalCompositeOperation(this)}$&&E._applyShadow(this),N.call(this,E,this)}return E.restore(),this}drawHit(T,P,L=!1){if(!this.shouldDrawHit(P,L))return this;var R=this.getLayer(),E=T||R.hitCanvas,k=E&&E.getContext(),N=this.hitFunc()||this.sceneFunc(),$=this._getCanvasCache(),M=$&&$.hit;if(this.colorKey||n.Util.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()"),M){k.save();var O=this.getAbsoluteTransform(P).getMatrix();return k.transform(O[0],O[1],O[2],O[3],O[4],O[5]),this._drawCachedHitCanvas(k),k.restore(),this}if(!N)return this;if(k.save(),k._applyLineJoin(this),!(this===P)){var F=this.getAbsoluteTransform(P).getMatrix();k.transform(F[0],F[1],F[2],F[3],F[4],F[5])}return N.call(this,k,this),k.restore(),this}drawHitFromCache(T=0){var P=this._getCanvasCache(),L=this._getCachedSceneCanvas(),R=P.hit,E=R.getContext(),k=R.getWidth(),N=R.getHeight(),$,M,O,D,F,U;E.clear(),E.drawImage(L._canvas,0,0,k,N);try{for($=E.getImageData(0,0,k,N),M=$.data,O=M.length,D=n.Util._hexToRgb(this.colorKey),F=0;FT?(M[F]=D.r,M[F+1]=D.g,M[F+2]=D.b,M[F+3]=255):M[F+3]=0;E.putImageData($,0,0)}catch(V){n.Util.error("Unable to draw hit graph from cached scene canvas. "+V.message)}return this}hasPointerCapture(T){return a.hasPointerCapture(T,this)}setPointerCapture(T){a.setPointerCapture(T,this)}releaseCapture(T){a.releaseCapture(T,this)}}e.Shape=x,x.prototype._fillFunc=m,x.prototype._strokeFunc=b,x.prototype._fillFuncHit=_,x.prototype._strokeFuncHit=y,x.prototype._centroid=!1,x.prototype.nodeType="Shape",(0,s._registerNode)(x),x.prototype.eventListeners={},x.prototype.on.call(x.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",g),x.prototype.on.call(x.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",v),x.prototype.on.call(x.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",S),x.prototype.on.call(x.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",w),x.prototype.on.call(x.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",C),r.Factory.addGetterSetter(x,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(x,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(x,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(x,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(x,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(x,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(x,"lineJoin"),r.Factory.addGetterSetter(x,"lineCap"),r.Factory.addGetterSetter(x,"sceneFunc"),r.Factory.addGetterSetter(x,"hitFunc"),r.Factory.addGetterSetter(x,"dash"),r.Factory.addGetterSetter(x,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(x,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(x,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(x,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillPatternImage"),r.Factory.addGetterSetter(x,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(x,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(x,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(x,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(x,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(x,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(x,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(x,"fillEnabled",!0),r.Factory.addGetterSetter(x,"strokeEnabled",!0),r.Factory.addGetterSetter(x,"shadowEnabled",!0),r.Factory.addGetterSetter(x,"dashEnabled",!0),r.Factory.addGetterSetter(x,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(x,"fillPriority","color"),r.Factory.addComponentsGetterSetter(x,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(x,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(x,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(x,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(x,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(x,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(x,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(x,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(x,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(x,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(x,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(x,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(x,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(x,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(x,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(x,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(x,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(x,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(x,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(x,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(x,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(x,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(x,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(x,"fillPatternRotation",0),r.Factory.addGetterSetter(x,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(x,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(Cn);Object.defineProperty(Sg,"__esModule",{value:!0});Sg.Layer=void 0;const as=Yt,_2=Tu,ec=Ut,vE=Ne,X8=ao,Sye=be,wye=Cn,xye=Le;var Cye="#",Eye="beforeDraw",Tye="draw",qF=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],Aye=qF.length;class Gd extends _2.Container{constructor(t){super(t),this.canvas=new X8.SceneCanvas,this.hitCanvas=new X8.HitCanvas({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(Eye,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),_2.Container.prototype.drawScene.call(this,i,n),this._fire(Tye,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),_2.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){as.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return as.Util.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 as.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}Sg.Layer=Gd;Gd.prototype.nodeType="Layer";(0,xye._registerNode)(Gd);vE.Factory.addGetterSetter(Gd,"imageSmoothingEnabled",!0);vE.Factory.addGetterSetter(Gd,"clearBeforeDraw",!0);vE.Factory.addGetterSetter(Gd,"hitGraphEnabled",!0,(0,Sye.getBooleanValidator)());var b_={};Object.defineProperty(b_,"__esModule",{value:!0});b_.FastLayer=void 0;const kye=Yt,Pye=Sg,Oye=Le;class _E extends Pye.Layer{constructor(t){super(t),this.listening(!1),kye.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}b_.FastLayer=_E;_E.prototype.nodeType="FastLayer";(0,Oye._registerNode)(_E);var Hd={};Object.defineProperty(Hd,"__esModule",{value:!0});Hd.Group=void 0;const Rye=Yt,Iye=Tu,Mye=Le;class bE extends Iye.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&Rye.Util.throw("You may only add groups and shapes to groups.")}}Hd.Group=bE;bE.prototype.nodeType="Group";(0,Mye._registerNode)(bE);var Wd={};Object.defineProperty(Wd,"__esModule",{value:!0});Wd.Animation=void 0;const b2=Le,Y8=Yt;var S2=function(){return b2.glob.performance&&b2.glob.performance.now?function(){return b2.glob.performance.now()}:function(){return new Date().getTime()}}();class Ro{constructor(t,n){this.id=Ro.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:S2(),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():p<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=p,this.update())}getTime(){return this._time}setPosition(p){this.prevPos=this._pos,this.propFunc(p),this._pos=p}getPosition(p){return p===void 0&&(p=this._time),this.func(p,this.begin,this._change,this.duration)}play(){this.state=a,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=l,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(p){this.pause(),this._time=p,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 p=this.getTimer()-this._startTime;this.state===a?this.setTime(p):this.state===l&&this.setTime(this.duration-p)}pause(){this.state=s,this.fire("onPause")}getTimer(){return new Date().getTime()}}class f{constructor(p){var m=this,b=p.node,_=b._id,y,g=p.easing||e.Easings.Linear,v=!!p.yoyo,S;typeof p.duration>"u"?y=.3:p.duration===0?y=.001:y=p.duration,this.node=b,this._id=u++;var w=b.getLayer()||(b instanceof i.Konva.Stage?b.getLayers():null);w||t.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){m.tween.onEnterFrame()},w),this.tween=new d(S,function(C){m._tweenFunc(C)},g,0,1,y*1e3,v),this._addListeners(),f.attrs[_]||(f.attrs[_]={}),f.attrs[_][this._id]||(f.attrs[_][this._id]={}),f.tweens[_]||(f.tweens[_]={});for(S in p)o[S]===void 0&&this._addAttr(S,p[S]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var b=this.node,_=b._id,y,g,v,S,w,C,x,A;if(v=f.tweens[_][p],v&&delete f.attrs[_][v][p],y=b.getAttr(p),t.Util._isArray(m))if(g=[],w=Math.max(m.length,y.length),p==="points"&&m.length!==y.length&&(m.length>y.length?(x=y,y=t.Util._prepareArrayForTween(y,m,b.closed())):(C=m,m=t.Util._prepareArrayForTween(m,y,b.closed()))),p.indexOf("fill")===0)for(S=0;S{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueEnd&&p.setAttr("points",m.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueStart&&p.points(m.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(p){return this.tween.seek(p*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var p=this.node._id,m=this._id,b=f.tweens[p],_;this.pause();for(_ in b)delete f.tweens[p][_];delete f.attrs[p][m]}}e.Tween=f,f.attrs={},f.tweens={},r.Node.prototype.to=function(h){var p=h.onFinish;h.node=this,h.onFinish=function(){this.destroy(),p&&p()};var m=new f(h);m.play()},e.Easings={BackEaseIn(h,p,m,b){var _=1.70158;return m*(h/=b)*h*((_+1)*h-_)+p},BackEaseOut(h,p,m,b){var _=1.70158;return m*((h=h/b-1)*h*((_+1)*h+_)+1)+p},BackEaseInOut(h,p,m,b){var _=1.70158;return(h/=b/2)<1?m/2*(h*h*(((_*=1.525)+1)*h-_))+p:m/2*((h-=2)*h*(((_*=1.525)+1)*h+_)+2)+p},ElasticEaseIn(h,p,m,b,_,y){var g=0;return h===0?p:(h/=b)===1?p+m:(y||(y=b*.3),!_||_0?t:n),c=s*n,d=a*(a>0?t:n),f=l*(l>0?n:t);return{x:u,y:r?-1*f:d,width:c-u,height:f-d}}}S_.Arc=Ws;Ws.prototype._centroid=!0;Ws.prototype.className="Arc";Ws.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,Dye._registerNode)(Ws);w_.Factory.addGetterSetter(Ws,"innerRadius",0,(0,x_.getNumberValidator)());w_.Factory.addGetterSetter(Ws,"outerRadius",0,(0,x_.getNumberValidator)());w_.Factory.addGetterSetter(Ws,"angle",0,(0,x_.getNumberValidator)());w_.Factory.addGetterSetter(Ws,"clockwise",!1,(0,x_.getBooleanValidator)());var C_={},wg={};Object.defineProperty(wg,"__esModule",{value:!0});wg.Line=void 0;const E_=Ne,Lye=Cn,XF=be,$ye=Le;function Qx(e,t,n,r,i,o,s){var a=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=s*a/(a+l),c=s*l/(a+l),d=n-u*(i-e),f=r-u*(o-t),h=n+c*(i-e),p=r+c*(o-t);return[d,f,h,p]}function Q8(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(a=this.getTensionPoints(),l=a.length,u=o?0:4,o||t.quadraticCurveTo(a[0],a[1],a[2],a[3]);u{let u,c,d;u=l/2,c=0;for(let h=0;h<20;h++)d=u*e.tValues[20][h]+u,c+=e.cValues[20][h]*r(s,a,d);return u*c};e.getCubicArcLength=t;const n=(s,a,l)=>{l===void 0&&(l=1);const u=s[0]-2*s[1]+s[2],c=a[0]-2*a[1]+a[2],d=2*s[1]-2*s[0],f=2*a[1]-2*a[0],h=4*(u*u+c*c),p=4*(u*d+c*f),m=d*d+f*f;if(h===0)return l*Math.sqrt(Math.pow(s[2]-s[0],2)+Math.pow(a[2]-a[0],2));const b=p/(2*h),_=m/h,y=l+b,g=_-b*b,v=y*y+g>0?Math.sqrt(y*y+g):0,S=b*b+g>0?Math.sqrt(b*b+g):0,w=b+Math.sqrt(b*b+g)!==0?g*Math.log(Math.abs((y+v)/(b+S))):0;return Math.sqrt(h)/2*(y*v-b*S+w)};e.getQuadraticArcLength=n;function r(s,a,l){const u=i(1,l,s),c=i(1,l,a),d=u*u+c*c;return Math.sqrt(d)}const i=(s,a,l)=>{const u=l.length-1;let c,d;if(u===0)return 0;if(s===0){d=0;for(let f=0;f<=u;f++)d+=e.binomialCoefficients[u][f]*Math.pow(1-a,u-f)*Math.pow(a,f)*l[f];return d}else{c=new Array(u);for(let f=0;f{let u=1,c=s/a,d=(s-l(c))/a,f=0;for(;u>.001;){const h=l(c+d),p=Math.abs(s-h)/a;if(p500)break}return c};e.t2length=o})(YF);Object.defineProperty(qd,"__esModule",{value:!0});qd.Path=void 0;const Fye=Ne,Bye=Cn,zye=Le,tc=YF;class yn extends Bye.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=yn.parsePathData(this.data()),this.pathLength=yn.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,b=u>c?1:u/c,_=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(b,_),t.arc(0,0,m,d,d+f,1-p),t.scale(1/b,1/_),t.rotate(-h),t.translate(-a,-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 c=u.points[4],d=u.points[5],f=u.points[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;p-=h){const m=yn.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],p,0);t.push(m.x,m.y)}else for(let p=c+h;pn[i].pathLength;)t-=n[i].pathLength,++i;if(i===o)return r=n[i-1].points.slice(-2),{x:r[0],y:r[1]};if(t<.01)return r=n[i].points.slice(0,2),{x:r[0],y:r[1]};var s=n[i],a=s.points;switch(s.command){case"L":return yn.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return yn.getPointOnCubicBezier((0,tc.t2length)(t,yn.getPathLength(n),m=>(0,tc.getCubicArcLength)([s.start.x,a[0],a[2],a[4]],[s.start.y,a[1],a[3],a[5]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return yn.getPointOnQuadraticBezier((0,tc.t2length)(t,yn.getPathLength(n),m=>(0,tc.getQuadraticArcLength)([s.start.x,a[0],a[2]],[s.start.y,a[1],a[3]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3]);case"A":var l=a[0],u=a[1],c=a[2],d=a[3],f=a[4],h=a[5],p=a[6];return f+=h*t/s.pathLength,yn.getPointOnEllipticalArc(l,u,c,d,f,p)}return null}static getPointOnLine(t,n,r,i,o,s,a){s===void 0&&(s=n),a===void 0&&(a=r);var l=(o-r)/(i-n+1e-8),u=Math.sqrt(t*t/(1+l*l));i0&&!isNaN(p[0]);){var y=null,g=[],v=l,S=u,w,C,x,A,T,P,L,R,E,k;switch(h){case"l":l+=p.shift(),u+=p.shift(),y="L",g.push(l,u);break;case"L":l=p.shift(),u=p.shift(),g.push(l,u);break;case"m":var N=p.shift(),$=p.shift();if(l+=N,u+=$,y="M",s.length>2&&s[s.length-1].command==="z"){for(var M=s.length-2;M>=0;M--)if(s[M].command==="M"){l=s[M].points[0]+N,u=s[M].points[1]+$;break}}g.push(l,u),h="l";break;case"M":l=p.shift(),u=p.shift(),y="M",g.push(l,u),h="L";break;case"h":l+=p.shift(),y="L",g.push(l,u);break;case"H":l=p.shift(),y="L",g.push(l,u);break;case"v":u+=p.shift(),y="L",g.push(l,u);break;case"V":u=p.shift(),y="L",g.push(l,u);break;case"C":g.push(p.shift(),p.shift(),p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"c":g.push(l+p.shift(),u+p.shift(),l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"S":C=l,x=u,w=s[s.length-1],w.command==="C"&&(C=l+(l-w.points[2]),x=u+(u-w.points[3])),g.push(C,x,p.shift(),p.shift()),l=p.shift(),u=p.shift(),y="C",g.push(l,u);break;case"s":C=l,x=u,w=s[s.length-1],w.command==="C"&&(C=l+(l-w.points[2]),x=u+(u-w.points[3])),g.push(C,x,l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"Q":g.push(p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"q":g.push(l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="Q",g.push(l,u);break;case"T":C=l,x=u,w=s[s.length-1],w.command==="Q"&&(C=l+(l-w.points[0]),x=u+(u-w.points[1])),l=p.shift(),u=p.shift(),y="Q",g.push(C,x,l,u);break;case"t":C=l,x=u,w=s[s.length-1],w.command==="Q"&&(C=l+(l-w.points[0]),x=u+(u-w.points[1])),l+=p.shift(),u+=p.shift(),y="Q",g.push(C,x,l,u);break;case"A":A=p.shift(),T=p.shift(),P=p.shift(),L=p.shift(),R=p.shift(),E=l,k=u,l=p.shift(),u=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,k,l,u,L,R,A,T,P);break;case"a":A=p.shift(),T=p.shift(),P=p.shift(),L=p.shift(),R=p.shift(),E=l,k=u,l+=p.shift(),u+=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,k,l,u,L,R,A,T,P);break}s.push({command:y||h,points:g,start:{x:v,y:S},pathLength:this.calcLength(v,S,y||h,g)})}(h==="z"||h==="Z")&&s.push({command:"z",points:[],start:void 0,pathLength:0})}return s}static calcLength(t,n,r,i){var o,s,a,l,u=yn;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,tc.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,tc.getQuadraticArcLength)([t,i[0],i[2]],[n,i[1],i[3]],1);case"A":o=0;var c=i[4],d=i[5],f=i[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;l-=h)a=u.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=u.getLineLength(s.x,s.y,a.x,a.y),s=a;else for(l=c+h;l1&&(a*=Math.sqrt(h),l*=Math.sqrt(h));var p=Math.sqrt((a*a*(l*l)-a*a*(f*f)-l*l*(d*d))/(a*a*(f*f)+l*l*(d*d)));o===s&&(p*=-1),isNaN(p)&&(p=0);var m=p*a*f/l,b=p*-l*d/a,_=(t+r)/2+Math.cos(c)*m-Math.sin(c)*b,y=(n+i)/2+Math.sin(c)*m+Math.cos(c)*b,g=function(T){return Math.sqrt(T[0]*T[0]+T[1]*T[1])},v=function(T,P){return(T[0]*P[0]+T[1]*P[1])/(g(T)*g(P))},S=function(T,P){return(T[0]*P[1]=1&&(A=0),s===0&&A>0&&(A=A-2*Math.PI),s===1&&A<0&&(A=A+2*Math.PI),[_,y,a,l,w,A,c,s]}}qd.Path=yn;yn.prototype.className="Path";yn.prototype._attrsAffectingSize=["data"];(0,zye._registerNode)(yn);Fye.Factory.addGetterSetter(yn,"data");Object.defineProperty(C_,"__esModule",{value:!0});C_.Arrow=void 0;const T_=Ne,Uye=wg,ZF=be,jye=Le,J8=qd;class ku extends Uye.Line{_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 s=this.pointerLength(),a=r.length,l,u;if(o){const f=[i[i.length-4],i[i.length-3],i[i.length-2],i[i.length-1],r[a-2],r[a-1]],h=J8.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=J8.Path.getPointOnQuadraticBezier(Math.min(1,1-s/h),f[0],f[1],f[2],f[3],f[4],f[5]);l=r[a-2]-p.x,u=r[a-1]-p.y}else l=r[a-2]-r[a-4],u=r[a-1]-r[a-3];var c=(Math.atan2(u,l)+n)%n,d=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(r[a-2],r[a-1]),t.rotate(c),t.moveTo(0,0),t.lineTo(-s,d/2),t.lineTo(-s,-d/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(-s,d/2),t.lineTo(-s,-d/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}}}C_.Arrow=ku;ku.prototype.className="Arrow";(0,jye._registerNode)(ku);T_.Factory.addGetterSetter(ku,"pointerLength",10,(0,ZF.getNumberValidator)());T_.Factory.addGetterSetter(ku,"pointerWidth",10,(0,ZF.getNumberValidator)());T_.Factory.addGetterSetter(ku,"pointerAtBeginning",!1);T_.Factory.addGetterSetter(ku,"pointerAtEnding",!0);var A_={};Object.defineProperty(A_,"__esModule",{value:!0});A_.Circle=void 0;const Vye=Ne,Gye=Cn,Hye=be,Wye=Le;let Kd=class extends Gye.Shape{_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)}};A_.Circle=Kd;Kd.prototype._centroid=!0;Kd.prototype.className="Circle";Kd.prototype._attrsAffectingSize=["radius"];(0,Wye._registerNode)(Kd);Vye.Factory.addGetterSetter(Kd,"radius",0,(0,Hye.getNumberValidator)());var k_={};Object.defineProperty(k_,"__esModule",{value:!0});k_.Ellipse=void 0;const SE=Ne,qye=Cn,QF=be,Kye=Le;class cl extends qye.Shape{_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)}}k_.Ellipse=cl;cl.prototype.className="Ellipse";cl.prototype._centroid=!0;cl.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,Kye._registerNode)(cl);SE.Factory.addComponentsGetterSetter(cl,"radius",["x","y"]);SE.Factory.addGetterSetter(cl,"radiusX",0,(0,QF.getNumberValidator)());SE.Factory.addGetterSetter(cl,"radiusY",0,(0,QF.getNumberValidator)());var P_={};Object.defineProperty(P_,"__esModule",{value:!0});P_.Image=void 0;const w2=Yt,Pu=Ne,Xye=Cn,Yye=Le,xg=be;let Jo=class JF extends Xye.Shape{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.cornerRadius(),o=this.attrs.image;let s;if(o){const a=this.attrs.cropWidth,l=this.attrs.cropHeight;a&&l?s=[o,this.cropX(),this.cropY(),a,l,0,0,n,r]:s=[o,0,0,n,r]}(this.hasFill()||this.hasStroke()||i)&&(t.beginPath(),i?w2.Util.drawRoundedRectPath(t,n,r,i):t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)),o&&(i&&t.clip(),t.drawImage.apply(t,s))}_hitFunc(t){var n=this.width(),r=this.height(),i=this.cornerRadius();t.beginPath(),i?w2.Util.drawRoundedRectPath(t,n,r,i):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=w2.Util.createImageElement();i.onload=function(){var o=new JF({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};P_.Image=Jo;Jo.prototype.className="Image";(0,Yye._registerNode)(Jo);Pu.Factory.addGetterSetter(Jo,"cornerRadius",0,(0,xg.getNumberOrArrayOfNumbersValidator)(4));Pu.Factory.addGetterSetter(Jo,"image");Pu.Factory.addComponentsGetterSetter(Jo,"crop",["x","y","width","height"]);Pu.Factory.addGetterSetter(Jo,"cropX",0,(0,xg.getNumberValidator)());Pu.Factory.addGetterSetter(Jo,"cropY",0,(0,xg.getNumberValidator)());Pu.Factory.addGetterSetter(Jo,"cropWidth",0,(0,xg.getNumberValidator)());Pu.Factory.addGetterSetter(Jo,"cropHeight",0,(0,xg.getNumberValidator)());var Cd={};Object.defineProperty(Cd,"__esModule",{value:!0});Cd.Tag=Cd.Label=void 0;const O_=Ne,Zye=Cn,Qye=Hd,wE=be,eB=Le;var tB=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],Jye="Change.konva",eve="none",Jx="up",eC="right",tC="down",nC="left",tve=tB.length;class xE extends Qye.Group{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,s.x),r=Math.max(r,s.x),i=Math.min(i,s.y),o=Math.max(o,s.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)}}I_.RegularPolygon=Ru;Ru.prototype.className="RegularPolygon";Ru.prototype._centroid=!0;Ru.prototype._attrsAffectingSize=["radius"];(0,lve._registerNode)(Ru);nB.Factory.addGetterSetter(Ru,"radius",0,(0,rB.getNumberValidator)());nB.Factory.addGetterSetter(Ru,"sides",0,(0,rB.getNumberValidator)());var M_={};Object.defineProperty(M_,"__esModule",{value:!0});M_.Ring=void 0;const iB=Ne,uve=Cn,oB=be,cve=Le;var eP=Math.PI*2;class Iu extends uve.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,eP,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),eP,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)}}M_.Ring=Iu;Iu.prototype.className="Ring";Iu.prototype._centroid=!0;Iu.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,cve._registerNode)(Iu);iB.Factory.addGetterSetter(Iu,"innerRadius",0,(0,oB.getNumberValidator)());iB.Factory.addGetterSetter(Iu,"outerRadius",0,(0,oB.getNumberValidator)());var N_={};Object.defineProperty(N_,"__esModule",{value:!0});N_.Sprite=void 0;const Mu=Ne,dve=Cn,fve=Wd,sB=be,hve=Le;class es extends dve.Shape{constructor(t){super(t),this._updated=!0,this.anim=new fve.Animation(()=>{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],s=this.frameOffsets(),a=o[i+0],l=o[i+1],u=o[i+2],c=o[i+3],d=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,u,c),t.closePath(),t.fillStrokeShape(this)),d)if(s){var f=s[n],h=r*2;t.drawImage(d,a,l,u,c,f[h+0],f[h+1],u,c)}else t.drawImage(d,a,l,u,c,0,0,u,c)}_hitFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],s=this.frameOffsets(),a=o[i+2],l=o[i+3];if(t.beginPath(),s){var u=s[n],c=r*2;t.rect(u[c+0],u[c+1],a,l)}else t.rect(0,0,a,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 Dm;function C2(){return Dm||(Dm=rC.Util.createCanvasElement().getContext(bve),Dm)}function Rve(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function Ive(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function Mve(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}let un=class extends mve.Shape{constructor(t){super(Mve(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(_+=s)}}}_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=rC.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(Sve,n),this}getWidth(){var t=this.attrs.width===nc||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===nc||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 rC.Util.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=C2(),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()+Nm+this.fontVariant()+Nm+(this.fontSize()+Eve)+Ove(this.fontFamily())}_addTextLine(t){this.align()===xf&&(t=t.trim());var r=this._getTextWidth(t);return this.textArr.push({text:t,width:r,lastInParagraph:!1})}_getTextWidth(t){var n=this.letterSpacing(),r=t.length;return C2().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,s=this.attrs.height,a=o!==nc&&o!==void 0,l=s!==nc&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==rP,m=h!==kve&&p,b=this.ellipsis();this.textArr=[],C2().font=this._getContextFont();for(var _=b?this._getTextWidth(x2):0,y=0,g=t.length;yc)for(;v.length>0;){for(var w=0,C=v.length,x="",A=0;w>>1,P=v.slice(0,T+1),L=this._getTextWidth(P)+_;L<=c?(w=T+1,x=P,A=L):C=T}if(x){if(m){var R,E=v[x.length],k=E===Nm||E===tP;k&&A<=c?R=x.length:R=Math.max(x.lastIndexOf(Nm),x.lastIndexOf(tP))+1,R>0&&(w=R,x=x.slice(0,w),A=this._getTextWidth(x))}x=x.trimRight(),this._addTextLine(x),r=Math.max(r,A),f+=i;var N=this._shouldHandleEllipsis(f);if(N){this._tryToAddEllipsisToLastLine();break}if(v=v.slice(w),v=v.trimLeft(),v.length>0&&(S=this._getTextWidth(v),S<=c)){this._addTextLine(v),f+=i,r=Math.max(r,S);break}}else break}else this._addTextLine(v),f+=i,r=Math.max(r,S),this._shouldHandleEllipsis(f)&&yd)break}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==nc&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==rP;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==nc&&t!==void 0,r=this.padding(),i=t-r*2,o=this.ellipsis(),s=this.textArr[this.textArr.length-1];if(!(!s||!o)){if(n){var a=this._getTextWidth(s.text+x2)n?null:Cf.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=Cf.Path.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline",this.textBaseline()),t.setAttr("textAlign","left"),t.save();var n=this.textDecoration(),r=this.fill(),i=this.fontSize(),o=this.glyphInfo;n==="underline"&&t.beginPath();for(var s=0;s=1){var r=n[0].p0;t.moveTo(r.x,r.y)}for(var i=0;ie+`.${gB}`).join(" "),sP="nodesRect",Uve=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],jve={"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 Vve="ontouchstart"in Wi.Konva._global;function Gve(e,t){if(e==="rotater")return"crosshair";t+=lt.Util.degToRad(jve[e]||0);var n=(lt.Util.radToDeg(t)%360+360)%360;return lt.Util._inRange(n,315+22.5,360)||lt.Util._inRange(n,0,22.5)?"ns-resize":lt.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":lt.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":lt.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":lt.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":lt.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":lt.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":lt.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(lt.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var sv=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],aP=1e8;function Hve(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 mB(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 Wve(e,t){const n=Hve(e);return mB(e,t,n)}function qve(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(lt.Util.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1):!0);this._nodes=t=n,t.length===1&&this.useSingleNodeRotation()?this.rotation(t[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach(i=>{const o=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},s=i._attrsAffectingSize.map(a=>a+"Change."+this._getEventNamespace()).join(" ");i.on(s,o),i.on(Uve.map(a=>a+`.${this._getEventNamespace()}`).join(" "),o),i.on(`absoluteTransformChange.${this._getEventNamespace()}`,o),this._proxyDrag(i)}),this._resetTransformCache();var r=!!this.findOne(".top-left");return r&&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,s=i.y-n.y;this.nodes().forEach(a=>{if(a===t||a.isDragging())return;const l=a.getAbsolutePosition();a.setAbsolutePosition({x:l.x+o,y:l.y+s}),a.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(sP),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(sP,this.__getNodeRect)}__getNodeShape(t,n=this.rotation(),r){var i=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),o=t.getAbsoluteScale(r),s=t.getAbsolutePosition(r),a=i.x*o.x-t.offsetX()*o.x,l=i.y*o.y-t.offsetY()*o.y;const u=(Wi.Konva.getAngle(t.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),c={x:s.x+a*Math.cos(u)+l*Math.sin(-u),y:s.y+l*Math.cos(u)+a*Math.sin(u),width:i.width*o.x,height:i.height*o.y,rotation:u};return mB(c,-Wi.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-aP,y:-aP,width:0,height:0,rotation:0};const n=[];this.nodes().map(u=>{const c=u.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var d=[{x:c.x,y:c.y},{x:c.x+c.width,y:c.y},{x:c.x+c.width,y:c.y+c.height},{x:c.x,y:c.y+c.height}],f=u.getAbsoluteTransform();d.forEach(function(h){var p=f.point(h);n.push(p)})});const r=new lt.Transform;r.rotate(-Wi.Konva.getAngle(this.rotation()));var i,o,s,a;n.forEach(function(u){var c=r.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),r.invert();const l=r.point({x:i,y:o});return{x:l.x,y:l.y,width:s-i,height:a-o,rotation:Wi.Konva.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(),sv.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new Fve.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:Vve?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=Wi.Konva.getAngle(this.rotation()),o=Gve(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 $ve.Shape({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()*lt.Util._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 s=t.target.getAbsolutePosition(),a=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:a.x-s.x,y:a.y-s.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),s=o.getStage();s.setPointersPositions(t);const a=s.getPointerPosition();let l={x:a.x-this._anchorDragOffset.x,y:a.y-this._anchorDragOffset.y};const u=o.getAbsolutePosition();this.anchorDragBoundFunc()&&(l=this.anchorDragBoundFunc()(u,l,t)),o.setAbsolutePosition(l);const c=o.getAbsolutePosition();if(!(u.x===c.x&&u.y===c.y)){if(this._movingAnchorName==="rotater"){var d=this._getNodeRect();n=o.x()-d.width/2,r=-o.y()+d.height/2;let R=Math.atan2(-r,n)+Math.PI/2;d.height<0&&(R-=Math.PI);var f=Wi.Konva.getAngle(this.rotation());const E=f+R,k=Wi.Konva.getAngle(this.rotationSnapTolerance()),$=qve(this.rotationSnaps(),E,k)-d.rotation,M=Wve(d,$);this._fitNodesInto(M,t);return}var h=this.shiftBehavior(),p;h==="inverted"?p=this.keepRatio()&&!t.shiftKey:h==="none"?p=this.keepRatio():p=this.keepRatio()||t.shiftKey;var g=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(p){var m=g?{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(m.x-o.x(),2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-left").x()>m.x?-1:1,_=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-left").x(m.x-n),this.findOne(".top-left").y(m.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(p){var m=g?{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()-m.x,2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-right").x(m.x+n),this.findOne(".top-right").y(m.y-r)}var y=o.position();this.findOne(".top-left").y(y.y),this.findOne(".bottom-right").x(y.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(p){var m=g?{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(m.x-o.x(),2)+Math.pow(o.y()-m.y,2));var b=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(lt.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(lt.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new lt.Transform;if(s.rotate(Wi.Konva.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const d=s.point({x:-this.padding()*2,y:0});if(t.x+=d.x,t.y+=d.y,t.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,!o){this.update();return}}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const d=s.point({x:this.padding()*2,y:0});if(this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.width+=this.padding()*2,!o){this.update();return}}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const d=s.point({x:0,y:-this.padding()*2});if(t.x+=d.x,t.y+=d.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const d=s.point({x:0,y:this.padding()*2});if(this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}if(this.boundBoxFunc()){const d=this.boundBoxFunc()(r,t);d?t=d:lt.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new lt.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new lt.Transform;u.translate(t.x,t.y),u.rotate(t.rotation),u.scale(t.width/a,t.height/a);const c=u.multiply(l.invert());this._nodes.forEach(d=>{var f;const h=d.getParent().getAbsoluteTransform(),p=d.getTransform().copy();p.translate(d.offsetX(),d.offsetY());const m=new lt.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const b=m.decompose();d.setAttrs(b),this._fire("transform",{evt:n,target:d}),d._fire("transform",{evt:n,target:d}),(f=d.getLayer())===null||f===void 0||f.batchDraw()}),this.rotation(lt.Util._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(lt.Util._getRotation(n.rotation));var r=n.width,i=n.height,o=this.enabledAnchors(),s=this.resizeEnabled(),a=this.padding(),l=this.anchorSize();const u=this.find("._anchor");u.forEach(d=>{d.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+a,offsetY:l/2+a,visible:s&&o.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:r/2,y:0,offsetY:l/2+a,visible:s&&o.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:r,y:0,offsetX:l/2-a,offsetY:l/2+a,visible:s&&o.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:i/2,offsetX:l/2+a,visible:s&&o.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:r,y:i/2,offsetX:l/2-a,visible:s&&o.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:i,offsetX:l/2+a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:r/2,y:i,offsetY:l/2-a,visible:s&&o.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:r,y:i,offsetX:l/2-a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:r/2,y:-this.rotateAnchorOffset()*lt.Util._sign(i)-a,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});const c=this.anchorStyleFunc();c&&u.forEach(d=>{c(d)}),(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=""),oP.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return iP.Node.prototype.toObject.call(this)}clone(t){var n=iP.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}$_.Transformer=Je;function Kve(e){return e instanceof Array||lt.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){sv.indexOf(t)===-1&<.Util.warn("Unknown anchor name: "+t+". Available names are: "+sv.join(", "))}),e||[]}Je.prototype.className="Transformer";(0,Bve._registerNode)(Je);at.Factory.addGetterSetter(Je,"enabledAnchors",sv,Kve);at.Factory.addGetterSetter(Je,"flipEnabled",!0,(0,hl.getBooleanValidator)());at.Factory.addGetterSetter(Je,"resizeEnabled",!0);at.Factory.addGetterSetter(Je,"anchorSize",10,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"rotateEnabled",!0);at.Factory.addGetterSetter(Je,"rotationSnaps",[]);at.Factory.addGetterSetter(Je,"rotateAnchorOffset",50,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"rotationSnapTolerance",5,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"borderEnabled",!0);at.Factory.addGetterSetter(Je,"anchorStroke","rgb(0, 161, 255)");at.Factory.addGetterSetter(Je,"anchorStrokeWidth",1,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"anchorFill","white");at.Factory.addGetterSetter(Je,"anchorCornerRadius",0,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"borderStroke","rgb(0, 161, 255)");at.Factory.addGetterSetter(Je,"borderStrokeWidth",1,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"borderDash");at.Factory.addGetterSetter(Je,"keepRatio",!0);at.Factory.addGetterSetter(Je,"shiftBehavior","default");at.Factory.addGetterSetter(Je,"centeredScaling",!1);at.Factory.addGetterSetter(Je,"ignoreStroke",!1);at.Factory.addGetterSetter(Je,"padding",0,(0,hl.getNumberValidator)());at.Factory.addGetterSetter(Je,"node");at.Factory.addGetterSetter(Je,"nodes");at.Factory.addGetterSetter(Je,"boundBoxFunc");at.Factory.addGetterSetter(Je,"anchorDragBoundFunc");at.Factory.addGetterSetter(Je,"anchorStyleFunc");at.Factory.addGetterSetter(Je,"shouldOverdrawWholeArea",!1);at.Factory.addGetterSetter(Je,"useSingleNodeRotation",!0);at.Factory.backCompat(Je,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var F_={};Object.defineProperty(F_,"__esModule",{value:!0});F_.Wedge=void 0;const B_=Ne,Xve=Cn,Yve=Le,yB=be,Zve=Le;class qs extends Xve.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,Yve.Konva.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)}}F_.Wedge=qs;qs.prototype.className="Wedge";qs.prototype._centroid=!0;qs.prototype._attrsAffectingSize=["radius"];(0,Zve._registerNode)(qs);B_.Factory.addGetterSetter(qs,"radius",0,(0,yB.getNumberValidator)());B_.Factory.addGetterSetter(qs,"angle",0,(0,yB.getNumberValidator)());B_.Factory.addGetterSetter(qs,"clockwise",!1);B_.Factory.backCompat(qs,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var z_={};Object.defineProperty(z_,"__esModule",{value:!0});z_.Blur=void 0;const lP=Ne,Qve=Ut,Jve=be;function uP(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var e1e=[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],t1e=[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 n1e(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,C,x,A,T,P,L,R=t+t+1,E=r-1,k=i-1,N=t+1,$=N*(N+1)/2,M=new uP,O=null,D=M,F=null,U=null,V=e1e[t],q=t1e[t];for(a=1;a>q,P!==0?(P=255/P,n[c]=(f*V>>q)*P,n[c+1]=(h*V>>q)*P,n[c+2]=(p*V>>q)*P):n[c]=n[c+1]=n[c+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=d+((l=o+t+1)>q,P>0?(P=255/P,n[l]=(f*V>>q)*P,n[l+1]=(h*V>>q)*P,n[l+2]=(p*V>>q)*P):n[l]=n[l+1]=n[l+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=o+((l=s+N)0&&n1e(t,n)};z_.Blur=r1e;lP.Factory.addGetterSetter(Qve.Node,"blurRadius",0,(0,Jve.getNumberValidator)(),lP.Factory.afterSetFilter);var U_={};Object.defineProperty(U_,"__esModule",{value:!0});U_.Brighten=void 0;const cP=Ne,i1e=Ut,o1e=be,s1e=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,s=s<0?0:s>255?255:s,n[a]=i,n[a+1]=o,n[a+2]=s};j_.Contrast=u1e;dP.Factory.addGetterSetter(a1e.Node,"contrast",0,(0,l1e.getNumberValidator)(),dP.Factory.afterSetFilter);var V_={};Object.defineProperty(V_,"__esModule",{value:!0});V_.Emboss=void 0;const Ya=Ne,G_=Ut,c1e=Yt,vB=be,d1e=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,s=0,a=e.data,l=e.width,u=e.height,c=l*4,d=u;switch(r){case"top-left":o=-1,s=-1;break;case"top":o=-1,s=0;break;case"top-right":o=-1,s=1;break;case"right":o=0,s=1;break;case"bottom-right":o=1,s=1;break;case"bottom":o=1,s=0;break;case"bottom-left":o=1,s=-1;break;case"left":o=0,s=-1;break;default:c1e.Util.error("Unknown emboss direction: "+r)}do{var f=(d-1)*c,h=o;d+h<1&&(h=0),d+h>u&&(h=0);var p=(d-1+h)*l*4,m=l;do{var b=f+(m-1)*4,_=s;m+_<1&&(_=0),m+_>l&&(_=0);var y=p+(m-1+_)*4,g=a[b]-a[y],v=a[b+1]-a[y+1],S=a[b+2]-a[y+2],w=g,C=w>0?w:-w,x=v>0?v:-v,A=S>0?S:-S;if(x>C&&(w=v),A>C&&(w=S),w*=t,i){var T=a[b]+w,P=a[b+1]+w,L=a[b+2]+w;a[b]=T>255?255:T<0?0:T,a[b+1]=P>255?255:P<0?0:P,a[b+2]=L>255?255:L<0?0:L}else{var R=n-w;R<0?R=0:R>255&&(R=255),a[b]=a[b+1]=a[b+2]=R}}while(--m)}while(--d)};V_.Emboss=d1e;Ya.Factory.addGetterSetter(G_.Node,"embossStrength",.5,(0,vB.getNumberValidator)(),Ya.Factory.afterSetFilter);Ya.Factory.addGetterSetter(G_.Node,"embossWhiteLevel",.5,(0,vB.getNumberValidator)(),Ya.Factory.afterSetFilter);Ya.Factory.addGetterSetter(G_.Node,"embossDirection","top-left",null,Ya.Factory.afterSetFilter);Ya.Factory.addGetterSetter(G_.Node,"embossBlend",!1,null,Ya.Factory.afterSetFilter);var H_={};Object.defineProperty(H_,"__esModule",{value:!0});H_.Enhance=void 0;const fP=Ne,f1e=Ut,h1e=be;function A2(e,t,n,r,i){var o=n-t,s=i-r,a;return o===0?r+s/2:s===0?r:(a=(e-t)/o,a=s*a+r,a)}const p1e=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,s=t[1],a=s,l,u=t[2],c=u,d,f,h=this.enhance();if(h!==0){for(f=0;fi&&(i=o),l=t[f+1],la&&(a=l),d=t[f+2],dc&&(c=d);i===r&&(i=255,r=0),a===s&&(a=255,s=0),c===u&&(c=255,u=0);var p,m,b,_,y,g,v,S,w;for(h>0?(m=i+h*(255-i),b=r-h*(r-0),y=a+h*(255-a),g=s-h*(s-0),S=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),b=r+h*(r-p),_=(a+s)*.5,y=a+h*(a-_),g=s+h*(s-_),v=(c+u)*.5,S=c+h*(c-v),w=u+h*(u-v)),f=0;f_?b:_;var y=s,g=o,v,S,w=360/g*Math.PI/180,C,x;for(S=0;Sg?y:g;var v=s,S=o,w,C,x=n.polarRotation||0,A,T;for(c=0;ct&&(v=g,S=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function P1e(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),s=[],a=0;a=0&&h=0&&p=n))for(o=m;o=r||(s=(n*o+i)*4,a+=v[s+0],l+=v[s+1],u+=v[s+2],c+=v[s+3],g+=1);for(a=a/g,l=l/g,u=u/g,c=c/g,i=h;i=n))for(o=m;o=r||(s=(n*o+i)*4,v[s+0]=a,v[s+1]=l,v[s+2]=u,v[s+3]=c)}};J_.Pixelate=$1e;mP.Factory.addGetterSetter(D1e.Node,"pixelSize",8,(0,L1e.getNumberValidator)(),mP.Factory.afterSetFilter);var eb={};Object.defineProperty(eb,"__esModule",{value:!0});eb.Posterize=void 0;const yP=Ne,F1e=Ut,B1e=be,z1e=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)});lv.Factory.addGetterSetter(OE.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});lv.Factory.addGetterSetter(OE.Node,"blue",0,U1e.RGBComponent,lv.Factory.afterSetFilter);var nb={};Object.defineProperty(nb,"__esModule",{value:!0});nb.RGBA=void 0;const xp=Ne,rb=Ut,V1e=be,G1e=function(e){var t=e.data,n=t.length,r=this.red(),i=this.green(),o=this.blue(),s=this.alpha(),a,l;for(a=0;a255?255:e<0?0:Math.round(e)});xp.Factory.addGetterSetter(rb.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});xp.Factory.addGetterSetter(rb.Node,"blue",0,V1e.RGBComponent,xp.Factory.afterSetFilter);xp.Factory.addGetterSetter(rb.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var ib={};Object.defineProperty(ib,"__esModule",{value:!0});ib.Sepia=void 0;const H1e=function(e){var t=e.data,n=t.length,r,i,o,s;for(r=0;r127&&(u=255-u),c>127&&(c=255-c),d>127&&(d=255-d),t[l]=u,t[l+1]=c,t[l+2]=d}while(--a)}while(--o)};ob.Solarize=W1e;var sb={};Object.defineProperty(sb,"__esModule",{value:!0});sb.Threshold=void 0;const vP=Ne,q1e=Ut,K1e=be,X1e=function(e){var t=this.threshold()*255,n=e.data,r=n.length,i;for(i=0;i{const{width:r,height:i}=t,o=document.createElement("div"),s=new Tf.Stage({container:o,width:r,height:i}),a=new Tf.Layer,l=new Tf.Layer;return a.add(new Tf.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new Tf.Line({points:u.points,stroke:n?"white":"black",strokeWidth:u.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,globalCompositeOperation:u.tool==="brush"?"source-over":"destination-out"}))),s.add(a),s.add(l),o.remove(),s},D_e=async(e,t,n)=>new Promise((r,i)=>{const o=document.createElement("canvas");o.width=t,o.height=n;const s=o.getContext("2d"),a=new Image;if(!s){o.remove(),i("Unable to get context");return}a.onload=function(){s.drawImage(a,0,0),o.remove(),r(s.getImageData(0,0,t,n))},a.src=e}),SP=async(e,t)=>{const n=e.toDataURL(t);return await D_e(n,t.width,t.height)},RE=async(e,t,n,r,i)=>{const o=re("canvas"),s=h_(),a=P0e();if(!s||!a){o.error("Unable to find canvas / stage");return}const l={...t,...n},u=s.clone();u.scale({x:1,y:1});const c=u.getAbsolutePosition(),d={x:l.x+c.x,y:l.y+c.y,width:l.width,height:l.height},f=await iv(u,d),h=await SP(u,d),p=await N_e(r?e.objects.filter(uN):[],l,i),m=await iv(p,l),b=await SP(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:b}},L_e=()=>{le({actionCreator:w0e,effect:async(e,{dispatch:t,getState:n})=>{const r=re("canvas"),i=n(),o=await RE(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Wt({title:"Problem Saving Mask",description:"Unable to export mask",status:"error"}));return}const{autoAddBoardId:a}=i.gallery;t(ne.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Mask Saved to Assets"}}}))}})},$_e=()=>{le({actionCreator:A0e,effect:async(e,{dispatch:t,getState:n})=>{const r=re("canvas"),i=n(),o=await RE(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Wt({title:"Problem Importing Mask",description:"Unable to export mask",status:"error"}));return}const{autoAddBoardId:a}=i.gallery,l=await t(ne.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Mask Sent to ControlNet & Assets"}}})).unwrap(),{image_name:u}=l;t(Eu({controlNetId:e.payload.controlNet.controlNetId,controlImage:u}))}})},F_e=async()=>{const e=h_();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),iv(t,t.getClientRect())},B_e=()=>{le({actionCreator:E0e,effect:async(e,{dispatch:t})=>{const n=f_.get().child({namespace:"canvasCopiedToClipboardListener"}),r=await F_e();if(!r){n.error("Problem getting base layer blob"),t(Wt({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const i=h_();if(!i){n.error("Problem getting canvas base layer"),t(Wt({title:"Problem Merging Canvas",description:"Unable to export base layer",status:"error"}));return}const o=i.getClientRect({relativeTo:i.getParent()}),s=await t(ne.endpoints.uploadImage.initiate({file:new File([r],"mergedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Merged"}}})).unwrap(),{image_name:a}=s;t(tne({kind:"image",layer:"base",imageName:a,...o}))}})},z_e=()=>{le({actionCreator:S0e,effect:async(e,{dispatch:t,getState:n})=>{const r=re("canvas"),i=n(),o=await p_(i);if(!o){r.error("Problem getting base layer blob"),t(Wt({title:"Problem Saving Canvas",description:"Unable to export base layer",status:"error"}));return}const{autoAddBoardId:s}=i.gallery;t(ne.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:"Canvas Saved to Gallery"}}}))}})},U_e=(e,t,n)=>{var d;if(!(Uae.match(e)||gk.match(e)||Eu.match(e)||jae.match(e)||mk.match(e))||mk.match(e)&&((d=n.controlNet.controlNets[e.payload.controlNetId])==null?void 0:d.shouldAutoConfig)===!0)return!1;const i=t.controlNet.controlNets[e.payload.controlNetId];if(!i)return!1;const{controlImage:o,processorType:s,shouldAutoConfig:a}=i;if(gk.match(e)&&!a)return!1;const l=s!=="none",u=t.system.isProcessing;return l&&!u&&!!o},j_e=()=>{le({predicate:U_e,effect:async(e,{dispatch:t,cancelActiveListeners:n,delay:r})=>{const i=re("session"),{controlNetId:o}=e.payload;n(),i.trace("ControlNet auto-process triggered"),await r(300),t(U5({controlNetId:o}))}})},Nu=me("system/sessionReadyToInvoke"),SB=e=>(e==null?void 0:e.type)==="image_output",V_e=()=>{le({actionCreator:U5,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=re("session"),{controlNetId:o}=e.payload,s=n().controlNet.controlNets[o];if(!(s!=null&&s.controlImage)){i.error("Unable to process ControlNet image");return}const a={nodes:{[s.processorNode.id]:{...s.processorNode,is_intermediate:!0,image:{image_name:s.controlImage}}}},l=t(er({graph:a})),[u]=await r(f=>er.fulfilled.match(f)&&f.meta.requestId===l.requestId),c=u.payload.id;t(Nu());const[d]=await r(f=>F5.match(f)&&f.payload.data.graph_execution_state_id===c);if(SB(d.payload.data.result)){const{image_name:f}=d.payload.data.result.image,[{payload:h}]=await r(m=>ne.endpoints.getImageDTO.matchFulfilled(m)&&m.payload.image_name===f),p=h;i.debug({controlNetId:e.payload,processedControlImage:p},"ControlNet image processed"),t(j5({controlNetId:o,processedControlImage:p.image_name}))}}})},G_e=()=>{le({matcher:ne.endpoints.addImageToBoard.matchFulfilled,effect:e=>{const t=re("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Image added to board")}})},H_e=()=>{le({matcher:ne.endpoints.addImageToBoard.matchRejected,effect:e=>{const t=re("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Problem adding image to board")}})},IE=me("deleteImageModal/imageDeletionConfirmed"),n9e=fr(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],gE),wB=fr([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t,categories:n==="images"?Pn:_a,offset:0,limit:ane,is_intermediate:!1}},gE),W_e=()=>{le({actionCreator:IE,effect:async(e,{dispatch:t,getState:n,condition:r})=>{var f;const{imageDTOs:i,imagesUsage:o}=e.payload;if(i.length!==1||o.length!==1)return;const s=i[0],a=o[0];if(!s||!a)return;t(V5(!1));const l=n(),u=(f=l.gallery.selection[l.gallery.selection.length-1])==null?void 0:f.image_name;if(s&&(s==null?void 0:s.image_name)===u){const{image_name:h}=s,p=wB(l),{data:m}=ne.endpoints.listImages.select(p)(l),b=m?Tt.getSelectors().selectAll(m):[],_=b.findIndex(S=>S.image_name===h),y=b.filter(S=>S.image_name!==h),g=ya(_,0,y.length-1),v=y[g];t(jo(v||null))}a.isCanvasImage&&t(y5()),i.forEach(h=>{var p;((p=n().generation.initialImage)==null?void 0:p.imageName)===h.image_name&&t(m5()),Ii(n().controlNet.controlNets,m=>{(m.controlImage===h.image_name||m.processedControlImage===h.image_name)&&(t(Eu({controlNetId:m.controlNetId,controlImage:null})),t(j5({controlNetId:m.controlNetId,processedControlImage:null})))}),n().nodes.nodes.forEach(m=>{An(m)&&Ii(m.data.inputs,b=>{var _;b.type==="ImageField"&&((_=b.value)==null?void 0:_.image_name)===h.image_name&&t(G1({nodeId:m.data.id,fieldName:b.name,value:void 0}))})})});const{requestId:c}=t(ne.endpoints.deleteImage.initiate(s));await r(h=>ne.endpoints.deleteImage.matchFulfilled(h)&&h.meta.requestId===c,3e4)&&t(Ka.util.invalidateTags([{type:"Board",id:s.board_id}]))}})},q_e=()=>{le({actionCreator:IE,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTOs:r,imagesUsage:i}=e.payload;if(!(r.length<=1||i.length<=1))try{await t(ne.endpoints.deleteImages.initiate({imageDTOs:r})).unwrap();const o=n(),s=wB(o),{data:a}=ne.endpoints.listImages.select(s)(o),l=a?Tt.getSelectors().selectAll(a)[0]:void 0;t(jo(l||null)),t(V5(!1)),i.some(u=>u.isCanvasImage)&&t(y5()),r.forEach(u=>{var c;((c=n().generation.initialImage)==null?void 0:c.imageName)===u.image_name&&t(m5()),Ii(n().controlNet.controlNets,d=>{(d.controlImage===u.image_name||d.processedControlImage===u.image_name)&&(t(Eu({controlNetId:d.controlNetId,controlImage:null})),t(j5({controlNetId:d.controlNetId,processedControlImage:null})))}),n().nodes.nodes.forEach(d=>{An(d)&&Ii(d.data.inputs,f=>{var h;f.type==="ImageField"&&((h=f.value)==null?void 0:h.image_name)===u.image_name&&t(G1({nodeId:d.data.id,fieldName:f.name,value:void 0}))})})})}catch{}}})},K_e=()=>{le({matcher:ne.endpoints.deleteImage.matchPending,effect:()=>{}})},X_e=()=>{le({matcher:ne.endpoints.deleteImage.matchFulfilled,effect:e=>{re("images").debug({imageDTO:e.meta.arg.originalArgs},"Image deleted")}})},Y_e=()=>{le({matcher:ne.endpoints.deleteImage.matchRejected,effect:e=>{re("images").debug({imageDTO:e.meta.arg.originalArgs},"Unable to delete image")}})},kt=e=>{try{return JSON.parse(JSON.stringify(e))}catch{return"Error parsing object"}},xB=me("dnd/dndDropped"),Z_e=()=>{le({actionCreator:xB,effect:async(e,{dispatch:t})=>{const n=re("dnd"),{activeData:r,overData:i}=e.payload;if(r.payloadType==="IMAGE_DTO"?n.debug({activeData:r,overData:i},"Image dropped"):r.payloadType==="IMAGE_DTOS"?n.debug({activeData:r,overData:i},`Images (${r.payload.imageDTOs.length}) dropped`):r.payloadType==="NODE_FIELD"?n.debug({activeData:kt(r),overData:kt(i)},"Node field dropped"):n.debug({activeData:r,overData:i},"Unknown payload dropped"),i.actionType==="ADD_FIELD_TO_LINEAR"&&r.payloadType==="NODE_FIELD"){const{nodeId:o,field:s}=r.payload;t(Nhe({nodeId:o,fieldName:s.name}))}if(i.actionType==="SET_CURRENT_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(jo(r.payload.imageDTO));return}if(i.actionType==="SET_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(d1(r.payload.imageDTO));return}if(i.actionType==="SET_CONTROLNET_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{controlNetId:o}=i.context;t(Eu({controlImage:r.payload.imageDTO.image_name,controlNetId:o}));return}if(i.actionType==="SET_CANVAS_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(fN(r.payload.imageDTO));return}if(i.actionType==="SET_NODES_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{fieldName:o,nodeId:s}=i.context;t(G1({nodeId:s,fieldName:o,value:r.payload.imageDTO}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload,{boardId:s}=i.context;t(ne.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload;t(ne.endpoints.removeImageFromBoard.initiate({imageDTO:o}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload,{boardId:s}=i.context;t(ne.endpoints.addImagesToBoard.initiate({imageDTOs:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload;t(ne.endpoints.removeImagesFromBoard.initiate({imageDTOs:o}));return}}})},Q_e=()=>{le({matcher:ne.endpoints.removeImageFromBoard.matchFulfilled,effect:e=>{const t=re("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Image removed from board")}})},J_e=()=>{le({matcher:ne.endpoints.removeImageFromBoard.matchRejected,effect:e=>{const t=re("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Problem removing image from board")}})},ebe=()=>{le({actionCreator:Wae,effect:async(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{shouldConfirmOnDelete:o}=i.system,s=v0e(n()),a=s.some(l=>l.isCanvasImage)||s.some(l=>l.isInitialImage)||s.some(l=>l.isControlNetImage)||s.some(l=>l.isNodesImage);if(o||a){t(V5(!0));return}t(IE({imageDTOs:r,imagesUsage:s}))}})},rc={title:"Image Uploaded",status:"success"},tbe=()=>{le({matcher:ne.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=re("images"),i=e.payload,o=n(),{autoAddBoardId:s}=o.gallery;r.debug({imageDTO:i},"Image uploaded");const{postUploadAction:a}=e.meta.arg.originalArgs;if(!(e.payload.is_intermediate&&!a)){if((a==null?void 0:a.type)==="TOAST"){const{toastOptions:l}=a;if(!s||s==="none")t(Wt({...rc,...l}));else{t(ne.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:i}));const{data:u}=Wn.endpoints.listAllBoards.select()(o),c=u==null?void 0:u.find(f=>f.board_id===s),d=c?`Added to board ${c.board_name}`:`Added to board ${s}`;t(Wt({...rc,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t(fN(i)),t(Wt({...rc,description:"Set as canvas initial image"}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(Eu({controlNetId:l,controlImage:i.image_name})),t(Wt({...rc,description:"Set as control image"}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(d1(i)),t(Wt({...rc,description:"Set as initial image"}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(G1({nodeId:l,fieldName:u,value:i})),t(Wt({...rc,description:`Set as node field ${u}`}));return}}}})},nbe=()=>{le({matcher:ne.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const n=re("images"),r={arg:{...l1(e.meta.arg.originalArgs,["file","postUploadAction"]),file:""}};n.error({...r},"Image upload failed"),t(Wt({title:"Image Upload Failed",description:e.error.message,status:"error"}))}})},rbe=()=>{le({matcher:ne.endpoints.starImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!0}):s.push(a)}),t(mL(s))}})},ibe=()=>{le({matcher:ne.endpoints.unstarImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!1}):s.push(a)}),t(mL(s))}})},obe=me("generation/initialImageSelected"),sbe=me("generation/modelSelected"),abe=()=>{le({actionCreator:obe,effect:(e,{dispatch:t})=>{if(!e.payload){t(Wt(Sa({title:sh("toast.imageNotLoadedDesc"),status:"error"})));return}t(d1(e.payload)),t(Wt(Sa(sh("toast.sentToImageToImage"))))}})},lbe=()=>{le({actionCreator:sbe,effect:(e,{getState:t,dispatch:n})=>{var l,u;const r=re("models"),i=t(),o=Fd.safeParse(e.payload);if(!o.success){r.error({error:o.error.format()},"Failed to parse main model");return}const s=o.data,{base_model:a}=s;if(((l=i.generation.model)==null?void 0:l.base_model)!==a){let c=0;Ii(i.lora.loras,(h,p)=>{h.base_model!==a&&(n(vL(p)),c+=1)});const{vae:d}=i.generation;d&&d.base_model!==a&&(n(aN(null)),c+=1);const{controlNets:f}=i.controlNet;Ii(f,(h,p)=>{var m;((m=h.model)==null?void 0:m.base_model)!==a&&(n(cL({controlNetId:p})),c+=1)}),c>0&&n(Wt(Sa({title:`Base model changed, cleared ${c} incompatible submodel${c===1?"":"s"}`,status:"warning"})))}((u=i.generation.model)==null?void 0:u.base_model)!==s.base_model&&i.ui.shouldAutoChangeDimensions&&(["sdxl","sdxl-refiner"].includes(s.base_model)?(n(Z6(1024)),n(Q6(1024)),n(J6({width:1024,height:1024}))):(n(Z6(512)),n(Q6(512)),n(J6({width:512,height:512})))),n(va(s))}})},Cp=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),wP=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),xP=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),CP=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),EP=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),iC=il({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),ube=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,ic=e=>{const t=[];return e.forEach(n=>{const r={...Jt(n),id:ube(n)};t.push(r)}),t},bs=Ka.injectEndpoints({endpoints:e=>({getOnnxModels:e.query({query:t=>{const n={model_type:"onnx",base_models:t};return`models/?${g0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"OnnxModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"OnnxModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return wP.setAll(wP.getInitialState(),n)}}),getMainModels:e.query({query:t=>{const n={model_type:"main",base_models:t};return`models/?${g0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"MainModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"MainModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return Cp.setAll(Cp.getInitialState(),n)}}),updateMainModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/main/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n,model_type:r})=>({url:`models/${t}/${r}/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,convert_dest_directory:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:{convert_dest_directory:r}}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"OnnxModel",id:Pe}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:t=>{const n=[{type:"LoRAModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"LoRAModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return xP.setAll(xP.getInitialState(),n)}}),updateLoRAModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/lora/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"LoRAModel",id:Pe}]}),deleteLoRAModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/lora/${n}`,method:"DELETE"}),invalidatesTags:[{type:"LoRAModel",id:Pe}]}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:t=>{const n=[{type:"ControlNetModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"ControlNetModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return CP.setAll(CP.getInitialState(),n)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:t=>{const n=[{type:"VaeModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"VaeModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return iC.setAll(iC.getInitialState(),n)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:t=>{const n=[{type:"TextualInversionModel",id:Pe}];return t&&n.push(...t.ids.map(r=>({type:"TextualInversionModel",id:r}))),n},transformResponse:t=>{const n=ic(t.models);return EP.setAll(EP.getInitialState(),n)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${g0.stringify(t,{})}`}),providesTags:t=>{const n=[{type:"ScannedModels",id:Pe}];return t&&n.push(...t.map(r=>({type:"ScannedModels",id:r}))),n}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:r9e,useGetOnnxModelsQuery:i9e,useGetControlNetModelsQuery:o9e,useGetLoRAModelsQuery:s9e,useGetTextualInversionModelsQuery:a9e,useGetVaeModelsQuery:l9e,useUpdateMainModelsMutation:u9e,useDeleteMainModelsMutation:c9e,useImportMainModelsMutation:d9e,useAddMainModelsMutation:f9e,useConvertMainModelsMutation:h9e,useMergeMainModelsMutation:p9e,useDeleteLoRAModelsMutation:g9e,useUpdateLoRAModelsMutation:m9e,useSyncModelsMutation:y9e,useGetModelsInFolderQuery:v9e,useGetCheckpointConfigsQuery:_9e}=bs,cbe=()=>{le({predicate:e=>bs.endpoints.getMainModels.matchFulfilled(e)&&!e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=re("models");r.info({models:e.payload.entities},`Main models loaded (${e.payload.ids.length})`);const i=t().generation.model,o=Cp.getSelectors().selectAll(e.payload);if(o.length===0){n(va(null));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=Fd.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse main model");return}n(va(a.data))}}),le({predicate:e=>bs.endpoints.getMainModels.matchFulfilled(e)&&e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=re("models");r.info({models:e.payload.entities},`SDXL Refiner models loaded (${e.payload.ids.length})`);const i=t().sdxl.refinerModel,o=Cp.getSelectors().selectAll(e.payload);if(o.length===0){n(u8(null)),n(Fhe(!1));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=g5.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse SDXL Refiner Model");return}n(u8(a.data))}}),le({matcher:bs.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=re("models");r.info({models:e.payload.entities},`VAEs loaded (${e.payload.ids.length})`);const i=t().generation.vae;if(i===null||nh(e.payload.entities,l=>(l==null?void 0:l.model_name)===(i==null?void 0:i.model_name)&&(l==null?void 0:l.base_model)===(i==null?void 0:i.base_model)))return;const s=iC.getSelectors().selectAll(e.payload)[0];if(!s){n(va(null));return}const a=Ete.safeParse(s);if(!a.success){r.error({error:a.error.format()},"Failed to parse VAE model");return}n(aN(a.data))}}),le({matcher:bs.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{re("models").info({models:e.payload.entities},`LoRAs loaded (${e.payload.ids.length})`);const i=t().lora.loras;Ii(i,(o,s)=>{nh(e.payload.entities,l=>(l==null?void 0:l.model_name)===(o==null?void 0:o.model_name)&&(l==null?void 0:l.base_model)===(o==null?void 0:o.base_model))||n(vL(s))})}}),le({matcher:bs.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{re("models").info({models:e.payload.entities},`ControlNet models loaded (${e.payload.ids.length})`);const i=t().controlNet.controlNets;Ii(i,(o,s)=>{nh(e.payload.entities,l=>{var u,c;return(l==null?void 0:l.model_name)===((u=o==null?void 0:o.model)==null?void 0:u.model_name)&&(l==null?void 0:l.base_model)===((c=o==null?void 0:o.model)==null?void 0:c.base_model)})||n(cL({controlNetId:s}))})}}),le({matcher:bs.endpoints.getTextualInversionModels.matchFulfilled,effect:async e=>{re("models").info({models:e.payload.entities},`Embeddings loaded (${e.payload.ids.length})`)}})},k2=e=>{const t=e.$ref.split("/").slice(-1)[0];if(!t)throw`Unknown field type: ${t}`;return t},dbe=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},fbe=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},hbe=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},pbe=({schemaObject:e,baseField:t})=>({...t,type:"boolean",default:e.default??!1}),gbe=({schemaObject:e,baseField:t})=>({...t,type:"MainModelField",default:e.default??void 0}),mbe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLMainModelField",default:e.default??void 0}),ybe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLRefinerModelField",default:e.default??void 0}),vbe=({schemaObject:e,baseField:t})=>({...t,type:"VaeModelField",default:e.default??void 0}),_be=({schemaObject:e,baseField:t})=>({...t,type:"LoRAModelField",default:e.default??void 0}),bbe=({schemaObject:e,baseField:t})=>({...t,type:"ControlNetModelField",default:e.default??void 0}),Sbe=({schemaObject:e,baseField:t})=>({...t,type:"ImageField",default:e.default??void 0}),wbe=({schemaObject:e,baseField:t})=>({...t,type:"ImageCollection",default:e.default??void 0}),xbe=({schemaObject:e,baseField:t})=>({...t,type:"DenoiseMaskField",default:e.default??void 0}),Cbe=({schemaObject:e,baseField:t})=>({...t,type:"LatentsField",default:e.default??void 0}),Ebe=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningField",default:e.default??void 0}),Tbe=({schemaObject:e,baseField:t})=>({...t,type:"UNetField",default:e.default??void 0}),Abe=({schemaObject:e,baseField:t})=>({...t,type:"ClipField",default:e.default??void 0}),kbe=({schemaObject:e,baseField:t})=>({...t,type:"VaeField",default:e.default??void 0}),Pbe=({schemaObject:e,baseField:t})=>({...t,type:"ControlField",default:e.default??void 0}),Obe=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",enumType:e.type??"string",options:n,default:e.default??n[0]}},Rbe=({baseField:e})=>({...e,type:"Collection",default:[]}),Ibe=({baseField:e})=>({...e,type:"CollectionItem",default:void 0}),Mbe=({schemaObject:e,baseField:t})=>({...t,type:"ColorField",default:e.default??{r:127,g:127,b:127,a:255}}),Nbe=({schemaObject:e,baseField:t})=>({...t,type:"Scheduler",default:e.default??"euler"}),TP=e=>{let t="";const{ui_type:n}=e;return n?t=n:e.type?e.enum?t="enum":e.type&&(e.type==="number"?t="float":t=e.type):e.allOf?t=k2(e.allOf[0]):e.anyOf?t=k2(e.anyOf[0]):e.oneOf&&(t=k2(e.oneOf[0])),t},Dbe=(e,t,n,r)=>{var d;const{input:i,ui_hidden:o,ui_component:s,ui_type:a,ui_order:l}=t,u={input:i,ui_hidden:o,ui_component:s,ui_type:a,required:((d=e.required)==null?void 0:d.includes(n))??!1,ui_order:l},c={name:n,title:t.title??"",description:t.description??"",fieldKind:"input",...u};if(r==="ImageField")return Sbe({schemaObject:t,baseField:c});if(r==="ImageCollection")return wbe({schemaObject:t,baseField:c});if(r==="DenoiseMaskField")return xbe({schemaObject:t,baseField:c});if(r==="LatentsField")return Cbe({schemaObject:t,baseField:c});if(r==="ConditioningField")return Ebe({schemaObject:t,baseField:c});if(r==="UNetField")return Tbe({schemaObject:t,baseField:c});if(r==="ClipField")return Abe({schemaObject:t,baseField:c});if(r==="VaeField")return kbe({schemaObject:t,baseField:c});if(r==="ControlField")return Pbe({schemaObject:t,baseField:c});if(r==="MainModelField")return gbe({schemaObject:t,baseField:c});if(r==="SDXLRefinerModelField")return ybe({schemaObject:t,baseField:c});if(r==="SDXLMainModelField")return mbe({schemaObject:t,baseField:c});if(r==="VaeModelField")return vbe({schemaObject:t,baseField:c});if(r==="LoRAModelField")return _be({schemaObject:t,baseField:c});if(r==="ControlNetModelField")return bbe({schemaObject:t,baseField:c});if(r==="enum")return Obe({schemaObject:t,baseField:c});if(r==="integer")return dbe({schemaObject:t,baseField:c});if(r==="float")return fbe({schemaObject:t,baseField:c});if(r==="string")return hbe({schemaObject:t,baseField:c});if(r==="boolean")return pbe({schemaObject:t,baseField:c});if(r==="Collection")return Rbe({schemaObject:t,baseField:c});if(r==="CollectionItem")return Ibe({schemaObject:t,baseField:c});if(r==="ColorField")return Mbe({schemaObject:t,baseField:c});if(r==="Scheduler")return Nbe({schemaObject:t,baseField:c})},Lbe=["id","type","metadata"],$be=["type"],Fbe=["WorkflowField","MetadataField","IsIntermediate"],Bbe=["graph","metadata_accumulator"],zbe=(e,t)=>!!(Lbe.includes(t)||e==="collect"&&t==="collection"||e==="iterate"&&t==="index"),Ube=e=>!!Fbe.includes(e),jbe=(e,t)=>!$be.includes(t),Vbe=e=>!Bbe.includes(e.properties.type.default),Gbe=e=>{var r;return Object.values(((r=e.components)==null?void 0:r.schemas)??{}).filter(Ooe).filter(Vbe).reduce((i,o)=>{var b,_;const s=o.properties.type.default,a=o.title.replace("Invocation",""),l=o.tags??[],u=o.description??"",c=lx(o.properties,(y,g,v)=>{if(zbe(s,v))return re("nodes").trace({node:s,fieldName:v,field:kt(g)},"Skipped reserved input field"),y;if(!UA(g))return re("nodes").warn({node:s,propertyName:v,property:kt(g)},"Unhandled input property"),y;const S=TP(g);if(!zA(S))return re("nodes").warn({node:s,fieldName:v,fieldType:S,field:kt(g)},"Skipping unknown input field type"),y;if(Ube(S))return re("nodes").trace({node:s,fieldName:v,fieldType:S,field:kt(g)},"Skipping reserved field type"),y;const w=Dbe(o,g,v,S);return w?(y[v]=w,y):(re("nodes").debug({node:s,fieldName:v,fieldType:S,field:kt(g)},"Skipping input field with no template"),y)},{}),d=o.output.$ref.split("/").pop();if(!d)return re("nodes").warn({outputRefObject:kt(o.output)},"No output schema name found in ref object"),i;const f=(_=(b=e.components)==null?void 0:b.schemas)==null?void 0:_[d];if(!f)return re("nodes").warn({outputSchemaName:d},"Output schema not found"),i;if(!Roe(f))return re("nodes").error({outputSchema:kt(f)},"Invalid output schema"),i;const h=f.properties.type.default,p=lx(f.properties,(y,g,v)=>{if(!jbe(s,v))return re("nodes").trace({type:s,propertyName:v,property:kt(g)},"Skipped reserved output field"),y;if(!UA(g))return re("nodes").warn({type:s,propertyName:v,property:kt(g)},"Unhandled output property"),y;const S=TP(g);return zA(S)?(y[v]={fieldKind:"output",name:v,title:g.title??"",description:g.description??"",type:S,ui_hidden:g.ui_hidden??!1,ui_type:g.ui_type,ui_order:g.ui_order},y):(re("nodes").warn({fieldName:v,fieldType:S,field:kt(g)},"Skipping unknown output field type"),y)},{}),m={title:a,type:s,tags:l,description:u,inputs:c,outputs:p,outputType:h};return Object.assign(i,{[s]:m}),i},{})},Hbe=()=>{le({actionCreator:_p.fulfilled,effect:(e,{dispatch:t})=>{const n=re("system"),r=e.payload;n.debug({schemaJSON:r},"Received OpenAPI schema");const i=Gbe(r);n.debug({nodeTemplates:kt(i)},`Built ${u1(i)} node templates`),t(j$(i))}}),le({actionCreator:_p.rejected,effect:e=>{re("system").error({error:kt(e.error)},"Problem retrieving OpenAPI Schema")}})},Wbe=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),qbe=new Map(Wbe),Kbe=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],oC=new WeakSet,Xbe=e=>{oC.add(e);const t=e.toJSON();return oC.delete(e),t},Ybe=e=>qbe.get(e)??Error,CB=({from:e,seen:t,to:n,forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a})=>{if(!n)if(Array.isArray(e))n=[];else if(!a&&AP(e)){const u=Ybe(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&!oC.has(e))return Xbe(e);const l=u=>CB({from:u,seen:[...t],forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a});for(const[u,c]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(c)){n[u]="[object Buffer]";continue}if(c!==null&&typeof c=="object"&&typeof c.pipe=="function"){n[u]="[object Stream]";continue}if(typeof c!="function"){if(!c||typeof c!="object"){n[u]=c;continue}if(!t.includes(e[u])){o++,n[u]=l(e[u]);continue}n[u]="[Circular]"}}for(const{property:u,enumerable:c}of Kbe)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:AP(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function ME(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?CB({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function AP(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const Zbe=()=>{le({actionCreator:al.pending,effect:()=>{}})},Qbe=()=>{le({actionCreator:al.fulfilled,effect:e=>{const t=re("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session canceled (${n})`)}})},Jbe=()=>{le({actionCreator:al.rejected,effect:e=>{const t=re("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:ME(r)},"Problem canceling session")}}})},eSe=()=>{le({actionCreator:er.pending,effect:()=>{}})},tSe=()=>{le({actionCreator:er.fulfilled,effect:e=>{const t=re("session"),n=e.payload;t.debug({session:kt(n)},`Session created (${n.id})`)}})},nSe=()=>{le({actionCreator:er.rejected,effect:e=>{const t=re("session");if(e.payload){const{error:n,status:r}=e.payload,i=kt(e.meta.arg);t.error({graph:i,status:r,error:ME(n)},"Problem creating session")}}})},rSe=()=>{le({actionCreator:Bd.pending,effect:()=>{}})},iSe=()=>{le({actionCreator:Bd.fulfilled,effect:e=>{const t=re("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session invoked (${n})`)}})},oSe=()=>{le({actionCreator:Bd.rejected,effect:e=>{const t=re("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:ME(r)},"Problem invoking session")}}})},sSe=()=>{le({actionCreator:Nu,effect:(e,{getState:t,dispatch:n})=>{const r=re("session"),{sessionId:i}=t().system;i&&(r.debug({session_id:i},`Session ready to invoke (${i})})`),n(Bd({session_id:i})))}})},aSe=()=>{le({actionCreator:HD,effect:(e,{dispatch:t,getState:n})=>{re("socketio").debug("Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!u1(i.nodeTemplates)&&!s.includes("nodes")&&t(_p()),t(WD(e.payload)),t(bs.util.invalidateTags([{type:"MainModel",id:Pe},{type:"SDXLRefinerModel",id:Pe},{type:"LoRAModel",id:Pe},{type:"ControlNetModel",id:Pe},{type:"VaeModel",id:Pe},{type:"TextualInversionModel",id:Pe},{type:"ScannedModels",id:Pe}])),t(pE.util.invalidateTags(["AppConfig","AppVersion"]))}})},lSe=()=>{le({actionCreator:qD,effect:(e,{dispatch:t})=>{re("socketio").debug("Disconnected"),t(KD(e.payload))}})},uSe=()=>{le({actionCreator:nL,effect:(e,{dispatch:t,getState:n})=>{const r=re("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored generator progress for canceled session");return}r.trace(e.payload,`Generator progress (${e.payload.data.node.type})`),t(z5(e.payload))}})},cSe=()=>{le({actionCreator:eL,effect:(e,{dispatch:t})=>{re("socketio").debug(e.payload,"Session complete"),t(tL(e.payload))}})},ye="positive_conditioning",ve="negative_conditioning",ge="denoise_latents",Se="latents_to_image",Tc="nsfw_checker",Af="invisible_watermark",ae="noise",_n="rand_int",Bt="range_of_size",it="iterate",pl="main_model_loader",ab="onnx_model_loader",ls="vae_loader",EB="lora_loader",Qe="clip_skip",Pt="image_to_latents",Io="resize_image",Yc="img2img_resize",ie="canvas_output",Ot="inpaint_image",Cr="inpaint_image_resize_up",ur="inpaint_image_resize_down",ut="inpaint_infill",wa="inpaint_infill_resize_down",mt="inpaint_create_mask",We="canvas_coherence_denoise_latents",ct="canvas_coherence_noise",cr="canvas_coherence_noise_increment",Zc="tomask",Ke="mask_blur",Mo="mask_combine",lr="mask_resize_up",dr="mask_resize_down",$m="control_net_collect",P2="dynamic_prompt",Fe="metadata_accumulator",kP="esrgan",Yn="sdxl_model_loader",ce="sdxl_denoise_latents",Tl="sdxl_refiner_model_loader",Fm="sdxl_refiner_positive_conditioning",Bm="sdxl_refiner_negative_conditioning",So="sdxl_refiner_denoise_latents",gs="refiner_inpaint_create_mask",Sn="seamless",eo="refiner_seamless",TB="text_to_image_graph",sC="image_to_image_graph",AB="canvas_text_to_image_graph",aC="canvas_image_to_image_graph",lb="canvas_inpaint_graph",ub="canvas_outpaint_graph",NE="sdxl_text_to_image_graph",uv="sxdl_image_to_image_graph",cb="sdxl_canvas_text_to_image_graph",Ep="sdxl_canvas_image_to_image_graph",mu="sdxl_canvas_inpaint_graph",yu="sdxl_canvas_outpaint_graph",dSe=["load_image"],fSe=()=>{le({actionCreator:F5,effect:async(e,{dispatch:t,getState:n})=>{const r=re("socketio"),{data:i}=e.payload;r.debug({data:kt(i)},`Invocation complete (${e.payload.data.node.type})`);const o=e.payload.data.graph_execution_state_id,{cancelType:s,isCancelScheduled:a}=n().system;s==="scheduled"&&a&&t(al({session_id:o}));const{result:l,node:u,graph_execution_state_id:c}=i;if(SB(l)&&!dSe.includes(u.type)){const{image_name:d}=l.image,{canvas:f,gallery:h}=n(),p=await t(ne.endpoints.getImageDTO.initiate(d)).unwrap();if(c===f.layerState.stagingArea.sessionId&&[ie].includes(i.source_node_id)&&t(Jte(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m&&m!=="none"?ne.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):ne.util.updateQueryData("listImages",{board_id:"none",categories:Pn},y=>{Tt.addOne(y,p)})),t(ne.util.invalidateTags([{type:"BoardImagesTotal",id:m},{type:"BoardAssetsTotal",id:m}]));const{selectedBoardId:b,shouldAutoSwitch:_}=h;_&&(m&&m!==b?(t(Ax(m)),t(Fy("images"))):m||t(Fy("images")),t(jo(p)))}t(ape(null))}t(B5(e.payload))}})},hSe=()=>{le({actionCreator:JD,effect:(e,{dispatch:t})=>{re("socketio").error(e.payload,`Invocation error (${e.payload.data.node.type})`),t($1(e.payload))}})},pSe=()=>{le({actionCreator:aL,effect:(e,{dispatch:t})=>{re("socketio").error(e.payload,`Invocation retrieval error (${e.payload.data.graph_execution_state_id})`),t(lL(e.payload))}})},gSe=()=>{le({actionCreator:QD,effect:(e,{dispatch:t,getState:n})=>{const r=re("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored invocation started for canceled session");return}r.debug(e.payload,`Invocation started (${e.payload.data.node.type})`),t($5(e.payload))}})},mSe=()=>{le({actionCreator:rL,effect:(e,{dispatch:t})=>{const n=re("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load started: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(Bae(e.payload))}}),le({actionCreator:iL,effect:(e,{dispatch:t})=>{const n=re("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load complete: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(zae(e.payload))}})},ySe=()=>{le({actionCreator:oL,effect:(e,{dispatch:t})=>{re("socketio").error(e.payload,`Session retrieval error (${e.payload.data.graph_execution_state_id})`),t(sL(e.payload))}})},vSe=()=>{le({actionCreator:L5,effect:(e,{dispatch:t})=>{re("socketio").debug(e.payload,"Subscribed"),t(XD(e.payload))}})},_Se=()=>{le({actionCreator:YD,effect:(e,{dispatch:t})=>{re("socketio").debug(e.payload,"Unsubscribed"),t(ZD(e.payload))}})},bSe=()=>{le({actionCreator:T0e,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTO:r}=e.payload;try{const i=await t(ne.endpoints.changeImageIsIntermediate.initiate({imageDTO:r,is_intermediate:!1})).unwrap(),{autoAddBoardId:o}=n().gallery;o&&o!=="none"&&await t(ne.endpoints.addImageToBoard.initiate({imageDTO:i,board_id:o})),t(Wt({title:"Image Saved",status:"success"}))}catch(i){t(Wt({title:"Image Saving Failed",description:i==null?void 0:i.message,status:"error"}))}}})},b9e=["sd-1","sd-2","sdxl","sdxl-refiner"],SSe=["sd-1","sd-2","sdxl"],S9e=["sdxl"],w9e=["sd-1","sd-2"],x9e=["sdxl-refiner"],wSe=()=>{le({actionCreator:gpe,effect:async(e,{getState:t,dispatch:n})=>{var i;if(e.payload==="unifiedCanvas"){const o=(i=t().generation.model)==null?void 0:i.base_model;if(o&&["sd-1","sd-2","sdxl"].includes(o))return;try{const s=n(bs.endpoints.getMainModels.initiate(SSe)),a=await s.unwrap();if(s.unsubscribe(),!a.ids.length){n(va(null));return}const u=Cp.getSelectors().selectAll(a).filter(h=>["sd-1","sd-2","sxdl"].includes(h.base_model))[0];if(!u){n(va(null));return}const{base_model:c,model_name:d,model_type:f}=u;n(va({base_model:c,model_name:d,model_type:f}))}catch{n(va(null))}}}})},xSe=({image_name:e,esrganModelName:t})=>{const n={id:kP,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[kP]:n},edges:[]}},CSe=me("upscale/upscaleRequested"),ESe=()=>{le({actionCreator:CSe,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{image_name:i}=e.payload,{esrganModelName:o}=n().postprocessing,s=xSe({image_name:i,esrganModelName:o});t(er({graph:s})),await r(er.fulfilled.match),t(Nu())}})},TSe=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("

")})},PP=e=>new Promise((t,n)=>{const r=new FileReader;r.onload=i=>t(r.result),r.onerror=i=>n(r.error),r.onabort=i=>n(new Error("Read aborted")),r.readAsDataURL(e)}),ASe=e=>{let t=!0,n=!1;const r=e.length;let i=3;for(i;i{const t=e.length;let n=0;for(n;n{const{isPartiallyTransparent:n,isFullyTransparent:r}=ASe(e.data),i=kSe(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},OSe=e=>TJ(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),$i=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=OSe(i),s=t.nodes[Fe];if(r&&o.length&&o.length){const a={id:$m,type:"collect",is_intermediate:!0};t.nodes[$m]=a,t.edges.push({source:{node_id:$m,field:"collection"},destination:{node_id:n,field:"control"}}),o.forEach(l=>{const{controlNetId:u,controlImage:c,processedControlImage:d,beginStepPct:f,endStepPct:h,controlMode:p,resizeMode:m,model:b,processorType:_,weight:y}=l,g={id:`control_net_${u}`,type:"controlnet",is_intermediate:!0,begin_step_percent:f,end_step_percent:h,control_mode:p,resize_mode:m,control_model:b,control_weight:y};if(d&&_!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s!=null&&s.controlnets){const v=l1(g,["id","type"]);s.controlnets.push(v)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:$m,field:"item"}})})}},gl=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[Fe];if(a){fee(t.nodes[ye],"prompt");const c={id:P2,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:it,type:"iterate",is_intermediate:!0};if(t.nodes[P2]=c,t.nodes[it]=d,t.edges.push({source:{node_id:P2,field:"collection"},destination:{node_id:it,field:"collection"}},{source:{node_id:it,field:"item"},destination:{node_id:ye,field:"prompt"}}),u&&t.edges.push({source:{node_id:it,field:"item"},destination:{node_id:Fe,field:"positive_prompt"}}),o){const f={id:_n,type:"rand_int",is_intermediate:!0};t.nodes[_n]=f,t.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:ae,field:"seed"}}),u&&t.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Fe,field:"seed"}})}else t.nodes[ae].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Bt,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:it,type:"iterate",is_intermediate:!0};if(t.nodes[it]=d,t.nodes[Bt]=c,t.edges.push({source:{node_id:Bt,field:"collection"},destination:{node_id:it,field:"collection"}}),t.edges.push({source:{node_id:it,field:"item"},destination:{node_id:ae,field:"seed"}}),u&&t.edges.push({source:{node_id:it,field:"item"},destination:{node_id:Fe,field:"seed"}}),o){const f={id:_n,type:"rand_int",is_intermediate:!0};t.nodes[_n]=f,t.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Bt,field:"start"}})}else c.start=i}},Xd=(e,t,n,r=pl)=>{const{loras:i}=e.lora,o=u1(i),s=t.nodes[Fe];o>0&&(t.edges=t.edges.filter(u=>!(u.source.node_id===r&&["unet"].includes(u.source.field))),t.edges=t.edges.filter(u=>!(u.source.node_id===Qe&&["clip"].includes(u.source.field))));let a="",l=0;Ii(i,u=>{const{model_name:c,base_model:d,weight:f}=u,h=`${EB}_${c.replace(".","_")}`,p={type:"lora_loader",id:h,is_intermediate:!0,lora:{model_name:c,base_model:d},weight:f};s!=null&&s.loras&&s.loras.push({lora:{model_name:c,base_model:d},weight:f}),t.nodes[h]=p,l===0?(t.edges.push({source:{node_id:r,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:Qe,field:"clip"},destination:{node_id:h,field:"clip"}})):(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:a,field:"clip"},destination:{node_id:h,field:"clip"}})),l===o-1&&(t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[lb,ub].includes(t.id)&&t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:We,field:"unet"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:ye,field:"clip"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:ve,field:"clip"}})),a=h,l+=1})},DE=fr(e=>e.ui,e=>J$[e.activeTab],{memoizeOptions:{equalityCheck:ng}}),C9e=fr(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:ng}}),E9e=fr(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:ng}}),Fi=(e,t,n=Se)=>{const i=DE(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Fe];if(!o)return;o.is_intermediate=!0;const a={id:Tc,type:"img_nsfw",is_intermediate:i};t.nodes[Tc]=a,t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Tc,field:"image"}}),s&&t.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Tc,field:"metadata"}})},Bi=(e,t,n)=>{const{seamlessXAxis:r,seamlessYAxis:i}=e.generation;t.nodes[Sn]={id:Sn,type:"seamless",seamless_x:r,seamless_y:i};let o=ge;(t.id===NE||t.id===uv||t.id===cb||t.id===Ep||t.id===mu||t.id===yu)&&(o=ce),t.edges=t.edges.filter(s=>!(s.source.node_id===n&&["unet"].includes(s.source.field))&&!(s.source.node_id===n&&["vae"].includes(s.source.field))),t.edges.push({source:{node_id:n,field:"unet"},destination:{node_id:Sn,field:"unet"}},{source:{node_id:n,field:"vae"},destination:{node_id:Sn,field:"vae"}},{source:{node_id:Sn,field:"unet"},destination:{node_id:o,field:"unet"}}),(t.id==lb||t.id===ub||t.id===mu||t.id===yu)&&t.edges.push({source:{node_id:Sn,field:"unet"},destination:{node_id:We,field:"unet"}})},zi=(e,t,n=pl)=>{const{vae:r}=e.generation,{boundingBoxScaleMethod:i}=e.canvas,{shouldUseSDXLRefiner:o}=e.sdxl,s=["auto","manual"].includes(i),a=!r,l=t.nodes[Fe];a||(t.nodes[ls]={type:"vae_loader",id:ls,is_intermediate:!0,vae_model:r});const u=n==ab;(t.id===TB||t.id===sC||t.id===NE||t.id===uv)&&t.edges.push({source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:Se,field:"vae"}}),(t.id===AB||t.id===aC||t.id===cb||t.id==Ep)&&t.edges.push({source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:s?Se:ie,field:"vae"}}),(t.id===sC||t.id===uv||t.id===aC||t.id===Ep)&&t.edges.push({source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:Pt,field:"vae"}}),(t.id===lb||t.id===ub||t.id===mu||t.id===yu)&&t.edges.push({source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:Ot,field:"vae"}},{source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:mt,field:"vae"}},{source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:Se,field:"vae"}}),o&&(t.id===mu||t.id===yu)&&t.edges.push({source:{node_id:a?n:ls,field:a&&u?"vae_decoder":"vae"},destination:{node_id:gs,field:"vae"}}),r&&l&&(l.vae=r)},Ui=(e,t,n=Se)=>{const i=DE(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Tc],a=t.nodes[Fe];if(!o)return;const l={id:Af,type:"img_watermark",is_intermediate:i};t.nodes[Af]=l,o.is_intermediate=!0,s?(s.is_intermediate=!0,t.edges.push({source:{node_id:Tc,field:"image"},destination:{node_id:Af,field:"image"}})):t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Af,field:"image"}}),a&&t.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Af,field:"metadata"}})},RSe=(e,t)=>{const n=re("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,vaePrecision:c,clipSkip:d,shouldUseCpuNoise:f,shouldUseNoiseSettings:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{width:b,height:_}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:y,boundingBoxScaleMethod:g,shouldAutoSave:v}=e.canvas,S=["auto","manual"].includes(g);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let w=pl;const C=h?f:po.shouldUseCpuNoise,x={id:aC,nodes:{[w]:{type:"main_model_loader",id:w,is_intermediate:!0,model:o},[Qe]:{type:"clip_skip",id:Qe,is_intermediate:!0,skipped_layers:d},[ye]:{type:"compel",id:ye,is_intermediate:!0,prompt:r},[ve]:{type:"compel",id:ve,is_intermediate:!0,prompt:i},[ae]:{type:"noise",id:ae,is_intermediate:!0,use_cpu:C,width:S?y.width:b,height:S?y.height:_},[Pt]:{type:"i2l",id:Pt,is_intermediate:!0},[ge]:{type:"denoise_latents",id:ge,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:1-u,denoising_end:1},[ie]:{type:"l2i",id:ie,is_intermediate:!v}},edges:[{source:{node_id:w,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:w,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}},{source:{node_id:Pt,field:"latents"},destination:{node_id:ge,field:"latents"}}]};return S?(x.nodes[Yc]={id:Yc,type:"img_resize",is_intermediate:!0,image:t,width:y.width,height:y.height},x.nodes[Se]={id:Se,type:"l2i",is_intermediate:!0,fp32:c==="fp32"},x.nodes[ie]={id:ie,type:"img_resize",is_intermediate:!v,width:b,height:_},x.edges.push({source:{node_id:Yc,field:"image"},destination:{node_id:Pt,field:"image"}},{source:{node_id:ge,field:"latents"},destination:{node_id:Se,field:"latents"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}})):(x.nodes[ie]={type:"l2i",id:ie,is_intermediate:!v,fp32:c==="fp32"},x.nodes[Pt].image=t,x.edges.push({source:{node_id:ge,field:"latents"},destination:{node_id:ie,field:"latents"}})),x.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:S?y.width:b,height:S?y.height:_,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:C?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:d,strength:u,init_image:t.image_name},x.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:ie,field:"metadata"}}),(p||m)&&(Bi(e,x,w),w=Sn),Xd(e,x,ge),zi(e,x,w),gl(e,x),$i(e,x,ge),e.system.shouldUseNSFWChecker&&Fi(e,x,ie),e.system.shouldUseWatermarker&&Ui(e,x,ie),x},ISe=(e,t,n)=>{const r=re("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,maskBlurMethod:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,clipSkip:S,seamlessXAxis:w,seamlessYAxis:C}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:x,height:A}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:T,boundingBoxScaleMethod:P,shouldAutoSave:L}=e.canvas;let R=pl;const E=b,k={id:lb,nodes:{[R]:{type:"main_model_loader",id:R,is_intermediate:!0,model:s},[Qe]:{type:"clip_skip",id:Qe,is_intermediate:!0,skipped_layers:S},[ye]:{type:"compel",id:ye,is_intermediate:!0,prompt:i},[ve]:{type:"compel",id:ve,is_intermediate:!0,prompt:o},[Ke]:{type:"img_blur",id:Ke,is_intermediate:!0,radius:_,blur_type:y},[Ot]:{type:"i2l",id:Ot,is_intermediate:!0,fp32:p==="fp32"},[mt]:{type:"create_denoise_mask",id:mt,is_intermediate:!0,fp32:p==="fp32"},[ae]:{type:"noise",id:ae,use_cpu:E,is_intermediate:!0},[ge]:{type:"denoise_latents",id:ge,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[ct]:{type:"noise",id:ae,use_cpu:E,is_intermediate:!0},[cr]:{type:"add",id:cr,b:1,is_intermediate:!0},[We]:{type:"denoise_latents",id:ge,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Se]:{type:"l2i",id:Se,is_intermediate:!0,fp32:p==="fp32"},[ie]:{type:"color_correct",id:ie,is_intermediate:!L,reference:t},[Bt]:{type:"range_of_size",id:Bt,is_intermediate:!0,size:d,step:1},[it]:{type:"iterate",id:it,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}},{source:{node_id:Ot,field:"latents"},destination:{node_id:ge,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:mt,field:"mask"}},{source:{node_id:mt,field:"denoise_mask"},destination:{node_id:ge,field:"denoise_mask"}},{source:{node_id:Bt,field:"collection"},destination:{node_id:it,field:"collection"}},{source:{node_id:it,field:"item"},destination:{node_id:ae,field:"seed"}},{source:{node_id:it,field:"item"},destination:{node_id:cr,field:"a"}},{source:{node_id:cr,field:"value"},destination:{node_id:ct,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:We,field:"unet"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:We,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:We,field:"negative_conditioning"}},{source:{node_id:ct,field:"noise"},destination:{node_id:We,field:"noise"}},{source:{node_id:ge,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:We,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(["auto","manual"].includes(P)){const N=T.width,$=T.height;k.nodes[Cr]={type:"img_resize",id:Cr,is_intermediate:!0,width:N,height:$,image:t},k.nodes[lr]={type:"img_resize",id:lr,is_intermediate:!0,width:N,height:$,image:n},k.nodes[ur]={type:"img_resize",id:ur,is_intermediate:!0,width:x,height:A},k.nodes[dr]={type:"img_resize",id:dr,is_intermediate:!0,width:x,height:A},k.nodes[ae].width=N,k.nodes[ae].height=$,k.nodes[ct].width=N,k.nodes[ct].height=$,k.edges.push({source:{node_id:Cr,field:"image"},destination:{node_id:Ot,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:Cr,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:Se,field:"image"},destination:{node_id:ur,field:"image"}},{source:{node_id:ur,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:dr,field:"image"}},{source:{node_id:dr,field:"image"},destination:{node_id:ie,field:"mask"}})}else k.nodes[ae].width=x,k.nodes[ae].height=A,k.nodes[ct].width=x,k.nodes[ct].height=A,k.nodes[Ot]={...k.nodes[Ot],image:t},k.nodes[Ke]={...k.nodes[Ke],image:n},k.nodes[mt]={...k.nodes[mt],image:t},k.edges.push({source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ie,field:"mask"}});if(h){const N={id:_n,type:"rand_int"};k.nodes[_n]=N,k.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Bt,field:"start"}})}else k.nodes[Bt].start=f;return(w||C)&&(Bi(e,k,R),R=Sn),zi(e,k,R),Xd(e,k,ge,R),$i(e,k,ge),e.system.shouldUseNSFWChecker&&Fi(e,k,ie),e.system.shouldUseWatermarker&&Ui(e,k,ie),k},MSe=(e,t,n)=>{const r=re("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,maskBlurMethod:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,tileSize:S,infillMethod:w,clipSkip:C,seamlessXAxis:x,seamlessYAxis:A}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:T,height:P}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:L,boundingBoxScaleMethod:R,shouldAutoSave:E}=e.canvas;let k=pl;const N=b,$={id:ub,nodes:{[k]:{type:"main_model_loader",id:k,is_intermediate:!0,model:s},[Qe]:{type:"clip_skip",id:Qe,is_intermediate:!0,skipped_layers:C},[ye]:{type:"compel",id:ye,is_intermediate:!0,prompt:i},[ve]:{type:"compel",id:ve,is_intermediate:!0,prompt:o},[Zc]:{type:"tomask",id:Zc,is_intermediate:!0,image:t},[Mo]:{type:"mask_combine",id:Mo,is_intermediate:!0,mask2:n},[Ke]:{type:"img_blur",id:Ke,is_intermediate:!0,radius:_,blur_type:y},[Ot]:{type:"i2l",id:Ot,is_intermediate:!0,fp32:p==="fp32"},[ae]:{type:"noise",id:ae,use_cpu:N,is_intermediate:!0},[mt]:{type:"create_denoise_mask",id:mt,is_intermediate:!0,fp32:p==="fp32"},[ge]:{type:"denoise_latents",id:ge,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[ct]:{type:"noise",id:ae,use_cpu:N,is_intermediate:!0},[cr]:{type:"add",id:cr,b:1,is_intermediate:!0},[We]:{type:"denoise_latents",id:We,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Se]:{type:"l2i",id:Se,is_intermediate:!0,fp32:p==="fp32"},[ie]:{type:"color_correct",id:ie,is_intermediate:!E},[Bt]:{type:"range_of_size",id:Bt,is_intermediate:!0,size:d,step:1},[it]:{type:"iterate",id:it,is_intermediate:!0}},edges:[{source:{node_id:k,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:k,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ut,field:"image"},destination:{node_id:Ot,field:"image"}},{source:{node_id:Zc,field:"image"},destination:{node_id:Mo,field:"mask1"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}},{source:{node_id:Ot,field:"latents"},destination:{node_id:ge,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:mt,field:"mask"}},{source:{node_id:mt,field:"denoise_mask"},destination:{node_id:ge,field:"denoise_mask"}},{source:{node_id:Bt,field:"collection"},destination:{node_id:it,field:"collection"}},{source:{node_id:it,field:"item"},destination:{node_id:ae,field:"seed"}},{source:{node_id:it,field:"item"},destination:{node_id:cr,field:"a"}},{source:{node_id:cr,field:"value"},destination:{node_id:ct,field:"seed"}},{source:{node_id:k,field:"unet"},destination:{node_id:We,field:"unet"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:We,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:We,field:"negative_conditioning"}},{source:{node_id:ct,field:"noise"},destination:{node_id:We,field:"noise"}},{source:{node_id:ge,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:We,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(w==="patchmatch"&&($.nodes[ut]={type:"infill_patchmatch",id:ut,is_intermediate:!0}),w==="lama"&&($.nodes[ut]={type:"infill_lama",id:ut,is_intermediate:!0}),w==="tile"&&($.nodes[ut]={type:"infill_tile",id:ut,is_intermediate:!0,tile_size:S}),["auto","manual"].includes(R)){const M=L.width,O=L.height;$.nodes[Cr]={type:"img_resize",id:Cr,is_intermediate:!0,width:M,height:O,image:t},$.nodes[lr]={type:"img_resize",id:lr,is_intermediate:!0,width:M,height:O},$.nodes[ur]={type:"img_resize",id:ur,is_intermediate:!0,width:T,height:P},$.nodes[wa]={type:"img_resize",id:wa,is_intermediate:!0,width:T,height:P},$.nodes[dr]={type:"img_resize",id:dr,is_intermediate:!0,width:T,height:P},$.nodes[ae].width=M,$.nodes[ae].height=O,$.nodes[ct].width=M,$.nodes[ct].height=O,$.edges.push({source:{node_id:Cr,field:"image"},destination:{node_id:ut,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:Mo,field:"image"},destination:{node_id:lr,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:Se,field:"image"},destination:{node_id:ur,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:dr,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:wa,field:"image"}},{source:{node_id:wa,field:"image"},destination:{node_id:ie,field:"reference"}},{source:{node_id:ur,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:dr,field:"image"},destination:{node_id:ie,field:"mask"}})}else $.nodes[ut]={...$.nodes[ut],image:t},$.nodes[ae].width=T,$.nodes[ae].height=P,$.nodes[ct].width=T,$.nodes[ct].height=P,$.nodes[Ot]={...$.nodes[Ot],image:t},$.nodes[Ke]={...$.nodes[Ke]},$.edges.push({source:{node_id:Mo,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:ie,field:"reference"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ie,field:"mask"}});if(h){const M={id:_n,type:"rand_int"};$.nodes[_n]=M,$.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Bt,field:"start"}})}else $.nodes[Bt].start=f;return(x||A)&&(Bi(e,$,k),k=Sn),zi(e,$,k),Xd(e,$,ge,k),$i(e,$,ge),e.system.shouldUseNSFWChecker&&Fi(e,$,ie),e.system.shouldUseWatermarker&&Ui(e,$,ie),$},Yd=(e,t,n,r=Yn)=>{const{loras:i}=e.lora,o=u1(i),s=t.nodes[Fe],a=r;let l=r;[Sn,gs].includes(r)&&(l=Yn),o>0&&(t.edges=t.edges.filter(d=>!(d.source.node_id===a&&["unet"].includes(d.source.field))&&!(d.source.node_id===l&&["clip"].includes(d.source.field))&&!(d.source.node_id===l&&["clip2"].includes(d.source.field))));let u="",c=0;Ii(i,d=>{const{model_name:f,base_model:h,weight:p}=d,m=`${EB}_${f.replace(".","_")}`,b={type:"sdxl_lora_loader",id:m,is_intermediate:!0,lora:{model_name:f,base_model:h},weight:p};s&&(s.loras||(s.loras=[]),s.loras.push({lora:{model_name:f,base_model:h},weight:p})),t.nodes[m]=b,c===0?(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:l,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:l,field:"clip2"},destination:{node_id:m,field:"clip2"}})):(t.edges.push({source:{node_id:u,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:u,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:u,field:"clip2"},destination:{node_id:m,field:"clip2"}})),c===o-1&&(t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[mu,yu].includes(t.id)&&t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:We,field:"unet"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:ye,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:ve,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:ye,field:"clip2"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:ve,field:"clip2"}})),u=m,c+=1})},Du=(e,t)=>{const{positivePrompt:n,negativePrompt:r}=e.generation,{positiveStylePrompt:i,negativeStylePrompt:o}=e.sdxl;let s=i,a=o;return t&&(i.length>0?s=`${n} ${i}`:s=n,o.length>0?a=`${r} ${o}`:a=r),{craftedPositiveStylePrompt:s,craftedNegativeStylePrompt:a}},Zd=(e,t,n,r,i)=>{const{refinerModel:o,refinerPositiveAestheticScore:s,refinerNegativeAestheticScore:a,refinerSteps:l,refinerScheduler:u,refinerCFGScale:c,refinerStart:d}=e.sdxl,{seamlessXAxis:f,seamlessYAxis:h,vaePrecision:p}=e.generation,{boundingBoxScaleMethod:m}=e.canvas,b=["auto","manual"].includes(m);if(!o)return;const _=t.nodes[Fe];_&&(_.refiner_model=o,_.refiner_positive_aesthetic_store=s,_.refiner_negative_aesthetic_store=a,_.refiner_cfg_scale=c,_.refiner_scheduler=u,_.refiner_start=d,_.refiner_steps=l);const y=r||Yn,{craftedPositiveStylePrompt:g,craftedNegativeStylePrompt:v}=Du(e,!0);t.edges=t.edges.filter(S=>!(S.source.node_id===n&&["latents"].includes(S.source.field))),t.edges=t.edges.filter(S=>!(S.source.node_id===y&&["vae"].includes(S.source.field))),t.nodes[Tl]={type:"sdxl_refiner_model_loader",id:Tl,model:o},t.nodes[Fm]={type:"sdxl_refiner_compel_prompt",id:Fm,style:g,aesthetic_score:s},t.nodes[Bm]={type:"sdxl_refiner_compel_prompt",id:Bm,style:v,aesthetic_score:a},t.nodes[So]={type:"denoise_latents",id:So,cfg_scale:c,steps:l,scheduler:u,denoising_start:d,denoising_end:1},f||h?(t.nodes[eo]={id:eo,type:"seamless",seamless_x:f,seamless_y:h},t.edges.push({source:{node_id:Tl,field:"unet"},destination:{node_id:eo,field:"unet"}},{source:{node_id:Tl,field:"vae"},destination:{node_id:eo,field:"vae"}},{source:{node_id:eo,field:"unet"},destination:{node_id:So,field:"unet"}})):t.edges.push({source:{node_id:Tl,field:"unet"},destination:{node_id:So,field:"unet"}}),t.edges.push({source:{node_id:Tl,field:"clip2"},destination:{node_id:Fm,field:"clip2"}},{source:{node_id:Tl,field:"clip2"},destination:{node_id:Bm,field:"clip2"}},{source:{node_id:Fm,field:"conditioning"},destination:{node_id:So,field:"positive_conditioning"}},{source:{node_id:Bm,field:"conditioning"},destination:{node_id:So,field:"negative_conditioning"}},{source:{node_id:n,field:"latents"},destination:{node_id:So,field:"latents"}}),(t.id===mu||t.id===yu)&&(t.nodes[gs]={type:"create_denoise_mask",id:gs,is_intermediate:!0,fp32:p==="fp32"},b?t.edges.push({source:{node_id:Cr,field:"image"},destination:{node_id:gs,field:"image"}}):t.nodes[gs]={...t.nodes[gs],image:i},t.edges.push({source:{node_id:Ke,field:"image"},destination:{node_id:gs,field:"mask"}},{source:{node_id:gs,field:"denoise_mask"},destination:{node_id:So,field:"denoise_mask"}})),t.id===cb||t.id===Ep?t.edges.push({source:{node_id:So,field:"latents"},destination:{node_id:b?Se:ie,field:"latents"}}):t.edges.push({source:{node_id:So,field:"latents"},destination:{node_id:Se,field:"latents"}})},NSe=(e,t)=>{const n=re("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,vaePrecision:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,seamlessXAxis:h,seamlessYAxis:p}=e.generation,{shouldUseSDXLRefiner:m,refinerStart:b,sdxlImg2ImgDenoisingStrength:_,shouldConcatSDXLStylePrompt:y}=e.sdxl,{width:g,height:v}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:S,boundingBoxScaleMethod:w,shouldAutoSave:C}=e.canvas,x=["auto","manual"].includes(w);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let A=Yn;const T=f?d:po.shouldUseCpuNoise,{craftedPositiveStylePrompt:P,craftedNegativeStylePrompt:L}=Du(e,y),R={id:Ep,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:o},[ye]:{type:"sdxl_compel_prompt",id:ye,prompt:r,style:P},[ve]:{type:"sdxl_compel_prompt",id:ve,prompt:i,style:L},[ae]:{type:"noise",id:ae,is_intermediate:!0,use_cpu:T,width:x?S.width:g,height:x?S.height:v},[Pt]:{type:"i2l",id:Pt,is_intermediate:!0,fp32:u==="fp32"},[ce]:{type:"denoise_latents",id:ce,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:m?Math.min(b,1-_):1-_,denoising_end:m?b:1}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}},{source:{node_id:Pt,field:"latents"},destination:{node_id:ce,field:"latents"}}]};return x?(R.nodes[Yc]={id:Yc,type:"img_resize",is_intermediate:!0,image:t,width:S.width,height:S.height},R.nodes[Se]={id:Se,type:"l2i",is_intermediate:!0,fp32:u==="fp32"},R.nodes[ie]={id:ie,type:"img_resize",is_intermediate:!C,width:g,height:v},R.edges.push({source:{node_id:Yc,field:"image"},destination:{node_id:Pt,field:"image"}},{source:{node_id:ce,field:"latents"},destination:{node_id:Se,field:"latents"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}})):(R.nodes[ie]={type:"l2i",id:ie,is_intermediate:!C,fp32:u==="fp32"},R.nodes[Pt].image=t,R.edges.push({source:{node_id:ce,field:"latents"},destination:{node_id:ie,field:"latents"}})),R.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:x?S.width:g,height:x?S.height:v,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:T?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:c,strength:_,init_image:t.image_name},R.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:ie,field:"metadata"}}),(h||p)&&(Bi(e,R,A),A=Sn),m&&(Zd(e,R,ce,A),(h||p)&&(A=eo)),zi(e,R,A),Yd(e,R,ce,A),gl(e,R),$i(e,R,ce),e.system.shouldUseNSFWChecker&&Fi(e,R,ie),e.system.shouldUseWatermarker&&Ui(e,R,ie),R},DSe=(e,t,n)=>{const r=re("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,maskBlurMethod:_,canvasCoherenceSteps:y,canvasCoherenceStrength:g,seamlessXAxis:v,seamlessYAxis:S}=e.generation,{sdxlImg2ImgDenoisingStrength:w,shouldUseSDXLRefiner:C,refinerStart:x,shouldConcatSDXLStylePrompt:A}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:T,height:P}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:L,boundingBoxScaleMethod:R,shouldAutoSave:E}=e.canvas;let k=Yn;const N=m,{craftedPositiveStylePrompt:$,craftedNegativeStylePrompt:M}=Du(e,A),O={id:mu,nodes:{[k]:{type:"sdxl_model_loader",id:k,model:s},[ye]:{type:"sdxl_compel_prompt",id:ye,prompt:i,style:$},[ve]:{type:"sdxl_compel_prompt",id:ve,prompt:o,style:M},[Ke]:{type:"img_blur",id:Ke,is_intermediate:!0,radius:b,blur_type:_},[Ot]:{type:"i2l",id:Ot,is_intermediate:!0,fp32:h==="fp32"},[ae]:{type:"noise",id:ae,use_cpu:N,is_intermediate:!0},[mt]:{type:"create_denoise_mask",id:mt,is_intermediate:!0,fp32:h==="fp32"},[ce]:{type:"denoise_latents",id:ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:C?Math.min(x,1-w):1-w,denoising_end:C?x:1},[ct]:{type:"noise",id:ae,use_cpu:N,is_intermediate:!0},[cr]:{type:"add",id:cr,b:1,is_intermediate:!0},[We]:{type:"denoise_latents",id:ce,is_intermediate:!0,steps:y,cfg_scale:a,scheduler:l,denoising_start:1-g,denoising_end:1},[Se]:{type:"l2i",id:Se,is_intermediate:!0,fp32:h==="fp32"},[ie]:{type:"color_correct",id:ie,is_intermediate:!E,reference:t},[Bt]:{type:"range_of_size",id:Bt,is_intermediate:!0,size:c,step:1},[it]:{type:"iterate",id:it,is_intermediate:!0}},edges:[{source:{node_id:k,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:k,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:k,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:k,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:k,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}},{source:{node_id:Ot,field:"latents"},destination:{node_id:ce,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:mt,field:"mask"}},{source:{node_id:mt,field:"denoise_mask"},destination:{node_id:ce,field:"denoise_mask"}},{source:{node_id:Bt,field:"collection"},destination:{node_id:it,field:"collection"}},{source:{node_id:it,field:"item"},destination:{node_id:ae,field:"seed"}},{source:{node_id:it,field:"item"},destination:{node_id:cr,field:"a"}},{source:{node_id:cr,field:"value"},destination:{node_id:ct,field:"seed"}},{source:{node_id:k,field:"unet"},destination:{node_id:We,field:"unet"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:We,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:We,field:"negative_conditioning"}},{source:{node_id:ct,field:"noise"},destination:{node_id:We,field:"noise"}},{source:{node_id:ce,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:We,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(["auto","manual"].includes(R)){const D=L.width,F=L.height;O.nodes[Cr]={type:"img_resize",id:Cr,is_intermediate:!0,width:D,height:F,image:t},O.nodes[lr]={type:"img_resize",id:lr,is_intermediate:!0,width:D,height:F,image:n},O.nodes[ur]={type:"img_resize",id:ur,is_intermediate:!0,width:T,height:P},O.nodes[dr]={type:"img_resize",id:dr,is_intermediate:!0,width:T,height:P},O.nodes[ae].width=D,O.nodes[ae].height=F,O.nodes[ct].width=D,O.nodes[ct].height=F,O.edges.push({source:{node_id:Cr,field:"image"},destination:{node_id:Ot,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:Cr,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:Se,field:"image"},destination:{node_id:ur,field:"image"}},{source:{node_id:ur,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:dr,field:"image"}},{source:{node_id:dr,field:"image"},destination:{node_id:ie,field:"mask"}})}else O.nodes[ae].width=T,O.nodes[ae].height=P,O.nodes[ct].width=T,O.nodes[ct].height=P,O.nodes[Ot]={...O.nodes[Ot],image:t},O.nodes[Ke]={...O.nodes[Ke],image:n},O.nodes[mt]={...O.nodes[mt],image:t},O.edges.push({source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ie,field:"mask"}});if(f){const D={id:_n,type:"rand_int"};O.nodes[_n]=D,O.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Bt,field:"start"}})}else O.nodes[Bt].start=d;return(v||S)&&(Bi(e,O,k),k=Sn),C&&(Zd(e,O,We,k,t),(v||S)&&(k=eo)),zi(e,O,k),Yd(e,O,ce,k),$i(e,O,ce),e.system.shouldUseNSFWChecker&&Fi(e,O,ie),e.system.shouldUseWatermarker&&Ui(e,O,ie),O},LSe=(e,t,n)=>{const r=re("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,maskBlurMethod:_,canvasCoherenceSteps:y,canvasCoherenceStrength:g,tileSize:v,infillMethod:S,seamlessXAxis:w,seamlessYAxis:C}=e.generation,{sdxlImg2ImgDenoisingStrength:x,shouldUseSDXLRefiner:A,refinerStart:T,shouldConcatSDXLStylePrompt:P}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:L,height:R}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:E,boundingBoxScaleMethod:k,shouldAutoSave:N}=e.canvas;let $=Yn;const M=m,{craftedPositiveStylePrompt:O,craftedNegativeStylePrompt:D}=Du(e,P),F={id:yu,nodes:{[Yn]:{type:"sdxl_model_loader",id:Yn,model:s},[ye]:{type:"sdxl_compel_prompt",id:ye,prompt:i,style:O},[ve]:{type:"sdxl_compel_prompt",id:ve,prompt:o,style:D},[Zc]:{type:"tomask",id:Zc,is_intermediate:!0,image:t},[Mo]:{type:"mask_combine",id:Mo,is_intermediate:!0,mask2:n},[Ke]:{type:"img_blur",id:Ke,is_intermediate:!0,radius:b,blur_type:_},[Ot]:{type:"i2l",id:Ot,is_intermediate:!0,fp32:h==="fp32"},[ae]:{type:"noise",id:ae,use_cpu:M,is_intermediate:!0},[mt]:{type:"create_denoise_mask",id:mt,is_intermediate:!0,fp32:h==="fp32"},[ce]:{type:"denoise_latents",id:ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:A?Math.min(T,1-x):1-x,denoising_end:A?T:1},[ct]:{type:"noise",id:ae,use_cpu:M,is_intermediate:!0},[cr]:{type:"add",id:cr,b:1,is_intermediate:!0},[We]:{type:"denoise_latents",id:We,is_intermediate:!0,steps:y,cfg_scale:a,scheduler:l,denoising_start:1-g,denoising_end:1},[Se]:{type:"l2i",id:Se,is_intermediate:!0,fp32:h==="fp32"},[ie]:{type:"color_correct",id:ie,is_intermediate:!N},[Bt]:{type:"range_of_size",id:Bt,is_intermediate:!0,size:c,step:1},[it]:{type:"iterate",id:it,is_intermediate:!0}},edges:[{source:{node_id:Yn,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:Yn,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Yn,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:Yn,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:Yn,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ut,field:"image"},destination:{node_id:Ot,field:"image"}},{source:{node_id:Zc,field:"image"},destination:{node_id:Mo,field:"mask1"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}},{source:{node_id:Ot,field:"latents"},destination:{node_id:ce,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:mt,field:"mask"}},{source:{node_id:mt,field:"denoise_mask"},destination:{node_id:ce,field:"denoise_mask"}},{source:{node_id:Bt,field:"collection"},destination:{node_id:it,field:"collection"}},{source:{node_id:it,field:"item"},destination:{node_id:ae,field:"seed"}},{source:{node_id:it,field:"item"},destination:{node_id:cr,field:"a"}},{source:{node_id:cr,field:"value"},destination:{node_id:ct,field:"seed"}},{source:{node_id:Yn,field:"unet"},destination:{node_id:We,field:"unet"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:We,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:We,field:"negative_conditioning"}},{source:{node_id:ct,field:"noise"},destination:{node_id:We,field:"noise"}},{source:{node_id:ce,field:"latents"},destination:{node_id:We,field:"latents"}},{source:{node_id:We,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(S==="patchmatch"&&(F.nodes[ut]={type:"infill_patchmatch",id:ut,is_intermediate:!0}),S==="lama"&&(F.nodes[ut]={type:"infill_lama",id:ut,is_intermediate:!0}),S==="tile"&&(F.nodes[ut]={type:"infill_tile",id:ut,is_intermediate:!0,tile_size:v}),["auto","manual"].includes(k)){const U=E.width,V=E.height;F.nodes[Cr]={type:"img_resize",id:Cr,is_intermediate:!0,width:U,height:V,image:t},F.nodes[lr]={type:"img_resize",id:lr,is_intermediate:!0,width:U,height:V},F.nodes[ur]={type:"img_resize",id:ur,is_intermediate:!0,width:L,height:R},F.nodes[wa]={type:"img_resize",id:wa,is_intermediate:!0,width:L,height:R},F.nodes[dr]={type:"img_resize",id:dr,is_intermediate:!0,width:L,height:R},F.nodes[ae].width=U,F.nodes[ae].height=V,F.nodes[ct].width=U,F.nodes[ct].height=V,F.edges.push({source:{node_id:Cr,field:"image"},destination:{node_id:ut,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:Mo,field:"image"},destination:{node_id:lr,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:Se,field:"image"},destination:{node_id:ur,field:"image"}},{source:{node_id:lr,field:"image"},destination:{node_id:dr,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:wa,field:"image"}},{source:{node_id:wa,field:"image"},destination:{node_id:ie,field:"reference"}},{source:{node_id:ur,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:dr,field:"image"},destination:{node_id:ie,field:"mask"}})}else F.nodes[ut]={...F.nodes[ut],image:t},F.nodes[ae].width=L,F.nodes[ae].height=R,F.nodes[ct].width=L,F.nodes[ct].height=R,F.nodes[Ot]={...F.nodes[Ot],image:t},F.nodes[Ke]={...F.nodes[Ke]},F.edges.push({source:{node_id:Mo,field:"image"},destination:{node_id:Ke,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:mt,field:"image"}},{source:{node_id:ut,field:"image"},destination:{node_id:ie,field:"reference"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ie,field:"mask"}});if(f){const U={id:_n,type:"rand_int"};F.nodes[_n]=U,F.edges.push({source:{node_id:_n,field:"value"},destination:{node_id:Bt,field:"start"}})}else F.nodes[Bt].start=d;return(w||C)&&(Bi(e,F,$),$=Sn),A&&(Zd(e,F,We,$,t),(w||C)&&($=eo)),zi(e,F,$),Yd(e,F,ce,$),$i(e,F,ce),e.system.shouldUseNSFWChecker&&Fi(e,F,ie),e.system.shouldUseWatermarker&&Ui(e,F,ie),F},$Se=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=["auto","manual"].includes(_),{shouldUseSDXLRefiner:v,refinerStart:S,shouldConcatSDXLStylePrompt:w}=e.sdxl;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const C=d?c:po.shouldUseCpuNoise,x=i.model_type==="onnx";let A=x?ab:Yn;const T=x?"onnx_model_loader":"sdxl_model_loader",P=x?{type:"t2l_onnx",id:ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:v?S:1},{craftedPositiveStylePrompt:L,craftedNegativeStylePrompt:R}=Du(e,w),E={id:cb,nodes:{[A]:{type:T,id:A,is_intermediate:!0,model:i},[ye]:{type:x?"prompt_onnx":"sdxl_compel_prompt",id:ye,is_intermediate:!0,prompt:n,style:L},[ve]:{type:x?"prompt_onnx":"sdxl_compel_prompt",id:ve,is_intermediate:!0,prompt:r,style:R},[ae]:{type:"noise",id:ae,is_intermediate:!0,width:g?b.width:p,height:g?b.height:m,use_cpu:C},[P.id]:P},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}}]};return g?(E.nodes[Se]={id:Se,type:x?"l2i_onnx":"l2i",is_intermediate:!0,fp32:l==="fp32"},E.nodes[ie]={id:ie,type:"img_resize",is_intermediate:!y,width:p,height:m},E.edges.push({source:{node_id:ce,field:"latents"},destination:{node_id:Se,field:"latents"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}})):(E.nodes[ie]={type:x?"l2i_onnx":"l2i",id:ie,is_intermediate:!y,fp32:l==="fp32"},E.edges.push({source:{node_id:ce,field:"latents"},destination:{node_id:ie,field:"latents"}})),E.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:g?b.width:p,height:g?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:C?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},E.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:ie,field:"metadata"}}),(f||h)&&(Bi(e,E,A),A=Sn),v&&(Zd(e,E,ce,A),(f||h)&&(A=eo)),Yd(e,E,ce,A),zi(e,E,A),gl(e,E),$i(e,E,ce),e.system.shouldUseNSFWChecker&&Fi(e,E,ie),e.system.shouldUseWatermarker&&Ui(e,E,ie),E},FSe=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=["auto","manual"].includes(_);if(!i)throw t.error("No model found in state"),new Error("No model found in state");const v=d?c:po.shouldUseCpuNoise,S=i.model_type==="onnx";let w=S?ab:pl;const C=S?"onnx_model_loader":"main_model_loader",x=S?{type:"t2l_onnx",id:ge,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:ge,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},A={id:AB,nodes:{[w]:{type:C,id:w,is_intermediate:!0,model:i},[Qe]:{type:"clip_skip",id:Qe,is_intermediate:!0,skipped_layers:u},[ye]:{type:S?"prompt_onnx":"compel",id:ye,is_intermediate:!0,prompt:n},[ve]:{type:S?"prompt_onnx":"compel",id:ve,is_intermediate:!0,prompt:r},[ae]:{type:"noise",id:ae,is_intermediate:!0,width:g?b.width:p,height:g?b.height:m,use_cpu:v},[x.id]:x},edges:[{source:{node_id:w,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:w,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}}]};return g?(A.nodes[Se]={id:Se,type:S?"l2i_onnx":"l2i",is_intermediate:!0,fp32:l==="fp32"},A.nodes[ie]={id:ie,type:"img_resize",is_intermediate:!y,width:p,height:m},A.edges.push({source:{node_id:ge,field:"latents"},destination:{node_id:Se,field:"latents"}},{source:{node_id:Se,field:"image"},destination:{node_id:ie,field:"image"}})):(A.nodes[ie]={type:S?"l2i_onnx":"l2i",id:ie,is_intermediate:!y,fp32:l==="fp32"},A.edges.push({source:{node_id:ge,field:"latents"},destination:{node_id:ie,field:"latents"}})),A.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:g?b.width:p,height:g?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:v?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},A.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:ie,field:"metadata"}}),(f||h)&&(Bi(e,A,w),w=Sn),zi(e,A,w),Xd(e,A,ge,w),gl(e,A),$i(e,A,ge),e.system.shouldUseNSFWChecker&&Fi(e,A,ie),e.system.shouldUseWatermarker&&Ui(e,A,ie),A},BSe=(e,t,n,r)=>{let i;if(t==="txt2img")e.generation.model&&e.generation.model.base_model==="sdxl"?i=$Se(e):i=FSe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=NSe(e,n):i=RSe(e,n)}else if(t==="inpaint"){if(!n||!r)throw new Error("Missing canvas init and mask images");e.generation.model&&e.generation.model.base_model==="sdxl"?i=DSe(e,n,r):i=ISe(e,n,r)}else{if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=LSe(e,n,r):i=MSe(e,n,r)}return i},zSe=()=>{le({predicate:e=>hg.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=re("session"),o=t(),{layerState:s,boundingBoxCoordinates:a,boundingBoxDimensions:l,isMaskEnabled:u,shouldPreserveMaskedArea:c}=o.canvas,d=await RE(s,a,l,u,c);if(!d){i.error("Unable to create canvas data");return}const{baseBlob:f,baseImageData:h,maskBlob:p,maskImageData:m}=d,b=PSe(h,m);if(o.system.enableImageDebugging){const C=await PP(f),x=await PP(p);TSe([{base64:x,caption:"mask b64"},{base64:C,caption:"image b64"}])}i.debug(`Generation mode: ${b}`);let _,y;["img2img","inpaint","outpaint"].includes(b)&&(_=await n(ne.endpoints.uploadImage.initiate({file:new File([f],"canvasInitImage.png",{type:"image/png"}),image_category:"general",is_intermediate:!0})).unwrap()),["inpaint","outpaint"].includes(b)&&(y=await n(ne.endpoints.uploadImage.initiate({file:new File([p],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const g=BSe(o,b,_,y);i.debug({graph:kt(g)},"Canvas graph built"),n(lF(g));const{requestId:v}=n(er({graph:g})),[S]=await r(C=>er.fulfilled.match(C)&&C.meta.requestId===v),w=S.payload.id;["img2img","inpaint"].includes(b)&&_&&n(ne.endpoints.changeImageSessionId.initiate({imageDTO:_,session_id:w})),["inpaint"].includes(b)&&y&&n(ne.endpoints.changeImageSessionId.initiate({imageDTO:y,session_id:w})),o.canvas.layerState.stagingArea.boundingBox||n(nne({sessionId:w,boundingBox:{...o.canvas.boundingBoxCoordinates,...o.canvas.boundingBoxDimensions}})),n(rne(w)),n(Nu())}})},USe=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,img2imgStrength:u,shouldFitToWidthHeight:c,width:d,height:f,clipSkip:h,shouldUseCpuNoise:p,shouldUseNoiseSettings:m,vaePrecision:b,seamlessXAxis:_,seamlessYAxis:y}=e.generation;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");let g=pl;const v=m?p:po.shouldUseCpuNoise,S={id:sC,nodes:{[g]:{type:"main_model_loader",id:g,model:i},[Qe]:{type:"clip_skip",id:Qe,skipped_layers:h},[ye]:{type:"compel",id:ye,prompt:n},[ve]:{type:"compel",id:ve,prompt:r},[ae]:{type:"noise",id:ae,use_cpu:v},[Se]:{type:"l2i",id:Se,fp32:b==="fp32"},[ge]:{type:"denoise_latents",id:ge,cfg_scale:o,scheduler:s,steps:a,denoising_start:1-u,denoising_end:1},[Pt]:{type:"i2l",id:Pt,fp32:b==="fp32"}},edges:[{source:{node_id:g,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:g,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}},{source:{node_id:Pt,field:"latents"},destination:{node_id:ge,field:"latents"}},{source:{node_id:ge,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(c&&(l.width!==d||l.height!==f)){const w={id:Io,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:d,height:f};S.nodes[Io]=w,S.edges.push({source:{node_id:Io,field:"image"},destination:{node_id:Pt,field:"image"}}),S.edges.push({source:{node_id:Io,field:"width"},destination:{node_id:ae,field:"width"}}),S.edges.push({source:{node_id:Io,field:"height"},destination:{node_id:ae,field:"height"}})}else S.nodes[Pt].image={image_name:l.imageName},S.edges.push({source:{node_id:Pt,field:"width"},destination:{node_id:ae,field:"width"}}),S.edges.push({source:{node_id:Pt,field:"height"},destination:{node_id:ae,field:"height"}});return S.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:o,height:f,width:d,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:v?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:h,strength:u,init_image:l.imageName},S.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Se,field:"metadata"}}),(_||y)&&(Bi(e,S,g),g=Sn),zi(e,S,g),Xd(e,S,ge,g),gl(e,S),$i(e,S,ge),e.system.shouldUseNSFWChecker&&Fi(e,S),e.system.shouldUseWatermarker&&Ui(e,S),S},jSe=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,shouldFitToWidthHeight:u,width:c,height:d,clipSkip:f,shouldUseCpuNoise:h,shouldUseNoiseSettings:p,vaePrecision:m,seamlessXAxis:b,seamlessYAxis:_}=e.generation,{positiveStylePrompt:y,negativeStylePrompt:g,shouldConcatSDXLStylePrompt:v,shouldUseSDXLRefiner:S,refinerStart:w,sdxlImg2ImgDenoisingStrength:C}=e.sdxl;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");let x=Yn;const A=p?h:po.shouldUseCpuNoise,{craftedPositiveStylePrompt:T,craftedNegativeStylePrompt:P}=Du(e,v),L={id:uv,nodes:{[x]:{type:"sdxl_model_loader",id:x,model:i},[ye]:{type:"sdxl_compel_prompt",id:ye,prompt:n,style:T},[ve]:{type:"sdxl_compel_prompt",id:ve,prompt:r,style:P},[ae]:{type:"noise",id:ae,use_cpu:A},[Se]:{type:"l2i",id:Se,fp32:m==="fp32"},[ce]:{type:"denoise_latents",id:ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:S?Math.min(w,1-C):1-C,denoising_end:S?w:1},[Pt]:{type:"i2l",id:Pt,fp32:m==="fp32"}},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:x,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:x,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:x,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}},{source:{node_id:Pt,field:"latents"},destination:{node_id:ce,field:"latents"}},{source:{node_id:ce,field:"latents"},destination:{node_id:Se,field:"latents"}}]};if(u&&(l.width!==c||l.height!==d)){const R={id:Io,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:c,height:d};L.nodes[Io]=R,L.edges.push({source:{node_id:Io,field:"image"},destination:{node_id:Pt,field:"image"}}),L.edges.push({source:{node_id:Io,field:"width"},destination:{node_id:ae,field:"width"}}),L.edges.push({source:{node_id:Io,field:"height"},destination:{node_id:ae,field:"height"}})}else L.nodes[Pt].image={image_name:l.imageName},L.edges.push({source:{node_id:Pt,field:"width"},destination:{node_id:ae,field:"width"}}),L.edges.push({source:{node_id:Pt,field:"height"},destination:{node_id:ae,field:"height"}});return L.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"sdxl_img2img",cfg_scale:o,height:d,width:c,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:A?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:C,init_image:l.imageName,positive_style_prompt:y,negative_style_prompt:g},L.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Se,field:"metadata"}}),(b||_)&&(Bi(e,L,x),x=Sn),S&&(Zd(e,L,ce),(b||_)&&(x=eo)),zi(e,L,x),Yd(e,L,ce,x),$i(e,L,ce),gl(e,L),e.system.shouldUseNSFWChecker&&Fi(e,L),e.system.shouldUseWatermarker&&Ui(e,L),L},VSe=()=>{le({predicate:e=>hg.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=re("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=jSe(o):a=USe(o),n(aF(a)),i.debug({graph:kt(a)},"Image to Image graph built"),n(er({graph:a})),await r(er.fulfilled.match),n(Nu())}})},GSe=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function HSe(e){return e.length===1?e[0].toString():e.reduce((t,n)=>{if(typeof n=="number")return t+"["+n.toString()+"]";if(n.includes('"'))return t+'["'+WSe(n)+'"]';if(!GSe.test(n))return t+'["'+n+'"]';const r=t.length===0?"":".";return t+r+n},"")}function WSe(e){return e.replace(/"/g,'\\"')}function qSe(e){return e.length!==0}const KSe=99,kB="; ",PB=", or ",LE="Validation error",OB=": ";class RB extends Error{constructor(n,r=[]){super(n);Kb(this,"details");Kb(this,"name");this.details=r,this.name="ZodValidationError"}toString(){return this.message}}function $E(e,t,n){if(e.code==="invalid_union")return e.unionErrors.reduce((r,i)=>{const o=i.issues.map(s=>$E(s,t,n)).join(t);return r.includes(o)||r.push(o),r},[]).join(n);if(qSe(e.path)){if(e.path.length===1){const r=e.path[0];if(typeof r=="number")return`${e.message} at index ${r}`}return`${e.message} at "${HSe(e.path)}"`}return e.message}function IB(e,t,n){return t!==null?e.length>0?[t,e].join(n):t:e.length>0?e:LE}function T9e(e,t={}){const{issueSeparator:n=kB,unionSeparator:r=PB,prefixSeparator:i=OB,prefix:o=LE}=t,s=$E(e,n,r),a=IB(s,o,i);return new RB(a,[e])}function OP(e,t={}){const{maxIssuesInMessage:n=KSe,issueSeparator:r=kB,unionSeparator:i=PB,prefixSeparator:o=OB,prefix:s=LE}=t,a=e.errors.slice(0,n).map(u=>$E(u,r,i)).join(r),l=IB(a,s,o);return new RB(l,e.errors)}const XSe=e=>{const{workflow:t,nodes:n,edges:r}=e,i={...t,nodes:[],edges:[]};return n.filter(o=>["invocation","notes"].includes(o.type??"__UNKNOWN_NODE_TYPE__")).forEach(o=>{const s=aD.safeParse(o);if(!s.success){const{message:a}=OP(s.error,{prefix:"Unable to parse node"});re("nodes").warn({node:kt(o)},a);return}i.nodes.push(s.data)}),r.forEach(o=>{const s=lD.safeParse(o);if(!s.success){const{message:a}=OP(s.error,{prefix:"Unable to parse edge"});re("nodes").warn({edge:kt(o)},a);return}i.edges.push(s.data)}),i},YSe=e=>{if(e.type==="ColorField"&&e.value){const t=Jt(e.value),{r:n,g:r,b:i,a:o}=e.value,s=Math.max(0,Math.min(o*255,255));return Object.assign(t,{r:n,g:r,b:i,a:s}),t}return e.value},ZSe=e=>{const{nodes:t,edges:n}=e,r=t.filter(An),i=JSON.stringify(XSe(e)),o=r.reduce((u,c)=>{const{id:d,data:f}=c,{type:h,inputs:p,isIntermediate:m,embedWorkflow:b}=f,_=lx(p,(g,v,S)=>{const w=YSe(v);return g[S]=w,g},{}),y={type:h,id:d,..._,is_intermediate:m};return b&&Object.assign(y,{workflow:i}),Object.assign(u,{[d]:y}),u},{}),a=n.filter(u=>u.type!=="collapsed").reduce((u,c)=>{const{source:d,target:f,sourceHandle:h,targetHandle:p}=c;return u.push({source:{node_id:d,field:h},destination:{node_id:f,field:p}}),u},[]);return a.forEach(u=>{const c=o[u.destination.node_id],d=u.destination.field;o[u.destination.node_id]=l1(c,d)}),{id:B$(),nodes:o,edges:a}},QSe=()=>{le({predicate:e=>hg.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=re("session"),o=t(),s=ZSe(o.nodes);n(uF(s)),i.debug({graph:kt(s)},"Nodes graph built"),n(er({graph:s})),await r(er.fulfilled.match),n(Nu())}})},JSe=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{positiveStylePrompt:b,negativeStylePrompt:_,shouldUseSDXLRefiner:y,shouldConcatSDXLStylePrompt:g,refinerStart:v}=e.sdxl,S=f?d:po.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const{craftedPositiveStylePrompt:w,craftedNegativeStylePrompt:C}=Du(e,g);let x=Yn;const A={id:NE,nodes:{[x]:{type:"sdxl_model_loader",id:x,model:i},[ye]:{type:"sdxl_compel_prompt",id:ye,prompt:n,style:w},[ve]:{type:"sdxl_compel_prompt",id:ve,prompt:r,style:C},[ae]:{type:"noise",id:ae,width:l,height:u,use_cpu:S},[ce]:{type:"denoise_latents",id:ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:y?v:1},[Se]:{type:"l2i",id:Se,fp32:h==="fp32"}},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:ce,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:x,field:"clip2"},destination:{node_id:ye,field:"clip2"}},{source:{node_id:x,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:x,field:"clip2"},destination:{node_id:ve,field:"clip2"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ce,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ce,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ce,field:"noise"}},{source:{node_id:ce,field:"latents"},destination:{node_id:Se,field:"latents"}}]};return A.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"sdxl_txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c,positive_style_prompt:b,negative_style_prompt:_},A.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Se,field:"metadata"}}),(p||m)&&(Bi(e,A,x),x=Sn),y&&(Zd(e,A,ce),(p||m)&&(x=eo)),zi(e,A,x),Yd(e,A,ce,x),$i(e,A,ce),gl(e,A),e.system.shouldUseNSFWChecker&&Fi(e,A),e.system.shouldUseWatermarker&&Ui(e,A),A},e2e=e=>{const t=re("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,b=f?d:po.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const _=i.model_type==="onnx";let y=_?ab:pl;const g=_?"onnx_model_loader":"main_model_loader",v=_?{type:"t2l_onnx",id:ge,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:ge,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},S={id:TB,nodes:{[y]:{type:g,id:y,is_intermediate:!0,model:i},[Qe]:{type:"clip_skip",id:Qe,skipped_layers:c,is_intermediate:!0},[ye]:{type:_?"prompt_onnx":"compel",id:ye,prompt:n,is_intermediate:!0},[ve]:{type:_?"prompt_onnx":"compel",id:ve,prompt:r,is_intermediate:!0},[ae]:{type:"noise",id:ae,width:l,height:u,use_cpu:b,is_intermediate:!0},[v.id]:v,[Se]:{type:_?"l2i_onnx":"l2i",id:Se,fp32:h==="fp32"}},edges:[{source:{node_id:y,field:"unet"},destination:{node_id:ge,field:"unet"}},{source:{node_id:y,field:"clip"},destination:{node_id:Qe,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ye,field:"clip"}},{source:{node_id:Qe,field:"clip"},destination:{node_id:ve,field:"clip"}},{source:{node_id:ye,field:"conditioning"},destination:{node_id:ge,field:"positive_conditioning"}},{source:{node_id:ve,field:"conditioning"},destination:{node_id:ge,field:"negative_conditioning"}},{source:{node_id:ae,field:"noise"},destination:{node_id:ge,field:"noise"}},{source:{node_id:ge,field:"latents"},destination:{node_id:Se,field:"latents"}}]};return S.nodes[Fe]={id:Fe,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:b?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c},S.edges.push({source:{node_id:Fe,field:"metadata"},destination:{node_id:Se,field:"metadata"}}),(p||m)&&(Bi(e,S,y),y=Sn),zi(e,S,y),Xd(e,S,ge,y),gl(e,S),$i(e,S,ge),e.system.shouldUseNSFWChecker&&Fi(e,S),e.system.shouldUseWatermarker&&Ui(e,S),S},t2e=()=>{le({predicate:e=>hg.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=re("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=JSe(o):a=e2e(o),n(sF(a)),i.debug({graph:kt(a)},"Text to Image graph built"),n(er({graph:a})),await r(er.fulfilled.match),n(Nu())}})},MB=PM(),le=MB.startListening;tbe();nbe();abe();W_e();q_e();K_e();X_e();Y_e();_0e();ebe();rbe();ibe();zSe();QSe();t2e();VSe();sSe();z_e();L_e();D0e();$_e();N0e();I0e();B_e();bSe();h0e();uSe();cSe();fSe();hSe();gSe();aSe();lSe();vSe();_Se();mSe();ySe();pSe();eSe();tSe();nSe();rSe();iSe();oSe();Zbe();Qbe();Jbe();V_e();j_e();G_e();H_e();Q_e();J_e();b0e();Hbe();Z_e();lbe();y0e();cbe();g0e();p0e();ESe();wSe();const n2e={canvas:ine,gallery:Yae,generation:Nte,nodes:Dhe,postprocessing:Lhe,system:cpe,config:pee,ui:mpe,hotkeys:ppe,controlNet:Gae,dynamicPrompts:Xae,deleteImageModal:qae,changeBoardModal:sne,lora:Jae,modelmanager:hpe,sdxl:Bhe,[Ka.reducerPath]:Ka.reducer},r2e=Md(n2e),i2e=Upe(r2e),o2e=["canvas","gallery","generation","sdxl","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],NB=uM({reducer:i2e,enhancers:e=>e.concat(jpe(window.localStorage,o2e,{persistDebounce:300,serialize:Jpe,unserialize:tge,prefix:Vpe})).concat(RM()),middleware:e=>e({immutableCheck:!1,serializableCheck:!1}).concat(Ka.middleware).concat(bpe).prepend(MB.middleware),devTools:{actionSanitizer:rge,stateSanitizer:oge,trace:!0,predicate:(e,t)=>!ige.includes(t.type)}}),s2e=e=>e,a2e=e=>{const{socket:t,storeApi:n}=e,{dispatch:r,getState:i}=n;t.on("connect",()=>{re("socketio").debug("Connected"),r(HD());const{sessionId:s}=i().system;s&&(t.emit("subscribe",{session:s}),r(L5({sessionId:s})))}),t.on("connect_error",o=>{o&&o.message&&o.data==="ERR_UNAUTHENTICATED"&&r(Wt(Sa({title:o.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{r(qD())}),t.on("invocation_started",o=>{r(QD({data:o}))}),t.on("generator_progress",o=>{r(nL({data:o}))}),t.on("invocation_error",o=>{r(JD({data:o}))}),t.on("invocation_complete",o=>{r(F5({data:o}))}),t.on("graph_execution_state_complete",o=>{r(eL({data:o}))}),t.on("model_load_started",o=>{r(rL({data:o}))}),t.on("model_load_completed",o=>{r(iL({data:o}))}),t.on("session_retrieval_error",o=>{r(oL({data:o}))}),t.on("invocation_retrieval_error",o=>{r(aL({data:o}))})},Xo=Object.create(null);Xo.open="0";Xo.close="1";Xo.ping="2";Xo.pong="3";Xo.message="4";Xo.upgrade="5";Xo.noop="6";const C0=Object.create(null);Object.keys(Xo).forEach(e=>{C0[Xo[e]]=e});const lC={type:"error",data:"parser error"},DB=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",LB=typeof ArrayBuffer=="function",$B=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,FE=({type:e,data:t},n,r)=>DB&&t instanceof Blob?n?r(t):RP(t,r):LB&&(t instanceof ArrayBuffer||$B(t))?n?r(t):RP(new Blob([t]),r):r(Xo[e]+(t||"")),RP=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function IP(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let O2;function l2e(e,t){if(DB&&e.data instanceof Blob)return e.data.arrayBuffer().then(IP).then(t);if(LB&&(e.data instanceof ArrayBuffer||$B(e.data)))return t(IP(e.data));FE(e,!1,n=>{O2||(O2=new TextEncoder),t(O2.encode(n))})}const MP="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Uf=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,i=0,o,s,a,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),c=new Uint8Array(u);for(r=0;r>4,c[i++]=(s&15)<<4|a>>2,c[i++]=(a&3)<<6|l&63;return u},c2e=typeof ArrayBuffer=="function",BE=(e,t)=>{if(typeof e!="string")return{type:"message",data:FB(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:d2e(e.substring(1),t)}:C0[n]?e.length>1?{type:C0[n],data:e.substring(1)}:{type:C0[n]}:lC},d2e=(e,t)=>{if(c2e){const n=u2e(e);return FB(n,t)}else return{base64:!0,data:e}},FB=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},BB=String.fromCharCode(30),f2e=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{FE(o,!1,a=>{r[s]=a,++i===n&&t(r.join(BB))})})},h2e=(e,t)=>{const n=e.split(BB),r=[];for(let i=0;i{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const o=new DataView(i.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{i=new Uint8Array(9);const o=new DataView(i.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}let R2;function zm(e){return e.reduce((t,n)=>t+n.length,0)}function Um(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;iMath.pow(2,53-32)-1){a.enqueue(lC);break}i=c*Math.pow(2,32)+u.getUint32(4),r=3}else{if(zm(n)e){a.enqueue(lC);break}}}})}const zB=4;function gn(e){if(e)return m2e(e)}function m2e(e){for(var t in gn.prototype)e[t]=gn.prototype[t];return e}gn.prototype.on=gn.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};gn.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};gn.prototype.off=gn.prototype.removeListener=gn.prototype.removeAllListeners=gn.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function UB(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const y2e=Ci.setTimeout,v2e=Ci.clearTimeout;function db(e,t){t.useNativeTimers?(e.setTimeoutFn=y2e.bind(Ci),e.clearTimeoutFn=v2e.bind(Ci)):(e.setTimeoutFn=Ci.setTimeout.bind(Ci),e.clearTimeoutFn=Ci.clearTimeout.bind(Ci))}const _2e=1.33;function b2e(e){return typeof e=="string"?S2e(e):Math.ceil((e.byteLength||e.size)*_2e)}function S2e(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function w2e(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function x2e(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function VB(){const e=LP(+new Date);return e!==DP?(NP=0,DP=e):e+"."+LP(NP++)}for(;jm{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)};h2e(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,f2e(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=VB()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}request(t={}){return Object.assign(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Qc(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}}let Qc=class E0 extends gn{constructor(t,n){super(),db(this,n),this.opts=n,this.method=n.method||"GET",this.uri=t,this.data=n.data!==void 0?n.data:null,this.create()}create(){var t;const n=UB(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new HB(n);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let i in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&r.setRequestHeader(i,this.opts.extraHeaders[i])}}catch{}if(this.method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this.opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var i;r.readyState===3&&((i=this.opts.cookieJar)===null||i===void 0||i.parseCookies(r)),r.readyState===4&&(r.status===200||r.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof r.status=="number"?r.status:0)},0))},r.send(this.data)}catch(i){this.setTimeoutFn(()=>{this.onError(i)},0);return}typeof document<"u"&&(this.index=E0.requestsCount++,E0.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=A2e,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete E0.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()}};Qc.requestsCount=0;Qc.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",$P);else if(typeof addEventListener=="function"){const e="onpagehide"in Ci?"pagehide":"unload";addEventListener(e,$P,!1)}}function $P(){for(let e in Qc.requests)Qc.requests.hasOwnProperty(e)&&Qc.requests[e].abort()}const UE=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),Vm=Ci.WebSocket||Ci.MozWebSocket,FP=!0,O2e="arraybuffer",BP=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class R2e extends zE{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=BP?{}:UB(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=FP&&!BP?n?new Vm(t,n):new Vm(t):new Vm(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,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 s={};try{FP&&this.ws.send(o)}catch{}i&&UE(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=VB()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!Vm}}class I2e extends zE{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(t=>{const n=g2e(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),i=p2e();i.readable.pipeTo(t.writable),this.writer=i.writable.getWriter();const o=()=>{r.read().then(({done:a,value:l})=>{a||(this.onPacket(l),o())}).catch(a=>{})};o();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{i&&UE(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const M2e={websocket:R2e,webtransport:I2e,polling:P2e},N2e=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,D2e=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function cC(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=N2e.exec(e||""),o={},s=14;for(;s--;)o[D2e[s]]=i[s]||"";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=L2e(o,o.path),o.queryKey=$2e(o,o.query),o}function L2e(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 $2e(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let WB=class dc extends gn{constructor(t,n={}){super(),this.binaryType=O2e,this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=cC(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=cC(n.host).host),db(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","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=x2e(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=zB,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new M2e[t](r)}open(){let t;if(this.opts.rememberUpgrade&&dc.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;dc.priorWebsocketSuccess=!1;const i=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",d=>{if(!r)if(d.type==="pong"&&d.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;dc.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(c(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const f=new Error("probe error");f.transport=n.name,this.emitReserved("upgradeError",f)}}))};function o(){r||(r=!0,c(),n.close(),n=null)}const s=d=>{const f=new Error("probe error: "+d);f.transport=n.name,o(),this.emitReserved("upgradeError",f)};function a(){s("transport closed")}function l(){s("socket closed")}function u(d){n&&d.name!==n.name&&o()}const c=()=>{n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",a),this.off("close",l),this.off("upgrading",u)};n.once("open",i),n.once("error",s),n.once("close",a),this.once("close",l),this.once("upgrading",u),this.upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onOpen(){if(this.readyState="open",dc.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){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){dc.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,qB=Object.prototype.toString,U2e=typeof Blob=="function"||typeof Blob<"u"&&qB.call(Blob)==="[object BlobConstructor]",j2e=typeof File=="function"||typeof File<"u"&&qB.call(File)==="[object FileConstructor]";function jE(e){return B2e&&(e instanceof ArrayBuffer||z2e(e))||U2e&&e instanceof Blob||j2e&&e instanceof File}function T0(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num{delete this.acks[t];for(let s=0;s{this.io.clearTimeoutFn(o),n.apply(this,[null,...s])}}emitWithAck(t,...n){const r=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((i,o)=>{n.push((s,a)=>r?s?o(s):i(a):i(s)),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((i,...o)=>r!==this._queue[0]?void 0:(i!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(i)):(this._queue.shift(),n&&n(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Ge.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}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 Ge.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):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 Ge.EVENT:case Ge.BINARY_EVENT:this.onevent(t);break;case Ge.ACK:case Ge.BINARY_ACK:this.onack(t);break;case Ge.DISCONNECT:this.ondisconnect();break;case Ge.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),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...i){r||(r=!0,n.packet({type:Ge.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,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}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:Ge.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}Qd.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?e+n:e-n}return Math.min(e,this.max)|0};Qd.prototype.reset=function(){this.attempts=0};Qd.prototype.setMin=function(e){this.ms=e};Qd.prototype.setMax=function(e){this.max=e};Qd.prototype.setJitter=function(e){this.jitter=e};class hC extends gn{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,db(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 Qd({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||X2e;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 WB(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Xi(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=Xi(n,"error",o);if(this._timeout!==!1){const a=this._timeout,l=this.setTimeoutFn(()=>{i(),o(new Error("timeout")),n.close()},a);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(i),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Xi(t,"ping",this.onping.bind(this)),Xi(t,"data",this.ondata.bind(this)),Xi(t,"error",this.onerror.bind(this)),Xi(t,"close",this.onclose.bind(this)),Xi(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){UE(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new KB(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(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const kf={};function A0(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=F2e(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=kf[i]&&o in kf[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new hC(r,t):(kf[i]||(kf[i]=new hC(r,t)),l=kf[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(A0,{Manager:hC,Socket:KB,io:A0,connect:A0});const UP=()=>{let e=!1,n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;const r={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const s=tp.get();s&&(n=s.replace(/^https?\:\/\//i,""));const a=ep.get();a&&(r.auth={token:a}),r.transports=["websocket","polling"]}const i=A0(n,r);return s=>a=>l=>{const{dispatch:u,getState:c}=s;if(e||(a2e({storeApi:s,socket:i}),e=!0,i.connect()),er.fulfilled.match(l)){const d=l.payload.id,f=c().system.sessionId;f&&(i.emit("unsubscribe",{session:f}),u(YD({sessionId:f}))),i.emit("subscribe",{session:d}),u(L5({sessionId:d}))}a(l)}};function Z2e(e){if(e.sheet)return e.sheet;for(var t=0;t0?Zn(Jd,--Wr):0,Ad--,hn===10&&(Ad=1,hb--),hn}function ii(){return hn=Wr2||Ap(hn)>3?"":" "}function cwe(e,t){for(;--t&&ii()&&!(hn<48||hn>102||hn>57&&hn<65||hn>70&&hn<97););return Eg(e,k0()+(t<6&&Go()==32&&ii()==32))}function gC(e){for(;ii();)switch(hn){case e:return Wr;case 34:case 39:e!==34&&e!==39&&gC(hn);break;case 40:e===41&&gC(e);break;case 92:ii();break}return Wr}function dwe(e,t){for(;ii()&&e+hn!==47+10;)if(e+hn===42+42&&Go()===47)break;return"/*"+Eg(t,Wr-1)+"*"+fb(e===47?e:ii())}function fwe(e){for(;!Ap(Go());)ii();return Eg(e,Wr)}function hwe(e){return ez(O0("",null,null,null,[""],e=JB(e),0,[0],e))}function O0(e,t,n,r,i,o,s,a,l){for(var u=0,c=0,d=s,f=0,h=0,p=0,m=1,b=1,_=1,y=0,g="",v=i,S=o,w=r,C=g;b;)switch(p=y,y=ii()){case 40:if(p!=108&&Zn(C,d-1)==58){pC(C+=rt(P0(y),"&","&\f"),"&\f")!=-1&&(_=-1);break}case 34:case 39:case 91:C+=P0(y);break;case 9:case 10:case 13:case 32:C+=uwe(p);break;case 92:C+=cwe(k0()-1,7);continue;case 47:switch(Go()){case 42:case 47:Gm(pwe(dwe(ii(),k0()),t,n),l);break;default:C+="/"}break;case 123*m:a[u++]=To(C)*_;case 125*m:case 59:case 0:switch(y){case 0:case 125:b=0;case 59+c:_==-1&&(C=rt(C,/\f/g,"")),h>0&&To(C)-d&&Gm(h>32?VP(C+";",r,n,d-1):VP(rt(C," ","")+";",r,n,d-2),l);break;case 59:C+=";";default:if(Gm(w=jP(C,t,n,u,c,i,a,g,v=[],S=[],d),o),y===123)if(c===0)O0(C,t,w,w,v,o,d,a,S);else switch(f===99&&Zn(C,3)===110?100:f){case 100:case 108:case 109:case 115:O0(e,w,w,r&&Gm(jP(e,w,w,0,0,i,a,g,i,v=[],d),S),i,S,d,a,r?v:S);break;default:O0(C,w,w,w,[""],S,0,a,S)}}u=c=h=0,m=_=1,g=C="",d=s;break;case 58:d=1+To(C),h=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&lwe()==125)continue}switch(C+=fb(y),y*m){case 38:_=c>0?1:(C+="\f",-1);break;case 44:a[u++]=(To(C)-1)*_,_=1;break;case 64:Go()===45&&(C+=P0(ii())),f=Go(),c=d=To(g=C+=fwe(k0())),y++;break;case 45:p===45&&To(C)==2&&(m=0)}}return o}function jP(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=WE(f),p=0,m=0,b=0;p0?f[_]+" "+y:rt(y,/&\f/g,f[_])))&&(l[b++]=g);return pb(e,t,n,i===0?GE:a,l,u,c)}function pwe(e,t,n){return pb(e,t,n,XB,fb(awe()),Tp(e,2,-2),0)}function VP(e,t,n,r){return pb(e,t,n,HE,Tp(e,0,r),Tp(e,r+1,-1),r)}function Jc(e,t){for(var n="",r=WE(e),i=0;i6)switch(Zn(e,t+1)){case 109:if(Zn(e,t+4)!==45)break;case 102:return rt(e,/(.+:)(.+)-([^]+)/,"$1"+nt+"$2-$3$1"+cv+(Zn(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~pC(e,"stretch")?nz(rt(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(Zn(e,t+1)!==115)break;case 6444:switch(Zn(e,To(e)-3-(~pC(e,"!important")&&10))){case 107:return rt(e,":",":"+nt)+e;case 101:return rt(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+nt+(Zn(e,14)===45?"inline-":"")+"box$3$1"+nt+"$2$3$1"+or+"$2box$3")+e}break;case 5936:switch(Zn(e,t+11)){case 114:return nt+e+or+rt(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return nt+e+or+rt(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return nt+e+or+rt(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return nt+e+or+e+e}return e}var xwe=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case HE:t.return=nz(t.value,t.length);break;case YB:return Jc([Pf(t,{value:rt(t.value,"@","@"+nt)})],i);case GE:if(t.length)return swe(t.props,function(o){switch(owe(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Jc([Pf(t,{props:[rt(o,/:(read-\w+)/,":"+cv+"$1")]})],i);case"::placeholder":return Jc([Pf(t,{props:[rt(o,/:(plac\w+)/,":"+nt+"input-$1")]}),Pf(t,{props:[rt(o,/:(plac\w+)/,":"+cv+"$1")]}),Pf(t,{props:[rt(o,/:(plac\w+)/,or+"input-$1")]})],i)}return""})}},Cwe=[xwe],Ewe=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(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||Cwe,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),_=1;_=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 Pwe={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,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},Owe=/[A-Z]|^ms/g,Rwe=/_EMO_([^_]+?)_([^]*?)_EMO_/g,oz=function(t){return t.charCodeAt(1)===45},WP=function(t){return t!=null&&typeof t!="boolean"},I2=tz(function(e){return oz(e)?e:e.replace(Owe,"-$&").toLowerCase()}),qP=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(Rwe,function(r,i,o){return Ao={name:i,styles:o,next:Ao},i})}return Pwe[t]!==1&&!oz(t)&&typeof n=="number"&&n!==0?n+"px":n};function kp(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 Ao={name:n.name,styles:n.styles,next:Ao},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Ao={name:r.name,styles:r.styles,next:Ao},r=r.next;var i=n.styles+";";return i}return Iwe(e,t,n)}case"function":{if(e!==void 0){var o=Ao,s=n(e);return Ao=o,kp(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function Iwe(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i` or ``");return e}var cz=I.createContext({});cz.displayName="ColorModeContext";function KE(){const e=I.useContext(cz);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function P9e(e,t){const{colorMode:n}=KE();return n==="dark"?t:e}function zwe(){const e=KE(),t=uz();return{...e,theme:t}}function Uwe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__breakpoints)==null?void 0:a.asArray)==null?void 0:l[s]};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function jwe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__cssMap)==null?void 0:a[s])==null?void 0:l.value};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function O9e(e,t,n){const r=uz();return Vwe(e,t,n)(r)}function Vwe(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const s=i.filter(Boolean),a=r.map((l,u)=>{var c,d;if(e==="breakpoints")return Uwe(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return jwe(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var XE=(...e)=>e.filter(Boolean).join(" ");function Gwe(){return!1}function ks(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var R9e=e=>{const{condition:t,message:n}=e;t&&Gwe()&&console.warn(n)};function Hl(e,...t){return Hwe(e)?e(...t):e}var Hwe=e=>typeof e=="function",I9e=e=>e?"":void 0,M9e=e=>e?!0:void 0;function N9e(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function D9e(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var dv={exports:{}};dv.exports;(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,s=9007199254740991,a="[object Arguments]",l="[object Array]",u="[object AsyncFunction]",c="[object Boolean]",d="[object Date]",f="[object Error]",h="[object Function]",p="[object GeneratorFunction]",m="[object Map]",b="[object Number]",_="[object Null]",y="[object Object]",g="[object Proxy]",v="[object RegExp]",S="[object Set]",w="[object String]",C="[object Undefined]",x="[object WeakMap]",A="[object ArrayBuffer]",T="[object DataView]",P="[object Float32Array]",L="[object Float64Array]",R="[object Int8Array]",E="[object Int16Array]",k="[object Int32Array]",N="[object Uint8Array]",$="[object Uint8ClampedArray]",M="[object Uint16Array]",O="[object Uint32Array]",D=/[\\^$.*+?()[\]{}|]/g,F=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,V={};V[P]=V[L]=V[R]=V[E]=V[k]=V[N]=V[$]=V[M]=V[O]=!0,V[a]=V[l]=V[A]=V[c]=V[T]=V[d]=V[f]=V[h]=V[m]=V[b]=V[y]=V[v]=V[S]=V[w]=V[x]=!1;var q=typeof De=="object"&&De&&De.Object===Object&&De,X=typeof self=="object"&&self&&self.Object===Object&&self,Z=q||X||Function("return this")(),z=t&&!t.nodeType&&t,W=z&&!0&&e&&!e.nodeType&&e,Q=W&&W.exports===z,J=Q&&q.process,se=function(){try{var B=W&&W.require&&W.require("util").types;return B||J&&J.binding&&J.binding("util")}catch{}}(),oe=se&&se.isTypedArray;function Me(B,G,K){switch(K.length){case 0:return B.call(G);case 1:return B.call(G,K[0]);case 2:return B.call(G,K[0],K[1]);case 3:return B.call(G,K[0],K[1],K[2])}return B.apply(G,K)}function Ae(B,G){for(var K=-1,de=Array(B);++K-1}function rs(B,G){var K=this.__data__,de=Bu(K,B);return de<0?(++this.size,K.push([B,G])):K[de][1]=G,this}Vn.prototype.clear=ns,Vn.prototype.delete=Ks,Vn.prototype.get=Xs,Vn.prototype.has=Fu,Vn.prototype.set=rs;function _r(B){var G=-1,K=B==null?0:B.length;for(this.clear();++G1?K[qe-1]:void 0,Mt=qe>2?K[2]:void 0;for(gt=B.length>3&&typeof gt=="function"?(qe--,gt):void 0,Mt&&Mj(K[0],K[1],Mt)&&(gt=qe<3?void 0:gt,qe=1),G=Object(G);++de-1&&B%1==0&&B0){if(++G>=i)return arguments[0]}else G=0;return B.apply(void 0,arguments)}}function Uj(B){if(B!=null){try{return ht.call(B)}catch{}try{return B+""}catch{}}return""}function $g(B,G){return B===G||B!==B&&G!==G}var jb=ju(function(){return arguments}())?ju:function(B){return rf(B)&&cn.call(B,"callee")&&!Vi.call(B,"callee")},Vb=Array.isArray;function Gb(B){return B!=null&&D4(B.length)&&!Hb(B)}function jj(B){return rf(B)&&Gb(B)}var N4=vl||qj;function Hb(B){if(!Sl(B))return!1;var G=Uu(B);return G==h||G==p||G==u||G==g}function D4(B){return typeof B=="number"&&B>-1&&B%1==0&&B<=s}function Sl(B){var G=typeof B;return B!=null&&(G=="object"||G=="function")}function rf(B){return B!=null&&typeof B=="object"}function Vj(B){if(!rf(B)||Uu(B)!=y)return!1;var G=Kr(B);if(G===null)return!0;var K=cn.call(G,"constructor")&&G.constructor;return typeof K=="function"&&K instanceof K&&ht.call(K)==fi}var L4=oe?_e(oe):_j;function Gj(B){return kj(B,$4(B))}function $4(B){return Gb(B)?$b(B,!0):bj(B)}var Hj=Pj(function(B,G,K,de){R4(B,G,K,de)});function Wj(B){return function(){return B}}function F4(B){return B}function qj(){return!1}e.exports=Hj})(dv,dv.exports);var Wwe=dv.exports;const Lo=vu(Wwe);var qwe=e=>/!(important)?$/.test(e),YP=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,Kwe=(e,t)=>n=>{const r=String(t),i=qwe(r),o=YP(r),s=e?`${e}.${o}`:o;let a=ks(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=YP(a),i?`${a} !important`:a};function YE(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=Kwe(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var Hm=(...e)=>t=>e.reduce((n,r)=>r(n),t);function vi(e,t){return n=>{const r={property:n,scale:e};return r.transform=YE({scale:e,transform:t}),r}}var Xwe=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function Ywe(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:Xwe(t),transform:n?YE({scale:n,compose:r}):r}}var dz=["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 Zwe(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...dz].join(" ")}function Qwe(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...dz].join(" ")}var Jwe={"--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(" ")},exe={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 txe(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 nxe={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},mC={"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"},rxe=new Set(Object.values(mC)),yC=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),ixe=e=>e.trim();function oxe(e,t){if(e==null||yC.has(e))return e;if(!(vC(e)||yC.has(e)))return`url('${e}')`;const i=/(^[a-z-A-Z]+)\((.*)\)/g.exec(e),o=i==null?void 0:i[1],s=i==null?void 0:i[2];if(!o||!s)return e;const a=o.includes("-gradient")?o:`${o}-gradient`,[l,...u]=s.split(",").map(ixe).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in mC?mC[l]:l;u.unshift(c);const d=u.map(f=>{if(rxe.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],b=vC(m)?m:m&&m.split(" "),_=`colors.${p}`,y=_ in t.__cssMap?t.__cssMap[_].varRef:p;return b?[y,...Array.isArray(b)?b:[b]].join(" "):y});return`${a}(${d.join(", ")})`}var vC=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),sxe=(e,t)=>oxe(e,t??{});function axe(e){return/^var\(--.+\)$/.test(e)}var lxe=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},wo=e=>t=>`${e}(${t})`,Ye={filter(e){return e!=="auto"?e:Jwe},backdropFilter(e){return e!=="auto"?e:exe},ring(e){return txe(Ye.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?Zwe():e==="auto-gpu"?Qwe():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=lxe(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(axe(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:sxe,blur:wo("blur"),opacity:wo("opacity"),brightness:wo("brightness"),contrast:wo("contrast"),dropShadow:wo("drop-shadow"),grayscale:wo("grayscale"),hueRotate:wo("hue-rotate"),invert:wo("invert"),saturate:wo("saturate"),sepia:wo("sepia"),bgImage(e){return e==null||vC(e)||yC.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){var t;const{space:n,divide:r}=(t=nxe[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},H={borderWidths:vi("borderWidths"),borderStyles:vi("borderStyles"),colors:vi("colors"),borders:vi("borders"),gradients:vi("gradients",Ye.gradient),radii:vi("radii",Ye.px),space:vi("space",Hm(Ye.vh,Ye.px)),spaceT:vi("space",Hm(Ye.vh,Ye.px)),degreeT(e){return{property:e,transform:Ye.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:YE({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:vi("sizes",Hm(Ye.vh,Ye.px)),sizesT:vi("sizes",Hm(Ye.vh,Ye.fraction)),shadows:vi("shadows"),logical:Ywe,blur:vi("blur",Ye.blur)},R0={background:H.colors("background"),backgroundColor:H.colors("backgroundColor"),backgroundImage:H.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:Ye.bgClip},bgSize:H.prop("backgroundSize"),bgPosition:H.prop("backgroundPosition"),bg:H.colors("background"),bgColor:H.colors("backgroundColor"),bgPos:H.prop("backgroundPosition"),bgRepeat:H.prop("backgroundRepeat"),bgAttachment:H.prop("backgroundAttachment"),bgGradient:H.gradients("backgroundImage"),bgClip:{transform:Ye.bgClip}};Object.assign(R0,{bgImage:R0.backgroundImage,bgImg:R0.backgroundImage});var tt={border:H.borders("border"),borderWidth:H.borderWidths("borderWidth"),borderStyle:H.borderStyles("borderStyle"),borderColor:H.colors("borderColor"),borderRadius:H.radii("borderRadius"),borderTop:H.borders("borderTop"),borderBlockStart:H.borders("borderBlockStart"),borderTopLeftRadius:H.radii("borderTopLeftRadius"),borderStartStartRadius:H.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:H.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:H.radii("borderTopRightRadius"),borderStartEndRadius:H.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:H.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:H.borders("borderRight"),borderInlineEnd:H.borders("borderInlineEnd"),borderBottom:H.borders("borderBottom"),borderBlockEnd:H.borders("borderBlockEnd"),borderBottomLeftRadius:H.radii("borderBottomLeftRadius"),borderBottomRightRadius:H.radii("borderBottomRightRadius"),borderLeft:H.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:H.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:H.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:H.borders(["borderLeft","borderRight"]),borderInline:H.borders("borderInline"),borderY:H.borders(["borderTop","borderBottom"]),borderBlock:H.borders("borderBlock"),borderTopWidth:H.borderWidths("borderTopWidth"),borderBlockStartWidth:H.borderWidths("borderBlockStartWidth"),borderTopColor:H.colors("borderTopColor"),borderBlockStartColor:H.colors("borderBlockStartColor"),borderTopStyle:H.borderStyles("borderTopStyle"),borderBlockStartStyle:H.borderStyles("borderBlockStartStyle"),borderBottomWidth:H.borderWidths("borderBottomWidth"),borderBlockEndWidth:H.borderWidths("borderBlockEndWidth"),borderBottomColor:H.colors("borderBottomColor"),borderBlockEndColor:H.colors("borderBlockEndColor"),borderBottomStyle:H.borderStyles("borderBottomStyle"),borderBlockEndStyle:H.borderStyles("borderBlockEndStyle"),borderLeftWidth:H.borderWidths("borderLeftWidth"),borderInlineStartWidth:H.borderWidths("borderInlineStartWidth"),borderLeftColor:H.colors("borderLeftColor"),borderInlineStartColor:H.colors("borderInlineStartColor"),borderLeftStyle:H.borderStyles("borderLeftStyle"),borderInlineStartStyle:H.borderStyles("borderInlineStartStyle"),borderRightWidth:H.borderWidths("borderRightWidth"),borderInlineEndWidth:H.borderWidths("borderInlineEndWidth"),borderRightColor:H.colors("borderRightColor"),borderInlineEndColor:H.colors("borderInlineEndColor"),borderRightStyle:H.borderStyles("borderRightStyle"),borderInlineEndStyle:H.borderStyles("borderInlineEndStyle"),borderTopRadius:H.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:H.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:H.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:H.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(tt,{rounded:tt.borderRadius,roundedTop:tt.borderTopRadius,roundedTopLeft:tt.borderTopLeftRadius,roundedTopRight:tt.borderTopRightRadius,roundedTopStart:tt.borderStartStartRadius,roundedTopEnd:tt.borderStartEndRadius,roundedBottom:tt.borderBottomRadius,roundedBottomLeft:tt.borderBottomLeftRadius,roundedBottomRight:tt.borderBottomRightRadius,roundedBottomStart:tt.borderEndStartRadius,roundedBottomEnd:tt.borderEndEndRadius,roundedLeft:tt.borderLeftRadius,roundedRight:tt.borderRightRadius,roundedStart:tt.borderInlineStartRadius,roundedEnd:tt.borderInlineEndRadius,borderStart:tt.borderInlineStart,borderEnd:tt.borderInlineEnd,borderTopStartRadius:tt.borderStartStartRadius,borderTopEndRadius:tt.borderStartEndRadius,borderBottomStartRadius:tt.borderEndStartRadius,borderBottomEndRadius:tt.borderEndEndRadius,borderStartRadius:tt.borderInlineStartRadius,borderEndRadius:tt.borderInlineEndRadius,borderStartWidth:tt.borderInlineStartWidth,borderEndWidth:tt.borderInlineEndWidth,borderStartColor:tt.borderInlineStartColor,borderEndColor:tt.borderInlineEndColor,borderStartStyle:tt.borderInlineStartStyle,borderEndStyle:tt.borderInlineEndStyle});var uxe={color:H.colors("color"),textColor:H.colors("color"),fill:H.colors("fill"),stroke:H.colors("stroke")},_C={boxShadow:H.shadows("boxShadow"),mixBlendMode:!0,blendMode:H.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:H.prop("backgroundBlendMode"),opacity:!0};Object.assign(_C,{shadow:_C.boxShadow});var cxe={filter:{transform:Ye.filter},blur:H.blur("--chakra-blur"),brightness:H.propT("--chakra-brightness",Ye.brightness),contrast:H.propT("--chakra-contrast",Ye.contrast),hueRotate:H.degreeT("--chakra-hue-rotate"),invert:H.propT("--chakra-invert",Ye.invert),saturate:H.propT("--chakra-saturate",Ye.saturate),dropShadow:H.propT("--chakra-drop-shadow",Ye.dropShadow),backdropFilter:{transform:Ye.backdropFilter},backdropBlur:H.blur("--chakra-backdrop-blur"),backdropBrightness:H.propT("--chakra-backdrop-brightness",Ye.brightness),backdropContrast:H.propT("--chakra-backdrop-contrast",Ye.contrast),backdropHueRotate:H.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:H.propT("--chakra-backdrop-invert",Ye.invert),backdropSaturate:H.propT("--chakra-backdrop-saturate",Ye.saturate)},fv={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:Ye.flexDirection},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:H.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:H.space("gap"),rowGap:H.space("rowGap"),columnGap:H.space("columnGap")};Object.assign(fv,{flexDir:fv.flexDirection});var fz={gridGap:H.space("gridGap"),gridColumnGap:H.space("gridColumnGap"),gridRowGap:H.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},dxe={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:Ye.outline},outlineOffset:!0,outlineColor:H.colors("outlineColor")},bi={width:H.sizesT("width"),inlineSize:H.sizesT("inlineSize"),height:H.sizes("height"),blockSize:H.sizes("blockSize"),boxSize:H.sizes(["width","height"]),minWidth:H.sizes("minWidth"),minInlineSize:H.sizes("minInlineSize"),minHeight:H.sizes("minHeight"),minBlockSize:H.sizes("minBlockSize"),maxWidth:H.sizes("maxWidth"),maxInlineSize:H.sizes("maxInlineSize"),maxHeight:H.sizes("maxHeight"),maxBlockSize:H.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,aspectRatio:!0,hideFrom:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (min-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r.minW)!=null?i:e})`]:{display:"none"}}}},hideBelow:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (max-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r._minW)!=null?i:e})`]:{display:"none"}}}},verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:H.propT("float",Ye.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(bi,{w:bi.width,h:bi.height,minW:bi.minWidth,maxW:bi.maxWidth,minH:bi.minHeight,maxH:bi.maxHeight,overscroll:bi.overscrollBehavior,overscrollX:bi.overscrollBehaviorX,overscrollY:bi.overscrollBehaviorY});var fxe={listStyleType:!0,listStylePosition:!0,listStylePos:H.prop("listStylePosition"),listStyleImage:!0,listStyleImg:H.prop("listStyleImage")};function hxe(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},gxe=pxe(hxe),mxe={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},yxe={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},M2=(e,t,n)=>{const r={},i=gxe(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},vxe={srOnly:{transform(e){return e===!0?mxe:e==="focusable"?yxe:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>M2(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>M2(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>M2(t,e,n)}},ah={position:!0,pos:H.prop("position"),zIndex:H.prop("zIndex","zIndices"),inset:H.spaceT("inset"),insetX:H.spaceT(["left","right"]),insetInline:H.spaceT("insetInline"),insetY:H.spaceT(["top","bottom"]),insetBlock:H.spaceT("insetBlock"),top:H.spaceT("top"),insetBlockStart:H.spaceT("insetBlockStart"),bottom:H.spaceT("bottom"),insetBlockEnd:H.spaceT("insetBlockEnd"),left:H.spaceT("left"),insetInlineStart:H.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:H.spaceT("right"),insetInlineEnd:H.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(ah,{insetStart:ah.insetInlineStart,insetEnd:ah.insetInlineEnd});var _xe={ring:{transform:Ye.ring},ringColor:H.colors("--chakra-ring-color"),ringOffset:H.prop("--chakra-ring-offset-width"),ringOffsetColor:H.colors("--chakra-ring-offset-color"),ringInset:H.prop("--chakra-ring-inset")},Et={margin:H.spaceT("margin"),marginTop:H.spaceT("marginTop"),marginBlockStart:H.spaceT("marginBlockStart"),marginRight:H.spaceT("marginRight"),marginInlineEnd:H.spaceT("marginInlineEnd"),marginBottom:H.spaceT("marginBottom"),marginBlockEnd:H.spaceT("marginBlockEnd"),marginLeft:H.spaceT("marginLeft"),marginInlineStart:H.spaceT("marginInlineStart"),marginX:H.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:H.spaceT("marginInline"),marginY:H.spaceT(["marginTop","marginBottom"]),marginBlock:H.spaceT("marginBlock"),padding:H.space("padding"),paddingTop:H.space("paddingTop"),paddingBlockStart:H.space("paddingBlockStart"),paddingRight:H.space("paddingRight"),paddingBottom:H.space("paddingBottom"),paddingBlockEnd:H.space("paddingBlockEnd"),paddingLeft:H.space("paddingLeft"),paddingInlineStart:H.space("paddingInlineStart"),paddingInlineEnd:H.space("paddingInlineEnd"),paddingX:H.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:H.space("paddingInline"),paddingY:H.space(["paddingTop","paddingBottom"]),paddingBlock:H.space("paddingBlock")};Object.assign(Et,{m:Et.margin,mt:Et.marginTop,mr:Et.marginRight,me:Et.marginInlineEnd,marginEnd:Et.marginInlineEnd,mb:Et.marginBottom,ml:Et.marginLeft,ms:Et.marginInlineStart,marginStart:Et.marginInlineStart,mx:Et.marginX,my:Et.marginY,p:Et.padding,pt:Et.paddingTop,py:Et.paddingY,px:Et.paddingX,pb:Et.paddingBottom,pl:Et.paddingLeft,ps:Et.paddingInlineStart,paddingStart:Et.paddingInlineStart,pr:Et.paddingRight,pe:Et.paddingInlineEnd,paddingEnd:Et.paddingInlineEnd});var bxe={textDecorationColor:H.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:H.shadows("textShadow")},Sxe={clipPath:!0,transform:H.propT("transform",Ye.transform),transformOrigin:!0,translateX:H.spaceT("--chakra-translate-x"),translateY:H.spaceT("--chakra-translate-y"),skewX:H.degreeT("--chakra-skew-x"),skewY:H.degreeT("--chakra-skew-y"),scaleX:H.prop("--chakra-scale-x"),scaleY:H.prop("--chakra-scale-y"),scale:H.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:H.degreeT("--chakra-rotate")},wxe={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:H.prop("transitionDuration","transition.duration"),transitionProperty:H.prop("transitionProperty","transition.property"),transitionTimingFunction:H.prop("transitionTimingFunction","transition.easing")},xxe={fontFamily:H.prop("fontFamily","fonts"),fontSize:H.prop("fontSize","fontSizes",Ye.px),fontWeight:H.prop("fontWeight","fontWeights"),lineHeight:H.prop("lineHeight","lineHeights"),letterSpacing:H.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,textIndent:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,isTruncated:{transform(e){if(e===!0)return{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}},noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},Cxe={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:H.spaceT("scrollMargin"),scrollMarginTop:H.spaceT("scrollMarginTop"),scrollMarginBottom:H.spaceT("scrollMarginBottom"),scrollMarginLeft:H.spaceT("scrollMarginLeft"),scrollMarginRight:H.spaceT("scrollMarginRight"),scrollMarginX:H.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:H.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:H.spaceT("scrollPadding"),scrollPaddingTop:H.spaceT("scrollPaddingTop"),scrollPaddingBottom:H.spaceT("scrollPaddingBottom"),scrollPaddingLeft:H.spaceT("scrollPaddingLeft"),scrollPaddingRight:H.spaceT("scrollPaddingRight"),scrollPaddingX:H.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:H.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function hz(e){return ks(e)&&e.reference?e.reference:String(e)}var gb=(e,...t)=>t.map(hz).join(` ${e} `).replace(/calc/g,""),ZP=(...e)=>`calc(${gb("+",...e)})`,QP=(...e)=>`calc(${gb("-",...e)})`,bC=(...e)=>`calc(${gb("*",...e)})`,JP=(...e)=>`calc(${gb("/",...e)})`,eO=e=>{const t=hz(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:bC(t,-1)},Nl=Object.assign(e=>({add:(...t)=>Nl(ZP(e,...t)),subtract:(...t)=>Nl(QP(e,...t)),multiply:(...t)=>Nl(bC(e,...t)),divide:(...t)=>Nl(JP(e,...t)),negate:()=>Nl(eO(e)),toString:()=>e.toString()}),{add:ZP,subtract:QP,multiply:bC,divide:JP,negate:eO});function Exe(e,t="-"){return e.replace(/\s+/g,t)}function Txe(e){const t=Exe(e.toString());return kxe(Axe(t))}function Axe(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function kxe(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function Pxe(e,t=""){return[t,e].filter(Boolean).join("-")}function Oxe(e,t){return`var(${e}${t?`, ${t}`:""})`}function Rxe(e,t=""){return Txe(`--${Pxe(e,t)}`)}function SC(e,t,n){const r=Rxe(e,n);return{variable:r,reference:Oxe(r,t)}}function L9e(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=SC(`${e}-${i}`,o);continue}n[r]=SC(`${e}-${r}`)}return n}function Ixe(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function Mxe(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function wC(e){if(e==null)return e;const{unitless:t}=Mxe(e);return t||typeof e=="number"?`${e}px`:e}var pz=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,ZE=e=>Object.fromEntries(Object.entries(e).sort(pz));function tO(e){const t=ZE(e);return Object.assign(Object.values(t),t)}function Nxe(e){const t=Object.keys(ZE(e));return new Set(t)}function nO(e){var t;if(!e)return e;e=(t=wC(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function jf(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${wC(e)})`),t&&n.push("and",`(max-width: ${wC(t)})`),n.join(" ")}function Dxe(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=tO(e),r=Object.entries(e).sort(pz).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?nO(d):void 0,{_minW:nO(a),breakpoint:s,minW:a,maxW:d,maxWQuery:jf(null,d),minWQuery:jf(a),minMaxQuery:jf(a,d)}}),i=Nxe(e),o=Array.from(i.values());return{keys:i,normalized:n,isResponsive(s){const a=Object.keys(s);return a.length>0&&a.every(l=>i.has(l))},asObject:ZE(e),asArray:tO(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>jf(s)).slice(1)],toArrayValue(s){if(!ks(s))throw new Error("toArrayValue: value must be an object");const a=o.map(l=>{var u;return(u=s[l])!=null?u:null});for(;Ixe(a)===null;)a.pop();return a},toObjectValue(s){if(!Array.isArray(s))throw new Error("toObjectValue: value must be an array");return s.reduce((a,l,u)=>{const c=o[u];return c!=null&&l!=null&&(a[c]=l),a},{})}}}var Gn={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}`},ta=e=>gz(t=>e(t,"&"),"[role=group]","[data-group]",".group"),us=e=>gz(t=>e(t,"~ &"),"[data-peer]",".peer"),gz=(e,...t)=>t.map(e).join(", "),mb={_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",_firstLetter:"&::first-letter",_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:ta(Gn.hover),_peerHover:us(Gn.hover),_groupFocus:ta(Gn.focus),_peerFocus:us(Gn.focus),_groupFocusVisible:ta(Gn.focusVisible),_peerFocusVisible:us(Gn.focusVisible),_groupActive:ta(Gn.active),_peerActive:us(Gn.active),_groupDisabled:ta(Gn.disabled),_peerDisabled:us(Gn.disabled),_groupInvalid:ta(Gn.invalid),_peerInvalid:us(Gn.invalid),_groupChecked:ta(Gn.checked),_peerChecked:us(Gn.checked),_groupFocusWithin:ta(Gn.focusWithin),_peerFocusWithin:us(Gn.focusWithin),_peerPlaceholderShown:us(Gn.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]",_horizontal:"&[data-orientation=horizontal]",_vertical:"&[data-orientation=vertical]"},mz=Object.keys(mb);function rO(e,t){return SC(String(e).replace(/\./g,"-"),void 0,t)}function Lxe(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=rO(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,b=Nl.negate(a),_=Nl.negate(u);r[m]={value:b,var:l,varRef:_}}n[l]=a,r[i]={value:a,var:l,varRef:u};continue}const c=f=>{const p=[String(i).split(".")[0],f].join(".");if(!e[p])return f;const{reference:b}=rO(p,t==null?void 0:t.cssVarPrefix);return b},d=ks(a)?a:{default:a};n=Lo(n,Object.entries(d).reduce((f,[h,p])=>{var m,b;if(!p)return f;const _=c(`${p}`);if(h==="default")return f[l]=_,f;const y=(b=(m=mb)==null?void 0:m[h])!=null?b:h;return f[y]={[l]:_},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function $xe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function Fxe(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Bxe(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function iO(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(Bxe(s)||Array.isArray(s)){const u={};for(const[c,d]of Object.entries(s)){const f=(l=i==null?void 0:i(c))!=null?l:c,h=[...a,f];if(r!=null&&r(s,h))return t(s,a);u[f]=o(d,h)}return u}return t(s,a)}return o(e)}var zxe=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function Uxe(e){return Fxe(e,zxe)}function jxe(e){return e.semanticTokens}function Vxe(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var Gxe=e=>mz.includes(e)||e==="default";function Hxe({tokens:e,semanticTokens:t}){const n={};return iO(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),iO(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(Gxe)}),n}function $9e(e){var t;const n=Vxe(e),r=Uxe(n),i=jxe(n),o=Hxe({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=Lxe(o,{cssVarPrefix:s});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:a,__breakpoints:Dxe(n.breakpoints)}),n}var QE=Lo({},R0,tt,uxe,fv,bi,cxe,_xe,dxe,fz,vxe,ah,_C,Et,Cxe,xxe,bxe,Sxe,fxe,wxe),Wxe=Object.assign({},Et,bi,fv,fz,ah),F9e=Object.keys(Wxe),qxe=[...Object.keys(QE),...mz],Kxe={...QE,...mb},Xxe=e=>e in Kxe,Yxe=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=Hl(e[s],t);if(a==null)continue;if(a=ks(a)&&n(a)?r(a):a,!Array.isArray(a)){o[s]=a;continue}const l=a.slice(0,i.length).length;for(let u=0;ue.startsWith("--")&&typeof t=="string"&&!Qxe(t),eCe=(e,t)=>{var n,r;if(t==null)return t;const i=l=>{var u,c;return(c=(u=e.__cssMap)==null?void 0:u[l])==null?void 0:c.varRef},o=l=>{var u;return(u=i(l))!=null?u:l},[s,a]=Zxe(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function tCe(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=Hl(o,r),d=Yxe(c)(r);let f={};for(let h in d){const p=d[h];let m=Hl(p,r);h in n&&(h=n[h]),Jxe(h,m)&&(m=eCe(r,m));let b=t[h];if(b===!0&&(b={property:h}),ks(m)){f[h]=(a=f[h])!=null?a:{},f[h]=Lo({},f[h],i(m,!0));continue}let _=(u=(l=b==null?void 0:b.transform)==null?void 0:l.call(b,m,r,c))!=null?u:m;_=b!=null&&b.processResult?i(_,!0):_;const y=Hl(b==null?void 0:b.property,r);if(!s&&(b!=null&&b.static)){const g=Hl(b.static,r);f=Lo({},f,g)}if(y&&Array.isArray(y)){for(const g of y)f[g]=_;continue}if(y){y==="&"&&ks(_)?f=Lo({},f,_):f[y]=_;continue}if(ks(_)){f=Lo({},f,_);continue}f[h]=_}return f};return i}var nCe=e=>t=>tCe({theme:t,pseudos:mb,configs:QE})(e);function B9e(e){return e}function z9e(e){return e}function U9e(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function rCe(e,t){if(Array.isArray(e))return e;if(ks(e))return t(e);if(e!=null)return[e]}function iCe(e,t){for(let n=t+1;n{Lo(u,{[g]:f?y[g]:{[_]:y[g]}})});continue}if(!h){f?Lo(u,y):u[_]=y;continue}u[_]=y}}return u}}function sCe(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=oCe(o);return Lo({},Hl((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function j9e(e,t,n){var r,i,o;return(o=(i=(r=e.__cssMap)==null?void 0:r[`${t}.${n}`])==null?void 0:i.varRef)!=null?o:n}function JE(e){return $xe(e,["styleConfig","size","variant","colorScheme"])}function aCe(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function lCe(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},cCe=uCe(lCe);function yz(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var vz=e=>yz(e,t=>t!=null);function dCe(e){return typeof e=="function"}function fCe(e,...t){return dCe(e)?e(...t):e}function V9e(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}var hCe=typeof Element<"u",pCe=typeof Map=="function",gCe=typeof Set=="function",mCe=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function I0(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(!I0(e[r],t[r]))return!1;return!0}var o;if(pCe&&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(!I0(r.value[1],t.get(r.value[0])))return!1;return!0}if(gCe&&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(mCe&&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&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")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(hCe&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!I0(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var yCe=function(t,n){try{return I0(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const vCe=vu(yCe);function _z(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=zwe(),a=e?cCe(o,`components.${e}`):void 0,l=r||a,u=Lo({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},vz(aCe(i,["children"]))),c=I.useRef({});if(l){const f=sCe(l)(u);vCe(c.current,f)||(c.current=f)}return c.current}function e4(e,t={}){return _z(e,t)}function G9e(e,t={}){return _z(e,t)}var _Ce=new Set([...qxe,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),bCe=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function SCe(e){return bCe.has(e)||!_Ce.has(e)}function wCe(e,...t){if(e==null)throw new TypeError("Cannot convert undefined or null to object");const n={...e};for(const r of t)if(r!=null)for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&(i in n&&delete n[i],n[i]=r[i]);return n}function xCe(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var CCe=/^((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)-.*))$/,ECe=tz(function(e){return CCe.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),TCe=ECe,ACe=function(t){return t!=="theme"},oO=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?TCe:ACe},sO=function(t,n,r){var i;if(n){var o=n.shouldForwardProp;i=t.__emotion_forwardProp&&o?function(s){return t.__emotion_forwardProp(s)&&o(s)}:o}return typeof i!="function"&&r&&(i=t.__emotion_forwardProp),i},kCe=function(t){var n=t.cache,r=t.serialized,i=t.isStringTag;return rz(n,r,i),Nwe(function(){return iz(n,r,i)}),null},PCe=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,o,s;n!==void 0&&(o=n.label,s=n.target);var a=sO(t,n,r),l=a||oO(i),u=!l("as");return function(){var c=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(o!==void 0&&d.push("label:"+o+";"),c[0]==null||c[0].raw===void 0)d.push.apply(d,c);else{d.push(c[0][0]);for(var f=c.length,h=1;ht=>{const{theme:n,css:r,__css:i,sx:o,...s}=t,a=yz(s,(d,f)=>Xxe(f)),l=fCe(e,t),u=wCe({},i,l,vz(a),o),c=nCe(u)(t.theme);return r?[c,r]:c};function N2(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=SCe);const i=ICe({baseStyle:n}),o=RCe(e,r)(i);return dt.forwardRef(function(l,u){const{colorMode:c,forced:d}=KE();return dt.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function MCe(){const e=new Map;return new Proxy(N2,{apply(t,n,r){return N2(...r)},get(t,n){return e.has(n)||e.set(n,N2(n)),e.get(n)}})}var Za=MCe();function ml(e){return I.forwardRef(e)}const bz=I.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),yb=I.createContext({}),Tg=I.createContext(null),vb=typeof document<"u",t4=vb?I.useLayoutEffect:I.useEffect,Sz=I.createContext({strict:!1});function NCe(e,t,n,r){const{visualElement:i}=I.useContext(yb),o=I.useContext(Sz),s=I.useContext(Tg),a=I.useContext(bz).reducedMotion,l=I.useRef();r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceContext:s,blockInitialAnimation:s?s.initial===!1:!1,reducedMotionConfig:a}));const u=l.current;I.useInsertionEffect(()=>{u&&u.update(n,s)});const c=I.useRef(!!window.HandoffAppearAnimations);return t4(()=>{u&&(u.render(),c.current&&u.animationState&&u.animationState.animateChanges())}),I.useEffect(()=>{u&&(u.updateFeatures(),!c.current&&u.animationState&&u.animationState.animateChanges(),window.HandoffAppearAnimations=void 0,c.current=!1)}),u}function Ac(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function DCe(e,t,n){return I.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):Ac(n)&&(n.current=r))},[t])}function Op(e){return typeof e=="string"||Array.isArray(e)}function _b(e){return typeof e=="object"&&typeof e.start=="function"}const n4=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],r4=["initial",...n4];function bb(e){return _b(e.animate)||r4.some(t=>Op(e[t]))}function wz(e){return!!(bb(e)||e.variants)}function LCe(e,t){if(bb(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Op(n)?n:void 0,animate:Op(r)?r:void 0}}return e.inherit!==!1?t:{}}function $Ce(e){const{initial:t,animate:n}=LCe(e,I.useContext(yb));return I.useMemo(()=>({initial:t,animate:n}),[lO(t),lO(n)])}function lO(e){return Array.isArray(e)?e.join(" "):e}const uO={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Rp={};for(const e in uO)Rp[e]={isEnabled:t=>uO[e].some(n=>!!t[n])};function FCe(e){for(const t in e)Rp[t]={...Rp[t],...e[t]}}const i4=I.createContext({}),xz=I.createContext({}),BCe=Symbol.for("motionComponentSymbol");function zCe({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&FCe(e);function o(a,l){let u;const c={...I.useContext(bz),...a,layoutId:UCe(a)},{isStatic:d}=c,f=$Ce(a),h=r(a,d);if(!d&&vb){f.visualElement=NCe(i,h,c,t);const p=I.useContext(xz),m=I.useContext(Sz).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return I.createElement(yb.Provider,{value:f},u&&f.visualElement?I.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,DCe(h,f.visualElement,l),h,d,f.visualElement))}const s=I.forwardRef(o);return s[BCe]=i,s}function UCe({layoutId:e}){const t=I.useContext(i4).id;return t&&e!==void 0?t+"-"+e:e}function jCe(e){function t(r,i={}){return zCe(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 VCe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function o4(e){return typeof e!="string"||e.includes("-")?!1:!!(VCe.indexOf(e)>-1||/[A-Z]/.test(e))}const pv={};function GCe(e){Object.assign(pv,e)}const Ag=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Lu=new Set(Ag);function Cz(e,{layout:t,layoutId:n}){return Lu.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!pv[e]||e==="opacity")}const qr=e=>!!(e&&e.getVelocity),HCe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},WCe=Ag.length;function qCe(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;st=>typeof t=="string"&&t.startsWith(e),Tz=Ez("--"),xC=Ez("var(--"),KCe=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,XCe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,Qa=(e,t,n)=>Math.min(Math.max(n,e),t),$u={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},lh={...$u,transform:e=>Qa(0,1,e)},Wm={...$u,default:1},uh=e=>Math.round(e*1e5)/1e5,Sb=/(-)?([\d]*\.?[\d])+/g,Az=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,YCe=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function kg(e){return typeof e=="string"}const Pg=e=>({test:t=>kg(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),ra=Pg("deg"),Ho=Pg("%"),Ce=Pg("px"),ZCe=Pg("vh"),QCe=Pg("vw"),cO={...Ho,parse:e=>Ho.parse(e)/100,transform:e=>Ho.transform(e*100)},dO={...$u,transform:Math.round},kz={borderWidth:Ce,borderTopWidth:Ce,borderRightWidth:Ce,borderBottomWidth:Ce,borderLeftWidth:Ce,borderRadius:Ce,radius:Ce,borderTopLeftRadius:Ce,borderTopRightRadius:Ce,borderBottomRightRadius:Ce,borderBottomLeftRadius:Ce,width:Ce,maxWidth:Ce,height:Ce,maxHeight:Ce,size:Ce,top:Ce,right:Ce,bottom:Ce,left:Ce,padding:Ce,paddingTop:Ce,paddingRight:Ce,paddingBottom:Ce,paddingLeft:Ce,margin:Ce,marginTop:Ce,marginRight:Ce,marginBottom:Ce,marginLeft:Ce,rotate:ra,rotateX:ra,rotateY:ra,rotateZ:ra,scale:Wm,scaleX:Wm,scaleY:Wm,scaleZ:Wm,skew:ra,skewX:ra,skewY:ra,distance:Ce,translateX:Ce,translateY:Ce,translateZ:Ce,x:Ce,y:Ce,z:Ce,perspective:Ce,transformPerspective:Ce,opacity:lh,originX:cO,originY:cO,originZ:Ce,zIndex:dO,fillOpacity:lh,strokeOpacity:lh,numOctaves:dO};function s4(e,t,n,r){const{style:i,vars:o,transform:s,transformOrigin:a}=e;let l=!1,u=!1,c=!0;for(const d in t){const f=t[d];if(Tz(d)){o[d]=f;continue}const h=kz[d],p=XCe(f,h);if(Lu.has(d)){if(l=!0,s[d]=p,!c)continue;f!==(h.default||0)&&(c=!1)}else d.startsWith("origin")?(u=!0,a[d]=p):i[d]=p}if(t.transform||(l||r?i.transform=qCe(e.transform,n,c,r):i.transform&&(i.transform="none")),u){const{originX:d="50%",originY:f="50%",originZ:h=0}=a;i.transformOrigin=`${d} ${f} ${h}`}}const a4=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Pz(e,t,n){for(const r in t)!qr(t[r])&&!Cz(r,n)&&(e[r]=t[r])}function JCe({transformTemplate:e},t,n){return I.useMemo(()=>{const r=a4();return s4(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function e3e(e,t,n){const r=e.style||{},i={};return Pz(i,r,e),Object.assign(i,JCe(e,t,n)),e.transformValues?e.transformValues(i):i}function t3e(e,t,n){const r={},i=e3e(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"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(r.tabIndex=0),r.style=i,r}const n3e=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","onLayoutAnimationStart","onLayoutAnimationComplete","onLayoutMeasure","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","ignoreStrict","viewport"]);function gv(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||n3e.has(e)}let Oz=e=>!gv(e);function r3e(e){e&&(Oz=t=>t.startsWith("on")?!gv(t):e(t))}try{r3e(require("@emotion/is-prop-valid").default)}catch{}function i3e(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(Oz(i)||n===!0&&gv(i)||!t&&!gv(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function fO(e,t,n){return typeof e=="string"?e:Ce.transform(t+n*e)}function o3e(e,t,n){const r=fO(t,e.x,e.width),i=fO(n,e.y,e.height);return`${r} ${i}`}const s3e={offset:"stroke-dashoffset",array:"stroke-dasharray"},a3e={offset:"strokeDashoffset",array:"strokeDasharray"};function l3e(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?s3e:a3e;e[o.offset]=Ce.transform(-r);const s=Ce.transform(t),a=Ce.transform(n);e[o.array]=`${s} ${a}`}function l4(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(s4(e,u,c,f),d){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:p,dimensions:m}=e;h.transform&&(m&&(p.transform=h.transform),delete h.transform),m&&(i!==void 0||o!==void 0||p.transform)&&(p.transformOrigin=o3e(m,i!==void 0?i:.5,o!==void 0?o:.5)),t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),r!==void 0&&(h.scale=r),s!==void 0&&l3e(h,s,a,l,!1)}const Rz=()=>({...a4(),attrs:{}}),u4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function u3e(e,t,n,r){const i=I.useMemo(()=>{const o=Rz();return l4(o,t,{enableHardwareAcceleration:!1},u4(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};Pz(o,e.style,e),i.style={...o,...i.style}}return i}function c3e(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(o4(n)?u3e:t3e)(r,o,s,n),c={...i3e(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=I.useMemo(()=>qr(d)?d.get():d,[d]);return I.createElement(n,{...c,children:f})}}const c4=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function Iz(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 Mz=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function Nz(e,t,n,r){Iz(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(Mz.has(i)?i:c4(i),t.attrs[i])}function d4(e,t){const{style:n}=e,r={};for(const i in n)(qr(n[i])||t.style&&qr(t.style[i])||Cz(i,e))&&(r[i]=n[i]);return r}function Dz(e,t){const n=d4(e,t);for(const r in e)if(qr(e[r])||qr(t[r])){const i=Ag.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function f4(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}function Lz(e){const t=I.useRef(null);return t.current===null&&(t.current=e()),t.current}const mv=e=>Array.isArray(e),d3e=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),f3e=e=>mv(e)?e[e.length-1]||0:e;function M0(e){const t=qr(e)?e.get():e;return d3e(t)?t.toValue():t}function h3e({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:p3e(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const $z=e=>(t,n)=>{const r=I.useContext(yb),i=I.useContext(Tg),o=()=>h3e(e,t,r,i);return n?o():Lz(o)};function p3e(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=M0(o[f]);let{initial:s,animate:a}=e;const l=bb(e),u=wz(e);t&&u&&!l&&e.inherit!==!1&&(s===void 0&&(s=t.initial),a===void 0&&(a=t.animate));let c=n?n.initial===!1:!1;c=c||s===!1;const d=c?a:s;return d&&typeof d!="boolean"&&!_b(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=f4(e,h);if(!p)return;const{transitionEnd:m,transition:b,..._}=p;for(const y in _){let g=_[y];if(Array.isArray(g)){const v=c?g.length-1:0;g=g[v]}g!==null&&(i[y]=g)}for(const y in m)i[y]=m[y]}),i}const tn=e=>e;function g3e(e){let t=[],n=[],r=0,i=!1,o=!1;const s=new WeakSet,a={schedule:(l,u=!1,c=!1)=>{const d=c&&i,f=d?t:n;return u&&s.add(l),f.indexOf(l)===-1&&(f.push(l),d&&i&&(r=t.length)),l},cancel:l=>{const u=n.indexOf(l);u!==-1&&n.splice(u,1),s.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(d[f]=g3e(()=>n=!0),d),{}),s=d=>o[d].process(i),a=()=>{const d=performance.now();n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,m3e),1),i.timestamp=d,i.isProcessing=!0,qm.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:qm.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,b=!1)=>(n||l(),h.schedule(p,m,b)),d},{}),cancel:d=>qm.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:St,cancel:zs,state:sr,steps:D2}=y3e(typeof requestAnimationFrame<"u"?requestAnimationFrame:tn,!0),v3e={useVisualState:$z({scrapeMotionValuesFromProps:Dz,createRenderState:Rz,onMount:(e,t,{renderState:n,latestValues:r})=>{St.read(()=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}}),St.render(()=>{l4(n,r,{enableHardwareAcceleration:!1},u4(t.tagName),e.transformTemplate),Nz(t,n)})}})},_3e={useVisualState:$z({scrapeMotionValuesFromProps:d4,createRenderState:a4})};function b3e(e,{forwardMotionProps:t=!1},n,r){return{...o4(e)?v3e:_3e,preloadedFeatures:n,useRender:c3e(t),createVisualElement:r,Component:e}}function Cs(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const Fz=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function wb(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const S3e=e=>t=>Fz(t)&&e(t,wb(t));function Ps(e,t,n,r){return Cs(e,t,S3e(n),r)}const w3e=(e,t)=>n=>t(e(n)),$a=(...e)=>e.reduce(w3e);function Bz(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const hO=Bz("dragHorizontal"),pO=Bz("dragVertical");function zz(e){let t=!1;if(e==="y")t=pO();else if(e==="x")t=hO();else{const n=hO(),r=pO();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function Uz(){const e=zz(!0);return e?(e(),!1):!0}class yl{constructor(t){this.isMounted=!1,this.node=t}update(){}}function gO(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||Uz())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&St.update(()=>a[r](o,s))};return Ps(e.current,n,i,{passive:!e.getProps()[r]})}class x3e extends yl{mount(){this.unmount=$a(gO(this.node,!0),gO(this.node,!1))}unmount(){}}class C3e extends yl{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=$a(Cs(this.node.current,"focus",()=>this.onFocus()),Cs(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const jz=(e,t)=>t?e===t?!0:jz(e,t.parentElement):!1;function L2(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,wb(n))}class E3e extends yl{constructor(){super(...arguments),this.removeStartListeners=tn,this.removeEndListeners=tn,this.removeAccessibleListeners=tn,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=Ps(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();St.update(()=>{jz(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=Ps(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=$a(o,s),this.startPress(t,n)},this.startAccessiblePress=()=>{const t=o=>{if(o.key!=="Enter"||this.isPressing)return;const s=a=>{a.key!=="Enter"||!this.checkPressEnd()||L2("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&St.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=Cs(this.node.current,"keyup",s),L2("down",(a,l)=>{this.startPress(a,l)})},n=Cs(this.node.current,"keydown",t),r=()=>{this.isPressing&&L2("cancel",(o,s)=>this.cancelPress(o,s))},i=Cs(this.node.current,"blur",r);this.removeAccessibleListeners=$a(n,i)}}startPress(t,n){this.isPressing=!0;const{onTapStart:r,whileTap:i}=this.node.getProps();i&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),r&&St.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!Uz()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&St.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=Ps(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=Cs(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=$a(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const CC=new WeakMap,$2=new WeakMap,T3e=e=>{const t=CC.get(e.target);t&&t(e)},A3e=e=>{e.forEach(T3e)};function k3e({root:e,...t}){const n=e||document;$2.has(n)||$2.set(n,{});const r=$2.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(A3e,{root:e,...t})),r[i]}function P3e(e,t,n){const r=k3e(t);return CC.set(e,n),r.observe(e),()=>{CC.delete(e),r.unobserve(e)}}const O3e={some:0,all:1};class R3e extends yl{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:i="some",once:o}=t,s={root:n?n.current:void 0,rootMargin:r,threshold:typeof i=="number"?i:O3e[i]},a=l=>{const{isIntersecting:u}=l;if(this.isInView===u||(this.isInView=u,o&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:c,onViewportLeave:d}=this.node.getProps(),f=u?c:d;f&&f(l)};return P3e(this.node.current,s,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(I3e(t,n))&&this.startObserver()}unmount(){}}function I3e({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const M3e={inView:{Feature:R3e},tap:{Feature:E3e},focus:{Feature:C3e},hover:{Feature:x3e}};function Vz(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;rt[r]=n.get()),t}function D3e(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function xb(e,t,n){const r=e.getProps();return f4(r,t,n!==void 0?n:r.custom,N3e(e),D3e(e))}const L3e="framerAppearId",$3e="data-"+c4(L3e);let F3e=tn,h4=tn;const Fa=e=>e*1e3,Os=e=>e/1e3,B3e={current:!1},Gz=e=>Array.isArray(e)&&typeof e[0]=="number";function Hz(e){return!!(!e||typeof e=="string"&&Wz[e]||Gz(e)||Array.isArray(e)&&e.every(Hz))}const Vf=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,Wz={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Vf([0,.65,.55,1]),circOut:Vf([.55,0,1,.45]),backIn:Vf([.31,.01,.66,-.59]),backOut:Vf([.33,1.53,.69,.99])};function qz(e){if(e)return Gz(e)?Vf(e):Array.isArray(e)?e.map(qz):Wz[e]}function z3e(e,t,n,{delay:r=0,duration:i,repeat:o=0,repeatType:s="loop",ease:a,times:l}={}){const u={[t]:n};l&&(u.offset=l);const c=qz(a);return Array.isArray(c)&&(u.easing=c),e.animate(u,{delay:r,duration:i,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:o+1,direction:s==="reverse"?"alternate":"normal"})}function U3e(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const Kz=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,j3e=1e-7,V3e=12;function G3e(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=Kz(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>j3e&&++aG3e(o,0,1,e,n);return o=>o===0||o===1?o:Kz(i(o),t,r)}const H3e=Og(.42,0,1,1),W3e=Og(0,0,.58,1),Xz=Og(.42,0,.58,1),q3e=e=>Array.isArray(e)&&typeof e[0]!="number",Yz=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,Zz=e=>t=>1-e(1-t),Qz=e=>1-Math.sin(Math.acos(e)),p4=Zz(Qz),K3e=Yz(p4),Jz=Og(.33,1.53,.69,.99),g4=Zz(Jz),X3e=Yz(g4),Y3e=e=>(e*=2)<1?.5*g4(e):.5*(2-Math.pow(2,-10*(e-1))),Z3e={linear:tn,easeIn:H3e,easeInOut:Xz,easeOut:W3e,circIn:Qz,circInOut:K3e,circOut:p4,backIn:g4,backInOut:X3e,backOut:Jz,anticipate:Y3e},mO=e=>{if(Array.isArray(e)){h4(e.length===4);const[t,n,r,i]=e;return Og(t,n,r,i)}else if(typeof e=="string")return Z3e[e];return e},m4=(e,t)=>n=>!!(kg(n)&&YCe.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),eU=(e,t,n)=>r=>{if(!kg(r))return r;const[i,o,s,a]=r.match(Sb);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},Q3e=e=>Qa(0,255,e),F2={...$u,transform:e=>Math.round(Q3e(e))},Wl={test:m4("rgb","red"),parse:eU("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+F2.transform(e)+", "+F2.transform(t)+", "+F2.transform(n)+", "+uh(lh.transform(r))+")"};function J3e(e){let t="",n="",r="",i="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),i=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),i=e.substring(4,5),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 EC={test:m4("#"),parse:J3e,transform:Wl.transform},kc={test:m4("hsl","hue"),parse:eU("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+Ho.transform(uh(t))+", "+Ho.transform(uh(n))+", "+uh(lh.transform(r))+")"},Sr={test:e=>Wl.test(e)||EC.test(e)||kc.test(e),parse:e=>Wl.test(e)?Wl.parse(e):kc.test(e)?kc.parse(e):EC.parse(e),transform:e=>kg(e)?e:e.hasOwnProperty("red")?Wl.transform(e):kc.transform(e)},qt=(e,t,n)=>-n*e+n*t+e;function B2(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 e5e({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,o=0,s=0;if(!t)i=o=s=n;else{const a=n<.5?n*(1+t):n+t-n*t,l=2*n-a;i=B2(l,a,e+1/3),o=B2(l,a,e),s=B2(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const z2=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},t5e=[EC,Wl,kc],n5e=e=>t5e.find(t=>t.test(e));function yO(e){const t=n5e(e);let n=t.parse(e);return t===kc&&(n=e5e(n)),n}const tU=(e,t)=>{const n=yO(e),r=yO(t),i={...n};return o=>(i.red=z2(n.red,r.red,o),i.green=z2(n.green,r.green,o),i.blue=z2(n.blue,r.blue,o),i.alpha=qt(n.alpha,r.alpha,o),Wl.transform(i))};function r5e(e){var t,n;return isNaN(e)&&kg(e)&&(((t=e.match(Sb))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(Az))===null||n===void 0?void 0:n.length)||0)>0}const nU={regex:KCe,countKey:"Vars",token:"${v}",parse:tn},rU={regex:Az,countKey:"Colors",token:"${c}",parse:Sr.parse},iU={regex:Sb,countKey:"Numbers",token:"${n}",parse:$u.parse};function U2(e,{regex:t,countKey:n,token:r,parse:i}){const o=e.tokenised.match(t);o&&(e["num"+n]=o.length,e.tokenised=e.tokenised.replace(t,r),e.values.push(...o.map(i)))}function yv(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&U2(n,nU),U2(n,rU),U2(n,iU),n}function oU(e){return yv(e).values}function sU(e){const{values:t,numColors:n,numVars:r,tokenised:i}=yv(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function o5e(e){const t=oU(e);return sU(e)(t.map(i5e))}const Ja={test:r5e,parse:oU,createTransformer:sU,getAnimatableNone:o5e},aU=(e,t)=>n=>`${n>0?t:e}`;function lU(e,t){return typeof e=="number"?n=>qt(e,t,n):Sr.test(e)?tU(e,t):e.startsWith("var(")?aU(e,t):cU(e,t)}const uU=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>lU(o,t[s]));return o=>{for(let s=0;s{const n={...e,...t},r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=lU(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},cU=(e,t)=>{const n=Ja.createTransformer(t),r=yv(e),i=yv(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?$a(uU(r.values,i.values),n):aU(e,t)},Ip=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},vO=(e,t)=>n=>qt(e,t,n);function a5e(e){return typeof e=="number"?vO:typeof e=="string"?Sr.test(e)?tU:cU:Array.isArray(e)?uU:typeof e=="object"?s5e:vO}function l5e(e,t,n){const r=[],i=n||a5e(e[0]),o=e.length-1;for(let s=0;st[0];e[0]>e[o-1]&&(e=[...e].reverse(),t=[...t].reverse());const s=l5e(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(Qa(e[0],e[o-1],u)):l}function u5e(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=Ip(0,t,r);e.push(qt(n,1,i))}}function c5e(e){const t=[0];return u5e(t,e.length-1),t}function d5e(e,t){return e.map(n=>n*t)}function f5e(e,t){return e.map(()=>t||Xz).splice(0,e.length-1)}function vv({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=q3e(r)?r.map(mO):mO(r),o={done:!1,value:t[0]},s=d5e(n&&n.length===t.length?n:c5e(t),e),a=dU(s,t,{ease:Array.isArray(i)?i:f5e(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function fU(e,t){return t?e*(1e3/t):0}const h5e=5;function hU(e,t,n){const r=Math.max(t-h5e,0);return fU(n-e(r),t-r)}const j2=.001,p5e=.01,_O=10,g5e=.05,m5e=1;function y5e({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;F3e(e<=Fa(_O));let s=1-t;s=Qa(g5e,m5e,s),e=Qa(p5e,_O,Os(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=TC(u,s),p=Math.exp(-d);return j2-f/h*p},o=u=>{const d=u*s*e,f=d*n+n,h=Math.pow(s,2)*Math.pow(u,2)*e,p=Math.exp(-d),m=TC(Math.pow(u,2),s);return(-i(u)+j2>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-j2+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=_5e(i,o,a);if(e=Fa(e),isNaN(l))return{stiffness:100,damping:10,duration:e};{const u=Math.pow(l,2)*r;return{stiffness:u,damping:s*2*Math.sqrt(r*u),duration:e}}}const v5e=12;function _5e(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function w5e(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!bO(e,S5e)&&bO(e,b5e)){const n=y5e(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function pU({keyframes:e,restDelta:t,restSpeed:n,...r}){const i=e[0],o=e[e.length-1],s={done:!1,value:i},{stiffness:a,damping:l,mass:u,velocity:c,duration:d,isResolvedFromDuration:f}=w5e(r),h=c?-Os(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,b=Os(Math.sqrt(a/u)),_=Math.abs(m)<5;n||(n=_?.01:2),t||(t=_?.005:.5);let y;if(p<1){const g=TC(b,p);y=v=>{const S=Math.exp(-p*b*v);return o-S*((h+p*b*m)/g*Math.sin(g*v)+m*Math.cos(g*v))}}else if(p===1)y=g=>o-Math.exp(-b*g)*(m+(h+b*m)*g);else{const g=b*Math.sqrt(p*p-1);y=v=>{const S=Math.exp(-p*b*v),w=Math.min(g*v,300);return o-S*((h+p*b*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const v=y(g);if(f)s.done=g>=d;else{let S=h;g!==0&&(p<1?S=hU(y,g,v):S=0);const w=Math.abs(S)<=n,C=Math.abs(o-v)<=t;s.done=w&&C}return s.value=s.done?o:v,s}}}function SO({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:i=10,bounceStiffness:o=500,modifyTarget:s,min:a,max:l,restDelta:u=.5,restSpeed:c}){const d=e[0],f={done:!1,value:d},h=x=>a!==void 0&&xl,p=x=>a===void 0?l:l===void 0||Math.abs(a-x)-m*Math.exp(-x/r),g=x=>_+y(x),v=x=>{const A=y(x),T=g(x);f.done=Math.abs(A)<=u,f.value=f.done?_:T};let S,w;const C=x=>{h(f.value)&&(S=x,w=pU({keyframes:[f.value,p(f.value)],velocity:hU(g,x,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return C(0),{calculatedDuration:null,next:x=>{let A=!1;return!w&&S===void 0&&(A=!0,v(x),C(x)),S!==void 0&&x>S?w.next(x-S):(!A&&v(x),f)}}}const x5e=e=>{const t=({timestamp:n})=>e(n);return{start:()=>St.update(t,!0),stop:()=>zs(t),now:()=>sr.isProcessing?sr.timestamp:performance.now()}},wO=2e4;function xO(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t=wO?1/0:t}const C5e={decay:SO,inertia:SO,tween:vv,keyframes:vv,spring:pU};function _v({autoplay:e=!0,delay:t=0,driver:n=x5e,keyframes:r,type:i="keyframes",repeat:o=0,repeatDelay:s=0,repeatType:a="loop",onPlay:l,onStop:u,onComplete:c,onUpdate:d,...f}){let h=1,p=!1,m,b;const _=()=>{b=new Promise(F=>{m=F})};_();let y;const g=C5e[i]||vv;let v;g!==vv&&typeof r[0]!="number"&&(v=dU([0,100],r,{clamp:!1}),r=[0,100]);const S=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let C="idle",x=null,A=null,T=null;S.calculatedDuration===null&&o&&(S.calculatedDuration=xO(S));const{calculatedDuration:P}=S;let L=1/0,R=1/0;P!==null&&(L=P+s,R=L*(o+1)-s);let E=0;const k=F=>{if(A===null)return;h>0&&(A=Math.min(A,F)),h<0&&(A=Math.min(F-R/h,A)),x!==null?E=x:E=Math.round(F-A)*h;const U=E-t*(h>=0?1:-1),V=h>=0?U<0:U>R;E=Math.max(U,0),C==="finished"&&x===null&&(E=R);let q=E,X=S;if(o){const Q=E/L;let J=Math.floor(Q),se=Q%1;!se&&Q>=1&&(se=1),se===1&&J--,J=Math.min(J,o+1);const oe=!!(J%2);oe&&(a==="reverse"?(se=1-se,s&&(se-=s/L)):a==="mirror"&&(X=w));let Me=Qa(0,1,se);E>R&&(Me=a==="reverse"&&oe?1:0),q=Me*L}const Z=V?{done:!1,value:r[0]}:X.next(q);v&&(Z.value=v(Z.value));let{done:z}=Z;!V&&P!==null&&(z=h>=0?E>=R:E<=0);const W=x===null&&(C==="finished"||C==="running"&&z);return d&&d(Z.value),W&&M(),Z},N=()=>{y&&y.stop(),y=void 0},$=()=>{C="idle",N(),m(),_(),A=T=null},M=()=>{C="finished",c&&c(),N(),m()},O=()=>{if(p)return;y||(y=n(k));const F=y.now();l&&l(),x!==null?A=F-x:(!A||C==="finished")&&(A=F),C==="finished"&&_(),T=A,x=null,C="running",y.start()};e&&O();const D={then(F,U){return b.then(F,U)},get time(){return Os(E)},set time(F){F=Fa(F),E=F,x!==null||!y||h===0?x=F:A=y.now()-F/h},get duration(){const F=S.calculatedDuration===null?xO(S):S.calculatedDuration;return Os(F)},get speed(){return h},set speed(F){F===h||!y||(h=F,D.time=Os(E))},get state(){return C},play:O,pause:()=>{C="paused",x=E},stop:()=>{p=!0,C!=="idle"&&(C="idle",u&&u(),$())},cancel:()=>{T!==null&&k(T),$()},complete:()=>{C="finished"},sample:F=>(A=0,k(F))};return D}function E5e(e){let t;return()=>(t===void 0&&(t=e()),t)}const T5e=E5e(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),A5e=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),Km=10,k5e=2e4,P5e=(e,t)=>t.type==="spring"||e==="backgroundColor"||!Hz(t.ease);function O5e(e,t,{onUpdate:n,onComplete:r,...i}){if(!(T5e()&&A5e.has(t)&&!i.repeatDelay&&i.repeatType!=="mirror"&&i.damping!==0&&i.type!=="inertia"))return!1;let s=!1,a,l;const u=()=>{l=new Promise(y=>{a=y})};u();let{keyframes:c,duration:d=300,ease:f,times:h}=i;if(P5e(t,i)){const y=_v({...i,repeat:0,delay:0});let g={done:!1,value:c[0]};const v=[];let S=0;for(;!g.done&&Sp.cancel(),b=()=>{St.update(m),a(),u()};return p.onfinish=()=>{e.set(U3e(c,i)),r&&r(),b()},{then(y,g){return l.then(y,g)},attachTimeline(y){return p.timeline=y,p.onfinish=null,tn},get time(){return Os(p.currentTime||0)},set time(y){p.currentTime=Fa(y)},get speed(){return p.playbackRate},set speed(y){p.playbackRate=y},get duration(){return Os(d)},play:()=>{s||(p.play(),zs(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:y}=p;if(y){const g=_v({...i,autoplay:!1});e.setWithVelocity(g.sample(y-Km).value,g.sample(y).value,Km)}b()},complete:()=>p.finish(),cancel:b}}function R5e({keyframes:e,delay:t,onUpdate:n,onComplete:r}){const i=()=>(n&&n(e[e.length-1]),r&&r(),{time:0,speed:1,duration:0,play:tn,pause:tn,stop:tn,then:o=>(o(),Promise.resolve()),cancel:tn,complete:tn});return t?_v({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const I5e={type:"spring",stiffness:500,damping:25,restSpeed:10},M5e=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),N5e={type:"keyframes",duration:.8},D5e={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},L5e=(e,{keyframes:t})=>t.length>2?N5e:Lu.has(e)?e.startsWith("scale")?M5e(t[1]):I5e:D5e,AC=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Ja.test(t)||t==="0")&&!t.startsWith("url(")),$5e=new Set(["brightness","contrast","saturate","opacity"]);function F5e(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(Sb)||[];if(!r)return e;const i=n.replace(r,"");let o=$5e.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const B5e=/([a-z-]*)\(.*?\)/g,kC={...Ja,getAnimatableNone:e=>{const t=e.match(B5e);return t?t.map(F5e).join(" "):e}},z5e={...kz,color:Sr,backgroundColor:Sr,outlineColor:Sr,fill:Sr,stroke:Sr,borderColor:Sr,borderTopColor:Sr,borderRightColor:Sr,borderBottomColor:Sr,borderLeftColor:Sr,filter:kC,WebkitFilter:kC},y4=e=>z5e[e];function gU(e,t){let n=y4(e);return n!==kC&&(n=Ja),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const mU=e=>/^0[^.\s]+$/.test(e);function U5e(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||mU(e)}function j5e(e,t,n,r){const i=AC(t,n);let o;Array.isArray(n)?o=[...n]:o=[null,n];const s=r.from!==void 0?r.from:e.get();let a;const l=[];for(let u=0;ui=>{const o=yU(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-Fa(s);const l=j5e(t,e,n,o),u=l[0],c=l[l.length-1],d=AC(e,u),f=AC(e,c);let h={keyframes:l,velocity:t.getVelocity(),ease:"easeOut",...o,delay:-a,onUpdate:p=>{t.set(p),o.onUpdate&&o.onUpdate(p)},onComplete:()=>{i(),o.onComplete&&o.onComplete()}};if(V5e(o)||(h={...h,...L5e(e,h)}),h.duration&&(h.duration=Fa(h.duration)),h.repeatDelay&&(h.repeatDelay=Fa(h.repeatDelay)),!d||!f||B3e.current||o.type===!1)return R5e(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=O5e(t,e,h);if(p)return p}return _v(h)};function bv(e){return!!(qr(e)&&e.add)}const vU=e=>/^\-?\d*\.?\d+$/.test(e);function _4(e,t){e.indexOf(t)===-1&&e.push(t)}function b4(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class S4{constructor(){this.subscriptions=[]}add(t){return _4(this.subscriptions,t),()=>b4(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 H5e{constructor(t,n={}){this.version="10.16.1",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(r,i=!0)=>{this.prev=this.current,this.current=r;const{delta:o,timestamp:s}=sr;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,St.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.events.change&&this.events.change.notify(this.current),this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()),i&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.scheduleVelocityCheck=()=>St.postRender(this.velocityCheck),this.velocityCheck=({timestamp:r})=>{r!==this.lastUpdated&&(this.prev=this.current,this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=t,this.canTrackVelocity=G5e(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new S4);const r=this.events[t].add(n);return t==="change"?()=>{r(),St.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,r){this.set(n),this.prev=t,this.timeDelta=r}jump(t){this.updateAndNotify(t),this.prev=t,this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?fU(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function kd(e,t){return new H5e(e,t)}const _U=e=>t=>t.test(e),W5e={test:e=>e==="auto",parse:e=>e},bU=[$u,Ce,Ho,ra,QCe,ZCe,W5e],Of=e=>bU.find(_U(e)),q5e=[...bU,Sr,Ja],K5e=e=>q5e.find(_U(e));function X5e(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,kd(n))}function Y5e(e,t){const n=xb(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=f3e(o[s]);X5e(e,s,a)}}function Z5e(e,t,n){var r,i;const o=Object.keys(t).filter(a=>!e.hasValue(a)),s=o.length;if(s)for(let a=0;al.remove(d))),u.push(m)}return s&&Promise.all(u).then(()=>{s&&Y5e(e,s)}),u}function PC(e,t,n={}){const r=xb(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(SU(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return tEe(e,t,u+l,c,d,n)}:()=>Promise.resolve(),{when:a}=i;if(a){const[l,u]=a==="beforeChildren"?[o,s]:[s,o];return l().then(()=>u())}else return Promise.all([o(),s(n.delay)])}function tEe(e,t,n=0,r=0,i=1,o){const s=[],a=(e.variantChildren.size-1)*r,l=i===1?(u=0)=>u*r:(u=0)=>a-u*r;return Array.from(e.variantChildren).sort(nEe).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(PC(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function nEe(e,t){return e.sortNodePosition(t)}function rEe(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>PC(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=PC(e,t,n);else{const i=typeof t=="function"?xb(e,t,n.custom):t;r=Promise.all(SU(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const iEe=[...n4].reverse(),oEe=n4.length;function sEe(e){return t=>Promise.all(t.map(({animation:n,options:r})=>rEe(e,n,r)))}function aEe(e){let t=sEe(e);const n=uEe();let r=!0;const i=(l,u)=>{const c=xb(e,u);if(c){const{transition:d,transitionEnd:f,...h}=c;l={...l,...h,...f}}return l};function o(l){t=l(e)}function s(l,u){const c=e.getProps(),d=e.getVariantContext(!0)||{},f=[],h=new Set;let p={},m=1/0;for(let _=0;_m&&S;const T=Array.isArray(v)?v:[v];let P=T.reduce(i,{});w===!1&&(P={});const{prevResolvedValues:L={}}=g,R={...L,...P},E=k=>{A=!0,h.delete(k),g.needsAnimating[k]=!0};for(const k in R){const N=P[k],$=L[k];p.hasOwnProperty(k)||(N!==$?mv(N)&&mv($)?!Vz(N,$)||x?E(k):g.protectedKeys[k]=!0:N!==void 0?E(k):h.add(k):N!==void 0&&h.has(k)?E(k):g.protectedKeys[k]=!0)}g.prevProp=v,g.prevResolvedValues=P,g.isActive&&(p={...p,...P}),r&&e.blockInitialAnimation&&(A=!1),A&&!C&&f.push(...T.map(k=>({animation:k,options:{type:y,...l}})))}if(h.size){const _={};h.forEach(y=>{const g=e.getBaseTarget(y);g!==void 0&&(_[y]=g)}),f.push({animation:_})}let b=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(b=!1),r=!1,b?t(f):Promise.resolve()}function a(l,u,c){var d;if(n[l].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var p;return(p=h.animationState)===null||p===void 0?void 0:p.setActive(l,u)}),n[l].isActive=u;const f=s(c,l);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:s,setActive:a,setAnimateFunction:o,getState:()=>n}}function lEe(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!Vz(t,e):!1}function Al(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function uEe(){return{animate:Al(!0),whileInView:Al(),whileHover:Al(),whileTap:Al(),whileDrag:Al(),whileFocus:Al(),exit:Al()}}class cEe extends yl{constructor(t){super(t),t.animationState||(t.animationState=aEe(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),_b(t)&&(this.unmount=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){}}let dEe=0;class fEe extends yl{constructor(){super(...arguments),this.id=dEe++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n,custom:r}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const o=this.node.animationState.setActive("exit",!t,{custom:r??this.node.getProps().custom});n&&!t&&o.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const hEe={animation:{Feature:cEe},exit:{Feature:fEe}},CO=(e,t)=>Math.abs(e-t);function pEe(e,t){const n=CO(e.x,t.x),r=CO(e.y,t.y);return Math.sqrt(n**2+r**2)}class wU{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=G2(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=pEe(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=sr;this.history.push({...f,timestamp:h});const{onStart:p,onMove:m}=this.handlers;c||(p&&p(this.lastMoveEvent,u),this.startEvent=this.lastMoveEvent),m&&m(this.lastMoveEvent,u)},this.handlePointerMove=(u,c)=>{this.lastMoveEvent=u,this.lastMoveEventInfo=V2(c,this.transformPagePoint),St.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=G2(u.type==="pointercancel"?this.lastMoveEventInfo:V2(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!Fz(t))return;this.handlers=n,this.transformPagePoint=r;const i=wb(t),o=V2(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=sr;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,G2(o,this.history)),this.removeListeners=$a(Ps(window,"pointermove",this.handlePointerMove),Ps(window,"pointerup",this.handlePointerUp),Ps(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),zs(this.updatePoint)}}function V2(e,t){return t?{point:t(e.point)}:e}function EO(e,t){return{x:e.x-t.x,y:e.y-t.y}}function G2({point:e},t){return{point:e,delta:EO(e,xU(t)),offset:EO(e,gEe(t)),velocity:mEe(t,.1)}}function gEe(e){return e[0]}function xU(e){return e[e.length-1]}function mEe(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=xU(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>Fa(t)));)n--;if(!r)return{x:0,y:0};const o=Os(i.timestamp-r.timestamp);if(o===0)return{x:0,y:0};const s={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return s.x===1/0&&(s.x=0),s.y===1/0&&(s.y=0),s}function li(e){return e.max-e.min}function OC(e,t=0,n=.01){return Math.abs(e-t)<=n}function TO(e,t,n,r=.5){e.origin=r,e.originPoint=qt(t.min,t.max,e.origin),e.scale=li(n)/li(t),(OC(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=qt(n.min,n.max,e.origin)-e.originPoint,(OC(e.translate)||isNaN(e.translate))&&(e.translate=0)}function ch(e,t,n,r){TO(e.x,t.x,n.x,r?r.originX:void 0),TO(e.y,t.y,n.y,r?r.originY:void 0)}function AO(e,t,n){e.min=n.min+t.min,e.max=e.min+li(t)}function yEe(e,t,n){AO(e.x,t.x,n.x),AO(e.y,t.y,n.y)}function kO(e,t,n){e.min=t.min-n.min,e.max=e.min+li(t)}function dh(e,t,n){kO(e.x,t.x,n.x),kO(e.y,t.y,n.y)}function vEe(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?qt(n,e,r.max):Math.min(e,n)),e}function PO(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 _Ee(e,{top:t,left:n,bottom:r,right:i}){return{x:PO(e.x,n,i),y:PO(e.y,t,r)}}function OO(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Ip(t.min,t.max-r,e.min):r>i&&(n=Ip(e.min,e.max-i,t.min)),Qa(0,1,n)}function wEe(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 RC=.35;function xEe(e=RC){return e===!1?e=0:e===!0&&(e=RC),{x:RO(e,"left","right"),y:RO(e,"top","bottom")}}function RO(e,t,n){return{min:IO(e,t),max:IO(e,n)}}function IO(e,t){return typeof e=="number"?e:e[t]||0}const MO=()=>({translate:0,scale:1,origin:0,originPoint:0}),Pc=()=>({x:MO(),y:MO()}),NO=()=>({min:0,max:0}),fn=()=>({x:NO(),y:NO()});function Co(e){return[e("x"),e("y")]}function CU({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function CEe({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function EEe(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 H2(e){return e===void 0||e===1}function IC({scale:e,scaleX:t,scaleY:n}){return!H2(e)||!H2(t)||!H2(n)}function Il(e){return IC(e)||EU(e)||e.z||e.rotate||e.rotateX||e.rotateY}function EU(e){return DO(e.x)||DO(e.y)}function DO(e){return e&&e!=="0%"}function Sv(e,t,n){const r=e-n,i=t*r;return n+i}function LO(e,t,n,r,i){return i!==void 0&&(e=Sv(e,i,r)),Sv(e,n,r)+t}function MC(e,t=0,n=1,r,i){e.min=LO(e.min,t,n,r,i),e.max=LO(e.max,t,n,r,i)}function TU(e,{x:t,y:n}){MC(e.x,t.translate,t.scale,t.originPoint),MC(e.y,n.translate,n.scale,n.originPoint)}function TEe(e,t,n,r=!1){const i=n.length;if(!i)return;t.x=t.y=1;let o,s;for(let a=0;a1.0000000000001||e<.999999999999?e:1}function la(e,t){e.min=e.min+t,e.max=e.max+t}function FO(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=qt(e.min,e.max,o);MC(e,t[n],t[r],s,t.scale)}const AEe=["x","scaleX","originX"],kEe=["y","scaleY","originY"];function Oc(e,t){FO(e.x,t,AEe),FO(e.y,t,kEe)}function AU(e,t){return CU(EEe(e.getBoundingClientRect(),t))}function PEe(e,t,n){const r=AU(e,n),{scroll:i}=t;return i&&(la(r.x,i.offset.x),la(r.y,i.offset.y)),r}const OEe=new WeakMap;class REe{constructor(t){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=fn(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const i=l=>{this.stopAnimation(),n&&this.snapToCursor(wb(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=zz(c),!this.openGlobalLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Co(p=>{let m=this.getAxisMotionValue(p).get()||0;if(Ho.test(m)){const{projection:b}=this.visualElement;if(b&&b.layout){const _=b.layout.layoutBox[p];_&&(m=li(_)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&St.update(()=>f(l,u),!1,!0);const{animationState:h}=this.visualElement;h&&h.setActive("whileDrag",!0)},s=(l,u)=>{const{dragPropagation:c,dragDirectionLock:d,onDirectionLock:f,onDrag:h}=this.getProps();if(!c&&!this.openGlobalLock)return;const{offset:p}=u;if(d&&this.currentDirection===null){this.currentDirection=IEe(p),this.currentDirection!==null&&f&&f(this.currentDirection);return}this.updateAxis("x",u.point,p),this.updateAxis("y",u.point,p),this.visualElement.render(),h&&h(l,u)},a=(l,u)=>this.stop(l,u);this.panSession=new wU(t,{onSessionStart:i,onStart:o,onMove:s,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&&St.update(()=>o(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!Xm(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=vEe(s,this.constraints[t],this.elastic[t])),o.set(s)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),{layout:r}=this.visualElement.projection||{},i=this.constraints;t&&Ac(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=_Ee(r.layoutBox,t):this.constraints=!1,this.elastic=xEe(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Co(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=wEe(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Ac(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=PEe(r,i.root,this.visualElement.getTransformPagePoint());let s=bEe(i.layout.layoutBox,o);if(n){const a=n(CEe(s));this.hasMutatedConstraints=!!a,a&&(s=CU(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Co(c=>{if(!Xm(c,n,this.currentDirection))return;let d=l&&l[c]||{};s&&(d={min:0,max:0});const f=i?200:1e6,h=i?40:1e7,p={type:"inertia",velocity:r?t[c]:0,bounceStiffness:f,bounceDamping:h,timeConstant:750,restDelta:1,restSpeed:10,...o,...d};return this.startAxisValueAnimation(c,p)});return Promise.all(u).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return r.start(v4(t,r,0,n))}stopAnimation(){Co(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n="_drag"+t.toUpperCase(),r=this.visualElement.getProps(),i=r[n];return i||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){Co(n=>{const{drag:r}=this.getProps();if(!Xm(n,r,this.currentDirection))return;const{projection:i}=this.visualElement,o=this.getAxisMotionValue(n);if(i&&i.layout){const{min:s,max:a}=i.layout.layoutBox[n];o.set(t[n]-qt(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Ac(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Co(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=SEe({min:l,max:l},this.constraints[s])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.resolveConstraints(),Co(s=>{if(!Xm(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(qt(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;OEe.set(this.visualElement,this);const t=this.visualElement.current,n=Ps(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();Ac(l)&&(this.constraints=this.resolveRefConstraints())},{projection:i}=this.visualElement,o=i.addEventListener("measure",r);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),r();const s=Cs(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Co(c=>{const d=this.getAxisMotionValue(c);d&&(this.originPoint[c]+=l[c].translate,d.set(d.get()+l[c].translate))}),this.visualElement.render())});return()=>{s(),n(),o(),a&&a()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:i=!1,dragConstraints:o=!1,dragElastic:s=RC,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function Xm(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function IEe(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class MEe extends yl{constructor(t){super(t),this.removeGroupControls=tn,this.removeListeners=tn,this.controls=new REe(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||tn}unmount(){this.removeGroupControls(),this.removeListeners()}}const BO=e=>(t,n)=>{e&&St.update(()=>e(t,n))};class NEe extends yl{constructor(){super(...arguments),this.removePointerDownListener=tn}onPointerDown(t){this.session=new wU(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:BO(t),onStart:BO(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&St.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=Ps(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}function DEe(){const e=I.useContext(Tg);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=I.useId();return I.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function H9e(){return LEe(I.useContext(Tg))}function LEe(e){return e===null?!0:e.isPresent}const N0={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function zO(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const Rf={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(Ce.test(e))e=parseFloat(e);else return e;const n=zO(e,t.target.x),r=zO(e,t.target.y);return`${n}% ${r}%`}},$Ee={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=Ja.parse(e);if(i.length>5)return r;const o=Ja.createTransformer(e),s=typeof i[0]!="number"?1:0,a=n.x.scale*t.x,l=n.y.scale*t.y;i[0+s]/=a,i[1+s]/=l;const u=qt(a,l,.5);return typeof i[2+s]=="number"&&(i[2+s]/=u),typeof i[3+s]=="number"&&(i[3+s]/=u),o(i)}};class FEe extends dt.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;GCe(BEe),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()})),N0.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:i,isPresent:o}=this.props,s=r.projection;return s&&(s.isPresent=o,i||t.layoutDependency!==n||n===void 0?s.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?s.promote():s.relegate()||St.postRender(()=>{const a=s.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),queueMicrotask(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:i}=t;i&&(i.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(i),r&&r.deregister&&r.deregister(i))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function kU(e){const[t,n]=DEe(),r=I.useContext(i4);return dt.createElement(FEe,{...e,layoutGroup:r,switchLayoutGroup:I.useContext(xz),isPresent:t,safeToRemove:n})}const BEe={borderRadius:{...Rf,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Rf,borderTopRightRadius:Rf,borderBottomLeftRadius:Rf,borderBottomRightRadius:Rf,boxShadow:$Ee},PU=["TopLeft","TopRight","BottomLeft","BottomRight"],zEe=PU.length,UO=e=>typeof e=="string"?parseFloat(e):e,jO=e=>typeof e=="number"||Ce.test(e);function UEe(e,t,n,r,i,o){i?(e.opacity=qt(0,n.opacity!==void 0?n.opacity:1,jEe(r)),e.opacityExit=qt(t.opacity!==void 0?t.opacity:1,0,VEe(r))):o&&(e.opacity=qt(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;srt?1:n(Ip(e,t,r))}function GO(e,t){e.min=t.min,e.max=t.max}function _i(e,t){GO(e.x,t.x),GO(e.y,t.y)}function HO(e,t,n,r,i){return e-=t,e=Sv(e,1/n,r),i!==void 0&&(e=Sv(e,1/i,r)),e}function GEe(e,t=0,n=1,r=.5,i,o=e,s=e){if(Ho.test(t)&&(t=parseFloat(t),t=qt(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=qt(o.min,o.max,r);e===o&&(a-=t),e.min=HO(e.min,t,n,a,i),e.max=HO(e.max,t,n,a,i)}function WO(e,t,[n,r,i],o,s){GEe(e,t[n],t[r],t[i],t.scale,o,s)}const HEe=["x","scaleX","originX"],WEe=["y","scaleY","originY"];function qO(e,t,n,r){WO(e.x,t,HEe,n?n.x:void 0,r?r.x:void 0),WO(e.y,t,WEe,n?n.y:void 0,r?r.y:void 0)}function KO(e){return e.translate===0&&e.scale===1}function RU(e){return KO(e.x)&&KO(e.y)}function qEe(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 IU(e,t){return Math.round(e.x.min)===Math.round(t.x.min)&&Math.round(e.x.max)===Math.round(t.x.max)&&Math.round(e.y.min)===Math.round(t.y.min)&&Math.round(e.y.max)===Math.round(t.y.max)}function XO(e){return li(e.x)/li(e.y)}class KEe{constructor(){this.members=[]}add(t){_4(this.members,t),t.scheduleRender()}remove(t){if(b4(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){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.instance&&r.scheduleRender(),t.scheduleRender(),t.resumeFrom=r,n&&(t.resumeFrom.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:i}=t.options;i===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:r}=t;n.onExitComplete&&n.onExitComplete(),r&&r.options.onExitComplete&&r.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function YO(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:c}=n;l&&(r+=`rotate(${l}deg) `),u&&(r+=`rotateX(${u}deg) `),c&&(r+=`rotateY(${c}deg) `)}const s=e.x.scale*t.x,a=e.y.scale*t.y;return(s!==1||a!==1)&&(r+=`scale(${s}, ${a})`),r||"none"}const XEe=(e,t)=>e.depth-t.depth;class YEe{constructor(){this.children=[],this.isDirty=!1}add(t){_4(this.children,t),this.isDirty=!0}remove(t){b4(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(XEe),this.isDirty=!1,this.children.forEach(t)}}function ZEe(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(zs(r),e(o-t))};return St.read(r,!0),()=>zs(r)}function QEe(e){window.MotionDebug&&window.MotionDebug.record(e)}function JEe(e){return e instanceof SVGElement&&e.tagName!=="svg"}function e4e(e,t,n){const r=qr(e)?e:kd(e);return r.start(v4("",r,t,n)),r.animation}const ZO=["","X","Y","Z"],QO=1e3;let t4e=0;const Ml={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function MU({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=t4e++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!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.hasTreeAnimated=!1,this.updateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{Ml.totalNodes=Ml.resolvedTargetDeltas=Ml.recalculatedProjection=0,this.nodes.forEach(i4e),this.nodes.forEach(u4e),this.nodes.forEach(c4e),this.nodes.forEach(o4e),QEe(Ml)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=s,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let l=0;lthis.root.updateBlockedByResize=!1;e(s,()=>{this.root.updateBlockedByResize=!0,d&&d(),d=ZEe(f,250),N0.hasAnimatedSinceResize&&(N0.hasAnimatedSinceResize=!1,this.nodes.forEach(eR))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&c&&(l||u)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:f,hasRelativeTargetChanged:h,layout:p})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const m=this.options.transition||c.getDefaultTransition()||g4e,{onLayoutAnimationStart:b,onLayoutAnimationComplete:_}=c.getProps(),y=!this.targetLayout||!IU(this.targetLayout,p)||h,g=!f&&h;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||g||f&&(y||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(d,g);const v={...yU(m,"layout"),onPlay:b,onComplete:_};(c.shouldReduceMotion||this.options.layoutRoot)&&(v.delay=0,v.type=!1),this.startAnimation(v)}else f||eR(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=p})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const s=this.getStack();s&&s.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,zs(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(d4e),this.animationId++)}getTransformTemplate(){const{visualElement:s}=this.options;return s&&s.getProps().transformTemplate}willUpdate(s=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let c=0;cthis.update()))}clearAllSnapshots(){this.nodes.forEach(s4e),this.sharedNodes.forEach(f4e)}scheduleUpdateProjection(){St.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){St.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const S=v/1e3;tR(d.x,s.x,S),tR(d.y,s.y,S),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(dh(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),h4e(this.relativeTarget,this.relativeTargetOrigin,f,S),g&&qEe(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=fn()),_i(g,this.relativeTarget)),m&&(this.animationValues=c,UEe(c,u,this.latestValues,S,y,_)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(s){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(zs(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=St.update(()=>{N0.hasAnimatedSinceResize=!0,this.currentAnimation=e4e(0,QO,{...s,onUpdate:a=>{this.mixTargetDelta(a),s.onUpdate&&s.onUpdate(a)},onComplete:()=>{s.onComplete&&s.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const s=this.getStack();s&&s.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(QO),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const s=this.getLead();let{targetWithTransforms:a,target:l,layout:u,latestValues:c}=s;if(!(!a||!l||!u)){if(this!==s&&this.layout&&u&&NU(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||fn();const d=li(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=li(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}_i(a,l),Oc(a,c),ch(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new KEe),this.sharedNodes.get(s).add(a);const u=a.options.initialPromotionConfig;a.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(a):void 0})}isLead(){const s=this.getStack();return s?s.lead===this:!0}getLead(){var s;const{layoutId:a}=this.options;return a?((s=this.getStack())===null||s===void 0?void 0:s.lead)||this:this}getPrevLead(){var s;const{layoutId:a}=this.options;return a?(s=this.getStack())===null||s===void 0?void 0:s.prevLead:void 0}getStack(){const{layoutId:s}=this.options;if(s)return this.root.sharedNodes.get(s)}promote({needsReset:s,transition:a,preserveFollowOpacity:l}={}){const u=this.getStack();u&&u.promote(this,l),s&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){const s=this.getStack();return s?s.relegate(this):!1}resetRotation(){const{visualElement:s}=this.options;if(!s)return;let a=!1;const{latestValues:l}=s;if((l.rotate||l.rotateX||l.rotateY||l.rotateZ)&&(a=!0),!a)return;const u={};for(let c=0;c{var a;return(a=s.currentAnimation)===null||a===void 0?void 0:a.stop()}),this.root.nodes.forEach(JO),this.root.sharedNodes.clear()}}}function n4e(e){e.updateLayout()}function r4e(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:i}=e.layout,{animationType:o}=e.options,s=n.source!==e.layout.source;o==="size"?Co(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=li(f);f.min=r[d].min,f.max=f.min+h}):NU(o,n.layoutBox,r)&&Co(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=li(r[d]);f.max=f.min+h,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[d].max=e.relativeTarget[d].min+h)});const a=Pc();ch(a,r,n.layoutBox);const l=Pc();s?ch(l,e.applyTransform(i,!0),n.measuredBox):ch(l,r,n.layoutBox);const u=!RU(a);let c=!1;if(!e.resumeFrom){const d=e.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:f,layout:h}=d;if(f&&h){const p=fn();dh(p,n.layoutBox,f.layoutBox);const m=fn();dh(m,r,h.layoutBox),IU(p,m)||(c=!0),d.options.layoutRoot&&(e.relativeTarget=m,e.relativeTargetOrigin=p,e.relativeParent=d)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:n,delta:l,layoutDelta:a,hasLayoutChanged:u,hasRelativeTargetChanged:c})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function i4e(e){Ml.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function o4e(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function s4e(e){e.clearSnapshot()}function JO(e){e.clearMeasurements()}function a4e(e){e.isLayoutDirty=!1}function l4e(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function eR(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function u4e(e){e.resolveTargetDelta()}function c4e(e){e.calcProjection()}function d4e(e){e.resetRotation()}function f4e(e){e.removeLeadSnapshot()}function tR(e,t,n){e.translate=qt(t.translate,0,n),e.scale=qt(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function nR(e,t,n,r){e.min=qt(t.min,n.min,r),e.max=qt(t.max,n.max,r)}function h4e(e,t,n,r){nR(e.x,t.x,n.x,r),nR(e.y,t.y,n.y,r)}function p4e(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const g4e={duration:.45,ease:[.4,0,.1,1]},rR=e=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(e),iR=rR("applewebkit/")&&!rR("chrome/")?Math.round:tn;function oR(e){e.min=iR(e.min),e.max=iR(e.max)}function m4e(e){oR(e.x),oR(e.y)}function NU(e,t,n){return e==="position"||e==="preserve-aspect"&&!OC(XO(t),XO(n),.2)}const y4e=MU({attachResizeListener:(e,t)=>Cs(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),W2={current:void 0},DU=MU({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!W2.current){const e=new y4e({});e.mount(window),e.setOptions({layoutScroll:!0}),W2.current=e}return W2.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),v4e={pan:{Feature:NEe},drag:{Feature:MEe,ProjectionNode:DU,MeasureLayout:kU}},_4e=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function b4e(e){const t=_4e.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function NC(e,t,n=1){const[r,i]=b4e(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);if(o){const s=o.trim();return vU(s)?parseFloat(s):s}else return xC(i)?NC(i,t,n+1):i}function S4e(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(!xC(o))return;const s=NC(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!xC(o))continue;const s=NC(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const w4e=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),LU=e=>w4e.has(e),x4e=e=>Object.keys(e).some(LU),sR=e=>e===$u||e===Ce,aR=(e,t)=>parseFloat(e.split(", ")[t]),lR=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return aR(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?aR(o[1],e):0}},C4e=new Set(["x","y","z"]),E4e=Ag.filter(e=>!C4e.has(e));function T4e(e){const t=[];return E4e.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 Pd={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:lR(4,13),y:lR(5,14)};Pd.translateX=Pd.x;Pd.translateY=Pd.y;const A4e=(e,t,n)=>{const r=t.measureViewportBox(),i=t.current,o=getComputedStyle(i),{display:s}=o,a={};s==="none"&&t.setStaticValue("display",e.display||"block"),n.forEach(u=>{a[u]=Pd[u](r,o)}),t.render();const l=t.measureViewportBox();return n.forEach(u=>{const c=t.getValue(u);c&&c.jump(a[u]),e[u]=Pd[u](l,o)}),e},k4e=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(LU);let o=[],s=!1;const a=[];if(i.forEach(l=>{const u=e.getValue(l);if(!e.hasValue(l))return;let c=n[l],d=Of(c);const f=t[l];let h;if(mv(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=Of(c);for(let b=m;b=0?window.pageYOffset:null,u=A4e(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),vb&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function P4e(e,t,n,r){return x4e(t)?k4e(e,t,n,r):{target:t,transitionEnd:r}}const O4e=(e,t,n,r)=>{const i=S4e(e,t,r);return t=i.target,r=i.transitionEnd,P4e(e,t,n,r)},DC={current:null},$U={current:!1};function R4e(){if($U.current=!0,!!vb)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>DC.current=e.matches;e.addListener(t),t()}else DC.current=!1}function I4e(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(qr(o))e.addValue(i,o),bv(r)&&r.add(i);else if(qr(s))e.addValue(i,kd(o,{owner:e})),bv(r)&&r.remove(i);else if(s!==o)if(e.hasValue(i)){const a=e.getValue(i);!a.hasAnimated&&a.set(o)}else{const a=e.getStaticValue(i);e.addValue(i,kd(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const uR=new WeakMap,FU=Object.keys(Rp),M4e=FU.length,cR=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],N4e=r4.length;class D4e{constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:i,visualState:o},s={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.features={},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=()=>St.render(this.render,!1,!0);const{latestValues:a,renderState:l}=o;this.latestValues=a,this.baseTarget={...a},this.initialValues=n.initial?{...a}:{},this.renderState=l,this.parent=t,this.props=n,this.presenceContext=r,this.depth=t?t.depth+1:0,this.reducedMotionConfig=i,this.options=s,this.isControllingVariants=bb(n),this.isVariantNode=wz(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:u,...c}=this.scrapeMotionValuesFromProps(n,{});for(const d in c){const f=c[d];a[d]!==void 0&&qr(f)&&(f.set(a[d],!1),bv(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,uR.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,r)=>this.bindToMotionValue(r,n)),$U.current||R4e(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:DC.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){uR.delete(this.current),this.projection&&this.projection.unmount(),zs(this.notifyUpdate),zs(this.render),this.valueSubscriptions.forEach(t=>t()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features)this.features[t].unmount();this.current=null}bindToMotionValue(t,n){const r=Lu.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&St.update(this.notifyUpdate,!1,!0),r&&this.projection&&(this.projection.isTransformDirty=!0)}),o=n.on("renderRequest",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({children:t,...n},r,i,o){let s,a;for(let l=0;lthis.scheduleRender(),animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:f,layoutRoot:h})}return a}updateFeatures(){for(const t in this.features){const n=this.features[t];n.isMounted?n.update():(n.mount(),n.isMounted=!0)}}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):fn()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}makeTargetAnimatable(t,n=!0){return this.makeTargetAnimatableFromInstance(t,this.props,n)}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;rn.variantChildren.delete(t)}addValue(t,n){n!==this.values.get(t)&&(this.removeValue(t),this.bindToMotionValue(t,n)),this.values.set(t,n),this.latestValues[t]=n.get()}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(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=kd(n,{owner:this}),this.addValue(t,r)),r}readValue(t){var n;return this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(n=this.getBaseTargetFromProps(this.props,t))!==null&&n!==void 0?n: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=f4(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&&!qr(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 S4),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class BU extends D4e{sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}makeTargetAnimatableFromInstance({transition:t,transitionEnd:n,...r},{transformValues:i},o){let s=J5e(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){Z5e(this,r,s);const a=O4e(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function L4e(e){return window.getComputedStyle(e)}class $4e extends BU{readValueFromInstance(t,n){if(Lu.has(n)){const r=y4(n);return r&&r.default||0}else{const r=L4e(t),i=(Tz(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return AU(t,n)}build(t,n,r,i){s4(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return d4(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;qr(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){Iz(t,n,r,i)}}class F4e extends BU{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Lu.has(n)){const r=y4(n);return r&&r.default||0}return n=Mz.has(n)?n:c4(n),t.getAttribute(n)}measureInstanceViewportBox(){return fn()}scrapeMotionValuesFromProps(t,n){return Dz(t,n)}build(t,n,r,i){l4(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){Nz(t,n,r,i)}mount(t){this.isSVGTag=u4(t.tagName),super.mount(t)}}const B4e=(e,t)=>o4(e)?new F4e(t,{enableHardwareAcceleration:!1}):new $4e(t,{enableHardwareAcceleration:!0}),z4e={layout:{ProjectionNode:DU,MeasureLayout:kU}},U4e={...hEe,...M3e,...v4e,...z4e},j4e=jCe((e,t)=>b3e(e,t,U4e,B4e));function zU(){const e=I.useRef(!1);return t4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function V4e(){const e=zU(),[t,n]=I.useState(0),r=I.useCallback(()=>{e.current&&n(t+1)},[t]);return[I.useCallback(()=>St.postRender(r),[r]),t]}class G4e extends I.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 H4e({children:e,isPresent:t}){const n=I.useId(),r=I.useRef(null),i=I.useRef({width:0,height:0,top:0,left:0});return I.useInsertionEffect(()=>{const{width:o,height:s,top:a,left:l}=i.current;if(t||!r.current||!o||!s)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: ${s}px !important; - top: ${a}px !important; - left: ${l}px !important; - } - `),()=>{document.head.removeChild(u)}},[t]),I.createElement(G4e,{isPresent:t,childRef:r,sizeRef:i},I.cloneElement(e,{ref:r}))}const q2=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=Lz(W4e),l=I.useId(),u=I.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:c=>{a.set(c,!0);for(const d of a.values())if(!d)return;r&&r()},register:c=>(a.set(c,!1),()=>a.delete(c))}),o?void 0:[n]);return I.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),I.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=I.createElement(H4e,{isPresent:n},e)),I.createElement(Tg.Provider,{value:u},e)};function W4e(){return new Map}function q4e(e){return I.useEffect(()=>()=>e(),[])}const fc=e=>e.key||"";function K4e(e,t){e.forEach(n=>{const r=fc(n);t.set(r,n)})}function X4e(e){const t=[];return I.Children.forEach(e,n=>{I.isValidElement(n)&&t.push(n)}),t}const Y4e=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=I.useContext(i4).forceRender||V4e()[0],l=zU(),u=X4e(e);let c=u;const d=I.useRef(new Map).current,f=I.useRef(c),h=I.useRef(new Map).current,p=I.useRef(!0);if(t4(()=>{p.current=!1,K4e(u,h),f.current=c}),q4e(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return I.createElement(I.Fragment,null,c.map(y=>I.createElement(q2,{key:fc(y),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},y)));c=[...c];const m=f.current.map(fc),b=u.map(fc),_=m.length;for(let y=0;y<_;y++){const g=m[y];b.indexOf(g)===-1&&!d.has(g)&&d.set(g,void 0)}return s==="wait"&&d.size&&(c=[]),d.forEach((y,g)=>{if(b.indexOf(g)!==-1)return;const v=h.get(g);if(!v)return;const S=m.indexOf(g);let w=y;if(!w){const C=()=>{h.delete(g),d.delete(g);const x=f.current.findIndex(A=>A.key===g);if(f.current.splice(x,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=I.createElement(q2,{key:fc(v),isPresent:!1,onExitComplete:C,custom:t,presenceAffectsLayout:o,mode:s},v),d.set(g,w)}c.splice(S,0,w)}),c=c.map(y=>{const g=y.key;return d.has(g)?y:I.createElement(q2,{key:fc(y),isPresent:!0,presenceAffectsLayout:o,mode:s},y)}),I.createElement(I.Fragment,null,d.size?c:c.map(y=>I.cloneElement(y)))};var Z4e=Fwe({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),UU=ml((e,t)=>{const n=e4("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=JE(e),u=XE("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${Z4e} ${o} linear infinite`,...n};return Y.jsx(Za.div,{ref:t,__css:c,className:u,...l,children:r&&Y.jsx(Za.span,{srOnly:!0,children:r})})});UU.displayName="Spinner";var LC=ml(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return Y.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});LC.displayName="NativeImage";function Q4e(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=I.useState("pending");I.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=I.useRef(),f=I.useCallback(()=>{if(!n)return;h();const p=new Image;p.src=n,s&&(p.crossOrigin=s),r&&(p.srcset=r),a&&(p.sizes=a),t&&(p.loading=t),p.onload=m=>{h(),c("loaded"),i==null||i(m)},p.onerror=m=>{h(),c("failed"),o==null||o(m)},d.current=p},[n,s,r,a,i,o,t]),h=()=>{d.current&&(d.current.onload=null,d.current.onerror=null,d.current=null)};return Bwe(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var J4e=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function eTe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var w4=ml(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:s,align:a,fit:l,loading:u,ignoreFallback:c,crossOrigin:d,fallbackStrategy:f="beforeLoadOrError",referrerPolicy:h,...p}=t,m=r!==void 0||i!==void 0,b=u!=null||c||!m,_=Q4e({...t,crossOrigin:d,ignoreFallback:b}),y=J4e(_,f),g={ref:n,objectFit:l,objectPosition:a,...b?p:eTe(p,["onError","onLoad"])};return y?i||Y.jsx(Za.img,{as:LC,className:"chakra-image__placeholder",src:r,...g}):Y.jsx(Za.img,{as:LC,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});w4.displayName="Image";var jU=ml(function(t,n){const r=e4("Text",t),{className:i,align:o,decoration:s,casing:a,...l}=JE(t),u=xCe({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return Y.jsx(Za.p,{ref:n,className:XE("chakra-text",t.className),...u,...l,__css:r})});jU.displayName="Text";var $C=ml(function(t,n){const r=e4("Heading",t),{className:i,...o}=JE(t);return Y.jsx(Za.h2,{ref:n,className:XE("chakra-heading",t.className),...o,__css:r})});$C.displayName="Heading";var wv=Za("div");wv.displayName="Box";var VU=ml(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return Y.jsx(wv,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});VU.displayName="Square";var tTe=ml(function(t,n){const{size:r,...i}=t;return Y.jsx(VU,{size:r,ref:n,borderRadius:"9999px",...i})});tTe.displayName="Circle";var x4=ml(function(t,n){const{direction:r,align:i,justify:o,wrap:s,basis:a,grow:l,shrink:u,...c}=t,d={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:s,flexBasis:a,flexGrow:l,flexShrink:u};return Y.jsx(Za.div,{ref:n,__css:d,...c})});x4.displayName="Flex";const nTe=""+new URL("logo-13003d72.png",import.meta.url).href,rTe=()=>Y.jsxs(x4,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[Y.jsx(w4,{src:nTe,w:"8rem",h:"8rem"}),Y.jsx(UU,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),iTe=I.memo(rTe);function FC(e){"@babel/helpers - typeof";return FC=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},FC(e)}var GU=[],oTe=GU.forEach,sTe=GU.slice;function BC(e){return oTe.call(sTe.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function HU(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":FC(XMLHttpRequest))==="object"}function aTe(e){return!!e&&typeof e.then=="function"}function lTe(e){return aTe(e)?e:Promise.resolve(e)}function uTe(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var zC={exports:{}},Ym={exports:{}},dR;function cTe(){return dR||(dR=1,function(e,t){var n=typeof self<"u"?self:De,r=function(){function o(){this.fetch=!1,this.DOMException=n.DOMException}return o.prototype=n,new o}();(function(o){(function(s){var a={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function l(E){return E&&DataView.prototype.isPrototypeOf(E)}if(a.arrayBuffer)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(E){return E&&u.indexOf(Object.prototype.toString.call(E))>-1};function d(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(E))throw new TypeError("Invalid character in header field name");return E.toLowerCase()}function f(E){return typeof E!="string"&&(E=String(E)),E}function h(E){var k={next:function(){var N=E.shift();return{done:N===void 0,value:N}}};return a.iterable&&(k[Symbol.iterator]=function(){return k}),k}function p(E){this.map={},E instanceof p?E.forEach(function(k,N){this.append(N,k)},this):Array.isArray(E)?E.forEach(function(k){this.append(k[0],k[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(k){this.append(k,E[k])},this)}p.prototype.append=function(E,k){E=d(E),k=f(k);var N=this.map[E];this.map[E]=N?N+", "+k:k},p.prototype.delete=function(E){delete this.map[d(E)]},p.prototype.get=function(E){return E=d(E),this.has(E)?this.map[E]:null},p.prototype.has=function(E){return this.map.hasOwnProperty(d(E))},p.prototype.set=function(E,k){this.map[d(E)]=f(k)},p.prototype.forEach=function(E,k){for(var N in this.map)this.map.hasOwnProperty(N)&&E.call(k,this.map[N],N,this)},p.prototype.keys=function(){var E=[];return this.forEach(function(k,N){E.push(N)}),h(E)},p.prototype.values=function(){var E=[];return this.forEach(function(k){E.push(k)}),h(E)},p.prototype.entries=function(){var E=[];return this.forEach(function(k,N){E.push([N,k])}),h(E)},a.iterable&&(p.prototype[Symbol.iterator]=p.prototype.entries);function m(E){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}function b(E){return new Promise(function(k,N){E.onload=function(){k(E.result)},E.onerror=function(){N(E.error)}})}function _(E){var k=new FileReader,N=b(k);return k.readAsArrayBuffer(E),N}function y(E){var k=new FileReader,N=b(k);return k.readAsText(E),N}function g(E){for(var k=new Uint8Array(E),N=new Array(k.length),$=0;$-1?k:E}function x(E,k){k=k||{};var N=k.body;if(E instanceof x){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,k.headers||(this.headers=new p(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!N&&E._bodyInit!=null&&(N=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=k.credentials||this.credentials||"same-origin",(k.headers||!this.headers)&&(this.headers=new p(k.headers)),this.method=C(k.method||this.method||"GET"),this.mode=k.mode||this.mode||null,this.signal=k.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&N)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(N)}x.prototype.clone=function(){return new x(this,{body:this._bodyInit})};function A(E){var k=new FormData;return E.trim().split("&").forEach(function(N){if(N){var $=N.split("="),M=$.shift().replace(/\+/g," "),O=$.join("=").replace(/\+/g," ");k.append(decodeURIComponent(M),decodeURIComponent(O))}}),k}function T(E){var k=new p,N=E.replace(/\r?\n[\t ]+/g," ");return N.split(/\r?\n/).forEach(function($){var M=$.split(":"),O=M.shift().trim();if(O){var D=M.join(":").trim();k.append(O,D)}}),k}S.call(x.prototype);function P(E,k){k||(k={}),this.type="default",this.status=k.status===void 0?200:k.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in k?k.statusText:"OK",this.headers=new p(k.headers),this.url=k.url||"",this._initBody(E)}S.call(P.prototype),P.prototype.clone=function(){return new P(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},P.error=function(){var E=new P(null,{status:0,statusText:""});return E.type="error",E};var L=[301,302,303,307,308];P.redirect=function(E,k){if(L.indexOf(k)===-1)throw new RangeError("Invalid status code");return new P(null,{status:k,headers:{location:E}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(k,N){this.message=k,this.name=N;var $=Error(k);this.stack=$.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function R(E,k){return new Promise(function(N,$){var M=new x(E,k);if(M.signal&&M.signal.aborted)return $(new s.DOMException("Aborted","AbortError"));var O=new XMLHttpRequest;function D(){O.abort()}O.onload=function(){var F={status:O.status,statusText:O.statusText,headers:T(O.getAllResponseHeaders()||"")};F.url="responseURL"in O?O.responseURL:F.headers.get("X-Request-URL");var U="response"in O?O.response:O.responseText;N(new P(U,F))},O.onerror=function(){$(new TypeError("Network request failed"))},O.ontimeout=function(){$(new TypeError("Network request failed"))},O.onabort=function(){$(new s.DOMException("Aborted","AbortError"))},O.open(M.method,M.url,!0),M.credentials==="include"?O.withCredentials=!0:M.credentials==="omit"&&(O.withCredentials=!1),"responseType"in O&&a.blob&&(O.responseType="blob"),M.headers.forEach(function(F,U){O.setRequestHeader(U,F)}),M.signal&&(M.signal.addEventListener("abort",D),O.onreadystatechange=function(){O.readyState===4&&M.signal.removeEventListener("abort",D)}),O.send(typeof M._bodyInit>"u"?null:M._bodyInit)})}return R.polyfill=!0,o.fetch||(o.fetch=R,o.Headers=p,o.Request=x,o.Response=P),s.Headers=p,s.Request=x,s.Response=P,s.fetch=R,Object.defineProperty(s,"__esModule",{value:!0}),s})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;t=i.fetch,t.default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t}(Ym,Ym.exports)),Ym.exports}(function(e,t){var n;if(typeof fetch=="function"&&(typeof De<"u"&&De.fetch?n=De.fetch:typeof window<"u"&&window.fetch?n=window.fetch:n=fetch),typeof uTe<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||cTe();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(zC,zC.exports);var WU=zC.exports;const qU=vu(WU),fR=PR({__proto__:null,default:qU},[WU]);function xv(e){"@babel/helpers - typeof";return xv=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},xv(e)}var Rs;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?Rs=global.fetch:typeof window<"u"&&window.fetch?Rs=window.fetch:Rs=fetch);var Mp;HU()&&(typeof global<"u"&&global.XMLHttpRequest?Mp=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Mp=window.XMLHttpRequest));var Cv;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?Cv=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(Cv=window.ActiveXObject));!Rs&&fR&&!Mp&&!Cv&&(Rs=qU||fR);typeof Rs!="function"&&(Rs=void 0);var UC=function(t,n){if(n&&xv(n)==="object"){var r="";for(var i in n)r+="&"+encodeURIComponent(i)+"="+encodeURIComponent(n[i]);if(!r)return t;t=t+(t.indexOf("?")!==-1?"&":"?")+r.slice(1)}return t},hR=function(t,n,r){Rs(t,n).then(function(i){if(!i.ok)return r(i.statusText||"Error",{status:i.status});i.text().then(function(o){r(null,{status:i.status,data:o})}).catch(r)}).catch(r)},pR=!1,dTe=function(t,n,r,i){t.queryStringParams&&(n=UC(n,t.queryStringParams));var o=BC({},typeof t.customHeaders=="function"?t.customHeaders():t.customHeaders);r&&(o["Content-Type"]="application/json");var s=typeof t.requestOptions=="function"?t.requestOptions(r):t.requestOptions,a=BC({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},pR?{}:s);try{hR(n,a,i)}catch(l){if(!s||Object.keys(s).length===0||!l.message||l.message.indexOf("not implemented")<0)return i(l);try{Object.keys(s).forEach(function(u){delete a[u]}),hR(n,a,i),pR=!0}catch(u){i(u)}}},fTe=function(t,n,r,i){r&&xv(r)==="object"&&(r=UC("",r).slice(1)),t.queryStringParams&&(n=UC(n,t.queryStringParams));try{var o;Mp?o=new Mp:o=new Cv("MSXML2.XMLHTTP.3.0"),o.open(r?"POST":"GET",n,1),t.crossDomain||o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.withCredentials=!!t.withCredentials,r&&o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.overrideMimeType&&o.overrideMimeType("application/json");var s=t.customHeaders;if(s=typeof s=="function"?s():s,s)for(var a in s)o.setRequestHeader(a,s[a]);o.onreadystatechange=function(){o.readyState>3&&i(o.status>=400?o.statusText:null,{status:o.status,data:o.responseText})},o.send(r)}catch(l){console&&console.log(l)}},hTe=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},Rs&&n.indexOf("file:")!==0)return dTe(t,n,r,i);if(HU()||typeof ActiveXObject=="function")return fTe(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function Np(e){"@babel/helpers - typeof";return Np=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Np(e)}function pTe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function gR(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};pTe(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return gTe(e,[{key:"init",value:function(n){var r=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=n,this.options=BC(i,this.options||{},vTe()),this.allOptions=o,this.services&&this.options.reloadInterval&&setInterval(function(){return r.reload()},this.options.reloadInterval)}},{key:"readMulti",value:function(n,r,i){this._readAny(n,n,r,r,i)}},{key:"read",value:function(n,r,i){this._readAny([n],n,[r],r,i)}},{key:"_readAny",value:function(n,r,i,o,s){var a=this,l=this.options.loadPath;typeof this.options.loadPath=="function"&&(l=this.options.loadPath(n,i)),l=lTe(l),l.then(function(u){if(!u)return s(null,{});var c=a.services.interpolator.interpolate(u,{lng:n.join("+"),ns:i.join("+")});a.loadUrl(c,s,r,o)})}},{key:"loadUrl",value:function(n,r,i,o){var s=this,a=typeof i=="string"?[i]:i,l=typeof o=="string"?[o]:o,u=this.options.parseLoadPayload(a,l);this.options.request(this.options,n,u,function(c,d){if(d&&(d.status>=500&&d.status<600||!d.status))return r("failed loading "+n+"; status code: "+d.status,!0);if(d&&d.status>=400&&d.status<500)return r("failed loading "+n+"; status code: "+d.status,!1);if(!d&&c&&c.message&&c.message.indexOf("Failed to fetch")>-1)return r("failed loading "+n+": "+c.message,!0);if(c)return r(c,!1);var f,h;try{typeof d.data=="string"?f=s.options.parse(d.data,i,o):f=d.data}catch{h="failed parsing "+n+" to json"}if(h)return r(h,!1);r(null,f)})}},{key:"create",value:function(n,r,i,o,s){var a=this;if(this.options.addPath){typeof n=="string"&&(n=[n]);var l=this.options.parsePayload(r,i,o),u=0,c=[],d=[];n.forEach(function(f){var h=a.options.addPath;typeof a.options.addPath=="function"&&(h=a.options.addPath(f,r));var p=a.services.interpolator.interpolate(h,{lng:f,ns:r});a.options.request(a.options,p,l,function(m,b){u+=1,c.push(m),d.push(b),u===n.length&&typeof s=="function"&&s(c,d)})})}}},{key:"reload",value:function(){var n=this,r=this.services,i=r.backendConnector,o=r.languageUtils,s=r.logger,a=i.language;if(!(a&&a.toLowerCase()==="cimode")){var l=[],u=function(d){var f=o.toResolveHierarchy(d);f.forEach(function(h){l.indexOf(h)<0&&l.push(h)})};u(a),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),l.forEach(function(c){n.allOptions.ns.forEach(function(d){i.read(c,d,"read",null,null,function(f,h){f&&s.warn("loading namespace ".concat(d," for language ").concat(c," failed"),f),!f&&h&&s.log("loaded namespace ".concat(d," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(d),f,h)})})})}}}]),e}();XU.type="backend";const _Te=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,bTe={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},STe=e=>bTe[e],wTe=e=>e.replace(_Te,STe);let jC={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:wTe};function xTe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};jC={...jC,...e}}function q9e(){return jC}let YU;function CTe(e){YU=e}function K9e(){return YU}const ETe={type:"3rdParty",init(e){xTe(e.options.react),CTe(e)}};gr.use(XU).use(ETe).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const Cb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function ef(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function C4(e){return"nodeType"in e}function Ir(e){var t,n;return e?ef(e)?e:C4(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function E4(e){const{Document:t}=Ir(e);return e instanceof t}function Rg(e){return ef(e)?!1:e instanceof Ir(e).HTMLElement}function TTe(e){return e instanceof Ir(e).SVGElement}function tf(e){return e?ef(e)?e.document:C4(e)?E4(e)?e:Rg(e)?e.ownerDocument:document:document:document}const Yo=Cb?I.useLayoutEffect:I.useEffect;function Eb(e){const t=I.useRef(e);return Yo(()=>{t.current=e}),I.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=I.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function Dp(e,t){t===void 0&&(t=[e]);const n=I.useRef(e);return Yo(()=>{n.current!==e&&(n.current=e)},t),n}function Ig(e,t){const n=I.useRef();return I.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Ev(e){const t=Eb(e),n=I.useRef(null),r=I.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function Tv(e){const t=I.useRef();return I.useEffect(()=>{t.current=e},[e]),t.current}let K2={};function Tb(e,t){return I.useMemo(()=>{if(t)return t;const n=K2[e]==null?0:K2[e]+1;return K2[e]=n,e+"-"+n},[e,t])}function ZU(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{const a=Object.entries(s);for(const[l,u]of a){const c=o[l];c!=null&&(o[l]=c+e*u)}return o},{...t})}}const ed=ZU(1),Av=ZU(-1);function kTe(e){return"clientX"in e&&"clientY"in e}function T4(e){if(!e)return!1;const{KeyboardEvent:t}=Ir(e.target);return t&&e instanceof t}function PTe(e){if(!e)return!1;const{TouchEvent:t}=Ir(e.target);return t&&e instanceof t}function Lp(e){if(PTe(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return kTe(e)?{x:e.clientX,y:e.clientY}:null}const $p=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[$p.Translate.toString(e),$p.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),mR="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function OTe(e){return e.matches(mR)?e:e.querySelector(mR)}const RTe={display:"none"};function ITe(e){let{id:t,value:n}=e;return dt.createElement("div",{id:t,style:RTe},n)}const MTe={position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};function NTe(e){let{id:t,announcement:n}=e;return dt.createElement("div",{id:t,style:MTe,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function DTe(){const[e,t]=I.useState("");return{announce:I.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const QU=I.createContext(null);function LTe(e){const t=I.useContext(QU);I.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function $Te(){const[e]=I.useState(()=>new Set),t=I.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[I.useCallback(r=>{let{type:i,event:o}=r;e.forEach(s=>{var a;return(a=s[i])==null?void 0:a.call(s,o)})},[e]),t]}const FTe={draggable:` - To pick up a draggable item, press the space bar. - While dragging, use the arrow keys to move the item. - Press space again to drop the item in its new position, or press escape to cancel. - `},BTe={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function zTe(e){let{announcements:t=BTe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=FTe}=e;const{announce:o,announcement:s}=DTe(),a=Tb("DndLiveRegion"),[l,u]=I.useState(!1);if(I.useEffect(()=>{u(!0)},[]),LTe(I.useMemo(()=>({onDragStart(d){let{active:f}=d;o(t.onDragStart({active:f}))},onDragMove(d){let{active:f,over:h}=d;t.onDragMove&&o(t.onDragMove({active:f,over:h}))},onDragOver(d){let{active:f,over:h}=d;o(t.onDragOver({active:f,over:h}))},onDragEnd(d){let{active:f,over:h}=d;o(t.onDragEnd({active:f,over:h}))},onDragCancel(d){let{active:f,over:h}=d;o(t.onDragCancel({active:f,over:h}))}}),[o,t])),!l)return null;const c=dt.createElement(dt.Fragment,null,dt.createElement(ITe,{id:r,value:i.draggable}),dt.createElement(NTe,{id:a,announcement:s}));return n?Zi.createPortal(c,n):c}var bn;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(bn||(bn={}));function kv(){}function yR(e,t){return I.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function UTe(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const ho=Object.freeze({x:0,y:0});function jTe(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function VTe(e,t){const n=Lp(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function GTe(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function HTe(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function WTe(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function qTe(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function KTe(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),o=Math.min(t.top+t.height,e.top+e.height),s=i-r,a=o-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=[];for(const o of r){const{id:s}=o,a=n.get(s);if(a){const l=KTe(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(HTe)};function YTe(e,t){const{top:n,left:r,bottom:i,right:o}=t;return n<=e.y&&e.y<=i&&r<=e.x&&e.x<=o}const ZTe=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];const i=[];for(const o of t){const{id:s}=o,a=n.get(s);if(a&&YTe(r,a)){const u=WTe(a).reduce((d,f)=>d+jTe(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(GTe)};function QTe(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function JU(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:ho}function JTe(e){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o({...s,top:s.top+e*a.y,bottom:s.bottom+e*a.y,left:s.left+e*a.x,right:s.right+e*a.x}),{...n})}}const e6e=JTe(1);function ej(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function t6e(e,t,n){const r=ej(t);if(!r)return e;const{scaleX:i,scaleY:o,x:s,y:a}=r,l=e.left-s-(1-i)*parseFloat(n),u=e.top-a-(1-o)*parseFloat(n.slice(n.indexOf(" ")+1)),c=i?e.width/i:e.width,d=o?e.height/o:e.height;return{width:c,height:d,top:u,right:l+c,bottom:u+d,left:l}}const n6e={ignoreTransform:!1};function Mg(e,t){t===void 0&&(t=n6e);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=Ir(e).getComputedStyle(e);u&&(n=t6e(n,u,c))}const{top:r,left:i,width:o,height:s,bottom:a,right:l}=n;return{top:r,left:i,width:o,height:s,bottom:a,right:l}}function vR(e){return Mg(e,{ignoreTransform:!0})}function r6e(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function i6e(e,t){return t===void 0&&(t=Ir(e).getComputedStyle(e)),t.position==="fixed"}function o6e(e,t){t===void 0&&(t=Ir(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const o=t[i];return typeof o=="string"?n.test(o):!1})}function A4(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(E4(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Rg(i)||TTe(i)||n.includes(i))return n;const o=Ir(e).getComputedStyle(i);return i!==e&&o6e(i,o)&&n.push(i),i6e(i,o)?n:r(i.parentNode)}return e?r(e):n}function tj(e){const[t]=A4(e,1);return t??null}function X2(e){return!Cb||!e?null:ef(e)?e:C4(e)?E4(e)||e===tf(e).scrollingElement?window:Rg(e)?e:null:null}function nj(e){return ef(e)?e.scrollX:e.scrollLeft}function rj(e){return ef(e)?e.scrollY:e.scrollTop}function VC(e){return{x:nj(e),y:rj(e)}}var Nn;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(Nn||(Nn={}));function ij(e){return!Cb||!e?!1:e===document.scrollingElement}function oj(e){const t={x:0,y:0},n=ij(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},i=e.scrollTop<=t.y,o=e.scrollLeft<=t.x,s=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:i,isLeft:o,isBottom:s,isRight:a,maxScroll:r,minScroll:t}}const s6e={x:.2,y:.2};function a6e(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=s6e);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=oj(e),h={x:0,y:0},p={x:0,y:0},m={height:t.height*i.y,width:t.width*i.x};return!u&&o<=t.top+m.height?(h.y=Nn.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=Nn.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=Nn.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=Nn.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function l6e(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:s}=window;return{top:0,left:0,right:o,bottom:s,width:o,height:s}}const{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function sj(e){return e.reduce((t,n)=>ed(t,VC(n)),ho)}function u6e(e){return e.reduce((t,n)=>t+nj(n),0)}function c6e(e){return e.reduce((t,n)=>t+rj(n),0)}function aj(e,t){if(t===void 0&&(t=Mg),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);tj(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const d6e=[["x",["left","right"],u6e],["y",["top","bottom"],c6e]];class k4{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=A4(n),i=sj(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of d6e)for(const l of s)Object.defineProperty(this,l,{get:()=>{const u=a(r),c=i[o]-u;return this.rect[l]+c},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class fh{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var i;(i=this.target)==null||i.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function f6e(e){const{EventTarget:t}=Ir(e);return e instanceof t?e:tf(e)}function Y2(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var Si;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(Si||(Si={}));function _R(e){e.preventDefault()}function h6e(e){e.stopPropagation()}var _t;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(_t||(_t={}));const lj={start:[_t.Space,_t.Enter],cancel:[_t.Esc],end:[_t.Space,_t.Enter]},p6e=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case _t.Right:return{...n,x:n.x+25};case _t.Left:return{...n,x:n.x-25};case _t.Down:return{...n,y:n.y+25};case _t.Up:return{...n,y:n.y-25}}};class uj{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new fh(tf(n)),this.windowListeners=new fh(Ir(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Si.Resize,this.handleCancel),this.windowListeners.add(Si.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Si.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&aj(r),n(ho)}handleKeyDown(t){if(T4(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=lj,coordinateGetter:s=p6e,scrollBehavior:a="smooth"}=i,{code:l}=t;if(o.end.includes(l)){this.handleEnd(t);return}if(o.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:u}=r.current,c=u?{x:u.left,y:u.top}:ho;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=Av(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const b=t.code,{isTop:_,isRight:y,isLeft:g,isBottom:v,maxScroll:S,minScroll:w}=oj(m),C=l6e(m),x={x:Math.min(b===_t.Right?C.right-C.width/2:C.right,Math.max(b===_t.Right?C.left:C.left+C.width/2,d.x)),y:Math.min(b===_t.Down?C.bottom-C.height/2:C.bottom,Math.max(b===_t.Down?C.top:C.top+C.height/2,d.y))},A=b===_t.Right&&!y||b===_t.Left&&!g,T=b===_t.Down&&!v||b===_t.Up&&!_;if(A&&x.x!==d.x){const P=m.scrollLeft+f.x,L=b===_t.Right&&P<=S.x||b===_t.Left&&P>=w.x;if(L&&!f.y){m.scrollTo({left:P,behavior:a});return}L?h.x=m.scrollLeft-P:h.x=b===_t.Right?m.scrollLeft-S.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(T&&x.y!==d.y){const P=m.scrollTop+f.y,L=b===_t.Down&&P<=S.y||b===_t.Up&&P>=w.y;if(L&&!f.x){m.scrollTo({top:P,behavior:a});return}L?h.y=m.scrollTop-P:h.y=b===_t.Down?m.scrollTop-S.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,ed(Av(d,this.referenceCoordinates),h))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}uj.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=lj,onActivation:i}=t,{active:o}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const a=o.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),i==null||i({event:e.nativeEvent}),!0)}return!1}}];function bR(e){return!!(e&&"distance"in e)}function SR(e){return!!(e&&"delay"in e)}class P4{constructor(t,n,r){var i;r===void 0&&(r=f6e(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:o}=t,{target:s}=o;this.props=t,this.events=n,this.document=tf(s),this.documentListeners=new fh(this.document),this.listeners=new fh(r),this.windowListeners=new fh(Ir(s)),this.initialCoordinates=(i=Lp(o))!=null?i:ho,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),this.windowListeners.add(Si.Resize,this.handleCancel),this.windowListeners.add(Si.DragStart,_R),this.windowListeners.add(Si.VisibilityChange,this.handleCancel),this.windowListeners.add(Si.ContextMenu,_R),this.documentListeners.add(Si.Keydown,this.handleKeydown),n){if(bR(n))return;if(SR(n)){this.timeoutId=setTimeout(this.handleStart,n.delay);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(Si.Click,h6e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Si.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:i,props:o}=this,{onMove:s,options:{activationConstraint:a}}=o;if(!i)return;const l=(n=Lp(t))!=null?n:ho,u=Av(i,l);if(!r&&a){if(SR(a))return Y2(u,a.tolerance)?this.handleCancel():void 0;if(bR(a))return a.tolerance!=null&&Y2(u,a.tolerance)?this.handleCancel():Y2(u,a.distance)?this.handleStart():void 0}t.cancelable&&t.preventDefault(),s(l)}handleEnd(){const{onEnd:t}=this.props;this.detach(),t()}handleCancel(){const{onCancel:t}=this.props;this.detach(),t()}handleKeydown(t){t.code===_t.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const g6e={move:{name:"pointermove"},end:{name:"pointerup"}};class cj extends P4{constructor(t){const{event:n}=t,r=tf(n.target);super(t,g6e,r)}}cj.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const m6e={move:{name:"mousemove"},end:{name:"mouseup"}};var GC;(function(e){e[e.RightClick=2]="RightClick"})(GC||(GC={}));class dj extends P4{constructor(t){super(t,m6e,tf(t.event.target))}}dj.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===GC.RightClick?!1:(r==null||r({event:n}),!0)}}];const Z2={move:{name:"touchmove"},end:{name:"touchend"}};class fj extends P4{constructor(t){super(t,Z2)}static setup(){return window.addEventListener(Z2.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(Z2.move.name,t)};function t(){}}}fj.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:i}=n;return i.length>1?!1:(r==null||r({event:n}),!0)}}];var hh;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(hh||(hh={}));var Pv;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Pv||(Pv={}));function y6e(e){let{acceleration:t,activator:n=hh.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=Pv.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=_6e({delta:d,disabled:!o}),[p,m]=ATe(),b=I.useRef({x:0,y:0}),_=I.useRef({x:0,y:0}),y=I.useMemo(()=>{switch(n){case hh.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case hh.DraggableRect:return i}},[n,i,l]),g=I.useRef(null),v=I.useCallback(()=>{const w=g.current;if(!w)return;const C=b.current.x*_.current.x,x=b.current.y*_.current.y;w.scrollBy(C,x)},[]),S=I.useMemo(()=>a===Pv.TreeOrder?[...u].reverse():u,[a,u]);I.useEffect(()=>{if(!o||!u.length||!y){m();return}for(const w of S){if((r==null?void 0:r(w))===!1)continue;const C=u.indexOf(w),x=c[C];if(!x)continue;const{direction:A,speed:T}=a6e(w,x,y,t,f);for(const P of["x","y"])h[P][A[P]]||(T[P]=0,A[P]=0);if(T.x>0||T.y>0){m(),g.current=w,p(v,s),b.current=T,_.current=A;return}}b.current={x:0,y:0},_.current={x:0,y:0},m()},[t,v,r,m,o,s,JSON.stringify(y),JSON.stringify(h),p,u,S,c,JSON.stringify(f)])}const v6e={x:{[Nn.Backward]:!1,[Nn.Forward]:!1},y:{[Nn.Backward]:!1,[Nn.Forward]:!1}};function _6e(e){let{delta:t,disabled:n}=e;const r=Tv(t);return Ig(i=>{if(n||!r||!i)return v6e;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[Nn.Backward]:i.x[Nn.Backward]||o.x===-1,[Nn.Forward]:i.x[Nn.Forward]||o.x===1},y:{[Nn.Backward]:i.y[Nn.Backward]||o.y===-1,[Nn.Forward]:i.y[Nn.Forward]||o.y===1}}},[n,t,r])}function b6e(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return Ig(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function S6e(e,t){return I.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,o=i.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...o]},[]),[e,t])}var Fp;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Fp||(Fp={}));var HC;(function(e){e.Optimized="optimized"})(HC||(HC={}));const wR=new Map;function w6e(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=I.useState(null),{frequency:a,measure:l,strategy:u}=i,c=I.useRef(e),d=b(),f=Dp(d),h=I.useCallback(function(_){_===void 0&&(_=[]),!f.current&&s(y=>y===null?_:y.concat(_.filter(g=>!y.includes(g))))},[f]),p=I.useRef(null),m=Ig(_=>{if(d&&!n)return wR;if(!_||_===wR||c.current!==e||o!=null){const y=new Map;for(let g of e){if(!g)continue;if(o&&o.length>0&&!o.includes(g.id)&&g.rect.current){y.set(g.id,g.rect.current);continue}const v=g.node.current,S=v?new k4(l(v),v):null;g.rect.current=S,S&&y.set(g.id,S)}return y}return _},[e,o,n,d,l]);return I.useEffect(()=>{c.current=e},[e]),I.useEffect(()=>{d||h()},[n,d]),I.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),I.useEffect(()=>{d||typeof a!="number"||p.current!==null||(p.current=setTimeout(()=>{h(),p.current=null},a))},[a,d,h,...r]),{droppableRects:m,measureDroppableContainers:h,measuringScheduled:o!=null};function b(){switch(u){case Fp.Always:return!1;case Fp.BeforeDragging:return n;default:return!n}}}function O4(e,t){return Ig(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function x6e(e,t){return O4(e,t)}function C6e(e){let{callback:t,disabled:n}=e;const r=Eb(t),i=I.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return I.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function Ab(e){let{callback:t,disabled:n}=e;const r=Eb(t),i=I.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return I.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function E6e(e){return new k4(Mg(e),e)}function xR(e,t,n){t===void 0&&(t=E6e);const[r,i]=I.useReducer(a,null),o=C6e({callback(l){if(e)for(const u of l){const{type:c,target:d}=u;if(c==="childList"&&d instanceof HTMLElement&&d.contains(e)){i();break}}}}),s=Ab({callback:i});return Yo(()=>{i(),e?(s==null||s.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(s==null||s.disconnect(),o==null||o.disconnect())},[e]),r;function a(l){if(!e)return null;if(e.isConnected===!1){var u;return(u=l??n)!=null?u:null}const c=t(e);return JSON.stringify(l)===JSON.stringify(c)?l:c}}function T6e(e){const t=O4(e);return JU(e,t)}const CR=[];function A6e(e){const t=I.useRef(e),n=Ig(r=>e?r&&r!==CR&&e&&t.current&&e.parentNode===t.current.parentNode?r:A4(e):CR,[e]);return I.useEffect(()=>{t.current=e},[e]),n}function k6e(e){const[t,n]=I.useState(null),r=I.useRef(e),i=I.useCallback(o=>{const s=X2(o.target);s&&n(a=>a?(a.set(s,VC(s)),new Map(a)):null)},[]);return I.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=X2(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,VC(u)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{s(e),s(o)};function s(a){a.forEach(l=>{const u=X2(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),I.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>ed(o,s),ho):sj(e):ho,[e,t])}function ER(e,t){t===void 0&&(t=[]);const n=I.useRef(null);return I.useEffect(()=>{n.current=null},t),I.useEffect(()=>{const r=e!==ho;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?Av(e,n.current):ho}function P6e(e){I.useEffect(()=>{if(!Cb)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function O6e(e,t){return I.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function hj(e){return I.useMemo(()=>e?r6e(e):null,[e])}const Q2=[];function R6e(e,t){t===void 0&&(t=Mg);const[n]=e,r=hj(n?Ir(n):null),[i,o]=I.useReducer(a,Q2),s=Ab({callback:o});return e.length>0&&i===Q2&&o(),Yo(()=>{e.length?e.forEach(l=>s==null?void 0:s.observe(l)):(s==null||s.disconnect(),o())},[e]),i;function a(){return e.length?e.map(l=>ij(l)?r:new k4(t(l),l)):Q2}}function pj(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Rg(t)?t:e}function I6e(e){let{measure:t}=e;const[n,r]=I.useState(null),i=I.useCallback(u=>{for(const{target:c}of u)if(Rg(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=Ab({callback:i}),s=I.useCallback(u=>{const c=pj(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=Ev(s);return I.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const M6e=[{sensor:cj,options:{}},{sensor:uj,options:{}}],N6e={current:{}},D0={draggable:{measure:vR},droppable:{measure:vR,strategy:Fp.WhileDragging,frequency:HC.Optimized},dragOverlay:{measure:Mg}};class ph extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const D6e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new ph,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:kv},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:D0,measureDroppableContainers:kv,windowRect:null,measuringScheduled:!1},gj={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:kv,draggableNodes:new Map,over:null,measureDroppableContainers:kv},Ng=I.createContext(gj),mj=I.createContext(D6e);function L6e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new ph}}}function $6e(e,t){switch(t.type){case bn.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case bn.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case bn.DragEnd:case bn.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case bn.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new ph(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case bn.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const s=new ph(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case bn.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new ph(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function F6e(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=I.useContext(Ng),o=Tv(r),s=Tv(n==null?void 0:n.id);return I.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!T4(o)||document.activeElement===o.target)return;const a=i.get(s);if(!a)return;const{activatorNode:l,node:u}=a;if(!l.current&&!u.current)return;requestAnimationFrame(()=>{for(const c of[l.current,u.current]){if(!c)continue;const d=OTe(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function yj(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function B6e(e){return I.useMemo(()=>({draggable:{...D0.draggable,...e==null?void 0:e.draggable},droppable:{...D0.droppable,...e==null?void 0:e.droppable},dragOverlay:{...D0.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function z6e(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=I.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Yo(()=>{if(!s&&!a||!t){o.current=!1;return}if(o.current||!r)return;const u=t==null?void 0:t.node.current;if(!u||u.isConnected===!1)return;const c=n(u),d=JU(c,r);if(s||(d.x=0),a||(d.y=0),o.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const f=tj(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const kb=I.createContext({...ho,scaleX:1,scaleY:1});var ua;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ua||(ua={}));const U6e=I.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=M6e,collisionDetection:d=XTe,measuring:f,modifiers:h,...p}=t;const m=I.useReducer($6e,void 0,L6e),[b,_]=m,[y,g]=$Te(),[v,S]=I.useState(ua.Uninitialized),w=v===ua.Initialized,{draggable:{active:C,nodes:x,translate:A},droppable:{containers:T}}=b,P=C?x.get(C):null,L=I.useRef({initial:null,translated:null}),R=I.useMemo(()=>{var jt;return C!=null?{id:C,data:(jt=P==null?void 0:P.data)!=null?jt:N6e,rect:L}:null},[C,P]),E=I.useRef(null),[k,N]=I.useState(null),[$,M]=I.useState(null),O=Dp(p,Object.values(p)),D=Tb("DndDescribedBy",s),F=I.useMemo(()=>T.getEnabled(),[T]),U=B6e(f),{droppableRects:V,measureDroppableContainers:q,measuringScheduled:X}=w6e(F,{dragging:w,dependencies:[A.x,A.y],config:U.droppable}),Z=b6e(x,C),z=I.useMemo(()=>$?Lp($):null,[$]),W=_l(),Q=x6e(Z,U.draggable.measure);z6e({activeNode:C?x.get(C):null,config:W.layoutShiftCompensation,initialRect:Q,measure:U.draggable.measure});const J=xR(Z,U.draggable.measure,Q),se=xR(Z?Z.parentElement:null),oe=I.useRef({activatorEvent:null,active:null,activeNode:Z,collisionRect:null,collisions:null,droppableRects:V,draggableNodes:x,draggingNode:null,draggingNodeRect:null,droppableContainers:T,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Me=T.getNodeFor((n=oe.current.over)==null?void 0:n.id),Ae=I6e({measure:U.dragOverlay.measure}),_e=(r=Ae.nodeRef.current)!=null?r:Z,je=w?(i=Ae.rect)!=null?i:J:null,he=!!(Ae.nodeRef.current&&Ae.rect),It=T6e(he?null:J),Bn=hj(_e?Ir(_e):null),Zt=A6e(w?Me??Z:null),wt=R6e(Zt),ht=yj(h,{transform:{x:A.x-It.x,y:A.y-It.y,scaleX:1,scaleY:1},activatorEvent:$,active:R,activeNodeRect:J,containerNodeRect:se,draggingNodeRect:je,over:oe.current.over,overlayNodeRect:Ae.rect,scrollableAncestors:Zt,scrollableAncestorRects:wt,windowRect:Bn}),cn=z?ed(z,A):null,Mr=k6e(Zt),ji=ER(Mr),fi=ER(Mr,[J]),tr=ed(ht,ji),zn=je?e6e(je,ht):null,mr=R&&zn?d({active:R,collisionRect:zn,droppableRects:V,droppableContainers:F,pointerCoordinates:cn}):null,Qt=qTe(mr,"id"),[xt,Kr]=I.useState(null),hi=he?ht:ed(ht,fi),Vi=QTe(hi,(o=xt==null?void 0:xt.rect)!=null?o:null,J),ts=I.useCallback((jt,pt)=>{let{sensor:jn,options:Tn}=pt;if(E.current==null)return;const nr=x.get(E.current);if(!nr)return;const yr=jt.nativeEvent,Nr=new jn({active:E.current,activeNode:nr,event:yr,options:Tn,context:oe,onStart(vr){const Vn=E.current;if(Vn==null)return;const ns=x.get(Vn);if(!ns)return;const{onDragStart:Ks}=O.current,Xs={active:{id:Vn,data:ns.data,rect:L}};Zi.unstable_batchedUpdates(()=>{Ks==null||Ks(Xs),S(ua.Initializing),_({type:bn.DragStart,initialCoordinates:vr,active:Vn}),y({type:"onDragStart",event:Xs})})},onMove(vr){_({type:bn.DragMove,coordinates:vr})},onEnd:vo(bn.DragEnd),onCancel:vo(bn.DragCancel)});Zi.unstable_batchedUpdates(()=>{N(Nr),M(jt.nativeEvent)});function vo(vr){return async function(){const{active:ns,collisions:Ks,over:Xs,scrollAdjustedTranslate:Fu}=oe.current;let rs=null;if(ns&&Fu){const{cancelDrop:_r}=O.current;rs={activatorEvent:yr,active:ns,collisions:Ks,delta:Fu,over:Xs},vr===bn.DragEnd&&typeof _r=="function"&&await Promise.resolve(_r(rs))&&(vr=bn.DragCancel)}E.current=null,Zi.unstable_batchedUpdates(()=>{_({type:vr}),S(ua.Uninitialized),Kr(null),N(null),M(null);const _r=vr===bn.DragEnd?"onDragEnd":"onDragCancel";if(rs){const bl=O.current[_r];bl==null||bl(rs),y({type:_r,event:rs})}})}}},[x]),Un=I.useCallback((jt,pt)=>(jn,Tn)=>{const nr=jn.nativeEvent,yr=x.get(Tn);if(E.current!==null||!yr||nr.dndKit||nr.defaultPrevented)return;const Nr={active:yr};jt(jn,pt.options,Nr)===!0&&(nr.dndKit={capturedBy:pt.sensor},E.current=Tn,ts(jn,pt))},[x,ts]),Gi=S6e(c,Un);P6e(c),Yo(()=>{J&&v===ua.Initializing&&S(ua.Initialized)},[J,v]),I.useEffect(()=>{const{onDragMove:jt}=O.current,{active:pt,activatorEvent:jn,collisions:Tn,over:nr}=oe.current;if(!pt||!jn)return;const yr={active:pt,activatorEvent:jn,collisions:Tn,delta:{x:tr.x,y:tr.y},over:nr};Zi.unstable_batchedUpdates(()=>{jt==null||jt(yr),y({type:"onDragMove",event:yr})})},[tr.x,tr.y]),I.useEffect(()=>{const{active:jt,activatorEvent:pt,collisions:jn,droppableContainers:Tn,scrollAdjustedTranslate:nr}=oe.current;if(!jt||E.current==null||!pt||!nr)return;const{onDragOver:yr}=O.current,Nr=Tn.get(Qt),vo=Nr&&Nr.rect.current?{id:Nr.id,rect:Nr.rect.current,data:Nr.data,disabled:Nr.disabled}:null,vr={active:jt,activatorEvent:pt,collisions:jn,delta:{x:nr.x,y:nr.y},over:vo};Zi.unstable_batchedUpdates(()=>{Kr(vo),yr==null||yr(vr),y({type:"onDragOver",event:vr})})},[Qt]),Yo(()=>{oe.current={activatorEvent:$,active:R,activeNode:Z,collisionRect:zn,collisions:mr,droppableRects:V,draggableNodes:x,draggingNode:_e,draggingNodeRect:je,droppableContainers:T,over:xt,scrollableAncestors:Zt,scrollAdjustedTranslate:tr},L.current={initial:je,translated:zn}},[R,Z,mr,zn,x,_e,je,V,T,xt,Zt,tr]),y6e({...W,delta:A,draggingRect:zn,pointerCoordinates:cn,scrollableAncestors:Zt,scrollableAncestorRects:wt});const vl=I.useMemo(()=>({active:R,activeNode:Z,activeNodeRect:J,activatorEvent:$,collisions:mr,containerNodeRect:se,dragOverlay:Ae,draggableNodes:x,droppableContainers:T,droppableRects:V,over:xt,measureDroppableContainers:q,scrollableAncestors:Zt,scrollableAncestorRects:wt,measuringConfiguration:U,measuringScheduled:X,windowRect:Bn}),[R,Z,J,$,mr,se,Ae,x,T,V,xt,q,Zt,wt,U,X,Bn]),yo=I.useMemo(()=>({activatorEvent:$,activators:Gi,active:R,activeNodeRect:J,ariaDescribedById:{draggable:D},dispatch:_,draggableNodes:x,over:xt,measureDroppableContainers:q}),[$,Gi,R,J,_,D,x,xt,q]);return dt.createElement(QU.Provider,{value:g},dt.createElement(Ng.Provider,{value:yo},dt.createElement(mj.Provider,{value:vl},dt.createElement(kb.Provider,{value:Vi},u)),dt.createElement(F6e,{disabled:(a==null?void 0:a.restoreFocus)===!1})),dt.createElement(zTe,{...a,hiddenTextDescribedById:D}));function _l(){const jt=(k==null?void 0:k.autoScrollEnabled)===!1,pt=typeof l=="object"?l.enabled===!1:l===!1,jn=w&&!jt&&!pt;return typeof l=="object"?{...l,enabled:jn}:{enabled:jn}}}),j6e=I.createContext(null),TR="button",V6e="Droppable";function X9e(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=Tb(V6e),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=I.useContext(Ng),{role:h=TR,roleDescription:p="draggable",tabIndex:m=0}=i??{},b=(l==null?void 0:l.id)===t,_=I.useContext(b?kb:j6e),[y,g]=Ev(),[v,S]=Ev(),w=O6e(s,t),C=Dp(n);Yo(()=>(d.set(t,{id:t,key:o,node:y,activatorNode:v,data:C}),()=>{const A=d.get(t);A&&A.key===o&&d.delete(t)}),[d,t]);const x=I.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":b&&h===TR?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,b,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:x,isDragging:b,listeners:r?void 0:w,node:y,over:f,setNodeRef:g,setActivatorNodeRef:S,transform:_}}function G6e(){return I.useContext(mj)}const H6e="Droppable",W6e={timeout:25};function Y9e(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=Tb(H6e),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=I.useContext(Ng),c=I.useRef({disabled:n}),d=I.useRef(!1),f=I.useRef(null),h=I.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:b}={...W6e,...i},_=Dp(m??r),y=I.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(_.current)?_.current:[_.current]),h.current=null},b)},[b]),g=Ab({callback:y,disabled:p||!s}),v=I.useCallback((x,A)=>{g&&(A&&(g.unobserve(A),d.current=!1),x&&g.observe(x))},[g]),[S,w]=Ev(v),C=Dp(t);return I.useEffect(()=>{!g||!S.current||(g.disconnect(),d.current=!1,g.observe(S.current))},[S,g]),Yo(()=>(a({type:bn.RegisterDroppable,element:{id:r,key:o,disabled:n,node:S,rect:f,data:C}}),()=>a({type:bn.UnregisterDroppable,key:o,id:r})),[r]),I.useEffect(()=>{n!==c.current.disabled&&(a({type:bn.SetDroppableDisabled,id:r,key:o,disabled:n}),c.current.disabled=n)},[r,o,n,a]),{active:s,rect:f,isOver:(l==null?void 0:l.id)===r,node:S,over:l,setNodeRef:w}}function q6e(e){let{animation:t,children:n}=e;const[r,i]=I.useState(null),[o,s]=I.useState(null),a=Tv(n);return!n&&!r&&a&&i(a),Yo(()=>{if(!o)return;const l=r==null?void 0:r.key,u=r==null?void 0:r.props.id;if(l==null||u==null){i(null);return}Promise.resolve(t(u,o)).then(()=>{i(null)})},[t,r,o]),dt.createElement(dt.Fragment,null,n,r?I.cloneElement(r,{ref:s}):null)}const K6e={x:0,y:0,scaleX:1,scaleY:1};function X6e(e){let{children:t}=e;return dt.createElement(Ng.Provider,{value:gj},dt.createElement(kb.Provider,{value:K6e},t))}const Y6e={position:"fixed",touchAction:"none"},Z6e=e=>T4(e)?"transform 250ms ease":void 0,Q6e=I.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=Z6e}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...Y6e,width:a.width,height:a.height,top:a.top,left:a.left,transform:$p.Transform.toString(d),transformOrigin:i&&r?VTe(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return dt.createElement(n,{className:s,style:f,ref:t},o)}),J6e=e=>t=>{let{active:n,dragOverlay:r}=t;const i={},{styles:o,className:s}=e;if(o!=null&&o.active)for(const[a,l]of Object.entries(o.active))l!==void 0&&(i[a]=n.node.style.getPropertyValue(a),n.node.style.setProperty(a,l));if(o!=null&&o.dragOverlay)for(const[a,l]of Object.entries(o.dragOverlay))l!==void 0&&r.node.style.setProperty(a,l);return s!=null&&s.active&&n.node.classList.add(s.active),s!=null&&s.dragOverlay&&r.node.classList.add(s.dragOverlay),function(){for(const[l,u]of Object.entries(i))n.node.style.setProperty(l,u);s!=null&&s.active&&n.node.classList.remove(s.active)}},eAe=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:$p.Transform.toString(t)},{transform:$p.Transform.toString(n)}]},tAe={duration:250,easing:"ease",keyframes:eAe,sideEffects:J6e({styles:{active:{opacity:"0"}}})};function nAe(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return Eb((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=pj(s);if(!u)return;const{transform:c}=Ir(s).getComputedStyle(s),d=ej(c);if(!d)return;const f=typeof t=="function"?t:rAe(t);return aj(l,i.draggable.measure),f({active:{id:o,data:a.data,node:l,rect:i.draggable.measure(l)},draggableNodes:n,dragOverlay:{node:s,rect:i.dragOverlay.measure(u)},droppableContainers:r,measuringConfiguration:i,transform:d})})}function rAe(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...tAe,...e};return o=>{let{active:s,dragOverlay:a,transform:l,...u}=o;if(!t)return;const c={x:a.rect.left-s.rect.left,y:a.rect.top-s.rect.top},d={scaleX:l.scaleX!==1?s.rect.width*l.scaleX/a.rect.width:1,scaleY:l.scaleY!==1?s.rect.height*l.scaleY/a.rect.height:1},f={x:l.x-c.x,y:l.y-c.y,...d},h=i({...u,active:s,dragOverlay:a,transform:{initial:l,final:f}}),[p]=h,m=h[h.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;const b=r==null?void 0:r({active:s,dragOverlay:a,...u}),_=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{_.onfinish=()=>{b==null||b(),y()}})}}let AR=0;function iAe(e){return I.useMemo(()=>{if(e!=null)return AR++,AR},[e])}const oAe=dt.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:o,modifiers:s,wrapperElement:a="div",className:l,zIndex:u=999}=e;const{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggableNodes:p,droppableContainers:m,dragOverlay:b,over:_,measuringConfiguration:y,scrollableAncestors:g,scrollableAncestorRects:v,windowRect:S}=G6e(),w=I.useContext(kb),C=iAe(d==null?void 0:d.id),x=yj(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:b.rect,over:_,overlayNodeRect:b.rect,scrollableAncestors:g,scrollableAncestorRects:v,transform:w,windowRect:S}),A=O4(f),T=nAe({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:y}),P=A?b.setRef:void 0;return dt.createElement(X6e,null,dt.createElement(q6e,{animation:T},d&&C?dt.createElement(Q6e,{key:C,id:d.id,ref:P,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:A,style:{zIndex:u,...i},transform:x},n):null))}),sAe=()=>DD(),aAe=AD,lAe=fr([s2e,DE],({nodes:e},t)=>t==="nodes"?e.viewport.zoom:1),uAe=()=>{const e=aAe(lAe);return I.useCallback(({activatorEvent:n,draggingNodeRect:r,transform:i})=>{if(r&&n){const o=Lp(n);if(!o)return i;const s=o.x-r.left,a=o.y-r.top,l=i.x+s-r.width/2,u=i.y+a-r.height/2,c=i.scaleX*e,d=i.scaleY*e;return{x:l,y:u,scaleX:c,scaleY:d}}return i},[e])};function cAe(e){return Y.jsx(U6e,{...e})}const Zm=28,kR={w:Zm,h:Zm,maxW:Zm,maxH:Zm,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},dAe=e=>{if(!e.dragData)return null;if(e.dragData.payloadType==="NODE_FIELD"){const{field:t,fieldTemplate:n}=e.dragData.payload;return Y.jsx(wv,{sx:{position:"relative",p:2,px:3,opacity:.7,bg:"base.300",borderRadius:"base",boxShadow:"dark-lg",whiteSpace:"nowrap",fontSize:"sm"},children:Y.jsx(jU,{children:t.label||n.title})})}if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return Y.jsx(wv,{sx:{position:"relative",width:"full",height:"full",display:"flex",alignItems:"center",justifyContent:"center"},children:Y.jsx(w4,{sx:{...kR},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_DTOS"?Y.jsxs(x4,{sx:{position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...kR},children:[Y.jsx($C,{children:e.dragData.payload.imageDTOs.length}),Y.jsx($C,{size:"sm",children:"Images"})]}):null},fAe=I.memo(dAe),hAe=e=>{const[t,n]=I.useState(null),r=re("images"),i=sAe(),o=I.useCallback(d=>{r.trace({dragData:kt(d.active.data.current)},"Drag started");const f=d.active.data.current;f&&n(f)},[r]),s=I.useCallback(d=>{var h;r.trace({dragData:kt(d.active.data.current)},"Drag ended");const f=(h=d.over)==null?void 0:h.data.current;!t||!f||(i(xB({overData:f,activeData:t})),n(null))},[t,i,r]),a=yR(dj,{activationConstraint:{distance:10}}),l=yR(fj,{activationConstraint:{distance:10}}),u=UTe(a,l),c=uAe();return Y.jsxs(cAe,{onDragStart:o,onDragEnd:s,sensors:u,collisionDetection:ZTe,autoScroll:!1,children:[e.children,Y.jsx(oAe,{dropAnimation:null,modifiers:[c],style:{width:"min-content",height:"min-content",cursor:"none",userSelect:"none",padding:"10rem"},children:Y.jsx(Y4e,{children:t&&Y.jsx(j4e.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:Y.jsx(fAe,{dragData:t})},"overlay-drag-image")})})]})},pAe=I.memo(hAe),gAe=I.lazy(()=>VI(()=>import("./App-78495256.js"),["./App-78495256.js","./menu-3d10c968.js","./App-6125620a.css"],import.meta.url)),mAe=I.lazy(()=>VI(()=>import("./ThemeLocaleProvider-707a230a.js"),["./ThemeLocaleProvider-707a230a.js","./menu-3d10c968.js","./ThemeLocaleProvider-90f0fcd3.css"],import.meta.url)),yAe=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i,projectId:o,selectedImage:s})=>(I.useEffect(()=>(t&&ep.set(t),e&&tp.set(e),o&&Ey.set(o),nF(),i&&i.length>0?Gx(UP(),...i):Gx(UP()),()=>{tp.set(void 0),ep.set(void 0),Ey.set(void 0)}),[e,t,i,o]),Y.jsx(dt.StrictMode,{children:Y.jsx(lae,{store:NB,children:Y.jsx(dt.Suspense,{fallback:Y.jsx(iTe,{}),children:Y.jsx(mAe,{children:Y.jsx(pAe,{children:Y.jsx(gAe,{config:n,headerComponent:r,selectedImage:s})})})})})})),vAe=I.memo(yAe);J2.createRoot(document.getElementById("root")).render(Y.jsx(vAe,{}));export{D9e as $,qc as A,Fn as B,Qi as C,Nde as D,Hr as E,Da as F,Eo as G,KPe as H,nE as I,ml as J,zwe as K,Za as L,XE as M,N9e as N,R9e as O,$de as P,Y4e as Q,j4e as R,Uh as S,G9e as T,JE as U,UU as V,e4 as W,I9e as X,M9e as Y,Bwe as Z,Fwe as _,Q3 as a,y5 as a$,Hl as a0,vu as a1,Ny as a2,$H as a3,dt as a4,fCe as a5,V9e as a6,xCe as a7,ks as a8,uz as a9,qE as aA,iz as aB,Awe as aC,Zi as aD,V4 as aE,KE as aF,IRe as aG,Q8e as aH,hPe as aI,pPe as aJ,V8e as aK,U8e as aL,jU as aM,nh as aN,v0e as aO,$F as aP,mRe as aQ,NPe as aR,V5 as aS,IE as aT,XRe as aU,w4 as aV,nTe as aW,gr as aX,iPe as aY,fPe as aZ,Vae as a_,DEe as aa,F9e as ab,SC as ac,O9e as ad,j9e as ae,fr as af,gE as ag,ng as ah,aAe as ai,KRe as aj,vg as ak,cF as al,LF as am,f_ as an,re as ao,sAe as ap,bRe as aq,Wt as ar,Sa as as,wv as at,x4 as au,$C as av,s2e as aw,DE as ax,dPe as ay,Ewe as az,r5 as b,FAe as b$,kJ as b0,DAe as b1,URe as b2,TRe as b3,YRe as b4,WRe as b5,Vpe as b6,ERe as b7,PRe as b8,Ite as b9,nPe as bA,ya as bB,nm as bC,UPe as bD,BPe as bE,zPe as bF,bAe as bG,kAe as bH,PAe as bI,OAe as bJ,RAe as bK,tke as bL,nke as bM,oRe as bN,sRe as bO,LAe as bP,lke as bQ,MAe as bR,YAe as bS,BAe as bT,sbe as bU,NAe as bV,rke as bW,IAe as bX,hke as bY,$Ae as bZ,Z6 as b_,lpe as ba,upe as bb,FRe as bc,zRe as bd,kRe as be,VRe as bf,qRe as bg,_Re as bh,Yj as bi,xAe as bj,SAe as bk,wAe as bl,De as bm,rPe as bn,bPe as bo,_Pe as bp,tPe as bq,VPe as br,Y9e as bs,X9e as bt,B$ as bu,jPe as bv,J8e as bw,ePe as bx,aPe as by,Ax as bz,Mq as c,CAe as c$,Q6 as c0,VAe as c1,QAe as c2,obe as c3,zAe as c4,u8 as c5,uRe as c6,cRe as c7,dRe as c8,GAe as c9,rE as cA,Ii as cB,qAe as cC,hg as cD,HRe as cE,OJ as cF,DOe as cG,FOe as cH,UOe as cI,zOe as cJ,LOe as cK,$Oe as cL,BOe as cM,XSe as cN,rRe as cO,eOe as cP,K8e as cQ,q8e as cR,nOe as cS,see as cT,HOe as cU,ZPe as cV,gOe as cW,mOe as cX,jAe as cY,o9e as cZ,SOe as c_,fRe as ca,HAe as cb,hRe as cc,WAe as cd,pRe as ce,me as cf,xPe as cg,SPe as ch,wPe as ci,Wae as cj,jOe as ck,gpe as cl,fN as cm,j8e as cn,wB as co,oPe as cp,$y as cq,mL as cr,P9e as cs,sPe as ct,um as cu,Fy as cv,SRe as cw,al as cx,xRe as cy,An as cz,wJ as d,g5 as d$,bOe as d0,G1 as d1,UAe as d2,s9e as d3,_Oe as d4,Fd as d5,y9e as d6,i9e as d7,w9e as d8,r9e as d9,Eu as dA,J6 as dB,Uae as dC,lc as dD,mk as dE,k0e as dF,A0e as dG,OPe as dH,RPe as dI,IPe as dJ,jae as dK,MPe as dL,cL as dM,TPe as dN,kPe as dO,CPe as dP,OSe as dQ,CP as dR,EPe as dS,Cke as dT,pke as dU,bke as dV,eke as dW,Ske as dX,wke as dY,a9e as dZ,aRe as d_,yOe as da,pOe as db,x9e as dc,wOe as dd,S9e as de,xOe as df,hOe as dg,Ete as dh,l9e as di,vOe as dj,GOe as dk,FPe as dl,DPe as dm,LPe as dn,$Pe as dp,HPe as dq,WPe as dr,vL as ds,GPe as dt,u1 as du,gk as dv,PPe as dw,yPe as dx,gPe as dy,mPe as dz,N7 as e,fg as e$,Fhe as e0,JAe as e1,SSe as e2,aN as e3,E9e as e4,Tke as e5,Mte as e6,Eke as e7,Po as e8,ZAe as e9,Tt as eA,jo as eB,n9e as eC,_9e as eD,f9e as eE,RRe as eF,d9e as eG,b9e as eH,v9e as eI,ORe as eJ,p9e as eK,h9e as eL,u9e as eM,m9e as eN,TAe as eO,c9e as eP,g9e as eQ,EAe as eR,C$ as eS,QPe as eT,lx as eU,Ohe as eV,oOe as eW,QOe as eX,ZOe as eY,tOe as eZ,r$ as e_,cke as ea,AAe as eb,mee as ec,fke as ed,lRe as ee,ske as ef,ake as eg,ike as eh,oke as ei,Rte as ej,gke as ek,Mke as el,e8e as em,$8e as en,t8e as eo,xke as ep,gee as eq,vke as er,_ke as es,yke as et,m5 as eu,iRe as ev,CSe as ew,DRe as ex,ne as ey,Wn as ez,UM as f,Bke as f$,XPe as f0,ps as f1,GRe as f2,AD as f3,Rhe as f4,tRe as f5,nRe as f6,YPe as f7,COe as f8,EOe as f9,_p as fA,Xa as fB,kOe as fC,POe as fD,ROe as fE,IOe as fF,eRe as fG,OOe as fH,dOe as fI,$$ as fJ,zF as fK,vV as fL,Le as fM,f8e as fN,R8e as fO,O8e as fP,Yke as fQ,S8e as fR,M8e as fS,P0e as fT,jke as fU,a8e as fV,Tf as fW,i8e as fX,Vke as fY,h_ as fZ,s8e as f_,Y8e as fa,Ky as fb,we as fc,TOe as fd,Nhe as fe,JPe as ff,VOe as fg,rOe as fh,iOe as fi,lOe as fj,aOe as fk,uOe as fl,AOe as fm,sOe as fn,MOe as fo,NOe as fp,WOe as fq,KOe as fr,YOe as fs,XOe as ft,xhe as fu,T9e as fv,X8e as fw,OP as fx,kt as fy,Mhe as fz,YM as g,hee as g$,o8e as g0,zke as g1,Wke as g2,Pke as g3,kke as g4,Ake as g5,I8e as g6,uN as g7,ep as g8,Zte as g9,Uke as gA,A8e as gB,T8e as gC,v8e as gD,m8e as gE,y8e as gF,F8e as gG,C8e as gH,B8e as gI,r8e as gJ,n8e as gK,Fke as gL,$ke as gM,L8e as gN,Ike as gO,Zke as gP,E0e as gQ,S0e as gR,x0e as gS,C0e as gT,C9e as gU,J$ as gV,lPe as gW,sh as gX,ME as gY,MRe as gZ,NRe as g_,Nke as ga,Dke as gb,Lke as gc,P8e as gd,Kke as ge,qke as gf,ene as gg,k8e as gh,T0e as gi,Gke as gj,RE as gk,PSe as gl,Qke as gm,h8e as gn,d8e as go,l8e as gp,Oke as gq,Rke as gr,z8e as gs,QRe as gt,ZRe as gu,b8e as gv,g8e as gw,p8e as gx,w0e as gy,Xke as gz,co as h,m0e as h0,k9e as h1,cz as h2,U9e as h3,B9e as h4,L9e as h5,z9e as h6,Lo as h7,$9e as h8,A9e as h9,cCe as ha,nCe as hb,H9e as hc,q9e as hd,K9e as he,gJ as i,sl as j,Jp as k,Ar as l,o1 as m,tg as n,e5 as o,BM as p,a5 as q,A7 as r,Dd as s,kS as t,jM as u,dee as v,I as w,Y as x,Li as y,rn as z}; diff --git a/invokeai/frontend/web/dist/assets/index-f6c3f475.js b/invokeai/frontend/web/dist/assets/index-f6c3f475.js new file mode 100644 index 0000000000..4bfec9568f --- /dev/null +++ b/invokeai/frontend/web/dist/assets/index-f6c3f475.js @@ -0,0 +1,128 @@ +var DV=Object.defineProperty;var LV=(e,t,n)=>t in e?DV(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var e2=(e,t,n)=>(LV(e,typeof t!="symbol"?t+"":t,n),n);function NO(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 s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).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 dt=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Uc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Y1(e){if(e.__esModule)return e;var t=e.default;if(typeof t=="function"){var n=function r(){return this instanceof r?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})}),n}var DO={exports:{}},Z1={},LO={exports:{}},Mt={};/** + * @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 om=Symbol.for("react.element"),$V=Symbol.for("react.portal"),FV=Symbol.for("react.fragment"),BV=Symbol.for("react.strict_mode"),zV=Symbol.for("react.profiler"),UV=Symbol.for("react.provider"),jV=Symbol.for("react.context"),VV=Symbol.for("react.forward_ref"),GV=Symbol.for("react.suspense"),HV=Symbol.for("react.memo"),qV=Symbol.for("react.lazy"),D4=Symbol.iterator;function WV(e){return e===null||typeof e!="object"?null:(e=D4&&e[D4]||e["@@iterator"],typeof e=="function"?e:null)}var $O={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},FO=Object.assign,BO={};function eh(e,t,n){this.props=e,this.context=t,this.refs=BO,this.updater=n||$O}eh.prototype.isReactComponent={};eh.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")};eh.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function zO(){}zO.prototype=eh.prototype;function Z3(e,t,n){this.props=e,this.context=t,this.refs=BO,this.updater=n||$O}var J3=Z3.prototype=new zO;J3.constructor=Z3;FO(J3,eh.prototype);J3.isPureReactComponent=!0;var L4=Array.isArray,UO=Object.prototype.hasOwnProperty,eE={current:null},jO={key:!0,ref:!0,__self:!0,__source:!0};function VO(e,t,n){var r,i={},o=null,s=null;if(t!=null)for(r in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(o=""+t.key),t)UO.call(t,r)&&!jO.hasOwnProperty(r)&&(i[r]=t[r]);var a=arguments.length-2;if(a===1)i.children=n;else if(1>>1,U=R[F];if(0>>1;Fi(Y,O))Qi(j,Y)?(R[F]=j,R[Q]=O,F=Q):(R[F]=Y,R[H]=O,F=H);else if(Qi(j,O))R[F]=j,R[Q]=O,F=Q;else break e}}return I}function i(R,I){var O=R.sortIndex-I.sortIndex;return O!==0?O:R.id-I.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var s=Date,a=s.now();e.unstable_now=function(){return s.now()-a}}var l=[],u=[],c=1,d=null,f=3,h=!1,p=!1,m=!1,b=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,y=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function g(R){for(var I=n(u);I!==null;){if(I.callback===null)r(u);else if(I.startTime<=R)r(u),I.sortIndex=I.expirationTime,t(l,I);else break;I=n(u)}}function v(R){if(m=!1,g(R),!p)if(n(l)!==null)p=!0,D(S);else{var I=n(u);I!==null&&B(v,I.startTime-R)}}function S(R,I){p=!1,m&&(m=!1,_(C),C=-1),h=!0;var O=f;try{for(g(I),d=n(l);d!==null&&(!(d.expirationTime>I)||R&&!k());){var F=d.callback;if(typeof F=="function"){d.callback=null,f=d.priorityLevel;var U=F(d.expirationTime<=I);I=e.unstable_now(),typeof U=="function"?d.callback=U:d===n(l)&&r(l),g(I)}else r(l);d=n(l)}if(d!==null)var V=!0;else{var H=n(u);H!==null&&B(v,H.startTime-I),V=!1}return V}finally{d=null,f=O,h=!1}}var w=!1,x=null,C=-1,A=5,T=-1;function k(){return!(e.unstable_now()-TR||125F?(R.sortIndex=O,t(u,R),n(l)===null&&R===n(u)&&(m?(_(C),C=-1):m=!0,B(v,O-F))):(R.sortIndex=U,t(l,R),p||h||(p=!0,D(S))),R},e.unstable_shouldYield=k,e.unstable_wrapCallback=function(R){var I=f;return function(){var O=f;f=I;try{return R.apply(this,arguments)}finally{f=O}}}})(WO);qO.exports=WO;var iG=qO.exports;/** + * @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 KO=M,Mo=iG;function se(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"),ox=Object.prototype.hasOwnProperty,oG=/^[: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]*$/,B4={},z4={};function sG(e){return ox.call(z4,e)?!0:ox.call(B4,e)?!1:oG.test(e)?z4[e]=!0:(B4[e]=!0,!1)}function aG(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 lG(e,t,n,r){if(t===null||typeof t>"u"||aG(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 Zi(e,t,n,r,i,o,s){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=s}var wi={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){wi[e]=new Zi(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];wi[t]=new Zi(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){wi[e]=new Zi(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){wi[e]=new Zi(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){wi[e]=new Zi(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){wi[e]=new Zi(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){wi[e]=new Zi(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){wi[e]=new Zi(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){wi[e]=new Zi(e,5,!1,e.toLowerCase(),null,!1,!1)});var nE=/[\-:]([a-z])/g;function rE(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(nE,rE);wi[t]=new Zi(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(nE,rE);wi[t]=new Zi(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(nE,rE);wi[t]=new Zi(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){wi[e]=new Zi(e,1,!1,e.toLowerCase(),null,!1,!1)});wi.xlinkHref=new Zi("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){wi[e]=new Zi(e,1,!1,e.toLowerCase(),null,!0,!0)});function iE(e,t,n,r){var i=wi.hasOwnProperty(t)?wi[t]:null;(i!==null?i.type!==0:r||!(2a||i[s]!==o[a]){var l=` +`+i[s].replace(" at new "," at ");return e.displayName&&l.includes("")&&(l=l.replace("",e.displayName)),l}while(1<=s&&0<=a);break}}}finally{r2=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Zh(e):""}function uG(e){switch(e.tag){case 5:return Zh(e.type);case 16:return Zh("Lazy");case 13:return Zh("Suspense");case 19:return Zh("SuspenseList");case 0:case 2:case 15:return e=i2(e.type,!1),e;case 11:return e=i2(e.type.render,!1),e;case 1:return e=i2(e.type,!0),e;default:return""}}function ux(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 Dd:return"Fragment";case Nd:return"Portal";case sx:return"Profiler";case oE:return"StrictMode";case ax:return"Suspense";case lx:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case YO:return(e.displayName||"Context")+".Consumer";case QO:return(e._context.displayName||"Context")+".Provider";case sE:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case aE:return t=e.displayName||null,t!==null?t:ux(e.type)||"Memo";case Pl:t=e._payload,e=e._init;try{return ux(e(t))}catch{}}return null}function cG(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 ux(t);case 8:return t===oE?"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 uu(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function JO(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function dG(e){var t=JO(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(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ny(e){e._valueTracker||(e._valueTracker=dG(e))}function e9(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=JO(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function ev(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 cx(e,t){var n=t.checked;return or({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function j4(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=uu(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 t9(e,t){t=t.checked,t!=null&&iE(e,"checked",t,!1)}function dx(e,t){t9(e,t);var n=uu(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")?fx(e,t.type,n):t.hasOwnProperty("defaultValue")&&fx(e,t.type,uu(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function V4(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 fx(e,t,n){(t!=="number"||ev(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jh=Array.isArray;function Zd(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=ry.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Dp(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var cp={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},fG=["Webkit","ms","Moz","O"];Object.keys(cp).forEach(function(e){fG.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),cp[t]=cp[e]})});function o9(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||cp.hasOwnProperty(e)&&cp[e]?(""+t).trim():t+"px"}function s9(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=o9(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var hG=or({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 gx(e,t){if(t){if(hG[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(se(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(se(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(se(61))}if(t.style!=null&&typeof t.style!="object")throw Error(se(62))}}function mx(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 yx=null;function lE(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var vx=null,Jd=null,ef=null;function q4(e){if(e=lm(e)){if(typeof vx!="function")throw Error(se(280));var t=e.stateNode;t&&(t=r_(t),vx(e.stateNode,e.type,t))}}function a9(e){Jd?ef?ef.push(e):ef=[e]:Jd=e}function l9(){if(Jd){var e=Jd,t=ef;if(ef=Jd=null,q4(e),t)for(e=0;e>>=0,e===0?32:31-(CG(e)/EG|0)|0}var iy=64,oy=4194304;function ep(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 iv(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,s=n&268435455;if(s!==0){var a=s&~i;a!==0?r=ep(a):(o&=s,o!==0&&(r=ep(o)))}else s=n&~i,s!==0?r=ep(s):o!==0&&(r=ep(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function sm(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ps(t),e[t]=n}function PG(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=fp),tA=String.fromCharCode(32),nA=!1;function k9(e,t){switch(e){case"keyup":return rH.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function P9(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ld=!1;function oH(e,t){switch(e){case"compositionend":return P9(t);case"keypress":return t.which!==32?null:(nA=!0,tA);case"textInput":return e=t.data,e===tA&&nA?null:e;default:return null}}function sH(e,t){if(Ld)return e==="compositionend"||!mE&&k9(e,t)?(e=T9(),v0=hE=zl=null,Ld=!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=sA(n)}}function M9(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?M9(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function N9(){for(var e=window,t=ev();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=ev(e.document)}return t}function yE(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 gH(e){var t=N9(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&M9(n.ownerDocument.documentElement,n)){if(r!==null&&yE(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=aA(n,o);var s=aA(n,r);i&&s&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.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,$d=null,Cx=null,pp=null,Ex=!1;function lA(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ex||$d==null||$d!==ev(r)||(r=$d,"selectionStart"in r&&yE(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}),pp&&Up(pp,r)||(pp=r,r=av(Cx,"onSelect"),0zd||(e.current=Ix[zd],Ix[zd]=null,zd--)}function An(e,t){zd++,Ix[zd]=e.current,e.current=t}var cu={},Bi=Tu(cu),fo=Tu(!1),xc=cu;function Cf(e,t){var n=e.type.contextTypes;if(!n)return cu;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 ho(e){return e=e.childContextTypes,e!=null}function uv(){jn(fo),jn(Bi)}function gA(e,t,n){if(Bi.current!==cu)throw Error(se(168));An(Bi,t),An(fo,n)}function V9(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(se(108,cG(e)||"Unknown",i));return or({},n,r)}function cv(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||cu,xc=Bi.current,An(Bi,e),An(fo,fo.current),!0}function mA(e,t,n){var r=e.stateNode;if(!r)throw Error(se(169));n?(e=V9(e,t,xc),r.__reactInternalMemoizedMergedChildContext=e,jn(fo),jn(Bi),An(Bi,e)):jn(fo),An(fo,n)}var za=null,i_=!1,v2=!1;function G9(e){za===null?za=[e]:za.push(e)}function AH(e){i_=!0,G9(e)}function Au(){if(!v2&&za!==null){v2=!0;var e=0,t=ln;try{var n=za;for(ln=1;e>=s,i-=s,Ha=1<<32-Ps(t)+i|n<C?(A=x,x=null):A=x.sibling;var T=f(_,x,g[C],v);if(T===null){x===null&&(x=A);break}e&&x&&T.alternate===null&&t(_,x),y=o(T,y,C),w===null?S=T:w.sibling=T,w=T,x=A}if(C===g.length)return n(_,x),Kn&&Qu(_,C),S;if(x===null){for(;CC?(A=x,x=null):A=x.sibling;var k=f(_,x,T.value,v);if(k===null){x===null&&(x=A);break}e&&x&&k.alternate===null&&t(_,x),y=o(k,y,C),w===null?S=k:w.sibling=k,w=k,x=A}if(T.done)return n(_,x),Kn&&Qu(_,C),S;if(x===null){for(;!T.done;C++,T=g.next())T=d(_,T.value,v),T!==null&&(y=o(T,y,C),w===null?S=T:w.sibling=T,w=T);return Kn&&Qu(_,C),S}for(x=r(_,x);!T.done;C++,T=g.next())T=h(x,_,C,T.value,v),T!==null&&(e&&T.alternate!==null&&x.delete(T.key===null?C:T.key),y=o(T,y,C),w===null?S=T:w.sibling=T,w=T);return e&&x.forEach(function(L){return t(_,L)}),Kn&&Qu(_,C),S}function b(_,y,g,v){if(typeof g=="object"&&g!==null&&g.type===Dd&&g.key===null&&(g=g.props.children),typeof g=="object"&&g!==null){switch(g.$$typeof){case ty:e:{for(var S=g.key,w=y;w!==null;){if(w.key===S){if(S=g.type,S===Dd){if(w.tag===7){n(_,w.sibling),y=i(w,g.props.children),y.return=_,_=y;break e}}else if(w.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Pl&&xA(S)===w.type){n(_,w.sibling),y=i(w,g.props),y.ref=Ph(_,w,g),y.return=_,_=y;break e}n(_,w);break}else t(_,w);w=w.sibling}g.type===Dd?(y=yc(g.props.children,_.mode,v,g.key),y.return=_,_=y):(v=T0(g.type,g.key,g.props,null,_.mode,v),v.ref=Ph(_,y,g),v.return=_,_=v)}return s(_);case Nd:e:{for(w=g.key;y!==null;){if(y.key===w)if(y.tag===4&&y.stateNode.containerInfo===g.containerInfo&&y.stateNode.implementation===g.implementation){n(_,y.sibling),y=i(y,g.children||[]),y.return=_,_=y;break e}else{n(_,y);break}else t(_,y);y=y.sibling}y=T2(g,_.mode,v),y.return=_,_=y}return s(_);case Pl:return w=g._init,b(_,y,w(g._payload),v)}if(Jh(g))return p(_,y,g,v);if(Ch(g))return m(_,y,g,v);fy(_,g)}return typeof g=="string"&&g!==""||typeof g=="number"?(g=""+g,y!==null&&y.tag===6?(n(_,y.sibling),y=i(y,g),y.return=_,_=y):(n(_,y),y=E2(g,_.mode,v),y.return=_,_=y),s(_)):n(_,y)}return b}var Tf=Z9(!0),J9=Z9(!1),um={},ua=Tu(um),Hp=Tu(um),qp=Tu(um);function sc(e){if(e===um)throw Error(se(174));return e}function TE(e,t){switch(An(qp,t),An(Hp,e),An(ua,um),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:px(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=px(t,e)}jn(ua),An(ua,t)}function Af(){jn(ua),jn(Hp),jn(qp)}function eM(e){sc(qp.current);var t=sc(ua.current),n=px(t,e.type);t!==n&&(An(Hp,e),An(ua,n))}function AE(e){Hp.current===e&&(jn(ua),jn(Hp))}var tr=Tu(0);function mv(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)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 _2=[];function kE(){for(var e=0;e<_2.length;e++)_2[e]._workInProgressVersionPrimary=null;_2.length=0}var S0=dl.ReactCurrentDispatcher,b2=dl.ReactCurrentBatchConfig,Ec=0,ir=null,Lr=null,ei=null,yv=!1,gp=!1,Wp=0,PH=0;function ki(){throw Error(se(321))}function PE(e,t){if(t===null)return!1;for(var n=0;nn?n:4,e(!0);var r=b2.transition;b2.transition={};try{e(!1),t()}finally{ln=n,b2.transition=r}}function mM(){return ts().memoizedState}function IH(e,t,n){var r=Jl(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},yM(e))vM(t,n);else if(n=K9(e,t,n,r),n!==null){var i=Ki();Rs(n,e,r,i),_M(n,t,r)}}function OH(e,t,n){var r=Jl(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(yM(e))vM(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,a=o(s,n);if(i.hasEagerState=!0,i.eagerState=a,Ds(a,s)){var l=t.interleaved;l===null?(i.next=i,CE(t)):(i.next=l.next,l.next=i),t.interleaved=i;return}}catch{}finally{}n=K9(e,t,i,r),n!==null&&(i=Ki(),Rs(n,e,r,i),_M(n,t,r))}}function yM(e){var t=e.alternate;return e===ir||t!==null&&t===ir}function vM(e,t){gp=yv=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function _M(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,cE(e,n)}}var vv={readContext:es,useCallback:ki,useContext:ki,useEffect:ki,useImperativeHandle:ki,useInsertionEffect:ki,useLayoutEffect:ki,useMemo:ki,useReducer:ki,useRef:ki,useState:ki,useDebugValue:ki,useDeferredValue:ki,useTransition:ki,useMutableSource:ki,useSyncExternalStore:ki,useId:ki,unstable_isNewReconciler:!1},MH={readContext:es,useCallback:function(e,t){return Xs().memoizedState=[e,t===void 0?null:t],e},useContext:es,useEffect:EA,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,w0(4194308,4,dM.bind(null,t,e),n)},useLayoutEffect:function(e,t){return w0(4194308,4,e,t)},useInsertionEffect:function(e,t){return w0(4,2,e,t)},useMemo:function(e,t){var n=Xs();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Xs();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=IH.bind(null,ir,e),[r.memoizedState,e]},useRef:function(e){var t=Xs();return e={current:e},t.memoizedState=e},useState:CA,useDebugValue:ME,useDeferredValue:function(e){return Xs().memoizedState=e},useTransition:function(){var e=CA(!1),t=e[0];return e=RH.bind(null,e[1]),Xs().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ir,i=Xs();if(Kn){if(n===void 0)throw Error(se(407));n=n()}else{if(n=t(),ri===null)throw Error(se(349));Ec&30||rM(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,EA(oM.bind(null,r,o,e),[e]),r.flags|=2048,Xp(9,iM.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Xs(),t=ri.identifierPrefix;if(Kn){var n=qa,r=Ha;n=(r&~(1<<32-Ps(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Wp++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[ea]=t,e[Gp]=r,kM(e,t,!1,!1),t.stateNode=e;e:{switch(s=mx(n,r),n){case"dialog":Nn("cancel",e),Nn("close",e),i=r;break;case"iframe":case"object":case"embed":Nn("load",e),i=r;break;case"video":case"audio":for(i=0;iPf&&(t.flags|=128,r=!0,Rh(o,!1),t.lanes=4194304)}else{if(!r)if(e=mv(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Rh(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Kn)return Pi(t),null}else 2*vr()-o.renderingStartTime>Pf&&n!==1073741824&&(t.flags|=128,r=!0,Rh(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(n=o.last,n!==null?n.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=vr(),t.sibling=null,n=tr.current,An(tr,r?n&1|2:n&1),t):(Pi(t),null);case 22:case 23:return BE(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?To&1073741824&&(Pi(t),t.subtreeFlags&6&&(t.flags|=8192)):Pi(t),null;case 24:return null;case 25:return null}throw Error(se(156,t.tag))}function UH(e,t){switch(_E(t),t.tag){case 1:return ho(t.type)&&uv(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Af(),jn(fo),jn(Bi),kE(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return AE(t),null;case 13:if(jn(tr),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(se(340));Ef()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return jn(tr),null;case 4:return Af(),null;case 10:return xE(t.type._context),null;case 22:case 23:return BE(),null;case 24:return null;default:return null}}var py=!1,Ni=!1,jH=typeof WeakSet=="function"?WeakSet:Set,De=null;function Gd(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){ur(e,t,r)}else n.current=null}function Vx(e,t,n){try{n()}catch(r){ur(e,t,r)}}var NA=!1;function VH(e,t){if(Tx=ov,e=N9(),yE(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 s=0,a=-1,l=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var h;d!==n||i!==0&&d.nodeType!==3||(a=s+i),d!==o||r!==0&&d.nodeType!==3||(l=s+r),d.nodeType===3&&(s+=d.nodeValue.length),(h=d.firstChild)!==null;)f=d,d=h;for(;;){if(d===e)break t;if(f===n&&++u===i&&(a=s),f===o&&++c===r&&(l=s),(h=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=h}n=a===-1||l===-1?null:{start:a,end:l}}else n=null}n=n||{start:0,end:0}}else n=null;for(Ax={focusedElem:e,selectionRange:n},ov=!1,De=t;De!==null;)if(t=De,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,De=e;else for(;De!==null;){t=De;try{var p=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(p!==null){var m=p.memoizedProps,b=p.memoizedState,_=t.stateNode,y=_.getSnapshotBeforeUpdate(t.elementType===t.type?m:_s(t.type,m),b);_.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var g=t.stateNode.containerInfo;g.nodeType===1?g.textContent="":g.nodeType===9&&g.documentElement&&g.removeChild(g.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(se(163))}}catch(v){ur(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,De=e;break}De=t.return}return p=NA,NA=!1,p}function mp(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&&Vx(t,n,o)}i=i.next}while(i!==r)}}function a_(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 Gx(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 IM(e){var t=e.alternate;t!==null&&(e.alternate=null,IM(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[ea],delete t[Gp],delete t[Rx],delete t[EH],delete t[TH])),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 OM(e){return e.tag===5||e.tag===3||e.tag===4}function DA(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||OM(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 Hx(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=lv));else if(r!==4&&(e=e.child,e!==null))for(Hx(e,t,n),e=e.sibling;e!==null;)Hx(e,t,n),e=e.sibling}function qx(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(qx(e,t,n),e=e.sibling;e!==null;)qx(e,t,n),e=e.sibling}var gi=null,bs=!1;function wl(e,t,n){for(n=n.child;n!==null;)MM(e,t,n),n=n.sibling}function MM(e,t,n){if(la&&typeof la.onCommitFiberUnmount=="function")try{la.onCommitFiberUnmount(J1,n)}catch{}switch(n.tag){case 5:Ni||Gd(n,t);case 6:var r=gi,i=bs;gi=null,wl(e,t,n),gi=r,bs=i,gi!==null&&(bs?(e=gi,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):gi.removeChild(n.stateNode));break;case 18:gi!==null&&(bs?(e=gi,n=n.stateNode,e.nodeType===8?y2(e.parentNode,n):e.nodeType===1&&y2(e,n),Bp(e)):y2(gi,n.stateNode));break;case 4:r=gi,i=bs,gi=n.stateNode.containerInfo,bs=!0,wl(e,t,n),gi=r,bs=i;break;case 0:case 11:case 14:case 15:if(!Ni&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,s=o.destroy;o=o.tag,s!==void 0&&(o&2||o&4)&&Vx(n,t,s),i=i.next}while(i!==r)}wl(e,t,n);break;case 1:if(!Ni&&(Gd(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){ur(n,t,a)}wl(e,t,n);break;case 21:wl(e,t,n);break;case 22:n.mode&1?(Ni=(r=Ni)||n.memoizedState!==null,wl(e,t,n),Ni=r):wl(e,t,n);break;default:wl(e,t,n)}}function LA(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new jH),t.forEach(function(r){var i=ZH.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function ys(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=s),r&=~o}if(r=i,r=vr()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*HH(r/1960))-r,10e?16:e,Ul===null)var r=!1;else{if(e=Ul,Ul=null,Sv=0,Bt&6)throw Error(se(331));var i=Bt;for(Bt|=4,De=e.current;De!==null;){var o=De,s=o.child;if(De.flags&16){var a=o.deletions;if(a!==null){for(var l=0;lvr()-$E?mc(e,0):LE|=n),po(e,t)}function UM(e,t){t===0&&(e.mode&1?(t=oy,oy<<=1,!(oy&130023424)&&(oy=4194304)):t=1);var n=Ki();e=il(e,t),e!==null&&(sm(e,t,n),po(e,n))}function YH(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),UM(e,n)}function ZH(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(se(314))}r!==null&&r.delete(t),UM(e,n)}var jM;jM=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||fo.current)ao=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ao=!1,BH(e,t,n);ao=!!(e.flags&131072)}else ao=!1,Kn&&t.flags&1048576&&H9(t,fv,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;x0(e,t),e=t.pendingProps;var i=Cf(t,Bi.current);nf(t,n),i=RE(null,t,r,e,i,n);var o=IE();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,ho(r)?(o=!0,cv(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,EE(t),i.updater=o_,t.stateNode=i,i._reactInternals=t,Lx(t,r,e,n),t=Bx(null,t,r,!0,o,n)):(t.tag=0,Kn&&o&&vE(t),qi(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(x0(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=eq(r),e=_s(r,e),i){case 0:t=Fx(null,t,r,e,n);break e;case 1:t=IA(null,t,r,e,n);break e;case 11:t=PA(null,t,r,e,n);break e;case 14:t=RA(null,t,r,_s(r.type,e),n);break e}throw Error(se(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),Fx(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),IA(e,t,r,i,n);case 3:e:{if(EM(t),e===null)throw Error(se(387));r=t.pendingProps,o=t.memoizedState,i=o.element,X9(e,t),gv(t,r,null,n);var s=t.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=kf(Error(se(423)),t),t=OA(e,t,r,n,i);break e}else if(r!==i){i=kf(Error(se(424)),t),t=OA(e,t,r,n,i);break e}else for(Po=Ql(t.stateNode.containerInfo.firstChild),Io=t,Kn=!0,ws=null,n=J9(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Ef(),r===i){t=ol(e,t,n);break e}qi(e,t,r,n)}t=t.child}return t;case 5:return eM(t),e===null&&Mx(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,s=i.children,kx(r,i)?s=null:o!==null&&kx(r,o)&&(t.flags|=32),CM(e,t),qi(e,t,s,n),t.child;case 6:return e===null&&Mx(t),null;case 13:return TM(e,t,n);case 4:return TE(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Tf(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:_s(r,i),PA(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,s=i.value,An(hv,r._currentValue),r._currentValue=s,o!==null)if(Ds(o.value,s)){if(o.children===i.children&&!fo.current){t=ol(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var a=o.dependencies;if(a!==null){s=o.child;for(var l=a.firstContext;l!==null;){if(l.context===r){if(o.tag===1){l=Xa(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?l.next=l:(l.next=c.next,c.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Nx(o.return,n,t),a.lanes|=n;break}l=l.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(se(341));s.lanes|=n,a=s.alternate,a!==null&&(a.lanes|=n),Nx(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}qi(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,nf(t,n),i=es(i),r=r(i),t.flags|=1,qi(e,t,r,n),t.child;case 14:return r=t.type,i=_s(r,t.pendingProps),i=_s(r.type,i),RA(e,t,r,i,n);case 15:return wM(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:_s(r,i),x0(e,t),t.tag=1,ho(r)?(e=!0,cv(t)):e=!1,nf(t,n),Y9(t,r,i),Lx(t,r,i,n),Bx(null,t,r,!0,e,n);case 19:return AM(e,t,n);case 22:return xM(e,t,n)}throw Error(se(156,t.tag))};function VM(e,t){return g9(e,t)}function JH(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 Yo(e,t,n,r){return new JH(e,t,n,r)}function UE(e){return e=e.prototype,!(!e||!e.isReactComponent)}function eq(e){if(typeof e=="function")return UE(e)?1:0;if(e!=null){if(e=e.$$typeof,e===sE)return 11;if(e===aE)return 14}return 2}function eu(e,t){var n=e.alternate;return n===null?(n=Yo(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 T0(e,t,n,r,i,o){var s=2;if(r=e,typeof e=="function")UE(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case Dd:return yc(n.children,i,o,t);case oE:s=8,i|=8;break;case sx:return e=Yo(12,n,t,i|2),e.elementType=sx,e.lanes=o,e;case ax:return e=Yo(13,n,t,i),e.elementType=ax,e.lanes=o,e;case lx:return e=Yo(19,n,t,i),e.elementType=lx,e.lanes=o,e;case ZO:return u_(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case QO:s=10;break e;case YO:s=9;break e;case sE:s=11;break e;case aE:s=14;break e;case Pl:s=16,r=null;break e}throw Error(se(130,e==null?e:typeof e,""))}return t=Yo(s,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function yc(e,t,n,r){return e=Yo(7,e,r,t),e.lanes=n,e}function u_(e,t,n,r){return e=Yo(22,e,r,t),e.elementType=ZO,e.lanes=n,e.stateNode={isHidden:!1},e}function E2(e,t,n){return e=Yo(6,e,null,t),e.lanes=n,e}function T2(e,t,n){return t=Yo(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function tq(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=s2(0),this.expirationTimes=s2(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=s2(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function jE(e,t,n,r,i,o,s,a,l){return e=new tq(e,t,n,a,l),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Yo(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},EE(o),e}function nq(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(WM)}catch(e){console.error(e)}}WM(),HO.exports=$o;var Cs=HO.exports;const y6e=Uc(Cs);var GA=Cs;ix.createRoot=GA.createRoot,ix.hydrateRoot=GA.hydrateRoot;const aq="modulepreload",lq=function(e,t){return new URL(e,t).href},HA={},KM=function(t,n,r){if(!n||n.length===0)return t();const i=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=lq(o,r),o in HA)return;HA[o]=!0;const s=o.endsWith(".css"),a=s?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const d=i[c];if(d.href===o&&(!s||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${a}`))return;const u=document.createElement("link");if(u.rel=s?"stylesheet":aq,s||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),s)return new Promise((c,d)=>{u.addEventListener("load",c),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o})};function ni(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:p_(e)?2:g_(e)?3:0}function tu(e,t){return du(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function A0(e,t){return du(e)===2?e.get(t):e[t]}function XM(e,t,n){var r=du(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function QM(e,t){return e===t?e!==0||1/e==1/t:e!=e&&t!=t}function p_(e){return pq&&e instanceof Map}function g_(e){return gq&&e instanceof Set}function Xr(e){return e.o||e.t}function WE(e){if(Array.isArray(e))return Array.prototype.slice.call(e);var t=ZM(e);delete t[yt];for(var n=sf(t),r=0;r1&&(e.set=e.add=e.clear=e.delete=uq),Object.freeze(e),t&&sl(e,function(n,r){return cm(r,!0)},!0)),e}function uq(){ni(2)}function KE(e){return e==null||typeof e!="object"||Object.isFrozen(e)}function ca(e){var t=Zx[e];return t||ni(18,e),t}function XE(e,t){Zx[e]||(Zx[e]=t)}function Yp(){return Jp}function A2(e,t){t&&(ca("Patches"),e.u=[],e.s=[],e.v=t)}function Cv(e){Yx(e),e.p.forEach(cq),e.p=null}function Yx(e){e===Jp&&(Jp=e.l)}function qA(e){return Jp={p:[],l:Jp,h:e,m:!0,_:0}}function cq(e){var t=e[yt];t.i===0||t.i===1?t.j():t.g=!0}function k2(e,t){t._=t.p.length;var n=t.p[0],r=e!==void 0&&e!==n;return t.h.O||ca("ES5").S(t,e,r),r?(n[yt].P&&(Cv(t),ni(4)),go(e)&&(e=Ev(t,e),t.l||Tv(t,e)),t.u&&ca("Patches").M(n[yt].t,e,t.u,t.s)):e=Ev(t,n,[]),Cv(t),t.u&&t.v(t.u,t.s),e!==y_?e:void 0}function Ev(e,t,n){if(KE(t))return t;var r=t[yt];if(!r)return sl(t,function(a,l){return WA(e,r,t,a,l,n)},!0),t;if(r.A!==e)return t;if(!r.P)return Tv(e,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var i=r.i===4||r.i===5?r.o=WE(r.k):r.o,o=i,s=!1;r.i===3&&(o=new Set(i),i.clear(),s=!0),sl(o,function(a,l){return WA(e,r,i,a,l,n,s)}),Tv(e,i,!1),n&&e.u&&ca("Patches").N(r,n,e.u,e.s)}return r.o}function WA(e,t,n,r,i,o,s){if(Xi(i)){var a=Ev(e,i,o&&t&&t.i!==3&&!tu(t.R,r)?o.concat(r):void 0);if(XM(n,r,a),!Xi(a))return;e.m=!1}else s&&n.add(i);if(go(i)&&!KE(i)){if(!e.h.D&&e._<1)return;Ev(e,i),t&&t.A.l||Tv(e,i)}}function Tv(e,t,n){n===void 0&&(n=!1),!e.l&&e.h.D&&e.m&&cm(t,n)}function P2(e,t){var n=e[yt];return(n?Xr(n):e)[t]}function KA(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 so(e){e.P||(e.P=!0,e.l&&so(e.l))}function R2(e){e.o||(e.o=WE(e.t))}function Zp(e,t,n){var r=p_(t)?ca("MapSet").F(t,n):g_(t)?ca("MapSet").T(t,n):e.O?function(i,o){var s=Array.isArray(i),a={i:s?1:0,A:o?o.A:Yp(),P:!1,I:!1,R:{},l:o,t:i,k:null,o:null,j:null,C:!1},l=a,u=eg;s&&(l=[a],u=np);var c=Proxy.revocable(l,u),d=c.revoke,f=c.proxy;return a.k=f,a.j=d,f}(t,n):ca("ES5").J(t,n);return(n?n.A:Yp()).p.push(r),r}function m_(e){return Xi(e)||ni(22,e),function t(n){if(!go(n))return n;var r,i=n[yt],o=du(n);if(i){if(!i.P&&(i.i<4||!ca("ES5").K(i)))return i.t;i.I=!0,r=XA(n,o),i.I=!1}else r=XA(n,o);return sl(r,function(s,a){i&&A0(i.t,s)===a||XM(r,s,t(a))}),o===3?new Set(r):r}(e)}function XA(e,t){switch(t){case 2:return new Map(e);case 3:return Array.from(e)}return WE(e)}function QE(){function e(o,s){var a=i[o];return a?a.enumerable=s:i[o]=a={configurable:!0,enumerable:s,get:function(){var l=this[yt];return eg.get(l,o)},set:function(l){var u=this[yt];eg.set(u,o,l)}},a}function t(o){for(var s=o.length-1;s>=0;s--){var a=o[s][yt];if(!a.P)switch(a.i){case 5:r(a)&&so(a);break;case 4:n(a)&&so(a)}}}function n(o){for(var s=o.t,a=o.k,l=sf(a),u=l.length-1;u>=0;u--){var c=l[u];if(c!==yt){var d=s[c];if(d===void 0&&!tu(s,c))return!0;var f=a[c],h=f&&f[yt];if(h?h.t!==d:!QM(f,d))return!0}}var p=!!s[yt];return l.length!==sf(s).length+(p?0:1)}function r(o){var s=o.k;if(s.length!==o.t.length)return!0;var a=Object.getOwnPropertyDescriptor(s,s.length-1);if(a&&!a.get)return!0;for(var l=0;l1?_-1:0),g=1;g<_;g++)y[g-1]=arguments[g];return l.produce(m,function(v){var S;return(S=o).call.apply(S,[b,v].concat(y))})}}var u;if(typeof o!="function"&&ni(6),s!==void 0&&typeof s!="function"&&ni(7),go(i)){var c=qA(r),d=Zp(r,i,void 0),f=!0;try{u=o(d),f=!1}finally{f?Cv(c):Yx(c)}return typeof Promise<"u"&&u instanceof Promise?u.then(function(m){return A2(c,s),k2(m,c)},function(m){throw Cv(c),m}):(A2(c,s),k2(u,c))}if(!i||typeof i!="object"){if((u=o(i))===void 0&&(u=i),u===y_&&(u=void 0),r.D&&cm(u,!0),s){var h=[],p=[];ca("Patches").M(i,u,h,p),s(h,p)}return u}ni(21,i)},this.produceWithPatches=function(i,o){if(typeof i=="function")return function(u){for(var c=arguments.length,d=Array(c>1?c-1:0),f=1;f=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 s=ca("Patches").$;return Xi(n)?s(n,r):this.produce(n,function(a){return s(a,r)})},e}(),No=new JM,eN=No.produce,JE=No.produceWithPatches.bind(No),yq=No.setAutoFreeze.bind(No),vq=No.setUseProxies.bind(No),Jx=No.applyPatches.bind(No),_q=No.createDraft.bind(No),bq=No.finishDraft.bind(No);const ku=eN,Sq=Object.freeze(Object.defineProperty({__proto__:null,Immer:JM,applyPatches:Jx,castDraft:fq,castImmutable:hq,createDraft:_q,current:m_,default:ku,enableAllPlugins:dq,enableES5:QE,enableMapSet:YM,enablePatches:YE,finishDraft:bq,freeze:cm,immerable:of,isDraft:Xi,isDraftable:go,nothing:y_,original:qE,produce:eN,produceWithPatches:JE,setAutoFreeze:yq,setUseProxies:vq},Symbol.toStringTag,{value:"Module"}));function tg(e){"@babel/helpers - typeof";return tg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},tg(e)}function wq(e,t){if(tg(e)!=="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(tg(r)!=="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function xq(e){var t=wq(e,"string");return tg(t)==="symbol"?t:String(t)}function Cq(e,t,n){return t=xq(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ZA(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 JA(e){for(var t=1;t"u"&&(n=t,t=void 0),typeof n<"u"){if(typeof n!="function")throw new Error(mi(1));return n(dm)(e,t)}if(typeof e!="function")throw new Error(mi(2));var i=e,o=t,s=[],a=s,l=!1;function u(){a===s&&(a=s.slice())}function c(){if(l)throw new Error(mi(3));return o}function d(m){if(typeof m!="function")throw new Error(mi(4));if(l)throw new Error(mi(5));var b=!0;return u(),a.push(m),function(){if(b){if(l)throw new Error(mi(6));b=!1,u();var y=a.indexOf(m);a.splice(y,1),s=null}}}function f(m){if(!Eq(m))throw new Error(mi(7));if(typeof m.type>"u")throw new Error(mi(8));if(l)throw new Error(mi(9));try{l=!0,o=i(o,m)}finally{l=!1}for(var b=s=a,_=0;_"u")throw new Error(mi(12));if(typeof n(void 0,{type:Rf.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(mi(13))})}function rh(e){for(var t=Object.keys(e),n={},r=0;r"u")throw u&&u.type,new Error(mi(14));d[h]=b,c=c||b!==m}return c=c||o.length!==Object.keys(l).length,c?d:l}}function tk(e,t){return function(){return t(e.apply(this,arguments))}}function nN(e,t){if(typeof e=="function")return tk(e,t);if(typeof e!="object"||e===null)throw new Error(mi(16));var n={};for(var r in e){var i=e[r];typeof i=="function"&&(n[r]=tk(i,t))}return n}function If(){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 Av}function i(a,l){r(a)===Av&&(n.unshift({key:a,value:l}),n.length>e&&n.pop())}function o(){return n}function s(){n=[]}return{get:r,put:i,getEntries:o,clear:s}}var rN=function(t,n){return t===n};function Rq(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]",value:e};if(typeof e!="object"||e===null||o!=null&&o.has(e))return!1;for(var a=r!=null?r(e):Object.entries(e),l=i.length>0,u=function(b,_){var y=t?t+"."+b:b;if(l){var g=i.some(function(v){return v instanceof RegExp?v.test(y):y===v});if(g)return"continue"}if(!n(_))return{value:{keyPath:y,value:_}};if(typeof _=="object"&&(s=dN(_,y,n,r,i,o),s))return{value:s}},c=0,d=a;c-1}function Wq(e){return""+e}function mN(e){var t={},n=[],r,i={addCase:function(o,s){var a=typeof o=="string"?o:o.type;if(a in t)throw new Error("addCase cannot be called with two reducers for the same action type");return t[a]=s,i},addMatcher:function(o,s){return n.push({matcher:o,reducer:s}),i},addDefaultCase:function(o){return r=o,i}};return e(i),[t,n,r]}function Kq(e){return typeof e=="function"}function yN(e,t,n,r){n===void 0&&(n=[]);var i=typeof t=="function"?mN(t):[t,n,r],o=i[0],s=i[1],a=i[2],l;if(Kq(e))l=function(){return eC(e())};else{var u=eC(e);l=function(){return u}}function c(d,f){d===void 0&&(d=l());var h=fu([o[f.type]],s.filter(function(p){var m=p.matcher;return m(f)}).map(function(p){var m=p.reducer;return m}));return h.filter(function(p){return!!p}).length===0&&(h=[a]),h.reduce(function(p,m){if(m)if(Xi(p)){var b=p,_=m(b,f);return _===void 0?p:_}else{if(go(p))return ku(p,function(y){return m(y,f)});var _=m(p,f);if(_===void 0){if(p===null)return p;throw Error("A case reducer on a non-draftable value must not return undefined")}return _}return p},d)}return c.getInitialState=l,c}function Xq(e,t){return e+"/"+t}function nr(e){var t=e.name;if(!t)throw new Error("`name` is a required option for createSlice");typeof process<"u";var n=typeof e.initialState=="function"?e.initialState:eC(e.initialState),r=e.reducers||{},i=Object.keys(r),o={},s={},a={};i.forEach(function(c){var d=r[c],f=Xq(t,c),h,p;"reducer"in d?(h=d.reducer,p=d.prepare):h=d,o[c]=h,s[f]=h,a[c]=p?Le(f,p):Le(f)});function l(){var c=typeof e.extraReducers=="function"?mN(e.extraReducers):[e.extraReducers],d=c[0],f=d===void 0?{}:d,h=c[1],p=h===void 0?[]:h,m=c[2],b=m===void 0?void 0:m,_=lo(lo({},f),s);return yN(n,function(y){for(var g in _)y.addCase(g,_[g]);for(var v=0,S=p;v0;if(y){var g=p.filter(function(v){return u(b,v,m)}).length>0;g&&(m.ids=Object.keys(m.entities))}}function f(p,m){return h([p],m)}function h(p,m){var b=vN(p,e,m),_=b[0],y=b[1];d(y,m),n(_,m)}return{removeAll:Jq(l),addOne:mr(t),addMany:mr(n),setOne:mr(r),setMany:mr(i),setAll:mr(o),updateOne:mr(c),updateMany:mr(d),upsertOne:mr(f),upsertMany:mr(h),removeOne:mr(s),removeMany:mr(a)}}function eW(e,t){var n=_N(e),r=n.removeOne,i=n.removeMany,o=n.removeAll;function s(y,g){return a([y],g)}function a(y,g){y=vc(y);var v=y.filter(function(S){return!(_p(S,e)in g.entities)});v.length!==0&&b(v,g)}function l(y,g){return u([y],g)}function u(y,g){y=vc(y),y.length!==0&&b(y,g)}function c(y,g){y=vc(y),g.entities={},g.ids=[],a(y,g)}function d(y,g){return f([y],g)}function f(y,g){for(var v=!1,S=0,w=y;S-1;return n&&r}function pm(e){return typeof e[0]=="function"&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function b_(){for(var e=[],t=0;t0)for(var g=h.getState(),v=Array.from(n.values()),S=0,w=v;SMath.floor(e/t)*t,xs=(e,t)=>Math.round(e/t)*t;var _W=typeof global=="object"&&global&&global.Object===Object&&global;const $N=_W;var bW=typeof self=="object"&&self&&self.Object===Object&&self,SW=$N||bW||Function("return this")();const wa=SW;var wW=wa.Symbol;const ns=wW;var FN=Object.prototype,xW=FN.hasOwnProperty,CW=FN.toString,Oh=ns?ns.toStringTag:void 0;function EW(e){var t=xW.call(e,Oh),n=e[Oh];try{e[Oh]=void 0;var r=!0}catch{}var i=CW.call(e);return r&&(t?e[Oh]=n:delete e[Oh]),i}var TW=Object.prototype,AW=TW.toString;function kW(e){return AW.call(e)}var PW="[object Null]",RW="[object Undefined]",uk=ns?ns.toStringTag:void 0;function Bs(e){return e==null?e===void 0?RW:PW:uk&&uk in Object(e)?EW(e):kW(e)}function mo(e){return e!=null&&typeof e=="object"}var IW="[object Symbol]";function S_(e){return typeof e=="symbol"||mo(e)&&Bs(e)==IW}function i5(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=dK)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function gK(e){return function(){return e}}var mK=function(){try{var e=Hc(Object,"defineProperty");return e({},"",{}),e}catch{}}();const Ov=mK;var yK=Ov?function(e,t){return Ov(e,"toString",{configurable:!0,enumerable:!1,value:gK(t),writable:!0})}:w_;const vK=yK;var _K=pK(vK);const jN=_K;function VN(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}var EK=9007199254740991,TK=/^(?:0|[1-9]\d*)$/;function s5(e,t){var n=typeof e;return t=t??EK,!!t&&(n=="number"||n!="symbol"&&TK.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=PK}function qc(e){return e!=null&&a5(e.length)&&!o5(e)}function WN(e,t,n){if(!zi(n))return!1;var r=typeof t;return(r=="number"?qc(n)&&s5(t,n.length):r=="string"&&t in n)?vm(n[t],e):!1}function KN(e){return qN(function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=e.length>3&&typeof o=="function"?(i--,o):void 0,s&&WN(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r-1}function GX(e,t){var n=this.__data__,r=E_(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function hl(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t0&&n(a)?t>1?t7(a,t-1,n,r,i):h5(i,a):r||(i[i.length]=a)}return i}function aQ(e){var t=e==null?0:e.length;return t?t7(e,1):[]}function lQ(e){return jN(HN(e,void 0,aQ),e+"")}var uQ=JN(Object.getPrototypeOf,Object);const p5=uQ;var cQ="[object Object]",dQ=Function.prototype,fQ=Object.prototype,n7=dQ.toString,hQ=fQ.hasOwnProperty,pQ=n7.call(Object);function r7(e){if(!mo(e)||Bs(e)!=cQ)return!1;var t=p5(e);if(t===null)return!0;var n=hQ.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&n7.call(n)==pQ}function i7(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r=r?e:i7(e,t,n)}var gQ="\\ud800-\\udfff",mQ="\\u0300-\\u036f",yQ="\\ufe20-\\ufe2f",vQ="\\u20d0-\\u20ff",_Q=mQ+yQ+vQ,bQ="\\ufe0e\\ufe0f",SQ="\\u200d",wQ=RegExp("["+SQ+gQ+_Q+bQ+"]");function k_(e){return wQ.test(e)}function xQ(e){return e.split("")}var s7="\\ud800-\\udfff",CQ="\\u0300-\\u036f",EQ="\\ufe20-\\ufe2f",TQ="\\u20d0-\\u20ff",AQ=CQ+EQ+TQ,kQ="\\ufe0e\\ufe0f",PQ="["+s7+"]",iC="["+AQ+"]",oC="\\ud83c[\\udffb-\\udfff]",RQ="(?:"+iC+"|"+oC+")",a7="[^"+s7+"]",l7="(?:\\ud83c[\\udde6-\\uddff]){2}",u7="[\\ud800-\\udbff][\\udc00-\\udfff]",IQ="\\u200d",c7=RQ+"?",d7="["+kQ+"]?",OQ="(?:"+IQ+"(?:"+[a7,l7,u7].join("|")+")"+d7+c7+")*",MQ=d7+c7+OQ,NQ="(?:"+[a7+iC+"?",iC,l7,u7,PQ].join("|")+")",DQ=RegExp(oC+"(?="+oC+")|"+NQ+MQ,"g");function LQ(e){return e.match(DQ)||[]}function f7(e){return k_(e)?LQ(e):xQ(e)}function $Q(e){return function(t){t=Mf(t);var n=k_(t)?f7(t):void 0,r=n?n[0]:t.charAt(0),i=n?o7(n,1).join(""):t.slice(1);return r[e]()+i}}var FQ=$Q("toUpperCase");const h7=FQ;function p7(e,t,n,r){var i=-1,o=e==null?0:e.length;for(r&&o&&(n=e[++i]);++i=t?e:t)),e}function jl(e,t,n){return n===void 0&&(n=t,t=void 0),n!==void 0&&(n=P0(n),n=n===n?n:0),t!==void 0&&(t=P0(t),t=t===t?t:0),kY(P0(e),t,n)}function PY(){this.__data__=new hl,this.size=0}function RY(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function IY(e){return this.__data__.get(e)}function OY(e){return this.__data__.has(e)}var MY=200;function NY(e,t){var n=this.__data__;if(n instanceof hl){var r=n.__data__;if(!og||r.lengtha))return!1;var u=o.get(e),c=o.get(t);if(u&&c)return u==t&&c==e;var d=-1,f=!0,h=n&pJ?new sg:void 0;for(o.set(e,t),o.set(t,e);++d1),o}),ih(e,N7(e),n),r&&(n=Sp(n,Oee|Mee|Nee,Iee));for(var i=t.length;i--;)Q7(n,t[i]);return n});const I_=Dee;var Lee=H7("length");const $ee=Lee;var Y7="\\ud800-\\udfff",Fee="\\u0300-\\u036f",Bee="\\ufe20-\\ufe2f",zee="\\u20d0-\\u20ff",Uee=Fee+Bee+zee,jee="\\ufe0e\\ufe0f",Vee="["+Y7+"]",dC="["+Uee+"]",fC="\\ud83c[\\udffb-\\udfff]",Gee="(?:"+dC+"|"+fC+")",Z7="[^"+Y7+"]",J7="(?:\\ud83c[\\udde6-\\uddff]){2}",eD="[\\ud800-\\udbff][\\udc00-\\udfff]",Hee="\\u200d",tD=Gee+"?",nD="["+jee+"]?",qee="(?:"+Hee+"(?:"+[Z7,J7,eD].join("|")+")"+nD+tD+")*",Wee=nD+tD+qee,Kee="(?:"+[Z7+dC+"?",dC,J7,eD,Vee].join("|")+")",Gk=RegExp(fC+"(?="+fC+")|"+Kee+Wee,"g");function Xee(e){for(var t=Gk.lastIndex=0;Gk.test(e);)++t;return t}function rD(e){return k_(e)?Xee(e):$ee(e)}function Qee(e,t,n,r,i){return i(e,function(o,s,a){n=r?(r=!1,o):t(n,o,s,a)}),n}function hC(e,t,n){var r=Ir(e)?p7:Qee,i=arguments.length<3;return r(e,oh(t),n,i,sh)}var Yee="[object Map]",Zee="[object Set]";function O_(e){if(e==null)return 0;if(qc(e))return K7(e)?rD(e):e.length;var t=Nf(e);return t==Yee||t==Zee?e.size:e7(e).length}function Jee(e,t){var n;return sh(e,function(r,i,o){return n=t(r,i,o),!n}),!!n}function wp(e,t,n){var r=Ir(e)?z7:Jee;return n&&WN(e,t,n)&&(t=void 0),r(e,oh(t))}var ete=AY(function(e,t,n){return e+(n?" ":"")+h7(t)});const tte=ete;var nte=30,rte="...",ite=/\w*$/;function $2(e,t){var n=nte,r=rte;if(zi(t)){var i="separator"in t?t.separator:i;n="length"in t?BN(t.length):n,r="omission"in t?Iv(t.omission):r}e=Mf(e);var o=e.length;if(k_(e)){var s=f7(e);o=s.length}if(n>=o)return e;var a=n-rD(r);if(a<1)return r;var l=s?o7(s,0,a).join(""):e.slice(0,a);if(i===void 0)return l+r;if(s&&(a+=l.length-a),Aee(i)){if(e.slice(a).search(i)){var u,c=l;for(i.global||(i=RegExp(i.source,Mf(ite.exec(i))+"g")),i.lastIndex=0;u=i.exec(c);)var d=u.index;l=l.slice(0,d===void 0?a:d)}}else if(e.indexOf(Iv(i),a)!=a){var f=l.lastIndexOf(i);f>-1&&(l=l.slice(0,f))}return l+r}var ote=1/0,ste=cf&&1/y5(new cf([,-0]))[1]==ote?function(e){return new cf(e)}:cK;const ate=ste;var lte=200;function ute(e,t,n){var r=-1,i=CK,o=e.length,s=!0,a=[],l=a;if(n)s=!1,i=dee;else if(o>=lte){var u=t?null:ate(e);if(u)return y5(u);s=!1,i=U7,l=new sg}else l=t?[]:a;e:for(;++r{Ree(e,t.payload)}}}),{configChanged:dte}=oD.actions,fte=oD.reducer,v6e={any:"Any","sd-1":"Stable Diffusion 1.x","sd-2":"Stable Diffusion 2.x",sdxl:"Stable Diffusion XL","sdxl-refiner":"Stable Diffusion XL Refiner"},_6e={any:"Any","sd-1":"SD1","sd-2":"SD2",sdxl:"SDXL","sdxl-refiner":"SDXLR"},hte={any:{maxClip:0,markers:[]},"sd-1":{maxClip:12,markers:[0,1,2,3,4,8,12]},"sd-2":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},sdxl:{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]},"sdxl-refiner":{maxClip:24,markers:[0,1,2,3,5,10,15,20,24]}},b6e={lycoris:"LyCORIS",diffusers:"Diffusers"},S6e=0,pte=4294967295;var Vt;(function(e){e.assertEqual=i=>i;function t(i){}e.assertIs=t;function n(i){throw new Error}e.assertNever=n,e.arrayToEnum=i=>{const o={};for(const s of i)o[s]=s;return o},e.getValidEnumValues=i=>{const o=e.objectKeys(i).filter(a=>typeof i[i[a]]!="number"),s={};for(const a of o)s[a]=i[a];return e.objectValues(s)},e.objectValues=i=>e.objectKeys(i).map(function(o){return i[o]}),e.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const o=[];for(const s in i)Object.prototype.hasOwnProperty.call(i,s)&&o.push(s);return o},e.find=(i,o)=>{for(const s of i)if(o(s))return s},e.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&isFinite(i)&&Math.floor(i)===i;function r(i,o=" | "){return i.map(s=>typeof s=="string"?`'${s}'`:s).join(o)}e.joinValues=r,e.jsonStringifyReplacer=(i,o)=>typeof o=="bigint"?o.toString():o})(Vt||(Vt={}));var pC;(function(e){e.mergeShapes=(t,n)=>({...t,...n})})(pC||(pC={}));const Ie=Vt.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),$l=e=>{switch(typeof e){case"undefined":return Ie.undefined;case"string":return Ie.string;case"number":return isNaN(e)?Ie.nan:Ie.number;case"boolean":return Ie.boolean;case"function":return Ie.function;case"bigint":return Ie.bigint;case"symbol":return Ie.symbol;case"object":return Array.isArray(e)?Ie.array:e===null?Ie.null:e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?Ie.promise:typeof Map<"u"&&e instanceof Map?Ie.map:typeof Set<"u"&&e instanceof Set?Ie.set:typeof Date<"u"&&e instanceof Date?Ie.date:Ie.object;default:return Ie.unknown}},de=Vt.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),gte=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class Os extends Error{constructor(t){super(),this.issues=[],this.addIssue=r=>{this.issues=[...this.issues,r]},this.addIssues=(r=[])=>{this.issues=[...this.issues,...r]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const n=t||function(o){return o.message},r={_errors:[]},i=o=>{for(const s of o.issues)if(s.code==="invalid_union")s.unionErrors.map(i);else if(s.code==="invalid_return_type")i(s.returnTypeError);else if(s.code==="invalid_arguments")i(s.argumentsError);else if(s.path.length===0)r._errors.push(n(s));else{let a=r,l=0;for(;ln.message){const n={},r=[];for(const i of this.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}get formErrors(){return this.flatten()}}Os.create=e=>new Os(e);const ag=(e,t)=>{let n;switch(e.code){case de.invalid_type:e.received===Ie.undefined?n="Required":n=`Expected ${e.expected}, received ${e.received}`;break;case de.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,Vt.jsonStringifyReplacer)}`;break;case de.unrecognized_keys:n=`Unrecognized key(s) in object: ${Vt.joinValues(e.keys,", ")}`;break;case de.invalid_union:n="Invalid input";break;case de.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${Vt.joinValues(e.options)}`;break;case de.invalid_enum_value:n=`Invalid enum value. Expected ${Vt.joinValues(e.options)}, received '${e.received}'`;break;case de.invalid_arguments:n="Invalid function arguments";break;case de.invalid_return_type:n="Invalid function return type";break;case de.invalid_date:n="Invalid date";break;case de.invalid_string:typeof e.validation=="object"?"includes"in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:Vt.assertNever(e.validation):e.validation!=="regex"?n=`Invalid ${e.validation}`:n="Invalid";break;case de.too_small:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:n="Invalid input";break;case de.too_big:e.type==="array"?n=`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:e.type==="string"?n=`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:e.type==="number"?n=`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="bigint"?n=`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:e.type==="date"?n=`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:n="Invalid input";break;case de.custom:n="Invalid input";break;case de.invalid_intersection_types:n="Intersection results could not be merged";break;case de.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case de.not_finite:n="Number must be finite";break;default:n=t.defaultError,Vt.assertNever(e)}return{message:n}};let sD=ag;function mte(e){sD=e}function Dv(){return sD}const Lv=e=>{const{data:t,path:n,errorMaps:r,issueData:i}=e,o=[...n,...i.path||[]],s={...i,path:o};let a="";const l=r.filter(u=>!!u).slice().reverse();for(const u of l)a=u(s,{data:t,defaultError:a}).message;return{...i,path:o,message:i.message||a}},yte=[];function Me(e,t){const n=Lv({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,Dv(),ag].filter(r=>!!r)});e.common.issues.push(n)}class Ui{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(t,n){const r=[];for(const i of n){if(i.status==="aborted")return ft;i.status==="dirty"&&t.dirty(),r.push(i.value)}return{status:t.value,value:r}}static async mergeObjectAsync(t,n){const r=[];for(const i of n)r.push({key:await i.key,value:await i.value});return Ui.mergeObjectSync(t,r)}static mergeObjectSync(t,n){const r={};for(const i of n){const{key:o,value:s}=i;if(o.status==="aborted"||s.status==="aborted")return ft;o.status==="dirty"&&t.dirty(),s.status==="dirty"&&t.dirty(),o.value!=="__proto__"&&(typeof s.value<"u"||i.alwaysSet)&&(r[o.value]=s.value)}return{status:t.value,value:r}}}const ft=Object.freeze({status:"aborted"}),aD=e=>({status:"dirty",value:e}),Qi=e=>({status:"valid",value:e}),gC=e=>e.status==="aborted",mC=e=>e.status==="dirty",lg=e=>e.status==="valid",$v=e=>typeof Promise<"u"&&e instanceof Promise;var et;(function(e){e.errToObj=t=>typeof t=="string"?{message:t}:t||{},e.toString=t=>typeof t=="string"?t:t==null?void 0:t.message})(et||(et={}));class ya{constructor(t,n,r,i){this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=i}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const qk=(e,t)=>{if(lg(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new Os(e.common.issues);return this._error=n,this._error}}};function vt(e){if(!e)return{};const{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(s,a)=>s.code!=="invalid_type"?{message:a.defaultError}:typeof a.data>"u"?{message:r??a.defaultError}:{message:n??a.defaultError},description:i}}class wt{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return $l(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:$l(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Ui,ctx:{common:t.parent.common,data:t.data,parsedType:$l(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const n=this._parse(t);if($v(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(t){const n=this._parse(t);return Promise.resolve(n)}parse(t,n){const r=this.safeParse(t,n);if(r.success)return r.data;throw r.error}safeParse(t,n){var r;const i={common:{issues:[],async:(r=n==null?void 0:n.async)!==null&&r!==void 0?r:!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:$l(t)},o=this._parseSync({data:t,path:i.path,parent:i});return qk(i,o)}async parseAsync(t,n){const r=await this.safeParseAsync(t,n);if(r.success)return r.data;throw r.error}async safeParseAsync(t,n){const r={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:$l(t)},i=this._parse({data:t,path:r.path,parent:r}),o=await($v(i)?i:Promise.resolve(i));return qk(r,o)}refine(t,n){const r=i=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(i):n;return this._refinement((i,o)=>{const s=t(i),a=()=>o.addIssue({code:de.custom,...r(i)});return typeof Promise<"u"&&s instanceof Promise?s.then(l=>l?!0:(a(),!1)):s?!0:(a(),!1)})}refinement(t,n){return this._refinement((r,i)=>t(r)?!0:(i.addIssue(typeof n=="function"?n(r,i):n),!1))}_refinement(t){return new $s({schema:this,typeName:it.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return Qa.create(this,this._def)}nullable(){return Ic.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Ms.create(this,this._def)}promise(){return Lf.create(this,this._def)}or(t){return fg.create([this,t],this._def)}and(t){return hg.create(this,t,this._def)}transform(t){return new $s({...vt(this._def),schema:this,typeName:it.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const n=typeof t=="function"?t:()=>t;return new vg({...vt(this._def),innerType:this,defaultValue:n,typeName:it.ZodDefault})}brand(){return new uD({typeName:it.ZodBranded,type:this,...vt(this._def)})}catch(t){const n=typeof t=="function"?t:()=>t;return new Uv({...vt(this._def),innerType:this,catchValue:n,typeName:it.ZodCatch})}describe(t){const n=this.constructor;return new n({...this._def,description:t})}pipe(t){return xm.create(this,t)}readonly(){return Vv.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const vte=/^c[^\s-]{8,}$/i,_te=/^[a-z][a-z0-9]*$/,bte=/[0-9A-HJKMNP-TV-Z]{26}/,Ste=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,wte=/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,xte=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,Cte=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,Ete=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,Tte=e=>e.precision?e.offset?new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}(([+-]\\d{2}(:?\\d{2})?)|Z)$`):new RegExp(`^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{${e.precision}}Z$`):e.precision===0?e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"):e.offset?new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(([+-]\\d{2}(:?\\d{2})?)|Z)$"):new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$");function Ate(e,t){return!!((t==="v4"||!t)&&Cte.test(e)||(t==="v6"||!t)&&Ete.test(e))}class ks extends wt{constructor(){super(...arguments),this._regex=(t,n,r)=>this.refinement(i=>t.test(i),{validation:n,code:de.invalid_string,...et.errToObj(r)}),this.nonempty=t=>this.min(1,et.errToObj(t)),this.trim=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new ks({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==Ie.string){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.string,received:o.parsedType}),ft}const r=new Ui;let i;for(const o of this._def.checks)if(o.kind==="min")t.data.lengtho.value&&(i=this._getOrReturnCtx(t,i),Me(i,{code:de.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),r.dirty());else if(o.kind==="length"){const s=t.data.length>o.value,a=t.data.length"u"?null:t==null?void 0:t.precision,offset:(n=t==null?void 0:t.offset)!==null&&n!==void 0?n:!1,...et.errToObj(t==null?void 0:t.message)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...et.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n==null?void 0:n.position,...et.errToObj(n==null?void 0:n.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...et.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...et.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...et.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...et.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...et.errToObj(n)})}get isDatetime(){return!!this._def.checks.find(t=>t.kind==="datetime")}get isEmail(){return!!this._def.checks.find(t=>t.kind==="email")}get isURL(){return!!this._def.checks.find(t=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find(t=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find(t=>t.kind==="uuid")}get isCUID(){return!!this._def.checks.find(t=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(t=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find(t=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find(t=>t.kind==="ip")}get minLength(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxLength(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new ks({checks:[],typeName:it.ZodString,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...vt(e)})};function kte(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r,o=parseInt(e.toFixed(i).replace(".","")),s=parseInt(t.toFixed(i).replace(".",""));return o%s/Math.pow(10,i)}class gu extends wt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==Ie.number){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.number,received:o.parsedType}),ft}let r;const i=new Ui;for(const o of this._def.checks)o.kind==="int"?Vt.isInteger(t.data)||(r=this._getOrReturnCtx(t,r),Me(r,{code:de.invalid_type,expected:"integer",received:"float",message:o.message}),i.dirty()):o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),i.dirty()):o.kind==="multipleOf"?kte(t.data,o.value)!==0&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):o.kind==="finite"?Number.isFinite(t.data)||(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_finite,message:o.message}),i.dirty()):Vt.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,et.toString(n))}gt(t,n){return this.setLimit("min",t,!1,et.toString(n))}lte(t,n){return this.setLimit("max",t,!0,et.toString(n))}lt(t,n){return this.setLimit("max",t,!1,et.toString(n))}setLimit(t,n,r,i){return new gu({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:et.toString(i)}]})}_addCheck(t){return new gu({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:et.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:et.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:et.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:et.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:et.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:et.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:et.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:et.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:et.toString(t)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuet.kind==="int"||t.kind==="multipleOf"&&Vt.isInteger(t.value))}get isFinite(){let t=null,n=null;for(const r of this._def.checks){if(r.kind==="finite"||r.kind==="int"||r.kind==="multipleOf")return!0;r.kind==="min"?(n===null||r.value>n)&&(n=r.value):r.kind==="max"&&(t===null||r.valuenew gu({checks:[],typeName:it.ZodNumber,coerce:(e==null?void 0:e.coerce)||!1,...vt(e)});class mu extends wt{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==Ie.bigint){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.bigint,received:o.parsedType}),ft}let r;const i=new Ui;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?t.datao.value:t.data>=o.value)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),i.dirty()):o.kind==="multipleOf"?t.data%o.value!==BigInt(0)&&(r=this._getOrReturnCtx(t,r),Me(r,{code:de.not_multiple_of,multipleOf:o.value,message:o.message}),i.dirty()):Vt.assertNever(o);return{status:i.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,et.toString(n))}gt(t,n){return this.setLimit("min",t,!1,et.toString(n))}lte(t,n){return this.setLimit("max",t,!0,et.toString(n))}lt(t,n){return this.setLimit("max",t,!1,et.toString(n))}setLimit(t,n,r,i){return new mu({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:et.toString(i)}]})}_addCheck(t){return new mu({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:et.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:et.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:et.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:et.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:et.toString(n)})}get minValue(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t}get maxValue(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.value{var t;return new mu({checks:[],typeName:it.ZodBigInt,coerce:(t=e==null?void 0:e.coerce)!==null&&t!==void 0?t:!1,...vt(e)})};class ug extends wt{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==Ie.boolean){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.boolean,received:r.parsedType}),ft}return Qi(t.data)}}ug.create=e=>new ug({typeName:it.ZodBoolean,coerce:(e==null?void 0:e.coerce)||!1,...vt(e)});class Pc extends wt{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==Ie.date){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_type,expected:Ie.date,received:o.parsedType}),ft}if(isNaN(t.data.getTime())){const o=this._getOrReturnCtx(t);return Me(o,{code:de.invalid_date}),ft}const r=new Ui;let i;for(const o of this._def.checks)o.kind==="min"?t.data.getTime()o.value&&(i=this._getOrReturnCtx(t,i),Me(i,{code:de.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),r.dirty()):Vt.assertNever(o);return{status:r.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Pc({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:et.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:et.toString(n)})}get minDate(){let t=null;for(const n of this._def.checks)n.kind==="min"&&(t===null||n.value>t)&&(t=n.value);return t!=null?new Date(t):null}get maxDate(){let t=null;for(const n of this._def.checks)n.kind==="max"&&(t===null||n.valuenew Pc({checks:[],coerce:(e==null?void 0:e.coerce)||!1,typeName:it.ZodDate,...vt(e)});class Fv extends wt{_parse(t){if(this._getType(t)!==Ie.symbol){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.symbol,received:r.parsedType}),ft}return Qi(t.data)}}Fv.create=e=>new Fv({typeName:it.ZodSymbol,...vt(e)});class cg extends wt{_parse(t){if(this._getType(t)!==Ie.undefined){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.undefined,received:r.parsedType}),ft}return Qi(t.data)}}cg.create=e=>new cg({typeName:it.ZodUndefined,...vt(e)});class dg extends wt{_parse(t){if(this._getType(t)!==Ie.null){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.null,received:r.parsedType}),ft}return Qi(t.data)}}dg.create=e=>new dg({typeName:it.ZodNull,...vt(e)});class Df extends wt{constructor(){super(...arguments),this._any=!0}_parse(t){return Qi(t.data)}}Df.create=e=>new Df({typeName:it.ZodAny,...vt(e)});class _c extends wt{constructor(){super(...arguments),this._unknown=!0}_parse(t){return Qi(t.data)}}_c.create=e=>new _c({typeName:it.ZodUnknown,...vt(e)});class al extends wt{_parse(t){const n=this._getOrReturnCtx(t);return Me(n,{code:de.invalid_type,expected:Ie.never,received:n.parsedType}),ft}}al.create=e=>new al({typeName:it.ZodNever,...vt(e)});class Bv extends wt{_parse(t){if(this._getType(t)!==Ie.undefined){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.void,received:r.parsedType}),ft}return Qi(t.data)}}Bv.create=e=>new Bv({typeName:it.ZodVoid,...vt(e)});class Ms extends wt{_parse(t){const{ctx:n,status:r}=this._processInputParams(t),i=this._def;if(n.parsedType!==Ie.array)return Me(n,{code:de.invalid_type,expected:Ie.array,received:n.parsedType}),ft;if(i.exactLength!==null){const s=n.data.length>i.exactLength.value,a=n.data.lengthi.maxLength.value&&(Me(n,{code:de.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),r.dirty()),n.common.async)return Promise.all([...n.data].map((s,a)=>i.type._parseAsync(new ya(n,s,n.path,a)))).then(s=>Ui.mergeArray(r,s));const o=[...n.data].map((s,a)=>i.type._parseSync(new ya(n,s,n.path,a)));return Ui.mergeArray(r,o)}get element(){return this._def.type}min(t,n){return new Ms({...this._def,minLength:{value:t,message:et.toString(n)}})}max(t,n){return new Ms({...this._def,maxLength:{value:t,message:et.toString(n)}})}length(t,n){return new Ms({...this._def,exactLength:{value:t,message:et.toString(n)}})}nonempty(t){return this.min(1,t)}}Ms.create=(e,t)=>new Ms({type:e,minLength:null,maxLength:null,exactLength:null,typeName:it.ZodArray,...vt(t)});function kd(e){if(e instanceof er){const t={};for(const n in e.shape){const r=e.shape[n];t[n]=Qa.create(kd(r))}return new er({...e._def,shape:()=>t})}else return e instanceof Ms?new Ms({...e._def,type:kd(e.element)}):e instanceof Qa?Qa.create(kd(e.unwrap())):e instanceof Ic?Ic.create(kd(e.unwrap())):e instanceof va?va.create(e.items.map(t=>kd(t))):e}class er extends wt{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const t=this._def.shape(),n=Vt.objectKeys(t);return this._cached={shape:t,keys:n}}_parse(t){if(this._getType(t)!==Ie.object){const u=this._getOrReturnCtx(t);return Me(u,{code:de.invalid_type,expected:Ie.object,received:u.parsedType}),ft}const{status:r,ctx:i}=this._processInputParams(t),{shape:o,keys:s}=this._getCached(),a=[];if(!(this._def.catchall instanceof al&&this._def.unknownKeys==="strip"))for(const u in i.data)s.includes(u)||a.push(u);const l=[];for(const u of s){const c=o[u],d=i.data[u];l.push({key:{status:"valid",value:u},value:c._parse(new ya(i,d,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof al){const u=this._def.unknownKeys;if(u==="passthrough")for(const c of a)l.push({key:{status:"valid",value:c},value:{status:"valid",value:i.data[c]}});else if(u==="strict")a.length>0&&(Me(i,{code:de.unrecognized_keys,keys:a}),r.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const c of a){const d=i.data[c];l.push({key:{status:"valid",value:c},value:u._parse(new ya(i,d,i.path,c)),alwaysSet:c in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const u=[];for(const c of l){const d=await c.key;u.push({key:d,value:await c.value,alwaysSet:c.alwaysSet})}return u}).then(u=>Ui.mergeObjectSync(r,u)):Ui.mergeObjectSync(r,l)}get shape(){return this._def.shape()}strict(t){return et.errToObj,new er({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,r)=>{var i,o,s,a;const l=(s=(o=(i=this._def).errorMap)===null||o===void 0?void 0:o.call(i,n,r).message)!==null&&s!==void 0?s:r.defaultError;return n.code==="unrecognized_keys"?{message:(a=et.errToObj(t).message)!==null&&a!==void 0?a:l}:{message:l}}}:{}})}strip(){return new er({...this._def,unknownKeys:"strip"})}passthrough(){return new er({...this._def,unknownKeys:"passthrough"})}extend(t){return new er({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new er({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:it.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new er({...this._def,catchall:t})}pick(t){const n={};return Vt.objectKeys(t).forEach(r=>{t[r]&&this.shape[r]&&(n[r]=this.shape[r])}),new er({...this._def,shape:()=>n})}omit(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{t[r]||(n[r]=this.shape[r])}),new er({...this._def,shape:()=>n})}deepPartial(){return kd(this)}partial(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{const i=this.shape[r];t&&!t[r]?n[r]=i:n[r]=i.optional()}),new er({...this._def,shape:()=>n})}required(t){const n={};return Vt.objectKeys(this.shape).forEach(r=>{if(t&&!t[r])n[r]=this.shape[r];else{let o=this.shape[r];for(;o instanceof Qa;)o=o._def.innerType;n[r]=o}}),new er({...this._def,shape:()=>n})}keyof(){return lD(Vt.objectKeys(this.shape))}}er.create=(e,t)=>new er({shape:()=>e,unknownKeys:"strip",catchall:al.create(),typeName:it.ZodObject,...vt(t)});er.strictCreate=(e,t)=>new er({shape:()=>e,unknownKeys:"strict",catchall:al.create(),typeName:it.ZodObject,...vt(t)});er.lazycreate=(e,t)=>new er({shape:e,unknownKeys:"strip",catchall:al.create(),typeName:it.ZodObject,...vt(t)});class fg extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r=this._def.options;function i(o){for(const a of o)if(a.result.status==="valid")return a.result;for(const a of o)if(a.result.status==="dirty")return n.common.issues.push(...a.ctx.common.issues),a.result;const s=o.map(a=>new Os(a.ctx.common.issues));return Me(n,{code:de.invalid_union,unionErrors:s}),ft}if(n.common.async)return Promise.all(r.map(async o=>{const s={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:s}),ctx:s}})).then(i);{let o;const s=[];for(const l of r){const u={...n,common:{...n.common,issues:[]},parent:null},c=l._parseSync({data:n.data,path:n.path,parent:u});if(c.status==="valid")return c;c.status==="dirty"&&!o&&(o={result:c,ctx:u}),u.common.issues.length&&s.push(u.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const a=s.map(l=>new Os(l));return Me(n,{code:de.invalid_union,unionErrors:a}),ft}}get options(){return this._def.options}}fg.create=(e,t)=>new fg({options:e,typeName:it.ZodUnion,...vt(t)});const R0=e=>e instanceof gg?R0(e.schema):e instanceof $s?R0(e.innerType()):e instanceof mg?[e.value]:e instanceof yu?e.options:e instanceof yg?Object.keys(e.enum):e instanceof vg?R0(e._def.innerType):e instanceof cg?[void 0]:e instanceof dg?[null]:null;class M_ extends wt{_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.object)return Me(n,{code:de.invalid_type,expected:Ie.object,received:n.parsedType}),ft;const r=this.discriminator,i=n.data[r],o=this.optionsMap.get(i);return o?n.common.async?o._parseAsync({data:n.data,path:n.path,parent:n}):o._parseSync({data:n.data,path:n.path,parent:n}):(Me(n,{code:de.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ft)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){const i=new Map;for(const o of n){const s=R0(o.shape[t]);if(!s)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const a of s){if(i.has(a))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(a)}`);i.set(a,o)}}return new M_({typeName:it.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...vt(r)})}}function yC(e,t){const n=$l(e),r=$l(t);if(e===t)return{valid:!0,data:e};if(n===Ie.object&&r===Ie.object){const i=Vt.objectKeys(t),o=Vt.objectKeys(e).filter(a=>i.indexOf(a)!==-1),s={...e,...t};for(const a of o){const l=yC(e[a],t[a]);if(!l.valid)return{valid:!1};s[a]=l.data}return{valid:!0,data:s}}else if(n===Ie.array&&r===Ie.array){if(e.length!==t.length)return{valid:!1};const i=[];for(let o=0;o{if(gC(o)||gC(s))return ft;const a=yC(o.value,s.value);return a.valid?((mC(o)||mC(s))&&n.dirty(),{status:n.value,value:a.data}):(Me(r,{code:de.invalid_intersection_types}),ft)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([o,s])=>i(o,s)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}hg.create=(e,t,n)=>new hg({left:e,right:t,typeName:it.ZodIntersection,...vt(n)});class va extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.array)return Me(r,{code:de.invalid_type,expected:Ie.array,received:r.parsedType}),ft;if(r.data.lengththis._def.items.length&&(Me(r,{code:de.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...r.data].map((s,a)=>{const l=this._def.items[a]||this._def.rest;return l?l._parse(new ya(r,s,r.path,a)):null}).filter(s=>!!s);return r.common.async?Promise.all(o).then(s=>Ui.mergeArray(n,s)):Ui.mergeArray(n,o)}get items(){return this._def.items}rest(t){return new va({...this._def,rest:t})}}va.create=(e,t)=>{if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new va({items:e,typeName:it.ZodTuple,rest:null,...vt(t)})};class pg extends wt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.object)return Me(r,{code:de.invalid_type,expected:Ie.object,received:r.parsedType}),ft;const i=[],o=this._def.keyType,s=this._def.valueType;for(const a in r.data)i.push({key:o._parse(new ya(r,a,r.path,a)),value:s._parse(new ya(r,r.data[a],r.path,a))});return r.common.async?Ui.mergeObjectAsync(n,i):Ui.mergeObjectSync(n,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof wt?new pg({keyType:t,valueType:n,typeName:it.ZodRecord,...vt(r)}):new pg({keyType:ks.create(),valueType:t,typeName:it.ZodRecord,...vt(n)})}}class zv extends wt{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.map)return Me(r,{code:de.invalid_type,expected:Ie.map,received:r.parsedType}),ft;const i=this._def.keyType,o=this._def.valueType,s=[...r.data.entries()].map(([a,l],u)=>({key:i._parse(new ya(r,a,r.path,[u,"key"])),value:o._parse(new ya(r,l,r.path,[u,"value"]))}));if(r.common.async){const a=new Map;return Promise.resolve().then(async()=>{for(const l of s){const u=await l.key,c=await l.value;if(u.status==="aborted"||c.status==="aborted")return ft;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}})}else{const a=new Map;for(const l of s){const u=l.key,c=l.value;if(u.status==="aborted"||c.status==="aborted")return ft;(u.status==="dirty"||c.status==="dirty")&&n.dirty(),a.set(u.value,c.value)}return{status:n.value,value:a}}}}zv.create=(e,t,n)=>new zv({valueType:t,keyType:e,typeName:it.ZodMap,...vt(n)});class Rc extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.parsedType!==Ie.set)return Me(r,{code:de.invalid_type,expected:Ie.set,received:r.parsedType}),ft;const i=this._def;i.minSize!==null&&r.data.sizei.maxSize.value&&(Me(r,{code:de.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),n.dirty());const o=this._def.valueType;function s(l){const u=new Set;for(const c of l){if(c.status==="aborted")return ft;c.status==="dirty"&&n.dirty(),u.add(c.value)}return{status:n.value,value:u}}const a=[...r.data.values()].map((l,u)=>o._parse(new ya(r,l,r.path,u)));return r.common.async?Promise.all(a).then(l=>s(l)):s(a)}min(t,n){return new Rc({...this._def,minSize:{value:t,message:et.toString(n)}})}max(t,n){return new Rc({...this._def,maxSize:{value:t,message:et.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}}Rc.create=(e,t)=>new Rc({valueType:e,minSize:null,maxSize:null,typeName:it.ZodSet,...vt(t)});class df extends wt{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.function)return Me(n,{code:de.invalid_type,expected:Ie.function,received:n.parsedType}),ft;function r(a,l){return Lv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Dv(),ag].filter(u=>!!u),issueData:{code:de.invalid_arguments,argumentsError:l}})}function i(a,l){return Lv({data:a,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,Dv(),ag].filter(u=>!!u),issueData:{code:de.invalid_return_type,returnTypeError:l}})}const o={errorMap:n.common.contextualErrorMap},s=n.data;if(this._def.returns instanceof Lf){const a=this;return Qi(async function(...l){const u=new Os([]),c=await a._def.args.parseAsync(l,o).catch(h=>{throw u.addIssue(r(l,h)),u}),d=await Reflect.apply(s,this,c);return await a._def.returns._def.type.parseAsync(d,o).catch(h=>{throw u.addIssue(i(d,h)),u})})}else{const a=this;return Qi(function(...l){const u=a._def.args.safeParse(l,o);if(!u.success)throw new Os([r(l,u.error)]);const c=Reflect.apply(s,this,u.data),d=a._def.returns.safeParse(c,o);if(!d.success)throw new Os([i(c,d.error)]);return d.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new df({...this._def,args:va.create(t).rest(_c.create())})}returns(t){return new df({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,r){return new df({args:t||va.create([]).rest(_c.create()),returns:n||_c.create(),typeName:it.ZodFunction,...vt(r)})}}class gg extends wt{get schema(){return this._def.getter()}_parse(t){const{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}gg.create=(e,t)=>new gg({getter:e,typeName:it.ZodLazy,...vt(t)});class mg extends wt{_parse(t){if(t.data!==this._def.value){const n=this._getOrReturnCtx(t);return Me(n,{received:n.data,code:de.invalid_literal,expected:this._def.value}),ft}return{status:"valid",value:t.data}}get value(){return this._def.value}}mg.create=(e,t)=>new mg({value:e,typeName:it.ZodLiteral,...vt(t)});function lD(e,t){return new yu({values:e,typeName:it.ZodEnum,...vt(t)})}class yu extends wt{_parse(t){if(typeof t.data!="string"){const n=this._getOrReturnCtx(t),r=this._def.values;return Me(n,{expected:Vt.joinValues(r),received:n.parsedType,code:de.invalid_type}),ft}if(this._def.values.indexOf(t.data)===-1){const n=this._getOrReturnCtx(t),r=this._def.values;return Me(n,{received:n.data,code:de.invalid_enum_value,options:r}),ft}return Qi(t.data)}get options(){return this._def.values}get enum(){const t={};for(const n of this._def.values)t[n]=n;return t}get Values(){const t={};for(const n of this._def.values)t[n]=n;return t}get Enum(){const t={};for(const n of this._def.values)t[n]=n;return t}extract(t){return yu.create(t)}exclude(t){return yu.create(this.options.filter(n=>!t.includes(n)))}}yu.create=lD;class yg extends wt{_parse(t){const n=Vt.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==Ie.string&&r.parsedType!==Ie.number){const i=Vt.objectValues(n);return Me(r,{expected:Vt.joinValues(i),received:r.parsedType,code:de.invalid_type}),ft}if(n.indexOf(t.data)===-1){const i=Vt.objectValues(n);return Me(r,{received:r.data,code:de.invalid_enum_value,options:i}),ft}return Qi(t.data)}get enum(){return this._def.values}}yg.create=(e,t)=>new yg({values:e,typeName:it.ZodNativeEnum,...vt(t)});class Lf extends wt{unwrap(){return this._def.type}_parse(t){const{ctx:n}=this._processInputParams(t);if(n.parsedType!==Ie.promise&&n.common.async===!1)return Me(n,{code:de.invalid_type,expected:Ie.promise,received:n.parsedType}),ft;const r=n.parsedType===Ie.promise?n.data:Promise.resolve(n.data);return Qi(r.then(i=>this._def.type.parseAsync(i,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Lf.create=(e,t)=>new Lf({type:e,typeName:it.ZodPromise,...vt(t)});class $s extends wt{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===it.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:n,ctx:r}=this._processInputParams(t),i=this._def.effect||null,o={addIssue:s=>{Me(r,s),s.fatal?n.abort():n.dirty()},get path(){return r.path}};if(o.addIssue=o.addIssue.bind(o),i.type==="preprocess"){const s=i.transform(r.data,o);return r.common.issues.length?{status:"dirty",value:r.data}:r.common.async?Promise.resolve(s).then(a=>this._def.schema._parseAsync({data:a,path:r.path,parent:r})):this._def.schema._parseSync({data:s,path:r.path,parent:r})}if(i.type==="refinement"){const s=a=>{const l=i.refinement(a,o);if(r.common.async)return Promise.resolve(l);if(l instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return a};if(r.common.async===!1){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return a.status==="aborted"?ft:(a.status==="dirty"&&n.dirty(),s(a.value),{status:n.value,value:a.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>a.status==="aborted"?ft:(a.status==="dirty"&&n.dirty(),s(a.value).then(()=>({status:n.value,value:a.value}))))}if(i.type==="transform")if(r.common.async===!1){const s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!lg(s))return s;const a=i.transform(s.value,o);if(a instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:a}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(s=>lg(s)?Promise.resolve(i.transform(s.value,o)).then(a=>({status:n.value,value:a})):s);Vt.assertNever(i)}}$s.create=(e,t,n)=>new $s({schema:e,typeName:it.ZodEffects,effect:t,...vt(n)});$s.createWithPreprocess=(e,t,n)=>new $s({schema:t,effect:{type:"preprocess",transform:e},typeName:it.ZodEffects,...vt(n)});class Qa extends wt{_parse(t){return this._getType(t)===Ie.undefined?Qi(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Qa.create=(e,t)=>new Qa({innerType:e,typeName:it.ZodOptional,...vt(t)});class Ic extends wt{_parse(t){return this._getType(t)===Ie.null?Qi(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}Ic.create=(e,t)=>new Ic({innerType:e,typeName:it.ZodNullable,...vt(t)});class vg extends wt{_parse(t){const{ctx:n}=this._processInputParams(t);let r=n.data;return n.parsedType===Ie.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}vg.create=(e,t)=>new vg({innerType:e,typeName:it.ZodDefault,defaultValue:typeof t.default=="function"?t.default:()=>t.default,...vt(t)});class Uv extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r={...n,common:{...n.common,issues:[]}},i=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return $v(i)?i.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new Os(r.common.issues)},input:r.data})})):{status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new Os(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}Uv.create=(e,t)=>new Uv({innerType:e,typeName:it.ZodCatch,catchValue:typeof t.catch=="function"?t.catch:()=>t.catch,...vt(t)});class jv extends wt{_parse(t){if(this._getType(t)!==Ie.nan){const r=this._getOrReturnCtx(t);return Me(r,{code:de.invalid_type,expected:Ie.nan,received:r.parsedType}),ft}return{status:"valid",value:t.data}}}jv.create=e=>new jv({typeName:it.ZodNaN,...vt(e)});const Pte=Symbol("zod_brand");class uD extends wt{_parse(t){const{ctx:n}=this._processInputParams(t),r=n.data;return this._def.type._parse({data:r,path:n.path,parent:n})}unwrap(){return this._def.type}}class xm extends wt{_parse(t){const{status:n,ctx:r}=this._processInputParams(t);if(r.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?ft:o.status==="dirty"?(n.dirty(),aD(o.value)):this._def.out._parseAsync({data:o.value,path:r.path,parent:r})})();{const i=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return i.status==="aborted"?ft:i.status==="dirty"?(n.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:r.path,parent:r})}}static create(t,n){return new xm({in:t,out:n,typeName:it.ZodPipeline})}}class Vv extends wt{_parse(t){const n=this._def.innerType._parse(t);return lg(n)&&(n.value=Object.freeze(n.value)),n}}Vv.create=(e,t)=>new Vv({innerType:e,typeName:it.ZodReadonly,...vt(t)});const cD=(e,t={},n)=>e?Df.create().superRefine((r,i)=>{var o,s;if(!e(r)){const a=typeof t=="function"?t(r):typeof t=="string"?{message:t}:t,l=(s=(o=a.fatal)!==null&&o!==void 0?o:n)!==null&&s!==void 0?s:!0,u=typeof a=="string"?{message:a}:a;i.addIssue({code:"custom",...u,fatal:l})}}):Df.create(),Rte={object:er.lazycreate};var it;(function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"})(it||(it={}));const Ite=(e,t={message:`Input not instance of ${e.name}`})=>cD(n=>n instanceof e,t),dD=ks.create,fD=gu.create,Ote=jv.create,Mte=mu.create,hD=ug.create,Nte=Pc.create,Dte=Fv.create,Lte=cg.create,$te=dg.create,Fte=Df.create,Bte=_c.create,zte=al.create,Ute=Bv.create,jte=Ms.create,Vte=er.create,Gte=er.strictCreate,Hte=fg.create,qte=M_.create,Wte=hg.create,Kte=va.create,Xte=pg.create,Qte=zv.create,Yte=Rc.create,Zte=df.create,Jte=gg.create,ene=mg.create,tne=yu.create,nne=yg.create,rne=Lf.create,Wk=$s.create,ine=Qa.create,one=Ic.create,sne=$s.createWithPreprocess,ane=xm.create,lne=()=>dD().optional(),une=()=>fD().optional(),cne=()=>hD().optional(),dne={string:e=>ks.create({...e,coerce:!0}),number:e=>gu.create({...e,coerce:!0}),boolean:e=>ug.create({...e,coerce:!0}),bigint:e=>mu.create({...e,coerce:!0}),date:e=>Pc.create({...e,coerce:!0})},fne=ft;var z=Object.freeze({__proto__:null,defaultErrorMap:ag,setErrorMap:mte,getErrorMap:Dv,makeIssue:Lv,EMPTY_PATH:yte,addIssueToContext:Me,ParseStatus:Ui,INVALID:ft,DIRTY:aD,OK:Qi,isAborted:gC,isDirty:mC,isValid:lg,isAsync:$v,get util(){return Vt},get objectUtil(){return pC},ZodParsedType:Ie,getParsedType:$l,ZodType:wt,ZodString:ks,ZodNumber:gu,ZodBigInt:mu,ZodBoolean:ug,ZodDate:Pc,ZodSymbol:Fv,ZodUndefined:cg,ZodNull:dg,ZodAny:Df,ZodUnknown:_c,ZodNever:al,ZodVoid:Bv,ZodArray:Ms,ZodObject:er,ZodUnion:fg,ZodDiscriminatedUnion:M_,ZodIntersection:hg,ZodTuple:va,ZodRecord:pg,ZodMap:zv,ZodSet:Rc,ZodFunction:df,ZodLazy:gg,ZodLiteral:mg,ZodEnum:yu,ZodNativeEnum:yg,ZodPromise:Lf,ZodEffects:$s,ZodTransformer:$s,ZodOptional:Qa,ZodNullable:Ic,ZodDefault:vg,ZodCatch:Uv,ZodNaN:jv,BRAND:Pte,ZodBranded:uD,ZodPipeline:xm,ZodReadonly:Vv,custom:cD,Schema:wt,ZodSchema:wt,late:Rte,get ZodFirstPartyTypeKind(){return it},coerce:dne,any:Fte,array:jte,bigint:Mte,boolean:hD,date:Nte,discriminatedUnion:qte,effect:Wk,enum:tne,function:Zte,instanceof:Ite,intersection:Wte,lazy:Jte,literal:ene,map:Qte,nan:Ote,nativeEnum:nne,never:zte,null:$te,nullable:one,number:fD,object:Vte,oboolean:cne,onumber:une,optional:ine,ostring:lne,pipeline:ane,preprocess:sne,promise:rne,record:Xte,set:Yte,strictObject:Gte,string:dD,symbol:Dte,transformer:Wk,tuple:Kte,undefined:Lte,union:Hte,unknown:Bte,void:Ute,NEVER:fne,ZodIssueCode:de,quotelessJson:gte,ZodError:Os});const hne=z.string(),w6e=e=>hne.safeParse(e).success,pne=z.string(),x6e=e=>pne.safeParse(e).success,gne=z.string(),C6e=e=>gne.safeParse(e).success,mne=z.string(),E6e=e=>mne.safeParse(e).success,yne=z.number().int().min(1),T6e=e=>yne.safeParse(e).success,vne=z.number().min(1),A6e=e=>vne.safeParse(e).success,pD=z.enum(["euler","deis","ddim","ddpm","dpmpp_2s","dpmpp_2m","dpmpp_2m_sde","dpmpp_sde","heun","kdpm_2","lms","pndm","unipc","euler_k","dpmpp_2s_k","dpmpp_2m_k","dpmpp_2m_sde_k","dpmpp_sde_k","heun_k","lms_k","euler_a","kdpm_2_a"]),k6e=e=>pD.safeParse(e).success,P6e={euler:"Euler",deis:"DEIS",ddim:"DDIM",ddpm:"DDPM",dpmpp_sde:"DPM++ SDE",dpmpp_2s:"DPM++ 2S",dpmpp_2m:"DPM++ 2M",dpmpp_2m_sde:"DPM++ 2M SDE",heun:"Heun",kdpm_2:"KDPM 2",lms:"LMS",pndm:"PNDM",unipc:"UniPC",euler_k:"Euler Karras",dpmpp_sde_k:"DPM++ SDE Karras",dpmpp_2s_k:"DPM++ 2S Karras",dpmpp_2m_k:"DPM++ 2M Karras",dpmpp_2m_sde_k:"DPM++ 2M SDE Karras",heun_k:"Heun Karras",lms_k:"LMS Karras",euler_a:"Euler Ancestral",kdpm_2_a:"KDPM 2 Ancestral"},_ne=z.number().int().min(0).max(pte),R6e=e=>_ne.safeParse(e).success,bne=z.number().multipleOf(8).min(64),I6e=e=>bne.safeParse(e).success,Sne=z.number().multipleOf(8).min(64),O6e=e=>Sne.safeParse(e).success,Wc=z.enum(["any","sd-1","sd-2","sdxl","sdxl-refiner"]),N_=z.object({model_name:z.string().min(1),base_model:Wc,model_type:z.literal("main")}),M6e=e=>N_.safeParse(e).success,_5=z.object({model_name:z.string().min(1),base_model:z.literal("sdxl-refiner"),model_type:z.literal("main")}),N6e=e=>_5.safeParse(e).success,gD=z.object({model_name:z.string().min(1),base_model:Wc,model_type:z.literal("onnx")}),Cm=z.union([N_,gD]),wne=z.object({model_name:z.string().min(1),base_model:Wc}),xne=z.object({model_name:z.string().min(1),base_model:Wc}),D6e=e=>xne.safeParse(e).success,L6e=z.object({model_name:z.string().min(1),base_model:Wc}),$6e=z.object({model_name:z.string().min(1),base_model:Wc}),Cne=z.number().min(0).max(1),F6e=e=>Cne.safeParse(e).success;z.enum(["fp16","fp32"]);const Ene=z.number().min(1).max(10),B6e=e=>Ene.safeParse(e).success,Tne=z.number().min(1).max(10),z6e=e=>Tne.safeParse(e).success,Ane=z.number().min(0).max(1),U6e=e=>Ane.safeParse(e).success;z.enum(["box","gaussian"]);z.enum(["unmasked","mask","edge"]);const zs={cfgScale:7.5,height:512,img2imgStrength:.75,infillMethod:"patchmatch",iterations:1,perlin:0,positivePrompt:"",negativePrompt:"",scheduler:"euler",maskBlur:16,maskBlurMethod:"box",canvasCoherenceMode:"unmasked",canvasCoherenceSteps:20,canvasCoherenceStrength:.3,seed:0,seedWeights:"",shouldFitToWidthHeight:!0,shouldGenerateVariations:!1,shouldRandomizeSeed:!0,shouldUseNoiseSettings:!1,steps:50,threshold:0,infillTileSize:32,infillPatchmatchDownscaleSize:1,variationAmount:.1,width:512,shouldUseSymmetry:!1,horizontalSymmetrySteps:0,verticalSymmetrySteps:0,model:null,vae:null,vaePrecision:"fp32",seamlessXAxis:!1,seamlessYAxis:!1,clipSkip:0,shouldUseCpuNoise:!0,shouldShowAdvancedOptions:!1,aspectRatio:null,shouldLockAspectRatio:!1},kne=zs,mD=nr({name:"generation",initialState:kne,reducers:{setPositivePrompt:(e,t)=>{e.positivePrompt=t.payload},setNegativePrompt:(e,t)=>{e.negativePrompt=t.payload},setIterations:(e,t)=>{e.iterations=t.payload},setSteps:(e,t)=>{e.steps=t.payload},clampSymmetrySteps:e=>{e.horizontalSymmetrySteps=jl(e.horizontalSymmetrySteps,0,e.steps),e.verticalSymmetrySteps=jl(e.verticalSymmetrySteps,0,e.steps)},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},toggleSize:e=>{const[t,n]=[e.width,e.height];e.width=n,e.height=t},setScheduler:(e,t)=>{e.scheduler=t.payload},setSeed:(e,t)=>{e.seed=t.payload,e.shouldRandomizeSeed=!1},setImg2imgStrength:(e,t)=>{e.img2imgStrength=t.payload},setSeamlessXAxis:(e,t)=>{e.seamlessXAxis=t.payload},setSeamlessYAxis:(e,t)=>{e.seamlessYAxis=t.payload},setShouldFitToWidthHeight:(e,t)=>{e.shouldFitToWidthHeight=t.payload},resetSeed:e=>{e.seed=-1},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},resetParametersState:e=>({...e,...zs}),setShouldRandomizeSeed:(e,t)=>{e.shouldRandomizeSeed=t.payload},clearInitialImage:e=>{e.initialImage=void 0},setMaskBlur:(e,t)=>{e.maskBlur=t.payload},setMaskBlurMethod:(e,t)=>{e.maskBlurMethod=t.payload},setCanvasCoherenceMode:(e,t)=>{e.canvasCoherenceMode=t.payload},setCanvasCoherenceSteps:(e,t)=>{e.canvasCoherenceSteps=t.payload},setCanvasCoherenceStrength:(e,t)=>{e.canvasCoherenceStrength=t.payload},setInfillMethod:(e,t)=>{e.infillMethod=t.payload},setInfillTileSize:(e,t)=>{e.infillTileSize=t.payload},setInfillPatchmatchDownscaleSize:(e,t)=>{e.infillPatchmatchDownscaleSize=t.payload},setShouldUseSymmetry:(e,t)=>{e.shouldUseSymmetry=t.payload},setHorizontalSymmetrySteps:(e,t)=>{e.horizontalSymmetrySteps=t.payload},setVerticalSymmetrySteps:(e,t)=>{e.verticalSymmetrySteps=t.payload},setShouldUseNoiseSettings:(e,t)=>{e.shouldUseNoiseSettings=t.payload},initialImageChanged:(e,t)=>{const{image_name:n,width:r,height:i}=t.payload;e.initialImage={imageName:n,width:r,height:i}},modelChanged:(e,t)=>{if(e.model=t.payload,e.model===null)return;const{maxClip:n}=hte[e.model.base_model];e.clipSkip=jl(e.clipSkip,0,n)},vaeSelected:(e,t)=>{e.vae=t.payload},vaePrecisionChanged:(e,t)=>{e.vaePrecision=t.payload},setClipSkip:(e,t)=>{e.clipSkip=t.payload},shouldUseCpuNoiseChanged:(e,t)=>{e.shouldUseCpuNoise=t.payload},setShouldShowAdvancedOptions:(e,t)=>{e.shouldShowAdvancedOptions=t.payload,t.payload||(e.clipSkip=0)},setAspectRatio:(e,t)=>{const n=t.payload;e.aspectRatio=n,n&&(e.height=xs(e.width/n,8))},setShouldLockAspectRatio:(e,t)=>{e.shouldLockAspectRatio=t.payload}},extraReducers:e=>{e.addCase(dte,(t,n)=>{var i;const r=(i=n.payload.sd)==null?void 0:i.defaultModel;if(r&&!t.model){const[o,s,a]=r.split("/"),l=N_.safeParse({model_name:a,base_model:o,model_type:s});l.success&&(t.model=l.data)}}),e.addCase(Rne,(t,n)=>{n.payload||(t.clipSkip=0)})}}),{clampSymmetrySteps:j6e,clearInitialImage:b5,resetParametersState:V6e,resetSeed:G6e,setCfgScale:H6e,setWidth:Kk,setHeight:Xk,toggleSize:q6e,setImg2imgStrength:W6e,setInfillMethod:Pne,setIterations:K6e,setPerlin:X6e,setPositivePrompt:Q6e,setNegativePrompt:Y6e,setScheduler:Z6e,setMaskBlur:J6e,setMaskBlurMethod:e8e,setCanvasCoherenceMode:t8e,setCanvasCoherenceSteps:n8e,setCanvasCoherenceStrength:r8e,setSeed:i8e,setSeedWeights:o8e,setShouldFitToWidthHeight:s8e,setShouldGenerateVariations:a8e,setShouldRandomizeSeed:l8e,setSteps:u8e,setThreshold:c8e,setInfillTileSize:d8e,setInfillPatchmatchDownscaleSize:f8e,setVariationAmount:h8e,setShouldUseSymmetry:p8e,setHorizontalSymmetrySteps:g8e,setVerticalSymmetrySteps:m8e,initialImageChanged:D_,modelChanged:Vl,vaeSelected:yD,setShouldUseNoiseSettings:y8e,setSeamlessXAxis:v8e,setSeamlessYAxis:_8e,setClipSkip:b8e,shouldUseCpuNoiseChanged:S8e,setShouldShowAdvancedOptions:Rne,setAspectRatio:Ine,setShouldLockAspectRatio:w8e,vaePrecisionChanged:x8e}=mD.actions,One=mD.reducer;let Gi=[],Ru=(e,t)=>{let n=[],r={get(){return r.lc||r.listen(()=>{})(),r.value},l:t||0,lc:0,listen(i,o){return r.lc=n.push(i,o||r.l)/2,()=>{let s=n.indexOf(i);~s&&(n.splice(s,2),r.lc--,r.lc||r.off())}},notify(i){let o=!Gi.length;for(let s=0;s(e.events=e.events||{},e.events[n+Sy]||(e.events[n+Sy]=r(i=>{e.events[n].reduceRight((o,s)=>(s(o),o),{shared:{},...i})})),e.events[n]=e.events[n]||[],e.events[n].push(t),()=>{let i=e.events[n],o=i.indexOf(t);i.splice(o,1),i.length||(delete e.events[n],e.events[n+Sy](),delete e.events[n+Sy])}),Dne=1e3,Lne=(e,t)=>Nne(e,r=>{let i=t(r);i&&e.events[by].push(i)},Mne,r=>{let i=e.listen;e.listen=(...s)=>(!e.lc&&!e.active&&(e.active=!0,r()),i(...s));let o=e.off;return e.events[by]=[],e.off=()=>{o(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let s of e.events[by])s();e.events[by]=[]}},Dne)},()=>{e.listen=i,e.off=o}}),$ne=(e,t)=>{Array.isArray(e)||(e=[e]);let n,r=()=>{let o=e.map(s=>s.get());(n===void 0||o.some((s,a)=>s!==n[a]))&&(n=o,i.set(t(...o)))},i=Ru(void 0,Math.max(...e.map(o=>o.l))+1);return Lne(i,()=>{let o=e.map(s=>s.listen(r,i.l));return r(),()=>{for(let s of o)s()}}),i};const Fne={"Content-Type":"application/json"},Bne=/\/*$/;function zne(e={}){const{fetch:t=globalThis.fetch,querySerializer:n,bodySerializer:r,...i}=e;async function o(s,a){const{headers:l,body:u,params:c={},parseAs:d="json",querySerializer:f=n??Une,bodySerializer:h=r??jne,...p}=a||{},m=Vne(s,{baseUrl:i.baseUrl,params:c,querySerializer:f}),b=Gne(Fne,e==null?void 0:e.headers,l,c.header),_={redirect:"follow",...i,...p,headers:b};u&&(_.body=h(u)),_.body instanceof FormData&&b.delete("Content-Type");const y=await t(m,_);if(y.status===204||y.headers.get("Content-Length")==="0")return y.ok?{data:{},response:y}:{error:{},response:y};if(y.ok){let v=y.body;if(d!=="stream"){const S=y.clone();v=typeof S[d]=="function"?await S[d]():await S.text()}return{data:v,response:y}}let g={};try{g=await y.clone().json()}catch{g=await y.clone().text()}return{error:g,response:y}}return{async GET(s,a){return o(s,{...a,method:"GET"})},async PUT(s,a){return o(s,{...a,method:"PUT"})},async POST(s,a){return o(s,{...a,method:"POST"})},async DELETE(s,a){return o(s,{...a,method:"DELETE"})},async OPTIONS(s,a){return o(s,{...a,method:"OPTIONS"})},async HEAD(s,a){return o(s,{...a,method:"HEAD"})},async PATCH(s,a){return o(s,{...a,method:"PATCH"})},async TRACE(s,a){return o(s,{...a,method:"TRACE"})}}}function Une(e){const t=new URLSearchParams;if(e&&typeof e=="object")for(const[n,r]of Object.entries(e))r!=null&&t.set(n,r);return t.toString()}function jne(e){return JSON.stringify(e)}function Vne(e,t){let n=`${t.baseUrl?t.baseUrl.replace(Bne,""):""}${e}`;if(t.params.path)for(const[r,i]of Object.entries(t.params.path))n=n.replace(`{${r}}`,encodeURIComponent(String(i)));if(t.params.query){const r=t.querySerializer(t.params.query);r&&(n+=`?${r}`)}return n}function Gne(...e){const t=new Headers;for(const n of e){if(!n||typeof n!="object")continue;const r=n instanceof Headers?n.entries():Object.entries(n);for(const[i,o]of r)o===null?t.delete(i):o!==void 0&&t.set(i,o)}return t}const $f=Ru(),_g=Ru(),bg=Ru(),L_=$ne([$f,_g,bg],(e,t,n)=>zne({headers:{...e?{Authorization:`Bearer ${e}`}:{},...n?{"project-id":n}:{}},baseUrl:`${t??""}`})),xi=hu("api/sessionCreated",async(e,{rejectWithValue:t})=>{const{graph:n}=e,{POST:r}=L_.get(),{data:i,error:o,response:s}=await r("/api/v1/sessions/",{body:n});return o?t({arg:e,status:s.status,error:o}):i}),Hne=e=>zi(e)&&"status"in e,qne=e=>zi(e)&&"detail"in e,ah=hu("api/sessionInvoked",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{PUT:r}=L_.get(),{error:i,response:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{query:{all:!0},path:{session_id:n}}});if(i){if(Hne(i)&&i.status===403)return t({arg:e,status:o.status,error:i.body.detail});if(qne(i)&&o.status===403)return t({arg:e,status:o.status,error:i.detail});if(i)return t({arg:e,status:o.status,error:i})}}),Iu=hu("api/sessionCanceled",async(e,{rejectWithValue:t})=>{const{session_id:n}=e,{DELETE:r}=L_.get(),{data:i,error:o}=await r("/api/v1/sessions/{session_id}/invoke",{params:{path:{session_id:n}}});return o?t({arg:e,error:o}):i});hu("api/listSessions",async(e,{rejectWithValue:t})=>{const{params:n}=e,{GET:r}=L_.get(),{data:i,error:o}=await r("/api/v1/sessions/",{params:n});return o?t({arg:e,error:o}):i});const vD=os(xi.rejected,ah.rejected),wy=(e,t,n,r,i,o,s)=>{const a=Math.floor(e/2-(n+i/2)*s),l=Math.floor(t/2-(r+o/2)*s);return{x:a,y:l}},xy=(e,t,n,r,i=.95)=>{const o=e*i/n,s=t*i/r,a=Math.min(1,Math.min(o,s));return a||1},C8e=.999,E8e=.1,T8e=20,Cy=.95,A8e=30,k8e=10,Wne=e=>({x:Math.floor(e.x),y:Math.floor(e.y)}),hd=e=>{const{width:t,height:n}=e,r={width:t,height:n},i=512*512,o=t/n;let s=t*n,a=448;for(;s1?(r.width=a,r.height=xs(a/o,64)):o<1&&(r.height=a,r.width=xs(a*o,64)),s=r.width*r.height;return r},Kne=e=>({width:xs(e.width,64),height:xs(e.height,64)}),P8e=[{label:"Base",value:"base"},{label:"Mask",value:"mask"}],R8e=[{label:"None",value:"none"},{label:"Auto",value:"auto"},{label:"Manual",value:"manual"}],_D=e=>e.kind==="line"&&e.layer==="mask",I8e=e=>e.kind==="line"&&e.layer==="base",Xne=e=>e.kind==="image"&&e.layer==="base",O8e=e=>e.kind==="fillRect"&&e.layer==="base",M8e=e=>e.kind==="eraseRect"&&e.layer==="base",Qne=e=>e.kind==="line",Pd={objects:[],stagingArea:{images:[],selectedImageIndex:-1}},bD={boundingBoxCoordinates:{x:0,y:0},boundingBoxDimensions:{width:512,height:512},boundingBoxPreviewFill:{r:0,g:0,b:0,a:.5},boundingBoxScaleMethod:"none",brushColor:{r:90,g:90,b:255,a:1},brushSize:50,colorPickerColor:{r:90,g:90,b:255,a:1},cursorPosition:null,futureLayerStates:[],isDrawing:!1,isMaskEnabled:!0,isMouseOverBoundingBox:!1,isMoveBoundingBoxKeyHeld:!1,isMoveStageKeyHeld:!1,isMovingBoundingBox:!1,isMovingStage:!1,isTransformingBoundingBox:!1,layer:"base",layerState:Pd,maskColor:{r:255,g:90,b:90,a:1},maxHistory:128,minimumStageScale:1,pastLayerStates:[],scaledBoundingBoxDimensions:{width:512,height:512},shouldAntialias:!0,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,stageCoordinates:{x:0,y:0},stageDimensions:{width:0,height:0},stageScale:1,tool:"brush"},SD=nr({name:"canvas",initialState:bD,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(Jn(e.layerState)),e.layerState.objects=e.layerState.objects.filter(t=>!_D(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,{width:r,height:i}=n,{stageDimensions:o}=e,s={width:vy(jl(r,64,512),64),height:vy(jl(i,64,512),64)},a={x:xs(r/2-s.width/2,64),y:xs(i/2-s.height/2,64)};if(e.boundingBoxScaleMethod==="auto"){const c=hd(s);e.scaledBoundingBoxDimensions=c}e.boundingBoxDimensions=s,e.boundingBoxCoordinates=a,e.pastLayerStates.push(Jn(e.layerState)),e.layerState={...Pd,objects:[{kind:"image",layer:"base",x:0,y:0,width:r,height:i,imageName:n.image_name}]},e.futureLayerStates=[];const l=xy(o.width,o.height,r,i,Cy),u=wy(o.width,o.height,0,0,r,i,l);e.stageScale=l,e.stageCoordinates=u},setBoundingBoxDimensions:(e,t)=>{const n=Kne(t.payload);if(e.boundingBoxDimensions=n,e.boundingBoxScaleMethod==="auto"){const r=hd(n);e.scaledBoundingBoxDimensions=r}},flipBoundingBoxAxes:e=>{const[t,n]=[e.boundingBoxDimensions.width,e.boundingBoxDimensions.height],[r,i]=[e.scaledBoundingBoxDimensions.width,e.scaledBoundingBoxDimensions.height];e.boundingBoxDimensions={width:n,height:t},e.scaledBoundingBoxDimensions={width:i,height:r}},setBoundingBoxCoordinates:(e,t)=>{e.boundingBoxCoordinates=Wne(t.payload)},setStageCoordinates:(e,t)=>{e.stageCoordinates=t.payload},setBoundingBoxPreviewFill:(e,t)=>{e.boundingBoxPreviewFill=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=[]},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},canvasSessionIdChanged:(e,t)=>{e.layerState.stagingArea.sessionId=t.payload},stagingAreaInitialized:(e,t)=>{const{sessionId:n,boundingBox:r}=t.payload;e.layerState.stagingArea={boundingBox:r,sessionId:n,images:[],selectedImageIndex:-1}},addImageToStagingArea:(e,t)=>{const n=t.payload;!n||!e.layerState.stagingArea.boundingBox||(e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea.images.push({kind:"image",layer:"base",...e.layerState.stagingArea.boundingBox,imageName:n.image_name}),e.layerState.stagingArea.selectedImageIndex=e.layerState.stagingArea.images.length-1,e.futureLayerStates=[])},discardStagedImages:e=>{e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift(),e.layerState.stagingArea={...Pd.stagingArea},e.futureLayerStates=[],e.shouldShowStagingOutline=!0,e.shouldShowStagingOutline=!0},addFillRect:e=>{const{boundingBoxCoordinates:t,boundingBoxDimensions:n,brushColor:r}=e;e.pastLayerStates.push(Jn(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(Jn(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:s}=e;if(n==="move"||n==="colorPicker")return;const a=o/2,l=r==="base"&&n==="brush"?{color:i}:{};e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const u={kind:"line",layer:r,tool:n,strokeWidth:a,points:t.payload,...l};s&&(u.clip={...e.boundingBoxCoordinates,...e.boundingBoxDimensions}),e.layerState.objects.push(u),e.futureLayerStates=[]},addPointToCurrentLine:(e,t)=>{const n=e.layerState.objects.findLast(Qne);n&&n.points.push(...t.payload)},undo:e=>{const t=e.pastLayerStates.pop();t&&(e.futureLayerStates.unshift(Jn(e.layerState)),e.futureLayerStates.length>e.maxHistory&&e.futureLayerStates.pop(),e.layerState=t)},redo:e=>{const t=e.futureLayerStates.shift();t&&(e.pastLayerStates.push(Jn(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(Jn(e.layerState)),e.layerState=Pd,e.futureLayerStates=[]},canvasResized:(e,t)=>{const{width:n,height:r}=t.payload,i={width:Math.floor(n),height:Math.floor(r)};if(e.stageDimensions=i,!e.layerState.objects.find(Xne)){const o=xy(i.width,i.height,512,512,Cy),s=wy(i.width,i.height,0,0,512,512,o),a={width:512,height:512};if(e.stageScale=o,e.stageCoordinates=s,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=a,e.boundingBoxScaleMethod==="auto"){const l=hd(a);e.scaledBoundingBoxDimensions=l}}},resetCanvasView:(e,t)=>{const{contentRect:n,shouldScaleTo1:r}=t.payload,{stageDimensions:{width:i,height:o}}=e,{x:s,y:a,width:l,height:u}=n;if(l!==0&&u!==0){const c=r?1:xy(i,o,l,u,Cy),d=wy(i,o,s,a,l,u,c);e.stageScale=c,e.stageCoordinates=d}else{const c=xy(i,o,512,512,Cy),d=wy(i,o,0,0,512,512,c),f={width:512,height:512};if(e.stageScale=c,e.stageCoordinates=d,e.boundingBoxCoordinates={x:0,y:0},e.boundingBoxDimensions=f,e.boundingBoxScaleMethod==="auto"){const h=hd(f);e.scaledBoundingBoxDimensions=h}}},nextStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex,n=e.layerState.stagingArea.images.length;e.layerState.stagingArea.selectedImageIndex=Math.min(t+1,n-1)},prevStagingAreaImage:e=>{if(!e.layerState.stagingArea.images.length)return;const t=e.layerState.stagingArea.selectedImageIndex;e.layerState.stagingArea.selectedImageIndex=Math.max(t-1,0)},commitStagingAreaImage:(e,t)=>{if(!e.layerState.stagingArea.images.length)return;const{images:n,selectedImageIndex:r}=e.layerState.stagingArea;e.pastLayerStates.push(Jn(e.layerState)),e.pastLayerStates.length>e.maxHistory&&e.pastLayerStates.shift();const i=n[r];i&&e.layerState.objects.push({...i}),e.layerState.stagingArea={...Pd.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,s=r.height/i;if(n.x<0||n.x+t.width>o||n.y<0||n.y+t.height>s){const a={width:vy(jl(o,64,512),64),height:vy(jl(s,64,512),64)},l={x:xs(o/2-a.width/2,64),y:xs(s/2-a.height/2,64)};if(e.boundingBoxDimensions=a,e.boundingBoxCoordinates=l,e.boundingBoxScaleMethod==="auto"){const u=hd(a);e.scaledBoundingBoxDimensions=u}}},setBoundingBoxScaleMethod:(e,t)=>{if(e.boundingBoxScaleMethod=t.payload,t.payload==="auto"){const n=hd(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},setShouldAntialias:(e,t)=>{e.shouldAntialias=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(Jn(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}},extraReducers:e=>{e.addCase(Iu.pending,t=>{t.layerState.stagingArea.images.length||(t.layerState.stagingArea=Pd.stagingArea)}),e.addCase(Ine,(t,n)=>{const r=n.payload;r&&(t.boundingBoxDimensions.height=xs(t.boundingBoxDimensions.width/r,64),t.scaledBoundingBoxDimensions.height=xs(t.scaledBoundingBoxDimensions.width/r,64))})}}),{addEraseRect:N8e,addFillRect:D8e,addImageToStagingArea:Yne,addLine:L8e,addPointToCurrentLine:$8e,clearCanvasHistory:F8e,clearMask:B8e,commitColorPickerColor:z8e,commitStagingAreaImage:Zne,discardStagedImages:U8e,fitBoundingBoxToStage:j8e,mouseLeftCanvas:V8e,nextStagingAreaImage:G8e,prevStagingAreaImage:H8e,redo:q8e,resetCanvas:S5,resetCanvasInteractionState:W8e,resetCanvasView:K8e,setBoundingBoxCoordinates:X8e,setBoundingBoxDimensions:Qk,setBoundingBoxPreviewFill:Q8e,setBoundingBoxScaleMethod:Y8e,flipBoundingBoxAxes:Z8e,setBrushColor:J8e,setBrushSize:eRe,setColorPickerColor:tRe,setCursorPosition:nRe,setInitialCanvasImage:wD,setIsDrawing:rRe,setIsMaskEnabled:iRe,setIsMouseOverBoundingBox:oRe,setIsMoveBoundingBoxKeyHeld:sRe,setIsMoveStageKeyHeld:aRe,setIsMovingBoundingBox:lRe,setIsMovingStage:uRe,setIsTransformingBoundingBox:cRe,setLayer:dRe,setMaskColor:fRe,setMergedCanvas:Jne,setShouldAutoSave:hRe,setShouldCropToBoundingBoxOnSave:pRe,setShouldDarkenOutsideBoundingBox:gRe,setShouldLockBoundingBox:mRe,setShouldPreserveMaskedArea:yRe,setShouldShowBoundingBox:vRe,setShouldShowBrush:_Re,setShouldShowBrushPreview:bRe,setShouldShowCanvasDebugInfo:SRe,setShouldShowCheckboardTransparency:wRe,setShouldShowGrid:xRe,setShouldShowIntermediates:CRe,setShouldShowStagingImage:ERe,setShouldShowStagingOutline:TRe,setShouldSnapToGrid:ARe,setStageCoordinates:kRe,setStageScale:PRe,setTool:RRe,toggleShouldLockBoundingBox:IRe,toggleTool:ORe,undo:MRe,setScaledBoundingBoxDimensions:NRe,setShouldRestrictStrokesToBox:DRe,stagingAreaInitialized:ere,canvasSessionIdChanged:tre,setShouldAntialias:LRe,canvasResized:$Re}=SD.actions,nre=SD.reducer,rre={isModalOpen:!1,imagesToChange:[]},xD=nr({name:"changeBoardModal",initialState:rre,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToChangeSelected:(e,t)=>{e.imagesToChange=t.payload},changeBoardReset:e=>{e.imagesToChange=[],e.isModalOpen=!1}}}),{isModalOpenChanged:FRe,imagesToChangeSelected:BRe,changeBoardReset:zRe}=xD.actions,ire=xD.reducer;var CD={exports:{}},ED={};const wo=Y1(vW),Mh=Y1(Sq),ore=Y1(Mq);(function(e){var t,n,r=dt&&dt.__generator||function(W,ee){var ne,ue,ie,Fe,je={label:0,sent:function(){if(1&ie[0])throw ie[1];return ie[1]},trys:[],ops:[]};return Fe={next:ot(0),throw:ot(1),return:ot(2)},typeof Symbol=="function"&&(Fe[Symbol.iterator]=function(){return this}),Fe;function ot(Ne){return function(Ve){return function(Re){if(ne)throw new TypeError("Generator is already executing.");for(;je;)try{if(ne=1,ue&&(ie=2&Re[0]?ue.return:Re[0]?ue.throw||((ie=ue.return)&&ie.call(ue),0):ue.next)&&!(ie=ie.call(ue,Re[1])).done)return ie;switch(ue=0,ie&&(Re=[2&Re[0],ie.value]),Re[0]){case 0:case 1:ie=Re;break;case 4:return je.label++,{value:Re[1],done:!1};case 5:je.label++,ue=Re[1],Re=[0];continue;case 7:Re=je.ops.pop(),je.trys.pop();continue;default:if(!((ie=(ie=je.trys).length>0&&ie[ie.length-1])||Re[0]!==6&&Re[0]!==2)){je=0;continue}if(Re[0]===3&&(!ie||Re[1]>ie[0]&&Re[1]=200&&W.status<=299},L=function(W){return/ion\/(vnd\.api\+)?json/.test(W.get("content-type")||"")};function N(W){if(!(0,A.isPlainObject)(W))return W;for(var ee=b({},W),ne=0,ue=Object.entries(ee);ne"u"&&je===T&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(bt,xt){return S(ee,null,function(){var tn,nn,Ti,So,Ai,pr,ui,Vn,io,ms,tt,rn,Xt,Yn,gr,ci,fn,Rt,zt,hn,Qt,an,_e,Ye,Be,Ae,Ge,lt,ze,be,ae,xe,ce,he,Se,Ze;return r(this,function(qe){switch(qe.label){case 0:return tn=xt.signal,nn=xt.getState,Ti=xt.extra,So=xt.endpoint,Ai=xt.forced,pr=xt.type,io=(Vn=typeof bt=="string"?{url:bt}:bt).url,tt=(ms=Vn.headers)===void 0?new Headers(at.headers):ms,Xt=(rn=Vn.params)===void 0?void 0:rn,gr=(Yn=Vn.responseHandler)===void 0?Qe??"json":Yn,fn=(ci=Vn.validateStatus)===void 0?st??k:ci,zt=(Rt=Vn.timeout)===void 0?Xe:Rt,hn=g(Vn,["url","headers","params","responseHandler","validateStatus","timeout"]),Qt=b(_(b({},at),{signal:tn}),hn),tt=new Headers(N(tt)),an=Qt,[4,ie(tt,{getState:nn,extra:Ti,endpoint:So,forced:Ai,type:pr})];case 1:an.headers=qe.sent()||tt,_e=function(ke){return typeof ke=="object"&&((0,A.isPlainObject)(ke)||Array.isArray(ke)||typeof ke.toJSON=="function")},!Qt.headers.has("content-type")&&_e(Qt.body)&&Qt.headers.set("content-type",re),_e(Qt.body)&&Ve(Qt.headers)&&(Qt.body=JSON.stringify(Qt.body,ve)),Xt&&(Ye=~io.indexOf("?")?"&":"?",Be=ot?ot(Xt):new URLSearchParams(N(Xt)),io+=Ye+Be),io=function(ke,Ct){if(!ke)return Ct;if(!Ct)return ke;if(function(Ft){return new RegExp("(^|:)//").test(Ft)}(Ct))return Ct;var $t=ke.endsWith("/")||!Ct.startsWith("?")?"/":"";return ke=function(Ft){return Ft.replace(/\/$/,"")}(ke),""+ke+$t+function(Ft){return Ft.replace(/^\//,"")}(Ct)}(ne,io),Ae=new Request(io,Qt),Ge=Ae.clone(),ui={request:Ge},ze=!1,be=zt&&setTimeout(function(){ze=!0,xt.abort()},zt),qe.label=2;case 2:return qe.trys.push([2,4,5,6]),[4,je(Ae)];case 3:return lt=qe.sent(),[3,6];case 4:return ae=qe.sent(),[2,{error:{status:ze?"TIMEOUT_ERROR":"FETCH_ERROR",error:String(ae)},meta:ui}];case 5:return be&&clearTimeout(be),[7];case 6:xe=lt.clone(),ui.response=xe,he="",qe.label=7;case 7:return qe.trys.push([7,9,,10]),[4,Promise.all([mt(lt,gr).then(function(ke){return ce=ke},function(ke){return Se=ke}),xe.text().then(function(ke){return he=ke},function(){})])];case 8:if(qe.sent(),Se)throw Se;return[3,10];case 9:return Ze=qe.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:lt.status,data:he,error:String(Ze)},meta:ui}];case 10:return[2,fn(lt,ce)?{data:ce,meta:ui}:{error:{status:lt.status,data:ce},meta:ui}]}})})};function mt(bt,xt){return S(this,null,function(){var tn;return r(this,function(nn){switch(nn.label){case 0:return typeof xt=="function"?[2,xt(bt)]:(xt==="content-type"&&(xt=Ve(bt.headers)?"json":"text"),xt!=="json"?[3,2]:[4,bt.text()]);case 1:return[2,(tn=nn.sent()).length?JSON.parse(tn):null];case 2:return[2,bt.text()]}})})}}var P=function(W,ee){ee===void 0&&(ee=void 0),this.value=W,this.meta=ee};function D(W,ee){return W===void 0&&(W=0),ee===void 0&&(ee=5),S(this,null,function(){var ne,ue;return r(this,function(ie){switch(ie.label){case 0:return ne=Math.min(W,ee),ue=~~((Math.random()+.4)*(300<=xe)}var hn=(0,qt.createAsyncThunk)(Xt+"/executeQuery",Rt,{getPendingMeta:function(){var _e;return(_e={startedTimeStamp:Date.now()})[qt.SHOULD_AUTOBATCH]=!0,_e},condition:function(_e,Ye){var Be,Ae,Ge,lt=(0,Ye.getState)(),ze=(Ae=(Be=lt[Xt])==null?void 0:Be.queries)==null?void 0:Ae[_e.queryCacheKey],be=ze==null?void 0:ze.fulfilledTimeStamp,ae=_e.originalArgs,xe=ze==null?void 0:ze.originalArgs,ce=gr[_e.endpointName];return!(!$e(_e)&&((ze==null?void 0:ze.status)==="pending"||!zt(_e,lt)&&(!te(ce)||!((Ge=ce==null?void 0:ce.forceRefetch)!=null&&Ge.call(ce,{currentArg:ae,previousArg:xe,endpointState:ze,state:lt})))&&be))},dispatchConditionRejection:!0}),Qt=(0,qt.createAsyncThunk)(Xt+"/executeMutation",Rt,{getPendingMeta:function(){var _e;return(_e={startedTimeStamp:Date.now()})[qt.SHOULD_AUTOBATCH]=!0,_e}});function an(_e){return function(Ye){var Be,Ae;return((Ae=(Be=Ye==null?void 0:Ye.meta)==null?void 0:Be.arg)==null?void 0:Ae.endpointName)===_e}}return{queryThunk:hn,mutationThunk:Qt,prefetch:function(_e,Ye,Be){return function(Ae,Ge){var lt=function(ce){return"force"in ce}(Be)&&Be.force,ze=function(ce){return"ifOlderThan"in ce}(Be)&&Be.ifOlderThan,be=function(ce){return ce===void 0&&(ce=!0),fn.endpoints[_e].initiate(Ye,{forceRefetch:ce})},ae=fn.endpoints[_e].select(Ye)(Ge());if(lt)Ae(be());else if(ze){var xe=ae==null?void 0:ae.fulfilledTimeStamp;if(!xe)return void Ae(be());(Number(new Date)-Number(new Date(xe)))/1e3>=ze&&Ae(be())}else Ae(be(!1))}},updateQueryData:function(_e,Ye,Be){return function(Ae,Ge){var lt,ze,be=fn.endpoints[_e].select(Ye)(Ge()),ae={patches:[],inversePatches:[],undo:function(){return Ae(fn.util.patchQueryData(_e,Ye,ae.inversePatches))}};if(be.status===t.uninitialized)return ae;if("data"in be)if((0,Pe.isDraftable)(be.data)){var xe=(0,Pe.produceWithPatches)(be.data,Be),ce=xe[2];(lt=ae.patches).push.apply(lt,xe[1]),(ze=ae.inversePatches).push.apply(ze,ce)}else{var he=Be(be.data);ae.patches.push({op:"replace",path:[],value:he}),ae.inversePatches.push({op:"replace",path:[],value:be.data})}return Ae(fn.util.patchQueryData(_e,Ye,ae.patches)),ae}},upsertQueryData:function(_e,Ye,Be){return function(Ae){var Ge;return Ae(fn.endpoints[_e].initiate(Ye,((Ge={subscribe:!1,forceRefetch:!0})[nt]=function(){return{data:Be}},Ge)))}},patchQueryData:function(_e,Ye,Be){return function(Ae){Ae(fn.internalActions.queryResultPatched({queryCacheKey:ci({queryArgs:Ye,endpointDefinition:gr[_e],endpointName:_e}),patches:Be}))}},buildMatchThunkActions:function(_e,Ye){return{matchPending:(0,ct.isAllOf)((0,ct.isPending)(_e),an(Ye)),matchFulfilled:(0,ct.isAllOf)((0,ct.isFulfilled)(_e),an(Ye)),matchRejected:(0,ct.isAllOf)((0,ct.isRejected)(_e),an(Ye))}}}}({baseQuery:ue,reducerPath:ie,context:ne,api:W,serializeQueryArgs:Fe}),ve=re.queryThunk,Xe=re.mutationThunk,Qe=re.patchQueryData,st=re.updateQueryData,at=re.upsertQueryData,mt=re.prefetch,bt=re.buildMatchThunkActions,xt=function(tt){var rn=tt.reducerPath,Xt=tt.queryThunk,Yn=tt.mutationThunk,gr=tt.context,ci=gr.endpointDefinitions,fn=gr.apiUid,Rt=gr.extractRehydrationInfo,zt=gr.hasRehydrationInfo,hn=tt.assertTagType,Qt=tt.config,an=(0,le.createAction)(rn+"/resetApiState"),_e=(0,le.createSlice)({name:rn+"/queries",initialState:Gr,reducers:{removeQueryResult:{reducer:function(be,ae){delete be[ae.payload.queryCacheKey]},prepare:(0,le.prepareAutoBatched)()},queryResultPatched:function(be,ae){var xe=ae.payload,ce=xe.patches;Rn(be,xe.queryCacheKey,function(he){he.data=(0,Wt.applyPatches)(he.data,ce.concat())})}},extraReducers:function(be){be.addCase(Xt.pending,function(ae,xe){var ce,he=xe.meta,Se=xe.meta.arg,Ze=$e(Se);(Se.subscribe||Ze)&&(ae[ce=Se.queryCacheKey]!=null||(ae[ce]={status:t.uninitialized,endpointName:Se.endpointName})),Rn(ae,Se.queryCacheKey,function(qe){qe.status=t.pending,qe.requestId=Ze&&qe.requestId?qe.requestId:he.requestId,Se.originalArgs!==void 0&&(qe.originalArgs=Se.originalArgs),qe.startedTimeStamp=he.startedTimeStamp})}).addCase(Xt.fulfilled,function(ae,xe){var ce=xe.meta,he=xe.payload;Rn(ae,ce.arg.queryCacheKey,function(Se){var Ze;if(Se.requestId===ce.requestId||$e(ce.arg)){var qe=ci[ce.arg.endpointName].merge;if(Se.status=t.fulfilled,qe)if(Se.data!==void 0){var ke=ce.fulfilledTimeStamp,Ct=ce.arg,$t=ce.baseQueryMeta,Ft=ce.requestId,Zn=(0,le.createNextState)(Se.data,function(lr){return qe(lr,he,{arg:Ct.originalArgs,baseQueryMeta:$t,fulfilledTimeStamp:ke,requestId:Ft})});Se.data=Zn}else Se.data=he;else Se.data=(Ze=ci[ce.arg.endpointName].structuralSharing)==null||Ze?C((0,bn.isDraft)(Se.data)?(0,Wt.original)(Se.data):Se.data,he):he;delete Se.error,Se.fulfilledTimeStamp=ce.fulfilledTimeStamp}})}).addCase(Xt.rejected,function(ae,xe){var ce=xe.meta,he=ce.condition,Se=ce.requestId,Ze=xe.error,qe=xe.payload;Rn(ae,ce.arg.queryCacheKey,function(ke){if(!he){if(ke.requestId!==Se)return;ke.status=t.rejected,ke.error=qe??Ze}})}).addMatcher(zt,function(ae,xe){for(var ce=Rt(xe).queries,he=0,Se=Object.entries(ce);he"u"||navigator.onLine===void 0||navigator.onLine,focused:typeof document>"u"||document.visibilityState!=="hidden",middlewareRegistered:!1},Qt),reducers:{middlewareRegistered:function(be,ae){be.middlewareRegistered=be.middlewareRegistered!=="conflict"&&fn===ae.payload||"conflict"}},extraReducers:function(be){be.addCase(U,function(ae){ae.online=!0}).addCase(V,function(ae){ae.online=!1}).addCase(O,function(ae){ae.focused=!0}).addCase(F,function(ae){ae.focused=!1}).addMatcher(zt,function(ae){return b({},ae)})}}),ze=(0,le.combineReducers)({queries:_e.reducer,mutations:Ye.reducer,provided:Be.reducer,subscriptions:Ge.reducer,config:lt.reducer});return{reducer:function(be,ae){return ze(an.match(ae)?void 0:be,ae)},actions:_(b(b(b(b(b({},lt.actions),_e.actions),Ae.actions),Ge.actions),Ye.actions),{unsubscribeMutationResult:Ye.actions.removeMutationResult,resetApiState:an})}}({context:ne,queryThunk:ve,mutationThunk:Xe,reducerPath:ie,assertTagType:Re,config:{refetchOnFocus:Ne,refetchOnReconnect:Ve,refetchOnMountOrArgChange:ot,keepUnusedDataFor:je,reducerPath:ie}}),tn=xt.reducer,nn=xt.actions;li(W.util,{patchQueryData:Qe,updateQueryData:st,upsertQueryData:at,prefetch:mt,resetApiState:nn.resetApiState}),li(W.internalActions,nn);var Ti=function(tt){var rn=tt.reducerPath,Xt=tt.queryThunk,Yn=tt.api,gr=tt.context,ci=gr.apiUid,fn={invalidateTags:(0,Aa.createAction)(rn+"/invalidateTags")},Rt=[Nr,On,Mr,Cr,Ei,ai];return{middleware:function(hn){var Qt=!1,an=_(b({},tt),{internalState:{currentSubscriptions:{}},refetchQuery:zt}),_e=Rt.map(function(Ae){return Ae(an)}),Ye=function(Ae){var Ge=Ae.api,lt=Ae.queryThunk,ze=Ae.internalState,be=Ge.reducerPath+"/subscriptions",ae=null,xe=!1,ce=Ge.internalActions,he=ce.updateSubscriptionOptions,Se=ce.unsubscribeQueryResult;return function(Ze,qe){var ke,Ct;if(ae||(ae=JSON.parse(JSON.stringify(ze.currentSubscriptions))),Ge.util.resetApiState.match(Ze))return ae=ze.currentSubscriptions={},[!0,!1];if(Ge.internalActions.internal_probeSubscription.match(Ze)){var $t=Ze.payload;return[!1,!!((ke=ze.currentSubscriptions[$t.queryCacheKey])!=null&&ke[$t.requestId])]}var Ft=function(Mn,Sn){var Vi,$,G,X,fe,St,on,wn,Tt;if(he.match(Sn)){var pn=Sn.payload,di=pn.queryCacheKey,Gn=pn.requestId;return(Vi=Mn==null?void 0:Mn[di])!=null&&Vi[Gn]&&(Mn[di][Gn]=pn.options),!0}if(Se.match(Sn)){var bl=Sn.payload;return Gn=bl.requestId,Mn[di=bl.queryCacheKey]&&delete Mn[di][Gn],!0}if(Ge.internalActions.removeQueryResult.match(Sn))return delete Mn[Sn.payload.queryCacheKey],!0;if(lt.pending.match(Sn)){var ud=Sn.meta;if(Gn=ud.requestId,(dd=ud.arg).subscribe)return(Sl=(G=Mn[$=dd.queryCacheKey])!=null?G:Mn[$]={})[Gn]=(fe=(X=dd.subscriptionOptions)!=null?X:Sl[Gn])!=null?fe:{},!0}if(lt.rejected.match(Sn)){var Sl,cd=Sn.meta,dd=cd.arg;if(Gn=cd.requestId,cd.condition&&dd.subscribe)return(Sl=(on=Mn[St=dd.queryCacheKey])!=null?on:Mn[St]={})[Gn]=(Tt=(wn=dd.subscriptionOptions)!=null?wn:Sl[Gn])!=null?Tt:{},!0}return!1}(ze.currentSubscriptions,Ze);if(Ft){xe||(Vs(function(){var Mn=JSON.parse(JSON.stringify(ze.currentSubscriptions)),Sn=(0,gs.produceWithPatches)(ae,function(){return Mn});qe.next(Ge.internalActions.subscriptionsUpdated(Sn[1])),ae=Mn,xe=!1}),xe=!0);var Zn=!!((Ct=Ze.type)!=null&&Ct.startsWith(be)),lr=lt.rejected.match(Ze)&&Ze.meta.condition&&!!Ze.meta.arg.subscribe;return[!Zn&&!lr,!1]}return[!0,!1]}}(an),Be=function(Ae){var Ge=Ae.reducerPath,lt=Ae.context,ze=Ae.refetchQuery,be=Ae.internalState,ae=Ae.api.internalActions.removeQueryResult;function xe(ce,he){var Se=ce.getState()[Ge],Ze=Se.queries,qe=be.currentSubscriptions;lt.batch(function(){for(var ke=0,Ct=Object.keys(qe);ke1&&arguments[1]!==void 0?arguments[1]:{};this.init(t,n)}init(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=t||lre,this.options=n,this.debug=n.debug}log(){for(var t=arguments.length,n=new Array(t),r=0;r{this.observers[r]=this.observers[r]||[],this.observers[r].push(n)}),this}off(t,n){if(this.observers[t]){if(!n){delete this.observers[t];return}this.observers[t]=this.observers[t].filter(r=>r!==n)}}emit(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{s(...r)}),this.observers["*"]&&[].concat(this.observers["*"]).forEach(s=>{s.apply(s,[t,...r])})}}function Nh(){let e,t;const n=new Promise((r,i)=>{e=r,t=i});return n.resolve=e,n.reject=t,n}function Yk(e){return e==null?"":""+e}function ure(e,t,n){e.forEach(r=>{t[r]&&(n[r]=t[r])})}function w5(e,t,n){function r(s){return s&&s.indexOf("###")>-1?s.replace(/###/g,"."):s}function i(){return!e||typeof e=="string"}const o=typeof t!="string"?[].concat(t):t.split(".");for(;o.length>1;){if(i())return{};const s=r(o.shift());!e[s]&&n&&(e[s]=new n),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={}}return i()?{}:{obj:e,k:r(o.shift())}}function Zk(e,t,n){const{obj:r,k:i}=w5(e,t,Object);r[i]=n}function cre(e,t,n,r){const{obj:i,k:o}=w5(e,t,Object);i[o]=i[o]||[],r&&(i[o]=i[o].concat(n)),r||i[o].push(n)}function Hv(e,t){const{obj:n,k:r}=w5(e,t);if(n)return n[r]}function dre(e,t,n){const r=Hv(e,n);return r!==void 0?r:Hv(t,n)}function TD(e,t,n){for(const r in t)r!=="__proto__"&&r!=="constructor"&&(r in e?typeof e[r]=="string"||e[r]instanceof String||typeof t[r]=="string"||t[r]instanceof String?n&&(e[r]=t[r]):TD(e[r],t[r],n):e[r]=t[r]);return e}function pd(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var fre={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function hre(e){return typeof e=="string"?e.replace(/[&<>"'\/]/g,t=>fre[t]):e}const pre=[" ",",","?","!",";"];function gre(e,t,n){t=t||"",n=n||"";const r=pre.filter(s=>t.indexOf(s)<0&&n.indexOf(s)<0);if(r.length===0)return!0;const i=new RegExp(`(${r.map(s=>s==="?"?"\\?":s).join("|")})`);let o=!i.test(e);if(!o){const s=e.indexOf(n);s>0&&!i.test(e.substring(0,s))&&(o=!0)}return o}function qv(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[t])return e[t];const r=t.split(n);let i=e;for(let o=0;oo+s;)s++,a=r.slice(o,o+s).join(n),l=i[a];if(l===void 0)return;if(l===null)return null;if(t.endsWith(a)){if(typeof l=="string")return l;if(a&&typeof l[a]=="string")return l[a]}const u=r.slice(o+s).join(n);return u?qv(l,u,n):void 0}i=i[r[o]]}return i}function Wv(e){return e&&e.indexOf("_")>0?e.replace("_","-"):e}class Jk extends $_{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const n=this.options.ns.indexOf(t);n>-1&&this.options.ns.splice(n,1)}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,s=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let a=[t,n];r&&typeof r!="string"&&(a=a.concat(r)),r&&typeof r=="string"&&(a=a.concat(o?r.split(o):r)),t.indexOf(".")>-1&&(a=t.split("."));const l=Hv(this.data,a);return l||!s||typeof r!="string"?l:qv(this.data&&this.data[t]&&this.data[t][n],r,o)}addResource(t,n,r,i){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const s=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator;let a=[t,n];r&&(a=a.concat(s?r.split(s):r)),t.indexOf(".")>-1&&(a=t.split("."),i=n,n=a[1]),this.addNamespaces(n),Zk(this.data,a,i),o.silent||this.emit("added",t,n,r,i)}addResources(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const o in r)(typeof r[o]=="string"||Object.prototype.toString.apply(r[o])==="[object Array]")&&this.addResource(t,n,o,r[o],{silent:!0});i.silent||this.emit("added",t,n,r)}addResourceBundle(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},a=[t,n];t.indexOf(".")>-1&&(a=t.split("."),i=r,r=n,n=a[1]),this.addNamespaces(n);let l=Hv(this.data,a)||{};i?TD(l,r,o):l={...l,...r},Zk(this.data,a,l),s.silent||this.emit("added",t,n,r)}removeResourceBundle(t,n){this.hasResourceBundle(t,n)&&delete this.data[t][n],this.removeNamespaces(n),this.emit("removed",t,n)}hasResourceBundle(t,n){return this.getResource(t,n)!==void 0}getResourceBundle(t,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(t,n)}:this.getResource(t,n)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const n=this.getDataByLanguage(t);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var AD={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(o=>{this.processors[o]&&(t=this.processors[o].process(t,n,r,i))}),t}};const eP={};class Kv extends $_{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),ure(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=ia.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(t==null)return!1;const r=this.resolve(t,n);return r&&r.res!==void 0}extractFromKey(t,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let o=n.ns||this.options.defaultNS||[];const s=r&&t.indexOf(r)>-1,a=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!gre(t,r,i);if(s&&!a){const l=t.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:t,namespaces:o};const u=t.split(r);(r!==i||r===i&&this.options.ns.indexOf(u[0])>-1)&&(o=u.shift()),t=u.join(i)}return typeof o=="string"&&(o=[o]),{key:t,namespaces:o}}translate(t,n,r){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),t==null)return"";Array.isArray(t)||(t=[String(t)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,o=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:s,namespaces:a}=this.extractFromKey(t[t.length-1],n),l=a[a.length-1],u=n.lng||this.language,c=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(u&&u.toLowerCase()==="cimode"){if(c){const v=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${v}${s}`,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:`${l}${v}${s}`}return i?{res:s,usedKey:s,exactUsedKey:s,usedLng:u,usedNS:l}:s}const d=this.resolve(t,n);let f=d&&d.res;const h=d&&d.usedKey||s,p=d&&d.exactUsedKey||s,m=Object.prototype.toString.apply(f),b=["[object Number]","[object Function]","[object RegExp]"],_=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject;if(y&&f&&(typeof f!="string"&&typeof f!="boolean"&&typeof f!="number")&&b.indexOf(m)<0&&!(typeof _=="string"&&m==="[object Array]")){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const v=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,f,{...n,ns:a}):`key '${s} (${this.language})' returned an object instead of string.`;return i?(d.res=v,d):v}if(o){const v=m==="[object Array]",S=v?[]:{},w=v?p:h;for(const x in f)if(Object.prototype.hasOwnProperty.call(f,x)){const C=`${w}${o}${x}`;S[x]=this.translate(C,{...n,joinArrays:!1,ns:a}),S[x]===C&&(S[x]=f[x])}f=S}}else if(y&&typeof _=="string"&&m==="[object Array]")f=f.join(_),f&&(f=this.extendTranslation(f,t,n,r));else{let v=!1,S=!1;const w=n.count!==void 0&&typeof n.count!="string",x=Kv.hasDefaultValue(n),C=w?this.pluralResolver.getSuffix(u,n.count,n):"",A=n.ordinal&&w?this.pluralResolver.getSuffix(u,n.count,{ordinal:!1}):"",T=n[`defaultValue${C}`]||n[`defaultValue${A}`]||n.defaultValue;!this.isValidLookup(f)&&x&&(v=!0,f=T),this.isValidLookup(f)||(S=!0,f=s);const L=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&S?void 0:f,N=x&&T!==f&&this.options.updateMissing;if(S||v||N){if(this.logger.log(N?"updateKey":"missingKey",u,l,s,N?T:f),o){const B=this.resolve(s,{...n,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let E=[];const P=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&P&&P[0])for(let B=0;B{const O=x&&I!==f?I:L;this.options.missingKeyHandler?this.options.missingKeyHandler(B,l,R,O,N,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(B,l,R,O,N,n),this.emit("missingKey",B,l,R,f)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?E.forEach(B=>{this.pluralResolver.getSuffixes(B,n).forEach(R=>{D([B],s+R,n[`defaultValue${R}`]||T)})}):D(E,s,T))}f=this.extendTranslation(f,t,n,d,r),S&&f===s&&this.options.appendNamespaceToMissingKey&&(f=`${l}:${s}`),(S||v)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?f=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${s}`:s,v?f:void 0):f=this.options.parseMissingKeyHandler(f))}return i?(d.res=f,d):f}extendTranslation(t,n,r,i,o){var s=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...r},i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const u=typeof t=="string"&&(r&&r.interpolation&&r.interpolation.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(u){const f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let d=r.replace&&typeof r.replace!="string"?r.replace:r;if(this.options.interpolation.defaultVariables&&(d={...this.options.interpolation.defaultVariables,...d}),t=this.interpolator.interpolate(t,d,r.lng||this.language,r),u){const f=t.match(this.interpolator.nestingRegexp),h=f&&f.length;c1&&arguments[1]!==void 0?arguments[1]:{},r,i,o,s,a;return typeof t=="string"&&(t=[t]),t.forEach(l=>{if(this.isValidLookup(r))return;const u=this.extractFromKey(l,n),c=u.key;i=c;let d=u.namespaces;this.options.fallbackNS&&(d=d.concat(this.options.fallbackNS));const f=n.count!==void 0&&typeof n.count!="string",h=f&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),p=n.context!==void 0&&(typeof n.context=="string"||typeof n.context=="number")&&n.context!=="",m=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);d.forEach(b=>{this.isValidLookup(r)||(a=b,!eP[`${m[0]}-${b}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(a)&&(eP[`${m[0]}-${b}`]=!0,this.logger.warn(`key "${i}" for languages "${m.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),m.forEach(_=>{if(this.isValidLookup(r))return;s=_;const y=[c];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(y,c,_,b,n);else{let v;f&&(v=this.pluralResolver.getSuffix(_,n.count,n));const S=`${this.options.pluralSeparator}zero`,w=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(f&&(y.push(c+v),n.ordinal&&v.indexOf(w)===0&&y.push(c+v.replace(w,this.options.pluralSeparator)),h&&y.push(c+S)),p){const x=`${c}${this.options.contextSeparator}${n.context}`;y.push(x),f&&(y.push(x+v),n.ordinal&&v.indexOf(w)===0&&y.push(x+v.replace(w,this.options.pluralSeparator)),h&&y.push(x+S))}}let g;for(;g=y.pop();)this.isValidLookup(r)||(o=g,r=this.getResource(_,b,g,n))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:s,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,n,r,i):this.resourceStore.getResource(t,n,r,i)}static hasDefaultValue(t){const n="defaultValue";for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&n===r.substring(0,n.length)&&t[r]!==void 0)return!0;return!1}}function F2(e){return e.charAt(0).toUpperCase()+e.slice(1)}class tP{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=ia.create("languageUtils")}getScriptPartFromCode(t){if(t=Wv(t),!t||t.indexOf("-")<0)return null;const n=t.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(t){if(t=Wv(t),!t||t.indexOf("-")<0)return t;const n=t.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(t){if(typeof t=="string"&&t.indexOf("-")>-1){const n=["hans","hant","latn","cyrl","cans","mong","arab"];let r=t.split("-");return this.options.lowerCaseLng?r=r.map(i=>i.toLowerCase()):r.length===2?(r[0]=r[0].toLowerCase(),r[1]=r[1].toUpperCase(),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=F2(r[1].toLowerCase()))):r.length===3&&(r[0]=r[0].toLowerCase(),r[1].length===2&&(r[1]=r[1].toUpperCase()),r[0]!=="sgn"&&r[2].length===2&&(r[2]=r[2].toUpperCase()),n.indexOf(r[1].toLowerCase())>-1&&(r[1]=F2(r[1].toLowerCase())),n.indexOf(r[2].toLowerCase())>-1&&(r[2]=F2(r[2].toLowerCase()))),r.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let n;return t.forEach(r=>{if(n)return;const i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&t.forEach(r=>{if(n)return;const i=this.getLanguagePartFromCode(r);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(o=>{if(o===i)return o;if(!(o.indexOf("-")<0&&i.indexOf("-")<0)&&o.indexOf(i)===0)return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(t,n){if(!t)return[];if(typeof t=="function"&&(t=t(n)),typeof t=="string"&&(t=[t]),Object.prototype.toString.apply(t)==="[object Array]")return t;if(!n)return t.default||[];let r=t[n];return r||(r=t[this.getScriptPartFromCode(n)]),r||(r=t[this.formatLanguageCode(n)]),r||(r=t[this.getLanguagePartFromCode(n)]),r||(r=t.default),r||[]}toResolveHierarchy(t,n){const r=this.getFallbackCodes(n||this.options.fallbackLng||[],t),i=[],o=s=>{s&&(this.isSupportedCode(s)?i.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return typeof t=="string"&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(t))):typeof t=="string"&&o(this.formatLanguageCode(t)),r.forEach(s=>{i.indexOf(s)<0&&o(this.formatLanguageCode(s))}),i}}let mre=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],yre={1:function(e){return+(e>1)},2:function(e){return+(e!=1)},3:function(e){return 0},4:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},5:function(e){return e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},6:function(e){return e==1?0:e>=2&&e<=4?1:2},7:function(e){return e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2},8:function(e){return e==1?0:e==2?1:e!=8&&e!=11?2:3},9:function(e){return+(e>=2)},10:function(e){return e==1?0:e==2?1:e<7?2:e<11?3:4},11:function(e){return e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3},12:function(e){return+(e%10!=1||e%100==11)},13:function(e){return+(e!==0)},14:function(e){return e==1?0:e==2?1:e==3?2:3},15:function(e){return e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2},16:function(e){return e%10==1&&e%100!=11?0:e!==0?1:2},17:function(e){return e==1||e%10==1&&e%100!=11?0:1},18:function(e){return e==0?0:e==1?1:2},19:function(e){return e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3},20:function(e){return e==1?0:e==0||e%100>0&&e%100<20?1:2},21:function(e){return e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0},22:function(e){return e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3}};const vre=["v1","v2","v3"],_re=["v4"],nP={zero:0,one:1,two:2,few:3,many:4,other:5};function bre(){const e={};return mre.forEach(t=>{t.lngs.forEach(n=>{e[n]={numbers:t.nr,plurals:yre[t.fc]}})}),e}class Sre{constructor(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=t,this.options=n,this.logger=ia.create("pluralResolver"),(!this.options.compatibilityJSON||_re.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=bre()}addRule(t,n){this.rules[t]=n}getRule(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(Wv(t),{type:n.ordinal?"ordinal":"cardinal"})}catch{return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return this.shouldUseIntlApi()?r&&r.resolvedOptions().pluralCategories.length>1:r&&r.numbers.length>1}getPluralFormsOfKey(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(t,r).map(i=>`${n}${i}`)}getSuffixes(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=this.getRule(t,n);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((i,o)=>nP[i]-nP[o]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):r.numbers.map(i=>this.getSuffix(t,i,n)):[]}getSuffix(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(t,r);return i?this.shouldUseIntlApi()?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,n){const r=t.noAbs?t.plurals(n):t.plurals(Math.abs(n));let i=t.numbers[r];this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const o=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&t.numbers.length===2&&t.numbers[0]===1?o():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}shouldUseIntlApi(){return!vre.includes(this.options.compatibilityJSON)}}function rP(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,o=dre(e,t,n);return!o&&i&&typeof n=="string"&&(o=qv(e,n,r),o===void 0&&(o=qv(t,n,r))),o}class wre{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ia.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(n=>n),this.init(t)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const n=t.interpolation;this.escape=n.escape!==void 0?n.escape:hre,this.escapeValue=n.escapeValue!==void 0?n.escapeValue:!0,this.useRawValueToEscape=n.useRawValueToEscape!==void 0?n.useRawValueToEscape:!1,this.prefix=n.prefix?pd(n.prefix):n.prefixEscaped||"{{",this.suffix=n.suffix?pd(n.suffix):n.suffixEscaped||"}}",this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||",",this.unescapePrefix=n.unescapeSuffix?"":n.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":n.unescapeSuffix||"",this.nestingPrefix=n.nestingPrefix?pd(n.nestingPrefix):n.nestingPrefixEscaped||pd("$t("),this.nestingSuffix=n.nestingSuffix?pd(n.nestingSuffix):n.nestingSuffixEscaped||pd(")"),this.nestingOptionsSeparator=n.nestingOptionsSeparator?n.nestingOptionsSeparator:n.nestingOptionsSeparator||",",this.maxReplaces=n.maxReplaces?n.maxReplaces:1e3,this.alwaysFormat=n.alwaysFormat!==void 0?n.alwaysFormat:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=`${this.prefix}(.+?)${this.suffix}`;this.regexp=new RegExp(t,"g");const n=`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;this.regexpUnescape=new RegExp(n,"g");const r=`${this.nestingPrefix}(.+?)${this.nestingSuffix}`;this.nestingRegexp=new RegExp(r,"g")}interpolate(t,n,r,i){let o,s,a;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(p){return p.replace(/\$/g,"$$$$")}const c=p=>{if(p.indexOf(this.formatSeparator)<0){const y=rP(n,l,p,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(y,void 0,r,{...i,...n,interpolationkey:p}):y}const m=p.split(this.formatSeparator),b=m.shift().trim(),_=m.join(this.formatSeparator).trim();return this.format(rP(n,l,b,this.options.keySeparator,this.options.ignoreJSONStructure),_,r,{...i,...n,interpolationkey:b})};this.resetRegExp();const d=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:p=>u(p)},{regex:this.regexp,safeValue:p=>this.escapeValue?u(this.escape(p)):u(p)}].forEach(p=>{for(a=0;o=p.regex.exec(t);){const m=o[1].trim();if(s=c(m),s===void 0)if(typeof d=="function"){const _=d(t,o,i);s=typeof _=="string"?_:""}else if(i&&Object.prototype.hasOwnProperty.call(i,m))s="";else if(f){s=o[0];continue}else this.logger.warn(`missed to pass in variable ${m} for interpolating ${t}`),s="";else typeof s!="string"&&!this.useRawValueToEscape&&(s=Yk(s));const b=p.safeValue(s);if(t=t.replace(o[0],b),f?(p.regex.lastIndex+=s.length,p.regex.lastIndex-=o[0].length):p.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,o,s;function a(l,u){const c=this.nestingOptionsSeparator;if(l.indexOf(c)<0)return l;const d=l.split(new RegExp(`${c}[ ]*{`));let f=`{${d[1]}`;l=d[0],f=this.interpolate(f,s);const h=f.match(/'/g),p=f.match(/"/g);(h&&h.length%2===0&&!p||p.length%2!==0)&&(f=f.replace(/'/g,'"'));try{s=JSON.parse(f),u&&(s={...u,...s})}catch(m){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,m),`${l}${c}${f}`}return delete s.defaultValue,l}for(;i=this.nestingRegexp.exec(t);){let l=[];s={...r},s=s.replace&&typeof s.replace!="string"?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;let u=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const c=i[1].split(this.formatSeparator).map(d=>d.trim());i[1]=c.shift(),l=c,u=!0}if(o=n(a.call(this,i[1].trim(),s),s),o&&i[0]===t&&typeof o!="string")return o;typeof o!="string"&&(o=Yk(o)),o||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),o=""),u&&(o=l.reduce((c,d)=>this.format(c,d,r.lng,{...r,interpolationkey:i[1].trim()}),o.trim())),t=t.replace(i[0],o),this.regexp.lastIndex=0}return t}}function xre(e){let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const i=r[1].substring(0,r[1].length-1);t==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(s=>{if(!s)return;const[a,...l]=s.split(":"),u=l.join(":").trim().replace(/^'+|'+$/g,"");n[a.trim()]||(n[a.trim()]=u),u==="false"&&(n[a.trim()]=!1),u==="true"&&(n[a.trim()]=!0),isNaN(u)||(n[a.trim()]=parseInt(u,10))})}return{formatName:t,formatOptions:n}}function gd(e){const t={};return function(r,i,o){const s=i+JSON.stringify(o);let a=t[s];return a||(a=e(Wv(i),o),t[s]=a),a(r)}}class Cre{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=ia.create("formatter"),this.options=t,this.formats={number:gd((n,r)=>{const i=new Intl.NumberFormat(n,{...r});return o=>i.format(o)}),currency:gd((n,r)=>{const i=new Intl.NumberFormat(n,{...r,style:"currency"});return o=>i.format(o)}),datetime:gd((n,r)=>{const i=new Intl.DateTimeFormat(n,{...r});return o=>i.format(o)}),relativetime:gd((n,r)=>{const i=new Intl.RelativeTimeFormat(n,{...r});return o=>i.format(o,r.range||"day")}),list:gd((n,r)=>{const i=new Intl.ListFormat(n,{...r});return o=>i.format(o)})},this.init(t)}init(t){const r=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=r.formatSeparator?r.formatSeparator:r.formatSeparator||","}add(t,n){this.formats[t.toLowerCase().trim()]=n}addCached(t,n){this.formats[t.toLowerCase().trim()]=gd(n)}format(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return n.split(this.formatSeparator).reduce((a,l)=>{const{formatName:u,formatOptions:c}=xre(l);if(this.formats[u]){let d=a;try{const f=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},h=f.locale||f.lng||i.locale||i.lng||r;d=this.formats[u](a,h,{...c,...i,...f})}catch(f){this.logger.warn(f)}return d}else this.logger.warn(`there was no format function for ${u}`);return a},t)}}function Ere(e,t){e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)}class Tre extends $_{constructor(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=t,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=ia.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(r,i.backend,i)}queueLoad(t,n,r,i){const o={},s={},a={},l={};return t.forEach(u=>{let c=!0;n.forEach(d=>{const f=`${u}|${d}`;!r.reload&&this.store.hasResourceBundle(u,d)?this.state[f]=2:this.state[f]<0||(this.state[f]===1?s[f]===void 0&&(s[f]=!0):(this.state[f]=1,c=!1,s[f]===void 0&&(s[f]=!0),o[f]===void 0&&(o[f]=!0),l[d]===void 0&&(l[d]=!0)))}),c||(a[u]=!0)}),(Object.keys(o).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(o),pending:Object.keys(s),toLoadLanguages:Object.keys(a),toLoadNamespaces:Object.keys(l)}}loaded(t,n,r){const i=t.split("|"),o=i[0],s=i[1];n&&this.emit("failedLoading",o,s,n),r&&this.store.addResourceBundle(o,s,r),this.state[t]=n?-1:2;const a={};this.queue.forEach(l=>{cre(l.loaded,[o],s),Ere(l,t),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(u=>{a[u]||(a[u]={});const c=l.loaded[u];c.length&&c.forEach(d=>{a[u][d]===void 0&&(a[u][d]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",a),this.queue=this.queue.filter(l=>!l.done)}read(t,n,r){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,s=arguments.length>5?arguments[5]:void 0;if(!t.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:n,fcName:r,tried:i,wait:o,callback:s});return}this.readingCalls++;const a=(u,c)=>{if(this.readingCalls--,this.waitingReads.length>0){const d=this.waitingReads.shift();this.read(d.lng,d.ns,d.fcName,d.tried,d.wait,d.callback)}if(u&&c&&i{this.read.call(this,t,n,r,i+1,o*2,s)},o);return}s(u,c)},l=this.backend[r].bind(this.backend);if(l.length===2){try{const u=l(t,n);u&&typeof u.then=="function"?u.then(c=>a(null,c)).catch(a):a(null,u)}catch(u){a(u)}return}return l(t,n,a)}prepareLoading(t,n){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();typeof t=="string"&&(t=this.languageUtils.toResolveHierarchy(t)),typeof n=="string"&&(n=[n]);const o=this.queueLoad(t,n,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(s=>{this.loadOne(s)})}load(t,n,r){this.prepareLoading(t,n,{},r)}reload(t,n,r){this.prepareLoading(t,n,{reload:!0},r)}loadOne(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const r=t.split("|"),i=r[0],o=r[1];this.read(i,o,"read",void 0,void 0,(s,a)=>{s&&this.logger.warn(`${n}loading namespace ${o} for language ${i} failed`,s),!s&&a&&this.logger.log(`${n}loaded namespace ${o} for language ${i}`,a),this.loaded(t,s,a)})}saveMissing(t,n,r,i,o){let s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},a=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend&&this.backend.create){const l={...s,isUpdate:o},u=this.backend.create.bind(this.backend);if(u.length<6)try{let c;u.length===5?c=u(t,n,r,i,l):c=u(t,n,r,i),c&&typeof c.then=="function"?c.then(d=>a(null,d)).catch(a):a(null,c)}catch(c){a(c)}else u(t,n,r,i,a,l)}!t||!t[0]||this.store.addResource(t[0],n,r,i)}}}function iP(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let n={};if(typeof t[1]=="object"&&(n=t[1]),typeof t[1]=="string"&&(n.defaultValue=t[1]),typeof t[2]=="string"&&(n.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const r=t[3]||t[2];Object.keys(r).forEach(i=>{n[i]=r[i]})}return n},interpolation:{escapeValue:!0,format:(e,t,n,r)=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function oP(e){return typeof e.ns=="string"&&(e.ns=[e.ns]),typeof e.fallbackLng=="string"&&(e.fallbackLng=[e.fallbackLng]),typeof e.fallbackNS=="string"&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function Ty(){}function Are(e){Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})}class Sg extends $_{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=oP(t),this.services={},this.logger=ia,this.modules={external:[]},Are(this),n&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,n),this;setTimeout(()=>{this.init(t,n)},0)}}init(){var t=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;typeof n=="function"&&(r=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(typeof n.ns=="string"?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=iP();this.options={...i,...this.options,...oP(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);function o(c){return c?typeof c=="function"?new c:c:null}if(!this.options.isClone){this.modules.logger?ia.init(o(this.modules.logger),this.options):ia.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:typeof Intl<"u"&&(c=Cre);const d=new tP(this.options);this.store=new Jk(this.options.resources,this.options);const f=this.services;f.logger=ia,f.resourceStore=this.store,f.languageUtils=d,f.pluralResolver=new Sre(d,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=o(c),f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new wre(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Tre(o(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",function(h){for(var p=arguments.length,m=new Array(p>1?p-1:0),b=1;b1?p-1:0),b=1;b{h.init&&h.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Ty),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=function(){return t.store[c](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=function(){return t.store[c](...arguments),t}});const l=Nh(),u=()=>{const c=(d,f)=>{this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),l.resolve(f),r(d,f)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initImmediate?u():setTimeout(u,0),l}loadResources(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ty;const i=typeof t=="string"?t:this.language;if(typeof t=="function"&&(r=t),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode")return r();const o=[],s=a=>{if(!a)return;this.services.languageUtils.toResolveHierarchy(a).forEach(u=>{o.indexOf(u)<0&&o.push(u)})};i?s(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload&&this.options.preload.forEach(a=>s(a)),this.services.backendConnector.load(o,this.options.ns,a=>{!a&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(a)})}else r(null)}reloadResources(t,n,r){const i=Nh();return t||(t=this.languages),n||(n=this.options.ns),r||(r=Ty),this.services.backendConnector.reload(t,n,o=>{i.resolve(),r(o)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&AD.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1))for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}}changeLanguage(t,n){var r=this;this.isLanguageChangingTo=t;const i=Nh();this.emit("languageChanging",t);const o=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},s=(l,u)=>{u?(o(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,i.resolve(function(){return r.t(...arguments)}),n&&n(l,function(){return r.t(...arguments)})},a=l=>{!t&&!l&&this.services.languageDetector&&(l=[]);const u=typeof l=="string"?l:this.services.languageUtils.getBestMatchFromCodes(l);u&&(this.language||o(u),this.translator.language||this.translator.changeLanguage(u),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(u)),this.loadResources(u,c=>{s(c,u)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t),i}getFixedT(t,n,r){var i=this;const o=function(s,a){let l;if(typeof a!="object"){for(var u=arguments.length,c=new Array(u>2?u-2:0),d=2;d`${l.keyPrefix}${f}${p}`):h=l.keyPrefix?`${l.keyPrefix}${f}${s}`:s,i.t(h,l)};return typeof t=="string"?o.lng=t:o.lngs=t,o.ns=n,o.keyPrefix=r,o}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const s=(a,l)=>{const u=this.services.backendConnector.state[`${a}|${l}`];return u===-1||u===2};if(n.precheck){const a=n.precheck(this,s);if(a!==void 0)return a}return!!(this.hasResourceBundle(r,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(r,t)&&(!i||s(o,t)))}loadNamespaces(t,n){const r=Nh();return this.options.ns?(typeof t=="string"&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),n&&n(i)}),r):(n&&n(),Promise.resolve())}loadLanguages(t,n){const r=Nh();typeof t=="string"&&(t=[t]);const i=this.options.preload||[],o=t.filter(s=>i.indexOf(s)<0);return o.length?(this.options.preload=i.concat(o),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services&&this.services.languageUtils||new tP(iP());return n.indexOf(r.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new Sg(t,n)}cloneInstance(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ty;const r=t.forkResourceStore;r&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},o=new Sg(i);return(t.debug!==void 0||t.prefix!==void 0)&&(o.logger=o.logger.clone(t)),["store","services","language"].forEach(a=>{o[a]=this[a]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r&&(o.store=new Jk(this.store.data,i),o.services.resourceStore=o.store),o.translator=new Kv(o.services,i),o.translator.on("*",function(a){for(var l=arguments.length,u=new Array(l>1?l-1:0),c=1;ckD.safeParse(e).success||kre.safeParse(e).success;z.enum(["connection","direct","any"]);const PD=z.object({id:z.string().trim().min(1),name:z.string().trim().min(1),type:kD}),Pre=PD.extend({fieldKind:z.literal("output")}),gt=PD.extend({fieldKind:z.literal("input"),label:z.string()}),Kc=z.object({model_name:z.string().trim().min(1),base_model:Wc}),Ff=z.object({image_name:z.string().trim().min(1)}),Xv=z.object({latents_name:z.string().trim().min(1),seed:z.number().int().optional()}),Qv=z.object({conditioning_name:z.string().trim().min(1)}),Rre=z.object({mask_name:z.string().trim().min(1),masked_latents_name:z.string().trim().min(1).optional()}),Ire=gt.extend({type:z.literal("integer"),value:z.number().int().optional()}),Ore=gt.extend({type:z.literal("IntegerCollection"),value:z.array(z.number().int()).optional()}),Mre=gt.extend({type:z.literal("IntegerPolymorphic"),value:z.union([z.number().int(),z.array(z.number().int())]).optional()}),Nre=gt.extend({type:z.literal("float"),value:z.number().optional()}),Dre=gt.extend({type:z.literal("FloatCollection"),value:z.array(z.number()).optional()}),Lre=gt.extend({type:z.literal("FloatPolymorphic"),value:z.union([z.number(),z.array(z.number())]).optional()}),$re=gt.extend({type:z.literal("string"),value:z.string().optional()}),Fre=gt.extend({type:z.literal("StringCollection"),value:z.array(z.string()).optional()}),Bre=gt.extend({type:z.literal("StringPolymorphic"),value:z.union([z.string(),z.array(z.string())]).optional()}),zre=gt.extend({type:z.literal("boolean"),value:z.boolean().optional()}),Ure=gt.extend({type:z.literal("BooleanCollection"),value:z.array(z.boolean()).optional()}),jre=gt.extend({type:z.literal("BooleanPolymorphic"),value:z.union([z.boolean(),z.array(z.boolean())]).optional()}),Vre=gt.extend({type:z.literal("enum"),value:z.string().optional()}),Gre=gt.extend({type:z.literal("LatentsField"),value:Xv.optional()}),Hre=gt.extend({type:z.literal("LatentsCollection"),value:z.array(Xv).optional()}),qre=gt.extend({type:z.literal("LatentsPolymorphic"),value:z.union([Xv,z.array(Xv)]).optional()}),Wre=gt.extend({type:z.literal("DenoiseMaskField"),value:Rre.optional()}),Kre=gt.extend({type:z.literal("ConditioningField"),value:Qv.optional()}),Xre=gt.extend({type:z.literal("ConditioningCollection"),value:z.array(Qv).optional()}),Qre=gt.extend({type:z.literal("ConditioningPolymorphic"),value:z.union([Qv,z.array(Qv)]).optional()}),Yre=Kc,wg=z.object({image:Ff,control_model:Yre,control_weight:z.union([z.number(),z.array(z.number())]).optional(),begin_step_percent:z.number().optional(),end_step_percent:z.number().optional(),control_mode:z.enum(["balanced","more_prompt","more_control","unbalanced"]).optional(),resize_mode:z.enum(["just_resize","crop_resize","fill_resize","just_resize_simple"]).optional()}),Zre=gt.extend({type:z.literal("ControlField"),value:wg.optional()}),Jre=gt.extend({type:z.literal("ControlPolymorphic"),value:z.union([wg,z.array(wg)]).optional()}),eie=gt.extend({type:z.literal("ControlCollection"),value:z.array(wg).optional()}),tie=Kc,nie=z.object({image:Ff,ip_adapter_model:tie,image_encoder_model:z.string().trim().min(1),weight:z.number()}),rie=gt.extend({type:z.literal("IPAdapterField"),value:nie.optional()}),iie=z.enum(["onnx","main","vae","lora","controlnet","embedding"]),oie=z.enum(["unet","text_encoder","text_encoder_2","tokenizer","tokenizer_2","vae","vae_decoder","vae_encoder","scheduler","safety_checker"]),Bf=Kc.extend({model_type:iie,submodel:oie.optional()}),RD=Bf.extend({weight:z.number().optional()}),sie=z.object({unet:Bf,scheduler:Bf,loras:z.array(RD)}),aie=gt.extend({type:z.literal("UNetField"),value:sie.optional()}),lie=z.object({tokenizer:Bf,text_encoder:Bf,skipped_layers:z.number(),loras:z.array(RD)}),uie=gt.extend({type:z.literal("ClipField"),value:lie.optional()}),cie=z.object({vae:Bf}),die=gt.extend({type:z.literal("VaeField"),value:cie.optional()}),fie=gt.extend({type:z.literal("ImageField"),value:Ff.optional()}),hie=gt.extend({type:z.literal("ImagePolymorphic"),value:z.union([Ff,z.array(Ff)]).optional()}),pie=gt.extend({type:z.literal("ImageCollection"),value:z.array(Ff).optional()}),gie=gt.extend({type:z.literal("MainModelField"),value:Cm.optional()}),mie=gt.extend({type:z.literal("SDXLMainModelField"),value:Cm.optional()}),yie=gt.extend({type:z.literal("SDXLRefinerModelField"),value:Cm.optional()}),ID=Kc,vie=gt.extend({type:z.literal("VaeModelField"),value:ID.optional()}),OD=Kc,_ie=gt.extend({type:z.literal("LoRAModelField"),value:OD.optional()}),bie=Kc,Sie=gt.extend({type:z.literal("ControlNetModelField"),value:bie.optional()}),wie=Kc,xie=gt.extend({type:z.literal("IPAdapterModelField"),value:wie.optional()}),Cie=gt.extend({type:z.literal("Collection"),value:z.array(z.any()).optional()}),Eie=gt.extend({type:z.literal("CollectionItem"),value:z.any().optional()}),Yv=z.object({r:z.number().int().min(0).max(255),g:z.number().int().min(0).max(255),b:z.number().int().min(0).max(255),a:z.number().int().min(0).max(255)}),Tie=gt.extend({type:z.literal("ColorField"),value:Yv.optional()}),Aie=gt.extend({type:z.literal("ColorCollection"),value:z.array(Yv).optional()}),kie=gt.extend({type:z.literal("ColorPolymorphic"),value:z.union([Yv,z.array(Yv)]).optional()}),Pie=gt.extend({type:z.literal("Scheduler"),value:pD.optional()}),Rie=z.discriminatedUnion("type",[Ure,zre,jre,uie,Cie,Eie,Tie,Aie,kie,Kre,Xre,Qre,Zre,Sie,eie,Jre,Wre,Vre,Dre,Nre,Lre,pie,hie,fie,Ore,Mre,Ire,rie,xie,Gre,Hre,qre,_ie,gie,Pie,mie,yie,Fre,Bre,$re,aie,die,vie]),URe=e=>!!(e&&e.fieldKind==="input"),jRe=e=>!!(e&&e.fieldKind==="input"),Iie=e=>!!(e&&!("$ref"in e)),aP=e=>!!(e&&!("$ref"in e)&&e.type==="array"),Ay=e=>!!(e&&!("$ref"in e)&&e.type!=="array"),Dh=e=>!!(e&&"$ref"in e),Oie=e=>"class"in e&&e.class==="invocation",Mie=e=>"class"in e&&e.class==="output",lP=e=>!("$ref"in e),Nie=z.object({lora:OD.deepPartial(),weight:z.number()}),MD=z.object({app_version:z.string().nullish(),generation_mode:z.string().nullish(),created_by:z.string().nullish(),positive_prompt:z.string().nullish(),negative_prompt:z.string().nullish(),width:z.number().int().nullish(),height:z.number().int().nullish(),seed:z.number().int().nullish(),rand_device:z.string().nullish(),cfg_scale:z.number().nullish(),steps:z.number().int().nullish(),scheduler:z.string().nullish(),clip_skip:z.number().int().nullish(),model:z.union([N_.deepPartial(),gD.deepPartial()]).nullish(),controlnets:z.array(wg.deepPartial()).nullish(),loras:z.array(Nie).nullish(),vae:ID.nullish(),strength:z.number().nullish(),init_image:z.string().nullish(),positive_style_prompt:z.string().nullish(),negative_style_prompt:z.string().nullish(),refiner_model:_5.deepPartial().nullish(),refiner_cfg_scale:z.number().nullish(),refiner_steps:z.number().int().nullish(),refiner_scheduler:z.string().nullish(),refiner_positive_aesthetic_score:z.number().nullish(),refiner_negative_aesthetic_score:z.number().nullish(),refiner_start:z.number().nullish()}).passthrough(),x5=z.string().refine(e=>{const[t,n,r]=e.split(".");return t!==void 0&&Number.isInteger(Number(t))&&n!==void 0&&Number.isInteger(Number(n))&&r!==void 0&&Number.isInteger(Number(r))});x5.transform(e=>{const[t,n,r]=e.split(".");return{major:Number(t),minor:Number(n),patch:Number(r)}});const Die=z.object({id:z.string().trim().min(1),type:z.string().trim().min(1),inputs:z.record(Rie),outputs:z.record(Pre),label:z.string(),isOpen:z.boolean(),notes:z.string(),embedWorkflow:z.boolean(),isIntermediate:z.boolean(),version:x5.optional()}),Lie=z.object({id:z.string().trim().min(1),type:z.literal("notes"),label:z.string(),isOpen:z.boolean(),notes:z.string()}),ND=z.object({x:z.number(),y:z.number()}).default({x:0,y:0}),Zv=z.number().gt(0).nullish(),DD=z.object({id:z.string().trim().min(1),type:z.literal("invocation"),data:Die,width:Zv,height:Zv,position:ND}),vC=e=>DD.safeParse(e).success,$ie=z.object({id:z.string().trim().min(1),type:z.literal("notes"),data:Lie,width:Zv,height:Zv,position:ND}),LD=z.discriminatedUnion("type",[DD,$ie]),Fie=z.object({source:z.string().trim().min(1),sourceHandle:z.string().trim().min(1),target:z.string().trim().min(1),targetHandle:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("default")}),Bie=z.object({source:z.string().trim().min(1),target:z.string().trim().min(1),id:z.string().trim().min(1),type:z.literal("collapsed")}),$D=z.union([Fie,Bie]),zie=z.object({nodeId:z.string().trim().min(1),fieldName:z.string().trim().min(1)}),FD=z.object({name:z.string().default(""),author:z.string().default(""),description:z.string().default(""),version:z.string().default(""),contact:z.string().default(""),tags:z.string().default(""),notes:z.string().default(""),nodes:z.array(LD).default([]),edges:z.array($D).default([]),exposedFields:z.array(zie).default([]),meta:z.object({version:x5}).default({version:"1.0.0"})});FD.transform(e=>{const{nodes:t,edges:n}=e,r=[],i=t.filter(vC),o=v5(i,"id");return n.forEach((s,a)=>{const l=o[s.source],u=o[s.target],c=[];if(l?s.type==="default"&&!(s.sourceHandle in l.data.outputs)&&c.push(`${we.t("nodes.outputField")}"${s.source}.${s.sourceHandle}" ${we.t("nodes.doesNotExist")}`):c.push(`${we.t("nodes.outputNode")} ${s.source} ${we.t("nodes.doesNotExist")}`),u?s.type==="default"&&!(s.targetHandle in u.data.inputs)&&c.push(`${we.t("nodes.inputField")} "${s.target}.${s.targetHandle}" ${we.t("nodes.doesNotExist")}`):c.push(`${we.t("nodes.inputNode")} ${s.target} ${we.t("nodes.doesNotExist")}`),c.length){delete n[a];const d=s.type==="default"?s.sourceHandle:s.source,f=s.type==="default"?s.targetHandle:s.target;r.push({message:`${we.t("nodes.edge")} "${d} -> ${f}" ${we.t("nodes.skipped")}`,issues:c,data:s})}}),{workflow:e,warnings:r}});const Kr=e=>!!(e&&e.type==="invocation"),VRe=e=>!!(e&&!["notes","current_image"].includes(e.type)),uP=e=>!!(e&&e.type==="notes");var Fa=(e=>(e[e.PENDING=0]="PENDING",e[e.IN_PROGRESS=1]="IN_PROGRESS",e[e.COMPLETED=2]="COMPLETED",e[e.FAILED=3]="FAILED",e))(Fa||{});/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const Uie=4,cP=0,dP=1,jie=2;function lh(e){let t=e.length;for(;--t>=0;)e[t]=0}const Vie=0,BD=1,Gie=2,Hie=3,qie=258,C5=29,Em=256,xg=Em+1+C5,ff=30,E5=19,zD=2*xg+1,lc=15,B2=16,Wie=7,T5=256,UD=16,jD=17,VD=18,_C=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),I0=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Kie=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),GD=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Xie=512,Ua=new Array((xg+2)*2);lh(Ua);const xp=new Array(ff*2);lh(xp);const Cg=new Array(Xie);lh(Cg);const Eg=new Array(qie-Hie+1);lh(Eg);const A5=new Array(C5);lh(A5);const Jv=new Array(ff);lh(Jv);function z2(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let HD,qD,WD;function U2(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}const KD=e=>e<256?Cg[e]:Cg[256+(e>>>7)],Tg=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},uo=(e,t,n)=>{e.bi_valid>B2-n?(e.bi_buf|=t<>B2-e.bi_valid,e.bi_valid+=n-B2):(e.bi_buf|=t<{uo(e,n[t*2],n[t*2+1])},XD=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},Qie=e=>{e.bi_valid===16?(Tg(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},Yie=(e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,o=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,l=t.stat_desc.max_length;let u,c,d,f,h,p,m=0;for(f=0;f<=lc;f++)e.bl_count[f]=0;for(n[e.heap[e.heap_max]*2+1]=0,u=e.heap_max+1;ul&&(f=l,m++),n[c*2+1]=f,!(c>r)&&(e.bl_count[f]++,h=0,c>=a&&(h=s[c-a]),p=n[c*2],e.opt_len+=p*(f+h),o&&(e.static_len+=p*(i[c*2+1]+h)));if(m!==0){do{for(f=l-1;e.bl_count[f]===0;)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[l]--,m-=2}while(m>0);for(f=l;f!==0;f--)for(c=e.bl_count[f];c!==0;)d=e.heap[--u],!(d>r)&&(n[d*2+1]!==f&&(e.opt_len+=(f-n[d*2+1])*n[d*2],n[d*2+1]=f),c--)}},QD=(e,t,n)=>{const r=new Array(lc+1);let i=0,o,s;for(o=1;o<=lc;o++)i=i+n[o-1]<<1,r[o]=i;for(s=0;s<=t;s++){let a=e[s*2+1];a!==0&&(e[s*2]=XD(r[a]++,a))}},Zie=()=>{let e,t,n,r,i;const o=new Array(lc+1);for(n=0,r=0;r>=7;r{let t;for(t=0;t{e.bi_valid>8?Tg(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},fP=(e,t,n,r)=>{const i=t*2,o=n*2;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,o=0,s,a;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+o++]&255,r+=(e.pending_buf[e.sym_buf+o++]&255)<<8,i=e.pending_buf[e.sym_buf+o++],r===0?ta(e,i,t):(s=Eg[i],ta(e,s+Em+1,t),a=_C[s],a!==0&&(i-=A5[s],uo(e,i,a)),r--,s=KD(r),ta(e,s,n),a=I0[s],a!==0&&(r-=Jv[s],uo(e,r,a)));while(o{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,o=t.stat_desc.elems;let s,a,l=-1,u;for(e.heap_len=0,e.heap_max=zD,s=0;s>1;s>=1;s--)j2(e,n,s);u=o;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],j2(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=a,n[u*2]=n[s*2]+n[a*2],e.depth[u]=(e.depth[s]>=e.depth[a]?e.depth[s]:e.depth[a])+1,n[s*2+1]=n[a*2+1]=u,e.heap[1]=u++,j2(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Yie(e,t),QD(n,l,e.bl_count)},pP=(e,t,n)=>{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)o=s,s=t[(r+1)*2+1],!(++a{let r,i=-1,o,s=t[0*2+1],a=0,l=7,u=4;for(s===0&&(l=138,u=3),r=0;r<=n;r++)if(o=s,s=t[(r+1)*2+1],!(++a{let t;for(pP(e,e.dyn_ltree,e.l_desc.max_code),pP(e,e.dyn_dtree,e.d_desc.max_code),bC(e,e.bl_desc),t=E5-1;t>=3&&e.bl_tree[GD[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},eoe=(e,t,n,r)=>{let i;for(uo(e,t-257,5),uo(e,n-1,5),uo(e,r-4,4),i=0;i{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return cP;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return dP;for(n=32;n{mP||(Zie(),mP=!0),e.l_desc=new U2(e.dyn_ltree,HD),e.d_desc=new U2(e.dyn_dtree,qD),e.bl_desc=new U2(e.bl_tree,WD),e.bi_buf=0,e.bi_valid=0,YD(e)},JD=(e,t,n,r)=>{uo(e,(Vie<<1)+(r?1:0),3),ZD(e),Tg(e,n),Tg(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},roe=e=>{uo(e,BD<<1,3),ta(e,T5,Ua),Qie(e)},ioe=(e,t,n,r)=>{let i,o,s=0;e.level>0?(e.strm.data_type===jie&&(e.strm.data_type=toe(e)),bC(e,e.l_desc),bC(e,e.d_desc),s=Jie(e),i=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=i&&(i=o)):i=o=n+5,n+4<=i&&t!==-1?JD(e,t,n,r):e.strategy===Uie||o===i?(uo(e,(BD<<1)+(r?1:0),3),hP(e,Ua,xp)):(uo(e,(Gie<<1)+(r?1:0),3),eoe(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),hP(e,e.dyn_ltree,e.dyn_dtree)),YD(e),r&&ZD(e)},ooe=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Eg[n]+Em+1)*2]++,e.dyn_dtree[KD(t)*2]++),e.sym_next===e.sym_end);var soe=noe,aoe=JD,loe=ioe,uoe=ooe,coe=roe,doe={_tr_init:soe,_tr_stored_block:aoe,_tr_flush_block:loe,_tr_tally:uoe,_tr_align:coe};const foe=(e,t,n,r)=>{let i=e&65535|0,o=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,o=o+i|0;while(--s);i%=65521,o%=65521}return i|o<<16|0};var Ag=foe;const hoe=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},poe=new Uint32Array(hoe()),goe=(e,t,n,r)=>{const i=poe,o=r+n;e^=-1;for(let s=r;s>>8^i[(e^t[s])&255];return e^-1};var Zr=goe,zf={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Tm={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:moe,_tr_stored_block:SC,_tr_flush_block:yoe,_tr_tally:nu,_tr_align:voe}=doe,{Z_NO_FLUSH:ru,Z_PARTIAL_FLUSH:_oe,Z_FULL_FLUSH:boe,Z_FINISH:Qo,Z_BLOCK:yP,Z_OK:yi,Z_STREAM_END:vP,Z_STREAM_ERROR:da,Z_DATA_ERROR:Soe,Z_BUF_ERROR:V2,Z_DEFAULT_COMPRESSION:woe,Z_FILTERED:xoe,Z_HUFFMAN_ONLY:ky,Z_RLE:Coe,Z_FIXED:Eoe,Z_DEFAULT_STRATEGY:Toe,Z_UNKNOWN:Aoe,Z_DEFLATED:F_}=Tm,koe=9,Poe=15,Roe=8,Ioe=29,Ooe=256,wC=Ooe+1+Ioe,Moe=30,Noe=19,Doe=2*wC+1,Loe=15,Dt=3,Hl=258,fa=Hl+Dt+1,$oe=32,Uf=42,k5=57,xC=69,CC=73,EC=91,TC=103,uc=113,rp=666,Wi=1,uh=2,Oc=3,ch=4,Foe=3,cc=(e,t)=>(e.msg=zf[t],t),_P=e=>e*2-(e>4?9:0),Fl=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Boe=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)};let zoe=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ro=(e,t)=>{yoe(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Co(e.strm)},Yt=(e,t)=>{e.pending_buf[e.pending++]=t},Lh=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},AC=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=Ag(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Zr(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},eL=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,o,s=e.prev_length,a=e.nice_match;const l=e.strstart>e.w_size-fa?e.strstart-(e.w_size-fa):0,u=e.window,c=e.w_mask,d=e.prev,f=e.strstart+Hl;let h=u[r+s-1],p=u[r+s];e.prev_length>=e.good_match&&(n>>=2),a>e.lookahead&&(a=e.lookahead);do if(i=t,!(u[i+s]!==p||u[i+s-1]!==h||u[i]!==u[r]||u[++i]!==u[r+1])){r+=2,i++;do;while(u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&u[++r]===u[++i]&&rs){if(e.match_start=t,s=o,o>=a)break;h=u[r+s-1],p=u[r+s]}}while((t=d[t&c])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},jf=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-fa)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Boe(e),r+=t),e.strm.avail_in===0)break;if(n=AC(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=Dt)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=iu(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=iu(e,e.ins_h,e.window[i+Dt-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,o,s=0,a=e.strm.avail_in;do{if(r=65535,o=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(r=i+e.strm.avail_in),r>o&&(r=o),r>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Co(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(AC(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_watero&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(AC(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,n=o>e.w_size?e.w_size:o,i=e.strstart-e.block_start,(i>=n||(i||t===Qo)&&t!==ru&&e.strm.avail_in===0&&i<=o)&&(r=i>o?o:i,s=t===Qo&&e.strm.avail_in===0&&r===i?1:0,SC(e,e.block_start,r,s),e.block_start+=r,Co(e.strm)),s?Oc:Wi)},G2=(e,t)=>{let n,r;for(;;){if(e.lookahead=Dt&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-fa&&(e.match_length=eL(e,n)),e.match_length>=Dt)if(r=nu(e,e.strstart-e.match_start,e.match_length-Dt),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=Dt){e.match_length--;do e.strstart++,e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=iu(e,e.ins_h,e.window[e.strstart+1]);else r=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=e.strstart{let n,r,i;for(;;){if(e.lookahead=Dt&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=Dt-1,n!==0&&e.prev_length4096)&&(e.match_length=Dt-1)),e.prev_length>=Dt&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-Dt,r=nu(e,e.strstart-1-e.prev_match,e.prev_length-Dt),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=iu(e,e.ins_h,e.window[e.strstart+Dt-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=Dt-1,e.strstart++,r&&(Ro(e,!1),e.strm.avail_out===0))return Wi}else if(e.match_available){if(r=nu(e,0,e.window[e.strstart-1]),r&&Ro(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Wi}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=nu(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart{let n,r,i,o;const s=e.window;for(;;){if(e.lookahead<=Hl){if(jf(e),e.lookahead<=Hl&&t===ru)return Wi;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=Dt&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){o=e.strstart+Hl;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=Dt?(n=nu(e,1,e.match_length-Dt),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=0,t===Qo?(Ro(e,!0),e.strm.avail_out===0?Oc:ch):e.sym_next&&(Ro(e,!1),e.strm.avail_out===0)?Wi:uh},joe=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(jf(e),e.lookahead===0)){if(t===ru)return Wi;break}if(e.match_length=0,n=nu(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ro(e,!1),e.strm.avail_out===0))return Wi}return e.insert=0,t===Qo?(Ro(e,!0),e.strm.avail_out===0?Oc:ch):e.sym_next&&(Ro(e,!1),e.strm.avail_out===0)?Wi:uh};function Hs(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const ip=[new Hs(0,0,0,0,tL),new Hs(4,4,8,4,G2),new Hs(4,5,16,8,G2),new Hs(4,6,32,32,G2),new Hs(4,4,16,16,md),new Hs(8,16,32,32,md),new Hs(8,16,128,128,md),new Hs(8,32,128,256,md),new Hs(32,128,258,1024,md),new Hs(32,258,258,4096,md)],Voe=e=>{e.window_size=2*e.w_size,Fl(e.head),e.max_lazy_match=ip[e.level].max_lazy,e.good_match=ip[e.level].good_length,e.nice_match=ip[e.level].nice_length,e.max_chain_length=ip[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=Dt-1,e.match_available=0,e.ins_h=0};function Goe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=F_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Doe*2),this.dyn_dtree=new Uint16Array((2*Moe+1)*2),this.bl_tree=new Uint16Array((2*Noe+1)*2),Fl(this.dyn_ltree),Fl(this.dyn_dtree),Fl(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Loe+1),this.heap=new Uint16Array(2*wC+1),Fl(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*wC+1),Fl(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Am=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Uf&&t.status!==k5&&t.status!==xC&&t.status!==CC&&t.status!==EC&&t.status!==TC&&t.status!==uc&&t.status!==rp?1:0},nL=e=>{if(Am(e))return cc(e,da);e.total_in=e.total_out=0,e.data_type=Aoe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?k5:t.wrap?Uf:uc,e.adler=t.wrap===2?0:1,t.last_flush=-2,moe(t),yi},rL=e=>{const t=nL(e);return t===yi&&Voe(e.state),t},Hoe=(e,t)=>Am(e)||e.state.wrap!==2?da:(e.state.gzhead=t,yi),iL=(e,t,n,r,i,o)=>{if(!e)return da;let s=1;if(t===woe&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>koe||n!==F_||r<8||r>15||t<0||t>9||o<0||o>Eoe||r===8&&s!==1)return cc(e,da);r===8&&(r=9);const a=new Goe;return e.state=a,a.strm=e,a.status=Uf,a.wrap=s,a.gzhead=null,a.w_bits=r,a.w_size=1<iL(e,t,F_,Poe,Roe,Toe),Woe=(e,t)=>{if(Am(e)||t>yP||t<0)return e?cc(e,da):da;const n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===rp&&t!==Qo)return cc(e,e.avail_out===0?V2:da);const r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Co(e),e.avail_out===0)return n.last_flush=-1,yi}else if(e.avail_in===0&&_P(t)<=_P(r)&&t!==Qo)return cc(e,V2);if(n.status===rp&&e.avail_in!==0)return cc(e,V2);if(n.status===Uf&&n.wrap===0&&(n.status=uc),n.status===Uf){let i=F_+(n.w_bits-8<<4)<<8,o=-1;if(n.strategy>=ky||n.level<2?o=0:n.level<6?o=1:n.level===6?o=2:o=3,i|=o<<6,n.strstart!==0&&(i|=$oe),i+=31-i%31,Lh(n,i),n.strstart!==0&&(Lh(n,e.adler>>>16),Lh(n,e.adler&65535)),e.adler=1,n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(n.status===k5){if(e.adler=0,Yt(n,31),Yt(n,139),Yt(n,8),n.gzhead)Yt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yt(n,n.gzhead.time&255),Yt(n,n.gzhead.time>>8&255),Yt(n,n.gzhead.time>>16&255),Yt(n,n.gzhead.time>>24&255),Yt(n,n.level===9?2:n.strategy>=ky||n.level<2?4:0),Yt(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(Yt(n,n.gzhead.extra.length&255),Yt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Zr(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=xC;else if(Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,0),Yt(n,n.level===9?2:n.strategy>=ky||n.level<2?4:0),Yt(n,Foe),n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(n.status===xC){if(n.gzhead.extra){let i=n.pending,o=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+o>n.pending_buf_size;){let a=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=a,Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0,o-=a}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending+=o,n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=CC}if(n.status===CC){if(n.gzhead.name){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0}n.gzindexi&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=EC}if(n.status===EC){if(n.gzhead.comment){let i=n.pending,o;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i)),Co(e),n.pending!==0)return n.last_flush=-1,yi;i=0}n.gzindexi&&(e.adler=Zr(e.adler,n.pending_buf,n.pending-i,i))}n.status=TC}if(n.status===TC){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Co(e),n.pending!==0))return n.last_flush=-1,yi;Yt(n,e.adler&255),Yt(n,e.adler>>8&255),e.adler=0}if(n.status=uc,Co(e),n.pending!==0)return n.last_flush=-1,yi}if(e.avail_in!==0||n.lookahead!==0||t!==ru&&n.status!==rp){let i=n.level===0?tL(n,t):n.strategy===ky?joe(n,t):n.strategy===Coe?Uoe(n,t):ip[n.level].func(n,t);if((i===Oc||i===ch)&&(n.status=rp),i===Wi||i===Oc)return e.avail_out===0&&(n.last_flush=-1),yi;if(i===uh&&(t===_oe?voe(n):t!==yP&&(SC(n,0,0,!1),t===boe&&(Fl(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Co(e),e.avail_out===0))return n.last_flush=-1,yi}return t!==Qo?yi:n.wrap<=0?vP:(n.wrap===2?(Yt(n,e.adler&255),Yt(n,e.adler>>8&255),Yt(n,e.adler>>16&255),Yt(n,e.adler>>24&255),Yt(n,e.total_in&255),Yt(n,e.total_in>>8&255),Yt(n,e.total_in>>16&255),Yt(n,e.total_in>>24&255)):(Lh(n,e.adler>>>16),Lh(n,e.adler&65535)),Co(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?yi:vP)},Koe=e=>{if(Am(e))return da;const t=e.state.status;return e.state=null,t===uc?cc(e,Soe):yi},Xoe=(e,t)=>{let n=t.length;if(Am(e))return da;const r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==Uf||r.lookahead)return da;if(i===1&&(e.adler=Ag(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(Fl(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}const o=e.avail_in,s=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,jf(r);r.lookahead>=Dt;){let l=r.strstart,u=r.lookahead-(Dt-1);do r.ins_h=iu(r,r.ins_h,r.window[l+Dt-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--u);r.strstart=l,r.lookahead=Dt-1,jf(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=Dt-1,r.match_available=0,e.next_in=s,e.input=a,e.avail_in=o,r.wrap=i,yi};var Qoe=qoe,Yoe=iL,Zoe=rL,Joe=nL,ese=Hoe,tse=Woe,nse=Koe,rse=Xoe,ise="pako deflate (from Nodeca project)",Cp={deflateInit:Qoe,deflateInit2:Yoe,deflateReset:Zoe,deflateResetKeep:Joe,deflateSetHeader:ese,deflate:tse,deflateEnd:nse,deflateSetDictionary:rse,deflateInfo:ise};const ose=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var sse=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(const r in n)ose(n,r)&&(e[r]=n[r])}}return e},ase=e=>{let t=0;for(let r=0,i=e.length;r=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;kg[254]=kg[254]=1;var lse=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,o,s=e.length,a=0;for(i=0;i>>6,t[o++]=128|n&63):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|n&63):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|n&63);return t};const use=(e,t)=>{if(t<65534&&e.subarray&&oL)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{const n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i;const o=new Array(n*2);for(i=0,r=0;r4){o[i++]=65533,r+=a-1;continue}for(s&=a===2?31:a===3?15:7;a>1&&r1){o[i++]=65533;continue}s<65536?o[i++]=s:(s-=65536,o[i++]=55296|s>>10&1023,o[i++]=56320|s&1023)}return use(o,i)},dse=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+kg[e[n]]>t?n:t},Pg={string2buf:lse,buf2string:cse,utf8border:dse};function fse(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var sL=fse;const aL=Object.prototype.toString,{Z_NO_FLUSH:hse,Z_SYNC_FLUSH:pse,Z_FULL_FLUSH:gse,Z_FINISH:mse,Z_OK:e1,Z_STREAM_END:yse,Z_DEFAULT_COMPRESSION:vse,Z_DEFAULT_STRATEGY:_se,Z_DEFLATED:bse}=Tm;function P5(e){this.options=B_.assign({level:vse,method:bse,chunkSize:16384,windowBits:15,memLevel:8,strategy:_se},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sL,this.strm.avail_out=0;let n=Cp.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==e1)throw new Error(zf[n]);if(t.header&&Cp.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Pg.string2buf(t.dictionary):aL.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Cp.deflateSetDictionary(this.strm,r),n!==e1)throw new Error(zf[n]);this._dict_set=!0}}P5.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,o;if(this.ended)return!1;for(t===~~t?o=t:o=t===!0?mse:hse,typeof e=="string"?n.input=Pg.string2buf(e):aL.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(o===pse||o===gse)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Cp.deflate(n,o),i===yse)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Cp.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===e1;if(n.avail_out===0){this.onData(n.output);continue}if(o>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};P5.prototype.onData=function(e){this.chunks.push(e)};P5.prototype.onEnd=function(e){e===e1&&(this.result=B_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};const Py=16209,Sse=16191;var wse=function(t,n){let r,i,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,x,C,A,T;const k=t.state;r=t.next_in,A=t.input,i=r+(t.avail_in-5),o=t.next_out,T=t.output,s=o-(n-t.avail_out),a=o+(t.avail_out-257),l=k.dmax,u=k.wsize,c=k.whave,d=k.wnext,f=k.window,h=k.hold,p=k.bits,m=k.lencode,b=k.distcode,_=(1<>>24,h>>>=v,p-=v,v=g>>>16&255,v===0)T[o++]=g&65535;else if(v&16){S=g&65535,v&=15,v&&(p>>=v,p-=v),p<15&&(h+=A[r++]<>>24,h>>>=v,p-=v,v=g>>>16&255,v&16){if(w=g&65535,v&=15,pl){t.msg="invalid distance too far back",k.mode=Py;break e}if(h>>>=v,p-=v,v=o-s,w>v){if(v=w-v,v>c&&k.sane){t.msg="invalid distance too far back",k.mode=Py;break e}if(x=0,C=f,d===0){if(x+=u-v,v2;)T[o++]=C[x++],T[o++]=C[x++],T[o++]=C[x++],S-=3;S&&(T[o++]=C[x++],S>1&&(T[o++]=C[x++]))}else{x=o-w;do T[o++]=T[x++],T[o++]=T[x++],T[o++]=T[x++],S-=3;while(S>2);S&&(T[o++]=T[x++],S>1&&(T[o++]=T[x++]))}}else if(v&64){t.msg="invalid distance code",k.mode=Py;break e}else{g=b[(g&65535)+(h&(1<>3,r-=S,p-=S<<3,h&=(1<{const l=a.bits;let u=0,c=0,d=0,f=0,h=0,p=0,m=0,b=0,_=0,y=0,g,v,S,w,x,C=null,A;const T=new Uint16Array(yd+1),k=new Uint16Array(yd+1);let L=null,N,E,P;for(u=0;u<=yd;u++)T[u]=0;for(c=0;c=1&&T[f]===0;f--);if(h>f&&(h=f),f===0)return i[o++]=1<<24|64<<16|0,i[o++]=1<<24|64<<16|0,a.bits=1,0;for(d=1;d0&&(e===wP||f!==1))return-1;for(k[1]=0,u=1;ubP||e===xP&&_>SP)return 1;for(;;){N=u-m,s[c]+1=A?(E=L[s[c]-A],P=C[s[c]-A]):(E=32+64,P=0),g=1<>m)+v]=N<<24|E<<16|P|0;while(v!==0);for(g=1<>=1;if(g!==0?(y&=g-1,y+=g):y=0,c++,--T[u]===0){if(u===f)break;u=t[n+s[c]]}if(u>h&&(y&w)!==S){for(m===0&&(m=h),x+=d,p=u-m,b=1<bP||e===xP&&_>SP)return 1;S=y&w,i[S]=h<<24|p<<16|x-o|0}}return y!==0&&(i[x+y]=u-m<<24|64<<16|0),a.bits=h,0};var Ep=Ase;const kse=0,lL=1,uL=2,{Z_FINISH:CP,Z_BLOCK:Pse,Z_TREES:Ry,Z_OK:Mc,Z_STREAM_END:Rse,Z_NEED_DICT:Ise,Z_STREAM_ERROR:is,Z_DATA_ERROR:cL,Z_MEM_ERROR:dL,Z_BUF_ERROR:Ose,Z_DEFLATED:EP}=Tm,z_=16180,TP=16181,AP=16182,kP=16183,PP=16184,RP=16185,IP=16186,OP=16187,MP=16188,NP=16189,t1=16190,Pa=16191,q2=16192,DP=16193,W2=16194,LP=16195,$P=16196,FP=16197,BP=16198,Iy=16199,Oy=16200,zP=16201,UP=16202,jP=16203,VP=16204,GP=16205,K2=16206,HP=16207,qP=16208,Hn=16209,fL=16210,hL=16211,Mse=852,Nse=592,Dse=15,Lse=Dse,WP=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function $se(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Xc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.modehL?1:0},pL=e=>{if(Xc(e))return is;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=z_,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(Mse),t.distcode=t.distdyn=new Int32Array(Nse),t.sane=1,t.back=-1,Mc},gL=e=>{if(Xc(e))return is;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,pL(e)},mL=(e,t)=>{let n;if(Xc(e))return is;const r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?is:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,gL(e))},yL=(e,t)=>{if(!e)return is;const n=new $se;e.state=n,n.strm=e,n.window=null,n.mode=z_;const r=mL(e,t);return r!==Mc&&(e.state=null),r},Fse=e=>yL(e,Lse);let KP=!0,X2,Q2;const Bse=e=>{if(KP){X2=new Int32Array(512),Q2=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Ep(lL,e.lens,0,288,X2,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ep(uL,e.lens,0,32,Q2,0,e.work,{bits:5}),KP=!1}e.lencode=X2,e.lenbits=9,e.distcode=Q2,e.distbits=5},vL=(e,t,n,r)=>{let i;const o=e.state;return o.window===null&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>r&&(i=r),o.window.set(t.subarray(n-r,n-r+i),o.wnext),r-=i,r?(o.window.set(t.subarray(n-r,n),0),o.wnext=r,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,r,i,o,s,a,l,u,c,d,f,h,p,m,b=0,_,y,g,v,S,w,x,C;const A=new Uint8Array(4);let T,k;const L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Xc(e)||!e.output||!e.input&&e.avail_in!==0)return is;n=e.state,n.mode===Pa&&(n.mode=q2),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,d=a,f=l,C=Mc;e:for(;;)switch(n.mode){case z_:if(n.wrap===0){n.mode=q2;break}for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Zr(n.check,A,2,0),u=0,c=0,n.mode=TP;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((u&255)<<8)+(u>>8))%31){e.msg="incorrect header check",n.mode=Hn;break}if((u&15)!==EP){e.msg="unknown compression method",n.mode=Hn;break}if(u>>>=4,c-=4,x=(u&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=Hn;break}n.dmax=1<>8&1),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0,n.mode=AP;case AP:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>8&255,A[2]=u>>>16&255,A[3]=u>>>24&255,n.check=Zr(n.check,A,4,0)),u=0,c=0,n.mode=kP;case kP:for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>8),n.flags&512&&n.wrap&4&&(A[0]=u&255,A[1]=u>>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0,n.mode=PP;case PP:if(n.flags&1024){for(;c<16;){if(a===0)break e;a--,u+=r[o++]<>>8&255,n.check=Zr(n.check,A,2,0)),u=0,c=0}else n.head&&(n.head.extra=null);n.mode=RP;case RP:if(n.flags&1024&&(h=n.length,h>a&&(h=a),h&&(n.head&&(x=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(o,o+h),x)),n.flags&512&&n.wrap&4&&(n.check=Zr(n.check,r,h,o)),a-=h,o+=h,n.length-=h),n.length))break e;n.length=0,n.mode=IP;case IP:if(n.flags&2048){if(a===0)break e;h=0;do x=r[o+h++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&h>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Pa;break;case NP:for(;c<32;){if(a===0)break e;a--,u+=r[o++]<>>=c&7,c-=c&7,n.mode=K2;break}for(;c<3;){if(a===0)break e;a--,u+=r[o++]<>>=1,c-=1,u&3){case 0:n.mode=DP;break;case 1:if(Bse(n),n.mode=Iy,t===Ry){u>>>=2,c-=2;break e}break;case 2:n.mode=$P;break;case 3:e.msg="invalid block type",n.mode=Hn}u>>>=2,c-=2;break;case DP:for(u>>>=c&7,c-=c&7;c<32;){if(a===0)break e;a--,u+=r[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Hn;break}if(n.length=u&65535,u=0,c=0,n.mode=W2,t===Ry)break e;case W2:n.mode=LP;case LP:if(h=n.length,h){if(h>a&&(h=a),h>l&&(h=l),h===0)break e;i.set(r.subarray(o,o+h),s),a-=h,o+=h,l-=h,s+=h,n.length-=h;break}n.mode=Pa;break;case $P:for(;c<14;){if(a===0)break e;a--,u+=r[o++]<>>=5,c-=5,n.ndist=(u&31)+1,u>>>=5,c-=5,n.ncode=(u&15)+4,u>>>=4,c-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Hn;break}n.have=0,n.mode=FP;case FP:for(;n.have>>=3,c-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,T={bits:n.lenbits},C=Ep(kse,n.lens,0,19,n.lencode,0,n.work,T),n.lenbits=T.bits,C){e.msg="invalid code lengths set",n.mode=Hn;break}n.have=0,n.mode=BP;case BP:for(;n.have>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=_,c-=_,n.lens[n.have++]=g;else{if(g===16){for(k=_+2;c>>=_,c-=_,n.have===0){e.msg="invalid bit length repeat",n.mode=Hn;break}x=n.lens[n.have-1],h=3+(u&3),u>>>=2,c-=2}else if(g===17){for(k=_+3;c>>=_,c-=_,x=0,h=3+(u&7),u>>>=3,c-=3}else{for(k=_+7;c>>=_,c-=_,x=0,h=11+(u&127),u>>>=7,c-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Hn;break}for(;h--;)n.lens[n.have++]=x}}if(n.mode===Hn)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=Hn;break}if(n.lenbits=9,T={bits:n.lenbits},C=Ep(lL,n.lens,0,n.nlen,n.lencode,0,n.work,T),n.lenbits=T.bits,C){e.msg="invalid literal/lengths set",n.mode=Hn;break}if(n.distbits=6,n.distcode=n.distdyn,T={bits:n.distbits},C=Ep(uL,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,T),n.distbits=T.bits,C){e.msg="invalid distances set",n.mode=Hn;break}if(n.mode=Iy,t===Ry)break e;case Iy:n.mode=Oy;case Oy:if(a>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=o,e.avail_in=a,n.hold=u,n.bits=c,wse(e,f),s=e.next_out,i=e.output,l=e.avail_out,o=e.next_in,r=e.input,a=e.avail_in,u=n.hold,c=n.bits,n.mode===Pa&&(n.back=-1);break}for(n.back=0;b=n.lencode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,n.length=g,y===0){n.mode=GP;break}if(y&32){n.back=-1,n.mode=Pa;break}if(y&64){e.msg="invalid literal/length code",n.mode=Hn;break}n.extra=y&15,n.mode=zP;case zP:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=UP;case UP:for(;b=n.distcode[u&(1<>>24,y=b>>>16&255,g=b&65535,!(_<=c);){if(a===0)break e;a--,u+=r[o++]<>v)],_=b>>>24,y=b>>>16&255,g=b&65535,!(v+_<=c);){if(a===0)break e;a--,u+=r[o++]<>>=v,c-=v,n.back+=v}if(u>>>=_,c-=_,n.back+=_,y&64){e.msg="invalid distance code",n.mode=Hn;break}n.offset=g,n.extra=y&15,n.mode=jP;case jP:if(n.extra){for(k=n.extra;c>>=n.extra,c-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Hn;break}n.mode=VP;case VP:if(l===0)break e;if(h=f-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Hn;break}h>n.wnext?(h-=n.wnext,p=n.wsize-h):p=n.wnext-h,h>n.length&&(h=n.length),m=n.window}else m=i,p=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do i[s++]=m[p++];while(--h);n.length===0&&(n.mode=Oy);break;case GP:if(l===0)break e;i[s++]=n.length,l--,n.mode=Oy;break;case K2:if(n.wrap){for(;c<32;){if(a===0)break e;a--,u|=r[o++]<{if(Xc(e))return is;let t=e.state;return t.window&&(t.window=null),e.state=null,Mc},jse=(e,t)=>{if(Xc(e))return is;const n=e.state;return n.wrap&2?(n.head=t,t.done=!1,Mc):is},Vse=(e,t)=>{const n=t.length;let r,i,o;return Xc(e)||(r=e.state,r.wrap!==0&&r.mode!==t1)?is:r.mode===t1&&(i=1,i=Ag(i,t,n,0),i!==r.check)?cL:(o=vL(e,t,n,n),o?(r.mode=fL,dL):(r.havedict=1,Mc))};var Gse=gL,Hse=mL,qse=pL,Wse=Fse,Kse=yL,Xse=zse,Qse=Use,Yse=jse,Zse=Vse,Jse="pako inflate (from Nodeca project)",ja={inflateReset:Gse,inflateReset2:Hse,inflateResetKeep:qse,inflateInit:Wse,inflateInit2:Kse,inflate:Xse,inflateEnd:Qse,inflateGetHeader:Yse,inflateSetDictionary:Zse,inflateInfo:Jse};function eae(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var tae=eae;const _L=Object.prototype.toString,{Z_NO_FLUSH:nae,Z_FINISH:rae,Z_OK:Rg,Z_STREAM_END:Y2,Z_NEED_DICT:Z2,Z_STREAM_ERROR:iae,Z_DATA_ERROR:XP,Z_MEM_ERROR:oae}=Tm;function km(e){this.options=B_.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new sL,this.strm.avail_out=0;let n=ja.inflateInit2(this.strm,t.windowBits);if(n!==Rg)throw new Error(zf[n]);if(this.header=new tae,ja.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Pg.string2buf(t.dictionary):_L.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ja.inflateSetDictionary(this.strm,t.dictionary),n!==Rg)))throw new Error(zf[n])}km.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let o,s,a;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?rae:nae,_L.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),o=ja.inflate(n,s),o===Z2&&i&&(o=ja.inflateSetDictionary(n,i),o===Rg?o=ja.inflate(n,s):o===XP&&(o=Z2));n.avail_in>0&&o===Y2&&n.state.wrap>0&&e[n.next_in]!==0;)ja.inflateReset(n),o=ja.inflate(n,s);switch(o){case iae:case XP:case Z2:case oae:return this.onEnd(o),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(n.avail_out===0||o===Y2))if(this.options.to==="string"){let l=Pg.utf8border(n.output,n.next_out),u=n.next_out-l,c=Pg.buf2string(n.output,l);n.next_out=u,n.avail_out=r-u,u&&n.output.set(n.output.subarray(l,l+u),0),this.onData(c)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(o===Rg&&a===0)){if(o===Y2)return o=ja.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};km.prototype.onData=function(e){this.chunks.push(e)};km.prototype.onEnd=function(e){e===Rg&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=B_.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function R5(e,t){const n=new km(t);if(n.push(e),n.err)throw n.msg||zf[n.err];return n.result}function sae(e,t){return t=t||{},t.raw=!0,R5(e,t)}var aae=km,lae=R5,uae=sae,cae=R5,dae=Tm,fae={Inflate:aae,inflate:lae,inflateRaw:uae,ungzip:cae,constants:dae};const{Inflate:GRe,inflate:hae,inflateRaw:HRe,ungzip:qRe}=fae;var bL=hae;const SL=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=3988292384^t>>>1:t=t>>>1;SL[e]=t}function pae(e){let t=-1;for(let n=0;n>>8;return t^-1}var qn;(function(e){e[e.GRAYSCALE=0]="GRAYSCALE",e[e.TRUE_COLOR=2]="TRUE_COLOR",e[e.PALETTE=3]="PALETTE",e[e.GRAYSCALE_WITH_ALPHA=4]="GRAYSCALE_WITH_ALPHA",e[e.TRUE_COLOR_WITH_ALPHA=6]="TRUE_COLOR_WITH_ALPHA"})(qn||(qn={}));const gae={[qn.GRAYSCALE]:1,[qn.TRUE_COLOR]:3,[qn.PALETTE]:1,[qn.GRAYSCALE_WITH_ALPHA]:2,[qn.TRUE_COLOR_WITH_ALPHA]:4},mae=1;var Ao;(function(e){e[e.NONE=0]="NONE",e[e.SUB=1]="SUB",e[e.UP=2]="UP",e[e.AVERAGE=3]="AVERAGE",e[e.PAETH=4]="PAETH"})(Ao||(Ao={}));const yae={[Ao.NONE](e){return e},[Ao.SUB](e,t){const n=new Uint8Array(e.length);for(let r=0;r>1;r[i]=e[i]+a}return r},[Ao.PAETH](e,t,n){const r=new Uint8Array(e.length);for(let i=0;i>7&1,i>>6&1,i>>5&1,i>>4&1,i>>3&1,i>>2&1,i>>1&1,i&1)}else if(t===2){const i=e[r++];n.push(i>>6&3,i>>4&3,i>>2&3,i&3)}else if(t===4){const i=e[r++];n.push(i>>4&15,i&15)}else if(t===8){const i=e[r++];n.push(i)}else if(t===16)n.push(e[r++]<<8|e[r++]);else throw new Error("Unsupported depth: "+t);return n}const xL=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];function _ae(e,t,n){if(!e)return[{passWidth:t,passHeight:n,passIndex:0}];const r=[];return xL.forEach(function({x:i,y:o},s){const a=t%8,l=n%8,u=t-a>>3,c=n-l>>3;let d=u*i.length;for(let h=0;h>3||1;let p=0,m=new Uint8Array;for(let b=0;b>3)+mae,w=u[p];if(!(w in Ao))throw new Error("Unsupported filter type: "+w);const x=yae[w],C=x(u.slice(p+1,p+S),h,m);m=C;let A=0;const T=vae(C,o);for(let L=0;L<_;L++){const N=k();a&&N[0]===a[0]&&N[1]===a[1]&&N[2]===a[2]&&(N[3]=0);const E=bae(t,r,g,L,v);for(let P=0;P127)if(r>191&&r<224){if(t>=e.length)throw new Error("UTF-8 decode: incomplete 2-byte sequence");r=(r&31)<<6|e[t++]&63}else if(r>223&&r<240){if(t+1>=e.length)throw new Error("UTF-8 decode: incomplete 3-byte sequence");r=(r&15)<<12|(e[t++]&63)<<6|e[t++]&63}else if(r>239&&r<248){if(t+2>=e.length)throw new Error("UTF-8 decode: incomplete 4-byte sequence");r=(r&7)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63}else throw new Error("UTF-8 decode: unknown multibyte start 0x"+r.toString(16)+" at index "+(t-1));if(r<=65535)n+=String.fromCharCode(r);else if(r<=1114111)r-=65536,n+=String.fromCharCode(r>>10|55296),n+=String.fromCharCode(r&1023|56320);else throw new Error("UTF-8 decode: code point 0x"+r.toString(16)+" exceeds UTF-16 reach")}return n}function xae(e,t){const n=new Uint8Array(e.length+t.length);return n.set(e),n.set(t,e.length),n}const xl=1e5;function Cae(e){const t=new Uint8Array(e);let n=new Uint8Array;const r={width:0,height:0,depth:0,colorType:0,compression:0,interlace:0,filter:0,data:[]};let i=0;function o(){return t[i++]<<24|t[i++]<<16|t[i++]<<8|t[i++]}function s(){return t[i++]<<8|t[i++]}function a(){return t[i++]}function l(){const R=[];let I=0;for(;(I=t[i++])!==0;)R.push(I);return new Uint8Array(R)}function u(R){const I=i+R;let O="";for(;i=0&&QP.call(t.callee)==="[object Function]"),r},tw,YP;function kae(){if(YP)return tw;YP=1;var e;if(!Object.keys){var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=EL,i=Object.prototype.propertyIsEnumerable,o=!i.call({toString:null},"toString"),s=i.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(f){var h=f.constructor;return h&&h.prototype===f},u={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},c=function(){if(typeof window>"u")return!1;for(var f in window)try{if(!u["$"+f]&&t.call(window,f)&&window[f]!==null&&typeof window[f]=="object")try{l(window[f])}catch{return!0}}catch{return!0}return!1}(),d=function(f){if(typeof window>"u"||!c)return l(f);try{return l(f)}catch{return!1}};e=function(h){var p=h!==null&&typeof h=="object",m=n.call(h)==="[object Function]",b=r(h),_=p&&n.call(h)==="[object String]",y=[];if(!p&&!m&&!b)throw new TypeError("Object.keys called on a non-object");var g=s&&m;if(_&&h.length>0&&!t.call(h,0))for(var v=0;v0)for(var S=0;S"u"||!Yr?Ot:Yr(Uint8Array),Sc={"%AggregateError%":typeof AggregateError>"u"?Ot:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?Ot:ArrayBuffer,"%ArrayIteratorPrototype%":vd&&Yr?Yr([][Symbol.iterator]()):Ot,"%AsyncFromSyncIteratorPrototype%":Ot,"%AsyncFunction%":Rd,"%AsyncGenerator%":Rd,"%AsyncGeneratorFunction%":Rd,"%AsyncIteratorPrototype%":Rd,"%Atomics%":typeof Atomics>"u"?Ot:Atomics,"%BigInt%":typeof BigInt>"u"?Ot:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?Ot:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?Ot:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?Ot:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?Ot:Float32Array,"%Float64Array%":typeof Float64Array>"u"?Ot:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?Ot:FinalizationRegistry,"%Function%":AL,"%GeneratorFunction%":Rd,"%Int8Array%":typeof Int8Array>"u"?Ot:Int8Array,"%Int16Array%":typeof Int16Array>"u"?Ot:Int16Array,"%Int32Array%":typeof Int32Array>"u"?Ot:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":vd&&Yr?Yr(Yr([][Symbol.iterator]())):Ot,"%JSON%":typeof JSON=="object"?JSON:Ot,"%Map%":typeof Map>"u"?Ot:Map,"%MapIteratorPrototype%":typeof Map>"u"||!vd||!Yr?Ot:Yr(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?Ot:Promise,"%Proxy%":typeof Proxy>"u"?Ot:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?Ot:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?Ot:Set,"%SetIteratorPrototype%":typeof Set>"u"||!vd||!Yr?Ot:Yr(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?Ot:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":vd&&Yr?Yr(""[Symbol.iterator]()):Ot,"%Symbol%":vd?Symbol:Ot,"%SyntaxError%":Vf,"%ThrowTypeError%":Gae,"%TypedArray%":qae,"%TypeError%":hf,"%Uint8Array%":typeof Uint8Array>"u"?Ot:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?Ot:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?Ot:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?Ot:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?Ot:WeakMap,"%WeakRef%":typeof WeakRef>"u"?Ot:WeakRef,"%WeakSet%":typeof WeakSet>"u"?Ot:WeakSet};if(Yr)try{null.error}catch(e){var Wae=Yr(Yr(e));Sc["%Error.prototype%"]=Wae}var Kae=function e(t){var n;if(t==="%AsyncFunction%")n=rw("async function () {}");else if(t==="%GeneratorFunction%")n=rw("function* () {}");else if(t==="%AsyncGeneratorFunction%")n=rw("async function* () {}");else if(t==="%AsyncGenerator%"){var r=e("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Yr&&(n=Yr(i.prototype))}return Sc[t]=n,n},n6={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Pm=TL,n1=Vae,Xae=Pm.call(Function.call,Array.prototype.concat),Qae=Pm.call(Function.apply,Array.prototype.splice),r6=Pm.call(Function.call,String.prototype.replace),r1=Pm.call(Function.call,String.prototype.slice),Yae=Pm.call(Function.call,RegExp.prototype.exec),Zae=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Jae=/\\(\\)?/g,ele=function(t){var n=r1(t,0,1),r=r1(t,-1);if(n==="%"&&r!=="%")throw new Vf("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new Vf("invalid intrinsic syntax, expected opening `%`");var i=[];return r6(t,Zae,function(o,s,a,l){i[i.length]=a?r6(l,Jae,"$1"):s||o}),i},tle=function(t,n){var r=t,i;if(n1(n6,r)&&(i=n6[r],r="%"+i[0]+"%"),n1(Sc,r)){var o=Sc[r];if(o===Rd&&(o=Kae(r)),typeof o>"u"&&!n)throw new hf("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:r,value:o}}throw new Vf("intrinsic "+t+" does not exist!")},nle=function(t,n){if(typeof t!="string"||t.length===0)throw new hf("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new hf('"allowMissing" argument must be a boolean');if(Yae(/^%?[^%]*%?$/,t)===null)throw new Vf("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=ele(t),i=r.length>0?r[0]:"",o=tle("%"+i+"%",n),s=o.name,a=o.value,l=!1,u=o.alias;u&&(i=u[0],Qae(r,Xae([0,1],u)));for(var c=1,d=!0;c=r.length){var m=bc(a,f);d=!!m,d&&"get"in m&&!("originalValue"in m.get)?a=m.get:a=a[f]}else d=n1(a,f),a=a[f];d&&!l&&(Sc[s]=a)}}return a},rle=nle,kC=rle("%Object.defineProperty%",!0),PC=function(){if(kC)try{return kC({},"a",{value:1}),!0}catch{return!1}return!1};PC.hasArrayLengthDefineBug=function(){if(!PC())return null;try{return kC([],"length",{value:1}).length!==1}catch{return!0}};var ile=PC,ole=Iae,sle=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",ale=Object.prototype.toString,lle=Array.prototype.concat,kL=Object.defineProperty,ule=function(e){return typeof e=="function"&&ale.call(e)==="[object Function]"},cle=ile(),PL=kL&&cle,dle=function(e,t,n,r){if(t in e){if(r===!0){if(e[t]===n)return}else if(!ule(r)||!r())return}PL?kL(e,t,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[t]=n},RL=function(e,t){var n=arguments.length>2?arguments[2]:{},r=ole(t);sle&&(r=lle.call(r,Object.getOwnPropertySymbols(t)));for(var i=0;i":return t>e;case":<":return t=":return t>=e;case":<=":return t<=e;default:throw new Error("Unimplemented comparison operator: ".concat(n))}};K_.testComparisonRange=Ole;var X_={};Object.defineProperty(X_,"__esModule",{value:!0});X_.testRange=void 0;var Mle=function(e,t){return typeof e=="number"?!(et.max||e===t.max&&!t.maxInclusive):!1};X_.testRange=Mle;(function(e){var t=dt&&dt.__assign||function(){return t=Object.assign||function(c){for(var d,f=1,h=arguments.length;f0?{path:l.path,query:new RegExp("("+l.keywords.map(function(u){return(0,Lle.escapeRegexString)(u.trim())}).join("|")+")")}:{path:l.path}})};Q_.highlight=Fle;var Y_={},$L={exports:{}};(function(e){(function(t,n){e.exports?e.exports=n():t.nearley=n()})(dt,function(){function t(u,c,d){return this.id=++t.highestId,this.name=u,this.symbols=c,this.postprocess=d,this}t.highestId=0,t.prototype.toString=function(u){var c=typeof u>"u"?this.symbols.map(l).join(" "):this.symbols.slice(0,u).map(l).join(" ")+" ● "+this.symbols.slice(u).map(l).join(" ");return this.name+" → "+c};function n(u,c,d,f){this.rule=u,this.dot=c,this.reference=d,this.data=[],this.wantedBy=f,this.isComplete=this.dot===u.symbols.length}n.prototype.toString=function(){return"{"+this.rule.toString(this.dot)+"}, from: "+(this.reference||0)},n.prototype.nextState=function(u){var c=new n(this.rule,this.dot+1,this.reference,this.wantedBy);return c.left=this,c.right=u,c.isComplete&&(c.data=c.build(),c.right=void 0),c},n.prototype.build=function(){var u=[],c=this;do u.push(c.right.data),c=c.left;while(c.left);return u.reverse(),u},n.prototype.finish=function(){this.rule.postprocess&&(this.data=this.rule.postprocess(this.data,this.reference,s.fail))};function r(u,c){this.grammar=u,this.index=c,this.states=[],this.wants={},this.scannable=[],this.completed={}}r.prototype.process=function(u){for(var c=this.states,d=this.wants,f=this.completed,h=0;h0&&c.push(" ^ "+f+" more lines identical to this"),f=0,c.push(" "+m)),d=m}},s.prototype.getSymbolDisplay=function(u){return a(u)},s.prototype.buildFirstStateStack=function(u,c){if(c.indexOf(u)!==-1)return null;if(u.wantedBy.length===0)return[u];var d=u.wantedBy[0],f=[u].concat(c),h=this.buildFirstStateStack(d,f);return h===null?null:[u].concat(h)},s.prototype.save=function(){var u=this.table[this.current];return u.lexerState=this.lexerState,u},s.prototype.restore=function(u){var c=u.index;this.current=c,this.table[c]=u,this.table.splice(c+1),this.lexerState=u.lexerState,this.results=this.finish()},s.prototype.rewind=function(u){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[u])},s.prototype.finish=function(){var u=[],c=this.grammar.start,d=this.table[this.table.length-1];return d.states.forEach(function(f){f.rule.name===c&&f.dot===f.rule.symbols.length&&f.reference===0&&f.data!==s.fail&&u.push(f)}),u.map(function(f){return f.data})};function a(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return"character matching "+u;if(u.type)return u.type+" token";if(u.test)return"token matching "+String(u.test);throw new Error("Unknown symbol type: "+u)}}function l(u){var c=typeof u;if(c==="string")return u;if(c==="object"){if(u.literal)return JSON.stringify(u.literal);if(u instanceof RegExp)return u.toString();if(u.type)return"%"+u.type;if(u.test)return"<"+String(u.test)+">";throw new Error("Unknown symbol type: "+u)}}return{Parser:s,Grammar:i,Rule:t}})})($L);var Ble=$L.exports,Nc={},FL={},Ou={};Ou.__esModule=void 0;Ou.__esModule=!0;var zle=typeof Object.setPrototypeOf=="function",Ule=typeof Object.getPrototypeOf=="function",jle=typeof Object.defineProperty=="function",Vle=typeof Object.create=="function",Gle=typeof Object.prototype.hasOwnProperty=="function",Hle=function(t,n){zle?Object.setPrototypeOf(t,n):t.__proto__=n};Ou.setPrototypeOf=Hle;var qle=function(t){return Ule?Object.getPrototypeOf(t):t.__proto__||t.prototype};Ou.getPrototypeOf=qle;var i6=!1,Wle=function e(t,n,r){if(jle&&!i6)try{Object.defineProperty(t,n,r)}catch{i6=!0,e(t,n,r)}else t[n]=r.value};Ou.defineProperty=Wle;var BL=function(t,n){return Gle?t.hasOwnProperty(t,n):t[n]===void 0};Ou.hasOwnProperty=BL;var Kle=function(t,n){if(Vle)return Object.create(t,n);var r=function(){};r.prototype=t;var i=new r;if(typeof n>"u")return i;if(typeof n=="null")throw new Error("PropertyDescriptors must not be null.");if(typeof n=="object")for(var o in n)BL(n,o)&&(i[o]=n[o].value);return i};Ou.objectCreate=Kle;(function(e){e.__esModule=void 0,e.__esModule=!0;var t=Ou,n=t.setPrototypeOf,r=t.getPrototypeOf,i=t.defineProperty,o=t.objectCreate,s=new Error().toString()==="[object Error]",a="";function l(u){var c=this.constructor,d=c.name||function(){var b=c.toString().match(/^function\s*([^\s(]+)/);return b===null?a||"Error":b[1]}(),f=d==="Error",h=f?a:d,p=Error.apply(this,arguments);if(n(p,r(this)),!(p instanceof c)||!(p instanceof l)){var p=this;Error.apply(this,arguments),i(p,"message",{configurable:!0,enumerable:!1,value:u,writable:!0})}if(i(p,"name",{configurable:!0,enumerable:!1,value:h,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(p,f?l:c),p.stack===void 0){var m=new Error(u);m.name=p.name,p.stack=m.stack}return s&&i(p,"toString",{configurable:!0,enumerable:!1,value:function(){return(this.name||"Error")+(typeof this.message>"u"?"":": "+this.message)},writable:!0}),p}a=l.name||"ExtendableError",l.prototype=o(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),e.ExtendableError=l,e.default=e.ExtendableError})(FL);var zL=dt&&dt.__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){if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(Nc,"__esModule",{value:!0});Nc.SyntaxError=Nc.LiqeError=void 0;var Xle=FL,UL=function(e){zL(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(Xle.ExtendableError);Nc.LiqeError=UL;var Qle=function(e){zL(t,e);function t(n,r,i,o){var s=e.call(this,n)||this;return s.message=n,s.offset=r,s.line=i,s.column=o,s}return t}(UL);Nc.SyntaxError=Qle;var N5={},i1=dt&&dt.__assign||function(){return i1=Object.assign||function(e){for(var t,n=1,r=arguments.length;n"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$2"]},{name:"comparison_operator$subexpression$1$string$3",symbols:[{literal:":"},{literal:"<"}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$3"]},{name:"comparison_operator$subexpression$1$string$4",symbols:[{literal:":"},{literal:">"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$4"]},{name:"comparison_operator$subexpression$1$string$5",symbols:[{literal:":"},{literal:"<"},{literal:"="}],postprocess:function(e){return e.join("")}},{name:"comparison_operator$subexpression$1",symbols:["comparison_operator$subexpression$1$string$5"]},{name:"comparison_operator",symbols:["comparison_operator$subexpression$1"],postprocess:function(e,t){return{location:{start:t,end:t+e[0][0].length},type:"ComparisonOperator",operator:e[0][0]}}},{name:"regex",symbols:["regex_body","regex_flags"],postprocess:function(e){return e.join("")}},{name:"regex_body$ebnf$1",symbols:[]},{name:"regex_body$ebnf$1",symbols:["regex_body$ebnf$1","regex_body_char"],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_body",symbols:[{literal:"/"},"regex_body$ebnf$1",{literal:"/"}],postprocess:function(e){return"/"+e[1].join("")+"/"}},{name:"regex_body_char",symbols:[/[^\\]/],postprocess:Ra},{name:"regex_body_char",symbols:[{literal:"\\"},/[^\\]/],postprocess:function(e){return"\\"+e[1]}},{name:"regex_flags",symbols:[]},{name:"regex_flags$ebnf$1",symbols:[/[gmiyusd]/]},{name:"regex_flags$ebnf$1",symbols:["regex_flags$ebnf$1",/[gmiyusd]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"regex_flags",symbols:["regex_flags$ebnf$1"],postprocess:function(e){return e[0].join("")}},{name:"unquoted_value$ebnf$1",symbols:[]},{name:"unquoted_value$ebnf$1",symbols:["unquoted_value$ebnf$1",/[a-zA-Z\.\-_*@#$]/],postprocess:function(e){return e[0].concat([e[1]])}},{name:"unquoted_value",symbols:[/[a-zA-Z_*@#$]/,"unquoted_value$ebnf$1"],postprocess:function(e){return e[0]+e[1].join("")}}],ParserStart:"main"};N5.default=Yle;var jL={},Z_={},Om={};Object.defineProperty(Om,"__esModule",{value:!0});Om.isSafePath=void 0;var Zle=/^(\.(?:[_a-zA-Z][a-zA-Z\d_]*|\0|[1-9]\d*))+$/u,Jle=function(e){return Zle.test(e)};Om.isSafePath=Jle;Object.defineProperty(Z_,"__esModule",{value:!0});Z_.createGetValueFunctionBody=void 0;var eue=Om,tue=function(e){if(!(0,eue.isSafePath)(e))throw new Error("Unsafe path.");var t="return subject"+e;return t.replace(/(\.(\d+))/g,".[$2]").replace(/\./g,"?.")};Z_.createGetValueFunctionBody=tue;(function(e){var t=dt&&dt.__assign||function(){return t=Object.assign||function(o){for(var s,a=1,l=arguments.length;a\d+) col (?\d+)/,aue=function(e){if(e.trim()==="")return{location:{end:0,start:0},type:"EmptyExpression"};var t=new GL.default.Parser(oue),n;try{n=t.feed(e).results}catch(o){if(typeof(o==null?void 0:o.message)=="string"&&typeof(o==null?void 0:o.offset)=="number"){var r=o.message.match(sue);throw r?new nue.SyntaxError("Syntax error at line ".concat(r.groups.line," column ").concat(r.groups.column),o.offset,Number(r.groups.line),Number(r.groups.column)):o}throw o}if(n.length===0)throw new Error("Found no parsings.");if(n.length>1)throw new Error("Ambiguous results.");var i=(0,iue.hydrateAst)(n[0]);return i};Y_.parse=aue;var J_={};Object.defineProperty(J_,"__esModule",{value:!0});J_.test=void 0;var lue=Rm,uue=function(e,t){return(0,lue.filter)(e,[t]).length===1};J_.test=uue;var HL={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.serialize=void 0;var t=function(o,s){return s==="double"?'"'.concat(o,'"'):s==="single"?"'".concat(o,"'"):o},n=function(o){if(o.type==="LiteralExpression")return o.quoted&&typeof o.value=="string"?t(o.value,o.quotes):String(o.value);if(o.type==="RegexExpression")return String(o.value);if(o.type==="RangeExpression"){var s=o.range,a=s.min,l=s.max,u=s.minInclusive,c=s.maxInclusive;return"".concat(u?"[":"{").concat(a," TO ").concat(l).concat(c?"]":"}")}if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")},r=function(o){if(o.type!=="Tag")throw new Error("Expected a tag expression.");var s=o.field,a=o.expression,l=o.operator;if(s.type==="ImplicitField")return n(a);var u=s.quoted?t(s.name,s.quotes):s.name,c=" ".repeat(a.location.start-l.location.end);return u+l.operator+c+n(a)},i=function(o){if(o.type==="ParenthesizedExpression"){if(!("location"in o.expression))throw new Error("Expected location in expression.");if(!o.location.end)throw new Error("Expected location end.");var s=" ".repeat(o.expression.location.start-(o.location.start+1)),a=" ".repeat(o.location.end-o.expression.location.end-1);return"(".concat(s).concat((0,e.serialize)(o.expression)).concat(a,")")}if(o.type==="Tag")return r(o);if(o.type==="LogicalExpression"){var l="";return o.operator.type==="BooleanOperator"?(l+=" ".repeat(o.operator.location.start-o.left.location.end),l+=o.operator.operator,l+=" ".repeat(o.right.location.start-o.operator.location.end)):l=" ".repeat(o.right.location.start-o.left.location.end),"".concat((0,e.serialize)(o.left)).concat(l).concat((0,e.serialize)(o.right))}if(o.type==="UnaryOperator")return(o.operator==="NOT"?"NOT ":o.operator)+(0,e.serialize)(o.operand);if(o.type==="EmptyExpression")return"";throw new Error("Unexpected AST type.")};e.serialize=i})(HL);var eb={};Object.defineProperty(eb,"__esModule",{value:!0});eb.isSafeUnquotedExpression=void 0;var cue=function(e){return/^[#$*@A-Z_a-z][#$*.@A-Z_a-z-]*$/.test(e)};eb.isSafeUnquotedExpression=cue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.isSafeUnquotedExpression=e.serialize=e.SyntaxError=e.LiqeError=e.test=e.parse=e.highlight=e.filter=void 0;var t=Rm;Object.defineProperty(e,"filter",{enumerable:!0,get:function(){return t.filter}});var n=Q_;Object.defineProperty(e,"highlight",{enumerable:!0,get:function(){return n.highlight}});var r=Y_;Object.defineProperty(e,"parse",{enumerable:!0,get:function(){return r.parse}});var i=J_;Object.defineProperty(e,"test",{enumerable:!0,get:function(){return i.test}});var o=Nc;Object.defineProperty(e,"LiqeError",{enumerable:!0,get:function(){return o.LiqeError}}),Object.defineProperty(e,"SyntaxError",{enumerable:!0,get:function(){return o.SyntaxError}});var s=HL;Object.defineProperty(e,"serialize",{enumerable:!0,get:function(){return s.serialize}});var a=eb;Object.defineProperty(e,"isSafeUnquotedExpression",{enumerable:!0,get:function(){return a.isSafeUnquotedExpression}})})(LL);var Mm={},qL={},Dc={};Object.defineProperty(Dc,"__esModule",{value:!0});Dc.ROARR_LOG_FORMAT_VERSION=Dc.ROARR_VERSION=void 0;Dc.ROARR_VERSION="5.0.0";Dc.ROARR_LOG_FORMAT_VERSION="2.0.0";var Nm={};Object.defineProperty(Nm,"__esModule",{value:!0});Nm.logLevels=void 0;Nm.logLevels={debug:20,error:50,fatal:60,info:30,trace:10,warn:40};var WL={},tb={};Object.defineProperty(tb,"__esModule",{value:!0});tb.hasOwnProperty=void 0;const due=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);tb.hasOwnProperty=due;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.hasOwnProperty=void 0;var t=tb;Object.defineProperty(e,"hasOwnProperty",{enumerable:!0,get:function(){return t.hasOwnProperty}})})(WL);var KL={},nb={},rb={};Object.defineProperty(rb,"__esModule",{value:!0});rb.tokenize=void 0;const fue=/(?:%(?([+0-]|-\+))?(?\d+)?(?\d+\$)?(?\.\d+)?(?[%BCESb-iosux]))|(\\%)/g,hue=e=>{let t;const n=[];let r=0,i=0,o=null;for(;(t=fue.exec(e))!==null;){t.index>i&&(o={literal:e.slice(i,t.index),type:"literal"},n.push(o));const s=t[0];i=t.index+s.length,s==="\\%"||s==="%%"?o&&o.type==="literal"?o.literal+="%":(o={literal:"%",type:"literal"},n.push(o)):t.groups&&(o={conversion:t.groups.conversion,flag:t.groups.flag||null,placeholder:s,position:t.groups.position?Number.parseInt(t.groups.position,10)-1:r++,precision:t.groups.precision?Number.parseInt(t.groups.precision.slice(1),10):null,type:"placeholder",width:t.groups.width?Number.parseInt(t.groups.width,10):null},n.push(o))}return i<=e.length-1&&(o&&o.type==="literal"?o.literal+=e.slice(i):n.push({literal:e.slice(i),type:"literal"})),n};rb.tokenize=hue;Object.defineProperty(nb,"__esModule",{value:!0});nb.createPrintf=void 0;const o6=I5,pue=rb,gue=(e,t)=>t.placeholder,mue=e=>{var t;const n=(o,s,a)=>a==="-"?o.padEnd(s," "):a==="-+"?((Number(o)>=0?"+":"")+o).padEnd(s," "):a==="+"?((Number(o)>=0?"+":"")+o).padStart(s," "):a==="0"?o.padStart(s,"0"):o.padStart(s," "),r=(t=e==null?void 0:e.formatUnboundExpression)!==null&&t!==void 0?t:gue,i={};return(o,...s)=>{let a=i[o];a||(a=i[o]=pue.tokenize(o));let l="";for(const u of a)if(u.type==="literal")l+=u.literal;else{let c=s[u.position];if(c===void 0)l+=r(o,u,s);else if(u.conversion==="b")l+=o6.boolean(c)?"true":"false";else if(u.conversion==="B")l+=o6.boolean(c)?"TRUE":"FALSE";else if(u.conversion==="c")l+=c;else if(u.conversion==="C")l+=String(c).toUpperCase();else if(u.conversion==="i"||u.conversion==="d")c=String(Math.trunc(c)),u.width!==null&&(c=n(c,u.width,u.flag)),l+=c;else if(u.conversion==="e")l+=Number(c).toExponential();else if(u.conversion==="E")l+=Number(c).toExponential().toUpperCase();else if(u.conversion==="f")u.precision!==null&&(c=Number(c).toFixed(u.precision)),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="o")l+=(Number.parseInt(String(c),10)>>>0).toString(8);else if(u.conversion==="s")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else if(u.conversion==="S")u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=String(c).toUpperCase();else if(u.conversion==="u")l+=Number.parseInt(String(c),10)>>>0;else if(u.conversion==="x")c=(Number.parseInt(String(c),10)>>>0).toString(16),u.width!==null&&(c=n(String(c),u.width,u.flag)),l+=c;else throw new Error("Unknown format specifier.")}return l}};nb.createPrintf=mue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.printf=e.createPrintf=void 0;const t=nb;Object.defineProperty(e,"createPrintf",{enumerable:!0,get:function(){return t.createPrintf}}),e.printf=t.createPrintf()})(KL);var RC={exports:{}};(function(e,t){const{hasOwnProperty:n}=Object.prototype,r=b();r.configure=b,r.stringify=r,r.default=r,t.stringify=r,t.configure=b,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]|[\ud800-\udbff](?![\udc00-\udfff])|(?:[^\ud800-\udbff]|^)[\udc00-\udfff]/;function o(_){return _.length<5e3&&!i.test(_)?`"${_}"`:JSON.stringify(_)}function s(_){if(_.length>200)return _.sort();for(let y=1;y<_.length;y++){const g=_[y];let v=y;for(;v!==0&&_[v-1]>g;)_[v]=_[v-1],v--;_[v]=g}return _}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function l(_){return a.call(_)!==void 0&&_.length!==0}function u(_,y,g){_.length= 1`)}return g===void 0?1/0:g}function h(_){return _===1?"1 item":`${_} items`}function p(_){const y=new Set;for(const g of _)(typeof g=="string"||typeof g=="number")&&y.add(String(g));return y}function m(_){if(n.call(_,"strict")){const y=_.strict;if(typeof y!="boolean")throw new TypeError('The "strict" argument must be of type boolean');if(y)return g=>{let v=`Object can not safely be stringified. Received type ${typeof g}`;throw typeof g!="function"&&(v+=` (${g.toString()})`),new Error(v)}}}function b(_){_={..._};const y=m(_);y&&(_.bigint===void 0&&(_.bigint=!1),"circularValue"in _||(_.circularValue=Error));const g=c(_),v=d(_,"bigint"),S=d(_,"deterministic"),w=f(_,"maximumDepth"),x=f(_,"maximumBreadth");function C(N,E,P,D,B,R){let I=E[N];switch(typeof I=="object"&&I!==null&&typeof I.toJSON=="function"&&(I=I.toJSON(N)),I=D.call(E,N,I),typeof I){case"string":return o(I);case"object":{if(I===null)return"null";if(P.indexOf(I)!==-1)return g;let O="",F=",";const U=R;if(Array.isArray(I)){if(I.length===0)return"[]";if(wx){const me=I.length-x-1;O+=`${F}"... ${h(me)} not stringified"`}return B!==""&&(O+=` +${U}`),P.pop(),`[${O}]`}let V=Object.keys(I);const H=V.length;if(H===0)return"{}";if(wx){const K=H-x;O+=`${Q}"...":${Y}"${h(K)} not stringified"`,Q=F}return B!==""&&Q.length>1&&(O=` +${R}${O} +${U}`),P.pop(),`{${O}}`}case"number":return isFinite(I)?String(I):y?y(I):"null";case"boolean":return I===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(I);default:return y?y(I):void 0}}function A(N,E,P,D,B,R){switch(typeof E=="object"&&E!==null&&typeof E.toJSON=="function"&&(E=E.toJSON(N)),typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(P.indexOf(E)!==-1)return g;const I=R;let O="",F=",";if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const j=E.length-x-1;O+=`${F}"... ${h(j)} not stringified"`}return B!==""&&(O+=` +${I}`),P.pop(),`[${O}]`}P.push(E);let U="";B!==""&&(R+=B,F=`, +${R}`,U=" ");let V="";for(const H of D){const Y=A(H,E[H],P,D,B,R);Y!==void 0&&(O+=`${V}${o(H)}:${U}${Y}`,V=F)}return B!==""&&V.length>1&&(O=` +${R}${O} +${I}`),P.pop(),`{${O}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function T(N,E,P,D,B){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(N),typeof E!="object")return T(N,E,P,D,B);if(E===null)return"null"}if(P.indexOf(E)!==-1)return g;const R=B;if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const oe=E.length-x-1;Y+=`${Q}"... ${h(oe)} not stringified"`}return Y+=` +${R}`,P.pop(),`[${Y}]`}let I=Object.keys(E);const O=I.length;if(O===0)return"{}";if(wx){const Y=O-x;U+=`${V}"...": "${h(Y)} not stringified"`,V=F}return V!==""&&(U=` +${B}${U} +${R}`),P.pop(),`{${U}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function k(N,E,P){switch(typeof E){case"string":return o(E);case"object":{if(E===null)return"null";if(typeof E.toJSON=="function"){if(E=E.toJSON(N),typeof E!="object")return k(N,E,P);if(E===null)return"null"}if(P.indexOf(E)!==-1)return g;let D="";if(Array.isArray(E)){if(E.length===0)return"[]";if(wx){const H=E.length-x-1;D+=`,"... ${h(H)} not stringified"`}return P.pop(),`[${D}]`}let B=Object.keys(E);const R=B.length;if(R===0)return"{}";if(wx){const F=R-x;D+=`${I}"...":"${h(F)} not stringified"`}return P.pop(),`{${D}}`}case"number":return isFinite(E)?String(E):y?y(E):"null";case"boolean":return E===!0?"true":"false";case"undefined":return;case"bigint":if(v)return String(E);default:return y?y(E):void 0}}function L(N,E,P){if(arguments.length>1){let D="";if(typeof P=="number"?D=" ".repeat(Math.min(P,10)):typeof P=="string"&&(D=P.slice(0,10)),E!=null){if(typeof E=="function")return C("",{"":N},[],E,D,"");if(Array.isArray(E))return A("",N,[],p(E),D,"")}if(D.length!==0)return T("",N,[],D,"")}return k("",N,[])}return L}})(RC,RC.exports);var yue=RC.exports;(function(e){var t=dt&&dt.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(e,"__esModule",{value:!0}),e.createLogger=void 0;const n=Dc,r=Nm,i=WL,o=KL,s=t(O5),a=t(yue);let l=!1;const u=(0,s.default)(),c=()=>u.ROARR,d=()=>({messageContext:{},transforms:[]}),f=()=>{const g=c().asyncLocalStorage;if(!g)throw new Error("AsyncLocalContext is unavailable.");const v=g.getStore();return v||d()},h=()=>!!c().asyncLocalStorage,p=()=>{if(h()){const g=f();return(0,i.hasOwnProperty)(g,"sequenceRoot")&&(0,i.hasOwnProperty)(g,"sequence")&&typeof g.sequence=="number"?String(g.sequenceRoot)+"."+String(g.sequence++):String(c().sequence++)}return String(c().sequence++)},m=(g,v)=>(S,w,x,C,A,T,k,L,N,E)=>{g.child({logLevel:v})(S,w,x,C,A,T,k,L,N,E)},b=1e3,_=(g,v)=>(S,w,x,C,A,T,k,L,N,E)=>{const P=(0,a.default)({a:S,b:w,c:x,d:C,e:A,f:T,g:k,h:L,i:N,j:E,logLevel:v});if(!P)throw new Error("Expected key to be a string");const D=c().onceLog;D.has(P)||(D.add(P),D.size>b&&D.clear(),g.child({logLevel:v})(S,w,x,C,A,T,k,L,N,E))},y=(g,v={},S=[])=>{const w=(x,C,A,T,k,L,N,E,P,D)=>{const B=Date.now(),R=p();let I;h()?I=f():I=d();let O,F;if(typeof x=="string"?O={...I.messageContext,...v}:O={...I.messageContext,...v,...x},typeof x=="string"&&C===void 0)F=x;else if(typeof x=="string"){if(!x.includes("%"))throw new Error("When a string parameter is followed by other arguments, then it is assumed that you are attempting to format a message using printf syntax. You either forgot to add printf bindings or if you meant to add context to the log message, pass them in an object as the first parameter.");F=(0,o.printf)(x,C,A,T,k,L,N,E,P,D)}else{let V=C;if(typeof C!="string")if(C===void 0)V="";else throw new TypeError("Message must be a string. Received "+typeof C+".");F=(0,o.printf)(V,A,T,k,L,N,E,P,D)}let U={context:O,message:F,sequence:R,time:B,version:n.ROARR_LOG_FORMAT_VERSION};for(const V of[...I.transforms,...S])if(U=V(U),typeof U!="object"||U===null)throw new Error("Message transform function must return a message object.");g(U)};return w.child=x=>{let C;return h()?C=f():C=d(),typeof x=="function"?(0,e.createLogger)(g,{...C.messageContext,...v,...x},[x,...S]):(0,e.createLogger)(g,{...C.messageContext,...v,...x},S)},w.getContext=()=>{let x;return h()?x=f():x=d(),{...x.messageContext,...v}},w.adopt=async(x,C)=>{if(!h())return l===!1&&(l=!0,g({context:{logLevel:r.logLevels.warn,package:"roarr"},message:"async_hooks are unavailable; Roarr.adopt will not function as expected",sequence:p(),time:Date.now(),version:n.ROARR_LOG_FORMAT_VERSION})),x();const A=f();let T;(0,i.hasOwnProperty)(A,"sequenceRoot")&&(0,i.hasOwnProperty)(A,"sequence")&&typeof A.sequence=="number"?T=A.sequenceRoot+"."+String(A.sequence++):T=String(c().sequence++);let k={...A.messageContext};const L=[...A.transforms];typeof C=="function"?L.push(C):k={...k,...C};const N=c().asyncLocalStorage;if(!N)throw new Error("Async local context unavailable.");return N.run({messageContext:k,sequence:0,sequenceRoot:T,transforms:L},()=>x())},w.debug=m(w,r.logLevels.debug),w.debugOnce=_(w,r.logLevels.debug),w.error=m(w,r.logLevels.error),w.errorOnce=_(w,r.logLevels.error),w.fatal=m(w,r.logLevels.fatal),w.fatalOnce=_(w,r.logLevels.fatal),w.info=m(w,r.logLevels.info),w.infoOnce=_(w,r.logLevels.info),w.trace=m(w,r.logLevels.trace),w.traceOnce=_(w,r.logLevels.trace),w.warn=m(w,r.logLevels.warn),w.warnOnce=_(w,r.logLevels.warn),w};e.createLogger=y})(qL);var ib={},vue=function(t,n){for(var r=t.split("."),i=n.split("."),o=0;o<3;o++){var s=Number(r[o]),a=Number(i[o]);if(s>a)return 1;if(a>s)return-1;if(!isNaN(s)&&isNaN(a))return 1;if(isNaN(s)&&!isNaN(a))return-1}return 0},_ue=dt&&dt.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ib,"__esModule",{value:!0});ib.createRoarrInitialGlobalStateBrowser=void 0;const s6=Dc,a6=_ue(vue),bue=e=>{const t=(e.versions||[]).concat();return t.length>1&&t.sort(a6.default),t.includes(s6.ROARR_VERSION)||t.push(s6.ROARR_VERSION),t.sort(a6.default),{sequence:0,...e,versions:t}};ib.createRoarrInitialGlobalStateBrowser=bue;var ob={};Object.defineProperty(ob,"__esModule",{value:!0});ob.getLogLevelName=void 0;const Sue=e=>e<=10?"trace":e<=20?"debug":e<=30?"info":e<=40?"warn":e<=50?"error":"fatal";ob.getLogLevelName=Sue;(function(e){var t=dt&&dt.__importDefault||function(d){return d&&d.__esModule?d:{default:d}};Object.defineProperty(e,"__esModule",{value:!0}),e.getLogLevelName=e.logLevels=e.Roarr=e.ROARR=void 0;const n=qL,r=ib,o=(0,t(O5).default)(),s=(0,r.createRoarrInitialGlobalStateBrowser)(o.ROARR||{});e.ROARR=s,o.ROARR=s;const a=d=>JSON.stringify(d),l=(0,n.createLogger)(d=>{var f;s.write&&s.write(((f=s.serializeMessage)!==null&&f!==void 0?f:a)(d))});e.Roarr=l;var u=Nm;Object.defineProperty(e,"logLevels",{enumerable:!0,get:function(){return u.logLevels}});var c=ob;Object.defineProperty(e,"getLogLevelName",{enumerable:!0,get:function(){return c.getLogLevelName}})})(Mm);var wue=dt&&dt.__rest||function(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);i0?h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message," %O"),m,b,_,d):h("%c ".concat(f," %c").concat(c?" [".concat(String(c),"]:"):"","%c ").concat(a.message),m,b,_)}}};U_.createLogWriter=Iue;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createLogWriter=void 0;var t=U_;Object.defineProperty(e,"createLogWriter",{enumerable:!0,get:function(){return t.createLogWriter}})})(CL);Mm.ROARR.write=CL.createLogWriter();const QL={};Mm.Roarr.child(QL);const sb=Ru(Mm.Roarr.child(QL)),ge=e=>sb.get().child({namespace:e}),WRe=["trace","debug","info","warn","error","fatal"],KRe={trace:10,debug:20,info:30,warn:40,error:50,fatal:60},mn=e=>{try{return JSON.parse(JSON.stringify(e))}catch{return"Error parsing object"}},Oue=async e=>{const t={},n=await e.arrayBuffer(),r=Cae(n).text,i=Mv(r,"invokeai_metadata");if(i){const s=MD.safeParse(JSON.parse(i));s.success?t.metadata=s.data:ge("system").error({error:mn(s.error)},"Problem reading metadata from image")}const o=Mv(r,"invokeai_workflow");if(o){const s=FD.safeParse(JSON.parse(o));s.success?t.workflow=s.data:ge("system").error({error:mn(s.error)},"Problem reading workflow from image")}return t};var o1=globalThis&&globalThis.__generator||function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(c){return l([u,c])}}function l(u){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=u[0]&2?i.return:u[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,u[1])).done)return o;switch(i=0,o&&(u=[u[0]&2,o.value]),u[0]){case 0:case 1:o=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,i=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&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"||navigator.onLine===void 0?!0:navigator.onLine}function jue(){return typeof document>"u"?!0:document.visibilityState!=="hidden"}var f6=Ls;function JL(e,t){if(e===t||!(f6(e)&&f6(t)||Array.isArray(e)&&Array.isArray(t)))return t;for(var n=Object.keys(t),r=Object.keys(e),i=n.length===r.length,o=Array.isArray(t)?[]:{},s=0,a=n;s=200&&e.status<=299},Gue=function(e){return/ion\/(vnd\.api\+)?json/.test(e.get("content-type")||"")};function p6(e){if(!Ls(e))return e;for(var t=yr({},e),n=0,r=Object.entries(t);n"u"&&a===h6&&console.warn("Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments."),function(g,v){return l1(t,null,function(){var S,w,x,C,A,T,k,L,N,E,P,D,B,R,I,O,F,U,V,H,Y,Q,j,K,te,oe,me,le,ht,nt,$e,ct,Pe,qt,Sr,Pn;return o1(this,function(bn){switch(bn.label){case 0:return S=v.signal,w=v.getState,x=v.extra,C=v.endpoint,A=v.forced,T=v.type,L=typeof g=="string"?{url:g}:g,N=L.url,E=L.headers,P=E===void 0?new Headers(_.headers):E,D=L.params,B=D===void 0?void 0:D,R=L.responseHandler,I=R===void 0?m??"json":R,O=L.validateStatus,F=O===void 0?b??Vue:O,U=L.timeout,V=U===void 0?p:U,H=c6(L,["url","headers","params","responseHandler","validateStatus","timeout"]),Y=yr(oa(yr({},_),{signal:S}),H),P=new Headers(p6(P)),Q=Y,[4,o(P,{getState:w,extra:x,endpoint:C,forced:A,type:T})];case 1:Q.headers=bn.sent()||P,j=function(Wt){return typeof Wt=="object"&&(Ls(Wt)||Array.isArray(Wt)||typeof Wt.toJSON=="function")},!Y.headers.has("content-type")&&j(Y.body)&&Y.headers.set("content-type",f),j(Y.body)&&c(Y.headers)&&(Y.body=JSON.stringify(Y.body,h)),B&&(K=~N.indexOf("?")?"&":"?",te=l?l(B):new URLSearchParams(p6(B)),N+=K+te),N=zue(r,N),oe=new Request(N,Y),me=oe.clone(),k={request:me},ht=!1,nt=V&&setTimeout(function(){ht=!0,v.abort()},V),bn.label=2;case 2:return bn.trys.push([2,4,5,6]),[4,a(oe)];case 3:return le=bn.sent(),[3,6];case 4:return $e=bn.sent(),[2,{error:{status:ht?"TIMEOUT_ERROR":"FETCH_ERROR",error:String($e)},meta:k}];case 5:return nt&&clearTimeout(nt),[7];case 6:ct=le.clone(),k.response=ct,qt="",bn.label=7;case 7:return bn.trys.push([7,9,,10]),[4,Promise.all([y(le,I).then(function(Wt){return Pe=Wt},function(Wt){return Sr=Wt}),ct.text().then(function(Wt){return qt=Wt},function(){})])];case 8:if(bn.sent(),Sr)throw Sr;return[3,10];case 9:return Pn=bn.sent(),[2,{error:{status:"PARSING_ERROR",originalStatus:le.status,data:qt,error:String(Pn)},meta:k}];case 10:return[2,F(le,Pe)?{data:Pe,meta:k}:{error:{status:le.status,data:Pe},meta:k}]}})})};function y(g,v){return l1(this,null,function(){var S;return o1(this,function(w){switch(w.label){case 0:return typeof v=="function"?[2,v(g)]:(v==="content-type"&&(v=c(g.headers)?"json":"text"),v!=="json"?[3,2]:[4,g.text()]);case 1:return S=w.sent(),[2,S.length?JSON.parse(S):null];case 2:return[2,g.text()]}})})}}var g6=function(){function e(t,n){n===void 0&&(n=void 0),this.value=t,this.meta=n}return e}(),D5=Le("__rtkq/focused"),e$=Le("__rtkq/unfocused"),L5=Le("__rtkq/online"),t$=Le("__rtkq/offline"),_a;(function(e){e.query="query",e.mutation="mutation"})(_a||(_a={}));function n$(e){return e.type===_a.query}function que(e){return e.type===_a.mutation}function r$(e,t,n,r,i,o){return Wue(e)?e(t,n,r,i).map(IC).map(o):Array.isArray(e)?e.map(IC).map(o):[]}function Wue(e){return typeof e=="function"}function IC(e){return typeof e=="string"?{type:e}:e}function sw(e){return e!=null}var Ig=Symbol("forceQueryFn"),OC=function(e){return typeof e[Ig]=="function"};function Kue(e){var t=e.serializeQueryArgs,n=e.queryThunk,r=e.mutationThunk,i=e.api,o=e.context,s=new Map,a=new Map,l=i.internalActions,u=l.unsubscribeQueryResult,c=l.removeMutationResult,d=l.updateSubscriptionOptions;return{buildInitiateQuery:y,buildInitiateMutation:g,getRunningQueryThunk:p,getRunningMutationThunk:m,getRunningQueriesThunk:b,getRunningMutationsThunk:_,getRunningOperationPromises:h,removalWarning:f};function f(){throw new Error(`This method had to be removed due to a conceptual bug in RTK. + Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details. + See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`)}function h(){typeof process<"u";var v=function(S){return Array.from(S.values()).flatMap(function(w){return w?Object.values(w):[]})};return s1(s1([],v(s)),v(a)).filter(sw)}function p(v,S){return function(w){var x,C=o.endpointDefinitions[v],A=t({queryArgs:S,endpointDefinition:C,endpointName:v});return(x=s.get(w))==null?void 0:x[A]}}function m(v,S){return function(w){var x;return(x=a.get(w))==null?void 0:x[S]}}function b(){return function(v){return Object.values(s.get(v)||{}).filter(sw)}}function _(){return function(v){return Object.values(a.get(v)||{}).filter(sw)}}function y(v,S){var w=function(x,C){var A=C===void 0?{}:C,T=A.subscribe,k=T===void 0?!0:T,L=A.forceRefetch,N=A.subscriptionOptions,E=Ig,P=A[E];return function(D,B){var R,I,O=t({queryArgs:x,endpointDefinition:S,endpointName:v}),F=n((R={type:"query",subscribe:k,forceRefetch:L,subscriptionOptions:N,endpointName:v,originalArgs:x,queryCacheKey:O},R[Ig]=P,R)),U=i.endpoints[v].select(x),V=D(F),H=U(B()),Y=V.requestId,Q=V.abort,j=H.requestId!==Y,K=(I=s.get(D))==null?void 0:I[O],te=function(){return U(B())},oe=Object.assign(P?V.then(te):j&&!K?Promise.resolve(H):Promise.all([K,V]).then(te),{arg:x,requestId:Y,subscriptionOptions:N,queryCacheKey:O,abort:Q,unwrap:function(){return l1(this,null,function(){var le;return o1(this,function(ht){switch(ht.label){case 0:return[4,oe];case 1:if(le=ht.sent(),le.isError)throw le.error;return[2,le.data]}})})},refetch:function(){return D(w(x,{subscribe:!1,forceRefetch:!0}))},unsubscribe:function(){k&&D(u({queryCacheKey:O,requestId:Y}))},updateSubscriptionOptions:function(le){oe.subscriptionOptions=le,D(d({endpointName:v,requestId:Y,queryCacheKey:O,options:le}))}});if(!K&&!j&&!P){var me=s.get(D)||{};me[O]=oe,s.set(D,me),oe.then(function(){delete me[O],Object.keys(me).length||s.delete(D)})}return oe}};return w}function g(v){return function(S,w){var x=w===void 0?{}:w,C=x.track,A=C===void 0?!0:C,T=x.fixedCacheKey;return function(k,L){var N=r({type:"mutation",endpointName:v,originalArgs:S,track:A,fixedCacheKey:T}),E=k(N),P=E.requestId,D=E.abort,B=E.unwrap,R=E.unwrap().then(function(U){return{data:U}}).catch(function(U){return{error:U}}),I=function(){k(c({requestId:P,fixedCacheKey:T}))},O=Object.assign(R,{arg:E.arg,requestId:P,abort:D,unwrap:B,unsubscribe:I,reset:I}),F=a.get(k)||{};return a.set(k,F),F[P]=O,O.then(function(){delete F[P],Object.keys(F).length||a.delete(k)}),T&&(F[T]=O,O.then(function(){F[T]===O&&(delete F[T],Object.keys(F).length||a.delete(k))})),O}}}}function m6(e){return e}function Xue(e){var t=this,n=e.reducerPath,r=e.baseQuery,i=e.context.endpointDefinitions,o=e.serializeQueryArgs,s=e.api,a=function(g,v,S){return function(w){var x=i[g];w(s.internalActions.queryResultPatched({queryCacheKey:o({queryArgs:v,endpointDefinition:x,endpointName:g}),patches:S}))}},l=function(g,v,S){return function(w,x){var C,A,T=s.endpoints[g].select(v)(x()),k={patches:[],inversePatches:[],undo:function(){return w(s.util.patchQueryData(g,v,k.inversePatches))}};if(T.status===Wn.uninitialized)return k;if("data"in T)if(go(T.data)){var L=JE(T.data,S),N=L[1],E=L[2];(C=k.patches).push.apply(C,N),(A=k.inversePatches).push.apply(A,E)}else{var P=S(T.data);k.patches.push({op:"replace",path:[],value:P}),k.inversePatches.push({op:"replace",path:[],value:T.data})}return w(s.util.patchQueryData(g,v,k.patches)),k}},u=function(g,v,S){return function(w){var x;return w(s.endpoints[g].initiate(v,(x={subscribe:!1,forceRefetch:!0},x[Ig]=function(){return{data:S}},x)))}},c=function(g,v){return l1(t,[g,v],function(S,w){var x,C,A,T,k,L,N,E,P,D,B,R,I,O,F,U,V,H,Y=w.signal,Q=w.abort,j=w.rejectWithValue,K=w.fulfillWithValue,te=w.dispatch,oe=w.getState,me=w.extra;return o1(this,function(le){switch(le.label){case 0:x=i[S.endpointName],le.label=1;case 1:return le.trys.push([1,8,,13]),C=m6,A=void 0,T={signal:Y,abort:Q,dispatch:te,getState:oe,extra:me,endpoint:S.endpointName,type:S.type,forced:S.type==="query"?d(S,oe()):void 0},k=S.type==="query"?S[Ig]:void 0,k?(A=k(),[3,6]):[3,2];case 2:return x.query?[4,r(x.query(S.originalArgs),T,x.extraOptions)]:[3,4];case 3:return A=le.sent(),x.transformResponse&&(C=x.transformResponse),[3,6];case 4:return[4,x.queryFn(S.originalArgs,T,x.extraOptions,function(ht){return r(ht,T,x.extraOptions)})];case 5:A=le.sent(),le.label=6;case 6:if(typeof process<"u",A.error)throw new g6(A.error,A.meta);return B=K,[4,C(A.data,A.meta,S.originalArgs)];case 7:return[2,B.apply(void 0,[le.sent(),(V={fulfilledTimeStamp:Date.now(),baseQueryMeta:A.meta},V[ac]=!0,V)])];case 8:if(R=le.sent(),I=R,!(I instanceof g6))return[3,12];O=m6,x.query&&x.transformErrorResponse&&(O=x.transformErrorResponse),le.label=9;case 9:return le.trys.push([9,11,,12]),F=j,[4,O(I.value,I.meta,S.originalArgs)];case 10:return[2,F.apply(void 0,[le.sent(),(H={baseQueryMeta:I.meta},H[ac]=!0,H)])];case 11:return U=le.sent(),I=U,[3,12];case 12:throw typeof process<"u",console.error(I),I;case 13:return[2]}})})};function d(g,v){var S,w,x,C,A=(w=(S=v[n])==null?void 0:S.queries)==null?void 0:w[g.queryCacheKey],T=(x=v[n])==null?void 0:x.config.refetchOnMountOrArgChange,k=A==null?void 0:A.fulfilledTimeStamp,L=(C=g.forceRefetch)!=null?C:g.subscribe&&T;return L?L===!0||(Number(new Date)-Number(k))/1e3>=L:!1}var f=hu(n+"/executeQuery",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[ac]=!0,g},condition:function(g,v){var S=v.getState,w,x,C,A=S(),T=(x=(w=A[n])==null?void 0:w.queries)==null?void 0:x[g.queryCacheKey],k=T==null?void 0:T.fulfilledTimeStamp,L=g.originalArgs,N=T==null?void 0:T.originalArgs,E=i[g.endpointName];return OC(g)?!0:(T==null?void 0:T.status)==="pending"?!1:d(g,A)||n$(E)&&((C=E==null?void 0:E.forceRefetch)!=null&&C.call(E,{currentArg:L,previousArg:N,endpointState:T,state:A}))?!0:!k},dispatchConditionRejection:!0}),h=hu(n+"/executeMutation",c,{getPendingMeta:function(){var g;return g={startedTimeStamp:Date.now()},g[ac]=!0,g}}),p=function(g){return"force"in g},m=function(g){return"ifOlderThan"in g},b=function(g,v,S){return function(w,x){var C=p(S)&&S.force,A=m(S)&&S.ifOlderThan,T=function(E){return E===void 0&&(E=!0),s.endpoints[g].initiate(v,{forceRefetch:E})},k=s.endpoints[g].select(v)(x());if(C)w(T());else if(A){var L=k==null?void 0:k.fulfilledTimeStamp;if(!L){w(T());return}var N=(Number(new Date)-Number(new Date(L)))/1e3>=A;N&&w(T())}else w(T(!1))}};function _(g){return function(v){var S,w;return((w=(S=v==null?void 0:v.meta)==null?void 0:S.arg)==null?void 0:w.endpointName)===g}}function y(g,v){return{matchPending:af(b_(g),_(v)),matchFulfilled:af(Pu(g),_(v)),matchRejected:af(Of(g),_(v))}}return{queryThunk:f,mutationThunk:h,prefetch:b,updateQueryData:l,upsertQueryData:u,patchQueryData:a,buildMatchThunkActions:y}}function i$(e,t,n,r){return r$(n[e.meta.arg.endpointName][t],Pu(e)?e.payload:void 0,gm(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function My(e,t,n){var r=e[t];r&&n(r)}function Og(e){var t;return(t="arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)!=null?t:e.requestId}function y6(e,t,n){var r=e[Og(t)];r&&n(r)}var $h={};function Que(e){var t=e.reducerPath,n=e.queryThunk,r=e.mutationThunk,i=e.context,o=i.endpointDefinitions,s=i.apiUid,a=i.extractRehydrationInfo,l=i.hasRehydrationInfo,u=e.assertTagType,c=e.config,d=Le(t+"/resetApiState"),f=nr({name:t+"/queries",initialState:$h,reducers:{removeQueryResult:{reducer:function(S,w){var x=w.payload.queryCacheKey;delete S[x]},prepare:k0()},queryResultPatched:function(S,w){var x=w.payload,C=x.queryCacheKey,A=x.patches;My(S,C,function(T){T.data=Jx(T.data,A.concat())})}},extraReducers:function(S){S.addCase(n.pending,function(w,x){var C=x.meta,A=x.meta.arg,T,k,L=OC(A);(A.subscribe||L)&&((k=w[T=A.queryCacheKey])!=null||(w[T]={status:Wn.uninitialized,endpointName:A.endpointName})),My(w,A.queryCacheKey,function(N){N.status=Wn.pending,N.requestId=L&&N.requestId?N.requestId:C.requestId,A.originalArgs!==void 0&&(N.originalArgs=A.originalArgs),N.startedTimeStamp=C.startedTimeStamp})}).addCase(n.fulfilled,function(w,x){var C=x.meta,A=x.payload;My(w,C.arg.queryCacheKey,function(T){var k;if(!(T.requestId!==C.requestId&&!OC(C.arg))){var L=o[C.arg.endpointName].merge;if(T.status=Wn.fulfilled,L)if(T.data!==void 0){var N=C.fulfilledTimeStamp,E=C.arg,P=C.baseQueryMeta,D=C.requestId,B=ku(T.data,function(R){return L(R,A,{arg:E.originalArgs,baseQueryMeta:P,fulfilledTimeStamp:N,requestId:D})});T.data=B}else T.data=A;else T.data=(k=o[C.arg.endpointName].structuralSharing)==null||k?JL(Xi(T.data)?qE(T.data):T.data,A):A;delete T.error,T.fulfilledTimeStamp=C.fulfilledTimeStamp}})}).addCase(n.rejected,function(w,x){var C=x.meta,A=C.condition,T=C.arg,k=C.requestId,L=x.error,N=x.payload;My(w,T.queryCacheKey,function(E){if(!A){if(E.requestId!==k)return;E.status=Wn.rejected,E.error=N??L}})}).addMatcher(l,function(w,x){for(var C=a(x).queries,A=0,T=Object.entries(C);A"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?_ce:vce;a$.useSyncExternalStore=Gf.useSyncExternalStore!==void 0?Gf.useSyncExternalStore:bce;s$.exports=a$;var Sce=s$.exports,l$={exports:{}},u$={};/** + * @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 ab=M,wce=Sce;function xce(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Cce=typeof Object.is=="function"?Object.is:xce,Ece=wce.useSyncExternalStore,Tce=ab.useRef,Ace=ab.useEffect,kce=ab.useMemo,Pce=ab.useDebugValue;u$.useSyncExternalStoreWithSelector=function(e,t,n,r,i){var o=Tce(null);if(o.current===null){var s={hasValue:!1,value:null};o.current=s}else s=o.current;o=kce(function(){function l(h){if(!u){if(u=!0,c=h,h=r(h),i!==void 0&&s.hasValue){var p=s.value;if(i(p,h))return d=p}return d=h}if(p=d,Cce(c,h))return p;var m=r(h);return i!==void 0&&i(p,m)?p:(c=h,d=m)}var u=!1,c,d,f=n===void 0?null:n;return[function(){return l(t())},f===null?void 0:function(){return l(f())}]},[t,n,r,i]);var a=Ece(e,o[0],o[1]);return Ace(function(){s.hasValue=!0,s.value=a},[a]),Pce(a),a};l$.exports=u$;var c$=l$.exports;const Rce=Uc(c$);function Ice(e){e()}let d$=Ice;const Oce=e=>d$=e,Mce=()=>d$,C6=Symbol.for("react-redux-context"),E6=typeof globalThis<"u"?globalThis:{};function Nce(){var e;if(!M.createContext)return{};const t=(e=E6[C6])!=null?e:E6[C6]=new Map;let n=t.get(M.createContext);return n||(n=M.createContext(null),t.set(M.createContext,n)),n}const vu=Nce();function $5(e=vu){return function(){return M.useContext(e)}}const f$=$5(),Dce=()=>{throw new Error("uSES not initialized!")};let h$=Dce;const Lce=e=>{h$=e},$ce=(e,t)=>e===t;function Fce(e=vu){const t=e===vu?f$:$5(e);return function(r,i={}){const{equalityFn:o=$ce,stabilityCheck:s=void 0,noopCheck:a=void 0}=typeof i=="function"?{equalityFn:i}:i,{store:l,subscription:u,getServerState:c,stabilityCheck:d,noopCheck:f}=t();M.useRef(!0);const h=M.useCallback({[r.name](m){return r(m)}}[r.name],[r,d,s]),p=h$(u.addNestedSub,l.getState,c||l.getState,h,o);return M.useDebugValue(p),p}}const p$=Fce();function u1(){return u1=Object.assign?Object.assign.bind():function(e){for(var t=1;t{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 T6={notify(){},get:()=>[]};function Qce(e,t){let n,r=T6;function i(d){return l(),r.subscribe(d)}function o(){r.notify()}function s(){c.onStateChange&&c.onStateChange()}function a(){return!!n}function l(){n||(n=t?t.addNestedSub(s):e.subscribe(s),r=Xce())}function u(){n&&(n(),n=void 0,r.clear(),r=T6)}const c={addNestedSub:i,notifyNestedSubs:o,handleChangeWrapper:s,isSubscribed:a,trySubscribe:l,tryUnsubscribe:u,getListeners:()=>r};return c}const Yce=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Zce=Yce?M.useLayoutEffect:M.useEffect;function A6(e,t){return e===t?e!==0||t!==0||1/e===1/t:e!==e&&t!==t}function c1(e,t){if(A6(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let i=0;i{const u=Qce(e);return{store:e,subscription:u,getServerState:r?()=>r:void 0,stabilityCheck:i,noopCheck:o}},[e,r,i,o]),a=M.useMemo(()=>e.getState(),[e]);Zce(()=>{const{subscription:u}=s;return u.onStateChange=u.notifyNestedSubs,u.trySubscribe(),a!==e.getState()&&u.notifyNestedSubs(),()=>{u.tryUnsubscribe(),u.onStateChange=void 0}},[s,a]);const l=t||vu;return M.createElement(l.Provider,{value:s},n)}function b$(e=vu){const t=e===vu?f$:$5(e);return function(){const{store:r}=t();return r}}const S$=b$();function ede(e=vu){const t=e===vu?S$:b$(e);return function(){return t().dispatch}}const w$=ede();Lce(c$.useSyncExternalStoreWithSelector);Oce(Cs.unstable_batchedUpdates);var tde=globalThis&&globalThis.__spreadArray||function(e,t){for(var n=0,r=t.length,i=e.length;n{const r=_g.get(),i=$f.get(),o=bg.get();return Hue({baseUrl:`${r??""}/api/v1`,prepareHeaders:a=>(i&&a.set("Authorization",`Bearer ${i}`),o&&a.set("project-id",o),a)})(e,t,n)},_u=mde({baseQuery:vde,reducerPath:"api",tagTypes:yde,endpoints:()=>({})}),_de=(e,t)=>{const n=new Date(e),r=new Date(t);return n>r?1:ne==null,Ede=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),NC=Symbol("encodeFragmentIdentifier");function Tde(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const i=n.length;return r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),"[",i,"]"].join("")]:[...n,[Tr(t,e),"[",Tr(i,e),"]=",Tr(r,e)].join("")]};case"bracket":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),"[]"].join("")]:[...n,[Tr(t,e),"[]=",Tr(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,[Tr(t,e),":list="].join("")]:[...n,[Tr(t,e),":list=",Tr(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t=e.arrayFormat==="bracket-separator"?"[]=":"=";return n=>(r,i)=>i===void 0||e.skipNull&&i===null||e.skipEmptyString&&i===""?r:(i=i===null?"":i,r.length===0?[[Tr(n,e),t,Tr(i,e)].join("")]:[[r,Tr(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>r===void 0||e.skipNull&&r===null||e.skipEmptyString&&r===""?n:r===null?[...n,Tr(t,e)]:[...n,[Tr(t,e),"=",Tr(r,e)].join("")]}}function Ade(e){let t;switch(e.arrayFormat){case"index":return(n,r,i)=>{if(t=/\[(\d*)]$/.exec(n),n=n.replace(/\[\d*]$/,""),!t){i[n]=r;return}i[n]===void 0&&(i[n]={}),i[n][t[1]]=r};case"bracket":return(n,r,i)=>{if(t=/(\[])$/.exec(n),n=n.replace(/\[]$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"colon-list-separator":return(n,r,i)=>{if(t=/(:list)$/.exec(n),n=n.replace(/:list$/,""),!t){i[n]=r;return}if(i[n]===void 0){i[n]=[r];return}i[n]=[...i[n],r]};case"comma":case"separator":return(n,r,i)=>{const o=typeof r=="string"&&r.includes(e.arrayFormatSeparator),s=typeof r=="string"&&!o&&Va(r,e).includes(e.arrayFormatSeparator);r=s?Va(r,e):r;const a=o||s?r.split(e.arrayFormatSeparator).map(l=>Va(l,e)):r===null?r:Va(r,e);i[n]=a};case"bracket-separator":return(n,r,i)=>{const o=/(\[])$/.test(n);if(n=n.replace(/\[]$/,""),!o){i[n]=r&&Va(r,e);return}const s=r===null?[]:r.split(e.arrayFormatSeparator).map(a=>Va(a,e));if(i[n]===void 0){i[n]=s;return}i[n]=[...i[n],...s]};default:return(n,r,i)=>{if(i[n]===void 0){i[n]=r;return}i[n]=[...[i[n]].flat(),r]}}}function E$(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Tr(e,t){return t.encode?t.strict?Ede(e):encodeURIComponent(e):e}function Va(e,t){return t.decode?wde(e):e}function T$(e){return Array.isArray(e)?e.sort():typeof e=="object"?T$(Object.keys(e)).sort((t,n)=>Number(t)-Number(n)).map(t=>e[t]):e}function A$(e){const t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function kde(e){let t="";const n=e.indexOf("#");return n!==-1&&(t=e.slice(n)),t}function M6(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?e=Number(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")&&(e=e.toLowerCase()==="true"),e}function V5(e){e=A$(e);const t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function G5(e,t){t={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...t},E$(t.arrayFormatSeparator);const n=Ade(t),r=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return r;for(const i of e.split("&")){if(i==="")continue;const o=t.decode?i.replace(/\+/g," "):i;let[s,a]=C$(o,"=");s===void 0&&(s=o),a=a===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:Va(a,t),n(Va(s,t),a,r)}for(const[i,o]of Object.entries(r))if(typeof o=="object"&&o!==null)for(const[s,a]of Object.entries(o))o[s]=M6(a,t);else r[i]=M6(o,t);return t.sort===!1?r:(t.sort===!0?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((i,o)=>{const s=r[o];return s&&typeof s=="object"&&!Array.isArray(s)?i[o]=T$(s):i[o]=s,i},Object.create(null))}function k$(e,t){if(!e)return"";t={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...t},E$(t.arrayFormatSeparator);const n=s=>t.skipNull&&Cde(e[s])||t.skipEmptyString&&e[s]==="",r=Tde(t),i={};for(const[s,a]of Object.entries(e))n(s)||(i[s]=a);const o=Object.keys(i);return t.sort!==!1&&o.sort(t.sort),o.map(s=>{const a=e[s];return a===void 0?"":a===null?Tr(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?Tr(s,t)+"[]":a.reduce(r(s),[]).join("&"):Tr(s,t)+"="+Tr(a,t)}).filter(s=>s.length>0).join("&")}function P$(e,t){var i;t={decode:!0,...t};let[n,r]=C$(e,"#");return n===void 0&&(n=e),{url:((i=n==null?void 0:n.split("?"))==null?void 0:i[0])??"",query:G5(V5(e),t),...t&&t.parseFragmentIdentifier&&r?{fragmentIdentifier:Va(r,t)}:{}}}function R$(e,t){t={encode:!0,strict:!0,[NC]:!0,...t};const n=A$(e.url).split("?")[0]||"",r=V5(e.url),i={...G5(r,{sort:!1}),...e.query};let o=k$(i,t);o&&(o=`?${o}`);let s=kde(e.url);if(e.fragmentIdentifier){const a=new URL(n);a.hash=e.fragmentIdentifier,s=t[NC]?a.hash:`#${e.fragmentIdentifier}`}return`${n}${o}${s}`}function I$(e,t,n){n={parseFragmentIdentifier:!0,[NC]:!1,...n};const{url:r,query:i,fragmentIdentifier:o}=P$(e,n);return R$({url:r,query:xde(i,t),fragmentIdentifier:o},n)}function Pde(e,t,n){const r=Array.isArray(t)?i=>!t.includes(i):(i,o)=>!t(i,o);return I$(e,r,n)}const D0=Object.freeze(Object.defineProperty({__proto__:null,exclude:Pde,extract:V5,parse:G5,parseUrl:P$,pick:I$,stringify:k$,stringifyUrl:R$},Symbol.toStringTag,{value:"Module"})),ju=(e,t)=>{if(!e)return!1;const n=f1.selectAll(e);if(n.length<=1)return!0;const r=[],i=[];for(let o=0;o=a}else{const o=i[i.length-1];if(!o)return!1;const s=new Date(t.created_at),a=new Date(o.created_at);return s>=a}},Uo=e=>Qr.includes(e.image_category)?Qr:Gl,Ln=fl({selectId:e=>e.image_name,sortComparer:(e,t)=>e.starred&&!t.starred?-1:!e.starred&&t.starred?1:_de(t.created_at,e.created_at)}),f1=Ln.getSelectors(),Eo=e=>`images/?${D0.stringify(e,{arrayFormat:"none"})}`,pi=_u.injectEndpoints({endpoints:e=>({listBoards:e.query({query:t=>({url:"boards/",params:t}),providesTags:t=>{const n=[{type:"Board",id:pt}];return t&&n.push(...t.items.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllBoards:e.query({query:()=>({url:"boards/",params:{all:!0}}),providesTags:t=>{const n=[{type:"Board",id:pt}];return t&&n.push(...t.map(({board_id:r})=>({type:"Board",id:r}))),n}}),listAllImageNamesForBoard:e.query({query:t=>({url:`boards/${t}/image_names`}),providesTags:(t,n,r)=>[{type:"ImageNameList",id:r}],keepUnusedDataFor:0}),getBoardImagesTotal:e.query({query:t=>({url:Eo({board_id:t??"none",categories:Qr,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardImagesTotal",id:r??"none"}],transformResponse:t=>t.total}),getBoardAssetsTotal:e.query({query:t=>({url:Eo({board_id:t??"none",categories:Gl,is_intermediate:!1,limit:0,offset:0}),method:"GET"}),providesTags:(t,n,r)=>[{type:"BoardAssetsTotal",id:r??"none"}],transformResponse:t=>t.total}),createBoard:e.mutation({query:t=>({url:"boards/",method:"POST",params:{board_name:t}}),invalidatesTags:[{type:"Board",id:pt}]}),updateBoard:e.mutation({query:({board_id:t,changes:n})=>({url:`boards/${t}`,method:"PATCH",body:n}),invalidatesTags:(t,n,r)=>[{type:"Board",id:r.board_id}]})})}),{useListBoardsQuery:XRe,useListAllBoardsQuery:QRe,useGetBoardImagesTotalQuery:YRe,useGetBoardAssetsTotalQuery:ZRe,useCreateBoardMutation:JRe,useUpdateBoardMutation:eIe,useListAllImageNamesForBoardQuery:tIe}=pi,pe=_u.injectEndpoints({endpoints:e=>({listImages:e.query({query:t=>({url:Eo(t),method:"GET"}),providesTags:(t,n,{board_id:r,categories:i})=>[{type:"ImageList",id:Eo({board_id:r,categories:i})}],serializeQueryArgs:({queryArgs:t})=>{const{board_id:n,categories:r}=t;return Eo({board_id:n,categories:r})},transformResponse(t){const{items:n}=t;return Ln.addMany(Ln.getInitialState(),n)},merge:(t,n)=>{Ln.addMany(t,f1.selectAll(n))},forceRefetch({currentArg:t,previousArg:n}){return(t==null?void 0:t.offset)!==(n==null?void 0:n.offset)},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;f1.selectAll(i).forEach(o=>{n(pe.util.upsertQueryData("getImageDTO",o.image_name,o))})}catch{}},keepUnusedDataFor:86400}),getIntermediatesCount:e.query({query:()=>({url:Eo({is_intermediate:!0})}),providesTags:["IntermediatesCount"],transformResponse:t=>t.total}),getImageDTO:e.query({query:t=>({url:`images/i/${t}`}),providesTags:(t,n,r)=>[{type:"Image",id:r}],keepUnusedDataFor:86400}),getImageMetadata:e.query({query:t=>({url:`images/i/${t}/metadata`}),providesTags:(t,n,r)=>[{type:"ImageMetadata",id:r}],keepUnusedDataFor:86400}),getImageMetadataFromFile:e.query({queryFn:async(t,n,r,i)=>{var o;if(t.shouldFetchMetadataFromApi){let s;const a=await i(`images/i/${t.image.image_name}/metadata`);if(a.data){const l=MD.safeParse((o=a.data)==null?void 0:o.metadata);l.success&&(s=l.data)}return{data:{metadata:s}}}else{const s=$f.get(),a=bg.get(),u=await sre.fetchBaseQuery({baseUrl:"",prepareHeaders:d=>(s&&d.set("Authorization",`Bearer ${s}`),a&&d.set("project-id",a),d),responseHandler:async d=>await d.blob()})(t.image.image_url,n,r);return{data:await Oue(u.data)}}},providesTags:(t,n,{image:r})=>[{type:"ImageMetadataFromFile",id:r.image_name}],keepUnusedDataFor:86400}),clearIntermediates:e.mutation({query:()=>({url:"images/clear-intermediates",method:"POST"}),invalidatesTags:["IntermediatesCount"]}),deleteImage:e.mutation({query:({image_name:t})=>({url:`images/i/${t}`,method:"DELETE"}),invalidatesTags:(t,n,{board_id:r})=>[{type:"BoardImagesTotal",id:r??"none"},{type:"BoardAssetsTotal",id:r??"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){const{image_name:i,board_id:o}=t,s={board_id:o??"none",categories:Uo(t)},a=n(pe.util.updateQueryData("listImages",s,l=>{Ln.removeOne(l,i)}));try{await r}catch{a.undo()}}}),deleteImages:e.mutation({query:({imageDTOs:t})=>({url:"images/delete",method:"POST",body:{image_names:t.map(r=>r.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{var o;const i=(o=r[0])==null?void 0:o.board_id;return[{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"}]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,o=v5(t,"image_name");i.deleted_images.forEach(s=>{const a=o[s];if(a){const l={board_id:a.board_id??"none",categories:Uo(a)};n(pe.util.updateQueryData("listImages",l,u=>{Ln.removeOne(u,s)}))}})}catch{}}}),changeImageIsIntermediate:e.mutation({query:({imageDTO:t,is_intermediate:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{is_intermediate:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,is_intermediate:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[];s.push(r(pe.util.updateQueryData("getImageDTO",t.image_name,l=>{Object.assign(l,{is_intermediate:n})})));const a=Uo(t);if(n)s.push(r(pe.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:a},l=>{Ln.removeOne(l,t.image_name)})));else{const l={board_id:t.board_id??"none",categories:a},u=pe.endpoints.listImages.select(l)(o()),{data:c}=Qr.includes(t.image_category)?pi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=ju(u.data,t);(d||f)&&s.push(r(pe.util.updateQueryData("listImages",l,h=>{Ln.upsertOne(h,t)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),changeImageSessionId:e.mutation({query:({imageDTO:t,session_id:n})=>({url:`images/i/${t.image_name}`,method:"PATCH",body:{session_id:n}}),invalidatesTags:(t,n,{imageDTO:r})=>[{type:"BoardImagesTotal",id:r.board_id??"none"},{type:"BoardAssetsTotal",id:r.board_id??"none"}],async onQueryStarted({imageDTO:t,session_id:n},{dispatch:r,queryFulfilled:i}){const o=[];o.push(r(pe.util.updateQueryData("getImageDTO",t.image_name,s=>{Object.assign(s,{session_id:n})})));try{await i}catch{o.forEach(s=>s.undo())}}}),starImages:e.mutation({query:({imageDTOs:t})=>({url:"images/star",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Uo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Eo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Uo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(pe.util.updateQueryData("getImageDTO",c,b=>{b.starred=!0}));const d={board_id:l??"none",categories:a},f=pe.endpoints.listImages.select(d)(i()),{data:h}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(l??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=Ey?ju(f.data,u):!0;(p||m)&&n(pe.util.updateQueryData("listImages",d,b=>{Ln.upsertOne(b,{...u,starred:!0})}))})}catch{}}}),unstarImages:e.mutation({query:({imageDTOs:t})=>({url:"images/unstar",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{if(r[0]){const i=Uo(r[0]),o=r[0].board_id;return[{type:"ImageList",id:Eo({board_id:o,categories:i})}]}return[]},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,s=t.filter(u=>o.updated_image_names.includes(u.image_name));if(!s[0])return;const a=Uo(s[0]),l=s[0].board_id;s.forEach(u=>{const{image_name:c}=u;n(pe.util.updateQueryData("getImageDTO",c,b=>{b.starred=!1}));const d={board_id:l??"none",categories:a},f=pe.endpoints.listImages.select(d)(i()),{data:h}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(l??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l??"none")(i()),p=f.data&&f.data.ids.length>=(h??0),m=(h||0)>=Ey?ju(f.data,u):!0;(p||m)&&n(pe.util.updateQueryData("listImages",d,b=>{Ln.upsertOne(b,{...u,starred:!1})}))})}catch{}}}),uploadImage:e.mutation({query:({file:t,image_category:n,is_intermediate:r,session_id:i,board_id:o,crop_visible:s})=>{const a=new FormData;return a.append("file",t),{url:"images/upload",method:"POST",body:a,params:{image_category:n,is_intermediate:r,session_id:i,board_id:o==="none"?void 0:o,crop_visible:s}}},async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r;if(i.is_intermediate)return;n(pe.util.upsertQueryData("getImageDTO",i.image_name,i));const o=Uo(i);n(pe.util.updateQueryData("listImages",{board_id:i.board_id??"none",categories:o},s=>{Ln.addOne(s,i)})),n(pe.util.invalidateTags([{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}]))}catch{}}}),deleteBoard:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE"}),invalidatesTags:()=>[{type:"Board",id:pt},{type:"ImageList",id:Eo({board_id:"none",categories:Qr})},{type:"ImageList",id:Eo({board_id:"none",categories:Gl})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_board_images:o}=i;o.forEach(l=>{n(pe.util.updateQueryData("getImageDTO",l,u=>{u.board_id=void 0}))});const s=[{categories:Qr},{categories:Gl}],a=o.map(l=>({id:l,changes:{board_id:void 0}}));s.forEach(l=>{n(pe.util.updateQueryData("listImages",l,u=>{Ln.updateMany(u,a)}))})}catch{}}}),deleteBoardAndImages:e.mutation({query:t=>({url:`boards/${t}`,method:"DELETE",params:{include_images:!0}}),invalidatesTags:()=>[{type:"Board",id:pt},{type:"ImageList",id:Eo({board_id:"none",categories:Qr})},{type:"ImageList",id:Eo({board_id:"none",categories:Gl})},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}],async onQueryStarted(t,{dispatch:n,queryFulfilled:r}){try{const{data:i}=await r,{deleted_images:o}=i;[{categories:Qr},{categories:Gl}].forEach(a=>{n(pe.util.updateQueryData("listImages",a,l=>{Ln.removeMany(l,o)}))})}catch{}}}),addImageToBoard:e.mutation({query:({board_id:t,imageDTO:n})=>{const{image_name:r}=n;return{url:"board_images/",method:"POST",body:{board_id:t,image_name:r}}},invalidatesTags:(t,n,{board_id:r,imageDTO:i})=>[{type:"Board",id:r},{type:"BoardImagesTotal",id:r},{type:"BoardAssetsTotal",id:r},{type:"BoardImagesTotal",id:i.board_id??"none"},{type:"BoardAssetsTotal",id:i.board_id??"none"}],async onQueryStarted({board_id:t,imageDTO:n},{dispatch:r,queryFulfilled:i,getState:o}){const s=[],a=Uo(n);if(s.push(r(pe.util.updateQueryData("getImageDTO",n.image_name,l=>{l.board_id=t}))),!n.is_intermediate){s.push(r(pe.util.updateQueryData("listImages",{board_id:n.board_id??"none",categories:a},h=>{Ln.removeOne(h,n.image_name)})));const l={board_id:t??"none",categories:a},u=pe.endpoints.listImages.select(l)(o()),{data:c}=Qr.includes(n.image_category)?pi.endpoints.getBoardImagesTotal.select(n.board_id??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(n.board_id??"none")(o()),d=u.data&&u.data.ids.length>=(c??0),f=ju(u.data,n);(d||f)&&s.push(r(pe.util.updateQueryData("listImages",l,h=>{Ln.addOne(h,n)})))}try{await i}catch{s.forEach(l=>l.undo())}}}),removeImageFromBoard:e.mutation({query:({imageDTO:t})=>{const{image_name:n}=t;return{url:"board_images/",method:"DELETE",body:{image_name:n}}},invalidatesTags:(t,n,{imageDTO:r})=>{const{board_id:i}=r;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({imageDTO:t},{dispatch:n,queryFulfilled:r,getState:i}){const o=Uo(t),s=[];s.push(n(pe.util.updateQueryData("getImageDTO",t.image_name,f=>{f.board_id=void 0}))),s.push(n(pe.util.updateQueryData("listImages",{board_id:t.board_id??"none",categories:o},f=>{Ln.removeOne(f,t.image_name)})));const a={board_id:"none",categories:o},l=pe.endpoints.listImages.select(a)(i()),{data:u}=Qr.includes(t.image_category)?pi.endpoints.getBoardImagesTotal.select(t.board_id??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(t.board_id??"none")(i()),c=l.data&&l.data.ids.length>=(u??0),d=ju(l.data,t);(c||d)&&s.push(n(pe.util.updateQueryData("listImages",a,f=>{Ln.upsertOne(f,t)})));try{await r}catch{s.forEach(f=>f.undo())}}}),addImagesToBoard:e.mutation({query:({board_id:t,imageDTOs:n})=>({url:"board_images/batch",method:"POST",body:{image_names:n.map(r=>r.image_name),board_id:t}}),invalidatesTags:(t,n,{imageDTOs:r,board_id:i})=>{var s;const o=(s=r[0])==null?void 0:s.board_id;return[{type:"Board",id:i??"none"},{type:"BoardImagesTotal",id:i??"none"},{type:"BoardAssetsTotal",id:i??"none"},{type:"BoardImagesTotal",id:o??"none"},{type:"BoardAssetsTotal",id:o??"none"},{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}]},async onQueryStarted({board_id:t,imageDTOs:n},{dispatch:r,queryFulfilled:i,getState:o}){try{const{data:s}=await i,{added_image_names:a}=s;a.forEach(l=>{r(pe.util.updateQueryData("getImageDTO",l,_=>{_.board_id=t}));const u=n.find(_=>_.image_name===l);if(!u)return;const c=Uo(u),d=u.board_id;r(pe.util.updateQueryData("listImages",{board_id:d??"none",categories:c},_=>{Ln.removeOne(_,u.image_name)}));const f={board_id:t,categories:c},h=pe.endpoints.listImages.select(f)(o()),{data:p}=Qr.includes(u.image_category)?pi.endpoints.getBoardImagesTotal.select(t??"none")(o()):pi.endpoints.getBoardAssetsTotal.select(t??"none")(o()),m=h.data&&h.data.ids.length>=(p??0),b=(p||0)>=Ey?ju(h.data,u):!0;(m||b)&&r(pe.util.updateQueryData("listImages",f,_=>{Ln.upsertOne(_,{...u,board_id:t})}))})}catch{}}}),removeImagesFromBoard:e.mutation({query:({imageDTOs:t})=>({url:"board_images/batch/delete",method:"POST",body:{image_names:t.map(n=>n.image_name)}}),invalidatesTags:(t,n,{imageDTOs:r})=>{const i=[],o=[{type:"BoardImagesTotal",id:"none"},{type:"BoardAssetsTotal",id:"none"}];return t==null||t.removed_image_names.forEach(s=>{var l;const a=(l=r.find(u=>u.image_name===s))==null?void 0:l.board_id;!a||i.includes(a)||(o.push({type:"Board",id:a}),o.push({type:"BoardImagesTotal",id:a}),o.push({type:"BoardAssetsTotal",id:a}))}),o},async onQueryStarted({imageDTOs:t},{dispatch:n,queryFulfilled:r,getState:i}){try{const{data:o}=await r,{removed_image_names:s}=o;s.forEach(a=>{n(pe.util.updateQueryData("getImageDTO",a,m=>{m.board_id=void 0}));const l=t.find(m=>m.image_name===a);if(!l)return;const u=Uo(l);n(pe.util.updateQueryData("listImages",{board_id:l.board_id??"none",categories:u},m=>{Ln.removeOne(m,l.image_name)}));const c={board_id:"none",categories:u},d=pe.endpoints.listImages.select(c)(i()),{data:f}=Qr.includes(l.image_category)?pi.endpoints.getBoardImagesTotal.select(l.board_id??"none")(i()):pi.endpoints.getBoardAssetsTotal.select(l.board_id??"none")(i()),h=d.data&&d.data.ids.length>=(f??0),p=(f||0)>=Ey?ju(d.data,l):!0;(h||p)&&n(pe.util.updateQueryData("listImages",c,m=>{Ln.upsertOne(m,{...l,board_id:"none"})}))})}catch{}}})})}),{useGetIntermediatesCountQuery:nIe,useListImagesQuery:rIe,useLazyListImagesQuery:iIe,useGetImageDTOQuery:oIe,useGetImageMetadataQuery:sIe,useDeleteImageMutation:aIe,useDeleteImagesMutation:lIe,useUploadImageMutation:uIe,useClearIntermediatesMutation:cIe,useAddImagesToBoardMutation:dIe,useRemoveImagesFromBoardMutation:fIe,useAddImageToBoardMutation:hIe,useRemoveImageFromBoardMutation:pIe,useChangeImageIsIntermediateMutation:gIe,useChangeImageSessionIdMutation:mIe,useDeleteBoardAndImagesMutation:yIe,useDeleteBoardMutation:vIe,useStarImagesMutation:_Ie,useUnstarImagesMutation:bIe,useGetImageMetadataFromFileQuery:SIe}=pe,O$=Le("socket/socketConnected"),M$=Le("socket/appSocketConnected"),N$=Le("socket/socketDisconnected"),D$=Le("socket/appSocketDisconnected"),H5=Le("socket/socketSubscribed"),L$=Le("socket/appSocketSubscribed"),$$=Le("socket/socketUnsubscribed"),F$=Le("socket/appSocketUnsubscribed"),B$=Le("socket/socketInvocationStarted"),q5=Le("socket/appSocketInvocationStarted"),W5=Le("socket/socketInvocationComplete"),K5=Le("socket/appSocketInvocationComplete"),z$=Le("socket/socketInvocationError"),kb=Le("socket/appSocketInvocationError"),U$=Le("socket/socketGraphExecutionStateComplete"),j$=Le("socket/appSocketGraphExecutionStateComplete"),V$=Le("socket/socketGeneratorProgress"),X5=Le("socket/appSocketGeneratorProgress"),G$=Le("socket/socketModelLoadStarted"),Rde=Le("socket/appSocketModelLoadStarted"),H$=Le("socket/socketModelLoadCompleted"),Ide=Le("socket/appSocketModelLoadCompleted"),q$=Le("socket/socketSessionRetrievalError"),W$=Le("socket/appSocketSessionRetrievalError"),K$=Le("socket/socketInvocationRetrievalError"),X$=Le("socket/appSocketInvocationRetrievalError"),Q5=Le("controlNet/imageProcessed"),Id={none:{type:"none",get label(){return we.t("controlnet.none")},get description(){return we.t("controlnet.noneDescription")},default:{type:"none"}},canny_image_processor:{type:"canny_image_processor",get label(){return we.t("controlnet.canny")},get description(){return we.t("controlnet.cannyDescription")},default:{id:"canny_image_processor",type:"canny_image_processor",low_threshold:100,high_threshold:200}},content_shuffle_image_processor:{type:"content_shuffle_image_processor",get label(){return we.t("controlnet.contentShuffle")},get description(){return we.t("controlnet.contentShuffleDescription")},default:{id:"content_shuffle_image_processor",type:"content_shuffle_image_processor",detect_resolution:512,image_resolution:512,h:512,w:512,f:256}},hed_image_processor:{type:"hed_image_processor",get label(){return we.t("controlnet.hed")},get description(){return we.t("controlnet.hedDescription")},default:{id:"hed_image_processor",type:"hed_image_processor",detect_resolution:512,image_resolution:512,scribble:!1}},lineart_anime_image_processor:{type:"lineart_anime_image_processor",get label(){return we.t("controlnet.lineartAnime")},get description(){return we.t("controlnet.lineartAnimeDescription")},default:{id:"lineart_anime_image_processor",type:"lineart_anime_image_processor",detect_resolution:512,image_resolution:512}},lineart_image_processor:{type:"lineart_image_processor",get label(){return we.t("controlnet.lineart")},get description(){return we.t("controlnet.lineartDescription")},default:{id:"lineart_image_processor",type:"lineart_image_processor",detect_resolution:512,image_resolution:512,coarse:!1}},mediapipe_face_processor:{type:"mediapipe_face_processor",get label(){return we.t("controlnet.mediapipeFace")},get description(){return we.t("controlnet.mediapipeFaceDescription")},default:{id:"mediapipe_face_processor",type:"mediapipe_face_processor",max_faces:1,min_confidence:.5}},midas_depth_image_processor:{type:"midas_depth_image_processor",get label(){return we.t("controlnet.depthMidas")},get description(){return we.t("controlnet.depthMidasDescription")},default:{id:"midas_depth_image_processor",type:"midas_depth_image_processor",a_mult:2,bg_th:.1}},mlsd_image_processor:{type:"mlsd_image_processor",get label(){return we.t("controlnet.mlsd")},get description(){return we.t("controlnet.mlsdDescription")},default:{id:"mlsd_image_processor",type:"mlsd_image_processor",detect_resolution:512,image_resolution:512,thr_d:.1,thr_v:.1}},normalbae_image_processor:{type:"normalbae_image_processor",get label(){return we.t("controlnet.normalBae")},get description(){return we.t("controlnet.normalBaeDescription")},default:{id:"normalbae_image_processor",type:"normalbae_image_processor",detect_resolution:512,image_resolution:512}},openpose_image_processor:{type:"openpose_image_processor",get label(){return we.t("controlnet.openPose")},get description(){return we.t("controlnet.openPoseDescription")},default:{id:"openpose_image_processor",type:"openpose_image_processor",detect_resolution:512,image_resolution:512,hand_and_face:!1}},pidi_image_processor:{type:"pidi_image_processor",get label(){return we.t("controlnet.pidi")},get description(){return we.t("controlnet.pidiDescription")},default:{id:"pidi_image_processor",type:"pidi_image_processor",detect_resolution:512,image_resolution:512,scribble:!1,safe:!1}},zoe_depth_image_processor:{type:"zoe_depth_image_processor",get label(){return we.t("controlnet.depthZoe")},get description(){return we.t("controlnet.depthZoeDescription")},default:{id:"zoe_depth_image_processor",type:"zoe_depth_image_processor"}}},$y={canny:"canny_image_processor",mlsd:"mlsd_image_processor",depth:"midas_depth_image_processor",bae:"normalbae_image_processor",lineart:"lineart_image_processor",lineart_anime:"lineart_anime_image_processor",softedge:"hed_image_processor",shuffle:"content_shuffle_image_processor",openpose:"openpose_image_processor",mediapipe:"mediapipe_face_processor",pidi:"pidi_image_processor",zoe:"zoe_depth_image_processor"},N6={isEnabled:!0,model:null,weight:1,beginStepPct:0,endStepPct:1,controlMode:"balanced",resizeMode:"just_resize",controlImage:null,processedControlImage:null,processorType:"canny_image_processor",processorNode:Id.canny_image_processor.default,shouldAutoConfig:!0},Q$={adapterImage:null,model:null,weight:1,beginStepPct:0,endStepPct:1},DC={controlNets:{},isEnabled:!1,pendingControlImages:[],isIPAdapterEnabled:!1,ipAdapterInfo:{...Q$}},Y$=nr({name:"controlNet",initialState:DC,reducers:{isControlNetEnabledToggled:e=>{e.isEnabled=!e.isEnabled},controlNetAdded:(e,t)=>{const{controlNetId:n,controlNet:r}=t.payload;e.controlNets[n]={...r??N6,controlNetId:n}},controlNetDuplicated:(e,t)=>{const{sourceControlNetId:n,newControlNetId:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=Jn(i);o.controlNetId=r,e.controlNets[r]=o},controlNetAddedFromImage:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload;e.controlNets[n]={...N6,controlNetId:n,controlImage:r}},controlNetRemoved:(e,t)=>{const{controlNetId:n}=t.payload;delete e.controlNets[n]},controlNetToggled:(e,t)=>{const{controlNetId:n}=t.payload,r=e.controlNets[n];r&&(r.isEnabled=!r.isEnabled)},controlNetImageChanged:(e,t)=>{const{controlNetId:n,controlImage:r}=t.payload,i=e.controlNets[n];i&&(i.controlImage=r,i.processedControlImage=null,r!==null&&i.processorType!=="none"&&e.pendingControlImages.push(n))},controlNetProcessedImageChanged:(e,t)=>{const{controlNetId:n,processedControlImage:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=r,e.pendingControlImages=e.pendingControlImages.filter(o=>o!==n))},controlNetModelChanged:(e,t)=>{const{controlNetId:n,model:r}=t.payload,i=e.controlNets[n];if(i&&(i.model=r,i.processedControlImage=null,i.shouldAutoConfig)){let o;for(const s in $y)if(r.model_name.includes(s)){o=$y[s];break}o?(i.processorType=o,i.processorNode=Id[o].default):(i.processorType="none",i.processorNode=Id.none.default)}},controlNetWeightChanged:(e,t)=>{const{controlNetId:n,weight:r}=t.payload,i=e.controlNets[n];i&&(i.weight=r)},controlNetBeginStepPctChanged:(e,t)=>{const{controlNetId:n,beginStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.beginStepPct=r)},controlNetEndStepPctChanged:(e,t)=>{const{controlNetId:n,endStepPct:r}=t.payload,i=e.controlNets[n];i&&(i.endStepPct=r)},controlNetControlModeChanged:(e,t)=>{const{controlNetId:n,controlMode:r}=t.payload,i=e.controlNets[n];i&&(i.controlMode=r)},controlNetResizeModeChanged:(e,t)=>{const{controlNetId:n,resizeMode:r}=t.payload,i=e.controlNets[n];i&&(i.resizeMode=r)},controlNetProcessorParamsChanged:(e,t)=>{const{controlNetId:n,changes:r}=t.payload,i=e.controlNets[n];if(!i)return;const o=i.processorNode;i.processorNode={...o,...r},i.shouldAutoConfig=!1},controlNetProcessorTypeChanged:(e,t)=>{const{controlNetId:n,processorType:r}=t.payload,i=e.controlNets[n];i&&(i.processedControlImage=null,i.processorType=r,i.processorNode=Id[r].default,i.shouldAutoConfig=!1)},controlNetAutoConfigToggled:(e,t)=>{var o;const{controlNetId:n}=t.payload,r=e.controlNets[n];if(!r)return;const i=!r.shouldAutoConfig;if(i){let s;for(const a in $y)if((o=r.model)!=null&&o.model_name.includes(a)){s=$y[a];break}s?(r.processorType=s,r.processorNode=Id[s].default):(r.processorType="none",r.processorNode=Id.none.default)}r.shouldAutoConfig=i},controlNetReset:()=>({...DC}),isIPAdapterEnableToggled:e=>{e.isIPAdapterEnabled=!e.isIPAdapterEnabled},ipAdapterImageChanged:(e,t)=>{e.ipAdapterInfo.adapterImage=t.payload},ipAdapterWeightChanged:(e,t)=>{e.ipAdapterInfo.weight=t.payload},ipAdapterModelChanged:(e,t)=>{e.ipAdapterInfo.model=t.payload},ipAdapterBeginStepPctChanged:(e,t)=>{e.ipAdapterInfo.beginStepPct=t.payload},ipAdapterEndStepPctChanged:(e,t)=>{e.ipAdapterInfo.endStepPct=t.payload},ipAdapterStateReset:e=>{e.isIPAdapterEnabled=!1,e.ipAdapterInfo={...Q$}}},extraReducers:e=>{e.addCase(Q5,(t,n)=>{const r=t.controlNets[n.payload.controlNetId];r&&r.controlImage!==null&&t.pendingControlImages.push(n.payload.controlNetId)}),e.addCase(kb,t=>{t.pendingControlImages=[]}),e.addMatcher(vD,t=>{t.pendingControlImages=[]}),e.addMatcher(pe.endpoints.deleteImage.matchFulfilled,(t,n)=>{const{image_name:r}=n.meta.arg.originalArgs;rs(t.controlNets,i=>{i.controlImage===r&&(i.controlImage=null,i.processedControlImage=null),i.processedControlImage===r&&(i.processedControlImage=null)})})}}),{isControlNetEnabledToggled:wIe,controlNetAdded:xIe,controlNetDuplicated:CIe,controlNetAddedFromImage:EIe,controlNetRemoved:Z$,controlNetImageChanged:Qc,controlNetProcessedImageChanged:Y5,controlNetToggled:TIe,controlNetModelChanged:D6,controlNetWeightChanged:AIe,controlNetBeginStepPctChanged:kIe,controlNetEndStepPctChanged:PIe,controlNetControlModeChanged:RIe,controlNetResizeModeChanged:IIe,controlNetProcessorParamsChanged:Ode,controlNetProcessorTypeChanged:Mde,controlNetReset:Nde,controlNetAutoConfigToggled:L6,isIPAdapterEnableToggled:OIe,ipAdapterImageChanged:Pb,ipAdapterWeightChanged:MIe,ipAdapterModelChanged:NIe,ipAdapterBeginStepPctChanged:DIe,ipAdapterEndStepPctChanged:LIe,ipAdapterStateReset:J$}=Y$.actions,Dde=Y$.reducer,Lde={imagesToDelete:[],isModalOpen:!1},eF=nr({name:"deleteImageModal",initialState:Lde,reducers:{isModalOpenChanged:(e,t)=>{e.isModalOpen=t.payload},imagesToDeleteSelected:(e,t)=>{e.imagesToDelete=t.payload},imageDeletionCanceled:e=>{e.imagesToDelete=[],e.isModalOpen=!1}}}),{isModalOpenChanged:Z5,imagesToDeleteSelected:$de,imageDeletionCanceled:$Ie}=eF.actions,Fde=eF.reducer,tF={isEnabled:!1,maxPrompts:100,combinatorial:!0},Bde=tF,nF=nr({name:"dynamicPrompts",initialState:Bde,reducers:{maxPromptsChanged:(e,t)=>{e.maxPrompts=t.payload},maxPromptsReset:e=>{e.maxPrompts=tF.maxPrompts},combinatorialToggled:e=>{e.combinatorial=!e.combinatorial},isEnabledToggled:e=>{e.isEnabled=!e.isEnabled}}}),{isEnabledToggled:FIe,maxPromptsChanged:BIe,maxPromptsReset:zIe,combinatorialToggled:UIe}=nF.actions,zde=nF.reducer,rF={selection:[],shouldAutoSwitch:!0,autoAssignBoardOnClick:!0,autoAddBoardId:"none",galleryImageMinimumWidth:96,selectedBoardId:"none",galleryView:"images",boardSearchText:""},iF=nr({name:"gallery",initialState:rF,reducers:{imageSelected:(e,t)=>{e.selection=t.payload?[t.payload]:[]},selectionChanged:(e,t)=>{e.selection=t.payload},shouldAutoSwitchChanged:(e,t)=>{e.shouldAutoSwitch=t.payload},setGalleryImageMinimumWidth:(e,t)=>{e.galleryImageMinimumWidth=t.payload},autoAssignBoardOnClickChanged:(e,t)=>{e.autoAssignBoardOnClick=t.payload},boardIdSelected:(e,t)=>{e.selectedBoardId=t.payload,e.galleryView="images"},autoAddBoardIdChanged:(e,t)=>{if(!t.payload){e.autoAddBoardId="none";return}e.autoAddBoardId=t.payload},galleryViewChanged:(e,t)=>{e.galleryView=t.payload},boardSearchTextChanged:(e,t)=>{e.boardSearchText=t.payload}},extraReducers:e=>{e.addMatcher(jde,(t,n)=>{const r=n.meta.arg.originalArgs;r===t.selectedBoardId&&(t.selectedBoardId="none",t.galleryView="images"),r===t.autoAddBoardId&&(t.autoAddBoardId="none")}),e.addMatcher(pi.endpoints.listAllBoards.matchFulfilled,(t,n)=>{const r=n.payload;t.autoAddBoardId&&(r.map(i=>i.board_id).includes(t.autoAddBoardId)||(t.autoAddBoardId="none"))})}}),{imageSelected:ha,shouldAutoSwitchChanged:jIe,autoAssignBoardOnClickChanged:VIe,setGalleryImageMinimumWidth:GIe,boardIdSelected:LC,autoAddBoardIdChanged:HIe,galleryViewChanged:h1,selectionChanged:oF,boardSearchTextChanged:qIe}=iF.actions,Ude=iF.reducer,jde=os(pe.endpoints.deleteBoard.matchFulfilled,pe.endpoints.deleteBoardAndImages.matchFulfilled),$6={weight:.75},Vde={loras:{}},sF=nr({name:"lora",initialState:Vde,reducers:{loraAdded:(e,t)=>{const{model_name:n,id:r,base_model:i}=t.payload;e.loras[r]={id:r,model_name:n,base_model:i,...$6}},loraRecalled:(e,t)=>{const{model_name:n,id:r,base_model:i,weight:o}=t.payload;e.loras[r]={id:r,model_name:n,base_model:i,weight:o}},loraRemoved:(e,t)=>{const n=t.payload;delete e.loras[n]},lorasCleared:e=>{e.loras={}},loraWeightChanged:(e,t)=>{const{id:n,weight:r}=t.payload,i=e.loras[n];i&&(i.weight=r)},loraWeightReset:(e,t)=>{const n=t.payload,r=e.loras[n];r&&(r.weight=$6.weight)}}}),{loraAdded:WIe,loraRemoved:aF,loraWeightChanged:KIe,loraWeightReset:XIe,lorasCleared:QIe,loraRecalled:YIe}=sF.actions,Gde=sF.reducer;function as(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{let t;const n=new Set,r=(l,u)=>{const c=typeof l=="function"?l(t):l;if(!Object.is(c,t)){const d=t;t=u??typeof c!="object"?c:Object.assign({},t,c),n.forEach(f=>f(t,d))}},i=()=>t,a={setState:r,getState:i,subscribe:l=>(n.add(l),()=>n.delete(l)),destroy:()=>{n.clear()}};return t=e(r,i,a),a},Hde=e=>e?F6(e):F6,{useSyncExternalStoreWithSelector:qde}=Rce;function lF(e,t=e.getState,n){const r=qde(e.subscribe,e.getState,e.getServerState||e.getState,t,n);return M.useDebugValue(r),r}const B6=(e,t)=>{const n=Hde(e),r=(i,o=t)=>lF(n,i,o);return Object.assign(r,n),r},Wde=(e,t)=>e?B6(e,t):B6;function yo(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,i]of e)if(!Object.is(i,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r=0;r{}};function Rb(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(i+1),n=n.slice(0,i)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}L0.prototype=Rb.prototype={constructor:L0,on:function(e,t){var n=this._,r=Xde(e+"",n),i,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var n=new Array(i),r=0,i,o;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),U6.hasOwnProperty(t)?{space:U6[t],local:e}:e}function Yde(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===$C&&t.documentElement.namespaceURI===$C?t.createElement(e):t.createElementNS(n,e)}}function Zde(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function uF(e){var t=Ib(e);return(t.local?Zde:Yde)(t)}function Jde(){}function J5(e){return e==null?Jde:function(){return this.querySelector(e)}}function efe(e){typeof e!="function"&&(e=J5(e));for(var t=this._groups,n=t.length,r=new Array(n),i=0;i=g&&(g=y+1);!(S=b[g])&&++g=0;)(s=r[i])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Efe(e){e||(e=Tfe);function t(d,f){return d&&f?e(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,i=new Array(r),o=0;ot?1:e>=t?0:NaN}function Afe(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function kfe(){return Array.from(this)}function Pfe(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?zfe:typeof t=="function"?jfe:Ufe)(e,t,n??"")):Hf(this.node(),e)}function Hf(e,t){return e.style.getPropertyValue(t)||pF(e).getComputedStyle(e,null).getPropertyValue(t)}function Gfe(e){return function(){delete this[e]}}function Hfe(e,t){return function(){this[e]=t}}function qfe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Wfe(e,t){return arguments.length>1?this.each((t==null?Gfe:typeof t=="function"?qfe:Hfe)(e,t)):this.node()[e]}function gF(e){return e.trim().split(/^|\s+/)}function eT(e){return e.classList||new mF(e)}function mF(e){this._node=e,this._names=gF(e.getAttribute("class")||"")}mF.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function yF(e,t){for(var n=eT(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function She(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,o;n()=>e;function FC(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:o,x:s,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}FC.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Ihe(e){return!e.ctrlKey&&!e.button}function Ohe(){return this.parentNode}function Mhe(e,t){return t??{x:e.x,y:e.y}}function Nhe(){return navigator.maxTouchPoints||"ontouchstart"in this}function Dhe(){var e=Ihe,t=Ohe,n=Mhe,r=Nhe,i={},o=Rb("start","drag","end"),s=0,a,l,u,c,d=0;function f(v){v.on("mousedown.drag",h).filter(r).on("touchstart.drag",b).on("touchmove.drag",_,Rhe).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(v,S){if(!(c||!e.call(this,v,S))){var w=g(this,t.call(this,v,S),v,S,"mouse");w&&(Es(v.view).on("mousemove.drag",p,Mg).on("mouseup.drag",m,Mg),SF(v.view),dw(v),u=!1,a=v.clientX,l=v.clientY,w("start",v))}}function p(v){if(pf(v),!u){var S=v.clientX-a,w=v.clientY-l;u=S*S+w*w>d}i.mouse("drag",v)}function m(v){Es(v.view).on("mousemove.drag mouseup.drag",null),wF(v.view,u),pf(v),i.mouse("end",v)}function b(v,S){if(e.call(this,v,S)){var w=v.changedTouches,x=t.call(this,v,S),C=w.length,A,T;for(A=0;A>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?By(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?By(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=$he.exec(e))?new co(t[1],t[2],t[3],1):(t=Fhe.exec(e))?new co(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Bhe.exec(e))?By(t[1],t[2],t[3],t[4]):(t=zhe.exec(e))?By(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Uhe.exec(e))?K6(t[1],t[2]/100,t[3]/100,1):(t=jhe.exec(e))?K6(t[1],t[2]/100,t[3]/100,t[4]):j6.hasOwnProperty(e)?H6(j6[e]):e==="transparent"?new co(NaN,NaN,NaN,0):null}function H6(e){return new co(e>>16&255,e>>8&255,e&255,1)}function By(e,t,n,r){return r<=0&&(e=t=n=NaN),new co(e,t,n,r)}function Hhe(e){return e instanceof Lm||(e=Lg(e)),e?(e=e.rgb(),new co(e.r,e.g,e.b,e.opacity)):new co}function BC(e,t,n,r){return arguments.length===1?Hhe(e):new co(e,t,n,r??1)}function co(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}tT(co,BC,xF(Lm,{brighter(e){return e=e==null?g1:Math.pow(g1,e),new co(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ng:Math.pow(Ng,e),new co(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new co(wc(this.r),wc(this.g),wc(this.b),m1(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:q6,formatHex:q6,formatHex8:qhe,formatRgb:W6,toString:W6}));function q6(){return`#${fc(this.r)}${fc(this.g)}${fc(this.b)}`}function qhe(){return`#${fc(this.r)}${fc(this.g)}${fc(this.b)}${fc((isNaN(this.opacity)?1:this.opacity)*255)}`}function W6(){const e=m1(this.opacity);return`${e===1?"rgb(":"rgba("}${wc(this.r)}, ${wc(this.g)}, ${wc(this.b)}${e===1?")":`, ${e})`}`}function m1(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function wc(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fc(e){return e=wc(e),(e<16?"0":"")+e.toString(16)}function K6(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ts(e,t,n,r)}function CF(e){if(e instanceof Ts)return new Ts(e.h,e.s,e.l,e.opacity);if(e instanceof Lm||(e=Lg(e)),!e)return new Ts;if(e instanceof Ts)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),o=Math.max(t,n,r),s=NaN,a=o-i,l=(o+i)/2;return a?(t===o?s=(n-r)/a+(n0&&l<1?0:s,new Ts(s,a,l,e.opacity)}function Whe(e,t,n,r){return arguments.length===1?CF(e):new Ts(e,t,n,r??1)}function Ts(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}tT(Ts,Whe,xF(Lm,{brighter(e){return e=e==null?g1:Math.pow(g1,e),new Ts(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ng:Math.pow(Ng,e),new Ts(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new co(fw(e>=240?e-240:e+120,i,r),fw(e,i,r),fw(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ts(X6(this.h),zy(this.s),zy(this.l),m1(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=m1(this.opacity);return`${e===1?"hsl(":"hsla("}${X6(this.h)}, ${zy(this.s)*100}%, ${zy(this.l)*100}%${e===1?")":`, ${e})`}`}}));function X6(e){return e=(e||0)%360,e<0?e+360:e}function zy(e){return Math.max(0,Math.min(1,e||0))}function fw(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const EF=e=>()=>e;function Khe(e,t){return function(n){return e+n*t}}function Xhe(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function Qhe(e){return(e=+e)==1?TF:function(t,n){return n-t?Xhe(t,n,e):EF(isNaN(t)?n:t)}}function TF(e,t){var n=t-e;return n?Khe(e,n):EF(isNaN(e)?t:e)}const Q6=function e(t){var n=Qhe(t);function r(i,o){var s=n((i=BC(i)).r,(o=BC(o)).r),a=n(i.g,o.g),l=n(i.b,o.b),u=TF(i.opacity,o.opacity);return function(c){return i.r=s(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function Il(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var zC=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hw=new RegExp(zC.source,"g");function Yhe(e){return function(){return e}}function Zhe(e){return function(t){return e(t)+""}}function Jhe(e,t){var n=zC.lastIndex=hw.lastIndex=0,r,i,o,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=zC.exec(e))&&(i=hw.exec(t));)(o=i.index)>n&&(o=t.slice(n,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(i=i[0])?a[s]?a[s]+=i:a[++s]=i:(a[++s]=null,l.push({i:s,x:Il(r,i)})),n=hw.lastIndex;return n180?c+=360:c-u>180&&(u+=360),f.push({i:d.push(i(d)+"rotate(",null,r)-2,x:Il(u,c)})):c&&d.push(i(d)+"rotate("+c+r)}function a(u,c,d,f){u!==c?f.push({i:d.push(i(d)+"skewX(",null,r)-2,x:Il(u,c)}):c&&d.push(i(d)+"skewX("+c+r)}function l(u,c,d,f,h,p){if(u!==d||c!==f){var m=h.push(i(h)+"scale(",null,",",null,")");p.push({i:m-4,x:Il(u,d)},{i:m-2,x:Il(c,f)})}else(d!==1||f!==1)&&h.push(i(h)+"scale("+d+","+f+")")}return function(u,c){var d=[],f=[];return u=e(u),c=e(c),o(u.translateX,u.translateY,c.translateX,c.translateY,d,f),s(u.rotate,c.rotate,d,f),a(u.skewX,c.skewX,d,f),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,d,f),u=c=null,function(h){for(var p=-1,m=f.length,b;++p=0&&e._call.call(void 0,t),e=e._next;--qf}function J6(){Lc=(v1=$g.now())+Ob,qf=op=0;try{upe()}finally{qf=0,dpe(),Lc=0}}function cpe(){var e=$g.now(),t=e-v1;t>PF&&(Ob-=t,v1=e)}function dpe(){for(var e,t=y1,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:y1=n);sp=e,jC(r)}function jC(e){if(!qf){op&&(op=clearTimeout(op));var t=e-Lc;t>24?(e<1/0&&(op=setTimeout(J6,e-$g.now()-Ob)),Fh&&(Fh=clearInterval(Fh))):(Fh||(v1=$g.now(),Fh=setInterval(cpe,PF)),qf=1,RF(J6))}}function e8(e,t,n){var r=new _1;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var fpe=Rb("start","end","cancel","interrupt"),hpe=[],OF=0,t8=1,VC=2,$0=3,n8=4,GC=5,F0=6;function Mb(e,t,n,r,i,o){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;ppe(e,n,{name:t,index:r,group:i,on:fpe,tween:hpe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:OF})}function rT(e,t){var n=Us(e,t);if(n.state>OF)throw new Error("too late; already scheduled");return n}function xa(e,t){var n=Us(e,t);if(n.state>$0)throw new Error("too late; already running");return n}function Us(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function ppe(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=IF(o,0,n.time);function o(u){n.state=t8,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var c,d,f,h;if(n.state!==t8)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===$0)return e8(s);h.state===n8?(h.state=F0,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+cVC&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Gpe(e,t,n){var r,i,o=Vpe(t)?rT:xa;return function(){var s=o(this,e),a=s.on;a!==r&&(i=(r=a).copy()).on(t,n),s.on=i}}function Hpe(e,t){var n=this._id;return arguments.length<2?Us(this.node(),n).on.on(e):this.each(Gpe(n,e,t))}function qpe(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Wpe(){return this.on("end.remove",qpe(this._id))}function Kpe(e){var t=this._name,n=this._id;typeof e!="function"&&(e=J5(e));for(var r=this._groups,i=r.length,o=new Array(i),s=0;s()=>e;function _ge(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Wa(e,t,n){this.k=e,this.x=t,this.y=n}Wa.prototype={constructor:Wa,scale:function(e){return e===1?this:new Wa(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Wa(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ou=new Wa(1,0,0);Wa.prototype;function pw(e){e.stopImmediatePropagation()}function Bh(e){e.preventDefault(),e.stopImmediatePropagation()}function bge(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Sge(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function r8(){return this.__zoom||ou}function wge(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function xge(){return navigator.maxTouchPoints||"ontouchstart"in this}function Cge(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],o=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function Ege(){var e=bge,t=Sge,n=Cge,r=wge,i=xge,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=ape,u=Rb("start","zoom","end"),c,d,f,h=500,p=150,m=0,b=10;function _(E){E.property("__zoom",r8).on("wheel.zoom",C,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",T).filter(i).on("touchstart.zoom",k).on("touchmove.zoom",L).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}_.transform=function(E,P,D,B){var R=E.selection?E.selection():E;R.property("__zoom",r8),E!==R?S(E,P,D,B):R.interrupt().each(function(){w(this,arguments).event(B).start().zoom(null,typeof P=="function"?P.apply(this,arguments):P).end()})},_.scaleBy=function(E,P,D,B){_.scaleTo(E,function(){var R=this.__zoom.k,I=typeof P=="function"?P.apply(this,arguments):P;return R*I},D,B)},_.scaleTo=function(E,P,D,B){_.transform(E,function(){var R=t.apply(this,arguments),I=this.__zoom,O=D==null?v(R):typeof D=="function"?D.apply(this,arguments):D,F=I.invert(O),U=typeof P=="function"?P.apply(this,arguments):P;return n(g(y(I,U),O,F),R,s)},D,B)},_.translateBy=function(E,P,D,B){_.transform(E,function(){return n(this.__zoom.translate(typeof P=="function"?P.apply(this,arguments):P,typeof D=="function"?D.apply(this,arguments):D),t.apply(this,arguments),s)},null,B)},_.translateTo=function(E,P,D,B,R){_.transform(E,function(){var I=t.apply(this,arguments),O=this.__zoom,F=B==null?v(I):typeof B=="function"?B.apply(this,arguments):B;return n(ou.translate(F[0],F[1]).scale(O.k).translate(typeof P=="function"?-P.apply(this,arguments):-P,typeof D=="function"?-D.apply(this,arguments):-D),I,s)},B,R)};function y(E,P){return P=Math.max(o[0],Math.min(o[1],P)),P===E.k?E:new Wa(P,E.x,E.y)}function g(E,P,D){var B=P[0]-D[0]*E.k,R=P[1]-D[1]*E.k;return B===E.x&&R===E.y?E:new Wa(E.k,B,R)}function v(E){return[(+E[0][0]+ +E[1][0])/2,(+E[0][1]+ +E[1][1])/2]}function S(E,P,D,B){E.on("start.zoom",function(){w(this,arguments).event(B).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(B).end()}).tween("zoom",function(){var R=this,I=arguments,O=w(R,I).event(B),F=t.apply(R,I),U=D==null?v(F):typeof D=="function"?D.apply(R,I):D,V=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),H=R.__zoom,Y=typeof P=="function"?P.apply(R,I):P,Q=l(H.invert(U).concat(V/H.k),Y.invert(U).concat(V/Y.k));return function(j){if(j===1)j=Y;else{var K=Q(j),te=V/K[2];j=new Wa(te,U[0]-K[0]*te,U[1]-K[1]*te)}O.zoom(null,j)}})}function w(E,P,D){return!D&&E.__zooming||new x(E,P)}function x(E,P){this.that=E,this.args=P,this.active=0,this.sourceEvent=null,this.extent=t.apply(E,P),this.taps=0}x.prototype={event:function(E){return E&&(this.sourceEvent=E),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(E,P){return this.mouse&&E!=="mouse"&&(this.mouse[1]=P.invert(this.mouse[0])),this.touch0&&E!=="touch"&&(this.touch0[1]=P.invert(this.touch0[0])),this.touch1&&E!=="touch"&&(this.touch1[1]=P.invert(this.touch1[0])),this.that.__zoom=P,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(E){var P=Es(this.that).datum();u.call(E,this.that,new _ge(E,{sourceEvent:this.sourceEvent,target:_,type:E,transform:this.that.__zoom,dispatch:u}),P)}};function C(E,...P){if(!e.apply(this,arguments))return;var D=w(this,P).event(E),B=this.__zoom,R=Math.max(o[0],Math.min(o[1],B.k*Math.pow(2,r.apply(this,arguments)))),I=Ys(E);if(D.wheel)(D.mouse[0][0]!==I[0]||D.mouse[0][1]!==I[1])&&(D.mouse[1]=B.invert(D.mouse[0]=I)),clearTimeout(D.wheel);else{if(B.k===R)return;D.mouse=[I,B.invert(I)],B0(this),D.start()}Bh(E),D.wheel=setTimeout(O,p),D.zoom("mouse",n(g(y(B,R),D.mouse[0],D.mouse[1]),D.extent,s));function O(){D.wheel=null,D.end()}}function A(E,...P){if(f||!e.apply(this,arguments))return;var D=E.currentTarget,B=w(this,P,!0).event(E),R=Es(E.view).on("mousemove.zoom",U,!0).on("mouseup.zoom",V,!0),I=Ys(E,D),O=E.clientX,F=E.clientY;SF(E.view),pw(E),B.mouse=[I,this.__zoom.invert(I)],B0(this),B.start();function U(H){if(Bh(H),!B.moved){var Y=H.clientX-O,Q=H.clientY-F;B.moved=Y*Y+Q*Q>m}B.event(H).zoom("mouse",n(g(B.that.__zoom,B.mouse[0]=Ys(H,D),B.mouse[1]),B.extent,s))}function V(H){R.on("mousemove.zoom mouseup.zoom",null),wF(H.view,B.moved),Bh(H),B.event(H).end()}}function T(E,...P){if(e.apply(this,arguments)){var D=this.__zoom,B=Ys(E.changedTouches?E.changedTouches[0]:E,this),R=D.invert(B),I=D.k*(E.shiftKey?.5:2),O=n(g(y(D,I),B,R),t.apply(this,P),s);Bh(E),a>0?Es(this).transition().duration(a).call(S,O,B,E):Es(this).call(_.transform,O,B,E)}}function k(E,...P){if(e.apply(this,arguments)){var D=E.touches,B=D.length,R=w(this,P,E.changedTouches.length===B).event(E),I,O,F,U;for(pw(E),O=0;O"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},LF=ul.error001();function hr(e,t){const n=M.useContext(Nb);if(n===null)throw new Error(LF);return lF(n,e,t)}const oi=()=>{const e=M.useContext(Nb);if(e===null)throw new Error(LF);return M.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Age=e=>e.userSelectionActive?"none":"all";function kge({position:e,children:t,className:n,style:r,...i}){const o=hr(Age),s=`${e}`.split("-");return Z.jsx("div",{className:as(["react-flow__panel",n,...s]),style:{...r,pointerEvents:o},...i,children:t})}function Pge({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:Z.jsx(kge,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:Z.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Rge=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:i=!0,labelBgStyle:o={},labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...c})=>{const d=M.useRef(null),[f,h]=M.useState({x:0,y:0,width:0,height:0}),p=as(["react-flow__edge-textwrapper",u]);return M.useEffect(()=>{if(d.current){const m=d.current.getBBox();h({x:m.x,y:m.y,width:m.width,height:m.height})}},[n]),typeof n>"u"||!n?null:Z.jsxs("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:p,visibility:f.width?"visible":"hidden",...c,children:[i&&Z.jsx("rect",{width:f.width+2*s[0],x:-s[0],y:-s[1],height:f.height+2*s[1],className:"react-flow__edge-textbg",style:o,rx:a,ry:a}),Z.jsx("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r,children:n}),l]})};var Ige=M.memo(Rge);const oT=e=>({width:e.offsetWidth,height:e.offsetHeight}),Wf=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),sT=(e={x:0,y:0},t)=>({x:Wf(e.x,t[0][0],t[1][0]),y:Wf(e.y,t[0][1],t[1][1])}),i8=(e,t,n)=>en?-Wf(Math.abs(e-n),1,50)/50:0,$F=(e,t)=>{const n=i8(e.x,35,t.width-35)*20,r=i8(e.y,35,t.height-35)*20;return[n,r]},FF=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},BF=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Fg=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),zF=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),o8=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),ZIe=(e,t)=>zF(BF(Fg(e),Fg(t))),HC=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Oge=e=>Zo(e.width)&&Zo(e.height)&&Zo(e.x)&&Zo(e.y),Zo=e=>!isNaN(e)&&isFinite(e),Ur=Symbol.for("internals"),UF=["Enter"," ","Escape"],Mge=(e,t)=>{},Nge=e=>"nativeEvent"in e;function qC(e){var i,o;const t=Nge(e)?e.nativeEvent:e,n=((o=(i=t.composedPath)==null?void 0:i.call(t))==null?void 0:o[0])||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n==null?void 0:n.nodeName)||(n==null?void 0:n.hasAttribute("contenteditable"))||!!(n!=null&&n.closest(".nokey"))}const jF=e=>"clientX"in e,su=(e,t)=>{var o,s;const n=jF(e),r=n?e.clientX:(o=e.touches)==null?void 0:o[0].clientX,i=n?e.clientY:(s=e.touches)==null?void 0:s[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:i-((t==null?void 0:t.top)??0)}},b1=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},$m=({id:e,path:t,labelX:n,labelY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h=20})=>Z.jsxs(Z.Fragment,{children:[Z.jsx("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&Z.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&Zo(n)&&Zo(r)?Z.jsx(Ige,{x:n,y:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null]});$m.displayName="BaseEdge";function zh(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(o=>o.id===e);i&&n(r,{...i})}}function VF({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,o=n{const[b,_,y]=HF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o});return Z.jsx($m,{path:b,labelX:_,labelY:y,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})});aT.displayName="SimpleBezierEdge";const a8={[Je.Left]:{x:-1,y:0},[Je.Right]:{x:1,y:0},[Je.Top]:{x:0,y:-1},[Je.Bottom]:{x:0,y:1}},Dge=({source:e,sourcePosition:t=Je.Bottom,target:n})=>t===Je.Left||t===Je.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Lge({source:e,sourcePosition:t=Je.Bottom,target:n,targetPosition:r=Je.Top,center:i,offset:o}){const s=a8[t],a=a8[r],l={x:e.x+s.x*o,y:e.y+s.y*o},u={x:n.x+a.x*o,y:n.y+a.y*o},c=Dge({source:l,sourcePosition:t,target:u}),d=c.x!==0?"x":"y",f=c[d];let h=[],p,m;const b={x:0,y:0},_={x:0,y:0},[y,g,v,S]=VF({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){p=i.x||y,m=i.y||g;const x=[{x:p,y:l.y},{x:p,y:u.y}],C=[{x:l.x,y:m},{x:u.x,y:m}];s[d]===f?h=d==="x"?x:C:h=d==="x"?C:x}else{const x=[{x:l.x,y:u.y}],C=[{x:u.x,y:l.y}];if(d==="x"?h=s.x===f?C:x:h=s.y===f?x:C,t===r){const N=Math.abs(e[d]-n[d]);if(N<=o){const E=Math.min(o-1,o-N);s[d]===f?b[d]=(l[d]>e[d]?-1:1)*E:_[d]=(u[d]>n[d]?-1:1)*E}}if(t!==r){const N=d==="x"?"y":"x",E=s[d]===a[N],P=l[N]>u[N],D=l[N]=L?(p=(A.x+T.x)/2,m=h[0].y):(p=h[0].x,m=(A.y+T.y)/2)}return[[e,{x:l.x+b.x,y:l.y+b.y},...h,{x:u.x+_.x,y:u.y+_.y},n],p,m,v,S]}function $ge(e,t,n,r){const i=Math.min(l8(e,t)/2,l8(t,n)/2,r),{x:o,y:s}=t;if(e.x===o&&o===n.x||e.y===s&&s===n.y)return`L${o} ${s}`;if(e.y===s){const u=e.x{let g="";return y>0&&y{const[_,y,g]=WC({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:r,targetPosition:f,borderRadius:m==null?void 0:m.borderRadius,offset:m==null?void 0:m.offset});return Z.jsx($m,{path:_,labelX:y,labelY:g,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:p,interactionWidth:b})});Db.displayName="SmoothStepEdge";const lT=M.memo(e=>{var t;return Z.jsx(Db,{...e,pathOptions:M.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});lT.displayName="StepEdge";function Fge({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,o,s,a]=VF({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,o,s,a]}const uT=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})=>{const[p,m,b]=Fge({sourceX:e,sourceY:t,targetX:n,targetY:r});return Z.jsx($m,{path:p,labelX:m,labelY:b,label:i,labelStyle:o,labelShowBg:s,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:d,markerStart:f,interactionWidth:h})});uT.displayName="StraightEdge";function Vy(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function u8({pos:e,x1:t,y1:n,x2:r,y2:i,c:o}){switch(e){case Je.Left:return[t-Vy(t-r,o),n];case Je.Right:return[t+Vy(r-t,o),n];case Je.Top:return[t,n-Vy(n-i,o)];case Je.Bottom:return[t,n+Vy(i-n,o)]}}function qF({sourceX:e,sourceY:t,sourcePosition:n=Je.Bottom,targetX:r,targetY:i,targetPosition:o=Je.Top,curvature:s=.25}){const[a,l]=u8({pos:n,x1:e,y1:t,x2:r,y2:i,c:s}),[u,c]=u8({pos:o,x1:r,y1:i,x2:e,y2:t,c:s}),[d,f,h,p]=GF({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${i}`,d,f,h,p]}const w1=M.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=Je.Bottom,targetPosition:o=Je.Top,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,pathOptions:m,interactionWidth:b})=>{const[_,y,g]=qF({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:o,curvature:m==null?void 0:m.curvature});return Z.jsx($m,{path:_,labelX:y,labelY:g,label:s,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:b})});w1.displayName="BezierEdge";const cT=M.createContext(null),Bge=cT.Provider;cT.Consumer;const zge=()=>M.useContext(cT),Uge=e=>"id"in e&&"source"in e&&"target"in e,WF=e=>"id"in e&&!("source"in e)&&!("target"in e),jge=(e,t,n)=>{if(!WF(e))return[];const r=n.filter(i=>i.source===e.id).map(i=>i.target);return t.filter(i=>r.includes(i.id))},Vge=(e,t,n)=>{if(!WF(e))return[];const r=n.filter(i=>i.target===e.id).map(i=>i.source);return t.filter(i=>r.includes(i.id))},Gge=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,KC=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,Hge=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),KF=(e,t)=>{if(!e.source||!e.target)return t;let n;return Uge(e)?n={...e}:n={...e,id:Gge(e)},Hge(n,t)?t:t.concat(n)},XF=({x:e,y:t},[n,r,i],o,[s,a])=>{const l={x:(e-n)/i,y:(t-r)/i};return o?{x:s*Math.round(l.x/s),y:a*Math.round(l.y/a)}:l},qge=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),mf=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],i={x:e.position.x-n,y:e.position.y-r};return{...i,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:i}},dT=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,i)=>{const{x:o,y:s}=mf(i,t).positionAbsolute;return BF(r,Fg({x:o,y:s,width:i.width||0,height:i.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return zF(n)},QF=(e,t,[n,r,i]=[0,0,1],o=!1,s=!1,a=[0,0])=>{const l={x:(t.x-n)/i,y:(t.y-r)/i,width:t.width/i,height:t.height/i},u=[];return e.forEach(c=>{const{width:d,height:f,selectable:h=!0,hidden:p=!1}=c;if(s&&!h||p)return!1;const{positionAbsolute:m}=mf(c,a),b={x:m.x,y:m.y,width:d||0,height:f||0},_=HC(l,b),y=typeof d>"u"||typeof f>"u"||d===null||f===null,g=o&&_>0,v=(d||0)*(f||0);(y||g||_>=v||c.dragging)&&u.push(c)}),u},fT=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},YF=(e,t,n,r,i,o=.1)=>{const s=t/(e.width*(1+o)),a=n/(e.height*(1+o)),l=Math.min(s,a),u=Wf(l,r,i),c=e.x+e.width/2,d=e.y+e.height/2,f=t/2-c*u,h=n/2-d*u;return[f,h,u]},Ju=(e,t=0)=>e.transition().duration(t);function c8(e,t,n,r){return(t[n]||[]).reduce((i,o)=>{var s,a;return`${e.id}-${o.id}-${n}`!==r&&i.push({id:o.id||null,type:n,nodeId:e.id,x:(((s=e.positionAbsolute)==null?void 0:s.x)??0)+o.x+o.width/2,y:(((a=e.positionAbsolute)==null?void 0:a.y)??0)+o.y+o.height/2}),i},[])}function Wge(e,t,n,r,i,o){const{x:s,y:a}=su(e),u=t.elementsFromPoint(s,a).find(p=>p.classList.contains("react-flow__handle"));if(u){const p=u.getAttribute("data-nodeid");if(p){const m=hT(void 0,u),b=u.getAttribute("data-handleid"),_=o({nodeId:p,id:b,type:m});if(_)return{handle:{id:b,type:m,nodeId:p,x:n.x,y:n.y},validHandleResult:_}}}let c=[],d=1/0;if(i.forEach(p=>{const m=Math.sqrt((p.x-n.x)**2+(p.y-n.y)**2);if(m<=r){const b=o(p);m<=d&&(mp.isValid),h=c.some(({handle:p})=>p.type==="target");return c.find(({handle:p,validHandleResult:m})=>h?p.type==="target":f?m.isValid:!0)||c[0]}const Kge={source:null,target:null,sourceHandle:null,targetHandle:null},ZF=()=>({handleDomNode:null,isValid:!1,connection:Kge,endHandle:null});function JF(e,t,n,r,i,o,s){const a=i==="target",l=s.querySelector(`.react-flow__handle[data-id="${e==null?void 0:e.nodeId}-${e==null?void 0:e.id}-${e==null?void 0:e.type}"]`),u={...ZF(),handleDomNode:l};if(l){const c=hT(void 0,l),d=l.getAttribute("data-nodeid"),f=l.getAttribute("data-handleid"),h=l.classList.contains("connectable"),p=l.classList.contains("connectableend"),m={source:a?d:n,sourceHandle:a?f:r,target:a?n:d,targetHandle:a?r:f};u.connection=m,h&&p&&(t===$c.Strict?a&&c==="source"||!a&&c==="target":d!==n||f!==r)&&(u.endHandle={nodeId:d,handleId:f,type:c},u.isValid=o(m))}return u}function Xge({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,o)=>{if(o[Ur]){const{handleBounds:s}=o[Ur];let a=[],l=[];s&&(a=c8(o,s,"source",`${t}-${n}-${r}`),l=c8(o,s,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function hT(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function gw(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function Qge(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function eB({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:o,setState:s,isValidConnection:a,edgeUpdaterType:l,onEdgeUpdateEnd:u}){const c=FF(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:p,onConnectStart:m,panBy:b,getNodes:_,cancelConnection:y}=o();let g=0,v;const{x:S,y:w}=su(e),x=c==null?void 0:c.elementFromPoint(S,w),C=hT(l,x),A=f==null?void 0:f.getBoundingClientRect();if(!A||!C)return;let T,k=su(e,A),L=!1,N=null,E=!1,P=null;const D=Xge({nodes:_(),nodeId:n,handleId:t,handleType:C}),B=()=>{if(!h)return;const[O,F]=$F(k,A);b({x:O,y:F}),g=requestAnimationFrame(B)};s({connectionPosition:k,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:C,connectionStartHandle:{nodeId:n,handleId:t,type:C},connectionEndHandle:null}),m==null||m(e,{nodeId:n,handleId:t,handleType:C});function R(O){const{transform:F}=o();k=su(O,A);const{handle:U,validHandleResult:V}=Wge(O,c,XF(k,F,!1,[1,1]),p,D,H=>JF(H,d,n,t,i?"target":"source",a,c));if(v=U,L||(B(),L=!0),P=V.handleDomNode,N=V.connection,E=V.isValid,s({connectionPosition:v&&E?qge({x:v.x,y:v.y},F):k,connectionStatus:Qge(!!v,E),connectionEndHandle:V.endHandle}),!v&&!E&&!P)return gw(T);N.source!==N.target&&P&&(gw(T),T=P,P.classList.add("connecting","react-flow__handle-connecting"),P.classList.toggle("valid",E),P.classList.toggle("react-flow__handle-valid",E))}function I(O){var F,U;(v||P)&&N&&E&&(r==null||r(N)),(U=(F=o()).onConnectEnd)==null||U.call(F,O),l&&(u==null||u(O)),gw(T),y(),cancelAnimationFrame(g),L=!1,E=!1,N=null,P=null,c.removeEventListener("mousemove",R),c.removeEventListener("mouseup",I),c.removeEventListener("touchmove",R),c.removeEventListener("touchend",I)}c.addEventListener("mousemove",R),c.addEventListener("mouseup",I),c.addEventListener("touchmove",R),c.addEventListener("touchend",I)}const d8=()=>!0,Yge=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),Zge=(e,t,n)=>r=>{const{connectionStartHandle:i,connectionEndHandle:o,connectionClickStartHandle:s}=r;return{connecting:(i==null?void 0:i.nodeId)===e&&(i==null?void 0:i.handleId)===t&&(i==null?void 0:i.type)===n||(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.handleId)===t&&(o==null?void 0:o.type)===n,clickConnecting:(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.handleId)===t&&(s==null?void 0:s.type)===n}},tB=M.forwardRef(({type:e="source",position:t=Je.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:o=!0,id:s,onConnect:a,children:l,className:u,onMouseDown:c,onTouchStart:d,...f},h)=>{var A,T;const p=s||null,m=e==="target",b=oi(),_=zge(),{connectOnClick:y,noPanClassName:g}=hr(Yge,yo),{connecting:v,clickConnecting:S}=hr(Zge(_,p,e),yo);_||(T=(A=b.getState()).onError)==null||T.call(A,"010",ul.error010());const w=k=>{const{defaultEdgeOptions:L,onConnect:N,hasDefaultEdges:E}=b.getState(),P={...L,...k};if(E){const{edges:D,setEdges:B}=b.getState();B(KF(P,D))}N==null||N(P),a==null||a(P)},x=k=>{if(!_)return;const L=jF(k);i&&(L&&k.button===0||!L)&&eB({event:k,handleId:p,nodeId:_,onConnect:w,isTarget:m,getState:b.getState,setState:b.setState,isValidConnection:n||b.getState().isValidConnection||d8}),L?c==null||c(k):d==null||d(k)},C=k=>{const{onClickConnectStart:L,onClickConnectEnd:N,connectionClickStartHandle:E,connectionMode:P,isValidConnection:D}=b.getState();if(!_||!E&&!i)return;if(!E){L==null||L(k,{nodeId:_,handleId:p,handleType:e}),b.setState({connectionClickStartHandle:{nodeId:_,type:e,handleId:p}});return}const B=FF(k.target),R=n||D||d8,{connection:I,isValid:O}=JF({nodeId:_,id:p,type:e},P,E.nodeId,E.handleId||null,E.type,R,B);O&&w(I),N==null||N(k),b.setState({connectionClickStartHandle:null})};return Z.jsx("div",{"data-handleid":p,"data-nodeid":_,"data-handlepos":t,"data-id":`${_}-${p}-${e}`,className:as(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",g,u,{source:!m,target:m,connectable:r,connectablestart:i,connectableend:o,connecting:S,connectionindicator:r&&(i&&!v||o&&v)}]),onMouseDown:x,onTouchStart:x,onClick:y?C:void 0,ref:h,...f,children:l})});tB.displayName="Handle";var x1=M.memo(tB);const nB=({data:e,isConnectable:t,targetPosition:n=Je.Top,sourcePosition:r=Je.Bottom})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(x1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,Z.jsx(x1,{type:"source",position:r,isConnectable:t})]});nB.displayName="DefaultNode";var XC=M.memo(nB);const rB=({data:e,isConnectable:t,sourcePosition:n=Je.Bottom})=>Z.jsxs(Z.Fragment,{children:[e==null?void 0:e.label,Z.jsx(x1,{type:"source",position:n,isConnectable:t})]});rB.displayName="InputNode";var iB=M.memo(rB);const oB=({data:e,isConnectable:t,targetPosition:n=Je.Top})=>Z.jsxs(Z.Fragment,{children:[Z.jsx(x1,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label]});oB.displayName="OutputNode";var sB=M.memo(oB);const pT=()=>null;pT.displayName="GroupNode";const Jge=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected)}),Gy=e=>e.id;function eme(e,t){return yo(e.selectedNodes.map(Gy),t.selectedNodes.map(Gy))&&yo(e.selectedEdges.map(Gy),t.selectedEdges.map(Gy))}const aB=M.memo(({onSelectionChange:e})=>{const t=oi(),{selectedNodes:n,selectedEdges:r}=hr(Jge,eme);return M.useEffect(()=>{var o,s;const i={nodes:n,edges:r};e==null||e(i),(s=(o=t.getState()).onSelectionChange)==null||s.call(o,i)},[n,r,e]),null});aB.displayName="SelectionListener";const tme=e=>!!e.onSelectionChange;function nme({onSelectionChange:e}){const t=hr(tme);return e||t?Z.jsx(aB,{onSelectionChange:e}):null}const rme=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function _d(e,t){M.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function kt(e,t,n){M.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const ime=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:i,onConnectStart:o,onConnectEnd:s,onClickConnectStart:a,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:c,nodesFocusable:d,edgesFocusable:f,edgesUpdatable:h,elevateNodesOnSelect:p,minZoom:m,maxZoom:b,nodeExtent:_,onNodesChange:y,onEdgesChange:g,elementsSelectable:v,connectionMode:S,snapGrid:w,snapToGrid:x,translateExtent:C,connectOnClick:A,defaultEdgeOptions:T,fitView:k,fitViewOptions:L,onNodesDelete:N,onEdgesDelete:E,onNodeDrag:P,onNodeDragStart:D,onNodeDragStop:B,onSelectionDrag:R,onSelectionDragStart:I,onSelectionDragStop:O,noPanClassName:F,nodeOrigin:U,rfId:V,autoPanOnConnect:H,autoPanOnNodeDrag:Y,onError:Q,connectionRadius:j,isValidConnection:K})=>{const{setNodes:te,setEdges:oe,setDefaultNodesAndEdges:me,setMinZoom:le,setMaxZoom:ht,setTranslateExtent:nt,setNodeExtent:$e,reset:ct}=hr(rme,yo),Pe=oi();return M.useEffect(()=>{const qt=r==null?void 0:r.map(Sr=>({...Sr,...T}));return me(n,qt),()=>{ct()}},[]),kt("defaultEdgeOptions",T,Pe.setState),kt("connectionMode",S,Pe.setState),kt("onConnect",i,Pe.setState),kt("onConnectStart",o,Pe.setState),kt("onConnectEnd",s,Pe.setState),kt("onClickConnectStart",a,Pe.setState),kt("onClickConnectEnd",l,Pe.setState),kt("nodesDraggable",u,Pe.setState),kt("nodesConnectable",c,Pe.setState),kt("nodesFocusable",d,Pe.setState),kt("edgesFocusable",f,Pe.setState),kt("edgesUpdatable",h,Pe.setState),kt("elementsSelectable",v,Pe.setState),kt("elevateNodesOnSelect",p,Pe.setState),kt("snapToGrid",x,Pe.setState),kt("snapGrid",w,Pe.setState),kt("onNodesChange",y,Pe.setState),kt("onEdgesChange",g,Pe.setState),kt("connectOnClick",A,Pe.setState),kt("fitViewOnInit",k,Pe.setState),kt("fitViewOnInitOptions",L,Pe.setState),kt("onNodesDelete",N,Pe.setState),kt("onEdgesDelete",E,Pe.setState),kt("onNodeDrag",P,Pe.setState),kt("onNodeDragStart",D,Pe.setState),kt("onNodeDragStop",B,Pe.setState),kt("onSelectionDrag",R,Pe.setState),kt("onSelectionDragStart",I,Pe.setState),kt("onSelectionDragStop",O,Pe.setState),kt("noPanClassName",F,Pe.setState),kt("nodeOrigin",U,Pe.setState),kt("rfId",V,Pe.setState),kt("autoPanOnConnect",H,Pe.setState),kt("autoPanOnNodeDrag",Y,Pe.setState),kt("onError",Q,Pe.setState),kt("connectionRadius",j,Pe.setState),kt("isValidConnection",K,Pe.setState),_d(e,te),_d(t,oe),_d(m,le),_d(b,ht),_d(C,nt),_d(_,$e),null},f8={display:"none"},ome={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},lB="react-flow__node-desc",uB="react-flow__edge-desc",sme="react-flow__aria-live",ame=e=>e.ariaLiveMessage;function lme({rfId:e}){const t=hr(ame);return Z.jsx("div",{id:`${sme}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:ome,children:t})}function ume({rfId:e,disableKeyboardA11y:t}){return Z.jsxs(Z.Fragment,{children:[Z.jsxs("div",{id:`${lB}-${e}`,style:f8,children:["Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "]}),Z.jsx("div",{id:`${uB}-${e}`,style:f8,children:"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."}),!t&&Z.jsx(lme,{rfId:e})]})}const cme=typeof document<"u"?document:null;var Bg=(e=null,t={target:cme})=>{const[n,r]=M.useState(!1),i=M.useRef(!1),o=M.useRef(new Set([])),[s,a]=M.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),c=u.reduce((d,f)=>d.concat(...f),[]);return[u,c]}return[[],[]]},[e]);return M.useEffect(()=>{var l,u;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,!i.current&&qC(h))return!1;const p=p8(h.code,a);o.current.add(h[p]),h8(s,o.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if(!i.current&&qC(h))return!1;const p=p8(h.code,a);h8(s,o.current,!0)?(r(!1),o.current.clear()):o.current.delete(h[p]),h.key==="Meta"&&o.current.clear(),i.current=!1},f=()=>{o.current.clear(),r(!1)};return(l=t==null?void 0:t.target)==null||l.addEventListener("keydown",c),(u=t==null?void 0:t.target)==null||u.addEventListener("keyup",d),window.addEventListener("blur",f),()=>{var h,p;(h=t==null?void 0:t.target)==null||h.removeEventListener("keydown",c),(p=t==null?void 0:t.target)==null||p.removeEventListener("keyup",d),window.removeEventListener("blur",f)}}},[e,r]),n};function h8(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function p8(e,t){return t.includes(e)?"code":"key"}function cB(e,t,n,r){var s,a;if(!e.parentNode)return n;const i=t.get(e.parentNode),o=mf(i,r);return cB(i,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((s=i[Ur])==null?void 0:s.z)??0)>(n.z??0)?((a=i[Ur])==null?void 0:a.z)??0:n.z??0},r)}function dB(e,t,n){e.forEach(r=>{var i;if(r.parentNode&&!e.has(r.parentNode))throw new Error(`Parent node ${r.parentNode} not found`);if(r.parentNode||n!=null&&n[r.id]){const{x:o,y:s,z:a}=cB(r,e,{...r.position,z:((i=r[Ur])==null?void 0:i.z)??0},t);r.positionAbsolute={x:o,y:s},r[Ur].z=a,n!=null&&n[r.id]&&(r[Ur].isParent=!0)}})}function mw(e,t,n,r){const i=new Map,o={},s=r?1e3:0;return e.forEach(a=>{var d;const l=(Zo(a.zIndex)?a.zIndex:0)+(a.selected?s:0),u=t.get(a.id),c={width:u==null?void 0:u.width,height:u==null?void 0:u.height,...a,positionAbsolute:{x:a.position.x,y:a.position.y}};a.parentNode&&(c.parentNode=a.parentNode,o[a.parentNode]=!0),Object.defineProperty(c,Ur,{enumerable:!1,value:{handleBounds:(d=u==null?void 0:u[Ur])==null?void 0:d.handleBounds,z:l}}),i.set(a.id,c)}),dB(i,n,o),i}function fB(e,t={}){const{getNodes:n,width:r,height:i,minZoom:o,maxZoom:s,d3Zoom:a,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:c,nodeOrigin:d}=e(),f=t.initial&&!u&&c;if(a&&l&&(f||!t.initial)){const p=n().filter(b=>{var y;const _=t.includeHiddenNodes?b.width&&b.height:!b.hidden;return(y=t.nodes)!=null&&y.length?_&&t.nodes.some(g=>g.id===b.id):_}),m=p.every(b=>b.width&&b.height);if(p.length>0&&m){const b=dT(p,d),[_,y,g]=YF(b,r,i,t.minZoom??o,t.maxZoom??s,t.padding??.1),v=ou.translate(_,y).scale(g);return typeof t.duration=="number"&&t.duration>0?a.transform(Ju(l,t.duration),v):a.transform(l,v),!0}}return!1}function dme(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[Ur]:r[Ur],selected:n.selected})}),new Map(t)}function fme(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function Hy({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:i,edges:o,onNodesChange:s,onEdgesChange:a,hasDefaultNodes:l,hasDefaultEdges:u}=n();e!=null&&e.length&&(l&&r({nodeInternals:dme(e,i)}),s==null||s(e)),t!=null&&t.length&&(u&&r({edges:fme(t,o)}),a==null||a(t))}const bd=()=>{},hme={zoomIn:bd,zoomOut:bd,zoomTo:bd,getZoom:()=>1,setViewport:bd,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:bd,fitBounds:bd,project:e=>e,viewportInitialized:!1},pme=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),gme=()=>{const e=oi(),{d3Zoom:t,d3Selection:n}=hr(pme,yo);return M.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(Ju(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(Ju(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,o)=>t.scaleTo(Ju(n,o==null?void 0:o.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,o)=>{const[s,a,l]=e.getState().transform,u=ou.translate(i.x??s,i.y??a).scale(i.zoom??l);t.transform(Ju(n,o==null?void 0:o.duration),u)},getViewport:()=>{const[i,o,s]=e.getState().transform;return{x:i,y:o,zoom:s}},fitView:i=>fB(e.getState,i),setCenter:(i,o,s)=>{const{width:a,height:l,maxZoom:u}=e.getState(),c=typeof(s==null?void 0:s.zoom)<"u"?s.zoom:u,d=a/2-i*c,f=l/2-o*c,h=ou.translate(d,f).scale(c);t.transform(Ju(n,s==null?void 0:s.duration),h)},fitBounds:(i,o)=>{const{width:s,height:a,minZoom:l,maxZoom:u}=e.getState(),[c,d,f]=YF(i,s,a,l,u,(o==null?void 0:o.padding)??.1),h=ou.translate(c,d).scale(f);t.transform(Ju(n,o==null?void 0:o.duration),h)},project:i=>{const{transform:o,snapToGrid:s,snapGrid:a}=e.getState();return XF(i,o,s,a)},viewportInitialized:!0}:hme,[t,n])};function hB(){const e=gme(),t=oi(),n=M.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=M.useCallback(m=>t.getState().nodeInternals.get(m),[]),i=M.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(b=>({...b}))},[]),o=M.useCallback(m=>{const{edges:b=[]}=t.getState();return b.find(_=>_.id===m)},[]),s=M.useCallback(m=>{const{getNodes:b,setNodes:_,hasDefaultNodes:y,onNodesChange:g}=t.getState(),v=b(),S=typeof m=="function"?m(v):m;if(y)_(S);else if(g){const w=S.length===0?v.map(x=>({type:"remove",id:x.id})):S.map(x=>({item:x,type:"reset"}));g(w)}},[]),a=M.useCallback(m=>{const{edges:b=[],setEdges:_,hasDefaultEdges:y,onEdgesChange:g}=t.getState(),v=typeof m=="function"?m(b):m;if(y)_(v);else if(g){const S=v.length===0?b.map(w=>({type:"remove",id:w.id})):v.map(w=>({item:w,type:"reset"}));g(S)}},[]),l=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{getNodes:_,setNodes:y,hasDefaultNodes:g,onNodesChange:v}=t.getState();if(g){const w=[..._(),...b];y(w)}else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),u=M.useCallback(m=>{const b=Array.isArray(m)?m:[m],{edges:_=[],setEdges:y,hasDefaultEdges:g,onEdgesChange:v}=t.getState();if(g)y([..._,...b]);else if(v){const S=b.map(w=>({item:w,type:"add"}));v(S)}},[]),c=M.useCallback(()=>{const{getNodes:m,edges:b=[],transform:_}=t.getState(),[y,g,v]=_;return{nodes:m().map(S=>({...S})),edges:b.map(S=>({...S})),viewport:{x:y,y:g,zoom:v}}},[]),d=M.useCallback(({nodes:m,edges:b})=>{const{nodeInternals:_,getNodes:y,edges:g,hasDefaultNodes:v,hasDefaultEdges:S,onNodesDelete:w,onEdgesDelete:x,onNodesChange:C,onEdgesChange:A}=t.getState(),T=(m||[]).map(P=>P.id),k=(b||[]).map(P=>P.id),L=y().reduce((P,D)=>{const B=!T.includes(D.id)&&D.parentNode&&P.find(I=>I.id===D.parentNode);return(typeof D.deletable=="boolean"?D.deletable:!0)&&(T.includes(D.id)||B)&&P.push(D),P},[]),N=g.filter(P=>typeof P.deletable=="boolean"?P.deletable:!0),E=N.filter(P=>k.includes(P.id));if(L||E){const P=fT(L,N),D=[...E,...P],B=D.reduce((R,I)=>(R.includes(I.id)||R.push(I.id),R),[]);if((S||v)&&(S&&t.setState({edges:g.filter(R=>!B.includes(R.id))}),v&&(L.forEach(R=>{_.delete(R.id)}),t.setState({nodeInternals:new Map(_)}))),B.length>0&&(x==null||x(D),A&&A(B.map(R=>({id:R,type:"remove"})))),L.length>0&&(w==null||w(L),C)){const R=L.map(I=>({id:I.id,type:"remove"}));C(R)}}},[]),f=M.useCallback(m=>{const b=Oge(m),_=b?null:t.getState().nodeInternals.get(m.id);return[b?m:o8(_),_,b]},[]),h=M.useCallback((m,b=!0,_)=>{const[y,g,v]=f(m);return y?(_||t.getState().getNodes()).filter(S=>{if(!v&&(S.id===g.id||!S.positionAbsolute))return!1;const w=o8(S),x=HC(w,y);return b&&x>0||x>=m.width*m.height}):[]},[]),p=M.useCallback((m,b,_=!0)=>{const[y]=f(m);if(!y)return!1;const g=HC(y,b);return _&&g>0||g>=m.width*m.height},[]);return M.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:i,getEdge:o,setNodes:s,setEdges:a,addNodes:l,addEdges:u,toObject:c,deleteElements:d,getIntersectingNodes:h,isNodeIntersecting:p}),[e,n,r,i,o,s,a,l,u,c,d,h,p])}var mme=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=oi(),{deleteElements:r}=hB(),i=Bg(e),o=Bg(t);M.useEffect(()=>{if(i){const{edges:s,getNodes:a}=n.getState(),l=a().filter(c=>c.selected),u=s.filter(c=>c.selected);r({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[i]),M.useEffect(()=>{n.setState({multiSelectionActive:o})},[o])};function yme(e){const t=oi();M.useEffect(()=>{let n;const r=()=>{var o,s;if(!e.current)return;const i=oT(e.current);(i.height===0||i.width===0)&&((s=(o=t.getState()).onError)==null||s.call(o,"004",ul.error004())),t.setState({width:i.width||500,height:i.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const gT={position:"absolute",width:"100%",height:"100%",top:0,left:0},vme=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,qy=e=>({x:e.x,y:e.y,zoom:e.k}),Sd=(e,t)=>e.target.closest(`.${t}`),g8=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),m8=e=>{const t=e.ctrlKey&&b1()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},_me=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),bme=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:o=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=hc.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:p,maxZoom:m,zoomActivationKeyCode:b,preventScrolling:_=!0,children:y,noWheelClassName:g,noPanClassName:v})=>{const S=M.useRef(),w=oi(),x=M.useRef(!1),C=M.useRef(!1),A=M.useRef(null),T=M.useRef({x:0,y:0,zoom:0}),{d3Zoom:k,d3Selection:L,d3ZoomHandler:N,userSelectionActive:E}=hr(_me,yo),P=Bg(b),D=M.useRef(0),B=M.useRef(!1),R=M.useRef();return yme(A),M.useEffect(()=>{if(A.current){const I=A.current.getBoundingClientRect(),O=Ege().scaleExtent([p,m]).translateExtent(h),F=Es(A.current).call(O),U=ou.translate(f.x,f.y).scale(Wf(f.zoom,p,m)),V=[[0,0],[I.width,I.height]],H=O.constrain()(U,V,h);O.transform(F,H),O.wheelDelta(m8),w.setState({d3Zoom:O,d3Selection:F,d3ZoomHandler:F.on("wheel.zoom"),transform:[H.x,H.y,H.k],domNode:A.current.closest(".react-flow")})}},[]),M.useEffect(()=>{L&&k&&(s&&!P&&!E?L.on("wheel.zoom",I=>{if(Sd(I,g))return!1;I.preventDefault(),I.stopImmediatePropagation();const O=L.property("__zoom").k||1,F=b1();if(I.ctrlKey&&o&&F){const te=Ys(I),oe=m8(I),me=O*Math.pow(2,oe);k.scaleTo(L,me,te,I);return}const U=I.deltaMode===1?20:1;let V=l===hc.Vertical?0:I.deltaX*U,H=l===hc.Horizontal?0:I.deltaY*U;!F&&I.shiftKey&&l!==hc.Vertical&&(V=I.deltaY*U,H=0),k.translateBy(L,-(V/O)*a,-(H/O)*a,{internal:!0});const Y=qy(L.property("__zoom")),{onViewportChangeStart:Q,onViewportChange:j,onViewportChangeEnd:K}=w.getState();clearTimeout(R.current),B.current||(B.current=!0,t==null||t(I,Y),Q==null||Q(Y)),B.current&&(e==null||e(I,Y),j==null||j(Y),R.current=setTimeout(()=>{n==null||n(I,Y),K==null||K(Y),B.current=!1},150))},{passive:!1}):typeof N<"u"&&L.on("wheel.zoom",function(I,O){if(!_||Sd(I,g))return null;I.preventDefault(),N.call(this,I,O)},{passive:!1}))},[E,s,l,L,k,N,P,o,_,g,t,e,n]),M.useEffect(()=>{k&&k.on("start",I=>{var U,V;if(!I.sourceEvent||I.sourceEvent.internal)return null;D.current=(U=I.sourceEvent)==null?void 0:U.button;const{onViewportChangeStart:O}=w.getState(),F=qy(I.transform);x.current=!0,T.current=F,((V=I.sourceEvent)==null?void 0:V.type)==="mousedown"&&w.setState({paneDragging:!0}),O==null||O(F),t==null||t(I.sourceEvent,F)})},[k,t]),M.useEffect(()=>{k&&(E&&!x.current?k.on("zoom",null):E||k.on("zoom",I=>{var F;const{onViewportChange:O}=w.getState();if(w.setState({transform:[I.transform.x,I.transform.y,I.transform.k]}),C.current=!!(r&&g8(d,D.current??0)),(e||O)&&!((F=I.sourceEvent)!=null&&F.internal)){const U=qy(I.transform);O==null||O(U),e==null||e(I.sourceEvent,U)}}))},[E,k,e,d,r]),M.useEffect(()=>{k&&k.on("end",I=>{if(!I.sourceEvent||I.sourceEvent.internal)return null;const{onViewportChangeEnd:O}=w.getState();if(x.current=!1,w.setState({paneDragging:!1}),r&&g8(d,D.current??0)&&!C.current&&r(I.sourceEvent),C.current=!1,(n||O)&&vme(T.current,I.transform)){const F=qy(I.transform);T.current=F,clearTimeout(S.current),S.current=setTimeout(()=>{O==null||O(F),n==null||n(I.sourceEvent,F)},s?150:0)}})},[k,s,d,n,r]),M.useEffect(()=>{k&&k.filter(I=>{const O=P||i,F=o&&I.ctrlKey;if(I.button===1&&I.type==="mousedown"&&(Sd(I,"react-flow__node")||Sd(I,"react-flow__edge")))return!0;if(!d&&!O&&!s&&!u&&!o||E||!u&&I.type==="dblclick"||Sd(I,g)&&I.type==="wheel"||Sd(I,v)&&I.type!=="wheel"||!o&&I.ctrlKey&&I.type==="wheel"||!O&&!s&&!F&&I.type==="wheel"||!d&&(I.type==="mousedown"||I.type==="touchstart")||Array.isArray(d)&&!d.includes(I.button)&&(I.type==="mousedown"||I.type==="touchstart"))return!1;const U=Array.isArray(d)&&d.includes(I.button)||!I.button||I.button<=1;return(!I.ctrlKey||I.type==="wheel")&&U})},[E,k,i,o,s,u,d,c,P]),Z.jsx("div",{className:"react-flow__renderer",ref:A,style:gT,children:y})},Sme=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function wme(){const{userSelectionActive:e,userSelectionRect:t}=hr(Sme,yo);return e&&t?Z.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function y8(e,t){const n=e.find(r=>r.id===t.parentNode);if(n){const r=t.position.x+t.width-n.width,i=t.position.y+t.height-n.height;if(r>0||i>0||t.position.x<0||t.position.y<0){if(n.style={...n.style},n.style.width=n.style.width??n.width,n.style.height=n.style.height??n.height,r>0&&(n.style.width+=r),i>0&&(n.style.height+=i),t.position.x<0){const o=Math.abs(t.position.x);n.position.x=n.position.x-o,n.style.width+=o,t.position.x=0}if(t.position.y<0){const o=Math.abs(t.position.y);n.position.y=n.position.y-o,n.style.height+=o,t.position.y=0}n.width=n.style.width,n.height=n.style.height}}}function pB(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,i)=>{const o=e.filter(a=>a.id===i.id);if(o.length===0)return r.push(i),r;const s={...i};for(const a of o)if(a)switch(a.type){case"select":{s.selected=a.selected;break}case"position":{typeof a.position<"u"&&(s.position=a.position),typeof a.positionAbsolute<"u"&&(s.positionAbsolute=a.positionAbsolute),typeof a.dragging<"u"&&(s.dragging=a.dragging),s.expandParent&&y8(r,s);break}case"dimensions":{typeof a.dimensions<"u"&&(s.width=a.dimensions.width,s.height=a.dimensions.height),typeof a.updateStyle<"u"&&(s.style={...s.style||{},...a.dimensions}),typeof a.resizing=="boolean"&&(s.resizing=a.resizing),s.expandParent&&y8(r,s);break}case"remove":return r}return r.push(s),r},n)}function ec(e,t){return pB(e,t)}function Vu(e,t){return pB(e,t)}const Ol=(e,t)=>({id:e,type:"select",selected:t});function qd(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(Ol(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(Ol(r.id,!1))),n},[])}const yw=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},xme=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),gB=M.memo(({isSelecting:e,selectionMode:t=bu.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:o,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:d})=>{const f=M.useRef(null),h=oi(),p=M.useRef(0),m=M.useRef(0),b=M.useRef(),{userSelectionActive:_,elementsSelectable:y,dragging:g}=hr(xme,yo),v=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),p.current=0,m.current=0},S=N=>{o==null||o(N),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},w=N=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){N.preventDefault();return}s==null||s(N)},x=a?N=>a(N):void 0,C=N=>{const{resetSelectedElements:E,domNode:P}=h.getState();if(b.current=P==null?void 0:P.getBoundingClientRect(),!y||!e||N.button!==0||N.target!==f.current||!b.current)return;const{x:D,y:B}=su(N,b.current);E(),h.setState({userSelectionRect:{width:0,height:0,startX:D,startY:B,x:D,y:B}}),r==null||r(N)},A=N=>{const{userSelectionRect:E,nodeInternals:P,edges:D,transform:B,onNodesChange:R,onEdgesChange:I,nodeOrigin:O,getNodes:F}=h.getState();if(!e||!b.current||!E)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const U=su(N,b.current),V=E.startX??0,H=E.startY??0,Y={...E,x:U.xoe.id),te=j.map(oe=>oe.id);if(p.current!==te.length){p.current=te.length;const oe=qd(Q,te);oe.length&&(R==null||R(oe))}if(m.current!==K.length){m.current=K.length;const oe=qd(D,K);oe.length&&(I==null||I(oe))}h.setState({userSelectionRect:Y})},T=N=>{if(N.button!==0)return;const{userSelectionRect:E}=h.getState();!_&&E&&N.target===f.current&&(S==null||S(N)),h.setState({nodesSelectionActive:p.current>0}),v(),i==null||i(N)},k=N=>{_&&(h.setState({nodesSelectionActive:p.current>0}),i==null||i(N)),v()},L=y&&(e||_);return Z.jsxs("div",{className:as(["react-flow__pane",{dragging:g,selection:e}]),onClick:L?void 0:yw(S,f),onContextMenu:yw(w,f),onWheel:yw(x,f),onMouseEnter:L?void 0:l,onMouseDown:L?C:void 0,onMouseMove:L?A:u,onMouseUp:L?T:void 0,onMouseLeave:L?k:c,ref:f,style:gT,children:[d,Z.jsx(wme,{})]})});gB.displayName="Pane";function mB(e,t){if(!e.parentNode)return!1;const n=t.get(e.parentNode);return n?n.selected?!0:mB(n,t):!1}function v8(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function Cme(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||!mB(i,e))&&(i.draggable||t&&typeof i.draggable>"u")).map(i=>{var o,s;return{id:i.id,position:i.position||{x:0,y:0},positionAbsolute:i.positionAbsolute||{x:0,y:0},distance:{x:n.x-(((o=i.positionAbsolute)==null?void 0:o.x)??0),y:n.y-(((s=i.positionAbsolute)==null?void 0:s.y)??0)},delta:{x:0,y:0},extent:i.extent,parentNode:i.parentNode,width:i.width,height:i.height}})}function Eme(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function yB(e,t,n,r,i=[0,0],o){const s=Eme(e,e.extent||r);let a=s;if(e.extent==="parent")if(e.parentNode&&e.width&&e.height){const c=n.get(e.parentNode),{x:d,y:f}=mf(c,i).positionAbsolute;a=c&&Zo(d)&&Zo(f)&&Zo(c.width)&&Zo(c.height)?[[d+e.width*i[0],f+e.height*i[1]],[d+c.width-e.width+e.width*i[0],f+c.height-e.height+e.height*i[1]]]:a}else o==null||o("005",ul.error005()),a=s;else if(e.extent&&e.parentNode){const c=n.get(e.parentNode),{x:d,y:f}=mf(c,i).positionAbsolute;a=[[e.extent[0][0]+d,e.extent[0][1]+f],[e.extent[1][0]+d,e.extent[1][1]+f]]}let l={x:0,y:0};if(e.parentNode){const c=n.get(e.parentNode);l=mf(c,i).positionAbsolute}const u=a&&a!=="parent"?sT(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function vw({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(i=>({...n.get(i.id),position:i.position,positionAbsolute:i.positionAbsolute}));return[e?r.find(i=>i.id===e):r[0],r]}const _8=(e,t,n,r)=>{const i=t.querySelectorAll(e);if(!i||!i.length)return null;const o=Array.from(i),s=t.getBoundingClientRect(),a={x:s.width*r[0],y:s.height*r[1]};return o.map(l=>{const u=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(u.left-s.left-a.x)/n,y:(u.top-s.top-a.y)/n,...oT(l)}})};function Uh(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);i&&n(r,{...i})}}function QC({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:o,multiSelectionActive:s,nodeInternals:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",ul.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&s)&&(o({nodes:[u]}),requestAnimationFrame(()=>{var c;return(c=r==null?void 0:r.current)==null?void 0:c.blur()})):i([e])}function Tme(){const e=oi();return M.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:i,snapToGrid:o}=e.getState(),s=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,l={x:(s-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:o?i[0]*Math.round(l.x/i[0]):l.x,ySnapped:o?i[1]*Math.round(l.y/i[1]):l.y,...l}},[])}function _w(e){return(t,n,r)=>e==null?void 0:e(t,r)}function vB({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:o,selectNodesOnDrag:s}){const a=oi(),[l,u]=M.useState(!1),c=M.useRef([]),d=M.useRef({x:null,y:null}),f=M.useRef(0),h=M.useRef(null),p=M.useRef({x:0,y:0}),m=M.useRef(null),b=M.useRef(!1),_=Tme();return M.useEffect(()=>{if(e!=null&&e.current){const y=Es(e.current),g=({x:S,y:w})=>{const{nodeInternals:x,onNodeDrag:C,onSelectionDrag:A,updateNodePositions:T,nodeExtent:k,snapGrid:L,snapToGrid:N,nodeOrigin:E,onError:P}=a.getState();d.current={x:S,y:w};let D=!1,B={x:0,y:0,x2:0,y2:0};if(c.current.length>1&&k){const I=dT(c.current,E);B=Fg(I)}if(c.current=c.current.map(I=>{const O={x:S-I.distance.x,y:w-I.distance.y};N&&(O.x=L[0]*Math.round(O.x/L[0]),O.y=L[1]*Math.round(O.y/L[1]));const F=[[k[0][0],k[0][1]],[k[1][0],k[1][1]]];c.current.length>1&&k&&!I.extent&&(F[0][0]=I.positionAbsolute.x-B.x+k[0][0],F[1][0]=I.positionAbsolute.x+(I.width??0)-B.x2+k[1][0],F[0][1]=I.positionAbsolute.y-B.y+k[0][1],F[1][1]=I.positionAbsolute.y+(I.height??0)-B.y2+k[1][1]);const U=yB(I,O,x,F,E,P);return D=D||I.position.x!==U.position.x||I.position.y!==U.position.y,I.position=U.position,I.positionAbsolute=U.positionAbsolute,I}),!D)return;T(c.current,!0,!0),u(!0);const R=i?C:_w(A);if(R&&m.current){const[I,O]=vw({nodeId:i,dragItems:c.current,nodeInternals:x});R(m.current,I,O)}},v=()=>{if(!h.current)return;const[S,w]=$F(p.current,h.current);if(S!==0||w!==0){const{transform:x,panBy:C}=a.getState();d.current.x=(d.current.x??0)-S/x[2],d.current.y=(d.current.y??0)-w/x[2],C({x:S,y:w})&&g(d.current)}f.current=requestAnimationFrame(v)};if(t)y.on(".drag",null);else{const S=Dhe().on("start",w=>{var D;const{nodeInternals:x,multiSelectionActive:C,domNode:A,nodesDraggable:T,unselectNodesAndEdges:k,onNodeDragStart:L,onSelectionDragStart:N}=a.getState(),E=i?L:_w(N);!s&&!C&&i&&((D=x.get(i))!=null&&D.selected||k()),i&&o&&s&&QC({id:i,store:a,nodeRef:e});const P=_(w);if(d.current=P,c.current=Cme(x,T,P,i),E&&c.current){const[B,R]=vw({nodeId:i,dragItems:c.current,nodeInternals:x});E(w.sourceEvent,B,R)}h.current=(A==null?void 0:A.getBoundingClientRect())||null,p.current=su(w.sourceEvent,h.current)}).on("drag",w=>{const x=_(w),{autoPanOnNodeDrag:C}=a.getState();!b.current&&C&&(b.current=!0,v()),(d.current.x!==x.xSnapped||d.current.y!==x.ySnapped)&&c.current&&(m.current=w.sourceEvent,p.current=su(w.sourceEvent,h.current),g(x))}).on("end",w=>{if(u(!1),b.current=!1,cancelAnimationFrame(f.current),c.current){const{updateNodePositions:x,nodeInternals:C,onNodeDragStop:A,onSelectionDragStop:T}=a.getState(),k=i?A:_w(T);if(x(c.current,!1,!1),k){const[L,N]=vw({nodeId:i,dragItems:c.current,nodeInternals:C});k(w.sourceEvent,L,N)}}}).filter(w=>{const x=w.target;return!w.button&&(!n||!v8(x,`.${n}`,e))&&(!r||v8(x,r,e))});return y.call(S),()=>{y.on(".drag",null)}}}},[e,t,n,r,o,a,i,s,_]),l}function _B(){const e=oi();return M.useCallback(n=>{const{nodeInternals:r,nodeExtent:i,updateNodePositions:o,getNodes:s,snapToGrid:a,snapGrid:l,onError:u,nodesDraggable:c}=e.getState(),d=s().filter(y=>y.selected&&(y.draggable||c&&typeof y.draggable>"u")),f=a?l[0]:5,h=a?l[1]:5,p=n.isShiftPressed?4:1,m=n.x*f*p,b=n.y*h*p,_=d.map(y=>{if(y.positionAbsolute){const g={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+b};a&&(g.x=l[0]*Math.round(g.x/l[0]),g.y=l[1]*Math.round(g.y/l[1]));const{positionAbsolute:v,position:S}=yB(y,g,r,i,void 0,u);y.position=S,y.positionAbsolute=v}return y});o(_,!0,!1)},[])}const yf={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var jh=e=>{const t=({id:n,type:r,data:i,xPos:o,yPos:s,xPosOrigin:a,yPosOrigin:l,selected:u,onClick:c,onMouseEnter:d,onMouseMove:f,onMouseLeave:h,onContextMenu:p,onDoubleClick:m,style:b,className:_,isDraggable:y,isSelectable:g,isConnectable:v,isFocusable:S,selectNodesOnDrag:w,sourcePosition:x,targetPosition:C,hidden:A,resizeObserver:T,dragHandle:k,zIndex:L,isParent:N,noDragClassName:E,noPanClassName:P,initialized:D,disableKeyboardA11y:B,ariaLabel:R,rfId:I})=>{const O=oi(),F=M.useRef(null),U=M.useRef(x),V=M.useRef(C),H=M.useRef(r),Y=g||y||c||d||f||h,Q=_B(),j=Uh(n,O.getState,d),K=Uh(n,O.getState,f),te=Uh(n,O.getState,h),oe=Uh(n,O.getState,p),me=Uh(n,O.getState,m),le=$e=>{if(g&&(!w||!y)&&QC({id:n,store:O,nodeRef:F}),c){const ct=O.getState().nodeInternals.get(n);ct&&c($e,{...ct})}},ht=$e=>{if(!qC($e))if(UF.includes($e.key)&&g){const ct=$e.key==="Escape";QC({id:n,store:O,unselect:ct,nodeRef:F})}else!B&&y&&u&&Object.prototype.hasOwnProperty.call(yf,$e.key)&&(O.setState({ariaLiveMessage:`Moved selected node ${$e.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~o}, y: ${~~s}`}),Q({x:yf[$e.key].x,y:yf[$e.key].y,isShiftPressed:$e.shiftKey}))};M.useEffect(()=>{if(F.current&&!A){const $e=F.current;return T==null||T.observe($e),()=>T==null?void 0:T.unobserve($e)}},[A]),M.useEffect(()=>{const $e=H.current!==r,ct=U.current!==x,Pe=V.current!==C;F.current&&($e||ct||Pe)&&($e&&(H.current=r),ct&&(U.current=x),Pe&&(V.current=C),O.getState().updateNodeDimensions([{id:n,nodeElement:F.current,forceUpdate:!0}]))},[n,r,x,C]);const nt=vB({nodeRef:F,disabled:A||!y,noDragClassName:E,handleSelector:k,nodeId:n,isSelectable:g,selectNodesOnDrag:w});return A?null:Z.jsx("div",{className:as(["react-flow__node",`react-flow__node-${r}`,{[P]:y},_,{selected:u,selectable:g,parent:N,dragging:nt}]),ref:F,style:{zIndex:L,transform:`translate(${a}px,${l}px)`,pointerEvents:Y?"all":"none",visibility:D?"visible":"hidden",...b},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:j,onMouseMove:K,onMouseLeave:te,onContextMenu:oe,onClick:le,onDoubleClick:me,onKeyDown:S?ht:void 0,tabIndex:S?0:void 0,role:S?"button":void 0,"aria-describedby":B?void 0:`${lB}-${I}`,"aria-label":R,children:Z.jsx(Bge,{value:n,children:Z.jsx(e,{id:n,data:i,type:r,xPos:o,yPos:s,selected:u,isConnectable:v,sourcePosition:x,targetPosition:C,dragging:nt,dragHandle:k,zIndex:L})})})};return t.displayName="NodeWrapper",M.memo(t)};const Ame=e=>{const t=e.getNodes().filter(n=>n.selected);return{...dT(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function kme({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=oi(),{width:i,height:o,x:s,y:a,transformString:l,userSelectionActive:u}=hr(Ame,yo),c=_B(),d=M.useRef(null);if(M.useEffect(()=>{var p;n||(p=d.current)==null||p.focus({preventScroll:!0})},[n]),vB({nodeRef:d}),u||!i||!o)return null;const f=e?p=>{const m=r.getState().getNodes().filter(b=>b.selected);e(p,m)}:void 0,h=p=>{Object.prototype.hasOwnProperty.call(yf,p.key)&&c({x:yf[p.key].x,y:yf[p.key].y,isShiftPressed:p.shiftKey})};return Z.jsx("div",{className:as(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l},children:Z.jsx("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:i,height:o,top:a,left:s}})})}var Pme=M.memo(kme);const Rme=e=>e.nodesSelectionActive,bB=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,deleteKeyCode:a,onMove:l,onMoveStart:u,onMoveEnd:c,selectionKeyCode:d,selectionOnDrag:f,selectionMode:h,onSelectionStart:p,onSelectionEnd:m,multiSelectionKeyCode:b,panActivationKeyCode:_,zoomActivationKeyCode:y,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:A,panOnDrag:T,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:E,preventScrolling:P,onSelectionContextMenu:D,noWheelClassName:B,noPanClassName:R,disableKeyboardA11y:I})=>{const O=hr(Rme),F=Bg(d),V=Bg(_)||T,H=F||f&&V!==!0;return mme({deleteKeyCode:a,multiSelectionKeyCode:b}),Z.jsx(bme,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:o,elementsSelectable:g,zoomOnScroll:v,zoomOnPinch:S,panOnScroll:w,panOnScrollSpeed:x,panOnScrollMode:C,zoomOnDoubleClick:A,panOnDrag:!F&&V,defaultViewport:k,translateExtent:L,minZoom:N,maxZoom:E,zoomActivationKeyCode:y,preventScrolling:P,noWheelClassName:B,noPanClassName:R,children:Z.jsxs(gB,{onSelectionStart:p,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:o,onPaneScroll:s,panOnDrag:V,isSelecting:!!H,selectionMode:h,children:[e,O&&Z.jsx(Pme,{onSelectionContextMenu:D,noPanClassName:R,disableKeyboardA11y:I})]})})};bB.displayName="FlowRenderer";var Ime=M.memo(bB);function Ome(e){return hr(M.useCallback(n=>e?QF(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function Mme(e){const t={input:jh(e.input||iB),default:jh(e.default||XC),output:jh(e.output||sB),group:jh(e.group||pT)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,o)=>(i[o]=jh(e[o]||XC),i),n);return{...t,...r}}const Nme=({x:e,y:t,width:n,height:r,origin:i})=>!n||!r?{x:e,y:t}:i[0]<0||i[1]<0||i[0]>1||i[1]>1?{x:e,y:t}:{x:e-n*i[0],y:t-r*i[1]},Dme=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),SB=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:o,onError:s}=hr(Dme,yo),a=Ome(e.onlyRenderVisibleElements),l=M.useRef(),u=M.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const c=new ResizeObserver(d=>{const f=d.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));o(f)});return l.current=c,c},[]);return M.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),Z.jsx("div",{className:"react-flow__nodes",style:gT,children:a.map(c=>{var S,w;let d=c.type||"default";e.nodeTypes[d]||(s==null||s("003",ul.error003(d)),d="default");const f=e.nodeTypes[d]||e.nodeTypes.default,h=!!(c.draggable||t&&typeof c.draggable>"u"),p=!!(c.selectable||i&&typeof c.selectable>"u"),m=!!(c.connectable||n&&typeof c.connectable>"u"),b=!!(c.focusable||r&&typeof c.focusable>"u"),_=e.nodeExtent?sT(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,y=(_==null?void 0:_.x)??0,g=(_==null?void 0:_.y)??0,v=Nme({x:y,y:g,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return Z.jsx(f,{id:c.id,className:c.className,style:c.style,type:d,data:c.data,sourcePosition:c.sourcePosition||Je.Bottom,targetPosition:c.targetPosition||Je.Top,hidden:c.hidden,xPos:y,yPos:g,xPosOrigin:v.x,yPosOrigin:v.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!c.selected,isDraggable:h,isSelectable:p,isConnectable:m,isFocusable:b,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((S=c[Ur])==null?void 0:S.z)??0,isParent:!!((w=c[Ur])!=null&&w.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!c.width&&!!c.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:c.ariaLabel},c.id)})})};SB.displayName="NodeRenderer";var Lme=M.memo(SB);const $me=(e,t,n)=>n===Je.Left?e-t:n===Je.Right?e+t:e,Fme=(e,t,n)=>n===Je.Top?e-t:n===Je.Bottom?e+t:e,b8="react-flow__edgeupdater",S8=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:o,onMouseOut:s,type:a})=>Z.jsx("circle",{onMouseDown:i,onMouseEnter:o,onMouseOut:s,className:as([b8,`${b8}-${a}`]),cx:$me(t,r,e),cy:Fme(n,r,e),r,stroke:"transparent",fill:"transparent"}),Bme=()=>!0;var wd=e=>{const t=({id:n,className:r,type:i,data:o,onClick:s,onEdgeDoubleClick:a,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:b,source:_,target:y,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:x,targetPosition:C,elementsSelectable:A,hidden:T,sourceHandleId:k,targetHandleId:L,onContextMenu:N,onMouseEnter:E,onMouseMove:P,onMouseLeave:D,edgeUpdaterRadius:B,onEdgeUpdate:R,onEdgeUpdateStart:I,onEdgeUpdateEnd:O,markerEnd:F,markerStart:U,rfId:V,ariaLabel:H,isFocusable:Y,isUpdatable:Q,pathOptions:j,interactionWidth:K})=>{const te=M.useRef(null),[oe,me]=M.useState(!1),[le,ht]=M.useState(!1),nt=oi(),$e=M.useMemo(()=>`url(#${KC(U,V)})`,[U,V]),ct=M.useMemo(()=>`url(#${KC(F,V)})`,[F,V]);if(T)return null;const Pe=In=>{const{edges:dn,addSelectedEdges:Ci}=nt.getState();if(A&&(nt.setState({nodesSelectionActive:!1}),Ci([n])),s){const si=dn.find(ji=>ji.id===n);s(In,si)}},qt=zh(n,nt.getState,a),Sr=zh(n,nt.getState,N),Pn=zh(n,nt.getState,E),bn=zh(n,nt.getState,P),Wt=zh(n,nt.getState,D),Rn=(In,dn)=>{if(In.button!==0)return;const{edges:Ci,isValidConnection:si}=nt.getState(),ji=dn?y:_,ps=(dn?L:k)||null,xr=dn?"target":"source",no=si||Bme,Ta=dn,bo=Ci.find(Kt=>Kt.id===n);ht(!0),I==null||I(In,bo,xr);const Aa=Kt=>{ht(!1),O==null||O(Kt,bo,xr)};eB({event:In,handleId:ps,nodeId:ji,onConnect:Kt=>R==null?void 0:R(bo,Kt),isTarget:Ta,getState:nt.getState,setState:nt.setState,isValidConnection:no,edgeUpdaterType:xr,onEdgeUpdateEnd:Aa})},wr=In=>Rn(In,!0),to=In=>Rn(In,!1),Gr=()=>me(!0),ar=()=>me(!1),Or=!A&&!s,Hr=In=>{var dn;if(UF.includes(In.key)&&A){const{unselectNodesAndEdges:Ci,addSelectedEdges:si,edges:ji}=nt.getState();In.key==="Escape"?((dn=te.current)==null||dn.blur(),Ci({edges:[ji.find(xr=>xr.id===n)]})):si([n])}};return Z.jsxs("g",{className:as(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:Or,updating:oe}]),onClick:Pe,onDoubleClick:qt,onContextMenu:Sr,onMouseEnter:Pn,onMouseMove:bn,onMouseLeave:Wt,onKeyDown:Y?Hr:void 0,tabIndex:Y?0:void 0,role:Y?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":H===null?void 0:H||`Edge from ${_} to ${y}`,"aria-describedby":Y?`${uB}-${V}`:void 0,ref:te,children:[!le&&Z.jsx(e,{id:n,source:_,target:y,selected:l,animated:u,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,data:o,style:b,sourceX:g,sourceY:v,targetX:S,targetY:w,sourcePosition:x,targetPosition:C,sourceHandleId:k,targetHandleId:L,markerStart:$e,markerEnd:ct,pathOptions:j,interactionWidth:K}),Q&&Z.jsxs(Z.Fragment,{children:[(Q==="source"||Q===!0)&&Z.jsx(S8,{position:x,centerX:g,centerY:v,radius:B,onMouseDown:wr,onMouseEnter:Gr,onMouseOut:ar,type:"source"}),(Q==="target"||Q===!0)&&Z.jsx(S8,{position:C,centerX:S,centerY:w,radius:B,onMouseDown:to,onMouseEnter:Gr,onMouseOut:ar,type:"target"})]})]})};return t.displayName="EdgeWrapper",M.memo(t)};function zme(e){const t={default:wd(e.default||w1),straight:wd(e.bezier||uT),step:wd(e.step||lT),smoothstep:wd(e.step||Db),simplebezier:wd(e.simplebezier||aT)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,o)=>(i[o]=wd(e[o]||w1),i),n);return{...t,...r}}function w8(e,t,n=null){const r=((n==null?void 0:n.x)||0)+t.x,i=((n==null?void 0:n.y)||0)+t.y,o=(n==null?void 0:n.width)||t.width,s=(n==null?void 0:n.height)||t.height;switch(e){case Je.Top:return{x:r+o/2,y:i};case Je.Right:return{x:r+o,y:i+s/2};case Je.Bottom:return{x:r+o/2,y:i+s};case Je.Left:return{x:r,y:i+s/2}}}function x8(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Ume=(e,t,n,r,i,o)=>{const s=w8(n,e,t),a=w8(o,r,i);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function jme({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:i,targetHeight:o,width:s,height:a,transform:l}){const u={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+i),y2:Math.max(e.y+r,t.y+o)};u.x===u.x2&&(u.x2+=1),u.y===u.y2&&(u.y2+=1);const c=Fg({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:s/l[2],height:a/l[2]}),d=Math.max(0,Math.min(c.x2,u.x2)-Math.max(c.x,u.x)),f=Math.max(0,Math.min(c.y2,u.y2)-Math.max(c.y,u.y));return Math.ceil(d*f)>0}function C8(e){var r,i,o,s,a;const t=((r=e==null?void 0:e[Ur])==null?void 0:r.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.x)<"u"&&typeof((o=e==null?void 0:e.positionAbsolute)==null?void 0:o.y)<"u";return[{x:((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.x)||0,y:((a=e==null?void 0:e.positionAbsolute)==null?void 0:a.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const Vme=[{level:0,isMaxLevel:!0,edges:[]}];function Gme(e,t,n=!1){let r=-1;const i=e.reduce((s,a)=>{var c,d;const l=Zo(a.zIndex);let u=l?a.zIndex:0;if(n){const f=t.get(a.target),h=t.get(a.source),p=a.selected||(f==null?void 0:f.selected)||(h==null?void 0:h.selected),m=Math.max(((c=h==null?void 0:h[Ur])==null?void 0:c.z)||0,((d=f==null?void 0:f[Ur])==null?void 0:d.z)||0,1e3);u=(l?a.zIndex:0)+(p?m:0)}return s[u]?s[u].push(a):s[u]=[a],r=u>r?u:r,s},{}),o=Object.entries(i).map(([s,a])=>{const l=+s;return{edges:a,level:l,isMaxLevel:l===r}});return o.length===0?Vme:o}function Hme(e,t,n){const r=hr(M.useCallback(i=>e?i.edges.filter(o=>{const s=t.get(o.source),a=t.get(o.target);return(s==null?void 0:s.width)&&(s==null?void 0:s.height)&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&jme({sourcePos:s.positionAbsolute||{x:0,y:0},targetPos:a.positionAbsolute||{x:0,y:0},sourceWidth:s.width,sourceHeight:s.height,targetWidth:a.width,targetHeight:a.height,width:i.width,height:i.height,transform:i.transform})}):i.edges,[e,t]));return Gme(r,t,n)}const qme=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:"none",points:"-5,-4 0,0 -5,4"}),Wme=({color:e="none",strokeWidth:t=1})=>Z.jsx("polyline",{stroke:e,strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:t,fill:e,points:"-5,-4 0,0 -5,4 -5,-4"}),E8={[S1.Arrow]:qme,[S1.ArrowClosed]:Wme};function Kme(e){const t=oi();return M.useMemo(()=>{var i,o;return Object.prototype.hasOwnProperty.call(E8,e)?E8[e]:((o=(i=t.getState()).onError)==null||o.call(i,"009",ul.error009(e)),null)},[e])}const Xme=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:o="strokeWidth",strokeWidth:s,orient:a="auto-start-reverse"})=>{const l=Kme(t);return l?Z.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:"-10 -10 20 20",markerUnits:o,orient:a,refX:"0",refY:"0",children:Z.jsx(l,{color:n,strokeWidth:s})}):null},Qme=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((i,o)=>([o.markerStart,o.markerEnd].forEach(s=>{if(s&&typeof s=="object"){const a=KC(s,t);r.includes(a)||(i.push({id:a,color:s.color||e,...s}),r.push(a))}}),i),[]).sort((i,o)=>i.id.localeCompare(o.id))},wB=({defaultColor:e,rfId:t})=>{const n=hr(M.useCallback(Qme({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((o,s)=>o.id!==i[s].id)));return Z.jsx("defs",{children:n.map(r=>Z.jsx(Xme,{id:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient},r.id))})};wB.displayName="MarkerDefinitions";var Yme=M.memo(wB);const Zme=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),xB=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:i,noPanClassName:o,onEdgeUpdate:s,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:u,onEdgeMouseLeave:c,onEdgeClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,children:b})=>{const{edgesFocusable:_,edgesUpdatable:y,elementsSelectable:g,width:v,height:S,connectionMode:w,nodeInternals:x,onError:C}=hr(Zme,yo),A=Hme(t,x,n);return v?Z.jsxs(Z.Fragment,{children:[A.map(({level:T,edges:k,isMaxLevel:L})=>Z.jsxs("svg",{style:{zIndex:T},width:v,height:S,className:"react-flow__edges react-flow__container",children:[L&&Z.jsx(Yme,{defaultColor:e,rfId:r}),Z.jsx("g",{children:k.map(N=>{const[E,P,D]=C8(x.get(N.source)),[B,R,I]=C8(x.get(N.target));if(!D||!I)return null;let O=N.type||"default";i[O]||(C==null||C("011",ul.error011(O)),O="default");const F=i[O]||i.default,U=w===$c.Strict?R.target:(R.target??[]).concat(R.source??[]),V=x8(P.source,N.sourceHandle),H=x8(U,N.targetHandle),Y=(V==null?void 0:V.position)||Je.Bottom,Q=(H==null?void 0:H.position)||Je.Top,j=!!(N.focusable||_&&typeof N.focusable>"u"),K=typeof s<"u"&&(N.updatable||y&&typeof N.updatable>"u");if(!V||!H)return C==null||C("008",ul.error008(V,N)),null;const{sourceX:te,sourceY:oe,targetX:me,targetY:le}=Ume(E,V,Y,B,H,Q);return Z.jsx(F,{id:N.id,className:as([N.className,o]),type:O,data:N.data,selected:!!N.selected,animated:!!N.animated,hidden:!!N.hidden,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,style:N.style,source:N.source,target:N.target,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerEnd:N.markerEnd,markerStart:N.markerStart,sourceX:te,sourceY:oe,targetX:me,targetY:le,sourcePosition:Y,targetPosition:Q,elementsSelectable:g,onEdgeUpdate:s,onContextMenu:a,onMouseEnter:l,onMouseMove:u,onMouseLeave:c,onClick:d,edgeUpdaterRadius:f,onEdgeDoubleClick:h,onEdgeUpdateStart:p,onEdgeUpdateEnd:m,rfId:r,ariaLabel:N.ariaLabel,isFocusable:j,isUpdatable:K,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth},N.id)})})]},T)),b]}):null};xB.displayName="EdgeRenderer";var Jme=M.memo(xB);const eye=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function tye({children:e}){const t=hr(eye);return Z.jsx("div",{className:"react-flow__viewport react-flow__container",style:{transform:t},children:e})}function nye(e){const t=hB(),n=M.useRef(!1);M.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const rye={[Je.Left]:Je.Right,[Je.Right]:Je.Left,[Je.Top]:Je.Bottom,[Je.Bottom]:Je.Top},CB=({nodeId:e,handleType:t,style:n,type:r=Bl.Bezier,CustomComponent:i,connectionStatus:o})=>{var w,x,C;const{fromNode:s,handleId:a,toX:l,toY:u,connectionMode:c}=hr(M.useCallback(A=>({fromNode:A.nodeInternals.get(e),handleId:A.connectionHandleId,toX:(A.connectionPosition.x-A.transform[0])/A.transform[2],toY:(A.connectionPosition.y-A.transform[1])/A.transform[2],connectionMode:A.connectionMode}),[e]),yo),d=(w=s==null?void 0:s[Ur])==null?void 0:w.handleBounds;let f=d==null?void 0:d[t];if(c===$c.Loose&&(f=f||(d==null?void 0:d[t==="source"?"target":"source"])),!s||!f)return null;const h=a?f.find(A=>A.id===a):f[0],p=h?h.x+h.width/2:(s.width??0)/2,m=h?h.y+h.height/2:s.height??0,b=(((x=s.positionAbsolute)==null?void 0:x.x)??0)+p,_=(((C=s.positionAbsolute)==null?void 0:C.y)??0)+m,y=h==null?void 0:h.position,g=y?rye[y]:null;if(!y||!g)return null;if(i)return Z.jsx(i,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:b,fromY:_,toX:l,toY:u,fromPosition:y,toPosition:g,connectionStatus:o});let v="";const S={sourceX:b,sourceY:_,sourcePosition:y,targetX:l,targetY:u,targetPosition:g};return r===Bl.Bezier?[v]=qF(S):r===Bl.Step?[v]=WC({...S,borderRadius:0}):r===Bl.SmoothStep?[v]=WC(S):r===Bl.SimpleBezier?[v]=HF(S):v=`M${b},${_} ${l},${u}`,Z.jsx("path",{d:v,fill:"none",className:"react-flow__connection-path",style:n})};CB.displayName="ConnectionLine";const iye=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function oye({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:o,nodesConnectable:s,width:a,height:l,connectionStatus:u}=hr(iye,yo);return!(i&&o&&a&&s)?null:Z.jsx("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container",children:Z.jsx("g",{className:as(["react-flow__connection",u]),children:Z.jsx(CB,{nodeId:i,handleType:o,style:t,type:n,CustomComponent:r,connectionStatus:u})})})}function T8(e,t){return M.useRef(null),oi(),M.useMemo(()=>t(e),[e])}const EB=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:i,onInit:o,onNodeClick:s,onEdgeClick:a,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,onSelectionContextMenu:p,onSelectionStart:m,onSelectionEnd:b,connectionLineType:_,connectionLineStyle:y,connectionLineComponent:g,connectionLineContainerStyle:v,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,multiSelectionKeyCode:C,panActivationKeyCode:A,zoomActivationKeyCode:T,deleteKeyCode:k,onlyRenderVisibleElements:L,elementsSelectable:N,selectNodesOnDrag:E,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,preventScrolling:I,defaultMarkerColor:O,zoomOnScroll:F,zoomOnPinch:U,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,zoomOnDoubleClick:Q,panOnDrag:j,onPaneClick:K,onPaneMouseEnter:te,onPaneMouseMove:oe,onPaneMouseLeave:me,onPaneScroll:le,onPaneContextMenu:ht,onEdgeUpdate:nt,onEdgeContextMenu:$e,onEdgeMouseEnter:ct,onEdgeMouseMove:Pe,onEdgeMouseLeave:qt,edgeUpdaterRadius:Sr,onEdgeUpdateStart:Pn,onEdgeUpdateEnd:bn,noDragClassName:Wt,noWheelClassName:Rn,noPanClassName:wr,elevateEdgesOnSelect:to,disableKeyboardA11y:Gr,nodeOrigin:ar,nodeExtent:Or,rfId:Hr})=>{const In=T8(e,Mme),dn=T8(t,zme);return nye(o),Z.jsx(Ime,{onPaneClick:K,onPaneMouseEnter:te,onPaneMouseMove:oe,onPaneMouseLeave:me,onPaneContextMenu:ht,onPaneScroll:le,deleteKeyCode:k,selectionKeyCode:S,selectionOnDrag:w,selectionMode:x,onSelectionStart:m,onSelectionEnd:b,multiSelectionKeyCode:C,panActivationKeyCode:A,zoomActivationKeyCode:T,elementsSelectable:N,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:F,zoomOnPinch:U,zoomOnDoubleClick:Q,panOnScroll:V,panOnScrollSpeed:H,panOnScrollMode:Y,panOnDrag:j,defaultViewport:P,translateExtent:D,minZoom:B,maxZoom:R,onSelectionContextMenu:p,preventScrolling:I,noDragClassName:Wt,noWheelClassName:Rn,noPanClassName:wr,disableKeyboardA11y:Gr,children:Z.jsxs(tye,{children:[Z.jsx(Jme,{edgeTypes:dn,onEdgeClick:a,onEdgeDoubleClick:u,onEdgeUpdate:nt,onlyRenderVisibleElements:L,onEdgeContextMenu:$e,onEdgeMouseEnter:ct,onEdgeMouseMove:Pe,onEdgeMouseLeave:qt,onEdgeUpdateStart:Pn,onEdgeUpdateEnd:bn,edgeUpdaterRadius:Sr,defaultMarkerColor:O,noPanClassName:wr,elevateEdgesOnSelect:!!to,disableKeyboardA11y:Gr,rfId:Hr,children:Z.jsx(oye,{style:y,type:_,component:g,containerStyle:v})}),Z.jsx("div",{className:"react-flow__edgelabel-renderer"}),Z.jsx(Lme,{nodeTypes:In,onNodeClick:s,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:E,onlyRenderVisibleElements:L,noPanClassName:wr,noDragClassName:Wt,disableKeyboardA11y:Gr,nodeOrigin:ar,nodeExtent:Or,rfId:Hr})]})})};EB.displayName="GraphView";var sye=M.memo(EB);const YC=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],El={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:YC,nodeExtent:YC,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:$c.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:Mge,isValidConnection:void 0},aye=()=>Wde((e,t)=>({...El,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:o}=t();e({nodeInternals:mw(n,r,i,o)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(i=>({...r,...i}))})},setDefaultNodesAndEdges:(n,r)=>{const i=typeof n<"u",o=typeof r<"u",s=i?mw(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:s,edges:o?r:[],hasDefaultNodes:i,hasDefaultEdges:o})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:i,fitViewOnInit:o,fitViewOnInitDone:s,fitViewOnInitOptions:a,domNode:l,nodeOrigin:u}=t(),c=l==null?void 0:l.querySelector(".react-flow__viewport");if(!c)return;const d=window.getComputedStyle(c),{m22:f}=new window.DOMMatrixReadOnly(d.transform),h=n.reduce((m,b)=>{const _=i.get(b.id);if(_){const y=oT(b.nodeElement);!!(y.width&&y.height&&(_.width!==y.width||_.height!==y.height||b.forceUpdate))&&(i.set(_.id,{..._,[Ur]:{..._[Ur],handleBounds:{source:_8(".source",b.nodeElement,f,u),target:_8(".target",b.nodeElement,f,u)}},...y}),m.push({id:_.id,type:"dimensions",dimensions:y}))}return m},[]);dB(i,u);const p=s||o&&!s&&fB(t,{initial:!0,...a});e({nodeInternals:new Map(i),fitViewOnInitDone:p}),(h==null?void 0:h.length)>0&&(r==null||r(h))},updateNodePositions:(n,r=!0,i=!1)=>{const{triggerNodeChanges:o}=t(),s=n.map(a=>{const l={id:a.id,type:"position",dragging:i};return r&&(l.positionAbsolute=a.positionAbsolute,l.position=a.position),l});o(s)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:i,hasDefaultNodes:o,nodeOrigin:s,getNodes:a,elevateNodesOnSelect:l}=t();if(n!=null&&n.length){if(o){const u=ec(n,a()),c=mw(u,i,s,l);e({nodeInternals:c})}r==null||r(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>Ol(l,!0)):(s=qd(o(),n),a=qd(i,[])),Hy({changedNodes:s,changedEdges:a,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:i,getNodes:o}=t();let s,a=null;r?s=n.map(l=>Ol(l,!0)):(s=qd(i,n),a=qd(o(),[])),Hy({changedNodes:a,changedEdges:s,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:i,getNodes:o}=t(),s=n||o(),a=r||i,l=s.map(c=>(c.selected=!1,Ol(c.id,!1))),u=a.map(c=>Ol(c.id,!1));Hy({changedNodes:l,changedEdges:u,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:i}=t();r==null||r.scaleExtent([n,i]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:i}=t();r==null||r.scaleExtent([i,n]),e({maxZoom:n})},setTranslateExtent:n=>{var r;(r=t().d3Zoom)==null||r.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),o=r().filter(a=>a.selected).map(a=>Ol(a.id,!1)),s=n.filter(a=>a.selected).map(a=>Ol(a.id,!1));Hy({changedNodes:o,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=sT(i.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:i,height:o,d3Zoom:s,d3Selection:a,translateExtent:l}=t();if(!s||!a||!n.x&&!n.y)return!1;const u=ou.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),c=[[0,0],[i,o]],d=s==null?void 0:s.constrain()(u,c,l);return s.transform(a,d),r[0]!==d.x||r[1]!==d.y||r[2]!==d.k},cancelConnection:()=>e({connectionNodeId:El.connectionNodeId,connectionHandleId:El.connectionHandleId,connectionHandleType:El.connectionHandleType,connectionStatus:El.connectionStatus,connectionStartHandle:El.connectionStartHandle,connectionEndHandle:El.connectionEndHandle}),reset:()=>e({...El})}),Object.is),TB=({children:e})=>{const t=M.useRef(null);return t.current||(t.current=aye()),Z.jsx(Tge,{value:t.current,children:e})};TB.displayName="ReactFlowProvider";const AB=({children:e})=>M.useContext(Nb)?Z.jsx(Z.Fragment,{children:e}):Z.jsx(TB,{children:e});AB.displayName="ReactFlowWrapper";const lye={input:iB,default:XC,output:sB,group:pT},uye={default:w1,straight:uT,step:lT,smoothstep:Db,simplebezier:aT},cye=[0,0],dye=[15,15],fye={x:0,y:0,zoom:1},hye={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},pye=M.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:o=lye,edgeTypes:s=uye,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:A,onNodesDelete:T,onEdgesDelete:k,onSelectionChange:L,onSelectionDragStart:N,onSelectionDrag:E,onSelectionDragStop:P,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,connectionMode:I=$c.Strict,connectionLineType:O=Bl.Bezier,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,deleteKeyCode:H="Backspace",selectionKeyCode:Y="Shift",selectionOnDrag:Q=!1,selectionMode:j=bu.Full,panActivationKeyCode:K="Space",multiSelectionKeyCode:te=b1()?"Meta":"Control",zoomActivationKeyCode:oe=b1()?"Meta":"Control",snapToGrid:me=!1,snapGrid:le=dye,onlyRenderVisibleElements:ht=!1,selectNodesOnDrag:nt=!0,nodesDraggable:$e,nodesConnectable:ct,nodesFocusable:Pe,nodeOrigin:qt=cye,edgesFocusable:Sr,edgesUpdatable:Pn,elementsSelectable:bn,defaultViewport:Wt=fye,minZoom:Rn=.5,maxZoom:wr=2,translateExtent:to=YC,preventScrolling:Gr=!0,nodeExtent:ar,defaultMarkerColor:Or="#b1b1b7",zoomOnScroll:Hr=!0,zoomOnPinch:In=!0,panOnScroll:dn=!1,panOnScrollSpeed:Ci=.5,panOnScrollMode:si=hc.Free,zoomOnDoubleClick:ji=!0,panOnDrag:ps=!0,onPaneClick:xr,onPaneMouseEnter:no,onPaneMouseMove:Ta,onPaneMouseLeave:bo,onPaneScroll:Aa,onPaneContextMenu:On,children:Kt,onEdgeUpdate:Mr,onEdgeContextMenu:Cr,onEdgeDoubleClick:Er,onEdgeMouseEnter:qr,onEdgeMouseMove:Ei,onEdgeMouseLeave:ro,onEdgeUpdateStart:ai,onEdgeUpdateEnd:Nr,edgeUpdaterRadius:gs=10,onNodesChange:Vs,onEdgesChange:li,noDragClassName:_l="nodrag",noWheelClassName:zo="nowheel",noPanClassName:Wr="nopan",fitView:ka=!1,fitViewOptions:W,connectOnClick:ee=!0,attributionPosition:ne,proOptions:ue,defaultEdgeOptions:ie,elevateNodesOnSelect:Fe=!0,elevateEdgesOnSelect:je=!1,disableKeyboardA11y:ot=!1,autoPanOnConnect:Ne=!0,autoPanOnNodeDrag:Ve=!0,connectionRadius:Re=20,isValidConnection:re,onError:ve,style:Xe,id:Qe,...st},at)=>{const mt=Qe||"1";return Z.jsx("div",{...st,style:{...Xe,...hye},ref:at,className:as(["react-flow",i]),"data-testid":"rf__wrapper",id:Qe,children:Z.jsxs(AB,{children:[Z.jsx(sye,{onInit:u,onMove:c,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:y,onNodeMouseMove:g,onNodeMouseLeave:v,onNodeContextMenu:S,onNodeDoubleClick:w,nodeTypes:o,edgeTypes:s,connectionLineType:O,connectionLineStyle:F,connectionLineComponent:U,connectionLineContainerStyle:V,selectionKeyCode:Y,selectionOnDrag:Q,selectionMode:j,deleteKeyCode:H,multiSelectionKeyCode:te,panActivationKeyCode:K,zoomActivationKeyCode:oe,onlyRenderVisibleElements:ht,selectNodesOnDrag:nt,defaultViewport:Wt,translateExtent:to,minZoom:Rn,maxZoom:wr,preventScrolling:Gr,zoomOnScroll:Hr,zoomOnPinch:In,zoomOnDoubleClick:ji,panOnScroll:dn,panOnScrollSpeed:Ci,panOnScrollMode:si,panOnDrag:ps,onPaneClick:xr,onPaneMouseEnter:no,onPaneMouseMove:Ta,onPaneMouseLeave:bo,onPaneScroll:Aa,onPaneContextMenu:On,onSelectionContextMenu:D,onSelectionStart:B,onSelectionEnd:R,onEdgeUpdate:Mr,onEdgeContextMenu:Cr,onEdgeDoubleClick:Er,onEdgeMouseEnter:qr,onEdgeMouseMove:Ei,onEdgeMouseLeave:ro,onEdgeUpdateStart:ai,onEdgeUpdateEnd:Nr,edgeUpdaterRadius:gs,defaultMarkerColor:Or,noDragClassName:_l,noWheelClassName:zo,noPanClassName:Wr,elevateEdgesOnSelect:je,rfId:mt,disableKeyboardA11y:ot,nodeOrigin:qt,nodeExtent:ar}),Z.jsx(ime,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:p,onConnectEnd:m,onClickConnectStart:b,onClickConnectEnd:_,nodesDraggable:$e,nodesConnectable:ct,nodesFocusable:Pe,edgesFocusable:Sr,edgesUpdatable:Pn,elementsSelectable:bn,elevateNodesOnSelect:Fe,minZoom:Rn,maxZoom:wr,nodeExtent:ar,onNodesChange:Vs,onEdgesChange:li,snapToGrid:me,snapGrid:le,connectionMode:I,translateExtent:to,connectOnClick:ee,defaultEdgeOptions:ie,fitView:ka,fitViewOptions:W,onNodesDelete:T,onEdgesDelete:k,onNodeDragStart:x,onNodeDrag:C,onNodeDragStop:A,onSelectionDrag:E,onSelectionDragStart:N,onSelectionDragStop:P,noPanClassName:Wr,nodeOrigin:qt,rfId:mt,autoPanOnConnect:Ne,autoPanOnNodeDrag:Ve,onError:ve,connectionRadius:Re,isValidConnection:re}),Z.jsx(nme,{onSelectionChange:L}),Kt,Z.jsx(Pge,{proOptions:ue,position:ne}),Z.jsx(ume,{rfId:mt,disableKeyboardA11y:ot})]})})});pye.displayName="ReactFlow";const gye=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__edgelabel-renderer")};function JIe({children:e}){const t=hr(gye);return t?Cs.createPortal(e,t):null}function eOe(){const e=oi();return M.useCallback(t=>{const{domNode:n,updateNodeDimensions:r}=e.getState(),o=(Array.isArray(t)?t:[t]).reduce((s,a)=>{const l=n==null?void 0:n.querySelector(`.react-flow__node[data-id="${a}"]`);return l&&s.push({id:a,nodeElement:l,forceUpdate:!0}),s},[]);requestAnimationFrame(()=>r(o))},[])}function mye(){const e=[];return function(t,n){if(typeof n!="object"||n===null)return n;for(;e.length>0&&e.at(-1)!==this;)e.pop();return e.includes(n)?"[Circular]":(e.push(n),n)}}const zg=hu("nodes/receivedOpenAPISchema",async(e,{rejectWithValue:t})=>{try{const n=[window.location.origin,"openapi.json"].join("/"),i=await(await fetch(n)).json();return JSON.parse(JSON.stringify(i,mye()))}catch(n){return t({error:n})}});let Wy;const yye=new Uint8Array(16);function vye(){if(!Wy&&(Wy=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Wy))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Wy(yye)}const hi=[];for(let e=0;e<256;++e)hi.push((e+256).toString(16).slice(1));function _ye(e,t=0){return(hi[e[t+0]]+hi[e[t+1]]+hi[e[t+2]]+hi[e[t+3]]+"-"+hi[e[t+4]]+hi[e[t+5]]+"-"+hi[e[t+6]]+hi[e[t+7]]+"-"+hi[e[t+8]]+hi[e[t+9]]+"-"+hi[e[t+10]]+hi[e[t+11]]+hi[e[t+12]]+hi[e[t+13]]+hi[e[t+14]]+hi[e[t+15]]).toLowerCase()}const bye=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),A8={randomUUID:bye};function kB(e,t,n){if(A8.randomUUID&&!t&&!e)return A8.randomUUID();e=e||{};const r=e.random||(e.rng||vye)();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 _ye(r)}const tOe=500,nOe=320,Sye="node-drag-handle",wye=["ImageField","ImageCollection"],rOe=wye,iOe={input:"inputs",output:"outputs"},oOe=["Collection","IntegerCollection","BooleanCollection","FloatCollection","StringCollection","ImageCollection","LatentsCollection","ConditioningCollection","ControlCollection","ColorCollection"],xye=["IntegerPolymorphic","BooleanPolymorphic","FloatPolymorphic","StringPolymorphic","ImagePolymorphic","LatentsPolymorphic","ConditioningPolymorphic","ControlPolymorphic","ColorPolymorphic"],sOe=["IPAdapterModelField","ControlNetModelField","LoRAModelField","MainModelField","ONNXModelField","SDXLMainModelField","SDXLRefinerModelField","VaeModelField","UNetField","VaeField","ClipField"],PB={integer:"IntegerCollection",boolean:"BooleanCollection",number:"FloatCollection",float:"FloatCollection",string:"StringCollection",ImageField:"ImageCollection",LatentsField:"LatentsCollection",ConditioningField:"ConditioningCollection",ControlField:"ControlCollection",ColorField:"ColorCollection"},Cye=e=>!!(e&&e in PB),RB={integer:"IntegerPolymorphic",boolean:"BooleanPolymorphic",number:"FloatPolymorphic",float:"FloatPolymorphic",string:"StringPolymorphic",ImageField:"ImagePolymorphic",LatentsField:"LatentsPolymorphic",ConditioningField:"ConditioningPolymorphic",ControlField:"ControlPolymorphic",ColorField:"ColorPolymorphic"},aOe={IntegerPolymorphic:"integer",BooleanPolymorphic:"boolean",FloatPolymorphic:"float",StringPolymorphic:"string",ImagePolymorphic:"ImageField",LatentsPolymorphic:"LatentsField",ConditioningPolymorphic:"ConditioningField",ControlPolymorphic:"ControlField",ColorPolymorphic:"ColorField"},Eye=e=>!!(e&&e in RB),lOe={boolean:{color:"green.500",description:J("nodes.booleanDescription"),title:J("nodes.boolean")},BooleanCollection:{color:"green.500",description:J("nodes.booleanCollectionDescription"),title:J("nodes.booleanCollection")},BooleanPolymorphic:{color:"green.500",description:J("nodes.booleanPolymorphicDescription"),title:J("nodes.booleanPolymorphic")},ClipField:{color:"green.500",description:J("nodes.clipFieldDescription"),title:J("nodes.clipField")},Collection:{color:"base.500",description:J("nodes.collectionDescription"),title:J("nodes.collection")},CollectionItem:{color:"base.500",description:J("nodes.collectionItemDescription"),title:J("nodes.collectionItem")},ColorCollection:{color:"pink.300",description:J("nodes.colorCollectionDescription"),title:J("nodes.colorCollection")},ColorField:{color:"pink.300",description:J("nodes.colorFieldDescription"),title:J("nodes.colorField")},ColorPolymorphic:{color:"pink.300",description:J("nodes.colorPolymorphicDescription"),title:J("nodes.colorPolymorphic")},ConditioningCollection:{color:"cyan.500",description:J("nodes.conditioningCollectionDescription"),title:J("nodes.conditioningCollection")},ConditioningField:{color:"cyan.500",description:J("nodes.conditioningFieldDescription"),title:J("nodes.conditioningField")},ConditioningPolymorphic:{color:"cyan.500",description:J("nodes.conditioningPolymorphicDescription"),title:J("nodes.conditioningPolymorphic")},ControlCollection:{color:"teal.500",description:J("nodes.controlCollectionDescription"),title:J("nodes.controlCollection")},ControlField:{color:"teal.500",description:J("nodes.controlFieldDescription"),title:J("nodes.controlField")},ControlNetModelField:{color:"teal.500",description:"TODO",title:"ControlNet"},ControlPolymorphic:{color:"teal.500",description:"Control info passed between nodes.",title:"Control Polymorphic"},DenoiseMaskField:{color:"blue.300",description:J("nodes.denoiseMaskFieldDescription"),title:J("nodes.denoiseMaskField")},enum:{color:"blue.500",description:J("nodes.enumDescription"),title:J("nodes.enum")},float:{color:"orange.500",description:J("nodes.floatDescription"),title:J("nodes.float")},FloatCollection:{color:"orange.500",description:J("nodes.floatCollectionDescription"),title:J("nodes.floatCollection")},FloatPolymorphic:{color:"orange.500",description:J("nodes.floatPolymorphicDescription"),title:J("nodes.floatPolymorphic")},ImageCollection:{color:"purple.500",description:J("nodes.imageCollectionDescription"),title:J("nodes.imageCollection")},ImageField:{color:"purple.500",description:J("nodes.imageFieldDescription"),title:J("nodes.imageField")},ImagePolymorphic:{color:"purple.500",description:J("nodes.imagePolymorphicDescription"),title:J("nodes.imagePolymorphic")},integer:{color:"red.500",description:J("nodes.integerDescription"),title:J("nodes.integer")},IntegerCollection:{color:"red.500",description:J("nodes.integerCollectionDescription"),title:J("nodes.integerCollection")},IntegerPolymorphic:{color:"red.500",description:J("nodes.integerPolymorphicDescription"),title:J("nodes.integerPolymorphic")},IPAdapterField:{color:"green.300",description:"IP-Adapter info passed between nodes.",title:"IP-Adapter"},IPAdapterModelField:{color:"teal.500",description:"IP-Adapter model",title:"IP-Adapter Model"},LatentsCollection:{color:"pink.500",description:J("nodes.latentsCollectionDescription"),title:J("nodes.latentsCollection")},LatentsField:{color:"pink.500",description:J("nodes.latentsFieldDescription"),title:J("nodes.latentsField")},LatentsPolymorphic:{color:"pink.500",description:J("nodes.latentsPolymorphicDescription"),title:J("nodes.latentsPolymorphic")},LoRAModelField:{color:"teal.500",description:J("nodes.loRAModelFieldDescription"),title:J("nodes.loRAModelField")},MainModelField:{color:"teal.500",description:J("nodes.mainModelFieldDescription"),title:J("nodes.mainModelField")},ONNXModelField:{color:"teal.500",description:J("nodes.oNNXModelFieldDescription"),title:J("nodes.oNNXModelField")},Scheduler:{color:"base.500",description:J("nodes.schedulerDescription"),title:J("nodes.scheduler")},SDXLMainModelField:{color:"teal.500",description:J("nodes.sDXLMainModelFieldDescription"),title:J("nodes.sDXLMainModelField")},SDXLRefinerModelField:{color:"teal.500",description:J("nodes.sDXLRefinerModelFieldDescription"),title:J("nodes.sDXLRefinerModelField")},string:{color:"yellow.500",description:J("nodes.stringDescription"),title:J("nodes.string")},StringCollection:{color:"yellow.500",description:J("nodes.stringCollectionDescription"),title:J("nodes.stringCollection")},StringPolymorphic:{color:"yellow.500",description:J("nodes.stringPolymorphicDescription"),title:J("nodes.stringPolymorphic")},UNetField:{color:"red.500",description:J("nodes.uNetFieldDescription"),title:J("nodes.uNetField")},VaeField:{color:"blue.500",description:J("nodes.vaeFieldDescription"),title:J("nodes.vaeField")},VaeModelField:{color:"teal.500",description:J("nodes.vaeModelFieldDescription"),title:J("nodes.vaeModelField")}},k8=(e,t,n)=>{let r=t,i=n;for(;e.find(o=>o.position.x===r&&o.position.y===i);)r=r+50,i=i+50;return{x:r,y:i}},Tye="1.0.0",bw={status:Fa.PENDING,error:null,progress:null,progressImage:null,outputs:[]},ZC={meta:{version:Tye},name:"",author:"",description:"",notes:"",tags:"",contact:"",version:"",exposedFields:[]},IB={nodes:[],edges:[],nodeTemplates:{},isReady:!1,connectionStartParams:null,currentConnectionFieldType:null,shouldShowFieldTypeLegend:!1,shouldShowMinimapPanel:!0,shouldValidateGraph:!0,shouldAnimateEdges:!0,shouldSnapToGrid:!1,shouldColorEdges:!0,isAddNodePopoverOpen:!1,nodeOpacity:1,selectedNodes:[],selectedEdges:[],workflow:ZC,nodeExecutionStates:{},viewport:{x:0,y:0,zoom:1},mouseOverField:null,mouseOverNode:null,nodesToCopy:[],edgesToCopy:[],selectionMode:bu.Partial},xo=(e,t)=>{var l,u;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(c=>c.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!Kr(s))return;const a=(u=s.data)==null?void 0:u.inputs[r];a&&o>-1&&(a.value=i)},OB=nr({name:"nodes",initialState:IB,reducers:{nodesChanged:(e,t)=>{e.nodes=ec(t.payload,e.nodes)},nodeAdded:(e,t)=>{const n=t.payload,r=k8(e.nodes,n.position.x,n.position.y);n.position=r,n.selected=!0,e.nodes=ec(e.nodes.map(i=>({id:i.id,type:"select",selected:!1})),e.nodes),e.edges=Vu(e.edges.map(i=>({id:i.id,type:"select",selected:!1})),e.edges),e.nodes.push(n),Kr(n)&&(e.nodeExecutionStates[n.id]={nodeId:n.id,...bw})},edgesChanged:(e,t)=>{e.edges=Vu(t.payload,e.edges)},connectionStarted:(e,t)=>{var l;e.connectionStartParams=t.payload;const{nodeId:n,handleId:r,handleType:i}=t.payload;if(!n||!r)return;const o=e.nodes.findIndex(u=>u.id===n),s=(l=e.nodes)==null?void 0:l[o];if(!Kr(s))return;const a=i==="source"?s.data.outputs[r]:s.data.inputs[r];e.currentConnectionFieldType=(a==null?void 0:a.type)??null},connectionMade:(e,t)=>{e.currentConnectionFieldType&&(e.edges=KF({...t.payload,type:"default"},e.edges))},connectionEnded:e=>{e.connectionStartParams=null,e.currentConnectionFieldType=null},workflowExposedFieldAdded:(e,t)=>{e.workflow.exposedFields=Hk(e.workflow.exposedFields.concat(t.payload),n=>`${n.nodeId}-${n.fieldName}`)},workflowExposedFieldRemoved:(e,t)=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(n=>!wm(n,t.payload))},fieldLabelChanged:(e,t)=>{const{nodeId:n,fieldName:r,label:i}=t.payload,o=e.nodes.find(a=>a.id===n);if(!Kr(o))return;const s=o.data.inputs[r];s&&(s.label=i)},nodeEmbedWorkflowChanged:(e,t)=>{var s;const{nodeId:n,embedWorkflow:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.embedWorkflow=r)},nodeIsIntermediateChanged:(e,t)=>{var s;const{nodeId:n,isIntermediate:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.isIntermediate=r)},nodeIsOpenChanged:(e,t)=>{var a;const{nodeId:n,isOpen:r}=t.payload,i=e.nodes.findIndex(l=>l.id===n),o=(a=e.nodes)==null?void 0:a[i];if(!Kr(o)&&!uP(o)||(o.data.isOpen=r,!Kr(o)))return;const s=fT([o],e.edges);if(r)s.forEach(l=>{delete l.hidden}),s.forEach(l=>{l.type==="collapsed"&&(e.edges=e.edges.filter(u=>u.id!==l.id))});else{const l=Vge(o,e.nodes,e.edges).filter(d=>Kr(d)&&d.data.isOpen===!1),u=jge(o,e.nodes,e.edges).filter(d=>Kr(d)&&d.data.isOpen===!1),c=[];s.forEach(d=>{var f,h;if(d.target===n&&l.find(p=>p.id===d.source)){d.hidden=!0;const p=c.find(m=>m.source===d.source&&m.target===d.target);p?p.data={count:(((f=p.data)==null?void 0:f.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}if(d.source===n&&u.find(p=>p.id===d.target)){const p=c.find(m=>m.source===d.source&&m.target===d.target);d.hidden=!0,p?p.data={count:(((h=p.data)==null?void 0:h.count)??0)+1}:c.push({id:`${d.source}-${d.target}-collapsed`,source:d.source,target:d.target,type:"collapsed",data:{count:1}})}}),c.length&&(e.edges=Vu(c.map(d=>({type:"add",item:d})),e.edges))}},edgesDeleted:(e,t)=>{const r=t.payload.filter(i=>i.type==="collapsed");if(r.length){const i=[];r.forEach(o=>{e.edges.forEach(s=>{s.source===o.source&&s.target===o.target&&i.push({id:s.id,type:"remove"})})}),e.edges=Vu(i,e.edges)}},nodesDeleted:(e,t)=>{t.payload.forEach(n=>{e.workflow.exposedFields=e.workflow.exposedFields.filter(r=>r.nodeId!==n.id),Kr(n)&&delete e.nodeExecutionStates[n.id]})},nodeLabelChanged:(e,t)=>{var s;const{nodeId:n,label:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.label=r)},nodeNotesChanged:(e,t)=>{var s;const{nodeId:n,notes:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];Kr(o)&&(o.data.notes=r)},nodeExclusivelySelected:(e,t)=>{const n=t.payload;e.nodes=ec(e.nodes.map(r=>({id:r.id,type:"select",selected:r.id===n})),e.nodes)},selectedNodesChanged:(e,t)=>{e.selectedNodes=t.payload},selectedEdgesChanged:(e,t)=>{e.selectedEdges=t.payload},fieldStringValueChanged:(e,t)=>{xo(e,t)},fieldNumberValueChanged:(e,t)=>{xo(e,t)},fieldBooleanValueChanged:(e,t)=>{xo(e,t)},fieldImageValueChanged:(e,t)=>{xo(e,t)},fieldColorValueChanged:(e,t)=>{xo(e,t)},fieldMainModelValueChanged:(e,t)=>{xo(e,t)},fieldRefinerModelValueChanged:(e,t)=>{xo(e,t)},fieldVaeModelValueChanged:(e,t)=>{xo(e,t)},fieldLoRAModelValueChanged:(e,t)=>{xo(e,t)},fieldControlNetModelValueChanged:(e,t)=>{xo(e,t)},fieldIPAdapterModelValueChanged:(e,t)=>{xo(e,t)},fieldEnumModelValueChanged:(e,t)=>{xo(e,t)},fieldSchedulerValueChanged:(e,t)=>{xo(e,t)},imageCollectionFieldValueChanged:(e,t)=>{var u,c;const{nodeId:n,fieldName:r,value:i}=t.payload,o=e.nodes.findIndex(d=>d.id===n);if(o===-1)return;const s=(u=e.nodes)==null?void 0:u[o];if(!Kr(s))return;const a=(c=s.data)==null?void 0:c.inputs[r];if(!a)return;const l=Jn(a.value);if(!l){a.value=i;return}a.value=Hk(l.concat(i),"image_name")},notesNodeValueChanged:(e,t)=>{var s;const{nodeId:n,value:r}=t.payload,i=e.nodes.findIndex(a=>a.id===n),o=(s=e.nodes)==null?void 0:s[i];uP(o)&&(o.data.notes=r)},shouldShowFieldTypeLegendChanged:(e,t)=>{e.shouldShowFieldTypeLegend=t.payload},shouldShowMinimapPanelChanged:(e,t)=>{e.shouldShowMinimapPanel=t.payload},nodeTemplatesBuilt:(e,t)=>{e.nodeTemplates=t.payload,e.isReady=!0},nodeEditorReset:e=>{e.nodes=[],e.edges=[],e.workflow=Jn(ZC)},shouldValidateGraphChanged:(e,t)=>{e.shouldValidateGraph=t.payload},shouldAnimateEdgesChanged:(e,t)=>{e.shouldAnimateEdges=t.payload},shouldSnapToGridChanged:(e,t)=>{e.shouldSnapToGrid=t.payload},shouldColorEdgesChanged:(e,t)=>{e.shouldColorEdges=t.payload},nodeOpacityChanged:(e,t)=>{e.nodeOpacity=t.payload},workflowNameChanged:(e,t)=>{e.workflow.name=t.payload},workflowDescriptionChanged:(e,t)=>{e.workflow.description=t.payload},workflowTagsChanged:(e,t)=>{e.workflow.tags=t.payload},workflowAuthorChanged:(e,t)=>{e.workflow.author=t.payload},workflowNotesChanged:(e,t)=>{e.workflow.notes=t.payload},workflowVersionChanged:(e,t)=>{e.workflow.version=t.payload},workflowContactChanged:(e,t)=>{e.workflow.contact=t.payload},workflowLoaded:(e,t)=>{const{nodes:n,edges:r,...i}=t.payload;e.workflow=i,e.nodes=ec(n.map(o=>({item:{...o,dragHandle:`.${Sye}`},type:"add"})),[]),e.edges=Vu(r.map(o=>({item:o,type:"add"})),[]),e.nodeExecutionStates=n.reduce((o,s)=>(o[s.id]={nodeId:s.id,...bw},o),{})},workflowReset:e=>{e.workflow=Jn(ZC)},viewportChanged:(e,t)=>{e.viewport=t.payload},mouseOverFieldChanged:(e,t)=>{e.mouseOverField=t.payload},mouseOverNodeChanged:(e,t)=>{e.mouseOverNode=t.payload},selectedAll:e=>{e.nodes=ec(e.nodes.map(t=>({id:t.id,type:"select",selected:!0})),e.nodes),e.edges=Vu(e.edges.map(t=>({id:t.id,type:"select",selected:!0})),e.edges)},selectionCopied:e=>{e.nodesToCopy=e.nodes.filter(t=>t.selected).map(Jn),e.edgesToCopy=e.edges.filter(t=>t.selected).map(Jn)},selectionPasted:e=>{const t=e.nodesToCopy.map(Jn),n=t.map(l=>l.data.id),r=e.edgesToCopy.filter(l=>n.includes(l.source)&&n.includes(l.target)).map(Jn);r.forEach(l=>l.selected=!0),t.forEach(l=>{const u=kB();r.forEach(d=>{d.source===l.data.id&&(d.source=u,d.id=d.id.replace(l.data.id,u)),d.target===l.data.id&&(d.target=u,d.id=d.id.replace(l.data.id,u))}),l.selected=!0,l.id=u,l.data.id=u;const c=k8(e.nodes,l.position.x,l.position.y);l.position=c});const i=t.map(l=>({item:l,type:"add"})),o=e.nodes.map(l=>({id:l.data.id,type:"select",selected:!1})),s=r.map(l=>({item:l,type:"add"})),a=e.edges.map(l=>({id:l.id,type:"select",selected:!1}));e.nodes=ec(i.concat(o),e.nodes),e.edges=Vu(s.concat(a),e.edges),t.forEach(l=>{e.nodeExecutionStates[l.id]={nodeId:l.id,...bw}})},addNodePopoverOpened:e=>{e.isAddNodePopoverOpen=!0},addNodePopoverClosed:e=>{e.isAddNodePopoverOpen=!1},addNodePopoverToggled:e=>{e.isAddNodePopoverOpen=!e.isAddNodePopoverOpen},selectionModeChanged:(e,t)=>{e.selectionMode=t.payload?bu.Full:bu.Partial}},extraReducers:e=>{e.addCase(zg.pending,t=>{t.isReady=!1}),e.addCase(q5,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=Fa.IN_PROGRESS)}),e.addCase(K5,(t,n)=>{const{source_node_id:r,result:i}=n.payload.data,o=t.nodeExecutionStates[r];o&&(o.status=Fa.COMPLETED,o.progress!==null&&(o.progress=1),o.outputs.push(i))}),e.addCase(kb,(t,n)=>{const{source_node_id:r}=n.payload.data,i=t.nodeExecutionStates[r];i&&(i.status=Fa.FAILED,i.error=n.payload.data.error,i.progress=null,i.progressImage=null)}),e.addCase(X5,(t,n)=>{const{source_node_id:r,step:i,total_steps:o,progress_image:s}=n.payload.data,a=t.nodeExecutionStates[r];a&&(a.status=Fa.IN_PROGRESS,a.progress=(i+1)/o,a.progressImage=s??null)}),e.addCase(ah.fulfilled,t=>{rs(t.nodeExecutionStates,n=>{n.status=Fa.PENDING,n.error=null,n.progress=null,n.progressImage=null,n.outputs=[]})}),e.addCase(Iu.fulfilled,t=>{yee(t.nodeExecutionStates,n=>{n.status===Fa.IN_PROGRESS&&(n.status=Fa.PENDING)})})}}),{nodesChanged:uOe,edgesChanged:cOe,nodeAdded:dOe,nodesDeleted:fOe,connectionMade:hOe,connectionStarted:pOe,connectionEnded:gOe,shouldShowFieldTypeLegendChanged:mOe,shouldShowMinimapPanelChanged:yOe,nodeTemplatesBuilt:MB,nodeEditorReset:Aye,imageCollectionFieldValueChanged:vOe,fieldStringValueChanged:_Oe,fieldNumberValueChanged:bOe,fieldBooleanValueChanged:SOe,fieldImageValueChanged:Lb,fieldColorValueChanged:wOe,fieldMainModelValueChanged:xOe,fieldVaeModelValueChanged:COe,fieldLoRAModelValueChanged:EOe,fieldEnumModelValueChanged:TOe,fieldControlNetModelValueChanged:AOe,fieldIPAdapterModelValueChanged:kOe,fieldRefinerModelValueChanged:POe,fieldSchedulerValueChanged:ROe,nodeIsOpenChanged:IOe,nodeLabelChanged:OOe,nodeNotesChanged:MOe,edgesDeleted:NOe,shouldValidateGraphChanged:DOe,shouldAnimateEdgesChanged:LOe,nodeOpacityChanged:$Oe,shouldSnapToGridChanged:FOe,shouldColorEdgesChanged:BOe,selectedNodesChanged:zOe,selectedEdgesChanged:UOe,workflowNameChanged:jOe,workflowDescriptionChanged:VOe,workflowTagsChanged:GOe,workflowAuthorChanged:HOe,workflowNotesChanged:qOe,workflowVersionChanged:WOe,workflowContactChanged:KOe,workflowLoaded:kye,notesNodeValueChanged:XOe,workflowExposedFieldAdded:Pye,workflowExposedFieldRemoved:QOe,fieldLabelChanged:YOe,viewportChanged:ZOe,mouseOverFieldChanged:JOe,selectionCopied:e9e,selectionPasted:t9e,selectedAll:n9e,addNodePopoverOpened:r9e,addNodePopoverClosed:i9e,addNodePopoverToggled:o9e,selectionModeChanged:s9e,nodeEmbedWorkflowChanged:a9e,nodeIsIntermediateChanged:l9e,mouseOverNodeChanged:u9e,nodeExclusivelySelected:c9e}=OB.actions,Rye=OB.reducer,NB={esrganModelName:"RealESRGAN_x4plus.pth"},DB=nr({name:"postprocessing",initialState:NB,reducers:{esrganModelNameChanged:(e,t)=>{e.esrganModelName=t.payload}}}),{esrganModelNameChanged:d9e}=DB.actions,Iye=DB.reducer,Oye={positiveStylePrompt:"",negativeStylePrompt:"",shouldConcatSDXLStylePrompt:!0,shouldUseSDXLRefiner:!1,sdxlImg2ImgDenoisingStrength:.7,refinerModel:null,refinerSteps:20,refinerCFGScale:7.5,refinerScheduler:"euler",refinerPositiveAestheticScore:6,refinerNegativeAestheticScore:2.5,refinerStart:.8},LB=nr({name:"sdxl",initialState:Oye,reducers:{setPositiveStylePromptSDXL:(e,t)=>{e.positiveStylePrompt=t.payload},setNegativeStylePromptSDXL:(e,t)=>{e.negativeStylePrompt=t.payload},setShouldConcatSDXLStylePrompt:(e,t)=>{e.shouldConcatSDXLStylePrompt=t.payload},setShouldUseSDXLRefiner:(e,t)=>{e.shouldUseSDXLRefiner=t.payload},setSDXLImg2ImgDenoisingStrength:(e,t)=>{e.sdxlImg2ImgDenoisingStrength=t.payload},refinerModelChanged:(e,t)=>{e.refinerModel=t.payload},setRefinerSteps:(e,t)=>{e.refinerSteps=t.payload},setRefinerCFGScale:(e,t)=>{e.refinerCFGScale=t.payload},setRefinerScheduler:(e,t)=>{e.refinerScheduler=t.payload},setRefinerPositiveAestheticScore:(e,t)=>{e.refinerPositiveAestheticScore=t.payload},setRefinerNegativeAestheticScore:(e,t)=>{e.refinerNegativeAestheticScore=t.payload},setRefinerStart:(e,t)=>{e.refinerStart=t.payload}}}),{setPositiveStylePromptSDXL:f9e,setNegativeStylePromptSDXL:h9e,setShouldConcatSDXLStylePrompt:p9e,setShouldUseSDXLRefiner:Mye,setSDXLImg2ImgDenoisingStrength:g9e,refinerModelChanged:P8,setRefinerSteps:m9e,setRefinerCFGScale:y9e,setRefinerScheduler:v9e,setRefinerPositiveAestheticScore:_9e,setRefinerNegativeAestheticScore:b9e,setRefinerStart:S9e}=LB.actions,Nye=LB.reducer,Fm=Le("app/userInvoked"),sa=e=>typeof e=="string"?{title:e,status:"info",isClosable:!0,duration:2500}:{status:"info",isClosable:!0,duration:2500,...e},Dye=z.object({status:z.literal(422),error:z.object({detail:z.array(z.object({loc:z.array(z.string()),msg:z.string(),type:z.string()}))})}),$B={isConnected:!1,isProcessing:!1,isGFPGANAvailable:!0,isESRGANAvailable:!0,shouldConfirmOnDelete:!0,currentStep:0,totalSteps:0,currentIteration:0,totalIterations:0,currentStatusHasSteps:!1,isCancelable:!0,enableImageDebugging:!1,toastQueue:[],progressImage:null,shouldAntialiasProgressImage:!1,sessionId:null,cancelType:"immediate",isCancelScheduled:!1,subscribedNodeIds:[],wereModelsReceived:!1,consoleLogLevel:"debug",shouldLogToConsole:!0,statusTranslationKey:"common.statusDisconnected",canceledSession:"",isPersisted:!1,language:"en",isUploading:!1,shouldUseNSFWChecker:!1,shouldUseWatermarker:!1},FB=nr({name:"system",initialState:$B,reducers:{setIsProcessing:(e,t)=>{e.isProcessing=t.payload},setCurrentStatus:(e,t)=>{e.statusTranslationKey=t.payload},setShouldConfirmOnDelete:(e,t)=>{e.shouldConfirmOnDelete=t.payload},setIsCancelable:(e,t)=>{e.isCancelable=t.payload},setEnableImageDebugging:(e,t)=>{e.enableImageDebugging=t.payload},addToast:(e,t)=>{e.toastQueue.push(t.payload)},clearToastQueue:e=>{e.toastQueue=[]},cancelScheduled:e=>{e.isCancelScheduled=!0},scheduledCancelAborted:e=>{e.isCancelScheduled=!1},cancelTypeChanged:(e,t)=>{e.cancelType=t.payload},subscribedNodeIdsSet:(e,t)=>{e.subscribedNodeIds=t.payload},consoleLogLevelChanged:(e,t)=>{e.consoleLogLevel=t.payload},shouldLogToConsoleChanged:(e,t)=>{e.shouldLogToConsole=t.payload},shouldAntialiasProgressImageChanged:(e,t)=>{e.shouldAntialiasProgressImage=t.payload},isPersistedChanged:(e,t)=>{e.isPersisted=t.payload},languageChanged:(e,t)=>{e.language=t.payload},progressImageSet(e,t){e.progressImage=t.payload},shouldUseNSFWCheckerChanged(e,t){e.shouldUseNSFWChecker=t.payload},shouldUseWatermarkerChanged(e,t){e.shouldUseWatermarker=t.payload}},extraReducers(e){e.addCase(L$,(t,n)=>{t.sessionId=n.payload.sessionId,t.canceledSession=""}),e.addCase(F$,t=>{t.sessionId=null}),e.addCase(M$,t=>{t.isConnected=!0,t.isCancelable=!0,t.isProcessing=!1,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.currentIteration=0,t.totalIterations=0,t.statusTranslationKey="common.statusConnected"}),e.addCase(D$,t=>{t.isConnected=!1,t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusDisconnected"}),e.addCase(q5,t=>{t.isCancelable=!0,t.isProcessing=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusGenerating"}),e.addCase(X5,(t,n)=>{const{step:r,total_steps:i,progress_image:o}=n.payload.data;t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!0,t.currentStep=r+1,t.totalSteps=i,t.progressImage=o??null,t.statusTranslationKey="common.statusGenerating"}),e.addCase(K5,(t,n)=>{const{data:r}=n.payload;t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusProcessingComplete",t.canceledSession===r.graph_execution_state_id&&(t.isProcessing=!1,t.isCancelable=!0)}),e.addCase(j$,t=>{t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null}),e.addCase(Fm,t=>{t.isProcessing=!0,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.statusTranslationKey="common.statusPreparing"}),e.addCase(Iu.fulfilled,(t,n)=>{t.canceledSession=n.meta.arg.session_id,t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null,t.toastQueue.push(sa({title:J("toast.canceled"),status:"warning"}))}),e.addMatcher(vD,(t,n)=>{var o,s,a;t.isProcessing=!1,t.isCancelable=!1,t.isCancelScheduled=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusConnected",t.progressImage=null;let r;const i=5e3;if(((o=n.payload)==null?void 0:o.status)===422){const l=Dye.safeParse(n.payload);if(l.success){l.data.error.detail.map(u=>{t.toastQueue.push(sa({title:$2(h7(u.msg),{length:128}),status:"error",description:$2(`Path: + ${u.loc.join(".")}`,{length:128}),duration:i}))});return}}else(s=n.payload)!=null&&s.error&&(r=(a=n.payload)==null?void 0:a.error);t.toastQueue.push(sa({title:J("toast.serverError"),status:"error",description:$2(Mv(r,"detail","Unknown Error"),{length:128}),duration:i}))}),e.addMatcher(zye,(t,n)=>{t.isProcessing=!1,t.isCancelable=!0,t.currentStatusHasSteps=!1,t.currentStep=0,t.totalSteps=0,t.statusTranslationKey="common.statusError",t.progressImage=null,t.toastQueue.push(sa({title:J("toast.serverError"),status:"error",description:tte(n.payload.data.error_type)}))})}}),{setIsProcessing:w9e,setShouldConfirmOnDelete:x9e,setCurrentStatus:C9e,setIsCancelable:E9e,setEnableImageDebugging:T9e,addToast:Tn,clearToastQueue:A9e,cancelScheduled:k9e,scheduledCancelAborted:P9e,cancelTypeChanged:R9e,subscribedNodeIdsSet:I9e,consoleLogLevelChanged:O9e,shouldLogToConsoleChanged:M9e,isPersistedChanged:N9e,shouldAntialiasProgressImageChanged:D9e,languageChanged:L9e,progressImageSet:Lye,shouldUseNSFWCheckerChanged:$ye,shouldUseWatermarkerChanged:Fye}=FB.actions,Bye=FB.reducer,zye=os(kb,W$,X$),Uye={searchFolder:null,advancedAddScanModel:null},BB=nr({name:"modelmanager",initialState:Uye,reducers:{setSearchFolder:(e,t)=>{e.searchFolder=t.payload},setAdvancedAddScanModel:(e,t)=>{e.advancedAddScanModel=t.payload}}}),{setSearchFolder:$9e,setAdvancedAddScanModel:F9e}=BB.actions,jye=BB.reducer,zB={shift:!1,ctrl:!1,meta:!1},UB=nr({name:"hotkeys",initialState:zB,reducers:{shiftKeyPressed:(e,t)=>{e.shift=t.payload},ctrlKeyPressed:(e,t)=>{e.ctrl=t.payload},metaKeyPressed:(e,t)=>{e.meta=t.payload}}}),{shiftKeyPressed:B9e,ctrlKeyPressed:z9e,metaKeyPressed:U9e}=UB.actions,Vye=UB.reducer,jB=["txt2img","img2img","unifiedCanvas","nodes","modelManager","batch"],R8=(e,t)=>{typeof t=="number"?e.activeTab=t:e.activeTab=jB.indexOf(t)},VB={activeTab:0,shouldShowImageDetails:!1,shouldUseCanvasBetaLayout:!1,shouldShowExistingModelsInSearch:!1,shouldUseSliders:!1,shouldHidePreview:!1,shouldShowProgressInViewer:!0,shouldShowEmbeddingPicker:!1,shouldAutoChangeDimensions:!1,favoriteSchedulers:[],globalContextMenuCloseTrigger:0,panels:{}},GB=nr({name:"ui",initialState:VB,reducers:{setActiveTab:(e,t)=>{R8(e,t.payload)},setShouldShowImageDetails:(e,t)=>{e.shouldShowImageDetails=t.payload},setShouldUseCanvasBetaLayout:(e,t)=>{e.shouldUseCanvasBetaLayout=t.payload},setShouldHidePreview:(e,t)=>{e.shouldHidePreview=t.payload},setShouldShowExistingModelsInSearch:(e,t)=>{e.shouldShowExistingModelsInSearch=t.payload},setShouldUseSliders:(e,t)=>{e.shouldUseSliders=t.payload},setShouldShowProgressInViewer:(e,t)=>{e.shouldShowProgressInViewer=t.payload},favoriteSchedulersChanged:(e,t)=>{e.favoriteSchedulers=t.payload},toggleEmbeddingPicker:e=>{e.shouldShowEmbeddingPicker=!e.shouldShowEmbeddingPicker},setShouldAutoChangeDimensions:(e,t)=>{e.shouldAutoChangeDimensions=t.payload},contextMenusClosed:e=>{e.globalContextMenuCloseTrigger+=1},panelsChanged:(e,t)=>{e.panels[t.payload.name]=t.payload.value}},extraReducers(e){e.addCase(D_,t=>{R8(t,"img2img")})}}),{setActiveTab:HB,setShouldShowImageDetails:j9e,setShouldUseCanvasBetaLayout:V9e,setShouldShowExistingModelsInSearch:G9e,setShouldUseSliders:H9e,setShouldHidePreview:q9e,setShouldShowProgressInViewer:W9e,favoriteSchedulersChanged:K9e,toggleEmbeddingPicker:X9e,setShouldAutoChangeDimensions:Q9e,contextMenusClosed:Y9e,panelsChanged:Z9e}=GB.actions,Gye=GB.reducer,Hye=Y1(Aq);qB=JC=void 0;var qye=Hye,Wye=function(){var t=[],n=[],r=void 0,i=function(u){return r=u,function(c){return function(d){return qye.compose.apply(void 0,n)(c)(d)}}},o=function(){for(var u,c,d=arguments.length,f=Array(d),h=0;h=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(u){throw u},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var o=!0,s=!1,a;return{s:function(){n=n.call(e)},n:function(){var u=n.next();return o=u.done,u},e:function(u){s=!0,a=u},f:function(){try{!o&&n.return!=null&&n.return()}finally{if(s)throw a}}}}function KB(e,t){if(e){if(typeof e=="string")return O8(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return O8(e,t)}}function O8(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,i=r.prefix,o=r.driver,s=r.persistWholeStore,a=r.serialize;try{var l=s?a0e:l0e;yield l(t,n,{prefix:i,driver:o,serialize:a})}catch(u){console.warn("redux-remember: persist error",u)}});return function(){return e.apply(this,arguments)}}();function L8(e,t,n,r,i,o,s){try{var a=e[o](s),l=a.value}catch(u){n(u);return}a.done?t(l):Promise.resolve(l).then(r,i)}function $8(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function s(l){L8(o,r,i,s,a,"next",l)}function a(l){L8(o,r,i,s,a,"throw",l)}s(void 0)})}}var c0e=function(){var e=$8(function*(t,n,r){var i=r.prefix,o=r.driver,s=r.serialize,a=r.unserialize,l=r.persistThrottle,u=r.persistDebounce,c=r.persistWholeStore;yield n0e(t,n,{prefix:i,driver:o,unserialize:a,persistWholeStore:c});var d={},f=function(){var h=$8(function*(){var p=WB(t.getState(),n);yield u0e(p,d,{prefix:i,driver:o,serialize:s,persistWholeStore:c}),yT(p,d)||t.dispatch({type:Yye,payload:p}),d=p});return function(){return h.apply(this,arguments)}}();u&&u>0?t.subscribe(Jye(f,u)):t.subscribe(Zye(f,l))});return function(n,r,i){return e.apply(this,arguments)}}();const d0e=c0e;function Ug(e){"@babel/helpers - typeof";return Ug=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ug(e)}function F8(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 xw(e){for(var t=1;t0&&arguments[0]!==void 0?arguments[0]:n.state,i=arguments.length>1?arguments[1]:void 0;i.type&&(i.type==="@@INIT"||i.type.startsWith("@@redux/INIT"))&&(n.state=xw({},r));var o=typeof t=="function"?t:rh(t);switch(i.type){case e3:{var s=xw(xw({},n.state),i.payload||{});return n.state=o(s,{type:e3,payload:s}),n.state}default:return o(r,i)}}},m0e=function(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=r.prefix,o=i===void 0?"@@remember-":i,s=r.serialize,a=s===void 0?function(b,_){return JSON.stringify(b)}:s,l=r.unserialize,u=l===void 0?function(b,_){return JSON.parse(b)}:l,c=r.persistThrottle,d=c===void 0?100:c,f=r.persistDebounce,h=r.persistWholeStore,p=h===void 0?!1:h;if(!t)throw Error("redux-remember error: driver required");if(!Array.isArray(n))throw Error("redux-remember error: rememberedKeys needs to be an array");var m=function(_){return function(y,g,v){var S=_(y,g,v);return d0e(S,n,{driver:t,prefix:o,serialize:a,unserialize:u,persistThrottle:d,persistDebounce:f,persistWholeStore:p}),S}};return m};const J9e=["chakra-ui-color-mode","i18nextLng","ROARR_FILTER","ROARR_LOG"],y0e="@@invokeai-",v0e=["cursorPosition"],_0e=["pendingControlImages"],b0e=["selection","selectedBoardId","galleryView"],S0e=["nodeTemplates","connectionStartParams","currentConnectionFieldType","selectedNodes","selectedEdges","isReady","nodesToCopy","edgesToCopy"],w0e=[],x0e=[],C0e=["currentIteration","currentStep","isCancelable","isConnected","isESRGANAvailable","isGFPGANAvailable","isProcessing","totalIterations","totalSteps","isCancelScheduled","progressImage","wereModelsReceived","isPersisted","isUploading"],E0e=["shouldShowImageDetails","globalContextMenuCloseTrigger","panels"],T0e={canvas:v0e,gallery:b0e,generation:w0e,nodes:S0e,postprocessing:x0e,system:C0e,ui:E0e,controlNet:_0e},A0e=(e,t)=>{const n=I_(e,T0e[t]??[]);return JSON.stringify(n)},k0e={canvas:bD,gallery:rF,generation:zs,nodes:IB,postprocessing:NB,system:$B,config:iD,ui:VB,hotkeys:zB,controlNet:DC},P0e=(e,t)=>cee(JSON.parse(e),k0e[t]),QB=Le("nodes/textToImageGraphBuilt"),YB=Le("nodes/imageToImageGraphBuilt"),ZB=Le("nodes/canvasGraphBuilt"),JB=Le("nodes/nodesGraphBuilt"),R0e=os(QB,YB,ZB,JB),I0e=Le("nodes/workflowLoadRequested"),O0e=e=>{if(R0e(e)&&e.payload.nodes){const t={};return{...e,payload:{...e.payload,nodes:t}}}return zg.fulfilled.match(e)?{...e,payload:""}:MB.match(e)?{...e,payload:""}:e},M0e=["canvas/setCursorPosition","canvas/setStageCoordinates","canvas/setStageScale","canvas/setIsDrawing","canvas/setBoundingBoxCoordinates","canvas/setBoundingBoxDimensions","canvas/setIsDrawing","canvas/addPointToCurrentLine","socket/socketGeneratorProgress","socket/appSocketGeneratorProgress","@@REMEMBER_PERSISTED"],N0e=e=>e,D0e=()=>{Te({actionCreator:Zne,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),{sessionId:o,isProcessing:s}=i.system,a=e.payload;if(s){if(!a){r.debug("No canvas session, skipping cancel");return}if(a!==o){r.debug({canvasSessionId:a,session_id:o},"Canvas session does not match global session, skipping cancel");return}t(Iu({session_id:o}))}}})};Le("app/appStarted");const L0e=()=>{Te({matcher:pe.endpoints.listImages.matchFulfilled,effect:async(e,{dispatch:t,unsubscribe:n,cancelActiveListeners:r})=>{if(e.meta.arg.queryCacheKey!==Eo({board_id:"none",categories:Qr}))return;r(),n();const i=e.payload;if(i.ids.length>0){const o=Ln.getSelectors().selectAll(i)[0];t(ha(o??null))}}})},vT=_u.injectEndpoints({endpoints:e=>({getAppVersion:e.query({query:()=>({url:"app/version",method:"GET"}),providesTags:["AppVersion"],keepUnusedDataFor:864e5}),getAppConfig:e.query({query:()=>({url:"app/config",method:"GET"}),providesTags:["AppConfig"],keepUnusedDataFor:864e5})})}),{useGetAppVersionQuery:eMe,useGetAppConfigQuery:tMe}=vT,$0e=()=>{Te({matcher:vT.endpoints.getAppConfig.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const{infill_methods:r=[],nsfw_methods:i=[],watermarking_methods:o=[]}=e.payload,s=t().generation.infillMethod;r.includes(s)||n(Pne(r[0])),i.includes("nsfw_checker")||n($ye(!1)),o.includes("invisible_watermark")||n(Fye(!1))}})},F0e=Le("app/appStarted"),B0e=()=>{Te({actionCreator:F0e,effect:async(e,{unsubscribe:t,cancelActiveListeners:n})=>{n(),t()}})},_T={memoizeOptions:{resultEqualityCheck:wm}},ez=(e,t)=>{var f,h;const{generation:n,canvas:r,nodes:i,controlNet:o}=e,s=((f=n.initialImage)==null?void 0:f.imageName)===t,a=r.layerState.objects.some(p=>p.kind==="image"&&p.imageName===t),l=i.nodes.filter(Kr).some(p=>wp(p.data.inputs,m=>{var b;return m.type==="ImageField"&&((b=m.value)==null?void 0:b.image_name)===t})),u=wp(o.controlNets,p=>p.controlImage===t||p.processedControlImage===t),c=((h=o.ipAdapterInfo.adapterImage)==null?void 0:h.image_name)===t;return{isInitialImage:s,isCanvasImage:a,isNodesImage:l,isControlNetImage:u,isIPAdapterImage:c}},z0e=Fi([e=>e],e=>{const{imagesToDelete:t}=e.deleteImageModal;return t.length?t.map(r=>ez(e,r.image_name)):[]},_T),U0e=()=>{Te({matcher:pe.endpoints.deleteBoardAndImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{deleted_images:r}=e.payload;let i=!1,o=!1,s=!1,a=!1,l=!1;const u=n();r.forEach(c=>{const d=ez(u,c);d.isInitialImage&&!i&&(t(b5()),i=!0),d.isCanvasImage&&!o&&(t(S5()),o=!0),d.isNodesImage&&!s&&(t(Aye()),s=!0),d.isControlNetImage&&!a&&(t(Nde()),a=!0),d.isIPAdapterImage&&!l&&(t(J$()),l=!0)})}})},j0e=()=>{Te({matcher:os(LC,h1),effect:async(e,{getState:t,dispatch:n,condition:r,cancelActiveListeners:i})=>{i();const o=t(),s=LC.match(e)?e.payload:o.gallery.selectedBoardId,l=(h1.match(e)?e.payload:o.gallery.galleryView)==="images"?Qr:Gl,u={board_id:s??"none",categories:l};if(await r(()=>pe.endpoints.listImages.select(u)(t()).isSuccess,5e3)){const{data:d}=pe.endpoints.listImages.select(u)(t());if(d){const f=f1.selectAll(d)[0];n(ha(f??null))}else n(ha(null))}else n(ha(null))}})},V0e=Le("canvas/canvasSavedToGallery"),G0e=Le("canvas/canvasMaskSavedToGallery"),H0e=Le("canvas/canvasCopiedToClipboard"),q0e=Le("canvas/canvasDownloadedAsImage"),W0e=Le("canvas/canvasMerged"),K0e=Le("canvas/stagingAreaImageSaved"),X0e=Le("canvas/canvasMaskToControlNet"),Q0e=Le("canvas/canvasImageToControlNet");let tz=null,nz=null;const nMe=e=>{tz=e},Fb=()=>tz,rMe=e=>{nz=e},Y0e=()=>nz,Z0e=async e=>new Promise((t,n)=>{e.toBlob(r=>{if(r){t(r);return}n("Unable to create Blob")})}),E1=async(e,t)=>await Z0e(e.toCanvas(t)),Bb=async e=>{const t=Fb();if(!t)return;const{shouldCropToBoundingBoxOnSave:n,boundingBoxCoordinates:r,boundingBoxDimensions:i}=e.canvas,o=t.clone();o.scale({x:1,y:1});const s=o.getAbsolutePosition(),a=n?{x:r.x+s.x,y:r.y+s.y,width:i.width,height:i.height}:o.getClientRect();return E1(o,a)},J0e=e=>{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])},eve=()=>{Te({actionCreator:H0e,effect:async(e,{dispatch:t,getState:n})=>{const r=sb.get().child({namespace:"canvasCopiedToClipboardListener"}),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemCopyingCanvas"),description:J("toast.problemCopyingCanvasDesc"),status:"error"}));return}J0e(o),t(Tn({title:J("toast.canvasCopiedClipboard"),status:"success"}))}})},tve=(e,t)=>{const n=URL.createObjectURL(e),r=document.createElement("a");r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),r.remove()},nve=()=>{Te({actionCreator:q0e,effect:async(e,{dispatch:t,getState:n})=>{const r=sb.get().child({namespace:"canvasSavedToGalleryListener"}),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemDownloadingCanvas"),description:J("toast.problemDownloadingCanvasDesc"),status:"error"}));return}tve(o,"canvas.png"),t(Tn({title:J("toast.canvasDownloaded"),status:"success"}))}})},rve=()=>{Te({actionCreator:Q0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemSavingCanvas"),description:J("toast.problemSavingCanvasDesc"),status:"error"}));return}const{autoAddBoardId:s}=i.gallery,a=await t(pe.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasSentControlnetAssets")}}})).unwrap(),{image_name:l}=a;t(Qc({controlNetId:e.payload.controlNet.controlNetId,controlImage:l}))}})};var bT={exports:{}},zb={},rz={},At={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e._registerNode=e.Konva=e.glob=void 0;var t=Math.PI/180;function n(){return typeof window<"u"&&({}.toString.call(window)==="[object Window]"||{}.toString.call(window)==="[object global]")}e.glob=typeof dt<"u"?dt:typeof window<"u"?window:typeof WorkerGlobalScope<"u"?self:{},e.Konva={_global:e.glob,version:"9.2.0",isBrowser:n(),isUnminified:/param/.test((function(i){}).toString()),dblClickWindow:400,getAngle(i){return e.Konva.angleDeg?i*t:i},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 e.Konva.DD.isDragging},isDragReady(){return!!e.Konva.DD.node},releaseCanvasOnDestroy:!0,document:e.glob.document,_injectGlobal(i){e.glob.Konva=i}};const r=i=>{e.Konva[i.prototype.getClassName()]=i};e._registerNode=r,e.Konva._injectGlobal(e.Konva)})(At);var sr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Util=e.Transform=void 0;const t=At;class n{constructor(v=[1,0,0,1,0,0]){this.dirty=!1,this.m=v&&v.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 n(this.m)}copyInto(v){v.m[0]=this.m[0],v.m[1]=this.m[1],v.m[2]=this.m[2],v.m[3]=this.m[3],v.m[4]=this.m[4],v.m[5]=this.m[5]}point(v){var S=this.m;return{x:S[0]*v.x+S[2]*v.y+S[4],y:S[1]*v.x+S[3]*v.y+S[5]}}translate(v,S){return this.m[4]+=this.m[0]*v+this.m[2]*S,this.m[5]+=this.m[1]*v+this.m[3]*S,this}scale(v,S){return this.m[0]*=v,this.m[1]*=v,this.m[2]*=S,this.m[3]*=S,this}rotate(v){var S=Math.cos(v),w=Math.sin(v),x=this.m[0]*S+this.m[2]*w,C=this.m[1]*S+this.m[3]*w,A=this.m[0]*-w+this.m[2]*S,T=this.m[1]*-w+this.m[3]*S;return this.m[0]=x,this.m[1]=C,this.m[2]=A,this.m[3]=T,this}getTranslation(){return{x:this.m[4],y:this.m[5]}}skew(v,S){var w=this.m[0]+this.m[2]*S,x=this.m[1]+this.m[3]*S,C=this.m[2]+this.m[0]*v,A=this.m[3]+this.m[1]*v;return this.m[0]=w,this.m[1]=x,this.m[2]=C,this.m[3]=A,this}multiply(v){var S=this.m[0]*v.m[0]+this.m[2]*v.m[1],w=this.m[1]*v.m[0]+this.m[3]*v.m[1],x=this.m[0]*v.m[2]+this.m[2]*v.m[3],C=this.m[1]*v.m[2]+this.m[3]*v.m[3],A=this.m[0]*v.m[4]+this.m[2]*v.m[5]+this.m[4],T=this.m[1]*v.m[4]+this.m[3]*v.m[5]+this.m[5];return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=A,this.m[5]=T,this}invert(){var v=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),S=this.m[3]*v,w=-this.m[1]*v,x=-this.m[2]*v,C=this.m[0]*v,A=v*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),T=v*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);return this.m[0]=S,this.m[1]=w,this.m[2]=x,this.m[3]=C,this.m[4]=A,this.m[5]=T,this}getMatrix(){return this.m}decompose(){var v=this.m[0],S=this.m[1],w=this.m[2],x=this.m[3],C=this.m[4],A=this.m[5],T=v*x-S*w;let k={x:C,y:A,rotation:0,scaleX:0,scaleY:0,skewX:0,skewY:0};if(v!=0||S!=0){var L=Math.sqrt(v*v+S*S);k.rotation=S>0?Math.acos(v/L):-Math.acos(v/L),k.scaleX=L,k.scaleY=T/L,k.skewX=(v*w+S*x)/T,k.skewY=0}else if(w!=0||x!=0){var N=Math.sqrt(w*w+x*x);k.rotation=Math.PI/2-(x>0?Math.acos(-w/N):-Math.acos(w/N)),k.scaleX=T/N,k.scaleY=N,k.skewX=0,k.skewY=(v*w+S*x)/T}return k.rotation=e.Util._getRotation(k.rotation),k}}e.Transform=n;var r="[object Array]",i="[object Number]",o="[object String]",s="[object Boolean]",a=Math.PI/180,l=180/Math.PI,u="#",c="",d="0",f="Konva warning: ",h="Konva error: ",p="rgb(",m={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]},b=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/,_=[];const y=typeof requestAnimationFrame<"u"&&requestAnimationFrame||function(g){setTimeout(g,60)};e.Util={_isElement(g){return!!(g&&g.nodeType==1)},_isFunction(g){return!!(g&&g.constructor&&g.call&&g.apply)},_isPlainObject(g){return!!g&&g.constructor===Object},_isArray(g){return Object.prototype.toString.call(g)===r},_isNumber(g){return Object.prototype.toString.call(g)===i&&!isNaN(g)&&isFinite(g)},_isString(g){return Object.prototype.toString.call(g)===o},_isBoolean(g){return Object.prototype.toString.call(g)===s},isObject(g){return g instanceof Object},isValidSelector(g){if(typeof g!="string")return!1;var v=g[0];return v==="#"||v==="."||v===v.toUpperCase()},_sign(g){return g===0||g>0?1:-1},requestAnimFrame(g){_.push(g),_.length===1&&y(function(){const v=_;_=[],v.forEach(function(S){S()})})},createCanvasElement(){var g=document.createElement("canvas");try{g.style=g.style||{}}catch{}return g},createImageElement(){return document.createElement("img")},_isInDocument(g){for(;g=g.parentNode;)if(g==document)return!0;return!1},_urlToImage(g,v){var S=e.Util.createImageElement();S.onload=function(){v(S)},S.src=g},_rgbToHex(g,v,S){return((1<<24)+(g<<16)+(v<<8)+S).toString(16).slice(1)},_hexToRgb(g){g=g.replace(u,c);var v=parseInt(g,16);return{r:v>>16&255,g:v>>8&255,b:v&255}},getRandomColor(){for(var g=(Math.random()*16777215<<0).toString(16);g.length<6;)g=d+g;return u+g},getRGB(g){var v;return g in m?(v=m[g],{r:v[0],g:v[1],b:v[2]}):g[0]===u?this._hexToRgb(g.substring(1)):g.substr(0,4)===p?(v=b.exec(g.replace(/ /g,"")),{r:parseInt(v[1],10),g:parseInt(v[2],10),b:parseInt(v[3],10)}):{r:0,g:0,b:0}},colorToRGBA(g){return g=g||"black",e.Util._namedColorToRBA(g)||e.Util._hex3ColorToRGBA(g)||e.Util._hex4ColorToRGBA(g)||e.Util._hex6ColorToRGBA(g)||e.Util._hex8ColorToRGBA(g)||e.Util._rgbColorToRGBA(g)||e.Util._rgbaColorToRGBA(g)||e.Util._hslColorToRGBA(g)},_namedColorToRBA(g){var v=m[g.toLowerCase()];return v?{r:v[0],g:v[1],b:v[2],a:1}:null},_rgbColorToRGBA(g){if(g.indexOf("rgb(")===0){g=g.match(/rgb\(([^)]+)\)/)[1];var v=g.split(/ *, */).map(Number);return{r:v[0],g:v[1],b:v[2],a:1}}},_rgbaColorToRGBA(g){if(g.indexOf("rgba(")===0){g=g.match(/rgba\(([^)]+)\)/)[1];var v=g.split(/ *, */).map((S,w)=>S.slice(-1)==="%"?w===3?parseInt(S)/100:parseInt(S)/100*255:Number(S));return{r:v[0],g:v[1],b:v[2],a:v[3]}}},_hex8ColorToRGBA(g){if(g[0]==="#"&&g.length===9)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:parseInt(g.slice(7,9),16)/255}},_hex6ColorToRGBA(g){if(g[0]==="#"&&g.length===7)return{r:parseInt(g.slice(1,3),16),g:parseInt(g.slice(3,5),16),b:parseInt(g.slice(5,7),16),a:1}},_hex4ColorToRGBA(g){if(g[0]==="#"&&g.length===5)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:parseInt(g[4]+g[4],16)/255}},_hex3ColorToRGBA(g){if(g[0]==="#"&&g.length===4)return{r:parseInt(g[1]+g[1],16),g:parseInt(g[2]+g[2],16),b:parseInt(g[3]+g[3],16),a:1}},_hslColorToRGBA(g){if(/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.test(g)){const[v,...S]=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(g),w=Number(S[0])/360,x=Number(S[1])/100,C=Number(S[2])/100;let A,T,k;if(x===0)return k=C*255,{r:Math.round(k),g:Math.round(k),b:Math.round(k),a:1};C<.5?A=C*(1+x):A=C+x-C*x;const L=2*C-A,N=[0,0,0];for(let E=0;E<3;E++)T=w+1/3*-(E-1),T<0&&T++,T>1&&T--,6*T<1?k=L+(A-L)*6*T:2*T<1?k=A:3*T<2?k=L+(A-L)*(2/3-T)*6:k=L,N[E]=k*255;return{r:Math.round(N[0]),g:Math.round(N[1]),b:Math.round(N[2]),a:1}}},haveIntersection(g,v){return!(v.x>g.x+g.width||v.x+v.widthg.y+g.height||v.y+v.height1?(A=S,T=w,k=(S-x)*(S-x)+(w-C)*(w-C)):(A=g+N*(S-g),T=v+N*(w-v),k=(A-x)*(A-x)+(T-C)*(T-C))}return[A,T,k]},_getProjectionToLine(g,v,S){var w=e.Util.cloneObject(g),x=Number.MAX_VALUE;return v.forEach(function(C,A){if(!(!S&&A===v.length-1)){var T=v[(A+1)%v.length],k=e.Util._getProjectionToSegment(C.x,C.y,T.x,T.y,g.x,g.y),L=k[0],N=k[1],E=k[2];Ev.length){var A=v;v=g,g=A}for(w=0;w{v.width=0,v.height=0})},drawRoundedRectPath(g,v,S,w){let x=0,C=0,A=0,T=0;typeof w=="number"?x=C=A=T=Math.min(w,v/2,S/2):(x=Math.min(w[0]||0,v/2,S/2),C=Math.min(w[1]||0,v/2,S/2),T=Math.min(w[2]||0,v/2,S/2),A=Math.min(w[3]||0,v/2,S/2)),g.moveTo(x,0),g.lineTo(v-C,0),g.arc(v-C,C,C,Math.PI*3/2,0,!1),g.lineTo(v,S-T),g.arc(v-T,S-T,T,0,Math.PI/2,!1),g.lineTo(A,S),g.arc(A,S-A,A,Math.PI/2,Math.PI,!1),g.lineTo(0,x),g.arc(x,x,x,Math.PI,Math.PI*3/2,!1)}}})(sr);var Qn={},Et={},We={};Object.defineProperty(We,"__esModule",{value:!0});We.getComponentValidator=We.getBooleanValidator=We.getNumberArrayValidator=We.getFunctionValidator=We.getStringOrGradientValidator=We.getStringValidator=We.getNumberOrAutoValidator=We.getNumberOrArrayOfNumbersValidator=We.getNumberValidator=We.alphaComponent=We.RGBComponent=void 0;const gl=At,fr=sr;function ml(e){return fr.Util._isString(e)?'"'+e+'"':Object.prototype.toString.call(e)==="[object Number]"||fr.Util._isBoolean(e)?e:Object.prototype.toString.call(e)}function ive(e){return e>255?255:e<0?0:Math.round(e)}We.RGBComponent=ive;function ove(e){return e>1?1:e<1e-4?1e-4:e}We.alphaComponent=ove;function sve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isNumber(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a number.'),e}}We.getNumberValidator=sve;function ave(e){if(gl.Konva.isUnminified)return function(t,n){let r=fr.Util._isNumber(t),i=fr.Util._isArray(t)&&t.length==e;return!r&&!i&&fr.Util.warn(ml(t)+' is a not valid value for "'+n+'" attribute. The value should be a number or Array('+e+")"),t}}We.getNumberOrArrayOfNumbersValidator=ave;function lve(){if(gl.Konva.isUnminified)return function(e,t){var n=fr.Util._isNumber(e),r=e==="auto";return n||r||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a number or "auto".'),e}}We.getNumberOrAutoValidator=lve;function uve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isString(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a string.'),e}}We.getStringValidator=uve;function cve(){if(gl.Konva.isUnminified)return function(e,t){const n=fr.Util._isString(e),r=Object.prototype.toString.call(e)==="[object CanvasGradient]"||e&&e.addColorStop;return n||r||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a string or a native gradient.'),e}}We.getStringOrGradientValidator=cve;function dve(){if(gl.Konva.isUnminified)return function(e,t){return fr.Util._isFunction(e)||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a function.'),e}}We.getFunctionValidator=dve;function fve(){if(gl.Konva.isUnminified)return function(e,t){const n=Int8Array?Object.getPrototypeOf(Int8Array):null;return n&&e instanceof n||(fr.Util._isArray(e)?e.forEach(function(r){fr.Util._isNumber(r)||fr.Util.warn('"'+t+'" attribute has non numeric element '+r+". Make sure that all elements are numbers.")}):fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a array of numbers.')),e}}We.getNumberArrayValidator=fve;function hve(){if(gl.Konva.isUnminified)return function(e,t){var n=e===!0||e===!1;return n||fr.Util.warn(ml(e)+' is a not valid value for "'+t+'" attribute. The value should be a boolean.'),e}}We.getBooleanValidator=hve;function pve(e){if(gl.Konva.isUnminified)return function(t,n){return t==null||fr.Util.isObject(t)||fr.Util.warn(ml(t)+' is a not valid value for "'+n+'" attribute. The value should be an object with properties '+e),t}}We.getComponentValidator=pve;(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Factory=void 0;const t=sr,n=We;var r="get",i="set";e.Factory={addGetterSetter(o,s,a,l,u){e.Factory.addGetter(o,s,a),e.Factory.addSetter(o,s,l,u),e.Factory.addOverloadedGetterSetter(o,s)},addGetter(o,s,a){var l=r+t.Util._capitalize(s);o.prototype[l]=o.prototype[l]||function(){var u=this.attrs[s];return u===void 0?a:u}},addSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]||e.Factory.overWriteSetter(o,s,a,l)},overWriteSetter(o,s,a,l){var u=i+t.Util._capitalize(s);o.prototype[u]=function(c){return a&&c!==void 0&&c!==null&&(c=a.call(this,c,s)),this._setAttr(s,c),l&&l.call(this),this}},addComponentsGetterSetter(o,s,a,l,u){var c=a.length,d=t.Util._capitalize,f=r+d(s),h=i+d(s),p,m;o.prototype[f]=function(){var _={};for(p=0;p{this._setAttr(s+d(v),void 0)}),this._fireChangeEvent(s,y,_),u&&u.call(this),this},e.Factory.addOverloadedGetterSetter(o,s)},addOverloadedGetterSetter(o,s){var a=t.Util._capitalize(s),l=i+a,u=r+a;o.prototype[s]=function(){return arguments.length?(this[l](arguments[0]),this):this[u]()}},addDeprecatedGetterSetter(o,s,a,l){t.Util.error("Adding deprecated "+s);var u=r+t.Util._capitalize(s),c=s+" property is deprecated and will be removed soon. Look at Konva change log for more information.";o.prototype[u]=function(){t.Util.error(c);var d=this.attrs[s];return d===void 0?a:d},e.Factory.addSetter(o,s,l,function(){t.Util.error(c)}),e.Factory.addOverloadedGetterSetter(o,s)},backCompat(o,s){t.Util.each(s,function(a,l){var u=o.prototype[l],c=r+t.Util._capitalize(a),d=i+t.Util._capitalize(a);function f(){u.apply(this,arguments),t.Util.error('"'+a+'" method is deprecated and will be removed soon. Use ""'+l+'" instead.')}o.prototype[a]=f,o.prototype[c]=f,o.prototype[d]=f})},afterSetFilter(){this._filterUpToDate=!1}}})(Et);var Ns={},Ya={};Object.defineProperty(Ya,"__esModule",{value:!0});Ya.HitContext=Ya.SceneContext=Ya.Context=void 0;const iz=sr,gve=At;function mve(e){var t=[],n=e.length,r=iz.Util,i,o;for(i=0;itypeof c=="number"?Math.floor(c):c)),o+=yve+u.join(B8)+vve)):(o+=a.property,t||(o+=xve+a.val)),o+=Sve;return o}clearTrace(){this.traceArr=[]}_trace(t){var n=this.traceArr,r;n.push(t),r=n.length,r>=Eve&&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){const n=t.attrs.lineCap;n&&this.setAttr("lineCap",n)}_applyOpacity(t){var n=t.getAbsoluteOpacity();n!==1&&this.setAttr("globalAlpha",n)}_applyLineJoin(t){const n=t.attrs.lineJoin;n&&this.setAttr("lineJoin",n)}setAttr(t,n){this._context[t]=n}arc(t,n,r,i,o,s){this._context.arc(t,n,r,i,o,s)}arcTo(t,n,r,i,o){this._context.arcTo(t,n,r,i,o)}beginPath(){this._context.beginPath()}bezierCurveTo(t,n,r,i,o,s){this._context.bezierCurveTo(t,n,r,i,o,s)}clearRect(t,n,r,i){this._context.clearRect(t,n,r,i)}clip(...t){this._context.clip.apply(this._context,t)}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,s){return this._context.createRadialGradient(t,n,r,i,o,s)}drawImage(t,n,r,i,o,s,a,l,u){var c=arguments,d=this._context;c.length===3?d.drawImage(t,n,r):c.length===5?d.drawImage(t,n,r,i,o):c.length===9&&d.drawImage(t,n,r,i,o,s,a,l,u)}ellipse(t,n,r,i,o,s,a,l){this._context.ellipse(t,n,r,i,o,s,a,l)}isPointInPath(t,n,r,i){return r?this._context.isPointInPath(r,t,n,i):this._context.isPointInPath(t,n,i)}fill(...t){this._context.fill.apply(this._context,t)}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,s){this._context.setTransform(t,n,r,i,o,s)}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,s){this._context.transform(t,n,r,i,o,s)}translate(t,n){this._context.translate(t,n)}_enableTrace(){var t=this,n=z8.length,r=this.setAttr,i,o,s=function(a){var l=t[a],u;t[a]=function(){return o=mve(Array.prototype.slice.call(arguments,0)),u=l.apply(t,arguments),t._trace({method:a,args:o}),u}};for(i=0;i{i.dragStatus==="dragging"&&(r=!0)}),r},justDragged:!1,get node(){var r;return e.DD._dragElements.forEach(i=>{r=i.node}),r},_dragElements:new Map,_drag(r){const i=[];e.DD._dragElements.forEach((o,s)=>{const{node:a}=o,l=a.getStage();l.setPointersPositions(r),o.pointerId===void 0&&(o.pointerId=n.Util._getFirstPointerId(r));const u=l._changedPointerPositions.find(f=>f.id===o.pointerId);if(u){if(o.dragStatus!=="dragging"){var c=a.dragDistance(),d=Math.max(Math.abs(u.x-o.startPointerPos.x),Math.abs(u.y-o.startPointerPos.y));if(d{o.fire("dragmove",{type:"dragmove",target:o,evt:r},!0)})},_endDragBefore(r){const i=[];e.DD._dragElements.forEach(o=>{const{node:s}=o,a=s.getStage();if(r&&a.setPointersPositions(r),!a._changedPointerPositions.find(c=>c.id===o.pointerId))return;(o.dragStatus==="dragging"||o.dragStatus==="stopped")&&(e.DD.justDragged=!0,t.Konva._mouseListenClick=!1,t.Konva._touchListenClick=!1,t.Konva._pointerListenClick=!1,o.dragStatus="stopped");const u=o.node.getLayer()||o.node instanceof t.Konva.Stage&&o.node;u&&i.indexOf(u)===-1&&i.push(u)}),i.forEach(o=>{o.draw()})},_endDragAfter(r){e.DD._dragElements.forEach((i,o)=>{i.dragStatus==="stopped"&&i.node.fire("dragend",{type:"dragend",target:i.node,evt:r},!0),i.dragStatus!=="dragging"&&e.DD._dragElements.delete(o)})}},t.Konva.isBrowser&&(window.addEventListener("mouseup",e.DD._endDragBefore,!0),window.addEventListener("touchend",e.DD._endDragBefore,!0),window.addEventListener("mousemove",e.DD._drag),window.addEventListener("touchmove",e.DD._drag),window.addEventListener("mouseup",e.DD._endDragAfter,!1),window.addEventListener("touchend",e.DD._endDragAfter,!1))})(Vb);Object.defineProperty(Qn,"__esModule",{value:!0});Qn.Node=void 0;const It=sr,Bm=Et,Xy=Ns,Gu=At,jo=Vb,_r=We;var z0="absoluteOpacity",Qy="allEventListeners",La="absoluteTransform",U8="absoluteScale",Hu="canvas",Mve="Change",Nve="children",Dve="konva",n3="listening",j8="mouseenter",V8="mouseleave",G8="set",H8="Shape",U0=" ",q8="stage",Al="transform",Lve="Stage",r3="visible",$ve=["xChange.konva","yChange.konva","scaleXChange.konva","scaleYChange.konva","skewXChange.konva","skewYChange.konva","rotationChange.konva","offsetXChange.konva","offsetYChange.konva","transformsEnabledChange.konva"].join(U0);let Fve=1;class ut{constructor(t){this._id=Fve++,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===Al||t===La)&&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===Al||t===La,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(U0);this.on(i,()=>{this._clearCache(t)}),this._attachedDepsListeners.set(t,!0)}return this._getCache(t,r)}_getCanvasCache(){return this._cache.get(Hu)}_clearSelfAndDescendantCache(t){this._clearCache(t),t===La&&this.fire("absoluteTransformChange")}clearCache(){if(this._cache.has(Hu)){const{scene:t,filter:n,hit:r}=this._cache.get(Hu);It.Util.releaseCanvas(t,n,r),this._cache.delete(Hu)}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),s=n.pixelRatio,a=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,c=n.drawBorder||!1,d=n.hitCanvasPixelRatio||1;if(!i||!o){It.Util.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,a-=u,l-=u;var f=new Xy.SceneCanvas({pixelRatio:s,width:i,height:o}),h=new Xy.SceneCanvas({pixelRatio:s,width:0,height:0,willReadFrequently:!0}),p=new Xy.HitCanvas({pixelRatio:d,width:i,height:o}),m=f.getContext(),b=p.getContext();return p.isCache=!0,f.isCache=!0,this._cache.delete(Hu),this._filterUpToDate=!1,n.imageSmoothingEnabled===!1&&(f.getContext()._context.imageSmoothingEnabled=!1,h.getContext()._context.imageSmoothingEnabled=!1),m.save(),b.save(),m.translate(-a,-l),b.translate(-a,-l),this._isUnderCache=!0,this._clearSelfAndDescendantCache(z0),this._clearSelfAndDescendantCache(U8),this.drawScene(f,this),this.drawHit(p,this),this._isUnderCache=!1,m.restore(),b.restore(),c&&(m.save(),m.beginPath(),m.rect(0,0,i,o),m.closePath(),m.setAttr("strokeStyle","red"),m.setAttr("lineWidth",5),m.stroke(),m.restore()),this._cache.set(Hu,{scene:f,filter:h,hit:p,x:a,y:l}),this._requestDraw(),this}isCached(){return this._cache.has(Hu)}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,s,a,l=this.getAbsoluteTransform(n);return r.forEach(function(u){var c=l.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),{x:i,y:o,width:s-i,height:a-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(),s,a,l,u;if(t){if(!this._filterUpToDate){var c=r.pixelRatio;i.setSize(r.width/r.pixelRatio,r.height/r.pixelRatio);try{for(s=t.length,o.clear(),o.drawImage(r._canvas,0,0,r.getWidth()/c,r.getHeight()/c),a=o.getImageData(0,0,i.getWidth(),i.getHeight()),l=0;l{var n,r;if(!t)return this;for(n in t)n!==Nve&&(r=G8+It.Util._capitalize(n),It.Util._isFunction(this[r])?this[r](t[n]):this._setAttr(n,t[n]))}),this}isListening(){return this._getCache(n3,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(r3,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;jo.DD._dragElements.forEach(s=>{s.dragStatus==="dragging"&&(s.node.nodeType==="Stage"||s.node.getLayer()===r)&&(i=!0)});var o=!n&&!Gu.Konva.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,s,a;function l(u){for(i=[],o=u.length,s=0;s0&&i[0].getDepth()<=t&&l(i)}return n.nodeType!==Lve&&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(Al),this._clearSelfAndDescendantCache(La)),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 It.Transform,s=this.offset();return o.m=i.slice(),o.translate(s.x,s.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(Al);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(Al),this._clearSelfAndDescendantCache(La),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,s;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,s=0;s0?(this.parent.children.splice(t,1),this.parent.children.splice(t-1,0,this),this.parent._setChildrenIndices(),!0):!1}moveToBottom(){if(!this.parent)return It.Util.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 It.Util.warn("Node has no parent. zIndex parameter is ignored."),this;(t<0||t>=this.parent.children.length)&&It.Util.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(z0,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,s,a;t.attrs={};for(r in n)i=n[r],a=It.Util.isObject(i)&&!It.Util._isPlainObject(i)&&!It.Util._isArray(i),!a&&(o=typeof this[r]=="function"&&this[r],delete n[r],s=o?o.call(this):null,n[r]=i,s!==i&&(t.attrs[r]=i));return t.className=this.getClassName(),It.Util._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==null?void 0:t.callback;i&&delete t.callback,It.Util._urlToImage(this.toDataURL(t),function(o){n(o),i==null||i(o)})}catch(i){r(i)}})}toBlob(t){return new Promise((n,r)=>{try{const i=t==null?void 0:t.callback;i&&delete t.callback,this.toCanvas(t).toBlob(o=>{n(o),i==null||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():Gu.Konva.dragDistance}_off(t,n,r){var i=this.eventListeners[t],o,s,a;for(o=0;o=0;if(r&&!this.isDragging()){var i=!1;jo.DD._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=jo.DD._dragElements.get(this._id),r=n&&n.dragStatus==="dragging",i=n&&n.dragStatus==="ready";r?this.stopDrag():i&&jo.DD._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 It.Util.haveIntersection(r,this.getClientRect())}static create(t,n){return It.Util._isString(t)&&(t=JSON.parse(t)),this._createNode(t,n)}static _createNode(t,n){var r=ut.prototype.getClassName.call(t),i=t.children,o,s,a;n&&(t.attrs.container=n),Gu.Konva[r]||(It.Util.warn('Can not find a node with class name "'+r+'". Fallback to "Shape".'),r="Shape");const l=Gu.Konva[r];if(o=new l(t.attrs),i)for(s=i.length,a=0;a0}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(t.length===0)return this;if(t.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=Cw.Node.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=Cw.Node.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(),s=this._getCanvasCache(),a=s&&s.scene,l=i&&i.isCache;if(!this.isVisible()&&!l)return this;if(a){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(),s=this._getCanvasCache(),a=s&&s.hit;if(a){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(),s=this.clipWidth(),a=this.clipHeight(),l=this.clipFunc(),u=s&&a||l;const c=r===this;if(u){o.save();var d=this.getAbsoluteTransform(r),f=d.getMatrix();o.transform(f[0],f[1],f[2],f[3],f[4],f[5]),o.beginPath();let b;if(l)b=l.call(this,o,this);else{var h=this.clipX(),p=this.clipY();o.rect(h,p,s,a)}o.clip.apply(o,b),f=d.copy().invert().getMatrix(),o.transform(f[0],f[1],f[2],f[3],f[4],f[5])}var m=!c&&this.globalCompositeOperation()!=="source-over"&&t==="drawScene";m&&(o.save(),o._applyGlobalCompositeOperation(this)),(i=this.children)===null||i===void 0||i.forEach(function(b){b[t](n,r)}),m&&o.restore(),u&&o.restore()}getClientRect(t){var n;t=t||{};var r=t.skipTransform,i=t.relativeTo,o,s,a,l,u={x:1/0,y:1/0,width:0,height:0},c=this;(n=this.children)===null||n===void 0||n.forEach(function(m){if(m.visible()){var b=m.getClientRect({relativeTo:c,skipShadow:t.skipShadow,skipStroke:t.skipStroke});b.width===0&&b.height===0||(o===void 0?(o=b.x,s=b.y,a=b.x+b.width,l=b.y+b.height):(o=Math.min(o,b.x),s=Math.min(s,b.y),a=Math.max(a,b.x+b.width),l=Math.max(l,b.y+b.height)))}});for(var d=this.find("Shape"),f=!1,h=0;hQ.indexOf("pointer")>=0?"pointer":Q.indexOf("touch")>=0?"touch":"mouse",U=Q=>{const j=F(Q);if(j==="pointer")return i.Konva.pointerEventsEnabled&&O.pointer;if(j==="touch")return O.touch;if(j==="mouse")return O.mouse};function V(Q={}){return(Q.clipFunc||Q.clipWidth||Q.clipHeight)&&t.Util.warn("Stage does not support clipping. Please use clip for Layers or Groups."),Q}const H="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);";e.stages=[];class Y extends r.Container{constructor(j){super(V(j)),this._pointerPositions=[],this._changedPointerPositions=[],this._buildDOM(),this._bindContentEvents(),e.stages.push(this),this.on("widthChange.konva heightChange.konva",this._resizeDOM),this.on("visibleChange.konva",this._checkVisibility),this.on("clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva",()=>{V(this.attrs)}),this._checkVisibility()}_validateAdd(j){const K=j.getType()==="Layer",te=j.getType()==="FastLayer";K||te||t.Util.throw("You may only add layers to the stage.")}_checkVisibility(){if(!this.content)return;const j=this.visible()?"":"none";this.content.style.display=j}setContainer(j){if(typeof j===c){if(j.charAt(0)==="."){var K=j.slice(1);j=document.getElementsByClassName(K)[0]}else{var te;j.charAt(0)!=="#"?te=j:te=j.slice(1),j=document.getElementById(te)}if(!j)throw"Can not find container in document with id "+te}return this._setAttr("container",j),this.content&&(this.content.parentElement&&this.content.parentElement.removeChild(this.content),j.appendChild(this.content)),this}shouldDrawHit(){return!0}clear(){var j=this.children,K=j.length,te;for(te=0;te-1&&e.stages.splice(K,1),t.Util.releaseCanvas(this.bufferCanvas._canvas,this.bufferHitCanvas._canvas),this}getPointerPosition(){const j=this._pointerPositions[0]||this._changedPointerPositions[0];return j?{x:j.x,y:j.y}:(t.Util.warn(H),null)}_getPointerById(j){return this._pointerPositions.find(K=>K.id===j)}getPointersPositions(){return this._pointerPositions}getStage(){return this}getContent(){return this.content}_toKonvaCanvas(j){j=j||{},j.x=j.x||0,j.y=j.y||0,j.width=j.width||this.width(),j.height=j.height||this.height();var K=new o.SceneCanvas({width:j.width,height:j.height,pixelRatio:j.pixelRatio||1}),te=K.getContext()._context,oe=this.children;return(j.x||j.y)&&te.translate(-1*j.x,-1*j.y),oe.forEach(function(me){if(me.isVisible()){var le=me._toKonvaCanvas(j);te.drawImage(le._canvas,j.x,j.y,le.getWidth()/le.getPixelRatio(),le.getHeight()/le.getPixelRatio())}}),K}getIntersection(j){if(!j)return null;var K=this.children,te=K.length,oe=te-1,me;for(me=oe;me>=0;me--){const le=K[me].getIntersection(j);if(le)return le}return null}_resizeDOM(){var j=this.width(),K=this.height();this.content&&(this.content.style.width=j+d,this.content.style.height=K+d),this.bufferCanvas.setSize(j,K),this.bufferHitCanvas.setSize(j,K),this.children.forEach(te=>{te.setSize({width:j,height:K}),te.draw()})}add(j,...K){if(arguments.length>1){for(var te=0;teR&&t.Util.warn("The stage has "+oe+" 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."),j.setSize({width:this.width(),height:this.height()}),j.draw(),i.Konva.isBrowser&&this.content.appendChild(j.canvas._canvas),this}getParent(){return null}getLayer(){return null}hasPointerCapture(j){return l.hasPointerCapture(j,this)}setPointerCapture(j){l.setPointerCapture(j,this)}releaseCapture(j){l.releaseCapture(j,this)}getLayers(){return this.children}_bindContentEvents(){i.Konva.isBrowser&&I.forEach(([j,K])=>{this.content.addEventListener(j,te=>{this[K](te)},{passive:!1})})}_pointerenter(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerenter,{evt:j,target:this,currentTarget:this})}_pointerover(j){this.setPointersPositions(j);const K=U(j.type);this._fire(K.pointerover,{evt:j,target:this,currentTarget:this})}_getTargetShape(j){let K=this[j+"targetShape"];return K&&!K.getStage()&&(K=null),K}_pointerleave(j){const K=U(j.type),te=F(j.type);if(K){this.setPointersPositions(j);var oe=this._getTargetShape(te),me=!s.DD.isDragging||i.Konva.hitOnDragEnabled;oe&&me?(oe._fireAndBubble(K.pointerout,{evt:j}),oe._fireAndBubble(K.pointerleave,{evt:j}),this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this[te+"targetShape"]=null):me&&(this._fire(K.pointerleave,{evt:j,target:this,currentTarget:this}),this._fire(K.pointerout,{evt:j,target:this,currentTarget:this})),this.pointerPos=void 0,this._pointerPositions=[]}}_pointerdown(j){const K=U(j.type),te=F(j.type);if(K){this.setPointersPositions(j);var oe=!1;this._changedPointerPositions.forEach(me=>{var le=this.getIntersection(me);if(s.DD.justDragged=!1,i.Konva["_"+te+"ListenClick"]=!0,!(le&&le.isListening()))return;i.Konva.capturePointerEventsEnabled&&le.setPointerCapture(me.id),this[te+"ClickStartShape"]=le,le._fireAndBubble(K.pointerdown,{evt:j,pointerId:me.id}),oe=!0;const nt=j.type.indexOf("touch")>=0;le.preventDefault()&&j.cancelable&&nt&&j.preventDefault()}),oe||this._fire(K.pointerdown,{evt:j,target:this,currentTarget:this,pointerId:this._pointerPositions[0].id})}}_pointermove(j){const K=U(j.type),te=F(j.type);if(!K)return;s.DD.isDragging&&s.DD.node.preventDefault()&&j.cancelable&&j.preventDefault(),this.setPointersPositions(j);var oe=!s.DD.isDragging||i.Konva.hitOnDragEnabled;if(!oe)return;var me={};let le=!1;var ht=this._getTargetShape(te);this._changedPointerPositions.forEach(nt=>{const $e=l.getCapturedShape(nt.id)||this.getIntersection(nt),ct=nt.id,Pe={evt:j,pointerId:ct};var qt=ht!==$e;if(qt&&ht&&(ht._fireAndBubble(K.pointerout,Object.assign({},Pe),$e),ht._fireAndBubble(K.pointerleave,Object.assign({},Pe),$e)),$e){if(me[$e._id])return;me[$e._id]=!0}$e&&$e.isListening()?(le=!0,qt&&($e._fireAndBubble(K.pointerover,Object.assign({},Pe),ht),$e._fireAndBubble(K.pointerenter,Object.assign({},Pe),ht),this[te+"targetShape"]=$e),$e._fireAndBubble(K.pointermove,Object.assign({},Pe))):ht&&(this._fire(K.pointerover,{evt:j,target:this,currentTarget:this,pointerId:ct}),this[te+"targetShape"]=null)}),le||this._fire(K.pointermove,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id})}_pointerup(j){const K=U(j.type),te=F(j.type);if(!K)return;this.setPointersPositions(j);const oe=this[te+"ClickStartShape"],me=this[te+"ClickEndShape"];var le={};let ht=!1;this._changedPointerPositions.forEach(nt=>{const $e=l.getCapturedShape(nt.id)||this.getIntersection(nt);if($e){if($e.releaseCapture(nt.id),le[$e._id])return;le[$e._id]=!0}const ct=nt.id,Pe={evt:j,pointerId:ct};let qt=!1;i.Konva["_"+te+"InDblClickWindow"]?(qt=!0,clearTimeout(this[te+"DblTimeout"])):s.DD.justDragged||(i.Konva["_"+te+"InDblClickWindow"]=!0,clearTimeout(this[te+"DblTimeout"])),this[te+"DblTimeout"]=setTimeout(function(){i.Konva["_"+te+"InDblClickWindow"]=!1},i.Konva.dblClickWindow),$e&&$e.isListening()?(ht=!0,this[te+"ClickEndShape"]=$e,$e._fireAndBubble(K.pointerup,Object.assign({},Pe)),i.Konva["_"+te+"ListenClick"]&&oe&&oe===$e&&($e._fireAndBubble(K.pointerclick,Object.assign({},Pe)),qt&&me&&me===$e&&$e._fireAndBubble(K.pointerdblclick,Object.assign({},Pe)))):(this[te+"ClickEndShape"]=null,i.Konva["_"+te+"ListenClick"]&&this._fire(K.pointerclick,{evt:j,target:this,currentTarget:this,pointerId:ct}),qt&&this._fire(K.pointerdblclick,{evt:j,target:this,currentTarget:this,pointerId:ct}))}),ht||this._fire(K.pointerup,{evt:j,target:this,currentTarget:this,pointerId:this._changedPointerPositions[0].id}),i.Konva["_"+te+"ListenClick"]=!1,j.cancelable&&te!=="touch"&&j.preventDefault()}_contextmenu(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(L,{evt:j}):this._fire(L,{evt:j,target:this,currentTarget:this})}_wheel(j){this.setPointersPositions(j);var K=this.getIntersection(this.getPointerPosition());K&&K.isListening()?K._fireAndBubble(B,{evt:j}):this._fire(B,{evt:j,target:this,currentTarget:this})}_pointercancel(j){this.setPointersPositions(j);const K=l.getCapturedShape(j.pointerId)||this.getIntersection(this.getPointerPosition());K&&K._fireAndBubble(S,l.createEvent(j)),l.releaseCapture(j.pointerId)}_lostpointercapture(j){l.releaseCapture(j.pointerId)}setPointersPositions(j){var K=this._getContentPosition(),te=null,oe=null;j=j||window.event,j.touches!==void 0?(this._pointerPositions=[],this._changedPointerPositions=[],Array.prototype.forEach.call(j.touches,me=>{this._pointerPositions.push({id:me.identifier,x:(me.clientX-K.left)/K.scaleX,y:(me.clientY-K.top)/K.scaleY})}),Array.prototype.forEach.call(j.changedTouches||j.touches,me=>{this._changedPointerPositions.push({id:me.identifier,x:(me.clientX-K.left)/K.scaleX,y:(me.clientY-K.top)/K.scaleY})})):(te=(j.clientX-K.left)/K.scaleX,oe=(j.clientY-K.top)/K.scaleY,this.pointerPos={x:te,y:oe},this._pointerPositions=[{x:te,y:oe,id:t.Util._getFirstPointerId(j)}],this._changedPointerPositions=[{x:te,y:oe,id:t.Util._getFirstPointerId(j)}])}_setPointerPosition(j){t.Util.warn('Method _setPointerPosition is deprecated. Use "stage.setPointersPositions(event)" instead.'),this.setPointersPositions(j)}_getContentPosition(){if(!this.content||!this.content.getBoundingClientRect)return{top:0,left:0,scaleX:1,scaleY:1};var j=this.content.getBoundingClientRect();return{top:j.top,left:j.left,scaleX:j.width/this.content.clientWidth||1,scaleY:j.height/this.content.clientHeight||1}}_buildDOM(){if(this.bufferCanvas=new o.SceneCanvas({width:this.width(),height:this.height()}),this.bufferHitCanvas=new o.HitCanvas({pixelRatio:1,width:this.width(),height:this.height()}),!!i.Konva.isBrowser){var j=this.container();if(!j)throw"Stage has no container. A container is required.";j.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"),j.appendChild(this.content),this._resizeDOM()}}cache(){return t.Util.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(j){j.batchDraw()}),this}}e.Stage=Y,Y.prototype.nodeType=u,(0,a._registerNode)(Y),n.Factory.addGetterSetter(Y,"container")})(az);var zm={},jr={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.shapes=void 0;const t=At,n=sr,r=Et,i=Qn,o=We,s=At,a=ko;var l="hasShadow",u="shadowRGBA",c="patternImage",d="linearGradient",f="radialGradient";let h;function p(){return h||(h=n.Util.createCanvasElement().getContext("2d"),h)}e.shapes={};function m(A){const T=this.attrs.fillRule;T?A.fill(T):A.fill()}function b(A){A.stroke()}function _(A){A.fill()}function y(A){A.stroke()}function g(){this._clearCache(l)}function v(){this._clearCache(u)}function S(){this._clearCache(c)}function w(){this._clearCache(d)}function x(){this._clearCache(f)}class C extends i.Node{constructor(T){super(T);let k;for(;k=n.Util.getRandomColor(),!(k&&!(k in e.shapes)););this.colorKey=k,e.shapes[k]=this}getContext(){return n.Util.warn("shape.getContext() method is deprecated. Please do not use it."),this.getLayer().getContext()}getCanvas(){return n.Util.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(l,this._hasShadow)}_hasShadow(){return this.shadowEnabled()&&this.shadowOpacity()!==0&&!!(this.shadowColor()||this.shadowBlur()||this.shadowOffsetX()||this.shadowOffsetY())}_getFillPattern(){return this._getCache(c,this.__getFillPattern)}__getFillPattern(){if(this.fillPatternImage()){var T=p();const k=T.createPattern(this.fillPatternImage(),this.fillPatternRepeat()||"repeat");if(k&&k.setTransform){const L=new n.Transform;L.translate(this.fillPatternX(),this.fillPatternY()),L.rotate(t.Konva.getAngle(this.fillPatternRotation())),L.scale(this.fillPatternScaleX(),this.fillPatternScaleY()),L.translate(-1*this.fillPatternOffsetX(),-1*this.fillPatternOffsetY());const N=L.getMatrix(),E=typeof DOMMatrix>"u"?{a:N[0],b:N[1],c:N[2],d:N[3],e:N[4],f:N[5]}:new DOMMatrix(N);k.setTransform(E)}return k}}_getLinearGradient(){return this._getCache(d,this.__getLinearGradient)}__getLinearGradient(){var T=this.fillLinearGradientColorStops();if(T){for(var k=p(),L=this.fillLinearGradientStartPoint(),N=this.fillLinearGradientEndPoint(),E=k.createLinearGradient(L.x,L.y,N.x,N.y),P=0;Pthis.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 k=this.getStage(),L=k.bufferHitCanvas,N;return L.getContext().clear(),this.drawHit(L,null,!0),N=L.context.getImageData(Math.round(T.x),Math.round(T.y),1,1).data,N[3]>0}destroy(){return i.Node.prototype.destroy.call(this),delete e.shapes[this.colorKey],delete this.colorKey,this}_useBufferCanvas(T){var k;if(!this.getStage()||!((k=this.attrs.perfectDrawEnabled)!==null&&k!==void 0?k:!0))return!1;const N=T||this.hasFill(),E=this.hasStroke(),P=this.getAbsoluteOpacity()!==1;if(N&&E&&P)return!0;const D=this.hasShadow(),B=this.shadowForStrokeEnabled();return!!(N&&E&&D&&B)}setStrokeHitEnabled(T){n.Util.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 k=T.skipTransform,L=T.relativeTo,N=this.getSelfRect(),P=!T.skipStroke&&this.hasStroke()&&this.strokeWidth()||0,D=N.width+P,B=N.height+P,R=!T.skipShadow&&this.hasShadow(),I=R?this.shadowOffsetX():0,O=R?this.shadowOffsetY():0,F=D+Math.abs(I),U=B+Math.abs(O),V=R&&this.shadowBlur()||0,H=F+V*2,Y=U+V*2,Q={width:H,height:Y,x:-(P/2+V)+Math.min(I,0)+N.x,y:-(P/2+V)+Math.min(O,0)+N.y};return k?Q:this._transformedRect(Q,L)}drawScene(T,k){var L=this.getLayer(),N=T||L.getCanvas(),E=N.getContext(),P=this._getCanvasCache(),D=this.getSceneFunc(),B=this.hasShadow(),R,I,O,F=N.isCache,U=k===this;if(!this.isVisible()&&!U)return this;if(P){E.save();var V=this.getAbsoluteTransform(k).getMatrix();return E.transform(V[0],V[1],V[2],V[3],V[4],V[5]),this._drawCachedSceneCanvas(E),E.restore(),this}if(!D)return this;if(E.save(),this._useBufferCanvas()&&!F){R=this.getStage(),I=R.bufferCanvas,O=I.getContext(),O.clear(),O.save(),O._applyLineJoin(this);var H=this.getAbsoluteTransform(k).getMatrix();O.transform(H[0],H[1],H[2],H[3],H[4],H[5]),D.call(this,O,this),O.restore();var Y=I.pixelRatio;B&&E._applyShadow(this),E._applyOpacity(this),E._applyGlobalCompositeOperation(this),E.drawImage(I._canvas,0,0,I.width/Y,I.height/Y)}else{if(E._applyLineJoin(this),!U){var H=this.getAbsoluteTransform(k).getMatrix();E.transform(H[0],H[1],H[2],H[3],H[4],H[5]),E._applyOpacity(this),E._applyGlobalCompositeOperation(this)}B&&E._applyShadow(this),D.call(this,E,this)}return E.restore(),this}drawHit(T,k,L=!1){if(!this.shouldDrawHit(k,L))return this;var N=this.getLayer(),E=T||N.hitCanvas,P=E&&E.getContext(),D=this.hitFunc()||this.sceneFunc(),B=this._getCanvasCache(),R=B&&B.hit;if(this.colorKey||n.Util.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()"),R){P.save();var I=this.getAbsoluteTransform(k).getMatrix();return P.transform(I[0],I[1],I[2],I[3],I[4],I[5]),this._drawCachedHitCanvas(P),P.restore(),this}if(!D)return this;if(P.save(),P._applyLineJoin(this),!(this===k)){var F=this.getAbsoluteTransform(k).getMatrix();P.transform(F[0],F[1],F[2],F[3],F[4],F[5])}return D.call(this,P,this),P.restore(),this}drawHitFromCache(T=0){var k=this._getCanvasCache(),L=this._getCachedSceneCanvas(),N=k.hit,E=N.getContext(),P=N.getWidth(),D=N.getHeight(),B,R,I,O,F,U;E.clear(),E.drawImage(L._canvas,0,0,P,D);try{for(B=E.getImageData(0,0,P,D),R=B.data,I=R.length,O=n.Util._hexToRgb(this.colorKey),F=0;FT?(R[F]=O.r,R[F+1]=O.g,R[F+2]=O.b,R[F+3]=255):R[F+3]=0;E.putImageData(B,0,0)}catch(V){n.Util.error("Unable to draw hit graph from cached scene canvas. "+V.message)}return this}hasPointerCapture(T){return a.hasPointerCapture(T,this)}setPointerCapture(T){a.setPointerCapture(T,this)}releaseCapture(T){a.releaseCapture(T,this)}}e.Shape=C,C.prototype._fillFunc=m,C.prototype._strokeFunc=b,C.prototype._fillFuncHit=_,C.prototype._strokeFuncHit=y,C.prototype._centroid=!1,C.prototype.nodeType="Shape",(0,s._registerNode)(C),C.prototype.eventListeners={},C.prototype.on.call(C.prototype,"shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",g),C.prototype.on.call(C.prototype,"shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva",v),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva",S),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva",w),C.prototype.on.call(C.prototype,"fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva",x),r.Factory.addGetterSetter(C,"stroke",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(C,"strokeWidth",2,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillAfterStrokeEnabled",!1),r.Factory.addGetterSetter(C,"hitStrokeWidth","auto",(0,o.getNumberOrAutoValidator)()),r.Factory.addGetterSetter(C,"strokeHitEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"perfectDrawEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"shadowForStrokeEnabled",!0,(0,o.getBooleanValidator)()),r.Factory.addGetterSetter(C,"lineJoin"),r.Factory.addGetterSetter(C,"lineCap"),r.Factory.addGetterSetter(C,"sceneFunc"),r.Factory.addGetterSetter(C,"hitFunc"),r.Factory.addGetterSetter(C,"dash"),r.Factory.addGetterSetter(C,"dashOffset",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowColor",void 0,(0,o.getStringValidator)()),r.Factory.addGetterSetter(C,"shadowBlur",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowOpacity",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"shadowOffset",["x","y"]),r.Factory.addGetterSetter(C,"shadowOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"shadowOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternImage"),r.Factory.addGetterSetter(C,"fill",void 0,(0,o.getStringOrGradientValidator)()),r.Factory.addGetterSetter(C,"fillPatternX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternY",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillLinearGradientColorStops"),r.Factory.addGetterSetter(C,"strokeLinearGradientColorStops"),r.Factory.addGetterSetter(C,"fillRadialGradientStartRadius",0),r.Factory.addGetterSetter(C,"fillRadialGradientEndRadius",0),r.Factory.addGetterSetter(C,"fillRadialGradientColorStops"),r.Factory.addGetterSetter(C,"fillPatternRepeat","repeat"),r.Factory.addGetterSetter(C,"fillEnabled",!0),r.Factory.addGetterSetter(C,"strokeEnabled",!0),r.Factory.addGetterSetter(C,"shadowEnabled",!0),r.Factory.addGetterSetter(C,"dashEnabled",!0),r.Factory.addGetterSetter(C,"strokeScaleEnabled",!0),r.Factory.addGetterSetter(C,"fillPriority","color"),r.Factory.addComponentsGetterSetter(C,"fillPatternOffset",["x","y"]),r.Factory.addGetterSetter(C,"fillPatternOffsetX",0,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternOffsetY",0,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"fillPatternScale",["x","y"]),r.Factory.addGetterSetter(C,"fillPatternScaleX",1,(0,o.getNumberValidator)()),r.Factory.addGetterSetter(C,"fillPatternScaleY",1,(0,o.getNumberValidator)()),r.Factory.addComponentsGetterSetter(C,"fillLinearGradientStartPoint",["x","y"]),r.Factory.addComponentsGetterSetter(C,"strokeLinearGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillLinearGradientStartPointX",0),r.Factory.addGetterSetter(C,"strokeLinearGradientStartPointX",0),r.Factory.addGetterSetter(C,"fillLinearGradientStartPointY",0),r.Factory.addGetterSetter(C,"strokeLinearGradientStartPointY",0),r.Factory.addComponentsGetterSetter(C,"fillLinearGradientEndPoint",["x","y"]),r.Factory.addComponentsGetterSetter(C,"strokeLinearGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillLinearGradientEndPointX",0),r.Factory.addGetterSetter(C,"strokeLinearGradientEndPointX",0),r.Factory.addGetterSetter(C,"fillLinearGradientEndPointY",0),r.Factory.addGetterSetter(C,"strokeLinearGradientEndPointY",0),r.Factory.addComponentsGetterSetter(C,"fillRadialGradientStartPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillRadialGradientStartPointX",0),r.Factory.addGetterSetter(C,"fillRadialGradientStartPointY",0),r.Factory.addComponentsGetterSetter(C,"fillRadialGradientEndPoint",["x","y"]),r.Factory.addGetterSetter(C,"fillRadialGradientEndPointX",0),r.Factory.addGetterSetter(C,"fillRadialGradientEndPointY",0),r.Factory.addGetterSetter(C,"fillPatternRotation",0),r.Factory.addGetterSetter(C,"fillRule",void 0,(0,o.getStringValidator)()),r.Factory.backCompat(C,{dashArray:"dash",getDashArray:"getDash",setDashArray:"getDash",drawFunc:"sceneFunc",getDrawFunc:"getSceneFunc",setDrawFunc:"setSceneFunc",drawHitFunc:"hitFunc",getDrawHitFunc:"getHitFunc",setDrawHitFunc:"setHitFunc"})})(jr);Object.defineProperty(zm,"__esModule",{value:!0});zm.Layer=void 0;const Oa=sr,Ew=Yc,xd=Qn,wT=Et,W8=Ns,Vve=We,Gve=jr,Hve=At;var qve="#",Wve="beforeDraw",Kve="draw",cz=[{x:0,y:0},{x:-1,y:-1},{x:1,y:-1},{x:1,y:1},{x:-1,y:1}],Xve=cz.length;class fh extends Ew.Container{constructor(t){super(t),this.canvas=new W8.SceneCanvas,this.hitCanvas=new W8.HitCanvas({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(Wve,{node:this}),this.clearBeforeDraw()&&i.getContext().clear(),Ew.Container.prototype.drawScene.call(this,i,n),this._fire(Kve,{node:this}),this}drawHit(t,n){var r=this.getLayer(),i=t||r&&r.hitCanvas;return r&&r.clearBeforeDraw()&&r.getHitCanvas().getContext().clear(),Ew.Container.prototype.drawHit.call(this,i,n),this}enableHitGraph(){return this.hitGraphEnabled(!0),this}disableHitGraph(){return this.hitGraphEnabled(!1),this}setHitGraphEnabled(t){Oa.Util.warn("hitGraphEnabled method is deprecated. Please use layer.listening() instead."),this.listening(t)}getHitGraphEnabled(t){return Oa.Util.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 Oa.Util.releaseCanvas(this.getNativeCanvasElement(),this.getHitCanvas()._canvas),super.destroy()}}zm.Layer=fh;fh.prototype.nodeType="Layer";(0,Hve._registerNode)(fh);wT.Factory.addGetterSetter(fh,"imageSmoothingEnabled",!0);wT.Factory.addGetterSetter(fh,"clearBeforeDraw",!0);wT.Factory.addGetterSetter(fh,"hitGraphEnabled",!0,(0,Vve.getBooleanValidator)());var Hb={};Object.defineProperty(Hb,"__esModule",{value:!0});Hb.FastLayer=void 0;const Qve=sr,Yve=zm,Zve=At;class xT extends Yve.Layer{constructor(t){super(t),this.listening(!1),Qve.Util.warn('Konva.Fast layer is deprecated. Please use "new Konva.Layer({ listening: false })" instead.')}}Hb.FastLayer=xT;xT.prototype.nodeType="FastLayer";(0,Zve._registerNode)(xT);var hh={};Object.defineProperty(hh,"__esModule",{value:!0});hh.Group=void 0;const Jve=sr,e1e=Yc,t1e=At;class CT extends e1e.Container{_validateAdd(t){var n=t.getType();n!=="Group"&&n!=="Shape"&&Jve.Util.throw("You may only add groups and shapes to groups.")}}hh.Group=CT;CT.prototype.nodeType="Group";(0,t1e._registerNode)(CT);var ph={};Object.defineProperty(ph,"__esModule",{value:!0});ph.Animation=void 0;const Tw=At,K8=sr;var Aw=function(){return Tw.glob.performance&&Tw.glob.performance.now?function(){return Tw.glob.performance.now()}:function(){return new Date().getTime()}}();class na{constructor(t,n){this.id=na.animIdCounter++,this.frame={time:0,timeDiff:0,lastTime:Aw(),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():p<0?this.yoyo?(this._time=0,this.play()):this.reset():(this._time=p,this.update())}getTime(){return this._time}setPosition(p){this.prevPos=this._pos,this.propFunc(p),this._pos=p}getPosition(p){return p===void 0&&(p=this._time),this.func(p,this.begin,this._change,this.duration)}play(){this.state=a,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onPlay")}reverse(){this.state=l,this._time=this.duration-this._time,this._startTime=this.getTimer()-this._time,this.onEnterFrame(),this.fire("onReverse")}seek(p){this.pause(),this._time=p,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 p=this.getTimer()-this._startTime;this.state===a?this.setTime(p):this.state===l&&this.setTime(this.duration-p)}pause(){this.state=s,this.fire("onPause")}getTimer(){return new Date().getTime()}}class f{constructor(p){var m=this,b=p.node,_=b._id,y,g=p.easing||e.Easings.Linear,v=!!p.yoyo,S;typeof p.duration>"u"?y=.3:p.duration===0?y=.001:y=p.duration,this.node=b,this._id=u++;var w=b.getLayer()||(b instanceof i.Konva.Stage?b.getLayers():null);w||t.Util.error("Tween constructor have `node` that is not in a layer. Please add node into layer first."),this.anim=new n.Animation(function(){m.tween.onEnterFrame()},w),this.tween=new d(S,function(x){m._tweenFunc(x)},g,0,1,y*1e3,v),this._addListeners(),f.attrs[_]||(f.attrs[_]={}),f.attrs[_][this._id]||(f.attrs[_][this._id]={}),f.tweens[_]||(f.tweens[_]={});for(S in p)o[S]===void 0&&this._addAttr(S,p[S]);this.reset(),this.onFinish=p.onFinish,this.onReset=p.onReset,this.onUpdate=p.onUpdate}_addAttr(p,m){var b=this.node,_=b._id,y,g,v,S,w,x,C,A;if(v=f.tweens[_][p],v&&delete f.attrs[_][v][p],y=b.getAttr(p),t.Util._isArray(m))if(g=[],w=Math.max(m.length,y.length),p==="points"&&m.length!==y.length&&(m.length>y.length?(C=y,y=t.Util._prepareArrayForTween(y,m,b.closed())):(x=m,m=t.Util._prepareArrayForTween(m,y,b.closed()))),p.indexOf("fill")===0)for(S=0;S{this.anim.start()},this.tween.onReverse=()=>{this.anim.start()},this.tween.onPause=()=>{this.anim.stop()},this.tween.onFinish=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueEnd&&p.setAttr("points",m.points.trueEnd),this.onFinish&&this.onFinish.call(this)},this.tween.onReset=()=>{var p=this.node,m=f.attrs[p._id][this._id];m.points&&m.points.trueStart&&p.points(m.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(p){return this.tween.seek(p*1e3),this}pause(){return this.tween.pause(),this}finish(){return this.tween.finish(),this}destroy(){var p=this.node._id,m=this._id,b=f.tweens[p],_;this.pause();for(_ in b)delete f.tweens[p][_];delete f.attrs[p][m]}}e.Tween=f,f.attrs={},f.tweens={},r.Node.prototype.to=function(h){var p=h.onFinish;h.node=this,h.onFinish=function(){this.destroy(),p&&p()};var m=new f(h);m.play()},e.Easings={BackEaseIn(h,p,m,b){var _=1.70158;return m*(h/=b)*h*((_+1)*h-_)+p},BackEaseOut(h,p,m,b){var _=1.70158;return m*((h=h/b-1)*h*((_+1)*h+_)+1)+p},BackEaseInOut(h,p,m,b){var _=1.70158;return(h/=b/2)<1?m/2*(h*h*(((_*=1.525)+1)*h-_))+p:m/2*((h-=2)*h*(((_*=1.525)+1)*h+_)+2)+p},ElasticEaseIn(h,p,m,b,_,y){var g=0;return h===0?p:(h/=b)===1?p+m:(y||(y=b*.3),!_||_0?t:n),c=s*n,d=a*(a>0?t:n),f=l*(l>0?n:t);return{x:u,y:r?-1*f:d,width:c-u,height:f-d}}}qb.Arc=yl;yl.prototype._centroid=!0;yl.prototype.className="Arc";yl.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,r1e._registerNode)(yl);Wb.Factory.addGetterSetter(yl,"innerRadius",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"outerRadius",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"angle",0,(0,Kb.getNumberValidator)());Wb.Factory.addGetterSetter(yl,"clockwise",!1,(0,Kb.getBooleanValidator)());var Xb={},Um={};Object.defineProperty(Um,"__esModule",{value:!0});Um.Line=void 0;const Qb=Et,i1e=jr,fz=We,o1e=At;function i3(e,t,n,r,i,o,s){var a=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=s*a/(a+l),c=s*l/(a+l),d=n-u*(i-e),f=r-u*(o-t),h=n+c*(i-e),p=r+c*(o-t);return[d,f,h,p]}function Q8(e,t){var n=e.length,r=[],i,o;for(i=2;i4){for(a=this.getTensionPoints(),l=a.length,u=o?0:4,o||t.quadraticCurveTo(a[0],a[1],a[2],a[3]);u{let u,c,d;u=l/2,c=0;for(let h=0;h<20;h++)d=u*e.tValues[20][h]+u,c+=e.cValues[20][h]*r(s,a,d);return u*c};e.getCubicArcLength=t;const n=(s,a,l)=>{l===void 0&&(l=1);const u=s[0]-2*s[1]+s[2],c=a[0]-2*a[1]+a[2],d=2*s[1]-2*s[0],f=2*a[1]-2*a[0],h=4*(u*u+c*c),p=4*(u*d+c*f),m=d*d+f*f;if(h===0)return l*Math.sqrt(Math.pow(s[2]-s[0],2)+Math.pow(a[2]-a[0],2));const b=p/(2*h),_=m/h,y=l+b,g=_-b*b,v=y*y+g>0?Math.sqrt(y*y+g):0,S=b*b+g>0?Math.sqrt(b*b+g):0,w=b+Math.sqrt(b*b+g)!==0?g*Math.log(Math.abs((y+v)/(b+S))):0;return Math.sqrt(h)/2*(y*v-b*S+w)};e.getQuadraticArcLength=n;function r(s,a,l){const u=i(1,l,s),c=i(1,l,a),d=u*u+c*c;return Math.sqrt(d)}const i=(s,a,l)=>{const u=l.length-1;let c,d;if(u===0)return 0;if(s===0){d=0;for(let f=0;f<=u;f++)d+=e.binomialCoefficients[u][f]*Math.pow(1-a,u-f)*Math.pow(a,f)*l[f];return d}else{c=new Array(u);for(let f=0;f{let u=1,c=s/a,d=(s-l(c))/a,f=0;for(;u>.001;){const h=l(c+d),p=Math.abs(s-h)/a;if(p500)break}return c};e.t2length=o})(hz);Object.defineProperty(gh,"__esModule",{value:!0});gh.Path=void 0;const s1e=Et,a1e=jr,l1e=At,Cd=hz;class Dr extends a1e.Shape{constructor(t){super(t),this.dataArray=[],this.pathLength=0,this._readDataAttribute(),this.on("dataChange.konva",function(){this._readDataAttribute()})}_readDataAttribute(){this.dataArray=Dr.parsePathData(this.data()),this.pathLength=Dr.getPathLength(this.dataArray)}_sceneFunc(t){var n=this.dataArray;t.beginPath();for(var r=!1,i=0;ic?u:c,b=u>c?1:u/c,_=u>c?c/u:1;t.translate(a,l),t.rotate(h),t.scale(b,_),t.arc(0,0,m,d,d+f,1-p),t.scale(1/b,1/_),t.rotate(-h),t.translate(-a,-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 c=u.points[4],d=u.points[5],f=u.points[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;p-=h){const m=Dr.getPointOnEllipticalArc(u.points[0],u.points[1],u.points[2],u.points[3],p,0);t.push(m.x,m.y)}else for(let p=c+h;pn[i].pathLength;)t-=n[i].pathLength,++i;if(i===o)return r=n[i-1].points.slice(-2),{x:r[0],y:r[1]};if(t<.01)return r=n[i].points.slice(0,2),{x:r[0],y:r[1]};var s=n[i],a=s.points;switch(s.command){case"L":return Dr.getPointOnLine(t,s.start.x,s.start.y,a[0],a[1]);case"C":return Dr.getPointOnCubicBezier((0,Cd.t2length)(t,Dr.getPathLength(n),m=>(0,Cd.getCubicArcLength)([s.start.x,a[0],a[2],a[4]],[s.start.y,a[1],a[3],a[5]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3],a[4],a[5]);case"Q":return Dr.getPointOnQuadraticBezier((0,Cd.t2length)(t,Dr.getPathLength(n),m=>(0,Cd.getQuadraticArcLength)([s.start.x,a[0],a[2]],[s.start.y,a[1],a[3]],m)),s.start.x,s.start.y,a[0],a[1],a[2],a[3]);case"A":var l=a[0],u=a[1],c=a[2],d=a[3],f=a[4],h=a[5],p=a[6];return f+=h*t/s.pathLength,Dr.getPointOnEllipticalArc(l,u,c,d,f,p)}return null}static getPointOnLine(t,n,r,i,o,s,a){s===void 0&&(s=n),a===void 0&&(a=r);var l=(o-r)/(i-n+1e-8),u=Math.sqrt(t*t/(1+l*l));i0&&!isNaN(p[0]);){var y=null,g=[],v=l,S=u,w,x,C,A,T,k,L,N,E,P;switch(h){case"l":l+=p.shift(),u+=p.shift(),y="L",g.push(l,u);break;case"L":l=p.shift(),u=p.shift(),g.push(l,u);break;case"m":var D=p.shift(),B=p.shift();if(l+=D,u+=B,y="M",s.length>2&&s[s.length-1].command==="z"){for(var R=s.length-2;R>=0;R--)if(s[R].command==="M"){l=s[R].points[0]+D,u=s[R].points[1]+B;break}}g.push(l,u),h="l";break;case"M":l=p.shift(),u=p.shift(),y="M",g.push(l,u),h="L";break;case"h":l+=p.shift(),y="L",g.push(l,u);break;case"H":l=p.shift(),y="L",g.push(l,u);break;case"v":u+=p.shift(),y="L",g.push(l,u);break;case"V":u=p.shift(),y="L",g.push(l,u);break;case"C":g.push(p.shift(),p.shift(),p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"c":g.push(l+p.shift(),u+p.shift(),l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"S":x=l,C=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),C=u+(u-w.points[3])),g.push(x,C,p.shift(),p.shift()),l=p.shift(),u=p.shift(),y="C",g.push(l,u);break;case"s":x=l,C=u,w=s[s.length-1],w.command==="C"&&(x=l+(l-w.points[2]),C=u+(u-w.points[3])),g.push(x,C,l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="C",g.push(l,u);break;case"Q":g.push(p.shift(),p.shift()),l=p.shift(),u=p.shift(),g.push(l,u);break;case"q":g.push(l+p.shift(),u+p.shift()),l+=p.shift(),u+=p.shift(),y="Q",g.push(l,u);break;case"T":x=l,C=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),C=u+(u-w.points[1])),l=p.shift(),u=p.shift(),y="Q",g.push(x,C,l,u);break;case"t":x=l,C=u,w=s[s.length-1],w.command==="Q"&&(x=l+(l-w.points[0]),C=u+(u-w.points[1])),l+=p.shift(),u+=p.shift(),y="Q",g.push(x,C,l,u);break;case"A":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),E=l,P=u,l=p.shift(),u=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,P,l,u,L,N,A,T,k);break;case"a":A=p.shift(),T=p.shift(),k=p.shift(),L=p.shift(),N=p.shift(),E=l,P=u,l+=p.shift(),u+=p.shift(),y="A",g=this.convertEndpointToCenterParameterization(E,P,l,u,L,N,A,T,k);break}s.push({command:y||h,points:g,start:{x:v,y:S},pathLength:this.calcLength(v,S,y||h,g)})}(h==="z"||h==="Z")&&s.push({command:"z",points:[],start:void 0,pathLength:0})}return s}static calcLength(t,n,r,i){var o,s,a,l,u=Dr;switch(r){case"L":return u.getLineLength(t,n,i[0],i[1]);case"C":return(0,Cd.getCubicArcLength)([t,i[0],i[2],i[4]],[n,i[1],i[3],i[5]],1);case"Q":return(0,Cd.getQuadraticArcLength)([t,i[0],i[2]],[n,i[1],i[3]],1);case"A":o=0;var c=i[4],d=i[5],f=i[4]+d,h=Math.PI/180;if(Math.abs(c-f)f;l-=h)a=u.getPointOnEllipticalArc(i[0],i[1],i[2],i[3],l,0),o+=u.getLineLength(s.x,s.y,a.x,a.y),s=a;else for(l=c+h;l1&&(a*=Math.sqrt(h),l*=Math.sqrt(h));var p=Math.sqrt((a*a*(l*l)-a*a*(f*f)-l*l*(d*d))/(a*a*(f*f)+l*l*(d*d)));o===s&&(p*=-1),isNaN(p)&&(p=0);var m=p*a*f/l,b=p*-l*d/a,_=(t+r)/2+Math.cos(c)*m-Math.sin(c)*b,y=(n+i)/2+Math.sin(c)*m+Math.cos(c)*b,g=function(T){return Math.sqrt(T[0]*T[0]+T[1]*T[1])},v=function(T,k){return(T[0]*k[0]+T[1]*k[1])/(g(T)*g(k))},S=function(T,k){return(T[0]*k[1]=1&&(A=0),s===0&&A>0&&(A=A-2*Math.PI),s===1&&A<0&&(A=A+2*Math.PI),[_,y,a,l,w,A,c,s]}}gh.Path=Dr;Dr.prototype.className="Path";Dr.prototype._attrsAffectingSize=["data"];(0,l1e._registerNode)(Dr);s1e.Factory.addGetterSetter(Dr,"data");Object.defineProperty(Xb,"__esModule",{value:!0});Xb.Arrow=void 0;const Yb=Et,u1e=Um,pz=We,c1e=At,Y8=gh;class Jc extends u1e.Line{_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 s=this.pointerLength(),a=r.length,l,u;if(o){const f=[i[i.length-4],i[i.length-3],i[i.length-2],i[i.length-1],r[a-2],r[a-1]],h=Y8.Path.calcLength(i[i.length-4],i[i.length-3],"C",f),p=Y8.Path.getPointOnQuadraticBezier(Math.min(1,1-s/h),f[0],f[1],f[2],f[3],f[4],f[5]);l=r[a-2]-p.x,u=r[a-1]-p.y}else l=r[a-2]-r[a-4],u=r[a-1]-r[a-3];var c=(Math.atan2(u,l)+n)%n,d=this.pointerWidth();this.pointerAtEnding()&&(t.save(),t.beginPath(),t.translate(r[a-2],r[a-1]),t.rotate(c),t.moveTo(0,0),t.lineTo(-s,d/2),t.lineTo(-s,-d/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(-s,d/2),t.lineTo(-s,-d/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}}}Xb.Arrow=Jc;Jc.prototype.className="Arrow";(0,c1e._registerNode)(Jc);Yb.Factory.addGetterSetter(Jc,"pointerLength",10,(0,pz.getNumberValidator)());Yb.Factory.addGetterSetter(Jc,"pointerWidth",10,(0,pz.getNumberValidator)());Yb.Factory.addGetterSetter(Jc,"pointerAtBeginning",!1);Yb.Factory.addGetterSetter(Jc,"pointerAtEnding",!0);var Zb={};Object.defineProperty(Zb,"__esModule",{value:!0});Zb.Circle=void 0;const d1e=Et,f1e=jr,h1e=We,p1e=At;let mh=class extends f1e.Shape{_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)}};Zb.Circle=mh;mh.prototype._centroid=!0;mh.prototype.className="Circle";mh.prototype._attrsAffectingSize=["radius"];(0,p1e._registerNode)(mh);d1e.Factory.addGetterSetter(mh,"radius",0,(0,h1e.getNumberValidator)());var Jb={};Object.defineProperty(Jb,"__esModule",{value:!0});Jb.Ellipse=void 0;const ET=Et,g1e=jr,gz=We,m1e=At;class Nu extends g1e.Shape{_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)}}Jb.Ellipse=Nu;Nu.prototype.className="Ellipse";Nu.prototype._centroid=!0;Nu.prototype._attrsAffectingSize=["radiusX","radiusY"];(0,m1e._registerNode)(Nu);ET.Factory.addComponentsGetterSetter(Nu,"radius",["x","y"]);ET.Factory.addGetterSetter(Nu,"radiusX",0,(0,gz.getNumberValidator)());ET.Factory.addGetterSetter(Nu,"radiusY",0,(0,gz.getNumberValidator)());var eS={};Object.defineProperty(eS,"__esModule",{value:!0});eS.Image=void 0;const kw=sr,ed=Et,y1e=jr,v1e=At,jm=We;let Ca=class mz extends y1e.Shape{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.cornerRadius(),o=this.attrs.image;let s;if(o){const a=this.attrs.cropWidth,l=this.attrs.cropHeight;a&&l?s=[o,this.cropX(),this.cropY(),a,l,0,0,n,r]:s=[o,0,0,n,r]}(this.hasFill()||this.hasStroke()||i)&&(t.beginPath(),i?kw.Util.drawRoundedRectPath(t,n,r,i):t.rect(0,0,n,r),t.closePath(),t.fillStrokeShape(this)),o&&(i&&t.clip(),t.drawImage.apply(t,s))}_hitFunc(t){var n=this.width(),r=this.height(),i=this.cornerRadius();t.beginPath(),i?kw.Util.drawRoundedRectPath(t,n,r,i):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=kw.Util.createImageElement();i.onload=function(){var o=new mz({image:i});n(o)},i.onerror=r,i.crossOrigin="Anonymous",i.src=t}};eS.Image=Ca;Ca.prototype.className="Image";(0,v1e._registerNode)(Ca);ed.Factory.addGetterSetter(Ca,"cornerRadius",0,(0,jm.getNumberOrArrayOfNumbersValidator)(4));ed.Factory.addGetterSetter(Ca,"image");ed.Factory.addComponentsGetterSetter(Ca,"crop",["x","y","width","height"]);ed.Factory.addGetterSetter(Ca,"cropX",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropY",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropWidth",0,(0,jm.getNumberValidator)());ed.Factory.addGetterSetter(Ca,"cropHeight",0,(0,jm.getNumberValidator)());var Kf={};Object.defineProperty(Kf,"__esModule",{value:!0});Kf.Tag=Kf.Label=void 0;const tS=Et,_1e=jr,b1e=hh,TT=We,yz=At;var vz=["fontFamily","fontSize","fontStyle","padding","lineHeight","text","width","height","pointerDirection","pointerWidth","pointerHeight"],S1e="Change.konva",w1e="none",o3="up",s3="right",a3="down",l3="left",x1e=vz.length;class AT extends b1e.Group{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,s.x),r=Math.max(r,s.x),i=Math.min(i,s.y),o=Math.max(o,s.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)}}rS.RegularPolygon=nd;nd.prototype.className="RegularPolygon";nd.prototype._centroid=!0;nd.prototype._attrsAffectingSize=["radius"];(0,R1e._registerNode)(nd);_z.Factory.addGetterSetter(nd,"radius",0,(0,bz.getNumberValidator)());_z.Factory.addGetterSetter(nd,"sides",0,(0,bz.getNumberValidator)());var iS={};Object.defineProperty(iS,"__esModule",{value:!0});iS.Ring=void 0;const Sz=Et,I1e=jr,wz=We,O1e=At;var Z8=Math.PI*2;class rd extends I1e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.innerRadius(),0,Z8,!1),t.moveTo(this.outerRadius(),0),t.arc(0,0,this.outerRadius(),Z8,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)}}iS.Ring=rd;rd.prototype.className="Ring";rd.prototype._centroid=!0;rd.prototype._attrsAffectingSize=["innerRadius","outerRadius"];(0,O1e._registerNode)(rd);Sz.Factory.addGetterSetter(rd,"innerRadius",0,(0,wz.getNumberValidator)());Sz.Factory.addGetterSetter(rd,"outerRadius",0,(0,wz.getNumberValidator)());var oS={};Object.defineProperty(oS,"__esModule",{value:!0});oS.Sprite=void 0;const id=Et,M1e=jr,N1e=ph,xz=We,D1e=At;class Ea extends M1e.Shape{constructor(t){super(t),this._updated=!0,this.anim=new N1e.Animation(()=>{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],s=this.frameOffsets(),a=o[i+0],l=o[i+1],u=o[i+2],c=o[i+3],d=this.image();if((this.hasFill()||this.hasStroke())&&(t.beginPath(),t.rect(0,0,u,c),t.closePath(),t.fillStrokeShape(this)),d)if(s){var f=s[n],h=r*2;t.drawImage(d,a,l,u,c,f[h+0],f[h+1],u,c)}else t.drawImage(d,a,l,u,c,0,0,u,c)}_hitFunc(t){var n=this.animation(),r=this.frameIndex(),i=r*4,o=this.animations()[n],s=this.frameOffsets(),a=o[i+2],l=o[i+3];if(t.beginPath(),s){var u=s[n],c=r*2;t.rect(u[c+0],u[c+1],a,l)}else t.rect(0,0,a,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 Zy;function Rw(){return Zy||(Zy=u3.Util.createCanvasElement().getContext(j1e),Zy)}function J1e(e){e.fillText(this._partialText,this._partialTextX,this._partialTextY)}function e_e(e){e.setAttr("miterLimit",2),e.strokeText(this._partialText,this._partialTextX,this._partialTextY)}function t_e(e){return e=e||{},!e.fillLinearGradientColorStops&&!e.fillRadialGradientColorStops&&!e.fillPatternImage&&(e.fill=e.fill||"black"),e}let br=class extends F1e.Shape{constructor(t){super(t_e(t)),this._partialTextX=0,this._partialTextY=0;for(var n=0;n1&&(_+=s)}}}_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=u3.Util._isString(t)?t:t==null?"":t+"";return this._setAttr(V1e,n),this}getWidth(){var t=this.attrs.width===Ed||this.attrs.width===void 0;return t?this.getTextWidth()+this.padding()*2:this.attrs.width}getHeight(){var t=this.attrs.height===Ed||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 u3.Util.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=Rw(),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()+Yy+this.fontVariant()+Yy+(this.fontSize()+W1e)+Z1e(this.fontFamily())}_addTextLine(t){this.align()===Vh&&(t=t.trim());var r=this._getTextWidth(t);return this.textArr.push({text:t,width:r,lastInParagraph:!1})}_getTextWidth(t){var n=this.letterSpacing(),r=t.length;return Rw().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,s=this.attrs.height,a=o!==Ed&&o!==void 0,l=s!==Ed&&s!==void 0,u=this.padding(),c=o-u*2,d=s-u*2,f=0,h=this.wrap(),p=h!==tR,m=h!==Q1e&&p,b=this.ellipsis();this.textArr=[],Rw().font=this._getContextFont();for(var _=b?this._getTextWidth(Pw):0,y=0,g=t.length;yc)for(;v.length>0;){for(var w=0,x=v.length,C="",A=0;w>>1,k=v.slice(0,T+1),L=this._getTextWidth(k)+_;L<=c?(w=T+1,C=k,A=L):x=T}if(C){if(m){var N,E=v[C.length],P=E===Yy||E===J8;P&&A<=c?N=C.length:N=Math.max(C.lastIndexOf(Yy),C.lastIndexOf(J8))+1,N>0&&(w=N,C=C.slice(0,w),A=this._getTextWidth(C))}C=C.trimRight(),this._addTextLine(C),r=Math.max(r,A),f+=i;var D=this._shouldHandleEllipsis(f);if(D){this._tryToAddEllipsisToLastLine();break}if(v=v.slice(w),v=v.trimLeft(),v.length>0&&(S=this._getTextWidth(v),S<=c)){this._addTextLine(v),f+=i,r=Math.max(r,S);break}}else break}else this._addTextLine(v),f+=i,r=Math.max(r,S),this._shouldHandleEllipsis(f)&&yd)break}this.textHeight=n,this.textWidth=r}_shouldHandleEllipsis(t){var n=+this.fontSize(),r=this.lineHeight()*n,i=this.attrs.height,o=i!==Ed&&i!==void 0,s=this.padding(),a=i-s*2,l=this.wrap(),u=l!==tR;return!u||o&&t+r>a}_tryToAddEllipsisToLastLine(){var t=this.attrs.width,n=t!==Ed&&t!==void 0,r=this.padding(),i=t-r*2,o=this.ellipsis(),s=this.textArr[this.textArr.length-1];if(!(!s||!o)){if(n){var a=this._getTextWidth(s.text+Pw)n?null:Gh.Path.getPointAtLengthOfDataArray(t,this.dataArray)}_readDataAttribute(){this.dataArray=Gh.Path.parsePathData(this.attrs.data),this.pathLength=this._getTextPathLength()}_sceneFunc(t){t.setAttr("font",this._getContextFont()),t.setAttr("textBaseline",this.textBaseline()),t.setAttr("textAlign","left"),t.save();var n=this.textDecoration(),r=this.fill(),i=this.fontSize(),o=this.glyphInfo;n==="underline"&&t.beginPath();for(var s=0;s=1){var r=n[0].p0;t.moveTo(r.x,r.y)}for(var i=0;ie+`.${Oz}`).join(" "),iR="nodesRect",u_e=["widthChange","heightChange","scaleXChange","scaleYChange","skewXChange","skewYChange","rotationChange","offsetXChange","offsetYChange","transformsEnabledChange","strokeWidthChange"],c_e={"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 d_e="ontouchstart"in vs.Konva._global;function f_e(e,t){if(e==="rotater")return"crosshair";t+=gn.Util.degToRad(c_e[e]||0);var n=(gn.Util.radToDeg(t)%360+360)%360;return gn.Util._inRange(n,315+22.5,360)||gn.Util._inRange(n,0,22.5)?"ns-resize":gn.Util._inRange(n,45-22.5,45+22.5)?"nesw-resize":gn.Util._inRange(n,90-22.5,90+22.5)?"ew-resize":gn.Util._inRange(n,135-22.5,135+22.5)?"nwse-resize":gn.Util._inRange(n,180-22.5,180+22.5)?"ns-resize":gn.Util._inRange(n,225-22.5,225+22.5)?"nesw-resize":gn.Util._inRange(n,270-22.5,270+22.5)?"ew-resize":gn.Util._inRange(n,315-22.5,315+22.5)?"nwse-resize":(gn.Util.error("Transformer has unknown angle for cursor detection: "+n),"pointer")}var A1=["top-left","top-center","top-right","middle-right","middle-left","bottom-left","bottom-center","bottom-right"],oR=1e8;function h_e(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 Mz(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 p_e(e,t){const n=h_e(e);return Mz(e,t,n)}function g_e(e,t,n){let r=t;for(let i=0;ii.isAncestorOf(this)?(gn.Util.error("Konva.Transformer cannot be an a child of the node you are trying to attach"),!1):!0);this._nodes=t=n,t.length===1&&this.useSingleNodeRotation()?this.rotation(t[0].getAbsoluteRotation()):this.rotation(0),this._nodes.forEach(i=>{const o=()=>{this.nodes().length===1&&this.useSingleNodeRotation()&&this.rotation(this.nodes()[0].getAbsoluteRotation()),this._resetTransformCache(),!this._transforming&&!this.isDragging()&&this.update()},s=i._attrsAffectingSize.map(a=>a+"Change."+this._getEventNamespace()).join(" ");i.on(s,o),i.on(u_e.map(a=>a+`.${this._getEventNamespace()}`).join(" "),o),i.on(`absoluteTransformChange.${this._getEventNamespace()}`,o),this._proxyDrag(i)}),this._resetTransformCache();var r=!!this.findOne(".top-left");return r&&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,s=i.y-n.y;this.nodes().forEach(a=>{if(a===t||a.isDragging())return;const l=a.getAbsolutePosition();a.setAbsolutePosition({x:l.x+o,y:l.y+s}),a.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(iR),this._clearCache("transform"),this._clearSelfAndDescendantCache("absoluteTransform")}_getNodeRect(){return this._getCache(iR,this.__getNodeRect)}__getNodeShape(t,n=this.rotation(),r){var i=t.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()}),o=t.getAbsoluteScale(r),s=t.getAbsolutePosition(r),a=i.x*o.x-t.offsetX()*o.x,l=i.y*o.y-t.offsetY()*o.y;const u=(vs.Konva.getAngle(t.getAbsoluteRotation())+Math.PI*2)%(Math.PI*2),c={x:s.x+a*Math.cos(u)+l*Math.sin(-u),y:s.y+l*Math.cos(u)+a*Math.sin(u),width:i.width*o.x,height:i.height*o.y,rotation:u};return Mz(c,-vs.Konva.getAngle(n),{x:0,y:0})}__getNodeRect(){var t=this.getNode();if(!t)return{x:-oR,y:-oR,width:0,height:0,rotation:0};const n=[];this.nodes().map(u=>{const c=u.getClientRect({skipTransform:!0,skipShadow:!0,skipStroke:this.ignoreStroke()});var d=[{x:c.x,y:c.y},{x:c.x+c.width,y:c.y},{x:c.x+c.width,y:c.y+c.height},{x:c.x,y:c.y+c.height}],f=u.getAbsoluteTransform();d.forEach(function(h){var p=f.point(h);n.push(p)})});const r=new gn.Transform;r.rotate(-vs.Konva.getAngle(this.rotation()));var i,o,s,a;n.forEach(function(u){var c=r.point(u);i===void 0&&(i=s=c.x,o=a=c.y),i=Math.min(i,c.x),o=Math.min(o,c.y),s=Math.max(s,c.x),a=Math.max(a,c.y)}),r.invert();const l=r.point({x:i,y:o});return{x:l.x,y:l.y,width:s-i,height:a-o,rotation:vs.Konva.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(),A1.forEach((function(t){this._createAnchor(t)}).bind(this)),this._createAnchor("rotater")}_createAnchor(t){var n=new s_e.Rect({stroke:"rgb(0, 161, 255)",fill:"white",strokeWidth:1,name:t+" _anchor",dragDistance:0,draggable:!0,hitStrokeWidth:d_e?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=vs.Konva.getAngle(this.rotation()),o=f_e(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 o_e.Shape({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()*gn.Util._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 s=t.target.getAbsolutePosition(),a=t.target.getStage().getPointerPosition();this._anchorDragOffset={x:a.x-s.x,y:a.y-s.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),s=o.getStage();s.setPointersPositions(t);const a=s.getPointerPosition();let l={x:a.x-this._anchorDragOffset.x,y:a.y-this._anchorDragOffset.y};const u=o.getAbsolutePosition();this.anchorDragBoundFunc()&&(l=this.anchorDragBoundFunc()(u,l,t)),o.setAbsolutePosition(l);const c=o.getAbsolutePosition();if(!(u.x===c.x&&u.y===c.y)){if(this._movingAnchorName==="rotater"){var d=this._getNodeRect();n=o.x()-d.width/2,r=-o.y()+d.height/2;let N=Math.atan2(-r,n)+Math.PI/2;d.height<0&&(N-=Math.PI);var f=vs.Konva.getAngle(this.rotation());const E=f+N,P=vs.Konva.getAngle(this.rotationSnapTolerance()),B=g_e(this.rotationSnaps(),E,P)-d.rotation,R=p_e(d,B);this._fitNodesInto(R,t);return}var h=this.shiftBehavior(),p;h==="inverted"?p=this.keepRatio()&&!t.shiftKey:h==="none"?p=this.keepRatio():p=this.keepRatio()||t.shiftKey;var g=this.centeredScaling()||t.altKey;if(this._movingAnchorName==="top-left"){if(p){var m=g?{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(m.x-o.x(),2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-left").x()>m.x?-1:1,_=this.findOne(".top-left").y()>m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-left").x(m.x-n),this.findOne(".top-left").y(m.y-r)}}else if(this._movingAnchorName==="top-center")this.findOne(".top-left").y(o.y());else if(this._movingAnchorName==="top-right"){if(p){var m=g?{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()-m.x,2)+Math.pow(m.y-o.y(),2));var b=this.findOne(".top-right").x()m.y?-1:1;n=i*this.cos*b,r=i*this.sin*_,this.findOne(".top-right").x(m.x+n),this.findOne(".top-right").y(m.y-r)}var y=o.position();this.findOne(".top-left").y(y.y),this.findOne(".bottom-right").x(y.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(p){var m=g?{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(m.x-o.x(),2)+Math.pow(o.y()-m.y,2));var b=m.x{r._fire("transformend",{evt:t,target:r})}),this._movingAnchorName=null}}_fitNodesInto(t,n){var r=this._getNodeRect();const i=1;if(gn.Util._inRange(t.width,-this.padding()*2-i,i)){this.update();return}if(gn.Util._inRange(t.height,-this.padding()*2-i,i)){this.update();return}const o=this.flipEnabled();var s=new gn.Transform;if(s.rotate(vs.Konva.getAngle(this.rotation())),this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("left")>=0){const d=s.point({x:-this.padding()*2,y:0});if(t.x+=d.x,t.y+=d.y,t.width+=this.padding()*2,this._movingAnchorName=this._movingAnchorName.replace("left","right"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,!o){this.update();return}}else if(this._movingAnchorName&&t.width<0&&this._movingAnchorName.indexOf("right")>=0){const d=s.point({x:this.padding()*2,y:0});if(this._movingAnchorName=this._movingAnchorName.replace("right","left"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.width+=this.padding()*2,!o){this.update();return}}if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("top")>=0){const d=s.point({x:0,y:-this.padding()*2});if(t.x+=d.x,t.y+=d.y,this._movingAnchorName=this._movingAnchorName.replace("top","bottom"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}else if(this._movingAnchorName&&t.height<0&&this._movingAnchorName.indexOf("bottom")>=0){const d=s.point({x:0,y:this.padding()*2});if(this._movingAnchorName=this._movingAnchorName.replace("bottom","top"),this._anchorDragOffset.x-=d.x,this._anchorDragOffset.y-=d.y,t.height+=this.padding()*2,!o){this.update();return}}if(this.boundBoxFunc()){const d=this.boundBoxFunc()(r,t);d?t=d:gn.Util.warn("boundBoxFunc returned falsy. You should return new bound rect from it!")}const a=1e7,l=new gn.Transform;l.translate(r.x,r.y),l.rotate(r.rotation),l.scale(r.width/a,r.height/a);const u=new gn.Transform;u.translate(t.x,t.y),u.rotate(t.rotation),u.scale(t.width/a,t.height/a);const c=u.multiply(l.invert());this._nodes.forEach(d=>{var f;const h=d.getParent().getAbsoluteTransform(),p=d.getTransform().copy();p.translate(d.offsetX(),d.offsetY());const m=new gn.Transform;m.multiply(h.copy().invert()).multiply(c).multiply(h).multiply(p);const b=m.decompose();d.setAttrs(b),this._fire("transform",{evt:n,target:d}),d._fire("transform",{evt:n,target:d}),(f=d.getLayer())===null||f===void 0||f.batchDraw()}),this.rotation(gn.Util._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(gn.Util._getRotation(n.rotation));var r=n.width,i=n.height,o=this.enabledAnchors(),s=this.resizeEnabled(),a=this.padding(),l=this.anchorSize();const u=this.find("._anchor");u.forEach(d=>{d.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+a,offsetY:l/2+a,visible:s&&o.indexOf("top-left")>=0}),this._batchChangeChild(".top-center",{x:r/2,y:0,offsetY:l/2+a,visible:s&&o.indexOf("top-center")>=0}),this._batchChangeChild(".top-right",{x:r,y:0,offsetX:l/2-a,offsetY:l/2+a,visible:s&&o.indexOf("top-right")>=0}),this._batchChangeChild(".middle-left",{x:0,y:i/2,offsetX:l/2+a,visible:s&&o.indexOf("middle-left")>=0}),this._batchChangeChild(".middle-right",{x:r,y:i/2,offsetX:l/2-a,visible:s&&o.indexOf("middle-right")>=0}),this._batchChangeChild(".bottom-left",{x:0,y:i,offsetX:l/2+a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-left")>=0}),this._batchChangeChild(".bottom-center",{x:r/2,y:i,offsetY:l/2-a,visible:s&&o.indexOf("bottom-center")>=0}),this._batchChangeChild(".bottom-right",{x:r,y:i,offsetX:l/2-a,offsetY:l/2-a,visible:s&&o.indexOf("bottom-right")>=0}),this._batchChangeChild(".rotater",{x:r/2,y:-this.rotateAnchorOffset()*gn.Util._sign(i)-a,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});const c=this.anchorStyleFunc();c&&u.forEach(d=>{c(d)}),(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=""),rR.Group.prototype.destroy.call(this),this.detach(),this._removeEvents(),this}toObject(){return nR.Node.prototype.toObject.call(this)}clone(t){var n=nR.Node.prototype.clone.call(this,t);return n}getClientRect(){return this.nodes().length>0?super.getClientRect():{x:0,y:0,width:0,height:0}}}lS.Transformer=Ht;function m_e(e){return e instanceof Array||gn.Util.warn("enabledAnchors value should be an array"),e instanceof Array&&e.forEach(function(t){A1.indexOf(t)===-1&&gn.Util.warn("Unknown anchor name: "+t+". Available names are: "+A1.join(", "))}),e||[]}Ht.prototype.className="Transformer";(0,a_e._registerNode)(Ht);cn.Factory.addGetterSetter(Ht,"enabledAnchors",A1,m_e);cn.Factory.addGetterSetter(Ht,"flipEnabled",!0,(0,$u.getBooleanValidator)());cn.Factory.addGetterSetter(Ht,"resizeEnabled",!0);cn.Factory.addGetterSetter(Ht,"anchorSize",10,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"rotateEnabled",!0);cn.Factory.addGetterSetter(Ht,"rotationSnaps",[]);cn.Factory.addGetterSetter(Ht,"rotateAnchorOffset",50,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"rotationSnapTolerance",5,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderEnabled",!0);cn.Factory.addGetterSetter(Ht,"anchorStroke","rgb(0, 161, 255)");cn.Factory.addGetterSetter(Ht,"anchorStrokeWidth",1,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"anchorFill","white");cn.Factory.addGetterSetter(Ht,"anchorCornerRadius",0,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderStroke","rgb(0, 161, 255)");cn.Factory.addGetterSetter(Ht,"borderStrokeWidth",1,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"borderDash");cn.Factory.addGetterSetter(Ht,"keepRatio",!0);cn.Factory.addGetterSetter(Ht,"shiftBehavior","default");cn.Factory.addGetterSetter(Ht,"centeredScaling",!1);cn.Factory.addGetterSetter(Ht,"ignoreStroke",!1);cn.Factory.addGetterSetter(Ht,"padding",0,(0,$u.getNumberValidator)());cn.Factory.addGetterSetter(Ht,"node");cn.Factory.addGetterSetter(Ht,"nodes");cn.Factory.addGetterSetter(Ht,"boundBoxFunc");cn.Factory.addGetterSetter(Ht,"anchorDragBoundFunc");cn.Factory.addGetterSetter(Ht,"anchorStyleFunc");cn.Factory.addGetterSetter(Ht,"shouldOverdrawWholeArea",!1);cn.Factory.addGetterSetter(Ht,"useSingleNodeRotation",!0);cn.Factory.backCompat(Ht,{lineEnabled:"borderEnabled",rotateHandlerOffset:"rotateAnchorOffset",enabledHandlers:"enabledAnchors"});var uS={};Object.defineProperty(uS,"__esModule",{value:!0});uS.Wedge=void 0;const cS=Et,y_e=jr,v_e=At,Nz=We,__e=At;class vl extends y_e.Shape{_sceneFunc(t){t.beginPath(),t.arc(0,0,this.radius(),0,v_e.Konva.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)}}uS.Wedge=vl;vl.prototype.className="Wedge";vl.prototype._centroid=!0;vl.prototype._attrsAffectingSize=["radius"];(0,__e._registerNode)(vl);cS.Factory.addGetterSetter(vl,"radius",0,(0,Nz.getNumberValidator)());cS.Factory.addGetterSetter(vl,"angle",0,(0,Nz.getNumberValidator)());cS.Factory.addGetterSetter(vl,"clockwise",!1);cS.Factory.backCompat(vl,{angleDeg:"angle",getAngleDeg:"getAngle",setAngleDeg:"setAngle"});var dS={};Object.defineProperty(dS,"__esModule",{value:!0});dS.Blur=void 0;const sR=Et,b_e=Qn,S_e=We;function aR(){this.r=0,this.g=0,this.b=0,this.a=0,this.next=null}var w_e=[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],x_e=[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 C_e(e,t){var n=e.data,r=e.width,i=e.height,o,s,a,l,u,c,d,f,h,p,m,b,_,y,g,v,S,w,x,C,A,T,k,L,N=t+t+1,E=r-1,P=i-1,D=t+1,B=D*(D+1)/2,R=new aR,I=null,O=R,F=null,U=null,V=w_e[t],H=x_e[t];for(a=1;a>H,k!==0?(k=255/k,n[c]=(f*V>>H)*k,n[c+1]=(h*V>>H)*k,n[c+2]=(p*V>>H)*k):n[c]=n[c+1]=n[c+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=d+((l=o+t+1)>H,k>0?(k=255/k,n[l]=(f*V>>H)*k,n[l+1]=(h*V>>H)*k,n[l+2]=(p*V>>H)*k):n[l]=n[l+1]=n[l+2]=0,f-=b,h-=_,p-=y,m-=g,b-=F.r,_-=F.g,y-=F.b,g-=F.a,l=o+((l=s+D)0&&C_e(t,n)};dS.Blur=E_e;sR.Factory.addGetterSetter(b_e.Node,"blurRadius",0,(0,S_e.getNumberValidator)(),sR.Factory.afterSetFilter);var fS={};Object.defineProperty(fS,"__esModule",{value:!0});fS.Brighten=void 0;const lR=Et,T_e=Qn,A_e=We,k_e=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,s=s<0?0:s>255?255:s,n[a]=i,n[a+1]=o,n[a+2]=s};hS.Contrast=I_e;uR.Factory.addGetterSetter(P_e.Node,"contrast",0,(0,R_e.getNumberValidator)(),uR.Factory.afterSetFilter);var pS={};Object.defineProperty(pS,"__esModule",{value:!0});pS.Emboss=void 0;const Su=Et,gS=Qn,O_e=sr,Dz=We,M_e=function(e){var t=this.embossStrength()*10,n=this.embossWhiteLevel()*255,r=this.embossDirection(),i=this.embossBlend(),o=0,s=0,a=e.data,l=e.width,u=e.height,c=l*4,d=u;switch(r){case"top-left":o=-1,s=-1;break;case"top":o=-1,s=0;break;case"top-right":o=-1,s=1;break;case"right":o=0,s=1;break;case"bottom-right":o=1,s=1;break;case"bottom":o=1,s=0;break;case"bottom-left":o=1,s=-1;break;case"left":o=0,s=-1;break;default:O_e.Util.error("Unknown emboss direction: "+r)}do{var f=(d-1)*c,h=o;d+h<1&&(h=0),d+h>u&&(h=0);var p=(d-1+h)*l*4,m=l;do{var b=f+(m-1)*4,_=s;m+_<1&&(_=0),m+_>l&&(_=0);var y=p+(m-1+_)*4,g=a[b]-a[y],v=a[b+1]-a[y+1],S=a[b+2]-a[y+2],w=g,x=w>0?w:-w,C=v>0?v:-v,A=S>0?S:-S;if(C>x&&(w=v),A>x&&(w=S),w*=t,i){var T=a[b]+w,k=a[b+1]+w,L=a[b+2]+w;a[b]=T>255?255:T<0?0:T,a[b+1]=k>255?255:k<0?0:k,a[b+2]=L>255?255:L<0?0:L}else{var N=n-w;N<0?N=0:N>255&&(N=255),a[b]=a[b+1]=a[b+2]=N}}while(--m)}while(--d)};pS.Emboss=M_e;Su.Factory.addGetterSetter(gS.Node,"embossStrength",.5,(0,Dz.getNumberValidator)(),Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossWhiteLevel",.5,(0,Dz.getNumberValidator)(),Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossDirection","top-left",null,Su.Factory.afterSetFilter);Su.Factory.addGetterSetter(gS.Node,"embossBlend",!1,null,Su.Factory.afterSetFilter);var mS={};Object.defineProperty(mS,"__esModule",{value:!0});mS.Enhance=void 0;const cR=Et,N_e=Qn,D_e=We;function Mw(e,t,n,r,i){var o=n-t,s=i-r,a;return o===0?r+s/2:s===0?r:(a=(e-t)/o,a=s*a+r,a)}const L_e=function(e){var t=e.data,n=t.length,r=t[0],i=r,o,s=t[1],a=s,l,u=t[2],c=u,d,f,h=this.enhance();if(h!==0){for(f=0;fi&&(i=o),l=t[f+1],la&&(a=l),d=t[f+2],dc&&(c=d);i===r&&(i=255,r=0),a===s&&(a=255,s=0),c===u&&(c=255,u=0);var p,m,b,_,y,g,v,S,w;for(h>0?(m=i+h*(255-i),b=r-h*(r-0),y=a+h*(255-a),g=s-h*(s-0),S=c+h*(255-c),w=u-h*(u-0)):(p=(i+r)*.5,m=i+h*(i-p),b=r+h*(r-p),_=(a+s)*.5,y=a+h*(a-_),g=s+h*(s-_),v=(c+u)*.5,S=c+h*(c-v),w=u+h*(u-v)),f=0;f_?b:_;var y=s,g=o,v,S,w=360/g*Math.PI/180,x,C;for(S=0;Sg?y:g;var v=s,S=o,w,x,C=n.polarRotation||0,A,T;for(c=0;ct&&(v=g,S=0,w=-1),i=0;i=0&&h=0&&p=0&&h=0&&p=255*4?255:0}return s}function Y_e(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),s=[],a=0;a=0&&h=0&&p=n))for(o=m;o=r||(s=(n*o+i)*4,a+=v[s+0],l+=v[s+1],u+=v[s+2],c+=v[s+3],g+=1);for(a=a/g,l=l/g,u=u/g,c=c/g,i=h;i=n))for(o=m;o=r||(s=(n*o+i)*4,v[s+0]=a,v[s+1]=l,v[s+2]=u,v[s+3]=c)}};CS.Pixelate=obe;pR.Factory.addGetterSetter(rbe.Node,"pixelSize",8,(0,ibe.getNumberValidator)(),pR.Factory.afterSetFilter);var ES={};Object.defineProperty(ES,"__esModule",{value:!0});ES.Posterize=void 0;const gR=Et,sbe=Qn,abe=We,lbe=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)});P1.Factory.addGetterSetter(NT.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});P1.Factory.addGetterSetter(NT.Node,"blue",0,ube.RGBComponent,P1.Factory.afterSetFilter);var AS={};Object.defineProperty(AS,"__esModule",{value:!0});AS.RGBA=void 0;const Vg=Et,kS=Qn,dbe=We,fbe=function(e){var t=e.data,n=t.length,r=this.red(),i=this.green(),o=this.blue(),s=this.alpha(),a,l;for(a=0;a255?255:e<0?0:Math.round(e)});Vg.Factory.addGetterSetter(kS.Node,"green",0,function(e){return this._filterUpToDate=!1,e>255?255:e<0?0:Math.round(e)});Vg.Factory.addGetterSetter(kS.Node,"blue",0,dbe.RGBComponent,Vg.Factory.afterSetFilter);Vg.Factory.addGetterSetter(kS.Node,"alpha",1,function(e){return this._filterUpToDate=!1,e>1?1:e<0?0:e});var PS={};Object.defineProperty(PS,"__esModule",{value:!0});PS.Sepia=void 0;const hbe=function(e){var t=e.data,n=t.length,r,i,o,s;for(r=0;r127&&(u=255-u),c>127&&(c=255-c),d>127&&(d=255-d),t[l]=u,t[l+1]=c,t[l+2]=d}while(--a)}while(--o)};RS.Solarize=pbe;var IS={};Object.defineProperty(IS,"__esModule",{value:!0});IS.Threshold=void 0;const mR=Et,gbe=Qn,mbe=We,ybe=function(e){var t=this.threshold()*255,n=e.data,r=n.length,i;for(i=0;i{const{width:r,height:i}=t,o=document.createElement("div"),s=new qh.Stage({container:o,width:r,height:i}),a=new qh.Layer,l=new qh.Layer;return a.add(new qh.Rect({...t,fill:n?"black":"white"})),e.forEach(u=>l.add(new qh.Line({points:u.points,stroke:n?"white":"black",strokeWidth:u.strokeWidth*2,tension:0,lineCap:"round",lineJoin:"round",shadowForStrokeEnabled:!1,globalCompositeOperation:u.tool==="brush"?"source-over":"destination-out"}))),s.add(a),s.add(l),o.remove(),s},rSe=async(e,t,n)=>new Promise((r,i)=>{const o=document.createElement("canvas");o.width=t,o.height=n;const s=o.getContext("2d"),a=new Image;if(!s){o.remove(),i("Unable to get context");return}a.onload=function(){s.drawImage(a,0,0),o.remove(),r(s.getImageData(0,0,t,n))},a.src=e}),_R=async(e,t)=>{const n=e.toDataURL(t);return await rSe(n,t.width,t.height)},DT=async(e,t,n,r,i)=>{const o=ge("canvas"),s=Fb(),a=Y0e();if(!s||!a){o.error("Unable to find canvas / stage");return}const l={...t,...n},u=s.clone();u.scale({x:1,y:1});const c=u.getAbsolutePosition(),d={x:l.x+c.x,y:l.y+c.y,width:l.width,height:l.height},f=await E1(u,d),h=await _R(u,d),p=await nSe(r?e.objects.filter(_D):[],l,i),m=await E1(p,l),b=await _R(p,l);return{baseBlob:f,baseImageData:h,maskBlob:m,maskImageData:b}},iSe=()=>{Te({actionCreator:G0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await DT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Tn({title:J("toast.problemSavingMask"),description:J("toast.problemSavingMaskDesc"),status:"error"}));return}const{autoAddBoardId:a}=i.gallery;t(pe.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.maskSavedAssets")}}}))}})},oSe=()=>{Te({actionCreator:X0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await DT(i.canvas.layerState,i.canvas.boundingBoxCoordinates,i.canvas.boundingBoxDimensions,i.canvas.isMaskEnabled,i.canvas.shouldPreserveMaskedArea);if(!o)return;const{maskBlob:s}=o;if(!s){r.error("Problem getting mask layer blob"),t(Tn({title:J("toast.problemImportingMask"),description:J("toast.problemImportingMaskDesc"),status:"error"}));return}const{autoAddBoardId:a}=i.gallery,l=await t(pe.endpoints.uploadImage.initiate({file:new File([s],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!1,board_id:a==="none"?void 0:a,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.maskSentControlnetAssets")}}})).unwrap(),{image_name:u}=l;t(Qc({controlNetId:e.payload.controlNet.controlNetId,controlImage:u}))}})},sSe=async()=>{const e=Fb();if(!e)return;const t=e.clone();return t.scale({x:1,y:1}),E1(t,t.getClientRect())},aSe=()=>{Te({actionCreator:W0e,effect:async(e,{dispatch:t})=>{const n=sb.get().child({namespace:"canvasCopiedToClipboardListener"}),r=await sSe();if(!r){n.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemMergingCanvas"),description:J("toast.problemMergingCanvasDesc"),status:"error"}));return}const i=Fb();if(!i){n.error("Problem getting canvas base layer"),t(Tn({title:J("toast.problemMergingCanvas"),description:J("toast.problemMergingCanvasDesc"),status:"error"}));return}const o=i.getClientRect({relativeTo:i.getParent()}),s=await t(pe.endpoints.uploadImage.initiate({file:new File([r],"mergedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasMerged")}}})).unwrap(),{image_name:a}=s;t(Jne({kind:"image",layer:"base",imageName:a,...o}))}})},lSe=()=>{Te({actionCreator:V0e,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("canvas"),i=n(),o=await Bb(i);if(!o){r.error("Problem getting base layer blob"),t(Tn({title:J("toast.problemSavingCanvas"),description:J("toast.problemSavingCanvasDesc"),status:"error"}));return}const{autoAddBoardId:s}=i.gallery;t(pe.endpoints.uploadImage.initiate({file:new File([o],"savedCanvas.png",{type:"image/png"}),image_category:"general",is_intermediate:!1,board_id:s==="none"?void 0:s,crop_visible:!0,postUploadAction:{type:"TOAST",toastOptions:{title:J("toast.canvasSavedGallery")}}}))}})},uSe=(e,t,n)=>{var d;if(!(Ode.match(e)||D6.match(e)||Qc.match(e)||Mde.match(e)||L6.match(e))||L6.match(e)&&((d=n.controlNet.controlNets[e.payload.controlNetId])==null?void 0:d.shouldAutoConfig)===!0)return!1;const i=t.controlNet.controlNets[e.payload.controlNetId];if(!i)return!1;const{controlImage:o,processorType:s,shouldAutoConfig:a}=i;if(D6.match(e)&&!a)return!1;const l=s!=="none",u=t.system.isProcessing;return l&&!u&&!!o},cSe=()=>{Te({predicate:uSe,effect:async(e,{dispatch:t,cancelActiveListeners:n,delay:r})=>{const i=ge("session"),{controlNetId:o}=e.payload;n(),i.trace("ControlNet auto-process triggered"),await r(300),t(Q5({controlNetId:o}))}})},od=Le("system/sessionReadyToInvoke"),Fz=e=>(e==null?void 0:e.type)==="image_output",dSe=()=>{Te({actionCreator:Q5,effect:async(e,{dispatch:t,getState:n,take:r})=>{const i=ge("session"),{controlNetId:o}=e.payload,s=n().controlNet.controlNets[o];if(!(s!=null&&s.controlImage)){i.error("Unable to process ControlNet image");return}const a={nodes:{[s.processorNode.id]:{...s.processorNode,is_intermediate:!0,image:{image_name:s.controlImage}}}},l=t(xi({graph:a})),[u]=await r(f=>xi.fulfilled.match(f)&&f.meta.requestId===l.requestId),c=u.payload.id;t(od());const[d]=await r(f=>W5.match(f)&&f.payload.data.graph_execution_state_id===c);if(Fz(d.payload.data.result)){const{image_name:f}=d.payload.data.result.image,[{payload:h}]=await r(m=>pe.endpoints.getImageDTO.matchFulfilled(m)&&m.payload.image_name===f),p=h;i.debug({controlNetId:e.payload,processedControlImage:p},"ControlNet image processed"),t(Y5({controlNetId:o,processedControlImage:p.image_name}))}}})},fSe=()=>{Te({matcher:pe.endpoints.addImageToBoard.matchFulfilled,effect:e=>{const t=ge("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Image added to board")}})},hSe=()=>{Te({matcher:pe.endpoints.addImageToBoard.matchRejected,effect:e=>{const t=ge("images"),{board_id:n,imageDTO:r}=e.meta.arg.originalArgs;t.debug({board_id:n,imageDTO:r},"Problem adding image to board")}})},LT=Le("deleteImageModal/imageDeletionConfirmed"),aMe=Fi(e=>e,e=>e.gallery.selection[e.gallery.selection.length-1],_T),Bz=Fi([e=>e],e=>{const{selectedBoardId:t,galleryView:n}=e.gallery;return{board_id:t,categories:n==="images"?Qr:Gl,offset:0,limit:are,is_intermediate:!1}},_T),pSe=()=>{Te({actionCreator:LT,effect:async(e,{dispatch:t,getState:n,condition:r})=>{var f;const{imageDTOs:i,imagesUsage:o}=e.payload;if(i.length!==1||o.length!==1)return;const s=i[0],a=o[0];if(!s||!a)return;t(Z5(!1));const l=n(),u=(f=l.gallery.selection[l.gallery.selection.length-1])==null?void 0:f.image_name;if(s&&(s==null?void 0:s.image_name)===u){const{image_name:h}=s,p=Bz(l),{data:m}=pe.endpoints.listImages.select(p)(l),b=m?Ln.getSelectors().selectAll(m):[],_=b.findIndex(S=>S.image_name===h),y=b.filter(S=>S.image_name!==h),g=jl(_,0,y.length-1),v=y[g];t(ha(v||null))}a.isCanvasImage&&t(S5()),i.forEach(h=>{var p,m;((p=n().generation.initialImage)==null?void 0:p.imageName)===h.image_name&&t(b5()),rs(n().controlNet.controlNets,b=>{(b.controlImage===h.image_name||b.processedControlImage===h.image_name)&&(t(Qc({controlNetId:b.controlNetId,controlImage:null})),t(Y5({controlNetId:b.controlNetId,processedControlImage:null})))}),((m=n().controlNet.ipAdapterInfo.adapterImage)==null?void 0:m.image_name)===h.image_name&&t(Pb(null)),n().nodes.nodes.forEach(b=>{Kr(b)&&rs(b.data.inputs,_=>{var y;_.type==="ImageField"&&((y=_.value)==null?void 0:y.image_name)===h.image_name&&t(Lb({nodeId:b.data.id,fieldName:_.name,value:void 0}))})})});const{requestId:c}=t(pe.endpoints.deleteImage.initiate(s));await r(h=>pe.endpoints.deleteImage.matchFulfilled(h)&&h.meta.requestId===c,3e4)&&t(_u.util.invalidateTags([{type:"Board",id:s.board_id}]))}})},gSe=()=>{Te({actionCreator:LT,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTOs:r,imagesUsage:i}=e.payload;if(!(r.length<=1||i.length<=1))try{await t(pe.endpoints.deleteImages.initiate({imageDTOs:r})).unwrap();const o=n(),s=Bz(o),{data:a}=pe.endpoints.listImages.select(s)(o),l=a?Ln.getSelectors().selectAll(a)[0]:void 0;t(ha(l||null)),t(Z5(!1)),i.some(u=>u.isCanvasImage)&&t(S5()),r.forEach(u=>{var c,d;((c=n().generation.initialImage)==null?void 0:c.imageName)===u.image_name&&t(b5()),rs(n().controlNet.controlNets,f=>{(f.controlImage===u.image_name||f.processedControlImage===u.image_name)&&(t(Qc({controlNetId:f.controlNetId,controlImage:null})),t(Y5({controlNetId:f.controlNetId,processedControlImage:null})))}),((d=n().controlNet.ipAdapterInfo.adapterImage)==null?void 0:d.image_name)===u.image_name&&t(Pb(null)),n().nodes.nodes.forEach(f=>{Kr(f)&&rs(f.data.inputs,h=>{var p;h.type==="ImageField"&&((p=h.value)==null?void 0:p.image_name)===u.image_name&&t(Lb({nodeId:f.data.id,fieldName:h.name,value:void 0}))})})})}catch{}}})},mSe=()=>{Te({matcher:pe.endpoints.deleteImage.matchPending,effect:()=>{}})},ySe=()=>{Te({matcher:pe.endpoints.deleteImage.matchFulfilled,effect:e=>{ge("images").debug({imageDTO:e.meta.arg.originalArgs},"Image deleted")}})},vSe=()=>{Te({matcher:pe.endpoints.deleteImage.matchRejected,effect:e=>{ge("images").debug({imageDTO:e.meta.arg.originalArgs},"Unable to delete image")}})},zz=Le("dnd/dndDropped"),_Se=()=>{Te({actionCreator:zz,effect:async(e,{dispatch:t})=>{const n=ge("dnd"),{activeData:r,overData:i}=e.payload;if(r.payloadType==="IMAGE_DTO"?n.debug({activeData:r,overData:i},"Image dropped"):r.payloadType==="IMAGE_DTOS"?n.debug({activeData:r,overData:i},`Images (${r.payload.imageDTOs.length}) dropped`):r.payloadType==="NODE_FIELD"?n.debug({activeData:mn(r),overData:mn(i)},"Node field dropped"):n.debug({activeData:r,overData:i},"Unknown payload dropped"),i.actionType==="ADD_FIELD_TO_LINEAR"&&r.payloadType==="NODE_FIELD"){const{nodeId:o,field:s}=r.payload;t(Pye({nodeId:o,fieldName:s.name}))}if(i.actionType==="SET_CURRENT_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(ha(r.payload.imageDTO));return}if(i.actionType==="SET_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(D_(r.payload.imageDTO));return}if(i.actionType==="SET_CONTROLNET_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{controlNetId:o}=i.context;t(Qc({controlImage:r.payload.imageDTO.image_name,controlNetId:o}));return}if(i.actionType==="SET_IP_ADAPTER_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(Pb(r.payload.imageDTO));return}if(i.actionType==="SET_CANVAS_INITIAL_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){t(wD(r.payload.imageDTO));return}if(i.actionType==="SET_NODES_IMAGE"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{fieldName:o,nodeId:s}=i.context;t(Lb({nodeId:s,fieldName:o,value:r.payload.imageDTO}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload,{boardId:s}=i.context;t(pe.endpoints.addImageToBoard.initiate({imageDTO:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTO"&&r.payload.imageDTO){const{imageDTO:o}=r.payload;t(pe.endpoints.removeImageFromBoard.initiate({imageDTO:o}));return}if(i.actionType==="ADD_TO_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload,{boardId:s}=i.context;t(pe.endpoints.addImagesToBoard.initiate({imageDTOs:o,board_id:s}));return}if(i.actionType==="REMOVE_FROM_BOARD"&&r.payloadType==="IMAGE_DTOS"&&r.payload.imageDTOs){const{imageDTOs:o}=r.payload;t(pe.endpoints.removeImagesFromBoard.initiate({imageDTOs:o}));return}}})},bSe=()=>{Te({matcher:pe.endpoints.removeImageFromBoard.matchFulfilled,effect:e=>{const t=ge("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Image removed from board")}})},SSe=()=>{Te({matcher:pe.endpoints.removeImageFromBoard.matchRejected,effect:e=>{const t=ge("images"),n=e.meta.arg.originalArgs;t.debug({imageDTO:n},"Problem removing image from board")}})},wSe=()=>{Te({actionCreator:$de,effect:async(e,{dispatch:t,getState:n})=>{const r=e.payload,i=n(),{shouldConfirmOnDelete:o}=i.system,s=z0e(n()),a=s.some(l=>l.isCanvasImage)||s.some(l=>l.isInitialImage)||s.some(l=>l.isControlNetImage)||s.some(l=>l.isIPAdapterImage)||s.some(l=>l.isNodesImage);if(o||a){t(Z5(!0));return}t(LT({imageDTOs:r,imagesUsage:s}))}})},qu={title:J("toast.imageUploaded"),status:"success"},xSe=()=>{Te({matcher:pe.endpoints.uploadImage.matchFulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=ge("images"),i=e.payload,o=n(),{autoAddBoardId:s}=o.gallery;r.debug({imageDTO:i},"Image uploaded");const{postUploadAction:a}=e.meta.arg.originalArgs;if(!(e.payload.is_intermediate&&!a)){if((a==null?void 0:a.type)==="TOAST"){const{toastOptions:l}=a;if(!s||s==="none")t(Tn({...qu,...l}));else{t(pe.endpoints.addImageToBoard.initiate({board_id:s,imageDTO:i}));const{data:u}=pi.endpoints.listAllBoards.select()(o),c=u==null?void 0:u.find(f=>f.board_id===s),d=c?`${J("toast.addedToBoard")} ${c.board_name}`:`${J("toast.addedToBoard")} ${s}`;t(Tn({...qu,description:d}))}return}if((a==null?void 0:a.type)==="SET_CANVAS_INITIAL_IMAGE"){t(wD(i)),t(Tn({...qu,description:J("toast.setCanvasInitialImage")}));return}if((a==null?void 0:a.type)==="SET_CONTROLNET_IMAGE"){const{controlNetId:l}=a;t(Qc({controlNetId:l,controlImage:i.image_name})),t(Tn({...qu,description:J("toast.setControlImage")}));return}if((a==null?void 0:a.type)==="SET_IP_ADAPTER_IMAGE"){t(Pb(i)),t(Tn({...qu,description:J("toast.setIPAdapterImage")}));return}if((a==null?void 0:a.type)==="SET_INITIAL_IMAGE"){t(D_(i)),t(Tn({...qu,description:J("toast.setInitialImage")}));return}if((a==null?void 0:a.type)==="SET_NODES_IMAGE"){const{nodeId:l,fieldName:u}=a;t(Lb({nodeId:l,fieldName:u,value:i})),t(Tn({...qu,description:`${J("toast.setNodeField")} ${u}`}));return}}}})},CSe=()=>{Te({matcher:pe.endpoints.uploadImage.matchRejected,effect:(e,{dispatch:t})=>{const n=ge("images"),r={arg:{...I_(e.meta.arg.originalArgs,["file","postUploadAction"]),file:""}};n.error({...r},"Image upload failed"),t(Tn({title:J("toast.imageUploadFailed"),description:e.error.message,status:"error"}))}})},ESe=()=>{Te({matcher:pe.endpoints.starImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!0}):s.push(a)}),t(oF(s))}})},TSe=()=>{Te({matcher:pe.endpoints.unstarImages.matchFulfilled,effect:async(e,{dispatch:t,getState:n})=>{const{updated_image_names:r}=e.payload,i=n(),{selection:o}=i.gallery,s=[];o.forEach(a=>{r.includes(a.image_name)?s.push({...a,starred:!1}):s.push(a)}),t(oF(s))}})},ASe=Le("generation/initialImageSelected"),kSe=Le("generation/modelSelected"),PSe=()=>{Te({actionCreator:ASe,effect:(e,{dispatch:t})=>{if(!e.payload){t(Tn(sa({title:J("toast.imageNotLoadedDesc"),status:"error"})));return}t(D_(e.payload)),t(Tn(sa(J("toast.sentToImageToImage"))))}})},RSe=()=>{Te({actionCreator:kSe,effect:(e,{getState:t,dispatch:n})=>{var l,u;const r=ge("models"),i=t(),o=Cm.safeParse(e.payload);if(!o.success){r.error({error:o.error.format()},"Failed to parse main model");return}const s=o.data,{base_model:a}=s;if(((l=i.generation.model)==null?void 0:l.base_model)!==a){let c=0;rs(i.lora.loras,(p,m)=>{p.base_model!==a&&(n(aF(m)),c+=1)});const{vae:d}=i.generation;d&&d.base_model!==a&&(n(yD(null)),c+=1);const{controlNets:f}=i.controlNet;rs(f,(p,m)=>{var b;((b=p.model)==null?void 0:b.base_model)!==a&&(n(Z$({controlNetId:m})),c+=1)});const{ipAdapterInfo:h}=i.controlNet;h.model&&h.model.base_model!==a&&(n(J$()),c+=1),c>0&&n(Tn(sa({title:`${J("toast.baseModelChangedCleared")} ${c} ${J("toast.incompatibleSubmodel")}${c===1?"":"s"}`,status:"warning"})))}((u=i.generation.model)==null?void 0:u.base_model)!==s.base_model&&i.ui.shouldAutoChangeDimensions&&(["sdxl","sdxl-refiner"].includes(s.base_model)?(n(Kk(1024)),n(Xk(1024)),n(Qk({width:1024,height:1024}))):(n(Kk(512)),n(Xk(512)),n(Qk({width:512,height:512})))),n(Vl(s))}})},Gg=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),bR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),SR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),wR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),xR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),CR=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),c3=fl({sortComparer:(e,t)=>e.model_name.localeCompare(t.model_name)}),ISe=({base_model:e,model_type:t,model_name:n})=>`${e}/${t}/${n}`,Wu=e=>{const t=[];return e.forEach(n=>{const r={...Jn(n),id:ISe(n)};t.push(r)}),t},Ga=_u.injectEndpoints({endpoints:e=>({getOnnxModels:e.query({query:t=>{const n={model_type:"onnx",base_models:t};return`models/?${D0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"OnnxModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"OnnxModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return bR.setAll(bR.getInitialState(),n)}}),getMainModels:e.query({query:t=>{const n={model_type:"main",base_models:t};return`models/?${D0.stringify(n,{arrayFormat:"none"})}`},providesTags:t=>{const n=[{type:"MainModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"MainModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return Gg.setAll(Gg.getInitialState(),n)}}),updateMainModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/main/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),importMainModels:e.mutation({query:({body:t})=>({url:"models/import",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),addMainModels:e.mutation({query:({body:t})=>({url:"models/add",method:"POST",body:t}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),deleteMainModels:e.mutation({query:({base_model:t,model_name:n,model_type:r})=>({url:`models/${t}/${r}/${n}`,method:"DELETE"}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),convertMainModels:e.mutation({query:({base_model:t,model_name:n,convert_dest_directory:r})=>({url:`models/convert/${t}/main/${n}`,method:"PUT",params:{convert_dest_directory:r}}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),mergeMainModels:e.mutation({query:({base_model:t,body:n})=>({url:`models/merge/${t}`,method:"PUT",body:n}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),syncModels:e.mutation({query:()=>({url:"models/sync",method:"POST"}),invalidatesTags:[{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"OnnxModel",id:pt}]}),getLoRAModels:e.query({query:()=>({url:"models/",params:{model_type:"lora"}}),providesTags:t=>{const n=[{type:"LoRAModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"LoRAModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return SR.setAll(SR.getInitialState(),n)}}),updateLoRAModels:e.mutation({query:({base_model:t,model_name:n,body:r})=>({url:`models/${t}/lora/${n}`,method:"PATCH",body:r}),invalidatesTags:[{type:"LoRAModel",id:pt}]}),deleteLoRAModels:e.mutation({query:({base_model:t,model_name:n})=>({url:`models/${t}/lora/${n}`,method:"DELETE"}),invalidatesTags:[{type:"LoRAModel",id:pt}]}),getControlNetModels:e.query({query:()=>({url:"models/",params:{model_type:"controlnet"}}),providesTags:t=>{const n=[{type:"ControlNetModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"ControlNetModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return wR.setAll(wR.getInitialState(),n)}}),getIPAdapterModels:e.query({query:()=>({url:"models/",params:{model_type:"ip_adapter"}}),providesTags:t=>{const n=[{type:"IPAdapterModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"IPAdapterModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return xR.setAll(xR.getInitialState(),n)}}),getVaeModels:e.query({query:()=>({url:"models/",params:{model_type:"vae"}}),providesTags:t=>{const n=[{type:"VaeModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"VaeModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return c3.setAll(c3.getInitialState(),n)}}),getTextualInversionModels:e.query({query:()=>({url:"models/",params:{model_type:"embedding"}}),providesTags:t=>{const n=[{type:"TextualInversionModel",id:pt}];return t&&n.push(...t.ids.map(r=>({type:"TextualInversionModel",id:r}))),n},transformResponse:t=>{const n=Wu(t.models);return CR.setAll(CR.getInitialState(),n)}}),getModelsInFolder:e.query({query:t=>({url:`/models/search?${D0.stringify(t,{})}`}),providesTags:t=>{const n=[{type:"ScannedModels",id:pt}];return t&&n.push(...t.map(r=>({type:"ScannedModels",id:r}))),n}}),getCheckpointConfigs:e.query({query:()=>({url:"/models/ckpt_confs"})})})}),{useGetMainModelsQuery:lMe,useGetOnnxModelsQuery:uMe,useGetControlNetModelsQuery:cMe,useGetIPAdapterModelsQuery:dMe,useGetLoRAModelsQuery:fMe,useGetTextualInversionModelsQuery:hMe,useGetVaeModelsQuery:pMe,useUpdateMainModelsMutation:gMe,useDeleteMainModelsMutation:mMe,useImportMainModelsMutation:yMe,useAddMainModelsMutation:vMe,useConvertMainModelsMutation:_Me,useMergeMainModelsMutation:bMe,useDeleteLoRAModelsMutation:SMe,useUpdateLoRAModelsMutation:wMe,useSyncModelsMutation:xMe,useGetModelsInFolderQuery:CMe,useGetCheckpointConfigsQuery:EMe}=Ga,OSe=()=>{Te({predicate:e=>Ga.endpoints.getMainModels.matchFulfilled(e)&&!e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`Main models loaded (${e.payload.ids.length})`);const i=t().generation.model,o=Gg.getSelectors().selectAll(e.payload);if(o.length===0){n(Vl(null));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=Cm.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse main model");return}n(Vl(a.data))}}),Te({predicate:e=>Ga.endpoints.getMainModels.matchFulfilled(e)&&e.meta.arg.originalArgs.includes("sdxl-refiner"),effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`SDXL Refiner models loaded (${e.payload.ids.length})`);const i=t().sdxl.refinerModel,o=Gg.getSelectors().selectAll(e.payload);if(o.length===0){n(P8(null)),n(Mye(!1));return}if(i?o.some(l=>l.model_name===i.model_name&&l.base_model===i.base_model&&l.model_type===i.model_type):!1)return;const a=_5.safeParse(o[0]);if(!a.success){r.error({error:a.error.format()},"Failed to parse SDXL Refiner Model");return}n(P8(a.data))}}),Te({matcher:Ga.endpoints.getVaeModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{const r=ge("models");r.info({models:e.payload.entities},`VAEs loaded (${e.payload.ids.length})`);const i=t().generation.vae;if(i===null||wp(e.payload.entities,l=>(l==null?void 0:l.model_name)===(i==null?void 0:i.model_name)&&(l==null?void 0:l.base_model)===(i==null?void 0:i.base_model)))return;const s=c3.getSelectors().selectAll(e.payload)[0];if(!s){n(Vl(null));return}const a=wne.safeParse(s);if(!a.success){r.error({error:a.error.format()},"Failed to parse VAE model");return}n(yD(a.data))}}),Te({matcher:Ga.endpoints.getLoRAModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{ge("models").info({models:e.payload.entities},`LoRAs loaded (${e.payload.ids.length})`);const i=t().lora.loras;rs(i,(o,s)=>{wp(e.payload.entities,l=>(l==null?void 0:l.model_name)===(o==null?void 0:o.model_name)&&(l==null?void 0:l.base_model)===(o==null?void 0:o.base_model))||n(aF(s))})}}),Te({matcher:Ga.endpoints.getControlNetModels.matchFulfilled,effect:async(e,{getState:t,dispatch:n})=>{ge("models").info({models:e.payload.entities},`ControlNet models loaded (${e.payload.ids.length})`);const i=t().controlNet.controlNets;rs(i,(o,s)=>{wp(e.payload.entities,l=>{var u,c;return(l==null?void 0:l.model_name)===((u=o==null?void 0:o.model)==null?void 0:u.model_name)&&(l==null?void 0:l.base_model)===((c=o==null?void 0:o.model)==null?void 0:c.base_model)})||n(Z$({controlNetId:s}))})}}),Te({matcher:Ga.endpoints.getTextualInversionModels.matchFulfilled,effect:async e=>{ge("models").info({models:e.payload.entities},`Embeddings loaded (${e.payload.ids.length})`)}})},Td=e=>e.$ref.split("/").slice(-1)[0],MSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"integer",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},NSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"IntegerPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},DSe=({schemaObject:e,baseField:t})=>{const n=X7(e.item_default)&&wee(e.item_default)?e.item_default:0;return{...t,type:"IntegerCollection",default:e.default??[],item_default:n}},LSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"float",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},$Se=({schemaObject:e,baseField:t})=>{const n={...t,type:"FloatPolymorphic",default:e.default??0};return e.multipleOf!==void 0&&(n.multipleOf=e.multipleOf),e.maximum!==void 0&&(n.maximum=e.maximum),e.exclusiveMaximum!==void 0&&(n.exclusiveMaximum=e.exclusiveMaximum),e.minimum!==void 0&&(n.minimum=e.minimum),e.exclusiveMinimum!==void 0&&(n.exclusiveMinimum=e.exclusiveMinimum),n},FSe=({schemaObject:e,baseField:t})=>{const n=X7(e.item_default)?e.item_default:0;return{...t,type:"FloatCollection",default:e.default??[],item_default:n}},BSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"string",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},zSe=({schemaObject:e,baseField:t})=>{const n={...t,type:"StringPolymorphic",default:e.default??""};return e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern!==void 0&&(n.pattern=e.pattern),n},USe=({schemaObject:e,baseField:t})=>{const n=K7(e.item_default)?e.item_default:"";return{...t,type:"StringCollection",default:e.default??[],item_default:n}},jSe=({schemaObject:e,baseField:t})=>({...t,type:"boolean",default:e.default??!1}),VSe=({schemaObject:e,baseField:t})=>({...t,type:"BooleanPolymorphic",default:e.default??!1}),GSe=({schemaObject:e,baseField:t})=>{const n=e.item_default&&See(e.item_default)?e.item_default:!1;return{...t,type:"BooleanCollection",default:e.default??[],item_default:n}},HSe=({schemaObject:e,baseField:t})=>({...t,type:"MainModelField",default:e.default??void 0}),qSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLMainModelField",default:e.default??void 0}),WSe=({schemaObject:e,baseField:t})=>({...t,type:"SDXLRefinerModelField",default:e.default??void 0}),KSe=({schemaObject:e,baseField:t})=>({...t,type:"VaeModelField",default:e.default??void 0}),XSe=({schemaObject:e,baseField:t})=>({...t,type:"LoRAModelField",default:e.default??void 0}),QSe=({schemaObject:e,baseField:t})=>({...t,type:"ControlNetModelField",default:e.default??void 0}),YSe=({schemaObject:e,baseField:t})=>({...t,type:"IPAdapterModelField",default:e.default??void 0}),ZSe=({schemaObject:e,baseField:t})=>({...t,type:"ImageField",default:e.default??void 0}),JSe=({schemaObject:e,baseField:t})=>({...t,type:"ImagePolymorphic",default:e.default??void 0}),e2e=({schemaObject:e,baseField:t})=>({...t,type:"ImageCollection",default:e.default??[],item_default:e.item_default??void 0}),t2e=({schemaObject:e,baseField:t})=>({...t,type:"DenoiseMaskField",default:e.default??void 0}),n2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsField",default:e.default??void 0}),r2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsPolymorphic",default:e.default??void 0}),i2e=({schemaObject:e,baseField:t})=>({...t,type:"LatentsCollection",default:e.default??[],item_default:e.item_default??void 0}),o2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningField",default:e.default??void 0}),s2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningPolymorphic",default:e.default??void 0}),a2e=({schemaObject:e,baseField:t})=>({...t,type:"ConditioningCollection",default:e.default??[],item_default:e.item_default??void 0}),l2e=({schemaObject:e,baseField:t})=>({...t,type:"UNetField",default:e.default??void 0}),u2e=({schemaObject:e,baseField:t})=>({...t,type:"ClipField",default:e.default??void 0}),c2e=({schemaObject:e,baseField:t})=>({...t,type:"VaeField",default:e.default??void 0}),d2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlField",default:e.default??void 0}),f2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlPolymorphic",default:e.default??void 0}),h2e=({schemaObject:e,baseField:t})=>({...t,type:"ControlCollection",default:e.default??[],item_default:e.item_default??void 0}),p2e=({schemaObject:e,baseField:t})=>({...t,type:"IPAdapterField",default:e.default??void 0}),g2e=({schemaObject:e,baseField:t})=>{const n=e.enum??[];return{...t,type:"enum",options:n,ui_choice_labels:e.ui_choice_labels,default:e.default??n[0]}},m2e=({baseField:e})=>({...e,type:"Collection",default:[]}),y2e=({baseField:e})=>({...e,type:"CollectionItem",default:void 0}),v2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorField",default:e.default??{r:127,g:127,b:127,a:255}}),_2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorPolymorphic",default:e.default??{r:127,g:127,b:127,a:255}}),b2e=({schemaObject:e,baseField:t})=>({...t,type:"ColorCollection",default:e.default??[]}),S2e=({schemaObject:e,baseField:t})=>({...t,type:"Scheduler",default:e.default??"euler"}),ER=e=>{if(e!=null&&e.ui_type)return e.ui_type;if(e.type){if(e.enum)return"enum";if(e.type){if(e.type==="number")return"float";if(e.type==="array"){const t=Iie(e.items)?e.items.type:Td(e.items);return Cye(t)?PB[t]:void 0}else return e.type}}else if(e.allOf){const t=e.allOf;if(t&&t[0]&&Dh(t[0]))return Td(t[0])}else if(e.anyOf){const t=e.anyOf;let n,r;if(aP(t[0])){const i=t[0].items,o=t[1];Dh(i)&&Dh(o)?(n=Td(i),r=Td(o)):Ay(i)&&Ay(o)&&(n=i.type,r=o.type)}else if(aP(t[1])){const i=t[0],o=t[1].items;Dh(i)&&Dh(o)?(n=Td(i),r=Td(o)):Ay(i)&&Ay(o)&&(n=i.type,r=o.type)}if(n===r&&Eye(n))return RB[n]}},Uz={boolean:jSe,BooleanCollection:GSe,BooleanPolymorphic:VSe,ClipField:u2e,Collection:m2e,CollectionItem:y2e,ColorCollection:b2e,ColorField:v2e,ColorPolymorphic:_2e,ConditioningCollection:a2e,ConditioningField:o2e,ConditioningPolymorphic:s2e,ControlCollection:h2e,ControlField:d2e,ControlNetModelField:QSe,ControlPolymorphic:f2e,DenoiseMaskField:t2e,enum:g2e,float:LSe,FloatCollection:FSe,FloatPolymorphic:$Se,ImageCollection:e2e,ImageField:ZSe,ImagePolymorphic:JSe,integer:MSe,IntegerCollection:DSe,IntegerPolymorphic:NSe,IPAdapterField:p2e,IPAdapterModelField:YSe,LatentsCollection:i2e,LatentsField:n2e,LatentsPolymorphic:r2e,LoRAModelField:XSe,MainModelField:HSe,Scheduler:S2e,SDXLMainModelField:qSe,SDXLRefinerModelField:WSe,string:BSe,StringCollection:USe,StringPolymorphic:zSe,UNetField:l2e,VaeField:c2e,VaeModelField:KSe},w2e=e=>!!(e&&e in Uz),x2e=(e,t,n,r)=>{var d;const{input:i,ui_hidden:o,ui_component:s,ui_type:a,ui_order:l}=t,u={input:xye.includes(r)?"connection":i,ui_hidden:o,ui_component:s,ui_type:a,required:((d=e.required)==null?void 0:d.includes(n))??!1,ui_order:l},c={name:n,title:t.title??"",description:t.description??"",fieldKind:"input",...u};if(w2e(r))return Uz[r]({schemaObject:t,baseField:c})},C2e=["id","type","metadata"],E2e=["type"],T2e=["WorkflowField","MetadataField","IsIntermediate"],A2e=["graph","metadata_accumulator"],k2e=(e,t)=>!!(C2e.includes(t)||e==="collect"&&t==="collection"||e==="iterate"&&t==="index"),P2e=e=>!!T2e.includes(e),R2e=(e,t)=>!E2e.includes(t),I2e=e=>!A2e.includes(e.properties.type.default),O2e=(e,t=void 0,n=void 0)=>{var o;return Object.values(((o=e.components)==null?void 0:o.schemas)??{}).filter(Oie).filter(I2e).filter(s=>t?t.includes(s.properties.type.default):!0).filter(s=>n?!n.includes(s.properties.type.default):!0).reduce((s,a)=>{var g,v;const l=a.properties.type.default,u=a.title.replace("Invocation",""),c=a.tags??[],d=a.description??"",f=a.version,h=hC(a.properties,(S,w,x)=>{if(k2e(l,x))return ge("nodes").trace({node:l,fieldName:x,field:mn(w)},"Skipped reserved input field"),S;if(!lP(w))return ge("nodes").warn({node:l,propertyName:x,property:mn(w)},"Unhandled input property"),S;const C=ER(w);if(!sP(C))return ge("nodes").warn({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping unknown input field type"),S;if(P2e(C))return ge("nodes").trace({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping reserved field type"),S;const A=x2e(a,w,x,C);return A?(S[x]=A,S):(ge("nodes").debug({node:l,fieldName:x,fieldType:C,field:mn(w)},"Skipping input field with no template"),S)},{}),p=a.output.$ref.split("/").pop();if(!p)return ge("nodes").warn({outputRefObject:mn(a.output)},"No output schema name found in ref object"),s;const m=(v=(g=e.components)==null?void 0:g.schemas)==null?void 0:v[p];if(!m)return ge("nodes").warn({outputSchemaName:p},"Output schema not found"),s;if(!Mie(m))return ge("nodes").error({outputSchema:mn(m)},"Invalid output schema"),s;const b=m.properties.type.default,_=hC(m.properties,(S,w,x)=>{if(!R2e(l,x))return ge("nodes").trace({type:l,propertyName:x,property:mn(w)},"Skipped reserved output field"),S;if(!lP(w))return ge("nodes").warn({type:l,propertyName:x,property:mn(w)},"Unhandled output property"),S;const C=ER(w);return sP(C)?(S[x]={fieldKind:"output",name:x,title:w.title??"",description:w.description??"",type:C,ui_hidden:w.ui_hidden??!1,ui_type:w.ui_type,ui_order:w.ui_order},S):(ge("nodes").warn({fieldName:x,fieldType:C,field:mn(w)},"Skipping unknown output field type"),S)},{}),y={title:u,type:l,version:f,tags:c,description:d,outputType:b,inputs:h,outputs:_};return Object.assign(s,{[l]:y}),s},{})},M2e=()=>{Te({actionCreator:zg.fulfilled,effect:(e,{dispatch:t,getState:n})=>{const r=ge("system"),i=e.payload;r.debug({schemaJSON:i},"Received OpenAPI schema");const{nodesAllowlist:o,nodesDenylist:s}=n().config,a=O2e(i,o,s);r.debug({nodeTemplates:mn(a)},`Built ${O_(a)} node templates`),t(MB(a))}}),Te({actionCreator:zg.rejected,effect:e=>{ge("system").error({error:mn(e.error)},"Problem retrieving OpenAPI Schema")}})},N2e=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,globalThis.DOMException,globalThis.AssertionError,globalThis.SystemError].filter(Boolean).map(e=>[e.name,e]),D2e=new Map(N2e),L2e=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0},{property:"cause",enumerable:!1}],d3=new WeakSet,$2e=e=>{d3.add(e);const t=e.toJSON();return d3.delete(e),t},F2e=e=>D2e.get(e)??Error,jz=({from:e,seen:t,to:n,forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a})=>{if(!n)if(Array.isArray(e))n=[];else if(!a&&TR(e)){const u=F2e(e.name);n=new u}else n={};if(t.push(e),o>=i)return n;if(s&&typeof e.toJSON=="function"&&!d3.has(e))return $2e(e);const l=u=>jz({from:u,seen:[...t],forceEnumerable:r,maxDepth:i,depth:o,useToJSON:s,serialize:a});for(const[u,c]of Object.entries(e)){if(typeof Buffer=="function"&&Buffer.isBuffer(c)){n[u]="[object Buffer]";continue}if(c!==null&&typeof c=="object"&&typeof c.pipe=="function"){n[u]="[object Stream]";continue}if(typeof c!="function"){if(!c||typeof c!="object"){n[u]=c;continue}if(!t.includes(e[u])){o++,n[u]=l(e[u]);continue}n[u]="[Circular]"}}for(const{property:u,enumerable:c}of L2e)typeof e[u]<"u"&&e[u]!==null&&Object.defineProperty(n,u,{value:TR(e[u])?l(e[u]):e[u],enumerable:r?!0:c,configurable:!0,writable:!0});return n};function $T(e,t={}){const{maxDepth:n=Number.POSITIVE_INFINITY,useToJSON:r=!0}=t;return typeof e=="object"&&e!==null?jz({from:e,seen:[],forceEnumerable:!0,maxDepth:n,depth:0,useToJSON:r,serialize:!0}):typeof e=="function"?`[Function: ${e.name??"anonymous"}]`:e}function TR(e){return!!e&&typeof e=="object"&&"name"in e&&"message"in e&&"stack"in e}const B2e=()=>{Te({actionCreator:Iu.pending,effect:()=>{}})},z2e=()=>{Te({actionCreator:Iu.fulfilled,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session canceled (${n})`)}})},U2e=()=>{Te({actionCreator:Iu.rejected,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:$T(r)},"Problem canceling session")}}})},j2e=()=>{Te({actionCreator:xi.pending,effect:()=>{}})},V2e=()=>{Te({actionCreator:xi.fulfilled,effect:e=>{const t=ge("session"),n=e.payload;t.debug({session:mn(n)},`Session created (${n.id})`)}})},G2e=()=>{Te({actionCreator:xi.rejected,effect:e=>{const t=ge("session");if(e.payload){const{error:n,status:r}=e.payload,i=mn(e.meta.arg);t.error({graph:i,status:r,error:$T(n)},"Problem creating session")}}})},H2e=()=>{Te({actionCreator:ah.pending,effect:()=>{}})},q2e=()=>{Te({actionCreator:ah.fulfilled,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;t.debug({session_id:n},`Session invoked (${n})`)}})},W2e=()=>{Te({actionCreator:ah.rejected,effect:e=>{const t=ge("session"),{session_id:n}=e.meta.arg;if(e.payload){const{error:r}=e.payload;t.error({session_id:n,error:$T(r)},"Problem invoking session")}}})},K2e=()=>{Te({actionCreator:od,effect:(e,{getState:t,dispatch:n})=>{const r=ge("session"),{sessionId:i}=t().system;i&&(r.debug({session_id:i},`Session ready to invoke (${i})})`),n(ah({session_id:i})))}})},X2e=()=>{Te({actionCreator:O$,effect:(e,{dispatch:t,getState:n})=>{ge("socketio").debug("Connected");const{nodes:i,config:o}=n(),{disabledTabs:s}=o;!O_(i.nodeTemplates)&&!s.includes("nodes")&&t(zg()),t(M$(e.payload)),t(Ga.util.invalidateTags([{type:"MainModel",id:pt},{type:"SDXLRefinerModel",id:pt},{type:"LoRAModel",id:pt},{type:"ControlNetModel",id:pt},{type:"VaeModel",id:pt},{type:"TextualInversionModel",id:pt},{type:"ScannedModels",id:pt}])),t(vT.util.invalidateTags(["AppConfig","AppVersion"]))}})},Q2e=()=>{Te({actionCreator:N$,effect:(e,{dispatch:t})=>{ge("socketio").debug("Disconnected"),t(D$(e.payload))}})},Y2e=()=>{Te({actionCreator:V$,effect:(e,{dispatch:t,getState:n})=>{const r=ge("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored generator progress for canceled session");return}r.trace(e.payload,`Generator progress (${e.payload.data.node.type})`),t(X5(e.payload))}})},Z2e=()=>{Te({actionCreator:U$,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Session complete"),t(j$(e.payload))}})},Ue="positive_conditioning",He="negative_conditioning",Oe="denoise_latents",Ke="latents_to_image",Wd="nsfw_checker",Wh="invisible_watermark",Ee="noise",$r="rand_int",Xn="range_of_size",sn="iterate",Fu="main_model_loader",OS="onnx_model_loader",qs="vae_loader",Vz="lora_loader",Gt="clip_skip",Fn="image_to_latents",ra="resize_image",vf="img2img_resize",ye="canvas_output",Un="inpaint_image",bi="inpaint_image_resize_up",Di="inpaint_image_resize_down",Ut="inpaint_infill",ql="inpaint_infill_resize_down",Bn="inpaint_create_mask",_t="canvas_coherence_denoise_latents",yn="canvas_coherence_noise",Li="canvas_coherence_noise_increment",cr="canvas_coherence_mask_edge",Lt="canvas_coherence_inpaint_create_mask",_f="tomask",Oi="mask_blur",vi="mask_combine",zn="mask_resize_up",$i="mask_resize_down",e0="control_net_collect",J2e="ip_adapter",Nw="dynamic_prompt",Pt="metadata_accumulator",AR="esrgan",Mi="sdxl_model_loader",Ce="sdxl_denoise_latents",Ku="sdxl_refiner_model_loader",t0="sdxl_refiner_positive_conditioning",n0="sdxl_refiner_negative_conditioning",Ws="sdxl_refiner_denoise_latents",Ba="refiner_inpaint_create_mask",Br="seamless",As="refiner_seamless",Gz="text_to_image_graph",f3="image_to_image_graph",Hz="canvas_text_to_image_graph",h3="canvas_image_to_image_graph",MS="canvas_inpaint_graph",NS="canvas_outpaint_graph",FT="sdxl_text_to_image_graph",R1="sxdl_image_to_image_graph",DS="sdxl_canvas_text_to_image_graph",Hg="sdxl_canvas_image_to_image_graph",Bc="sdxl_canvas_inpaint_graph",zc="sdxl_canvas_outpaint_graph",ewe=["load_image"],twe=()=>{Te({actionCreator:W5,effect:async(e,{dispatch:t,getState:n})=>{const r=ge("socketio"),{data:i}=e.payload;r.debug({data:mn(i)},`Invocation complete (${e.payload.data.node.type})`);const o=e.payload.data.graph_execution_state_id,{cancelType:s,isCancelScheduled:a}=n().system;s==="scheduled"&&a&&t(Iu({session_id:o}));const{result:l,node:u,graph_execution_state_id:c}=i;if(Fz(l)&&!ewe.includes(u.type)){const{image_name:d}=l.image,{canvas:f,gallery:h}=n(),p=await t(pe.endpoints.getImageDTO.initiate(d)).unwrap();if(c===f.layerState.stagingArea.sessionId&&[ye].includes(i.source_node_id)&&t(Yne(p)),!p.is_intermediate){const{autoAddBoardId:m}=h;t(m&&m!=="none"?pe.endpoints.addImageToBoard.initiate({board_id:m,imageDTO:p}):pe.util.updateQueryData("listImages",{board_id:"none",categories:Qr},y=>{Ln.addOne(y,p)})),t(pe.util.invalidateTags([{type:"BoardImagesTotal",id:m},{type:"BoardAssetsTotal",id:m}]));const{selectedBoardId:b,shouldAutoSwitch:_}=h;_&&(m&&m!==b?(t(LC(m)),t(h1("images"))):m||t(h1("images")),t(ha(p)))}t(Lye(null))}t(K5(e.payload))}})},nwe=()=>{Te({actionCreator:z$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Invocation error (${e.payload.data.node.type})`),t(kb(e.payload))}})},rwe=()=>{Te({actionCreator:K$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Invocation retrieval error (${e.payload.data.graph_execution_state_id})`),t(X$(e.payload))}})},iwe=()=>{Te({actionCreator:B$,effect:(e,{dispatch:t,getState:n})=>{const r=ge("socketio");if(n().system.canceledSession===e.payload.data.graph_execution_state_id){r.trace(e.payload,"Ignored invocation started for canceled session");return}r.debug(e.payload,`Invocation started (${e.payload.data.node.type})`),t(q5(e.payload))}})},owe=()=>{Te({actionCreator:G$,effect:(e,{dispatch:t})=>{const n=ge("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load started: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(Rde(e.payload))}}),Te({actionCreator:H$,effect:(e,{dispatch:t})=>{const n=ge("socketio"),{base_model:r,model_name:i,model_type:o,submodel:s}=e.payload.data;let a=`Model load complete: ${r}/${o}/${i}`;s&&(a=a.concat(`/${s}`)),n.debug(e.payload,a),t(Ide(e.payload))}})},swe=()=>{Te({actionCreator:q$,effect:(e,{dispatch:t})=>{ge("socketio").error(e.payload,`Session retrieval error (${e.payload.data.graph_execution_state_id})`),t(W$(e.payload))}})},awe=()=>{Te({actionCreator:H5,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Subscribed"),t(L$(e.payload))}})},lwe=()=>{Te({actionCreator:$$,effect:(e,{dispatch:t})=>{ge("socketio").debug(e.payload,"Unsubscribed"),t(F$(e.payload))}})},uwe=()=>{Te({actionCreator:K0e,effect:async(e,{dispatch:t,getState:n})=>{const{imageDTO:r}=e.payload;try{const i=await t(pe.endpoints.changeImageIsIntermediate.initiate({imageDTO:r,is_intermediate:!1})).unwrap(),{autoAddBoardId:o}=n().gallery;o&&o!=="none"&&await t(pe.endpoints.addImageToBoard.initiate({imageDTO:i,board_id:o})),t(Tn({title:J("toast.imageSaved"),status:"success"}))}catch(i){t(Tn({title:J("toast.imageSavingFailed"),description:i==null?void 0:i.message,status:"error"}))}}})},TMe=["sd-1","sd-2","sdxl","sdxl-refiner"],cwe=["sd-1","sd-2","sdxl"],AMe=["sdxl"],kMe=["sd-1","sd-2"],PMe=["sdxl-refiner"],dwe=()=>{Te({actionCreator:HB,effect:async(e,{getState:t,dispatch:n})=>{var i;if(e.payload==="unifiedCanvas"){const o=(i=t().generation.model)==null?void 0:i.base_model;if(o&&["sd-1","sd-2","sdxl"].includes(o))return;try{const s=n(Ga.endpoints.getMainModels.initiate(cwe)),a=await s.unwrap();if(s.unsubscribe(),!a.ids.length){n(Vl(null));return}const u=Gg.getSelectors().selectAll(a).filter(h=>["sd-1","sd-2","sxdl"].includes(h.base_model))[0];if(!u){n(Vl(null));return}const{base_model:c,model_name:d,model_type:f}=u;n(Vl({base_model:c,model_name:d,model_type:f}))}catch{n(Vl(null))}}}})},fwe=({image_name:e,esrganModelName:t})=>{const n={id:AR,type:"esrgan",image:{image_name:e},model_name:t,is_intermediate:!1};return{id:"adhoc-esrgan-graph",nodes:{[AR]:n},edges:[]}},hwe=Le("upscale/upscaleRequested"),pwe=()=>{Te({actionCreator:hwe,effect:async(e,{dispatch:t,getState:n,take:r})=>{const{image_name:i}=e.payload,{esrganModelName:o}=n().postprocessing,s=fwe({image_name:i,esrganModelName:o});t(xi({graph:s})),await r(xi.fulfilled.match),t(od())}})},gwe=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("

")})},kR=e=>new Promise((t,n)=>{const r=new FileReader;r.onload=i=>t(r.result),r.onerror=i=>n(r.error),r.onabort=i=>n(new Error("Read aborted")),r.readAsDataURL(e)}),mwe=e=>{let t=!0,n=!1;const r=e.length;let i=3;for(i;i{const t=e.length;let n=0;for(n;n{const{isPartiallyTransparent:n,isFullyTransparent:r}=mwe(e.data),i=ywe(t.data);return n?r?"txt2img":"outpaint":i?"inpaint":"img2img"},_we=e=>gee(e,n=>n.isEnabled&&(!!n.processedControlImage||n.processorType==="none"&&!!n.controlImage)),ls=(e,t,n)=>{const{isEnabled:r,controlNets:i}=e.controlNet,o=_we(i),s=t.nodes[Pt];if(r&&o.length&&o.length){const a={id:e0,type:"collect",is_intermediate:!0};t.nodes[e0]=a,t.edges.push({source:{node_id:e0,field:"collection"},destination:{node_id:n,field:"control"}}),o.forEach(l=>{const{controlNetId:u,controlImage:c,processedControlImage:d,beginStepPct:f,endStepPct:h,controlMode:p,resizeMode:m,model:b,processorType:_,weight:y}=l,g={id:`control_net_${u}`,type:"controlnet",is_intermediate:!0,begin_step_percent:f,end_step_percent:h,control_mode:p,resize_mode:m,control_model:b,control_weight:y};if(d&&_!=="none")g.image={image_name:d};else if(c)g.image={image_name:c};else return;if(t.nodes[g.id]=g,s!=null&&s.controlnets){const v=I_(g,["id","type"]);s.controlnets.push(v)}t.edges.push({source:{node_id:g.id,field:"control"},destination:{node_id:e0,field:"item"}})})}},Bu=(e,t)=>{const{positivePrompt:n,iterations:r,seed:i,shouldRandomizeSeed:o}=e.generation,{combinatorial:s,isEnabled:a,maxPrompts:l}=e.dynamicPrompts,u=t.nodes[Pt];if(a){cte(t.nodes[Ue],"prompt");const c={id:Nw,type:"dynamic_prompt",is_intermediate:!0,max_prompts:s?l:r,combinatorial:s,prompt:n},d={id:sn,type:"iterate",is_intermediate:!0};if(t.nodes[Nw]=c,t.nodes[sn]=d,t.edges.push({source:{node_id:Nw,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ue,field:"prompt"}}),u&&t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Pt,field:"positive_prompt"}}),o){const f={id:$r,type:"rand_int",is_intermediate:!0};t.nodes[$r]=f,t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Ee,field:"seed"}}),u&&t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Pt,field:"seed"}})}else t.nodes[Ee].seed=i,u&&(u.seed=i)}else{u&&(u.positive_prompt=n);const c={id:Xn,type:"range_of_size",is_intermediate:!0,size:r,step:1},d={id:sn,type:"iterate",is_intermediate:!0};if(t.nodes[sn]=d,t.nodes[Xn]=c,t.edges.push({source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}}),t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}}),u&&t.edges.push({source:{node_id:sn,field:"item"},destination:{node_id:Pt,field:"seed"}}),o){const f={id:$r,type:"rand_int",is_intermediate:!0};t.nodes[$r]=f,t.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else c.start=i}},us=(e,t,n)=>{var o,s;const{isIPAdapterEnabled:r,ipAdapterInfo:i}=e.controlNet;if(r&&i.model){const a={id:J2e,type:"ip_adapter",is_intermediate:!0,weight:i.weight,ip_adapter_model:{base_model:(o=i.model)==null?void 0:o.base_model,model_name:(s=i.model)==null?void 0:s.model_name},begin_step_percent:i.beginStepPct,end_step_percent:i.endStepPct};if(i.adapterImage)a.image={image_name:i.adapterImage.image_name};else return;t.nodes[a.id]=a,t.edges.push({source:{node_id:a.id,field:"ip_adapter"},destination:{node_id:n,field:"ip_adapter"}})}},yh=(e,t,n,r=Fu)=>{const{loras:i}=e.lora,o=O_(i),s=t.nodes[Pt];o>0&&(t.edges=t.edges.filter(u=>!(u.source.node_id===r&&["unet"].includes(u.source.field))),t.edges=t.edges.filter(u=>!(u.source.node_id===Gt&&["clip"].includes(u.source.field))));let a="",l=0;rs(i,u=>{const{model_name:c,base_model:d,weight:f}=u,h=`${Vz}_${c.replace(".","_")}`,p={type:"lora_loader",id:h,is_intermediate:!0,lora:{model_name:c,base_model:d},weight:f};s!=null&&s.loras&&s.loras.push({lora:{model_name:c,base_model:d},weight:f}),t.nodes[h]=p,l===0?(t.edges.push({source:{node_id:r,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:Gt,field:"clip"},destination:{node_id:h,field:"clip"}})):(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:h,field:"unet"}}),t.edges.push({source:{node_id:a,field:"clip"},destination:{node_id:h,field:"clip"}})),l===o-1&&(t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[MS,NS].includes(t.id)&&t.edges.push({source:{node_id:h,field:"unet"},destination:{node_id:_t,field:"unet"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:Ue,field:"clip"}}),t.edges.push({source:{node_id:h,field:"clip"},destination:{node_id:He,field:"clip"}})),a=h,l+=1})},BT=Fi(e=>e.ui,e=>jB[e.activeTab],{memoizeOptions:{equalityCheck:wm}}),RMe=Fi(e=>e.ui,e=>e.activeTab,{memoizeOptions:{equalityCheck:wm}}),IMe=Fi(e=>e.ui,e=>e,{memoizeOptions:{equalityCheck:wm}}),cs=(e,t,n=Ke)=>{const i=BT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Pt];if(!o)return;o.is_intermediate=!0;const a={id:Wd,type:"img_nsfw",is_intermediate:i};t.nodes[Wd]=a,t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Wd,field:"image"}}),s&&t.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Wd,field:"metadata"}})},ds=(e,t,n)=>{const{seamlessXAxis:r,seamlessYAxis:i}=e.generation;t.nodes[Br]={id:Br,type:"seamless",seamless_x:r,seamless_y:i};let o=Oe;(t.id===FT||t.id===R1||t.id===DS||t.id===Hg||t.id===Bc||t.id===zc)&&(o=Ce),t.edges=t.edges.filter(s=>!(s.source.node_id===n&&["unet"].includes(s.source.field))&&!(s.source.node_id===n&&["vae"].includes(s.source.field))),t.edges.push({source:{node_id:n,field:"unet"},destination:{node_id:Br,field:"unet"}},{source:{node_id:n,field:"vae"},destination:{node_id:Br,field:"vae"}},{source:{node_id:Br,field:"unet"},destination:{node_id:o,field:"unet"}}),(t.id==MS||t.id===NS||t.id===Bc||t.id===zc)&&t.edges.push({source:{node_id:Br,field:"unet"},destination:{node_id:_t,field:"unet"}})},fs=(e,t,n=Fu)=>{const{vae:r,canvasCoherenceMode:i}=e.generation,{boundingBoxScaleMethod:o}=e.canvas,{shouldUseSDXLRefiner:s}=e.sdxl,a=["auto","manual"].includes(o),l=!r,u=t.nodes[Pt];l||(t.nodes[qs]={type:"vae_loader",id:qs,is_intermediate:!0,vae_model:r});const c=n==OS;(t.id===Gz||t.id===f3||t.id===FT||t.id===R1)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ke,field:"vae"}}),(t.id===Hz||t.id===h3||t.id===DS||t.id==Hg)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:a?Ke:ye,field:"vae"}}),(t.id===f3||t.id===R1||t.id===h3||t.id===Hg)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Fn,field:"vae"}}),(t.id===MS||t.id===NS||t.id===Bc||t.id===zc)&&(t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Un,field:"vae"}},{source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Bn,field:"vae"}},{source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ke,field:"vae"}}),i!=="unmasked"&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Lt,field:"vae"}})),s&&(t.id===Bc||t.id===zc)&&t.edges.push({source:{node_id:l?n:qs,field:l&&c?"vae_decoder":"vae"},destination:{node_id:Ba,field:"vae"}}),r&&u&&(u.vae=r)},hs=(e,t,n=Ke)=>{const i=BT(e)==="unifiedCanvas"?!e.canvas.shouldAutoSave:!1,o=t.nodes[n],s=t.nodes[Wd],a=t.nodes[Pt];if(!o)return;const l={id:Wh,type:"img_watermark",is_intermediate:i};t.nodes[Wh]=l,o.is_intermediate=!0,s?(s.is_intermediate=!0,t.edges.push({source:{node_id:Wd,field:"image"},destination:{node_id:Wh,field:"image"}})):t.edges.push({source:{node_id:n,field:"image"},destination:{node_id:Wh,field:"image"}}),a&&t.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Wh,field:"metadata"}})},bwe=(e,t)=>{const n=ge("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,img2imgStrength:u,vaePrecision:c,clipSkip:d,shouldUseCpuNoise:f,shouldUseNoiseSettings:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{width:b,height:_}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:y,boundingBoxScaleMethod:g,shouldAutoSave:v}=e.canvas,S=c==="fp32",w=["auto","manual"].includes(g);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let x=Fu;const C=h?f:zs.shouldUseCpuNoise,A={id:h3,nodes:{[x]:{type:"main_model_loader",id:x,is_intermediate:!0,model:o},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:d},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:r},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:i},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,use_cpu:C,width:w?y.width:b,height:w?y.height:_},[Fn]:{type:"i2l",id:Fn,is_intermediate:!0},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:1-u,denoising_end:1},[ye]:{type:"l2i",id:ye,is_intermediate:!v}},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Oe,field:"latents"}}]};return w?(A.nodes[vf]={id:vf,type:"img_resize",is_intermediate:!0,image:t,width:y.width,height:y.height},A.nodes[Ke]={id:Ke,type:"l2i",is_intermediate:!0,fp32:S},A.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!v,width:b,height:_},A.edges.push({source:{node_id:vf,field:"image"},destination:{node_id:Fn,field:"image"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(A.nodes[ye]={type:"l2i",id:ye,is_intermediate:!v,fp32:S},A.nodes[Fn].image=t,A.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:ye,field:"latents"}})),A.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:w?y.width:b,height:w?y.height:_,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:C?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:d,strength:u,init_image:t.image_name},A.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(p||m)&&(ds(e,A,x),x=Br),yh(e,A,Oe),fs(e,A,x),Bu(e,A),ls(e,A,Oe),us(e,A,Oe),e.system.shouldUseNSFWChecker&&cs(e,A,ye),e.system.shouldUseWatermarker&&hs(e,A,ye),A},Swe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,maskBlurMethod:y,canvasCoherenceMode:g,canvasCoherenceSteps:v,canvasCoherenceStrength:S,clipSkip:w,seamlessXAxis:x,seamlessYAxis:C}=e.generation;if(!s)throw r.error("No Image found in state"),new Error("No Image found in state");const{width:A,height:T}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:k,boundingBoxScaleMethod:L,shouldAutoSave:N}=e.canvas,E=p==="fp32",P=["auto","manual"].includes(L);let D=Fu;const B=b,R={id:MS,nodes:{[D]:{type:"main_model_loader",id:D,is_intermediate:!0,model:s},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:w},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:i},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:o},[Oi]:{type:"img_blur",id:Oi,is_intermediate:!0,radius:_,blur_type:y},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:E},[Ee]:{type:"noise",id:Ee,use_cpu:B,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:E},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[yn]:{type:"noise",id:Ee,use_cpu:B,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:v,cfg_scale:a,scheduler:l,denoising_start:1-S,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:E},[ye]:{type:"color_correct",id:ye,is_intermediate:!N,reference:t},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:d,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:D,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:D,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:Oi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Oe,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:D,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(P){const I=k.width,O=k.height;R.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:I,height:O,image:t},R.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:I,height:O,image:n},R.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:A,height:T},R.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:A,height:T},R.nodes[Ee].width=I,R.nodes[Ee].height=O,R.nodes[yn].width=I,R.nodes[yn].height=O,R.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:Oi,field:"image"}},{source:{node_id:bi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else R.nodes[Ee].width=A,R.nodes[Ee].height=T,R.nodes[yn].width=A,R.nodes[yn].height=T,R.nodes[Un]={...R.nodes[Un],image:t},R.nodes[Oi]={...R.nodes[Oi],image:n},R.nodes[Bn]={...R.nodes[Bn],image:t},R.edges.push({source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:ye,field:"mask"}});if(g!=="unmasked"&&(R.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:E},P?R.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Lt,field:"image"}}):R.nodes[Lt]={...R.nodes[Lt],image:t},g==="mask"&&(P?R.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):R.nodes[Lt]={...R.nodes[Lt],mask:n}),g==="edge"&&(R.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},P?R.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):R.nodes[cr]={...R.nodes[cr],image:n},R.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),R.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),h){const I={id:$r,type:"rand_int"};R.nodes[$r]=I,R.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else R.nodes[Xn].start=f;return(x||C)&&(ds(e,R,D),D=Br),fs(e,R,D),yh(e,R,Oe,D),ls(e,R,Oe),us(e,R,Oe),e.system.shouldUseNSFWChecker&&cs(e,R,ye),e.system.shouldUseWatermarker&&hs(e,R,ye),R},wwe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,img2imgStrength:c,iterations:d,seed:f,shouldRandomizeSeed:h,vaePrecision:p,shouldUseNoiseSettings:m,shouldUseCpuNoise:b,maskBlur:_,canvasCoherenceMode:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,infillTileSize:S,infillPatchmatchDownscaleSize:w,infillMethod:x,clipSkip:C,seamlessXAxis:A,seamlessYAxis:T}=e.generation;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:E,shouldAutoSave:P}=e.canvas,D=p==="fp32",B=["auto","manual"].includes(E);let R=Fu;const I=b,O={id:NS,nodes:{[R]:{type:"main_model_loader",id:R,is_intermediate:!0,model:s},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:C},[Ue]:{type:"compel",id:Ue,is_intermediate:!0,prompt:i},[He]:{type:"compel",id:He,is_intermediate:!0,prompt:o},[_f]:{type:"tomask",id:_f,is_intermediate:!0,image:t},[vi]:{type:"mask_combine",id:vi,is_intermediate:!0,mask2:n},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:D},[Ee]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:D},[Oe]:{type:"denoise_latents",id:Oe,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:1-c,denoising_end:1},[yn]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:D},[ye]:{type:"color_correct",id:ye,is_intermediate:!P},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:d,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:_f,field:"image"},destination:{node_id:vi,field:"mask1"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:B?zn:vi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Oe,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(x==="patchmatch"&&(O.nodes[Ut]={type:"infill_patchmatch",id:Ut,is_intermediate:!0,downscale:w}),x==="lama"&&(O.nodes[Ut]={type:"infill_lama",id:Ut,is_intermediate:!0}),x==="cv2"&&(O.nodes[Ut]={type:"infill_cv2",id:Ut,is_intermediate:!0}),x==="tile"&&(O.nodes[Ut]={type:"infill_tile",id:Ut,is_intermediate:!0,tile_size:S}),B){const F=N.width,U=N.height;O.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:F,height:U,image:t},O.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:F,height:U},O.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},O.nodes[ql]={type:"img_resize",id:ql,is_intermediate:!0,width:k,height:L},O.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:k,height:L},O.nodes[Ee].width=F,O.nodes[Ee].height=U,O.nodes[yn].width=F,O.nodes[yn].height=U,O.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ut,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:zn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:Ut,field:"image"},destination:{node_id:ql,field:"image"}},{source:{node_id:ql,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else O.nodes[Ut]={...O.nodes[Ut],image:t},O.nodes[Ee].width=k,O.nodes[Ee].height=L,O.nodes[yn].width=k,O.nodes[yn].height=L,O.nodes[Un]={...O.nodes[Un],image:t},O.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:ye,field:"mask"}});if(y!=="unmasked"&&(O.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:D},O.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:Lt,field:"image"}}),y==="mask"&&(B?O.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):O.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Lt,field:"mask"}})),y==="edge"&&(O.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:_,edge_size:_*2,low_threshold:100,high_threshold:200},B?O.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):O.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:cr,field:"image"}}),O.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),O.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),h){const F={id:$r,type:"rand_int"};O.nodes[$r]=F,O.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else O.nodes[Xn].start=f;return(A||T)&&(ds(e,O,R),R=Br),fs(e,O,R),yh(e,O,Oe,R),ls(e,O,Oe),us(e,O,Oe),e.system.shouldUseNSFWChecker&&cs(e,O,ye),e.system.shouldUseWatermarker&&hs(e,O,ye),O},vh=(e,t,n,r=Mi)=>{const{loras:i}=e.lora,o=O_(i),s=t.nodes[Pt],a=r;let l=r;[Br,Ba].includes(r)&&(l=Mi),o>0&&(t.edges=t.edges.filter(d=>!(d.source.node_id===a&&["unet"].includes(d.source.field))&&!(d.source.node_id===l&&["clip"].includes(d.source.field))&&!(d.source.node_id===l&&["clip2"].includes(d.source.field))));let u="",c=0;rs(i,d=>{const{model_name:f,base_model:h,weight:p}=d,m=`${Vz}_${f.replace(".","_")}`,b={type:"sdxl_lora_loader",id:m,is_intermediate:!0,lora:{model_name:f,base_model:h},weight:p};s&&(s.loras||(s.loras=[]),s.loras.push({lora:{model_name:f,base_model:h},weight:p})),t.nodes[m]=b,c===0?(t.edges.push({source:{node_id:a,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:l,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:l,field:"clip2"},destination:{node_id:m,field:"clip2"}})):(t.edges.push({source:{node_id:u,field:"unet"},destination:{node_id:m,field:"unet"}}),t.edges.push({source:{node_id:u,field:"clip"},destination:{node_id:m,field:"clip"}}),t.edges.push({source:{node_id:u,field:"clip2"},destination:{node_id:m,field:"clip2"}})),c===o-1&&(t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:n,field:"unet"}}),t.id&&[Bc,zc].includes(t.id)&&t.edges.push({source:{node_id:m,field:"unet"},destination:{node_id:_t,field:"unet"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:Ue,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip"},destination:{node_id:He,field:"clip"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:Ue,field:"clip2"}}),t.edges.push({source:{node_id:m,field:"clip2"},destination:{node_id:He,field:"clip2"}})),u=m,c+=1})},sd=(e,t)=>{const{positivePrompt:n,negativePrompt:r}=e.generation,{positiveStylePrompt:i,negativeStylePrompt:o}=e.sdxl;let s=i,a=o;return t&&(i.length>0?s=`${n} ${i}`:s=n,o.length>0?a=`${r} ${o}`:a=r),{craftedPositiveStylePrompt:s,craftedNegativeStylePrompt:a}},_h=(e,t,n,r,i)=>{const{refinerModel:o,refinerPositiveAestheticScore:s,refinerNegativeAestheticScore:a,refinerSteps:l,refinerScheduler:u,refinerCFGScale:c,refinerStart:d}=e.sdxl,{seamlessXAxis:f,seamlessYAxis:h,vaePrecision:p}=e.generation,{boundingBoxScaleMethod:m}=e.canvas,b=p==="fp32",_=["auto","manual"].includes(m);if(!o)return;const y=t.nodes[Pt];y&&(y.refiner_model=o,y.refiner_positive_aesthetic_score=s,y.refiner_negative_aesthetic_score=a,y.refiner_cfg_scale=c,y.refiner_scheduler=u,y.refiner_start=d,y.refiner_steps=l);const g=r||Mi,{craftedPositiveStylePrompt:v,craftedNegativeStylePrompt:S}=sd(e,!0);t.edges=t.edges.filter(w=>!(w.source.node_id===n&&["latents"].includes(w.source.field))),t.edges=t.edges.filter(w=>!(w.source.node_id===g&&["vae"].includes(w.source.field))),t.nodes[Ku]={type:"sdxl_refiner_model_loader",id:Ku,model:o},t.nodes[t0]={type:"sdxl_refiner_compel_prompt",id:t0,style:v,aesthetic_score:s},t.nodes[n0]={type:"sdxl_refiner_compel_prompt",id:n0,style:S,aesthetic_score:a},t.nodes[Ws]={type:"denoise_latents",id:Ws,cfg_scale:c,steps:l,scheduler:u,denoising_start:d,denoising_end:1},f||h?(t.nodes[As]={id:As,type:"seamless",seamless_x:f,seamless_y:h},t.edges.push({source:{node_id:Ku,field:"unet"},destination:{node_id:As,field:"unet"}},{source:{node_id:Ku,field:"vae"},destination:{node_id:As,field:"vae"}},{source:{node_id:As,field:"unet"},destination:{node_id:Ws,field:"unet"}})):t.edges.push({source:{node_id:Ku,field:"unet"},destination:{node_id:Ws,field:"unet"}}),t.edges.push({source:{node_id:Ku,field:"clip2"},destination:{node_id:t0,field:"clip2"}},{source:{node_id:Ku,field:"clip2"},destination:{node_id:n0,field:"clip2"}},{source:{node_id:t0,field:"conditioning"},destination:{node_id:Ws,field:"positive_conditioning"}},{source:{node_id:n0,field:"conditioning"},destination:{node_id:Ws,field:"negative_conditioning"}},{source:{node_id:n,field:"latents"},destination:{node_id:Ws,field:"latents"}}),(t.id===Bc||t.id===zc)&&(t.nodes[Ba]={type:"create_denoise_mask",id:Ba,is_intermediate:!0,fp32:b},_?t.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ba,field:"image"}}):t.nodes[Ba]={...t.nodes[Ba],image:i},t.edges.push({source:{node_id:_?zn:vi,field:"image"},destination:{node_id:Ba,field:"mask"}},{source:{node_id:Ba,field:"denoise_mask"},destination:{node_id:Ws,field:"denoise_mask"}})),t.id===DS||t.id===Hg?t.edges.push({source:{node_id:Ws,field:"latents"},destination:{node_id:_?Ke:ye,field:"latents"}}):t.edges.push({source:{node_id:Ws,field:"latents"},destination:{node_id:Ke,field:"latents"}})},xwe=(e,t)=>{const n=ge("nodes"),{positivePrompt:r,negativePrompt:i,model:o,cfgScale:s,scheduler:a,steps:l,vaePrecision:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,seamlessXAxis:h,seamlessYAxis:p}=e.generation,{shouldUseSDXLRefiner:m,refinerStart:b,sdxlImg2ImgDenoisingStrength:_,shouldConcatSDXLStylePrompt:y}=e.sdxl,{width:g,height:v}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:S,boundingBoxScaleMethod:w,shouldAutoSave:x}=e.canvas,C=u==="fp32",A=["auto","manual"].includes(w);if(!o)throw n.error("No model found in state"),new Error("No model found in state");let T=Mi;const k=f?d:zs.shouldUseCpuNoise,{craftedPositiveStylePrompt:L,craftedNegativeStylePrompt:N}=sd(e,y),E={id:Hg,nodes:{[T]:{type:"sdxl_model_loader",id:T,model:o},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:r,style:L},[He]:{type:"sdxl_compel_prompt",id:He,prompt:i,style:N},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,use_cpu:k,width:A?S.width:g,height:A?S.height:v},[Fn]:{type:"i2l",id:Fn,is_intermediate:!0,fp32:C},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,cfg_scale:s,scheduler:a,steps:l,denoising_start:m?Math.min(b,1-_):1-_,denoising_end:m?b:1}},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Ce,field:"latents"}}]};return A?(E.nodes[vf]={id:vf,type:"img_resize",is_intermediate:!0,image:t,width:S.width,height:S.height},E.nodes[Ke]={id:Ke,type:"l2i",is_intermediate:!0,fp32:C},E.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!x,width:g,height:v},E.edges.push({source:{node_id:vf,field:"image"},destination:{node_id:Fn,field:"image"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(E.nodes[ye]={type:"l2i",id:ye,is_intermediate:!x,fp32:C},E.nodes[Fn].image=t,E.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:ye,field:"latents"}})),E.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:s,width:A?S.width:g,height:A?S.height:v,positive_prompt:"",negative_prompt:i,model:o,seed:0,steps:l,rand_device:k?"cpu":"cuda",scheduler:a,vae:void 0,controlnets:[],loras:[],clip_skip:c,strength:_,init_image:t.image_name},E.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(h||p)&&(ds(e,E,T),T=Br),m&&(_h(e,E,Ce,T),(h||p)&&(T=As)),fs(e,E,T),vh(e,E,Ce,T),Bu(e,E),ls(e,E,Ce),us(e,E,Ce),e.system.shouldUseNSFWChecker&&cs(e,E,ye),e.system.shouldUseWatermarker&&hs(e,E,ye),E},Cwe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,maskBlurMethod:_,canvasCoherenceMode:y,canvasCoherenceSteps:g,canvasCoherenceStrength:v,seamlessXAxis:S,seamlessYAxis:w}=e.generation,{sdxlImg2ImgDenoisingStrength:x,shouldUseSDXLRefiner:C,refinerStart:A,shouldConcatSDXLStylePrompt:T}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:k,height:L}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:N,boundingBoxScaleMethod:E,shouldAutoSave:P}=e.canvas,D=h==="fp32",B=["auto","manual"].includes(E);let R=Mi;const I=m,{craftedPositiveStylePrompt:O,craftedNegativeStylePrompt:F}=sd(e,T),U={id:Bc,nodes:{[R]:{type:"sdxl_model_loader",id:R,model:s},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:i,style:O},[He]:{type:"sdxl_compel_prompt",id:He,prompt:o,style:F},[Oi]:{type:"img_blur",id:Oi,is_intermediate:!0,radius:b,blur_type:_},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:D},[Ee]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:D},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:C?Math.min(A,1-x):1-x,denoising_end:C?A:1},[yn]:{type:"noise",id:Ee,use_cpu:I,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:g,cfg_scale:a,scheduler:l,denoising_start:1-v,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:D},[ye]:{type:"color_correct",id:ye,is_intermediate:!P,reference:t},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:c,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:R,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:R,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:R,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:R,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:Oi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Ce,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:R,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(B){const V=N.width,H=N.height;U.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:V,height:H,image:t},U.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:V,height:H,image:n},U.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:k,height:L},U.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:k,height:L},U.nodes[Ee].width=V,U.nodes[Ee].height=H,U.nodes[yn].width=V,U.nodes[yn].height=H,U.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:Oi,field:"image"}},{source:{node_id:bi,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else U.nodes[Ee].width=k,U.nodes[Ee].height=L,U.nodes[yn].width=k,U.nodes[yn].height=L,U.nodes[Un]={...U.nodes[Un],image:t},U.nodes[Oi]={...U.nodes[Oi],image:n},U.nodes[Bn]={...U.nodes[Bn],image:t},U.edges.push({source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:Oi,field:"image"},destination:{node_id:ye,field:"mask"}});if(y!=="unmasked"&&(U.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:D},B?U.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Lt,field:"image"}}):U.nodes[Lt]={...U.nodes[Lt],image:t},y==="mask"&&(B?U.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):U.nodes[Lt]={...U.nodes[Lt],mask:n}),y==="edge"&&(U.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},B?U.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):U.nodes[cr]={...U.nodes[cr],image:n},U.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),U.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),f){const V={id:$r,type:"rand_int"};U.nodes[$r]=V,U.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else U.nodes[Xn].start=d;return(S||w)&&(ds(e,U,R),R=Br),C&&(_h(e,U,_t,R,t),(S||w)&&(R=As)),fs(e,U,R),vh(e,U,Ce,R),ls(e,U,Ce),us(e,U,Ce),e.system.shouldUseNSFWChecker&&cs(e,U,ye),e.system.shouldUseWatermarker&&hs(e,U,ye),U},Ewe=(e,t,n)=>{const r=ge("nodes"),{positivePrompt:i,negativePrompt:o,model:s,cfgScale:a,scheduler:l,steps:u,iterations:c,seed:d,shouldRandomizeSeed:f,vaePrecision:h,shouldUseNoiseSettings:p,shouldUseCpuNoise:m,maskBlur:b,canvasCoherenceMode:_,canvasCoherenceSteps:y,canvasCoherenceStrength:g,infillTileSize:v,infillPatchmatchDownscaleSize:S,infillMethod:w,seamlessXAxis:x,seamlessYAxis:C}=e.generation,{sdxlImg2ImgDenoisingStrength:A,shouldUseSDXLRefiner:T,refinerStart:k,shouldConcatSDXLStylePrompt:L}=e.sdxl;if(!s)throw r.error("No model found in state"),new Error("No model found in state");const{width:N,height:E}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:P,boundingBoxScaleMethod:D,shouldAutoSave:B}=e.canvas,R=h==="fp32",I=["auto","manual"].includes(D);let O=Mi;const F=m,{craftedPositiveStylePrompt:U,craftedNegativeStylePrompt:V}=sd(e,L),H={id:zc,nodes:{[Mi]:{type:"sdxl_model_loader",id:Mi,model:s},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:i,style:U},[He]:{type:"sdxl_compel_prompt",id:He,prompt:o,style:V},[_f]:{type:"tomask",id:_f,is_intermediate:!0,image:t},[vi]:{type:"mask_combine",id:vi,is_intermediate:!0,mask2:n},[Un]:{type:"i2l",id:Un,is_intermediate:!0,fp32:R},[Ee]:{type:"noise",id:Ee,use_cpu:F,is_intermediate:!0},[Bn]:{type:"create_denoise_mask",id:Bn,is_intermediate:!0,fp32:R},[Ce]:{type:"denoise_latents",id:Ce,is_intermediate:!0,steps:u,cfg_scale:a,scheduler:l,denoising_start:T?Math.min(k,1-A):1-A,denoising_end:T?k:1},[yn]:{type:"noise",id:Ee,use_cpu:F,is_intermediate:!0},[Li]:{type:"add",id:Li,b:1,is_intermediate:!0},[_t]:{type:"denoise_latents",id:_t,is_intermediate:!0,steps:y,cfg_scale:a,scheduler:l,denoising_start:1-g,denoising_end:1},[Ke]:{type:"l2i",id:Ke,is_intermediate:!0,fp32:R},[ye]:{type:"color_correct",id:ye,is_intermediate:!B},[Xn]:{type:"range_of_size",id:Xn,is_intermediate:!0,size:c,step:1},[sn]:{type:"iterate",id:sn,is_intermediate:!0}},edges:[{source:{node_id:Mi,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:Mi,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Mi,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:Mi,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Mi,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Un,field:"image"}},{source:{node_id:_f,field:"image"},destination:{node_id:vi,field:"mask1"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Un,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:I?zn:vi,field:"image"},destination:{node_id:Bn,field:"mask"}},{source:{node_id:Bn,field:"denoise_mask"},destination:{node_id:Ce,field:"denoise_mask"}},{source:{node_id:Xn,field:"collection"},destination:{node_id:sn,field:"collection"}},{source:{node_id:sn,field:"item"},destination:{node_id:Ee,field:"seed"}},{source:{node_id:sn,field:"item"},destination:{node_id:Li,field:"a"}},{source:{node_id:Li,field:"value"},destination:{node_id:yn,field:"seed"}},{source:{node_id:O,field:"unet"},destination:{node_id:_t,field:"unet"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:_t,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:_t,field:"negative_conditioning"}},{source:{node_id:yn,field:"noise"},destination:{node_id:_t,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:_t,field:"latents"}},{source:{node_id:Ut,field:"image"},destination:{node_id:Bn,field:"image"}},{source:{node_id:_t,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(w==="patchmatch"&&(H.nodes[Ut]={type:"infill_patchmatch",id:Ut,is_intermediate:!0,downscale:S}),w==="lama"&&(H.nodes[Ut]={type:"infill_lama",id:Ut,is_intermediate:!0}),w==="cv2"&&(H.nodes[Ut]={type:"infill_cv2",id:Ut,is_intermediate:!0}),w==="tile"&&(H.nodes[Ut]={type:"infill_tile",id:Ut,is_intermediate:!0,tile_size:v}),I){const Y=P.width,Q=P.height;H.nodes[bi]={type:"img_resize",id:bi,is_intermediate:!0,width:Y,height:Q,image:t},H.nodes[zn]={type:"img_resize",id:zn,is_intermediate:!0,width:Y,height:Q},H.nodes[Di]={type:"img_resize",id:Di,is_intermediate:!0,width:N,height:E},H.nodes[ql]={type:"img_resize",id:ql,is_intermediate:!0,width:N,height:E},H.nodes[$i]={type:"img_resize",id:$i,is_intermediate:!0,width:N,height:E},H.nodes[Ee].width=Y,H.nodes[Ee].height=Q,H.nodes[yn].width=Y,H.nodes[yn].height=Q,H.edges.push({source:{node_id:bi,field:"image"},destination:{node_id:Ut,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:zn,field:"image"}},{source:{node_id:Ke,field:"image"},destination:{node_id:Di,field:"image"}},{source:{node_id:zn,field:"image"},destination:{node_id:$i,field:"image"}},{source:{node_id:Ut,field:"image"},destination:{node_id:ql,field:"image"}},{source:{node_id:ql,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Di,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:$i,field:"image"},destination:{node_id:ye,field:"mask"}})}else H.nodes[Ut]={...H.nodes[Ut],image:t},H.nodes[Ee].width=N,H.nodes[Ee].height=E,H.nodes[yn].width=N,H.nodes[yn].height=E,H.nodes[Un]={...H.nodes[Un],image:t},H.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:ye,field:"reference"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}},{source:{node_id:vi,field:"image"},destination:{node_id:ye,field:"mask"}});if(_!=="unmasked"&&(H.nodes[Lt]={type:"create_denoise_mask",id:Lt,is_intermediate:!0,fp32:R},H.edges.push({source:{node_id:Ut,field:"image"},destination:{node_id:Lt,field:"image"}}),_==="mask"&&(I?H.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:Lt,field:"mask"}}):H.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:Lt,field:"mask"}})),_==="edge"&&(H.nodes[cr]={type:"mask_edge",id:cr,is_intermediate:!0,edge_blur:b,edge_size:b*2,low_threshold:100,high_threshold:200},I?H.edges.push({source:{node_id:zn,field:"image"},destination:{node_id:cr,field:"image"}}):H.edges.push({source:{node_id:vi,field:"image"},destination:{node_id:cr,field:"image"}}),H.edges.push({source:{node_id:cr,field:"image"},destination:{node_id:Lt,field:"mask"}})),H.edges.push({source:{node_id:Lt,field:"denoise_mask"},destination:{node_id:_t,field:"denoise_mask"}})),f){const Y={id:$r,type:"rand_int"};H.nodes[$r]=Y,H.edges.push({source:{node_id:$r,field:"value"},destination:{node_id:Xn,field:"start"}})}else H.nodes[Xn].start=d;return(x||C)&&(ds(e,H,O),O=Br),T&&(_h(e,H,_t,O,t),(x||C)&&(O=As)),fs(e,H,O),vh(e,H,Ce,O),ls(e,H,Ce),us(e,H,Ce),e.system.shouldUseNSFWChecker&&cs(e,H,ye),e.system.shouldUseWatermarker&&hs(e,H,ye),H},Twe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=l==="fp32",v=["auto","manual"].includes(_),{shouldUseSDXLRefiner:S,refinerStart:w,shouldConcatSDXLStylePrompt:x}=e.sdxl;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const C=d?c:zs.shouldUseCpuNoise,A=i.model_type==="onnx";let T=A?OS:Mi;const k=A?"onnx_model_loader":"sdxl_model_loader",L=A?{type:"t2l_onnx",id:Ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Ce,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:S?w:1},{craftedPositiveStylePrompt:N,craftedNegativeStylePrompt:E}=sd(e,x),P={id:DS,nodes:{[T]:{type:k,id:T,is_intermediate:!0,model:i},[Ue]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:Ue,is_intermediate:!0,prompt:n,style:N},[He]:{type:A?"prompt_onnx":"sdxl_compel_prompt",id:He,is_intermediate:!0,prompt:r,style:E},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,width:v?b.width:p,height:v?b.height:m,use_cpu:C},[L.id]:L},edges:[{source:{node_id:T,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:T,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:T,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:T,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}}]};return v?(P.nodes[Ke]={id:Ke,type:A?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},P.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!y,width:p,height:m},P.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(P.nodes[ye]={type:A?"l2i_onnx":"l2i",id:ye,is_intermediate:!y,fp32:g},P.edges.push({source:{node_id:Ce,field:"latents"},destination:{node_id:ye,field:"latents"}})),P.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:v?b.width:p,height:v?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:C?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},P.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(f||h)&&(ds(e,P,T),T=Br),S&&(_h(e,P,Ce,T),(f||h)&&(T=As)),vh(e,P,Ce,T),fs(e,P,T),Bu(e,P),ls(e,P,Ce),us(e,P,Ce),e.system.shouldUseNSFWChecker&&cs(e,P,ye),e.system.shouldUseWatermarker&&hs(e,P,ye),P},Awe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,vaePrecision:l,clipSkip:u,shouldUseCpuNoise:c,shouldUseNoiseSettings:d,seamlessXAxis:f,seamlessYAxis:h}=e.generation,{width:p,height:m}=e.canvas.boundingBoxDimensions,{scaledBoundingBoxDimensions:b,boundingBoxScaleMethod:_,shouldAutoSave:y}=e.canvas,g=l==="fp32",v=["auto","manual"].includes(_);if(!i)throw t.error("No model found in state"),new Error("No model found in state");const S=d?c:zs.shouldUseCpuNoise,w=i.model_type==="onnx";let x=w?OS:Fu;const C=w?"onnx_model_loader":"main_model_loader",A=w?{type:"t2l_onnx",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},T={id:Hz,nodes:{[x]:{type:C,id:x,is_intermediate:!0,model:i},[Gt]:{type:"clip_skip",id:Gt,is_intermediate:!0,skipped_layers:u},[Ue]:{type:w?"prompt_onnx":"compel",id:Ue,is_intermediate:!0,prompt:n},[He]:{type:w?"prompt_onnx":"compel",id:He,is_intermediate:!0,prompt:r},[Ee]:{type:"noise",id:Ee,is_intermediate:!0,width:v?b.width:p,height:v?b.height:m,use_cpu:S},[A.id]:A},edges:[{source:{node_id:x,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:x,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}}]};return v?(T.nodes[Ke]={id:Ke,type:w?"l2i_onnx":"l2i",is_intermediate:!0,fp32:g},T.nodes[ye]={id:ye,type:"img_resize",is_intermediate:!y,width:p,height:m},T.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}},{source:{node_id:Ke,field:"image"},destination:{node_id:ye,field:"image"}})):(T.nodes[ye]={type:w?"l2i_onnx":"l2i",id:ye,is_intermediate:!y,fp32:g},T.edges.push({source:{node_id:Oe,field:"latents"},destination:{node_id:ye,field:"latents"}})),T.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,width:v?b.width:p,height:v?b.height:m,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:u},T.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:ye,field:"metadata"}}),(f||h)&&(ds(e,T,x),x=Br),fs(e,T,x),yh(e,T,Oe,x),Bu(e,T),ls(e,T,Oe),us(e,T,Oe),e.system.shouldUseNSFWChecker&&cs(e,T,ye),e.system.shouldUseWatermarker&&hs(e,T,ye),T},kwe=(e,t,n,r)=>{let i;if(t==="txt2img")e.generation.model&&e.generation.model.base_model==="sdxl"?i=Twe(e):i=Awe(e);else if(t==="img2img"){if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=xwe(e,n):i=bwe(e,n)}else if(t==="inpaint"){if(!n||!r)throw new Error("Missing canvas init and mask images");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Cwe(e,n,r):i=Swe(e,n,r)}else{if(!n)throw new Error("Missing canvas init image");e.generation.model&&e.generation.model.base_model==="sdxl"?i=Ewe(e,n,r):i=wwe(e,n,r)}return i},Pwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="unifiedCanvas",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),{layerState:s,boundingBoxCoordinates:a,boundingBoxDimensions:l,isMaskEnabled:u,shouldPreserveMaskedArea:c}=o.canvas,d=await DT(s,a,l,u,c);if(!d){i.error("Unable to create canvas data");return}const{baseBlob:f,baseImageData:h,maskBlob:p,maskImageData:m}=d,b=vwe(h,m);if(o.system.enableImageDebugging){const x=await kR(f),C=await kR(p);gwe([{base64:C,caption:"mask b64"},{base64:x,caption:"image b64"}])}i.debug(`Generation mode: ${b}`);let _,y;["img2img","inpaint","outpaint"].includes(b)&&(_=await n(pe.endpoints.uploadImage.initiate({file:new File([f],"canvasInitImage.png",{type:"image/png"}),image_category:"general",is_intermediate:!0})).unwrap()),["inpaint","outpaint"].includes(b)&&(y=await n(pe.endpoints.uploadImage.initiate({file:new File([p],"canvasMaskImage.png",{type:"image/png"}),image_category:"mask",is_intermediate:!0})).unwrap());const g=kwe(o,b,_,y);i.debug({graph:mn(g)},"Canvas graph built"),n(ZB(g));const{requestId:v}=n(xi({graph:g})),[S]=await r(x=>xi.fulfilled.match(x)&&x.meta.requestId===v),w=S.payload.id;["img2img","inpaint"].includes(b)&&_&&n(pe.endpoints.changeImageSessionId.initiate({imageDTO:_,session_id:w})),["inpaint"].includes(b)&&y&&n(pe.endpoints.changeImageSessionId.initiate({imageDTO:y,session_id:w})),o.canvas.layerState.stagingArea.boundingBox||n(ere({sessionId:w,boundingBox:{...o.canvas.boundingBoxCoordinates,...o.canvas.boundingBoxDimensions}})),n(tre(w)),n(od())}})},Rwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,img2imgStrength:u,shouldFitToWidthHeight:c,width:d,height:f,clipSkip:h,shouldUseCpuNoise:p,shouldUseNoiseSettings:m,vaePrecision:b,seamlessXAxis:_,seamlessYAxis:y}=e.generation;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const g=b==="fp32";let v=Fu;const S=m?p:zs.shouldUseCpuNoise,w={id:f3,nodes:{[v]:{type:"main_model_loader",id:v,model:i},[Gt]:{type:"clip_skip",id:Gt,skipped_layers:h},[Ue]:{type:"compel",id:Ue,prompt:n},[He]:{type:"compel",id:He,prompt:r},[Ee]:{type:"noise",id:Ee,use_cpu:S},[Ke]:{type:"l2i",id:Ke,fp32:g},[Oe]:{type:"denoise_latents",id:Oe,cfg_scale:o,scheduler:s,steps:a,denoising_start:1-u,denoising_end:1},[Fn]:{type:"i2l",id:Fn,fp32:g}},edges:[{source:{node_id:v,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:v,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Oe,field:"latents"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(c&&(l.width!==d||l.height!==f)){const x={id:ra,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:d,height:f};w.nodes[ra]=x,w.edges.push({source:{node_id:ra,field:"image"},destination:{node_id:Fn,field:"image"}}),w.edges.push({source:{node_id:ra,field:"width"},destination:{node_id:Ee,field:"width"}}),w.edges.push({source:{node_id:ra,field:"height"},destination:{node_id:Ee,field:"height"}})}else w.nodes[Fn].image={image_name:l.imageName},w.edges.push({source:{node_id:Fn,field:"width"},destination:{node_id:Ee,field:"width"}}),w.edges.push({source:{node_id:Fn,field:"height"},destination:{node_id:Ee,field:"height"}});return w.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"img2img",cfg_scale:o,height:f,width:d,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:h,strength:u,init_image:l.imageName},w.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(_||y)&&(ds(e,w,v),v=Br),fs(e,w,v),yh(e,w,Oe,v),Bu(e,w),ls(e,w,Oe),us(e,w,Oe),e.system.shouldUseNSFWChecker&&cs(e,w),e.system.shouldUseWatermarker&&hs(e,w),w},Iwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,initialImage:l,shouldFitToWidthHeight:u,width:c,height:d,clipSkip:f,shouldUseCpuNoise:h,shouldUseNoiseSettings:p,vaePrecision:m,seamlessXAxis:b,seamlessYAxis:_}=e.generation,{positiveStylePrompt:y,negativeStylePrompt:g,shouldConcatSDXLStylePrompt:v,shouldUseSDXLRefiner:S,refinerStart:w,sdxlImg2ImgDenoisingStrength:x}=e.sdxl;if(!l)throw t.error("No initial image found in state"),new Error("No initial image found in state");if(!i)throw t.error("No model found in state"),new Error("No model found in state");const C=m==="fp32";let A=Mi;const T=p?h:zs.shouldUseCpuNoise,{craftedPositiveStylePrompt:k,craftedNegativeStylePrompt:L}=sd(e,v),N={id:R1,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:n,style:k},[He]:{type:"sdxl_compel_prompt",id:He,prompt:r,style:L},[Ee]:{type:"noise",id:Ee,use_cpu:T},[Ke]:{type:"l2i",id:Ke,fp32:C},[Ce]:{type:"denoise_latents",id:Ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:S?Math.min(w,1-x):1-x,denoising_end:S?w:1},[Fn]:{type:"i2l",id:Fn,fp32:C}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Fn,field:"latents"},destination:{node_id:Ce,field:"latents"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};if(u&&(l.width!==c||l.height!==d)){const E={id:ra,type:"img_resize",image:{image_name:l.imageName},is_intermediate:!0,width:c,height:d};N.nodes[ra]=E,N.edges.push({source:{node_id:ra,field:"image"},destination:{node_id:Fn,field:"image"}}),N.edges.push({source:{node_id:ra,field:"width"},destination:{node_id:Ee,field:"width"}}),N.edges.push({source:{node_id:ra,field:"height"},destination:{node_id:Ee,field:"height"}})}else N.nodes[Fn].image={image_name:l.imageName},N.edges.push({source:{node_id:Fn,field:"width"},destination:{node_id:Ee,field:"width"}}),N.edges.push({source:{node_id:Fn,field:"height"},destination:{node_id:Ee,field:"height"}});return N.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"sdxl_img2img",cfg_scale:o,height:d,width:c,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:T?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:f,strength:x,init_image:l.imageName,positive_style_prompt:y,negative_style_prompt:g},N.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(b||_)&&(ds(e,N,A),A=Br),S&&(_h(e,N,Ce),(b||_)&&(A=As)),fs(e,N,A),vh(e,N,Ce,A),ls(e,N,Ce),us(e,N,Ce),Bu(e,N),e.system.shouldUseNSFWChecker&&cs(e,N),e.system.shouldUseWatermarker&&hs(e,N),N},Owe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="img2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=Iwe(o):a=Rwe(o),n(YB(a)),i.debug({graph:mn(a)},"Image to Image graph built"),n(xi({graph:a})),await r(xi.fulfilled.match),n(od())}})},Mwe=/[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*/u;function Nwe(e){return e.length===1?e[0].toString():e.reduce((t,n)=>{if(typeof n=="number")return t+"["+n.toString()+"]";if(n.includes('"'))return t+'["'+Dwe(n)+'"]';if(!Mwe.test(n))return t+'["'+n+'"]';const r=t.length===0?"":".";return t+r+n},"")}function Dwe(e){return e.replace(/"/g,'\\"')}function Lwe(e){return e.length!==0}const $we=99,qz="; ",Wz=", or ",zT="Validation error",Kz=": ";class Xz extends Error{constructor(n,r=[]){super(n);e2(this,"details");e2(this,"name");this.details=r,this.name="ZodValidationError"}toString(){return this.message}}function UT(e,t,n){if(e.code==="invalid_union")return e.unionErrors.reduce((r,i)=>{const o=i.issues.map(s=>UT(s,t,n)).join(t);return r.includes(o)||r.push(o),r},[]).join(n);if(Lwe(e.path)){if(e.path.length===1){const r=e.path[0];if(typeof r=="number")return`${e.message} at index ${r}`}return`${e.message} at "${Nwe(e.path)}"`}return e.message}function Qz(e,t,n){return t!==null?e.length>0?[t,e].join(n):t:e.length>0?e:zT}function OMe(e,t={}){const{issueSeparator:n=qz,unionSeparator:r=Wz,prefixSeparator:i=Kz,prefix:o=zT}=t,s=UT(e,n,r),a=Qz(s,o,i);return new Xz(a,[e])}function PR(e,t={}){const{maxIssuesInMessage:n=$we,issueSeparator:r=qz,unionSeparator:i=Wz,prefixSeparator:o=Kz,prefix:s=zT}=t,a=e.errors.slice(0,n).map(u=>UT(u,r,i)).join(r),l=Qz(a,s,o);return new Xz(l,e.errors)}const Fwe=e=>{const{workflow:t,nodes:n,edges:r}=e,i={...t,nodes:[],edges:[]};return n.filter(o=>["invocation","notes"].includes(o.type??"__UNKNOWN_NODE_TYPE__")).forEach(o=>{const s=LD.safeParse(o);if(!s.success){const{message:a}=PR(s.error,{prefix:we.t("nodes.unableToParseNode")});ge("nodes").warn({node:mn(o)},a);return}i.nodes.push(s.data)}),r.forEach(o=>{const s=$D.safeParse(o);if(!s.success){const{message:a}=PR(s.error,{prefix:we.t("nodes.unableToParseEdge")});ge("nodes").warn({edge:mn(o)},a);return}i.edges.push(s.data)}),i},Bwe=e=>{if(e.type==="ColorField"&&e.value){const t=Jn(e.value),{r:n,g:r,b:i,a:o}=e.value,s=Math.max(0,Math.min(o*255,255));return Object.assign(t,{r:n,g:r,b:i,a:s}),t}return e.value},zwe=e=>{const{nodes:t,edges:n}=e,r=t.filter(Kr),i=JSON.stringify(Fwe(e)),o=r.reduce((u,c)=>{const{id:d,data:f}=c,{type:h,inputs:p,isIntermediate:m,embedWorkflow:b}=f,_=hC(p,(g,v,S)=>{const w=Bwe(v);return g[S]=w,g},{}),y={type:h,id:d,..._,is_intermediate:m};return b&&Object.assign(y,{workflow:i}),Object.assign(u,{[d]:y}),u},{}),a=n.filter(u=>u.type!=="collapsed").reduce((u,c)=>{const{source:d,target:f,sourceHandle:h,targetHandle:p}=c;return u.push({source:{node_id:d,field:h},destination:{node_id:f,field:p}}),u},[]);return a.forEach(u=>{const c=o[u.destination.node_id],d=u.destination.field;o[u.destination.node_id]=I_(c,d)}),{id:kB(),nodes:o,edges:a}},Uwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="nodes",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=zwe(o.nodes);n(JB(s)),i.debug({graph:mn(s)},"Nodes graph built"),n(xi({graph:s})),await r(xi.fulfilled.match),n(od())}})},jwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,{positiveStylePrompt:b,negativeStylePrompt:_,shouldUseSDXLRefiner:y,shouldConcatSDXLStylePrompt:g,refinerStart:v}=e.sdxl,S=f?d:zs.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const w=h==="fp32",{craftedPositiveStylePrompt:x,craftedNegativeStylePrompt:C}=sd(e,g);let A=Mi;const T={id:FT,nodes:{[A]:{type:"sdxl_model_loader",id:A,model:i},[Ue]:{type:"sdxl_compel_prompt",id:Ue,prompt:n,style:x},[He]:{type:"sdxl_compel_prompt",id:He,prompt:r,style:C},[Ee]:{type:"noise",id:Ee,width:l,height:u,use_cpu:S},[Ce]:{type:"denoise_latents",id:Ce,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:y?v:1},[Ke]:{type:"l2i",id:Ke,fp32:w}},edges:[{source:{node_id:A,field:"unet"},destination:{node_id:Ce,field:"unet"}},{source:{node_id:A,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:Ue,field:"clip2"}},{source:{node_id:A,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:A,field:"clip2"},destination:{node_id:He,field:"clip2"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Ce,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Ce,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Ce,field:"noise"}},{source:{node_id:Ce,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};return T.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"sdxl_txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:S?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c,positive_style_prompt:b,negative_style_prompt:_},T.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(p||m)&&(ds(e,T,A),A=Br),y&&(_h(e,T,Ce),(p||m)&&(A=As)),fs(e,T,A),vh(e,T,Ce,A),ls(e,T,Ce),us(e,T,Ce),Bu(e,T),e.system.shouldUseNSFWChecker&&cs(e,T),e.system.shouldUseWatermarker&&hs(e,T),T},Vwe=e=>{const t=ge("nodes"),{positivePrompt:n,negativePrompt:r,model:i,cfgScale:o,scheduler:s,steps:a,width:l,height:u,clipSkip:c,shouldUseCpuNoise:d,shouldUseNoiseSettings:f,vaePrecision:h,seamlessXAxis:p,seamlessYAxis:m}=e.generation,b=f?d:zs.shouldUseCpuNoise;if(!i)throw t.error("No model found in state"),new Error("No model found in state");const _=h==="fp32",y=i.model_type==="onnx";let g=y?OS:Fu;const v=y?"onnx_model_loader":"main_model_loader",S=y?{type:"t2l_onnx",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a}:{type:"denoise_latents",id:Oe,is_intermediate:!0,cfg_scale:o,scheduler:s,steps:a,denoising_start:0,denoising_end:1},w={id:Gz,nodes:{[g]:{type:v,id:g,is_intermediate:!0,model:i},[Gt]:{type:"clip_skip",id:Gt,skipped_layers:c,is_intermediate:!0},[Ue]:{type:y?"prompt_onnx":"compel",id:Ue,prompt:n,is_intermediate:!0},[He]:{type:y?"prompt_onnx":"compel",id:He,prompt:r,is_intermediate:!0},[Ee]:{type:"noise",id:Ee,width:l,height:u,use_cpu:b,is_intermediate:!0},[S.id]:S,[Ke]:{type:y?"l2i_onnx":"l2i",id:Ke,fp32:_}},edges:[{source:{node_id:g,field:"unet"},destination:{node_id:Oe,field:"unet"}},{source:{node_id:g,field:"clip"},destination:{node_id:Gt,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:Ue,field:"clip"}},{source:{node_id:Gt,field:"clip"},destination:{node_id:He,field:"clip"}},{source:{node_id:Ue,field:"conditioning"},destination:{node_id:Oe,field:"positive_conditioning"}},{source:{node_id:He,field:"conditioning"},destination:{node_id:Oe,field:"negative_conditioning"}},{source:{node_id:Ee,field:"noise"},destination:{node_id:Oe,field:"noise"}},{source:{node_id:Oe,field:"latents"},destination:{node_id:Ke,field:"latents"}}]};return w.nodes[Pt]={id:Pt,type:"metadata_accumulator",generation_mode:"txt2img",cfg_scale:o,height:u,width:l,positive_prompt:"",negative_prompt:r,model:i,seed:0,steps:a,rand_device:b?"cpu":"cuda",scheduler:s,vae:void 0,controlnets:[],loras:[],clip_skip:c},w.edges.push({source:{node_id:Pt,field:"metadata"},destination:{node_id:Ke,field:"metadata"}}),(p||m)&&(ds(e,w,g),g=Br),fs(e,w,g),yh(e,w,Oe,g),Bu(e,w),ls(e,w,Oe),us(e,w,Oe),e.system.shouldUseNSFWChecker&&cs(e,w),e.system.shouldUseWatermarker&&hs(e,w),w},Gwe=()=>{Te({predicate:e=>Fm.match(e)&&e.payload==="txt2img",effect:async(e,{getState:t,dispatch:n,take:r})=>{const i=ge("session"),o=t(),s=o.generation.model;let a;s&&s.base_model==="sdxl"?a=jwe(o):a=Vwe(o),n(QB(a)),i.debug({graph:mn(a)},"Text to Image graph built"),n(xi({graph:a})),await r(xi.fulfilled.match),n(od())}})},Hwe=Ru(null),qwe=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,RR=e=>{if(typeof e!="string")throw new TypeError("Invalid argument expected string");const t=e.match(qwe);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},IR=e=>e==="*"||e==="x"||e==="X",OR=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},Wwe=(e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t],Kwe=(e,t)=>{if(IR(e)||IR(t))return 0;const[n,r]=Wwe(OR(e),OR(t));return n>r?1:n{for(let n=0;n{const n=RR(e),r=RR(t),i=n.pop(),o=r.pop(),s=MR(n,r);return s!==0?s:i&&o?MR(i.split("."),o.split(".")):i||o?i?-1:1:0},Qwe=(e,t)=>{const n=Jn(e),{nodes:r,edges:i}=n,o=[],s=r.filter(vC),a=v5(s,"id");return r.forEach(l=>{if(!vC(l))return;const u=t[l.data.type];if(!u){o.push({message:`${we.t("nodes.node")} "${l.data.type}" ${we.t("nodes.skipped")}`,issues:[`${we.t("nodes.nodeType")}"${l.data.type}" ${we.t("nodes.doesNotExist")}`],data:l});return}if(u.version&&l.data.version&&Xwe(u.version,l.data.version)!==0){o.push({message:`${we.t("nodes.node")} "${l.data.type}" ${we.t("nodes.mismatchedVersion")}`,issues:[`${we.t("nodes.node")} "${l.data.type}" v${l.data.version} ${we.t("nodes.maybeIncompatible")} v${u.version}`],data:{node:l,nodeTemplate:mn(u)}});return}}),i.forEach((l,u)=>{const c=a[l.source],d=a[l.target],f=[];if(c?l.type==="default"&&!(l.sourceHandle in c.data.outputs)&&f.push(`${we.t("nodes.outputNodes")} "${l.source}.${l.sourceHandle}" ${we.t("nodes.doesNotExist")}`):f.push(`${we.t("nodes.outputNode")} ${l.source} ${we.t("nodes.doesNotExist")}`),d?l.type==="default"&&!(l.targetHandle in d.data.inputs)&&f.push(`${we.t("nodes.inputFeilds")} "${l.target}.${l.targetHandle}" ${we.t("nodes.doesNotExist")}`):f.push(`${we.t("nodes.inputNode")} ${l.target} ${we.t("nodes.doesNotExist")}`),t[(c==null?void 0:c.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`${we.t("nodes.sourceNode")} "${l.source}" ${we.t("nodes.missingTemplate")} "${c==null?void 0:c.data.type}"`),t[(d==null?void 0:d.data.type)??"__UNKNOWN_NODE_TYPE__"]||f.push(`${we.t("nodes.sourceNode")}"${l.target}" ${we.t("nodes.missingTemplate")} "${d==null?void 0:d.data.type}"`),f.length){delete i[u];const h=l.type==="default"?l.sourceHandle:l.source,p=l.type==="default"?l.targetHandle:l.target;o.push({message:`Edge "${h} -> ${p}" skipped`,issues:f,data:l})}}),{workflow:n,errors:o}},Ywe=()=>{Te({actionCreator:I0e,effect:(e,{dispatch:t,getState:n})=>{const r=ge("nodes"),i=e.payload,o=n().nodes.nodeTemplates,{workflow:s,errors:a}=Qwe(i,o);t(kye(s)),a.length?(t(Tn(sa({title:J("toast.loadedWithWarnings"),status:"warning"}))),a.forEach(({message:l,...u})=>{r.warn(u,l)})):t(Tn(sa({title:J("toast.workflowLoaded"),status:"success"}))),t(HB("nodes")),requestAnimationFrame(()=>{var l;(l=Hwe.get())==null||l.fitView()})}})},Yz=NN(),Te=Yz.startListening;xSe();CSe();PSe();pSe();gSe();mSe();ySe();vSe();U0e();wSe();ESe();TSe();Pwe();Uwe();Gwe();Owe();K2e();lSe();iSe();rve();oSe();nve();eve();aSe();uwe();D0e();Y2e();Z2e();twe();nwe();iwe();X2e();Q2e();awe();lwe();owe();swe();rwe();j2e();V2e();G2e();H2e();q2e();W2e();B2e();z2e();U2e();dSe();cSe();fSe();hSe();bSe();SSe();j0e();M2e();Ywe();_Se();RSe();B0e();OSe();$0e();L0e();pwe();dwe();const Zwe={canvas:nre,gallery:Ude,generation:One,nodes:Rye,postprocessing:Iye,system:Bye,config:fte,ui:Gye,hotkeys:Vye,controlNet:Dde,dynamicPrompts:zde,deleteImageModal:Fde,changeBoardModal:ire,lora:Gde,modelmanager:jye,sdxl:Nye,[_u.reducerPath]:_u.reducer},Jwe=rh(Zwe),exe=g0e(Jwe),txe=["canvas","gallery","generation","sdxl","nodes","postprocessing","system","ui","controlNet","dynamicPrompts","lora","modelmanager"],nxe=pN({reducer:exe,enhancers:e=>e.concat(m0e(window.localStorage,txe,{persistDebounce:300,serialize:A0e,unserialize:P0e,prefix:y0e})).concat(LN()),middleware:e=>e({serializableCheck:!1,immutableCheck:!1}).concat(_u.middleware).concat(Kye).prepend(Yz.middleware),devTools:{actionSanitizer:O0e,stateSanitizer:N0e,trace:!0,predicate:(e,t)=>!M0e.includes(t.type)}}),rxe=e=>e,ixe=e=>{const{socket:t,storeApi:n}=e,{dispatch:r,getState:i}=n;t.on("connect",()=>{ge("socketio").debug("Connected"),r(O$());const{sessionId:s}=i().system;s&&(t.emit("subscribe",{session:s}),r(H5({sessionId:s})))}),t.on("connect_error",o=>{o&&o.message&&o.data==="ERR_UNAUTHENTICATED"&&r(Tn(sa({title:o.message,status:"error",duration:1e4})))}),t.on("disconnect",()=>{r(N$())}),t.on("invocation_started",o=>{r(B$({data:o}))}),t.on("generator_progress",o=>{r(V$({data:o}))}),t.on("invocation_error",o=>{r(z$({data:o}))}),t.on("invocation_complete",o=>{r(W5({data:o}))}),t.on("graph_execution_state_complete",o=>{r(U$({data:o}))}),t.on("model_load_started",o=>{r(G$({data:o}))}),t.on("model_load_completed",o=>{r(H$({data:o}))}),t.on("session_retrieval_error",o=>{r(q$({data:o}))}),t.on("invocation_retrieval_error",o=>{r(K$({data:o}))})},ba=Object.create(null);ba.open="0";ba.close="1";ba.ping="2";ba.pong="3";ba.message="4";ba.upgrade="5";ba.noop="6";const j0=Object.create(null);Object.keys(ba).forEach(e=>{j0[ba[e]]=e});const p3={type:"error",data:"parser error"},Zz=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Jz=typeof ArrayBuffer=="function",eU=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,jT=({type:e,data:t},n,r)=>Zz&&t instanceof Blob?n?r(t):NR(t,r):Jz&&(t instanceof ArrayBuffer||eU(t))?n?r(t):NR(new Blob([t]),r):r(ba[e]+(t||"")),NR=(e,t)=>{const n=new FileReader;return n.onload=function(){const r=n.result.split(",")[1];t("b"+(r||""))},n.readAsDataURL(e)};function DR(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Dw;function oxe(e,t){if(Zz&&e.data instanceof Blob)return e.data.arrayBuffer().then(DR).then(t);if(Jz&&(e.data instanceof ArrayBuffer||eU(e.data)))return t(DR(e.data));jT(e,!1,n=>{Dw||(Dw=new TextEncoder),t(Dw.encode(n))})}const LR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ap=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e{let t=e.length*.75,n=e.length,r,i=0,o,s,a,l;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);const u=new ArrayBuffer(t),c=new Uint8Array(u);for(r=0;r>4,c[i++]=(s&15)<<4|a>>2,c[i++]=(a&3)<<6|l&63;return u},axe=typeof ArrayBuffer=="function",VT=(e,t)=>{if(typeof e!="string")return{type:"message",data:tU(e,t)};const n=e.charAt(0);return n==="b"?{type:"message",data:lxe(e.substring(1),t)}:j0[n]?e.length>1?{type:j0[n],data:e.substring(1)}:{type:j0[n]}:p3},lxe=(e,t)=>{if(axe){const n=sxe(e);return tU(n,t)}else return{base64:!0,data:e}},tU=(e,t)=>{switch(t){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},nU=String.fromCharCode(30),uxe=(e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach((o,s)=>{jT(o,!1,a=>{r[s]=a,++i===n&&t(r.join(nU))})})},cxe=(e,t)=>{const n=e.split(nU),r=[];for(let i=0;i{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const o=new DataView(i.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{i=new Uint8Array(9);const o=new DataView(i.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}e.data&&typeof e.data!="string"&&(i[0]|=128),t.enqueue(i),t.enqueue(n)})}})}let Lw;function r0(e){return e.reduce((t,n)=>t+n.length,0)}function i0(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;iMath.pow(2,53-32)-1){a.enqueue(p3);break}i=c*Math.pow(2,32)+u.getUint32(4),r=3}else{if(r0(n)e){a.enqueue(p3);break}}}})}const rU=4;function Rr(e){if(e)return hxe(e)}function hxe(e){for(var t in Rr.prototype)e[t]=Rr.prototype[t];return e}Rr.prototype.on=Rr.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this};Rr.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this};Rr.prototype.off=Rr.prototype.removeListener=Rr.prototype.removeAllListeners=Rr.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var r,i=0;itypeof self<"u"?self:typeof window<"u"?window:Function("return this")())();function iU(e,...t){return t.reduce((n,r)=>(e.hasOwnProperty(r)&&(n[r]=e[r]),n),{})}const pxe=Xo.setTimeout,gxe=Xo.clearTimeout;function LS(e,t){t.useNativeTimers?(e.setTimeoutFn=pxe.bind(Xo),e.clearTimeoutFn=gxe.bind(Xo)):(e.setTimeoutFn=Xo.setTimeout.bind(Xo),e.clearTimeoutFn=Xo.clearTimeout.bind(Xo))}const mxe=1.33;function yxe(e){return typeof e=="string"?vxe(e):Math.ceil((e.byteLength||e.size)*mxe)}function vxe(e){let t=0,n=0;for(let r=0,i=e.length;r=57344?n+=3:(r++,n+=4);return n}function _xe(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}function bxe(e){let t={},n=e.split("&");for(let r=0,i=n.length;r0);return t}function sU(){const e=BR(+new Date);return e!==FR?($R=0,FR=e):e+"."+BR($R++)}for(;o0{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)};cxe(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,uxe(t,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const t=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=sU()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(t,n)}request(t={}){return Object.assign(t,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new bf(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}}let bf=class V0 extends Rr{constructor(t,n){super(),LS(this,n),this.opts=n,this.method=n.method||"GET",this.uri=t,this.data=n.data!==void 0?n.data:null,this.create()}create(){var t;const n=iU(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this.opts.xd;const r=this.xhr=new lU(n);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let i in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(i)&&r.setRequestHeader(i,this.opts.extraHeaders[i])}}catch{}if(this.method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(t=this.opts.cookieJar)===null||t===void 0||t.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var i;r.readyState===3&&((i=this.opts.cookieJar)===null||i===void 0||i.parseCookies(r)),r.readyState===4&&(r.status===200||r.status===1223?this.onLoad():this.setTimeoutFn(()=>{this.onError(typeof r.status=="number"?r.status:0)},0))},r.send(this.data)}catch(i){this.setTimeoutFn(()=>{this.onError(i)},0);return}typeof document<"u"&&(this.index=V0.requestsCount++,V0.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=Cxe,t)try{this.xhr.abort()}catch{}typeof document<"u"&&delete V0.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()}};bf.requestsCount=0;bf.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",zR);else if(typeof addEventListener=="function"){const e="onpagehide"in Xo?"pagehide":"unload";addEventListener(e,zR,!1)}}function zR(){for(let e in bf.requests)bf.requests.hasOwnProperty(e)&&bf.requests[e].abort()}const HT=(()=>typeof Promise=="function"&&typeof Promise.resolve=="function"?t=>Promise.resolve().then(t):(t,n)=>n(t,0))(),s0=Xo.WebSocket||Xo.MozWebSocket,UR=!0,Axe="arraybuffer",jR=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class kxe extends GT{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=jR?{}:iU(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=UR&&!jR?n?new s0(t,n):new s0(t):new s0(t,n,r)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,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 s={};try{UR&&this.ws.send(o)}catch{}i&&HT(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.close(),this.ws=null)}uri(){const t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=sU()),this.supportsBinary||(n.b64=1),this.createUri(t,n)}check(){return!!s0}}class Pxe extends GT{get name(){return"webtransport"}doOpen(){typeof WebTransport=="function"&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then(()=>{this.onClose()}).catch(t=>{this.onError("webtransport error",t)}),this.transport.ready.then(()=>{this.transport.createBidirectionalStream().then(t=>{const n=fxe(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=t.readable.pipeThrough(n).getReader(),i=dxe();i.readable.pipeTo(t.writable),this.writer=i.writable.getWriter();const o=()=>{r.read().then(({done:a,value:l})=>{a||(this.onPacket(l),o())}).catch(a=>{})};o();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then(()=>this.onOpen())})}))}write(t){this.writable=!1;for(let n=0;n{i&&HT(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var t;(t=this.transport)===null||t===void 0||t.close()}}const Rxe={websocket:kxe,webtransport:Pxe,polling:Txe},Ixe=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oxe=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function m3(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=Ixe.exec(e||""),o={},s=14;for(;s--;)o[Oxe[s]]=i[s]||"";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=Mxe(o,o.path),o.queryKey=Nxe(o,o.query),o}function Mxe(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 Nxe(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,i,o){i&&(n[i]=o)}),n}let uU=class Od extends Rr{constructor(t,n={}){super(),this.binaryType=Axe,this.writeBuffer=[],t&&typeof t=="object"&&(n=t,t=null),t?(t=m3(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=m3(n.host).host),LS(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","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=bxe(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=rU,n.transport=t,this.id&&(n.sid=this.id);const r=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new Rxe[t](r)}open(){let t;if(this.opts.rememberUpgrade&&Od.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;Od.priorWebsocketSuccess=!1;const i=()=>{r||(n.send([{type:"ping",data:"probe"}]),n.once("packet",d=>{if(!r)if(d.type==="pong"&&d.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Od.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(c(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const f=new Error("probe error");f.transport=n.name,this.emitReserved("upgradeError",f)}}))};function o(){r||(r=!0,c(),n.close(),n=null)}const s=d=>{const f=new Error("probe error: "+d);f.transport=n.name,o(),this.emitReserved("upgradeError",f)};function a(){s("transport closed")}function l(){s("socket closed")}function u(d){n&&d.name!==n.name&&o()}const c=()=>{n.removeListener("open",i),n.removeListener("error",s),n.removeListener("close",a),this.off("close",l),this.off("upgrading",u)};n.once("open",i),n.once("error",s),n.once("close",a),this.once("close",l),this.once("upgrading",u),this.upgrades.indexOf("webtransport")!==-1&&t!=="webtransport"?this.setTimeoutFn(()=>{r||n.open()},200):n.open()}onOpen(){if(this.readyState="open",Od.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush(),this.readyState==="open"&&this.opts.upgrade){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){Od.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,cU=Object.prototype.toString,Fxe=typeof Blob=="function"||typeof Blob<"u"&&cU.call(Blob)==="[object BlobConstructor]",Bxe=typeof File=="function"||typeof File<"u"&&cU.call(File)==="[object FileConstructor]";function qT(e){return Lxe&&(e instanceof ArrayBuffer||$xe(e))||Fxe&&e instanceof Blob||Bxe&&e instanceof File}function G0(e,t){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,r=e.length;n=0&&e.num{delete this.acks[t];for(let s=0;s{this.io.clearTimeoutFn(o),n.apply(this,[null,...s])}}emitWithAck(t,...n){const r=this.flags.timeout!==void 0||this._opts.ackTimeout!==void 0;return new Promise((i,o)=>{n.push((s,a)=>r?s?o(s):i(a):i(s)),this.emit(t,...n)})}_addToQueue(t){let n;typeof t[t.length-1]=="function"&&(n=t.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:t,flags:Object.assign({fromQueue:!0},this.flags)};t.push((i,...o)=>r!==this._queue[0]?void 0:(i!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(i)):(this._queue.shift(),n&&n(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(t=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!t||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(t){t.nsp=this.nsp,this.io._packet(t)}onopen(){typeof this.auth=="function"?this.auth(t=>{this._sendConnectPacket(t)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(t){this.packet({type:Nt.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},t):t})}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 Nt.CONNECT:t.data&&t.data.sid?this.onconnect(t.data.sid,t.data.pid):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 Nt.EVENT:case Nt.BINARY_EVENT:this.onevent(t);break;case Nt.ACK:case Nt.BINARY_ACK:this.onack(t);break;case Nt.DISCONNECT:this.ondisconnect();break;case Nt.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),this._pid&&t.length&&typeof t[t.length-1]=="string"&&(this._lastOffset=t[t.length-1])}ack(t){const n=this;let r=!1;return function(...i){r||(r=!0,n.packet({type:Nt.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,n){this.id=t,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}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:Nt.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}bh.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?e+n:e-n}return Math.min(e,this.max)|0};bh.prototype.reset=function(){this.attempts=0};bh.prototype.setMin=function(e){this.ms=e};bh.prototype.setMax=function(e){this.max=e};bh.prototype.setJitter=function(e){this.jitter=e};class _3 extends Rr{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,LS(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 bh({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||qxe;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 uU(this.uri,this.opts);const n=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Ss(n,"open",function(){r.onopen(),t&&t()}),o=a=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",a),t?t(a):this.maybeReconnectOnOpen()},s=Ss(n,"error",o);if(this._timeout!==!1){const a=this._timeout,l=this.setTimeoutFn(()=>{i(),o(new Error("timeout")),n.close()},a);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(i),this.subs.push(s),this}connect(t){return this.open(t)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const t=this.engine;this.subs.push(Ss(t,"ping",this.onping.bind(this)),Ss(t,"data",this.ondata.bind(this)),Ss(t,"error",this.onerror.bind(this)),Ss(t,"close",this.onclose.bind(this)),Ss(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){HT(()=>{this.emitReserved("packet",t)},this.setTimeoutFn)}onerror(t){this.emitReserved("error",t)}socket(t,n){let r=this.nsps[t];return r?this._autoConnect&&!r.active&&r.connect():(r=new dU(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(()=>{this.clearTimeoutFn(r)})}}onreconnect(){const t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",t)}}const Kh={};function H0(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};const n=Dxe(e,t.path||"/socket.io"),r=n.source,i=n.id,o=n.path,s=Kh[i]&&o in Kh[i].nsps,a=t.forceNew||t["force new connection"]||t.multiplex===!1||s;let l;return a?l=new _3(r,t):(Kh[i]||(Kh[i]=new _3(r,t)),l=Kh[i]),n.query&&!t.query&&(t.query=n.queryKey),l.socket(n.path,t)}Object.assign(H0,{Manager:_3,Socket:dU,io:H0,connect:H0});const GR=()=>{let e=!1,n=`${window.location.protocol==="https:"?"wss":"ws"}://${window.location.host}`;const r={timeout:6e4,path:"/ws/socket.io",autoConnect:!1};if(["nodes","package"].includes("production")){const s=_g.get();s&&(n=s.replace(/^https?\:\/\//i,""));const a=$f.get();a&&(r.auth={token:a}),r.transports=["websocket","polling"]}const i=H0(n,r);return s=>a=>l=>{const{dispatch:u,getState:c}=s;if(e||(ixe({storeApi:s,socket:i}),e=!0,i.connect()),xi.fulfilled.match(l)){const d=l.payload.id,f=c().system.sessionId;f&&(i.emit("unsubscribe",{session:f}),u($$({sessionId:f}))),i.emit("subscribe",{session:d}),u(H5({sessionId:d}))}a(l)}};function Kxe(e){if(e.sheet)return e.sheet;for(var t=0;t0?_i(Sh,--vo):0,Yf--,kr===10&&(Yf=1,FS--),kr}function Oo(){return kr=vo2||Wg(kr)>3?"":" "}function aCe(e,t){for(;--t&&Oo()&&!(kr<48||kr>102||kr>57&&kr<65||kr>70&&kr<97););return Gm(e,q0()+(t<6&&ga()==32&&Oo()==32))}function S3(e){for(;Oo();)switch(kr){case e:return vo;case 34:case 39:e!==34&&e!==39&&S3(kr);break;case 40:e===41&&S3(e);break;case 92:Oo();break}return vo}function lCe(e,t){for(;Oo()&&e+kr!==47+10;)if(e+kr===42+42&&ga()===47)break;return"/*"+Gm(t,vo-1)+"*"+$S(e===47?e:Oo())}function uCe(e){for(;!Wg(ga());)Oo();return Gm(e,vo)}function cCe(e){return yU(K0("",null,null,null,[""],e=mU(e),0,[0],e))}function K0(e,t,n,r,i,o,s,a,l){for(var u=0,c=0,d=s,f=0,h=0,p=0,m=1,b=1,_=1,y=0,g="",v=i,S=o,w=r,x=g;b;)switch(p=y,y=Oo()){case 40:if(p!=108&&_i(x,d-1)==58){b3(x+=en(W0(y),"&","&\f"),"&\f")!=-1&&(_=-1);break}case 34:case 39:case 91:x+=W0(y);break;case 9:case 10:case 13:case 32:x+=sCe(p);break;case 92:x+=aCe(q0()-1,7);continue;case 47:switch(ga()){case 42:case 47:a0(dCe(lCe(Oo(),q0()),t,n),l);break;default:x+="/"}break;case 123*m:a[u++]=Zs(x)*_;case 125*m:case 59:case 0:switch(y){case 0:case 125:b=0;case 59+c:_==-1&&(x=en(x,/\f/g,"")),h>0&&Zs(x)-d&&a0(h>32?qR(x+";",r,n,d-1):qR(en(x," ","")+";",r,n,d-2),l);break;case 59:x+=";";default:if(a0(w=HR(x,t,n,u,c,i,a,g,v=[],S=[],d),o),y===123)if(c===0)K0(x,t,w,w,v,o,d,a,S);else switch(f===99&&_i(x,3)===110?100:f){case 100:case 108:case 109:case 115:K0(e,w,w,r&&a0(HR(e,w,w,0,0,i,a,g,i,v=[],d),S),i,S,d,a,r?v:S);break;default:K0(x,w,w,w,[""],S,0,a,S)}}u=c=h=0,m=_=1,g=x="",d=s;break;case 58:d=1+Zs(x),h=p;default:if(m<1){if(y==123)--m;else if(y==125&&m++==0&&oCe()==125)continue}switch(x+=$S(y),y*m){case 38:_=c>0?1:(x+="\f",-1);break;case 44:a[u++]=(Zs(x)-1)*_,_=1;break;case 64:ga()===45&&(x+=W0(Oo())),f=ga(),c=d=Zs(g=x+=uCe(q0())),y++;break;case 45:p===45&&Zs(x)==2&&(m=0)}}return o}function HR(e,t,n,r,i,o,s,a,l,u,c){for(var d=i-1,f=i===0?o:[""],h=QT(f),p=0,m=0,b=0;p0?f[_]+" "+y:en(y,/&\f/g,f[_])))&&(l[b++]=g);return BS(e,t,n,i===0?KT:a,l,u,c)}function dCe(e,t,n){return BS(e,t,n,fU,$S(iCe()),qg(e,2,-2),0)}function qR(e,t,n,r){return BS(e,t,n,XT,qg(e,0,r),qg(e,r+1,-1),r)}function Sf(e,t){for(var n="",r=QT(e),i=0;i6)switch(_i(e,t+1)){case 109:if(_i(e,t+4)!==45)break;case 102:return en(e,/(.+:)(.+)-([^]+)/,"$1"+Jt+"$2-$3$1"+I1+(_i(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~b3(e,"stretch")?_U(en(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(_i(e,t+1)!==115)break;case 6444:switch(_i(e,Zs(e)-3-(~b3(e,"!important")&&10))){case 107:return en(e,":",":"+Jt)+e;case 101:return en(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Jt+(_i(e,14)===45?"inline-":"")+"box$3$1"+Jt+"$2$3$1"+Ri+"$2box$3")+e}break;case 5936:switch(_i(e,t+11)){case 114:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Jt+e+Ri+en(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Jt+e+Ri+e+e}return e}var bCe=function(t,n,r,i){if(t.length>-1&&!t.return)switch(t.type){case XT:t.return=_U(t.value,t.length);break;case hU:return Sf([Xh(t,{value:en(t.value,"@","@"+Jt)})],i);case KT:if(t.length)return rCe(t.props,function(o){switch(nCe(o,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return Sf([Xh(t,{props:[en(o,/:(read-\w+)/,":"+I1+"$1")]})],i);case"::placeholder":return Sf([Xh(t,{props:[en(o,/:(plac\w+)/,":"+Jt+"input-$1")]}),Xh(t,{props:[en(o,/:(plac\w+)/,":"+I1+"$1")]}),Xh(t,{props:[en(o,/:(plac\w+)/,Ri+"input-$1")]})],i)}return""})}},SCe=[bCe],wCe=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(m){var b=m.getAttribute("data-emotion");b.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||SCe,o={},s,a=[];s=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+n+' "]'),function(m){for(var b=m.getAttribute("data-emotion").split(" "),_=1;_=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 TCe={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,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},ACe=/[A-Z]|^ms/g,kCe=/_EMO_([^_]+?)_([^]*?)_EMO_/g,wU=function(t){return t.charCodeAt(1)===45},XR=function(t){return t!=null&&typeof t!="boolean"},$w=vU(function(e){return wU(e)?e:e.replace(ACe,"-$&").toLowerCase()}),QR=function(t,n){switch(t){case"animation":case"animationName":if(typeof n=="string")return n.replace(kCe,function(r,i,o){return Js={name:i,styles:o,next:Js},i})}return TCe[t]!==1&&!wU(t)&&typeof n=="number"&&n!==0?n+"px":n};function Kg(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 Js={name:n.name,styles:n.styles,next:Js},n.name;if(n.styles!==void 0){var r=n.next;if(r!==void 0)for(;r!==void 0;)Js={name:r.name,styles:r.styles,next:Js},r=r.next;var i=n.styles+";";return i}return PCe(e,t,n)}case"function":{if(e!==void 0){var o=Js,s=n(e);return Js=o,Kg(e,t,s)}break}}if(t==null)return n;var a=t[n];return a!==void 0?a:n}function PCe(e,t,n){var r="";if(Array.isArray(n))for(var i=0;i` or ``");return e}var AU=M.createContext({});AU.displayName="ColorModeContext";function ZT(){const e=M.useContext(AU);if(e===void 0)throw new Error("useColorMode must be used within a ColorModeProvider");return e}function DMe(e,t){const{colorMode:n}=ZT();return n==="dark"?t:e}function $Ce(){const e=ZT(),t=TU();return{...e,theme:t}}function FCe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__breakpoints)==null?void 0:a.asArray)==null?void 0:l[s]};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function BCe(e,t,n){var r,i;if(t==null)return t;const o=s=>{var a,l;return(l=(a=e.__cssMap)==null?void 0:a[s])==null?void 0:l.value};return(i=(r=o(t))!=null?r:o(n))!=null?i:n}function LMe(e,t,n){const r=TU();return zCe(e,t,n)(r)}function zCe(e,t,n){const r=Array.isArray(t)?t:[t],i=Array.isArray(n)?n:[n];return o=>{const s=i.filter(Boolean),a=r.map((l,u)=>{var c,d;if(e==="breakpoints")return FCe(o,l,(c=s[u])!=null?c:l);const f=`${e}.${l}`;return BCe(o,f,(d=s[u])!=null?d:l)});return Array.isArray(t)?a:a[0]}}var JT=(...e)=>e.filter(Boolean).join(" ");function UCe(){return!1}function Za(e){const t=typeof e;return e!=null&&(t==="object"||t==="function")&&!Array.isArray(e)}var $Me=e=>{const{condition:t,message:n}=e;t&&UCe()&&console.warn(n)};function pc(e,...t){return jCe(e)?e(...t):e}var jCe=e=>typeof e=="function",FMe=e=>e?"":void 0,BMe=e=>e?!0:void 0;function zMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}function UMe(...e){return function(n){e.forEach(r=>{r==null||r(n)})}}var O1={exports:{}};O1.exports;(function(e,t){var n=200,r="__lodash_hash_undefined__",i=800,o=16,s=9007199254740991,a="[object Arguments]",l="[object Array]",u="[object AsyncFunction]",c="[object Boolean]",d="[object Date]",f="[object Error]",h="[object Function]",p="[object GeneratorFunction]",m="[object Map]",b="[object Number]",_="[object Null]",y="[object Object]",g="[object Proxy]",v="[object RegExp]",S="[object Set]",w="[object String]",x="[object Undefined]",C="[object WeakMap]",A="[object ArrayBuffer]",T="[object DataView]",k="[object Float32Array]",L="[object Float64Array]",N="[object Int8Array]",E="[object Int16Array]",P="[object Int32Array]",D="[object Uint8Array]",B="[object Uint8ClampedArray]",R="[object Uint16Array]",I="[object Uint32Array]",O=/[\\^$.*+?()[\]{}|]/g,F=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,V={};V[k]=V[L]=V[N]=V[E]=V[P]=V[D]=V[B]=V[R]=V[I]=!0,V[a]=V[l]=V[A]=V[c]=V[T]=V[d]=V[f]=V[h]=V[m]=V[b]=V[y]=V[v]=V[S]=V[w]=V[C]=!1;var H=typeof dt=="object"&&dt&&dt.Object===Object&&dt,Y=typeof self=="object"&&self&&self.Object===Object&&self,Q=H||Y||Function("return this")(),j=t&&!t.nodeType&&t,K=j&&!0&&e&&!e.nodeType&&e,te=K&&K.exports===j,oe=te&&H.process,me=function(){try{var $=K&&K.require&&K.require("util").types;return $||oe&&oe.binding&&oe.binding("util")}catch{}}(),le=me&&me.isTypedArray;function ht($,G,X){switch(X.length){case 0:return $.call(G);case 1:return $.call(G,X[0]);case 2:return $.call(G,X[0],X[1]);case 3:return $.call(G,X[0],X[1],X[2])}return $.apply(G,X)}function nt($,G){for(var X=-1,fe=Array($);++X<$;)fe[X]=G(X);return fe}function $e($){return function(G){return $(G)}}function ct($,G){return $==null?void 0:$[G]}function Pe($,G){return function(X){return $(G(X))}}var qt=Array.prototype,Sr=Function.prototype,Pn=Object.prototype,bn=Q["__core-js_shared__"],Wt=Sr.toString,Rn=Pn.hasOwnProperty,wr=function(){var $=/[^.]+$/.exec(bn&&bn.keys&&bn.keys.IE_PROTO||"");return $?"Symbol(src)_1."+$:""}(),to=Pn.toString,Gr=Wt.call(Object),ar=RegExp("^"+Wt.call(Rn).replace(O,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Or=te?Q.Buffer:void 0,Hr=Q.Symbol,In=Q.Uint8Array,dn=Or?Or.allocUnsafe:void 0,Ci=Pe(Object.getPrototypeOf,Object),si=Object.create,ji=Pn.propertyIsEnumerable,ps=qt.splice,xr=Hr?Hr.toStringTag:void 0,no=function(){try{var $=Yn(Object,"defineProperty");return $({},"",{}),$}catch{}}(),Ta=Or?Or.isBuffer:void 0,bo=Math.max,Aa=Date.now,On=Yn(Q,"Map"),Kt=Yn(Object,"create"),Mr=function(){function $(){}return function(G){if(!qe(G))return{};if(si)return si(G);$.prototype=G;var X=new $;return $.prototype=void 0,X}}();function Cr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G-1}function zo($,G){var X=this.__data__,fe=Xe(X,$);return fe<0?(++this.size,X.push([$,G])):X[fe][1]=G,this}Nr.prototype.clear=gs,Nr.prototype.delete=Vs,Nr.prototype.get=li,Nr.prototype.has=_l,Nr.prototype.set=zo;function Wr($){var G=-1,X=$==null?0:$.length;for(this.clear();++G1?X[St-1]:void 0,wn=St>2?X[2]:void 0;for(on=$.length>3&&typeof on=="function"?(St--,on):void 0,wn&&Rt(X[0],X[1],wn)&&(on=St<3?void 0:on,St=1),G=Object(G);++fe-1&&$%1==0&&$0){if(++G>=i)return arguments[0]}else G=0;return $.apply(void 0,arguments)}}function lt($){if($!=null){try{return Wt.call($)}catch{}try{return $+""}catch{}}return""}function ze($,G){return $===G||$!==$&&G!==G}var be=mt(function(){return arguments}())?mt:function($){return ke($)&&Rn.call($,"callee")&&!ji.call($,"callee")},ae=Array.isArray;function xe($){return $!=null&&Ze($.length)&&!Se($)}function ce($){return ke($)&&xe($)}var he=Ta||Vi;function Se($){if(!qe($))return!1;var G=at($);return G==h||G==p||G==u||G==g}function Ze($){return typeof $=="number"&&$>-1&&$%1==0&&$<=s}function qe($){var G=typeof $;return $!=null&&(G=="object"||G=="function")}function ke($){return $!=null&&typeof $=="object"}function Ct($){if(!ke($)||at($)!=y)return!1;var G=Ci($);if(G===null)return!0;var X=Rn.call(G,"constructor")&&G.constructor;return typeof X=="function"&&X instanceof X&&Wt.call(X)==Gr}var $t=le?$e(le):xt;function Ft($){return ms($,Zn($))}function Zn($){return xe($)?Re($,!0):tn($)}var lr=tt(function($,G,X,fe){nn($,G,X,fe)});function Mn($){return function(){return $}}function Sn($){return $}function Vi(){return!1}e.exports=lr})(O1,O1.exports);var VCe=O1.exports;const aa=Uc(VCe);var GCe=e=>/!(important)?$/.test(e),JR=e=>typeof e=="string"?e.replace(/!(important)?$/,"").trim():e,HCe=(e,t)=>n=>{const r=String(t),i=GCe(r),o=JR(r),s=e?`${e}.${o}`:o;let a=Za(n.__cssMap)&&s in n.__cssMap?n.__cssMap[s].varRef:t;return a=JR(a),i?`${a} !important`:a};function e4(e){const{scale:t,transform:n,compose:r}=e;return(o,s)=>{var a;const l=HCe(t,o)(s);let u=(a=n==null?void 0:n(l,s))!=null?a:l;return r&&(u=r(u,s)),u}}var l0=(...e)=>t=>e.reduce((n,r)=>r(n),t);function Vo(e,t){return n=>{const r={property:n,scale:e};return r.transform=e4({scale:e,transform:t}),r}}var qCe=({rtl:e,ltr:t})=>n=>n.direction==="rtl"?e:t;function WCe(e){const{property:t,scale:n,transform:r}=e;return{scale:n,property:qCe(t),transform:n?e4({scale:n,compose:r}):r}}var kU=["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 KCe(){return["translateX(var(--chakra-translate-x, 0))","translateY(var(--chakra-translate-y, 0))",...kU].join(" ")}function XCe(){return["translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)",...kU].join(" ")}var QCe={"--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(" ")},YCe={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 ZCe(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 JCe={"row-reverse":{space:"--chakra-space-x-reverse",divide:"--chakra-divide-x-reverse"},"column-reverse":{space:"--chakra-space-y-reverse",divide:"--chakra-divide-y-reverse"}},w3={"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"},e3e=new Set(Object.values(w3)),x3=new Set(["none","-moz-initial","inherit","initial","revert","unset"]),t3e=e=>e.trim();function n3e(e,t){if(e==null||x3.has(e))return e;if(!(C3(e)||x3.has(e)))return`url('${e}')`;const i=/(^[a-z-A-Z]+)\((.*)\)/g.exec(e),o=i==null?void 0:i[1],s=i==null?void 0:i[2];if(!o||!s)return e;const a=o.includes("-gradient")?o:`${o}-gradient`,[l,...u]=s.split(",").map(t3e).filter(Boolean);if((u==null?void 0:u.length)===0)return e;const c=l in w3?w3[l]:l;u.unshift(c);const d=u.map(f=>{if(e3e.has(f))return f;const h=f.indexOf(" "),[p,m]=h!==-1?[f.substr(0,h),f.substr(h+1)]:[f],b=C3(m)?m:m&&m.split(" "),_=`colors.${p}`,y=_ in t.__cssMap?t.__cssMap[_].varRef:p;return b?[y,...Array.isArray(b)?b:[b]].join(" "):y});return`${a}(${d.join(", ")})`}var C3=e=>typeof e=="string"&&e.includes("(")&&e.includes(")"),r3e=(e,t)=>n3e(e,t??{});function i3e(e){return/^var\(--.+\)$/.test(e)}var o3e=e=>{const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}},Ks=e=>t=>`${e}(${t})`,jt={filter(e){return e!=="auto"?e:QCe},backdropFilter(e){return e!=="auto"?e:YCe},ring(e){return ZCe(jt.px(e))},bgClip(e){return e==="text"?{color:"transparent",backgroundClip:"text"}:{backgroundClip:e}},transform(e){return e==="auto"?KCe():e==="auto-gpu"?XCe():e},vh(e){return e==="$100vh"?"var(--chakra-vh)":e},px(e){if(e==null)return e;const{unitless:t}=o3e(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(i3e(e)||e==null)return e;const t=typeof e=="string"&&!e.endsWith("deg");return typeof e=="number"||t?`${e}deg`:e},gradient:r3e,blur:Ks("blur"),opacity:Ks("opacity"),brightness:Ks("brightness"),contrast:Ks("contrast"),dropShadow:Ks("drop-shadow"),grayscale:Ks("grayscale"),hueRotate:Ks("hue-rotate"),invert:Ks("invert"),saturate:Ks("saturate"),sepia:Ks("sepia"),bgImage(e){return e==null||C3(e)||x3.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){var t;const{space:n,divide:r}=(t=JCe[e])!=null?t:{},i={flexDirection:e};return n&&(i[n]=1),r&&(i[r]=1),i}},q={borderWidths:Vo("borderWidths"),borderStyles:Vo("borderStyles"),colors:Vo("colors"),borders:Vo("borders"),gradients:Vo("gradients",jt.gradient),radii:Vo("radii",jt.px),space:Vo("space",l0(jt.vh,jt.px)),spaceT:Vo("space",l0(jt.vh,jt.px)),degreeT(e){return{property:e,transform:jt.degree}},prop(e,t,n){return{property:e,scale:t,...t&&{transform:e4({scale:t,transform:n})}}},propT(e,t){return{property:e,transform:t}},sizes:Vo("sizes",l0(jt.vh,jt.px)),sizesT:Vo("sizes",l0(jt.vh,jt.fraction)),shadows:Vo("shadows"),logical:WCe,blur:Vo("blur",jt.blur)},X0={background:q.colors("background"),backgroundColor:q.colors("backgroundColor"),backgroundImage:q.gradients("backgroundImage"),backgroundSize:!0,backgroundPosition:!0,backgroundRepeat:!0,backgroundAttachment:!0,backgroundClip:{transform:jt.bgClip},bgSize:q.prop("backgroundSize"),bgPosition:q.prop("backgroundPosition"),bg:q.colors("background"),bgColor:q.colors("backgroundColor"),bgPos:q.prop("backgroundPosition"),bgRepeat:q.prop("backgroundRepeat"),bgAttachment:q.prop("backgroundAttachment"),bgGradient:q.gradients("backgroundImage"),bgClip:{transform:jt.bgClip}};Object.assign(X0,{bgImage:X0.backgroundImage,bgImg:X0.backgroundImage});var Zt={border:q.borders("border"),borderWidth:q.borderWidths("borderWidth"),borderStyle:q.borderStyles("borderStyle"),borderColor:q.colors("borderColor"),borderRadius:q.radii("borderRadius"),borderTop:q.borders("borderTop"),borderBlockStart:q.borders("borderBlockStart"),borderTopLeftRadius:q.radii("borderTopLeftRadius"),borderStartStartRadius:q.logical({scale:"radii",property:{ltr:"borderTopLeftRadius",rtl:"borderTopRightRadius"}}),borderEndStartRadius:q.logical({scale:"radii",property:{ltr:"borderBottomLeftRadius",rtl:"borderBottomRightRadius"}}),borderTopRightRadius:q.radii("borderTopRightRadius"),borderStartEndRadius:q.logical({scale:"radii",property:{ltr:"borderTopRightRadius",rtl:"borderTopLeftRadius"}}),borderEndEndRadius:q.logical({scale:"radii",property:{ltr:"borderBottomRightRadius",rtl:"borderBottomLeftRadius"}}),borderRight:q.borders("borderRight"),borderInlineEnd:q.borders("borderInlineEnd"),borderBottom:q.borders("borderBottom"),borderBlockEnd:q.borders("borderBlockEnd"),borderBottomLeftRadius:q.radii("borderBottomLeftRadius"),borderBottomRightRadius:q.radii("borderBottomRightRadius"),borderLeft:q.borders("borderLeft"),borderInlineStart:{property:"borderInlineStart",scale:"borders"},borderInlineStartRadius:q.logical({scale:"radii",property:{ltr:["borderTopLeftRadius","borderBottomLeftRadius"],rtl:["borderTopRightRadius","borderBottomRightRadius"]}}),borderInlineEndRadius:q.logical({scale:"radii",property:{ltr:["borderTopRightRadius","borderBottomRightRadius"],rtl:["borderTopLeftRadius","borderBottomLeftRadius"]}}),borderX:q.borders(["borderLeft","borderRight"]),borderInline:q.borders("borderInline"),borderY:q.borders(["borderTop","borderBottom"]),borderBlock:q.borders("borderBlock"),borderTopWidth:q.borderWidths("borderTopWidth"),borderBlockStartWidth:q.borderWidths("borderBlockStartWidth"),borderTopColor:q.colors("borderTopColor"),borderBlockStartColor:q.colors("borderBlockStartColor"),borderTopStyle:q.borderStyles("borderTopStyle"),borderBlockStartStyle:q.borderStyles("borderBlockStartStyle"),borderBottomWidth:q.borderWidths("borderBottomWidth"),borderBlockEndWidth:q.borderWidths("borderBlockEndWidth"),borderBottomColor:q.colors("borderBottomColor"),borderBlockEndColor:q.colors("borderBlockEndColor"),borderBottomStyle:q.borderStyles("borderBottomStyle"),borderBlockEndStyle:q.borderStyles("borderBlockEndStyle"),borderLeftWidth:q.borderWidths("borderLeftWidth"),borderInlineStartWidth:q.borderWidths("borderInlineStartWidth"),borderLeftColor:q.colors("borderLeftColor"),borderInlineStartColor:q.colors("borderInlineStartColor"),borderLeftStyle:q.borderStyles("borderLeftStyle"),borderInlineStartStyle:q.borderStyles("borderInlineStartStyle"),borderRightWidth:q.borderWidths("borderRightWidth"),borderInlineEndWidth:q.borderWidths("borderInlineEndWidth"),borderRightColor:q.colors("borderRightColor"),borderInlineEndColor:q.colors("borderInlineEndColor"),borderRightStyle:q.borderStyles("borderRightStyle"),borderInlineEndStyle:q.borderStyles("borderInlineEndStyle"),borderTopRadius:q.radii(["borderTopLeftRadius","borderTopRightRadius"]),borderBottomRadius:q.radii(["borderBottomLeftRadius","borderBottomRightRadius"]),borderLeftRadius:q.radii(["borderTopLeftRadius","borderBottomLeftRadius"]),borderRightRadius:q.radii(["borderTopRightRadius","borderBottomRightRadius"])};Object.assign(Zt,{rounded:Zt.borderRadius,roundedTop:Zt.borderTopRadius,roundedTopLeft:Zt.borderTopLeftRadius,roundedTopRight:Zt.borderTopRightRadius,roundedTopStart:Zt.borderStartStartRadius,roundedTopEnd:Zt.borderStartEndRadius,roundedBottom:Zt.borderBottomRadius,roundedBottomLeft:Zt.borderBottomLeftRadius,roundedBottomRight:Zt.borderBottomRightRadius,roundedBottomStart:Zt.borderEndStartRadius,roundedBottomEnd:Zt.borderEndEndRadius,roundedLeft:Zt.borderLeftRadius,roundedRight:Zt.borderRightRadius,roundedStart:Zt.borderInlineStartRadius,roundedEnd:Zt.borderInlineEndRadius,borderStart:Zt.borderInlineStart,borderEnd:Zt.borderInlineEnd,borderTopStartRadius:Zt.borderStartStartRadius,borderTopEndRadius:Zt.borderStartEndRadius,borderBottomStartRadius:Zt.borderEndStartRadius,borderBottomEndRadius:Zt.borderEndEndRadius,borderStartRadius:Zt.borderInlineStartRadius,borderEndRadius:Zt.borderInlineEndRadius,borderStartWidth:Zt.borderInlineStartWidth,borderEndWidth:Zt.borderInlineEndWidth,borderStartColor:Zt.borderInlineStartColor,borderEndColor:Zt.borderInlineEndColor,borderStartStyle:Zt.borderInlineStartStyle,borderEndStyle:Zt.borderInlineEndStyle});var s3e={color:q.colors("color"),textColor:q.colors("color"),fill:q.colors("fill"),stroke:q.colors("stroke")},E3={boxShadow:q.shadows("boxShadow"),mixBlendMode:!0,blendMode:q.prop("mixBlendMode"),backgroundBlendMode:!0,bgBlendMode:q.prop("backgroundBlendMode"),opacity:!0};Object.assign(E3,{shadow:E3.boxShadow});var a3e={filter:{transform:jt.filter},blur:q.blur("--chakra-blur"),brightness:q.propT("--chakra-brightness",jt.brightness),contrast:q.propT("--chakra-contrast",jt.contrast),hueRotate:q.degreeT("--chakra-hue-rotate"),invert:q.propT("--chakra-invert",jt.invert),saturate:q.propT("--chakra-saturate",jt.saturate),dropShadow:q.propT("--chakra-drop-shadow",jt.dropShadow),backdropFilter:{transform:jt.backdropFilter},backdropBlur:q.blur("--chakra-backdrop-blur"),backdropBrightness:q.propT("--chakra-backdrop-brightness",jt.brightness),backdropContrast:q.propT("--chakra-backdrop-contrast",jt.contrast),backdropHueRotate:q.degreeT("--chakra-backdrop-hue-rotate"),backdropInvert:q.propT("--chakra-backdrop-invert",jt.invert),backdropSaturate:q.propT("--chakra-backdrop-saturate",jt.saturate)},M1={alignItems:!0,alignContent:!0,justifyItems:!0,justifyContent:!0,flexWrap:!0,flexDirection:{transform:jt.flexDirection},flex:!0,flexFlow:!0,flexGrow:!0,flexShrink:!0,flexBasis:q.sizes("flexBasis"),justifySelf:!0,alignSelf:!0,order:!0,placeItems:!0,placeContent:!0,placeSelf:!0,gap:q.space("gap"),rowGap:q.space("rowGap"),columnGap:q.space("columnGap")};Object.assign(M1,{flexDir:M1.flexDirection});var PU={gridGap:q.space("gridGap"),gridColumnGap:q.space("gridColumnGap"),gridRowGap:q.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},l3e={appearance:!0,cursor:!0,resize:!0,userSelect:!0,pointerEvents:!0,outline:{transform:jt.outline},outlineOffset:!0,outlineColor:q.colors("outlineColor")},Ho={width:q.sizesT("width"),inlineSize:q.sizesT("inlineSize"),height:q.sizes("height"),blockSize:q.sizes("blockSize"),boxSize:q.sizes(["width","height"]),minWidth:q.sizes("minWidth"),minInlineSize:q.sizes("minInlineSize"),minHeight:q.sizes("minHeight"),minBlockSize:q.sizes("minBlockSize"),maxWidth:q.sizes("maxWidth"),maxInlineSize:q.sizes("maxInlineSize"),maxHeight:q.sizes("maxHeight"),maxBlockSize:q.sizes("maxBlockSize"),overflow:!0,overflowX:!0,overflowY:!0,overscrollBehavior:!0,overscrollBehaviorX:!0,overscrollBehaviorY:!0,display:!0,aspectRatio:!0,hideFrom:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (min-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r.minW)!=null?i:e})`]:{display:"none"}}}},hideBelow:{scale:"breakpoints",transform:(e,t)=>{var n,r,i;return{[`@media screen and (max-width: ${(i=(r=(n=t.__breakpoints)==null?void 0:n.get(e))==null?void 0:r._minW)!=null?i:e})`]:{display:"none"}}}},verticalAlign:!0,boxSizing:!0,boxDecorationBreak:!0,float:q.propT("float",jt.float),objectFit:!0,objectPosition:!0,visibility:!0,isolation:!0};Object.assign(Ho,{w:Ho.width,h:Ho.height,minW:Ho.minWidth,maxW:Ho.maxWidth,minH:Ho.minHeight,maxH:Ho.maxHeight,overscroll:Ho.overscrollBehavior,overscrollX:Ho.overscrollBehaviorX,overscrollY:Ho.overscrollBehaviorY});var u3e={listStyleType:!0,listStylePosition:!0,listStylePos:q.prop("listStylePosition"),listStyleImage:!0,listStyleImg:q.prop("listStyleImage")};function c3e(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},f3e=d3e(c3e),h3e={border:"0px",clip:"rect(0, 0, 0, 0)",width:"1px",height:"1px",margin:"-1px",padding:"0px",overflow:"hidden",whiteSpace:"nowrap",position:"absolute"},p3e={position:"static",width:"auto",height:"auto",clip:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal"},Fw=(e,t,n)=>{const r={},i=f3e(e,t,{});for(const o in i)o in n&&n[o]!=null||(r[o]=i[o]);return r},g3e={srOnly:{transform(e){return e===!0?h3e:e==="focusable"?p3e:{}}},layerStyle:{processResult:!0,transform:(e,t,n)=>Fw(t,`layerStyles.${e}`,n)},textStyle:{processResult:!0,transform:(e,t,n)=>Fw(t,`textStyles.${e}`,n)},apply:{processResult:!0,transform:(e,t,n)=>Fw(t,e,n)}},Tp={position:!0,pos:q.prop("position"),zIndex:q.prop("zIndex","zIndices"),inset:q.spaceT("inset"),insetX:q.spaceT(["left","right"]),insetInline:q.spaceT("insetInline"),insetY:q.spaceT(["top","bottom"]),insetBlock:q.spaceT("insetBlock"),top:q.spaceT("top"),insetBlockStart:q.spaceT("insetBlockStart"),bottom:q.spaceT("bottom"),insetBlockEnd:q.spaceT("insetBlockEnd"),left:q.spaceT("left"),insetInlineStart:q.logical({scale:"space",property:{ltr:"left",rtl:"right"}}),right:q.spaceT("right"),insetInlineEnd:q.logical({scale:"space",property:{ltr:"right",rtl:"left"}})};Object.assign(Tp,{insetStart:Tp.insetInlineStart,insetEnd:Tp.insetInlineEnd});var m3e={ring:{transform:jt.ring},ringColor:q.colors("--chakra-ring-color"),ringOffset:q.prop("--chakra-ring-offset-width"),ringOffsetColor:q.colors("--chakra-ring-offset-color"),ringInset:q.prop("--chakra-ring-inset")},Dn={margin:q.spaceT("margin"),marginTop:q.spaceT("marginTop"),marginBlockStart:q.spaceT("marginBlockStart"),marginRight:q.spaceT("marginRight"),marginInlineEnd:q.spaceT("marginInlineEnd"),marginBottom:q.spaceT("marginBottom"),marginBlockEnd:q.spaceT("marginBlockEnd"),marginLeft:q.spaceT("marginLeft"),marginInlineStart:q.spaceT("marginInlineStart"),marginX:q.spaceT(["marginInlineStart","marginInlineEnd"]),marginInline:q.spaceT("marginInline"),marginY:q.spaceT(["marginTop","marginBottom"]),marginBlock:q.spaceT("marginBlock"),padding:q.space("padding"),paddingTop:q.space("paddingTop"),paddingBlockStart:q.space("paddingBlockStart"),paddingRight:q.space("paddingRight"),paddingBottom:q.space("paddingBottom"),paddingBlockEnd:q.space("paddingBlockEnd"),paddingLeft:q.space("paddingLeft"),paddingInlineStart:q.space("paddingInlineStart"),paddingInlineEnd:q.space("paddingInlineEnd"),paddingX:q.space(["paddingInlineStart","paddingInlineEnd"]),paddingInline:q.space("paddingInline"),paddingY:q.space(["paddingTop","paddingBottom"]),paddingBlock:q.space("paddingBlock")};Object.assign(Dn,{m:Dn.margin,mt:Dn.marginTop,mr:Dn.marginRight,me:Dn.marginInlineEnd,marginEnd:Dn.marginInlineEnd,mb:Dn.marginBottom,ml:Dn.marginLeft,ms:Dn.marginInlineStart,marginStart:Dn.marginInlineStart,mx:Dn.marginX,my:Dn.marginY,p:Dn.padding,pt:Dn.paddingTop,py:Dn.paddingY,px:Dn.paddingX,pb:Dn.paddingBottom,pl:Dn.paddingLeft,ps:Dn.paddingInlineStart,paddingStart:Dn.paddingInlineStart,pr:Dn.paddingRight,pe:Dn.paddingInlineEnd,paddingEnd:Dn.paddingInlineEnd});var y3e={textDecorationColor:q.colors("textDecorationColor"),textDecoration:!0,textDecor:{property:"textDecoration"},textDecorationLine:!0,textDecorationStyle:!0,textDecorationThickness:!0,textUnderlineOffset:!0,textShadow:q.shadows("textShadow")},v3e={clipPath:!0,transform:q.propT("transform",jt.transform),transformOrigin:!0,translateX:q.spaceT("--chakra-translate-x"),translateY:q.spaceT("--chakra-translate-y"),skewX:q.degreeT("--chakra-skew-x"),skewY:q.degreeT("--chakra-skew-y"),scaleX:q.prop("--chakra-scale-x"),scaleY:q.prop("--chakra-scale-y"),scale:q.prop(["--chakra-scale-x","--chakra-scale-y"]),rotate:q.degreeT("--chakra-rotate")},_3e={transition:!0,transitionDelay:!0,animation:!0,willChange:!0,transitionDuration:q.prop("transitionDuration","transition.duration"),transitionProperty:q.prop("transitionProperty","transition.property"),transitionTimingFunction:q.prop("transitionTimingFunction","transition.easing")},b3e={fontFamily:q.prop("fontFamily","fonts"),fontSize:q.prop("fontSize","fontSizes",jt.px),fontWeight:q.prop("fontWeight","fontWeights"),lineHeight:q.prop("lineHeight","lineHeights"),letterSpacing:q.prop("letterSpacing","letterSpacings"),textAlign:!0,fontStyle:!0,textIndent:!0,wordBreak:!0,overflowWrap:!0,textOverflow:!0,textTransform:!0,whiteSpace:!0,isTruncated:{transform(e){if(e===!0)return{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}}},noOfLines:{static:{overflow:"hidden",textOverflow:"ellipsis",display:"-webkit-box",WebkitBoxOrient:"vertical",WebkitLineClamp:"var(--chakra-line-clamp)"},property:"--chakra-line-clamp"}},S3e={scrollBehavior:!0,scrollSnapAlign:!0,scrollSnapStop:!0,scrollSnapType:!0,scrollMargin:q.spaceT("scrollMargin"),scrollMarginTop:q.spaceT("scrollMarginTop"),scrollMarginBottom:q.spaceT("scrollMarginBottom"),scrollMarginLeft:q.spaceT("scrollMarginLeft"),scrollMarginRight:q.spaceT("scrollMarginRight"),scrollMarginX:q.spaceT(["scrollMarginLeft","scrollMarginRight"]),scrollMarginY:q.spaceT(["scrollMarginTop","scrollMarginBottom"]),scrollPadding:q.spaceT("scrollPadding"),scrollPaddingTop:q.spaceT("scrollPaddingTop"),scrollPaddingBottom:q.spaceT("scrollPaddingBottom"),scrollPaddingLeft:q.spaceT("scrollPaddingLeft"),scrollPaddingRight:q.spaceT("scrollPaddingRight"),scrollPaddingX:q.spaceT(["scrollPaddingLeft","scrollPaddingRight"]),scrollPaddingY:q.spaceT(["scrollPaddingTop","scrollPaddingBottom"])};function RU(e){return Za(e)&&e.reference?e.reference:String(e)}var zS=(e,...t)=>t.map(RU).join(` ${e} `).replace(/calc/g,""),eI=(...e)=>`calc(${zS("+",...e)})`,tI=(...e)=>`calc(${zS("-",...e)})`,T3=(...e)=>`calc(${zS("*",...e)})`,nI=(...e)=>`calc(${zS("/",...e)})`,rI=e=>{const t=RU(e);return t!=null&&!Number.isNaN(parseFloat(t))?String(t).startsWith("-")?String(t).slice(1):`-${t}`:T3(t,-1)},rc=Object.assign(e=>({add:(...t)=>rc(eI(e,...t)),subtract:(...t)=>rc(tI(e,...t)),multiply:(...t)=>rc(T3(e,...t)),divide:(...t)=>rc(nI(e,...t)),negate:()=>rc(rI(e)),toString:()=>e.toString()}),{add:eI,subtract:tI,multiply:T3,divide:nI,negate:rI});function w3e(e,t="-"){return e.replace(/\s+/g,t)}function x3e(e){const t=w3e(e.toString());return E3e(C3e(t))}function C3e(e){return e.includes("\\.")?e:!Number.isInteger(parseFloat(e.toString()))?e.replace(".","\\."):e}function E3e(e){return e.replace(/[!-,/:-@[-^`{-~]/g,"\\$&")}function T3e(e,t=""){return[t,e].filter(Boolean).join("-")}function A3e(e,t){return`var(${e}${t?`, ${t}`:""})`}function k3e(e,t=""){return x3e(`--${T3e(e,t)}`)}function A3(e,t,n){const r=k3e(e,n);return{variable:r,reference:A3e(r,t)}}function jMe(e,t){const n={};for(const r of t){if(Array.isArray(r)){const[i,o]=r;n[i]=A3(`${e}-${i}`,o);continue}n[r]=A3(`${e}-${r}`)}return n}function P3e(e){const t=e==null?0:e.length;return t?e[t-1]:void 0}function R3e(e){const t=parseFloat(e.toString()),n=e.toString().replace(String(t),"");return{unitless:!n,value:t,unit:n}}function k3(e){if(e==null)return e;const{unitless:t}=R3e(e);return t||typeof e=="number"?`${e}px`:e}var IU=(e,t)=>parseInt(e[1],10)>parseInt(t[1],10)?1:-1,t4=e=>Object.fromEntries(Object.entries(e).sort(IU));function iI(e){const t=t4(e);return Object.assign(Object.values(t),t)}function I3e(e){const t=Object.keys(t4(e));return new Set(t)}function oI(e){var t;if(!e)return e;e=(t=k3(e))!=null?t:e;const n=-.02;return typeof e=="number"?`${e+n}`:e.replace(/(\d+\.?\d*)/u,r=>`${parseFloat(r)+n}`)}function lp(e,t){const n=["@media screen"];return e&&n.push("and",`(min-width: ${k3(e)})`),t&&n.push("and",`(max-width: ${k3(t)})`),n.join(" ")}function O3e(e){var t;if(!e)return null;e.base=(t=e.base)!=null?t:"0px";const n=iI(e),r=Object.entries(e).sort(IU).map(([s,a],l,u)=>{var c;let[,d]=(c=u[l+1])!=null?c:[];return d=parseFloat(d)>0?oI(d):void 0,{_minW:oI(a),breakpoint:s,minW:a,maxW:d,maxWQuery:lp(null,d),minWQuery:lp(a),minMaxQuery:lp(a,d)}}),i=I3e(e),o=Array.from(i.values());return{keys:i,normalized:n,isResponsive(s){const a=Object.keys(s);return a.length>0&&a.every(l=>i.has(l))},asObject:t4(e),asArray:iI(e),details:r,get(s){return r.find(a=>a.breakpoint===s)},media:[null,...n.map(s=>lp(s)).slice(1)],toArrayValue(s){if(!Za(s))throw new Error("toArrayValue: value must be an object");const a=o.map(l=>{var u;return(u=s[l])!=null?u:null});for(;P3e(a)===null;)a.pop();return a},toObjectValue(s){if(!Array.isArray(s))throw new Error("toObjectValue: value must be an array");return s.reduce((a,l,u)=>{const c=o[u];return c!=null&&l!=null&&(a[c]=l),a},{})}}}var fi={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}`},Tl=e=>OU(t=>e(t,"&"),"[role=group]","[data-group]",".group"),Ma=e=>OU(t=>e(t,"~ &"),"[data-peer]",".peer"),OU=(e,...t)=>t.map(e).join(", "),US={_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",_firstLetter:"&::first-letter",_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:Tl(fi.hover),_peerHover:Ma(fi.hover),_groupFocus:Tl(fi.focus),_peerFocus:Ma(fi.focus),_groupFocusVisible:Tl(fi.focusVisible),_peerFocusVisible:Ma(fi.focusVisible),_groupActive:Tl(fi.active),_peerActive:Ma(fi.active),_groupDisabled:Tl(fi.disabled),_peerDisabled:Ma(fi.disabled),_groupInvalid:Tl(fi.invalid),_peerInvalid:Ma(fi.invalid),_groupChecked:Tl(fi.checked),_peerChecked:Ma(fi.checked),_groupFocusWithin:Tl(fi.focusWithin),_peerFocusWithin:Ma(fi.focusWithin),_peerPlaceholderShown:Ma(fi.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]",_horizontal:"&[data-orientation=horizontal]",_vertical:"&[data-orientation=vertical]"},MU=Object.keys(US);function sI(e,t){return A3(String(e).replace(/\./g,"-"),void 0,t)}function M3e(e,t){let n={};const r={};for(const[i,o]of Object.entries(e)){const{isSemantic:s,value:a}=o,{variable:l,reference:u}=sI(i,t==null?void 0:t.cssVarPrefix);if(!s){if(i.startsWith("space")){const f=i.split("."),[h,...p]=f,m=`${h}.-${p.join(".")}`,b=rc.negate(a),_=rc.negate(u);r[m]={value:b,var:l,varRef:_}}n[l]=a,r[i]={value:a,var:l,varRef:u};continue}const c=f=>{const p=[String(i).split(".")[0],f].join(".");if(!e[p])return f;const{reference:b}=sI(p,t==null?void 0:t.cssVarPrefix);return b},d=Za(a)?a:{default:a};n=aa(n,Object.entries(d).reduce((f,[h,p])=>{var m,b;if(!p)return f;const _=c(`${p}`);if(h==="default")return f[l]=_,f;const y=(b=(m=US)==null?void 0:m[h])!=null?b:h;return f[y]={[l]:_},f},{})),r[i]={value:u,var:l,varRef:u}}return{cssVars:n,cssMap:r}}function N3e(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}function D3e(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function L3e(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function aI(e,t,n={}){const{stop:r,getKey:i}=n;function o(s,a=[]){var l;if(L3e(s)||Array.isArray(s)){const u={};for(const[c,d]of Object.entries(s)){const f=(l=i==null?void 0:i(c))!=null?l:c,h=[...a,f];if(r!=null&&r(s,h))return t(s,a);u[f]=o(d,h)}return u}return t(s,a)}return o(e)}var $3e=["colors","borders","borderWidths","borderStyles","fonts","fontSizes","fontWeights","gradients","letterSpacings","lineHeights","radii","space","shadows","sizes","zIndices","transition","blur","breakpoints"];function F3e(e){return D3e(e,$3e)}function B3e(e){return e.semanticTokens}function z3e(e){const{__cssMap:t,__cssVars:n,__breakpoints:r,...i}=e;return i}var U3e=e=>MU.includes(e)||e==="default";function j3e({tokens:e,semanticTokens:t}){const n={};return aI(e,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!1,value:r})}),aI(t,(r,i)=>{r!=null&&(n[i.join(".")]={isSemantic:!0,value:r})},{stop:r=>Object.keys(r).every(U3e)}),n}function VMe(e){var t;const n=z3e(e),r=F3e(n),i=B3e(n),o=j3e({tokens:r,semanticTokens:i}),s=(t=n.config)==null?void 0:t.cssVarPrefix,{cssMap:a,cssVars:l}=M3e(o,{cssVarPrefix:s});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:a,__breakpoints:O3e(n.breakpoints)}),n}var n4=aa({},X0,Zt,s3e,M1,Ho,a3e,m3e,l3e,PU,g3e,Tp,E3,Dn,S3e,b3e,y3e,v3e,u3e,_3e),V3e=Object.assign({},Dn,Ho,M1,PU,Tp),GMe=Object.keys(V3e),G3e=[...Object.keys(n4),...MU],H3e={...n4,...US},q3e=e=>e in H3e,W3e=e=>t=>{if(!t.__breakpoints)return e;const{isResponsive:n,toArrayValue:r,media:i}=t.__breakpoints,o={};for(const s in e){let a=pc(e[s],t);if(a==null)continue;if(a=Za(a)&&n(a)?r(a):a,!Array.isArray(a)){o[s]=a;continue}const l=a.slice(0,i.length).length;for(let u=0;ue.startsWith("--")&&typeof t=="string"&&!X3e(t),Y3e=(e,t)=>{var n,r;if(t==null)return t;const i=l=>{var u,c;return(c=(u=e.__cssMap)==null?void 0:u[l])==null?void 0:c.varRef},o=l=>{var u;return(u=i(l))!=null?u:l},[s,a]=K3e(t);return t=(r=(n=i(s))!=null?n:o(a))!=null?r:o(t),t};function Z3e(e){const{configs:t={},pseudos:n={},theme:r}=e,i=(o,s=!1)=>{var a,l,u;const c=pc(o,r),d=W3e(c)(r);let f={};for(let h in d){const p=d[h];let m=pc(p,r);h in n&&(h=n[h]),Q3e(h,m)&&(m=Y3e(r,m));let b=t[h];if(b===!0&&(b={property:h}),Za(m)){f[h]=(a=f[h])!=null?a:{},f[h]=aa({},f[h],i(m,!0));continue}let _=(u=(l=b==null?void 0:b.transform)==null?void 0:l.call(b,m,r,c))!=null?u:m;_=b!=null&&b.processResult?i(_,!0):_;const y=pc(b==null?void 0:b.property,r);if(!s&&(b!=null&&b.static)){const g=pc(b.static,r);f=aa({},f,g)}if(y&&Array.isArray(y)){for(const g of y)f[g]=_;continue}if(y){y==="&"&&Za(_)?f=aa({},f,_):f[y]=_;continue}if(Za(_)){f=aa({},f,_);continue}f[h]=_}return f};return i}var J3e=e=>t=>Z3e({theme:t,pseudos:US,configs:n4})(e);function HMe(e){return e}function qMe(e){return e}function WMe(e){return{definePartsStyle(t){return t},defineMultiStyleConfig(t){return{parts:e,...t}}}}function eEe(e,t){if(Array.isArray(e))return e;if(Za(e))return t(e);if(e!=null)return[e]}function tEe(e,t){for(let n=t+1;n{aa(u,{[g]:f?y[g]:{[_]:y[g]}})});continue}if(!h){f?aa(u,y):u[_]=y;continue}u[_]=y}}return u}}function rEe(e){return t=>{var n;const{variant:r,size:i,theme:o}=t,s=nEe(o);return aa({},pc((n=e.baseStyle)!=null?n:{},t),s(e,"sizes",i,t),s(e,"variants",r,t))}}function KMe(e,t,n){var r,i,o;return(o=(i=(r=e.__cssMap)==null?void 0:r[`${t}.${n}`])==null?void 0:i.varRef)!=null?o:n}function r4(e){return N3e(e,["styleConfig","size","variant","colorScheme"])}function iEe(e,t){const n={};return Object.keys(e).forEach(r=>{t.includes(r)||(n[r]=e[r])}),n}function oEe(e,t,n,r){const i=typeof t=="string"?t.split("."):[t];for(r=0;r{const t=new WeakMap;return(r,i,o,s)=>{if(typeof r>"u")return e(r,i,o);t.has(r)||t.set(r,new Map);const a=t.get(r);if(a.has(i))return a.get(i);const l=e(r,i,o,s);return a.set(i,l),l}},aEe=sEe(oEe);function NU(e,t){const n={};return Object.keys(e).forEach(r=>{const i=e[r];t(i,r,e)&&(n[r]=i)}),n}var DU=e=>NU(e,t=>t!=null);function lEe(e){return typeof e=="function"}function uEe(e,...t){return lEe(e)?e(...t):e}function XMe(...e){return function(n){e.some(r=>(r==null||r(n),n==null?void 0:n.defaultPrevented))}}var cEe=typeof Element<"u",dEe=typeof Map=="function",fEe=typeof Set=="function",hEe=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Q0(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(!Q0(e[r],t[r]))return!1;return!0}var o;if(dEe&&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(!Q0(r.value[1],t.get(r.value[0])))return!1;return!0}if(fEe&&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(hEe&&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&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")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(cEe&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((i[r]==="_owner"||i[r]==="__v"||i[r]==="__o")&&e.$$typeof)&&!Q0(e[i[r]],t[i[r]]))return!1;return!0}return e!==e&&t!==t}var pEe=function(t,n){try{return Q0(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const gEe=Uc(pEe);function LU(e,t={}){var n;const{styleConfig:r,...i}=t,{theme:o,colorMode:s}=$Ce(),a=e?aEe(o,`components.${e}`):void 0,l=r||a,u=aa({theme:o,colorMode:s},(n=l==null?void 0:l.defaultProps)!=null?n:{},DU(iEe(i,["children"]))),c=M.useRef({});if(l){const f=rEe(l)(u);gEe(c.current,f)||(c.current=f)}return c.current}function i4(e,t={}){return LU(e,t)}function QMe(e,t={}){return LU(e,t)}var mEe=new Set([...G3e,"textStyle","layerStyle","apply","noOfLines","focusBorderColor","errorBorderColor","as","__css","css","sx"]),yEe=new Set(["htmlWidth","htmlHeight","htmlSize","htmlTranslate"]);function vEe(e){return yEe.has(e)||!mEe.has(e)}function _Ee(e,...t){if(e==null)throw new TypeError("Cannot convert undefined or null to object");const n={...e};for(const r of t)if(r!=null)for(const i in r)Object.prototype.hasOwnProperty.call(r,i)&&(i in n&&delete n[i],n[i]=r[i]);return n}function bEe(e){const t=Object.assign({},e);for(let n in t)t[n]===void 0&&delete t[n];return t}var SEe=/^((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)-.*))$/,wEe=vU(function(e){return SEe.test(e)||e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)<91}),xEe=wEe,CEe=function(t){return t!=="theme"},lI=function(t){return typeof t=="string"&&t.charCodeAt(0)>96?xEe:CEe},uI=function(t,n,r){var i;if(n){var o=n.shouldForwardProp;i=t.__emotion_forwardProp&&o?function(s){return t.__emotion_forwardProp(s)&&o(s)}: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 bU(n,r,i),ICe(function(){return SU(n,r,i)}),null},TEe=function e(t,n){var r=t.__emotion_real===t,i=r&&t.__emotion_base||t,o,s;n!==void 0&&(o=n.label,s=n.target);var a=uI(t,n,r),l=a||lI(i),u=!l("as");return function(){var c=arguments,d=r&&t.__emotion_styles!==void 0?t.__emotion_styles.slice(0):[];if(o!==void 0&&d.push("label:"+o+";"),c[0]==null||c[0].raw===void 0)d.push.apply(d,c);else{d.push(c[0][0]);for(var f=c.length,h=1;ht=>{const{theme:n,css:r,__css:i,sx:o,...s}=t,a=NU(s,(d,f)=>q3e(f)),l=uEe(e,t),u=_Ee({},i,l,DU(a),o),c=J3e(u)(t.theme);return r?[c,r]:c};function Bw(e,t){const{baseStyle:n,...r}=t??{};r.shouldForwardProp||(r.shouldForwardProp=vEe);const i=PEe({baseStyle:n}),o=kEe(e,r)(i);return vn.forwardRef(function(l,u){const{colorMode:c,forced:d}=ZT();return vn.createElement(o,{ref:u,"data-theme":d?c:void 0,...l})})}function REe(){const e=new Map;return new Proxy(Bw,{apply(t,n,r){return Bw(...r)},get(t,n){return e.has(n)||e.set(n,Bw(n)),e.get(n)}})}var wu=REe();function zu(e){return M.forwardRef(e)}const $U=M.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"}),jS=M.createContext({}),Hm=M.createContext(null),VS=typeof document<"u",o4=VS?M.useLayoutEffect:M.useEffect,FU=M.createContext({strict:!1});function IEe(e,t,n,r){const{visualElement:i}=M.useContext(jS),o=M.useContext(FU),s=M.useContext(Hm),a=M.useContext($U).reducedMotion,l=M.useRef();r=r||o.renderer,!l.current&&r&&(l.current=r(e,{visualState:t,parent:i,props:n,presenceContext:s,blockInitialAnimation:s?s.initial===!1:!1,reducedMotionConfig:a}));const u=l.current;M.useInsertionEffect(()=>{u&&u.update(n,s)});const c=M.useRef(!!window.HandoffAppearAnimations);return o4(()=>{u&&(u.render(),c.current&&u.animationState&&u.animationState.animateChanges())}),M.useEffect(()=>{u&&(u.updateFeatures(),!c.current&&u.animationState&&u.animationState.animateChanges(),window.HandoffAppearAnimations=void 0,c.current=!1)}),u}function Kd(e){return typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function OEe(e,t,n){return M.useCallback(r=>{r&&e.mount&&e.mount(r),t&&(r?t.mount(r):t.unmount()),n&&(typeof n=="function"?n(r):Kd(n)&&(n.current=r))},[t])}function Qg(e){return typeof e=="string"||Array.isArray(e)}function GS(e){return typeof e=="object"&&typeof e.start=="function"}const s4=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],a4=["initial",...s4];function HS(e){return GS(e.animate)||a4.some(t=>Qg(e[t]))}function BU(e){return!!(HS(e)||e.variants)}function MEe(e,t){if(HS(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Qg(n)?n:void 0,animate:Qg(r)?r:void 0}}return e.inherit!==!1?t:{}}function NEe(e){const{initial:t,animate:n}=MEe(e,M.useContext(jS));return M.useMemo(()=>({initial:t,animate:n}),[dI(t),dI(n)])}function dI(e){return Array.isArray(e)?e.join(" "):e}const fI={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Yg={};for(const e in fI)Yg[e]={isEnabled:t=>fI[e].some(n=>!!t[n])};function DEe(e){for(const t in e)Yg[t]={...Yg[t],...e[t]}}const l4=M.createContext({}),zU=M.createContext({}),LEe=Symbol.for("motionComponentSymbol");function $Ee({preloadedFeatures:e,createVisualElement:t,useRender:n,useVisualState:r,Component:i}){e&&DEe(e);function o(a,l){let u;const c={...M.useContext($U),...a,layoutId:FEe(a)},{isStatic:d}=c,f=NEe(a),h=r(a,d);if(!d&&VS){f.visualElement=IEe(i,h,c,t);const p=M.useContext(zU),m=M.useContext(FU).strict;f.visualElement&&(u=f.visualElement.loadFeatures(c,m,e,p))}return M.createElement(jS.Provider,{value:f},u&&f.visualElement?M.createElement(u,{visualElement:f.visualElement,...c}):null,n(i,a,OEe(h,f.visualElement,l),h,d,f.visualElement))}const s=M.forwardRef(o);return s[LEe]=i,s}function FEe({layoutId:e}){const t=M.useContext(l4).id;return t&&e!==void 0?t+"-"+e:e}function BEe(e){function t(r,i={}){return $Ee(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 zEe=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function u4(e){return typeof e!="string"||e.includes("-")?!1:!!(zEe.indexOf(e)>-1||/[A-Z]/.test(e))}const D1={};function UEe(e){Object.assign(D1,e)}const qm=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ad=new Set(qm);function UU(e,{layout:t,layoutId:n}){return ad.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!D1[e]||e==="opacity")}const _o=e=>!!(e&&e.getVelocity),jEe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},VEe=qm.length;function GEe(e,{enableHardwareAcceleration:t=!0,allowTransformNone:n=!0},r,i){let o="";for(let s=0;st=>typeof t=="string"&&t.startsWith(e),VU=jU("--"),P3=jU("var(--"),HEe=/var\s*\(\s*--[\w-]+(\s*,\s*(?:(?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)+)?\s*\)/g,qEe=(e,t)=>t&&typeof e=="number"?t.transform(e):e,xu=(e,t,n)=>Math.min(Math.max(n,e),t),ld={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Ap={...ld,transform:e=>xu(0,1,e)},u0={...ld,default:1},kp=e=>Math.round(e*1e5)/1e5,qS=/(-)?([\d]*\.?[\d])+/g,GU=/(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))/gi,WEe=/^(#[0-9a-f]{3,8}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2}(-?[\d\.]+%?)\s*[\,\/]?\s*[\d\.]*%?\))$/i;function Wm(e){return typeof e=="string"}const Km=e=>({test:t=>Wm(t)&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),kl=Km("deg"),ma=Km("%"),rt=Km("px"),KEe=Km("vh"),XEe=Km("vw"),hI={...ma,parse:e=>ma.parse(e)/100,transform:e=>ma.transform(e*100)},pI={...ld,transform:Math.round},HU={borderWidth:rt,borderTopWidth:rt,borderRightWidth:rt,borderBottomWidth:rt,borderLeftWidth:rt,borderRadius:rt,radius:rt,borderTopLeftRadius:rt,borderTopRightRadius:rt,borderBottomRightRadius:rt,borderBottomLeftRadius:rt,width:rt,maxWidth:rt,height:rt,maxHeight:rt,size:rt,top:rt,right:rt,bottom:rt,left:rt,padding:rt,paddingTop:rt,paddingRight:rt,paddingBottom:rt,paddingLeft:rt,margin:rt,marginTop:rt,marginRight:rt,marginBottom:rt,marginLeft:rt,rotate:kl,rotateX:kl,rotateY:kl,rotateZ:kl,scale:u0,scaleX:u0,scaleY:u0,scaleZ:u0,skew:kl,skewX:kl,skewY:kl,distance:rt,translateX:rt,translateY:rt,translateZ:rt,x:rt,y:rt,z:rt,perspective:rt,transformPerspective:rt,opacity:Ap,originX:hI,originY:hI,originZ:rt,zIndex:pI,fillOpacity:Ap,strokeOpacity:Ap,numOctaves:pI};function c4(e,t,n,r){const{style:i,vars:o,transform:s,transformOrigin:a}=e;let l=!1,u=!1,c=!0;for(const d in t){const f=t[d];if(VU(d)){o[d]=f;continue}const h=HU[d],p=qEe(f,h);if(ad.has(d)){if(l=!0,s[d]=p,!c)continue;f!==(h.default||0)&&(c=!1)}else d.startsWith("origin")?(u=!0,a[d]=p):i[d]=p}if(t.transform||(l||r?i.transform=GEe(e.transform,n,c,r):i.transform&&(i.transform="none")),u){const{originX:d="50%",originY:f="50%",originZ:h=0}=a;i.transformOrigin=`${d} ${f} ${h}`}}const d4=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function qU(e,t,n){for(const r in t)!_o(t[r])&&!UU(r,n)&&(e[r]=t[r])}function QEe({transformTemplate:e},t,n){return M.useMemo(()=>{const r=d4();return c4(r,t,{enableHardwareAcceleration:!n},e),Object.assign({},r.vars,r.style)},[t])}function YEe(e,t,n){const r=e.style||{},i={};return qU(i,r,e),Object.assign(i,QEe(e,t,n)),e.transformValues?e.transformValues(i):i}function ZEe(e,t,n){const r={},i=YEe(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"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(r.tabIndex=0),r.style=i,r}const JEe=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","transformValues","custom","inherit","onLayoutAnimationStart","onLayoutAnimationComplete","onLayoutMeasure","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","ignoreStrict","viewport"]);function L1(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||JEe.has(e)}let WU=e=>!L1(e);function e5e(e){e&&(WU=t=>t.startsWith("on")?!L1(t):e(t))}try{e5e(require("@emotion/is-prop-valid").default)}catch{}function t5e(e,t,n){const r={};for(const i in e)i==="values"&&typeof e.values=="object"||(WU(i)||n===!0&&L1(i)||!t&&!L1(i)||e.draggable&&i.startsWith("onDrag"))&&(r[i]=e[i]);return r}function gI(e,t,n){return typeof e=="string"?e:rt.transform(t+n*e)}function n5e(e,t,n){const r=gI(t,e.x,e.width),i=gI(n,e.y,e.height);return`${r} ${i}`}const r5e={offset:"stroke-dashoffset",array:"stroke-dasharray"},i5e={offset:"strokeDashoffset",array:"strokeDasharray"};function o5e(e,t,n=1,r=0,i=!0){e.pathLength=1;const o=i?r5e:i5e;e[o.offset]=rt.transform(-r);const s=rt.transform(t),a=rt.transform(n);e[o.array]=`${s} ${a}`}function f4(e,{attrX:t,attrY:n,attrScale:r,originX:i,originY:o,pathLength:s,pathSpacing:a=1,pathOffset:l=0,...u},c,d,f){if(c4(e,u,c,f),d){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:p,dimensions:m}=e;h.transform&&(m&&(p.transform=h.transform),delete h.transform),m&&(i!==void 0||o!==void 0||p.transform)&&(p.transformOrigin=n5e(m,i!==void 0?i:.5,o!==void 0?o:.5)),t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),r!==void 0&&(h.scale=r),s!==void 0&&o5e(h,s,a,l,!1)}const KU=()=>({...d4(),attrs:{}}),h4=e=>typeof e=="string"&&e.toLowerCase()==="svg";function s5e(e,t,n,r){const i=M.useMemo(()=>{const o=KU();return f4(o,t,{enableHardwareAcceleration:!1},h4(r),e.transformTemplate),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};qU(o,e.style,e),i.style={...o,...i.style}}return i}function a5e(e=!1){return(n,r,i,{latestValues:o},s)=>{const l=(u4(n)?s5e:ZEe)(r,o,s,n),c={...t5e(r,typeof n=="string",e),...l,ref:i},{children:d}=r,f=M.useMemo(()=>_o(d)?d.get():d,[d]);return M.createElement(n,{...c,children:f})}}const p4=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();function XU(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 QU=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function YU(e,t,n,r){XU(e,t,void 0,r);for(const i in t.attrs)e.setAttribute(QU.has(i)?i:p4(i),t.attrs[i])}function g4(e,t){const{style:n}=e,r={};for(const i in n)(_o(n[i])||t.style&&_o(t.style[i])||UU(i,e))&&(r[i]=n[i]);return r}function ZU(e,t){const n=g4(e,t);for(const r in e)if(_o(e[r])||_o(t[r])){const i=qm.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;n[i]=e[r]}return n}function m4(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}function JU(e){const t=M.useRef(null);return t.current===null&&(t.current=e()),t.current}const $1=e=>Array.isArray(e),l5e=e=>!!(e&&typeof e=="object"&&e.mix&&e.toValue),u5e=e=>$1(e)?e[e.length-1]||0:e;function Y0(e){const t=_o(e)?e.get():e;return l5e(t)?t.toValue():t}function c5e({scrapeMotionValuesFromProps:e,createRenderState:t,onMount:n},r,i,o){const s={latestValues:d5e(r,i,o,e),renderState:t()};return n&&(s.mount=a=>n(r,a,s)),s}const ej=e=>(t,n)=>{const r=M.useContext(jS),i=M.useContext(Hm),o=()=>c5e(e,t,r,i);return n?o():JU(o)};function d5e(e,t,n,r){const i={},o=r(e,{});for(const f in o)i[f]=Y0(o[f]);let{initial:s,animate:a}=e;const l=HS(e),u=BU(e);t&&u&&!l&&e.inherit!==!1&&(s===void 0&&(s=t.initial),a===void 0&&(a=t.animate));let c=n?n.initial===!1:!1;c=c||s===!1;const d=c?a:s;return d&&typeof d!="boolean"&&!GS(d)&&(Array.isArray(d)?d:[d]).forEach(h=>{const p=m4(e,h);if(!p)return;const{transitionEnd:m,transition:b,..._}=p;for(const y in _){let g=_[y];if(Array.isArray(g)){const v=c?g.length-1:0;g=g[v]}g!==null&&(i[y]=g)}for(const y in m)i[y]=m[y]}),i}const dr=e=>e;function f5e(e){let t=[],n=[],r=0,i=!1,o=!1;const s=new WeakSet,a={schedule:(l,u=!1,c=!1)=>{const d=c&&i,f=d?t:n;return u&&s.add(l),f.indexOf(l)===-1&&(f.push(l),d&&i&&(r=t.length)),l},cancel:l=>{const u=n.indexOf(l);u!==-1&&n.splice(u,1),s.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(d[f]=f5e(()=>n=!0),d),{}),s=d=>o[d].process(i),a=()=>{const d=performance.now();n=!1,i.delta=r?1e3/60:Math.max(Math.min(d-i.timestamp,h5e),1),i.timestamp=d,i.isProcessing=!0,c0.forEach(s),i.isProcessing=!1,n&&t&&(r=!1,e(a))},l=()=>{n=!0,r=!0,i.isProcessing||e(a)};return{schedule:c0.reduce((d,f)=>{const h=o[f];return d[f]=(p,m=!1,b=!1)=>(n||l(),h.schedule(p,m,b)),d},{}),cancel:d=>c0.forEach(f=>o[f].cancel(d)),state:i,steps:o}}const{schedule:kn,cancel:cl,state:Ii,steps:zw}=p5e(typeof requestAnimationFrame<"u"?requestAnimationFrame:dr,!0),g5e={useVisualState:ej({scrapeMotionValuesFromProps:ZU,createRenderState:KU,onMount:(e,t,{renderState:n,latestValues:r})=>{kn.read(()=>{try{n.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{n.dimensions={x:0,y:0,width:0,height:0}}}),kn.render(()=>{f4(n,r,{enableHardwareAcceleration:!1},h4(t.tagName),e.transformTemplate),YU(t,n)})}})},m5e={useVisualState:ej({scrapeMotionValuesFromProps:g4,createRenderState:d4})};function y5e(e,{forwardMotionProps:t=!1},n,r){return{...u4(e)?g5e:m5e,preloadedFeatures:n,useRender:a5e(t),createVisualElement:r,Component:e}}function Ka(e,t,n,r={passive:!0}){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n)}const tj=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;function WS(e,t="page"){return{point:{x:e[t+"X"],y:e[t+"Y"]}}}const v5e=e=>t=>tj(t)&&e(t,WS(t));function Ja(e,t,n,r){return Ka(e,t,v5e(n),r)}const _5e=(e,t)=>n=>t(e(n)),au=(...e)=>e.reduce(_5e);function nj(e){let t=null;return()=>{const n=()=>{t=null};return t===null?(t=e,n):!1}}const mI=nj("dragHorizontal"),yI=nj("dragVertical");function rj(e){let t=!1;if(e==="y")t=yI();else if(e==="x")t=mI();else{const n=mI(),r=yI();n&&r?t=()=>{n(),r()}:(n&&n(),r&&r())}return t}function ij(){const e=rj(!0);return e?(e(),!1):!0}class Uu{constructor(t){this.isMounted=!1,this.node=t}update(){}}function vI(e,t){const n="pointer"+(t?"enter":"leave"),r="onHover"+(t?"Start":"End"),i=(o,s)=>{if(o.type==="touch"||ij())return;const a=e.getProps();e.animationState&&a.whileHover&&e.animationState.setActive("whileHover",t),a[r]&&kn.update(()=>a[r](o,s))};return Ja(e.current,n,i,{passive:!e.getProps()[r]})}class b5e extends Uu{mount(){this.unmount=au(vI(this.node,!0),vI(this.node,!1))}unmount(){}}class S5e extends Uu{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=au(Ka(this.node.current,"focus",()=>this.onFocus()),Ka(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const oj=(e,t)=>t?e===t?!0:oj(e,t.parentElement):!1;function Uw(e,t){if(!t)return;const n=new PointerEvent("pointer"+e);t(n,WS(n))}class w5e extends Uu{constructor(){super(...arguments),this.removeStartListeners=dr,this.removeEndListeners=dr,this.removeAccessibleListeners=dr,this.startPointerPress=(t,n)=>{if(this.removeEndListeners(),this.isPressing)return;const r=this.node.getProps(),o=Ja(window,"pointerup",(a,l)=>{if(!this.checkPressEnd())return;const{onTap:u,onTapCancel:c}=this.node.getProps();kn.update(()=>{oj(this.node.current,a.target)?u&&u(a,l):c&&c(a,l)})},{passive:!(r.onTap||r.onPointerUp)}),s=Ja(window,"pointercancel",(a,l)=>this.cancelPress(a,l),{passive:!(r.onTapCancel||r.onPointerCancel)});this.removeEndListeners=au(o,s),this.startPress(t,n)},this.startAccessiblePress=()=>{const t=o=>{if(o.key!=="Enter"||this.isPressing)return;const s=a=>{a.key!=="Enter"||!this.checkPressEnd()||Uw("up",(l,u)=>{const{onTap:c}=this.node.getProps();c&&kn.update(()=>c(l,u))})};this.removeEndListeners(),this.removeEndListeners=Ka(this.node.current,"keyup",s),Uw("down",(a,l)=>{this.startPress(a,l)})},n=Ka(this.node.current,"keydown",t),r=()=>{this.isPressing&&Uw("cancel",(o,s)=>this.cancelPress(o,s))},i=Ka(this.node.current,"blur",r);this.removeAccessibleListeners=au(n,i)}}startPress(t,n){this.isPressing=!0;const{onTapStart:r,whileTap:i}=this.node.getProps();i&&this.node.animationState&&this.node.animationState.setActive("whileTap",!0),r&&kn.update(()=>r(t,n))}checkPressEnd(){return this.removeEndListeners(),this.isPressing=!1,this.node.getProps().whileTap&&this.node.animationState&&this.node.animationState.setActive("whileTap",!1),!ij()}cancelPress(t,n){if(!this.checkPressEnd())return;const{onTapCancel:r}=this.node.getProps();r&&kn.update(()=>r(t,n))}mount(){const t=this.node.getProps(),n=Ja(this.node.current,"pointerdown",this.startPointerPress,{passive:!(t.onTapStart||t.onPointerStart)}),r=Ka(this.node.current,"focus",this.startAccessiblePress);this.removeStartListeners=au(n,r)}unmount(){this.removeStartListeners(),this.removeEndListeners(),this.removeAccessibleListeners()}}const R3=new WeakMap,jw=new WeakMap,x5e=e=>{const t=R3.get(e.target);t&&t(e)},C5e=e=>{e.forEach(x5e)};function E5e({root:e,...t}){const n=e||document;jw.has(n)||jw.set(n,{});const r=jw.get(n),i=JSON.stringify(t);return r[i]||(r[i]=new IntersectionObserver(C5e,{root:e,...t})),r[i]}function T5e(e,t,n){const r=E5e(t);return R3.set(e,n),r.observe(e),()=>{R3.delete(e),r.unobserve(e)}}const A5e={some:0,all:1};class k5e extends Uu{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:i="some",once:o}=t,s={root:n?n.current:void 0,rootMargin:r,threshold:typeof i=="number"?i:A5e[i]},a=l=>{const{isIntersecting:u}=l;if(this.isInView===u||(this.isInView=u,o&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:c,onViewportLeave:d}=this.node.getProps(),f=u?c:d;f&&f(l)};return T5e(this.node.current,s,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(P5e(t,n))&&this.startObserver()}unmount(){}}function P5e({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const R5e={inView:{Feature:k5e},tap:{Feature:w5e},focus:{Feature:S5e},hover:{Feature:b5e}};function sj(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let r=0;rt[r]=n.get()),t}function O5e(e){const t={};return e.values.forEach((n,r)=>t[r]=n.getVelocity()),t}function KS(e,t,n){const r=e.getProps();return m4(r,t,n!==void 0?n:r.custom,I5e(e),O5e(e))}const M5e="framerAppearId",N5e="data-"+p4(M5e);let D5e=dr,y4=dr;const lu=e=>e*1e3,el=e=>e/1e3,L5e={current:!1},aj=e=>Array.isArray(e)&&typeof e[0]=="number";function lj(e){return!!(!e||typeof e=="string"&&uj[e]||aj(e)||Array.isArray(e)&&e.every(lj))}const up=([e,t,n,r])=>`cubic-bezier(${e}, ${t}, ${n}, ${r})`,uj={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:up([0,.65,.55,1]),circOut:up([.55,0,1,.45]),backIn:up([.31,.01,.66,-.59]),backOut:up([.33,1.53,.69,.99])};function cj(e){if(e)return aj(e)?up(e):Array.isArray(e)?e.map(cj):uj[e]}function $5e(e,t,n,{delay:r=0,duration:i,repeat:o=0,repeatType:s="loop",ease:a,times:l}={}){const u={[t]:n};l&&(u.offset=l);const c=cj(a);return Array.isArray(c)&&(u.easing=c),e.animate(u,{delay:r,duration:i,easing:Array.isArray(c)?"linear":c,fill:"both",iterations:o+1,direction:s==="reverse"?"alternate":"normal"})}function F5e(e,{repeat:t,repeatType:n="loop"}){const r=t&&n!=="loop"&&t%2===1?0:e.length-1;return e[r]}const dj=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,B5e=1e-7,z5e=12;function U5e(e,t,n,r,i){let o,s,a=0;do s=t+(n-t)/2,o=dj(s,r,i)-e,o>0?n=s:t=s;while(Math.abs(o)>B5e&&++aU5e(o,0,1,e,n);return o=>o===0||o===1?o:dj(i(o),t,r)}const j5e=Xm(.42,0,1,1),V5e=Xm(0,0,.58,1),fj=Xm(.42,0,.58,1),G5e=e=>Array.isArray(e)&&typeof e[0]!="number",hj=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,pj=e=>t=>1-e(1-t),gj=e=>1-Math.sin(Math.acos(e)),v4=pj(gj),H5e=hj(v4),mj=Xm(.33,1.53,.69,.99),_4=pj(mj),q5e=hj(_4),W5e=e=>(e*=2)<1?.5*_4(e):.5*(2-Math.pow(2,-10*(e-1))),K5e={linear:dr,easeIn:j5e,easeInOut:fj,easeOut:V5e,circIn:gj,circInOut:H5e,circOut:v4,backIn:_4,backInOut:q5e,backOut:mj,anticipate:W5e},_I=e=>{if(Array.isArray(e)){y4(e.length===4);const[t,n,r,i]=e;return Xm(t,n,r,i)}else if(typeof e=="string")return K5e[e];return e},b4=(e,t)=>n=>!!(Wm(n)&&WEe.test(n)&&n.startsWith(e)||t&&Object.prototype.hasOwnProperty.call(n,t)),yj=(e,t,n)=>r=>{if(!Wm(r))return r;const[i,o,s,a]=r.match(qS);return{[e]:parseFloat(i),[t]:parseFloat(o),[n]:parseFloat(s),alpha:a!==void 0?parseFloat(a):1}},X5e=e=>xu(0,255,e),Vw={...ld,transform:e=>Math.round(X5e(e))},gc={test:b4("rgb","red"),parse:yj("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:r=1})=>"rgba("+Vw.transform(e)+", "+Vw.transform(t)+", "+Vw.transform(n)+", "+kp(Ap.transform(r))+")"};function Q5e(e){let t="",n="",r="",i="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),r=e.substring(5,7),i=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),r=e.substring(3,4),i=e.substring(4,5),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 I3={test:b4("#"),parse:Q5e,transform:gc.transform},Xd={test:b4("hsl","hue"),parse:yj("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:r=1})=>"hsla("+Math.round(e)+", "+ma.transform(kp(t))+", "+ma.transform(kp(n))+", "+kp(Ap.transform(r))+")"},Hi={test:e=>gc.test(e)||I3.test(e)||Xd.test(e),parse:e=>gc.test(e)?gc.parse(e):Xd.test(e)?Xd.parse(e):I3.parse(e),transform:e=>Wm(e)?e:e.hasOwnProperty("red")?gc.transform(e):Xd.transform(e)},rr=(e,t,n)=>-n*e+n*t+e;function Gw(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 Y5e({hue:e,saturation:t,lightness:n,alpha:r}){e/=360,t/=100,n/=100;let i=0,o=0,s=0;if(!t)i=o=s=n;else{const a=n<.5?n*(1+t):n+t-n*t,l=2*n-a;i=Gw(l,a,e+1/3),o=Gw(l,a,e),s=Gw(l,a,e-1/3)}return{red:Math.round(i*255),green:Math.round(o*255),blue:Math.round(s*255),alpha:r}}const Hw=(e,t,n)=>{const r=e*e;return Math.sqrt(Math.max(0,n*(t*t-r)+r))},Z5e=[I3,gc,Xd],J5e=e=>Z5e.find(t=>t.test(e));function bI(e){const t=J5e(e);let n=t.parse(e);return t===Xd&&(n=Y5e(n)),n}const vj=(e,t)=>{const n=bI(e),r=bI(t),i={...n};return o=>(i.red=Hw(n.red,r.red,o),i.green=Hw(n.green,r.green,o),i.blue=Hw(n.blue,r.blue,o),i.alpha=rr(n.alpha,r.alpha,o),gc.transform(i))};function eTe(e){var t,n;return isNaN(e)&&Wm(e)&&(((t=e.match(qS))===null||t===void 0?void 0:t.length)||0)+(((n=e.match(GU))===null||n===void 0?void 0:n.length)||0)>0}const _j={regex:HEe,countKey:"Vars",token:"${v}",parse:dr},bj={regex:GU,countKey:"Colors",token:"${c}",parse:Hi.parse},Sj={regex:qS,countKey:"Numbers",token:"${n}",parse:ld.parse};function qw(e,{regex:t,countKey:n,token:r,parse:i}){const o=e.tokenised.match(t);o&&(e["num"+n]=o.length,e.tokenised=e.tokenised.replace(t,r),e.values.push(...o.map(i)))}function F1(e){const t=e.toString(),n={value:t,tokenised:t,values:[],numVars:0,numColors:0,numNumbers:0};return n.value.includes("var(--")&&qw(n,_j),qw(n,bj),qw(n,Sj),n}function wj(e){return F1(e).values}function xj(e){const{values:t,numColors:n,numVars:r,tokenised:i}=F1(e),o=t.length;return s=>{let a=i;for(let l=0;ltypeof e=="number"?0:e;function nTe(e){const t=wj(e);return xj(e)(t.map(tTe))}const Cu={test:eTe,parse:wj,createTransformer:xj,getAnimatableNone:nTe},Cj=(e,t)=>n=>`${n>0?t:e}`;function Ej(e,t){return typeof e=="number"?n=>rr(e,t,n):Hi.test(e)?vj(e,t):e.startsWith("var(")?Cj(e,t):Aj(e,t)}const Tj=(e,t)=>{const n=[...e],r=n.length,i=e.map((o,s)=>Ej(o,t[s]));return o=>{for(let s=0;s{const n={...e,...t},r={};for(const i in n)e[i]!==void 0&&t[i]!==void 0&&(r[i]=Ej(e[i],t[i]));return i=>{for(const o in r)n[o]=r[o](i);return n}},Aj=(e,t)=>{const n=Cu.createTransformer(t),r=F1(e),i=F1(t);return r.numVars===i.numVars&&r.numColors===i.numColors&&r.numNumbers>=i.numNumbers?au(Tj(r.values,i.values),n):Cj(e,t)},Zg=(e,t,n)=>{const r=t-e;return r===0?1:(n-e)/r},SI=(e,t)=>n=>rr(e,t,n);function iTe(e){return typeof e=="number"?SI:typeof e=="string"?Hi.test(e)?vj:Aj:Array.isArray(e)?Tj:typeof e=="object"?rTe:SI}function oTe(e,t,n){const r=[],i=n||iTe(e[0]),o=e.length-1;for(let s=0;st[0];e[0]>e[o-1]&&(e=[...e].reverse(),t=[...t].reverse());const s=oTe(t,r,i),a=s.length,l=u=>{let c=0;if(a>1)for(;cl(xu(e[0],e[o-1],u)):l}function sTe(e,t){const n=e[e.length-1];for(let r=1;r<=t;r++){const i=Zg(0,t,r);e.push(rr(n,1,i))}}function aTe(e){const t=[0];return sTe(t,e.length-1),t}function lTe(e,t){return e.map(n=>n*t)}function uTe(e,t){return e.map(()=>t||fj).splice(0,e.length-1)}function B1({duration:e=300,keyframes:t,times:n,ease:r="easeInOut"}){const i=G5e(r)?r.map(_I):_I(r),o={done:!1,value:t[0]},s=lTe(n&&n.length===t.length?n:aTe(t),e),a=kj(s,t,{ease:Array.isArray(i)?i:uTe(t,i)});return{calculatedDuration:e,next:l=>(o.value=a(l),o.done=l>=e,o)}}function Pj(e,t){return t?e*(1e3/t):0}const cTe=5;function Rj(e,t,n){const r=Math.max(t-cTe,0);return Pj(n-e(r),t-r)}const Ww=.001,dTe=.01,wI=10,fTe=.05,hTe=1;function pTe({duration:e=800,bounce:t=.25,velocity:n=0,mass:r=1}){let i,o;D5e(e<=lu(wI));let s=1-t;s=xu(fTe,hTe,s),e=xu(dTe,wI,el(e)),s<1?(i=u=>{const c=u*s,d=c*e,f=c-n,h=O3(u,s),p=Math.exp(-d);return Ww-f/h*p},o=u=>{const d=u*s*e,f=d*n+n,h=Math.pow(s,2)*Math.pow(u,2)*e,p=Math.exp(-d),m=O3(Math.pow(u,2),s);return(-i(u)+Ww>0?-1:1)*((f-h)*p)/m}):(i=u=>{const c=Math.exp(-u*e),d=(u-n)*e+1;return-Ww+c*d},o=u=>{const c=Math.exp(-u*e),d=(n-u)*(e*e);return c*d});const a=5/e,l=mTe(i,o,a);if(e=lu(e),isNaN(l))return{stiffness:100,damping:10,duration:e};{const u=Math.pow(l,2)*r;return{stiffness:u,damping:s*2*Math.sqrt(r*u),duration:e}}}const gTe=12;function mTe(e,t,n){let r=n;for(let i=1;ie[n]!==void 0)}function _Te(e){let t={velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1,...e};if(!xI(e,vTe)&&xI(e,yTe)){const n=pTe(e);t={...t,...n,velocity:0,mass:1},t.isResolvedFromDuration=!0}return t}function Ij({keyframes:e,restDelta:t,restSpeed:n,...r}){const i=e[0],o=e[e.length-1],s={done:!1,value:i},{stiffness:a,damping:l,mass:u,velocity:c,duration:d,isResolvedFromDuration:f}=_Te(r),h=c?-el(c):0,p=l/(2*Math.sqrt(a*u)),m=o-i,b=el(Math.sqrt(a/u)),_=Math.abs(m)<5;n||(n=_?.01:2),t||(t=_?.005:.5);let y;if(p<1){const g=O3(b,p);y=v=>{const S=Math.exp(-p*b*v);return o-S*((h+p*b*m)/g*Math.sin(g*v)+m*Math.cos(g*v))}}else if(p===1)y=g=>o-Math.exp(-b*g)*(m+(h+b*m)*g);else{const g=b*Math.sqrt(p*p-1);y=v=>{const S=Math.exp(-p*b*v),w=Math.min(g*v,300);return o-S*((h+p*b*m)*Math.sinh(w)+g*m*Math.cosh(w))/g}}return{calculatedDuration:f&&d||null,next:g=>{const v=y(g);if(f)s.done=g>=d;else{let S=h;g!==0&&(p<1?S=Rj(y,g,v):S=0);const w=Math.abs(S)<=n,x=Math.abs(o-v)<=t;s.done=w&&x}return s.value=s.done?o:v,s}}}function CI({keyframes:e,velocity:t=0,power:n=.8,timeConstant:r=325,bounceDamping:i=10,bounceStiffness:o=500,modifyTarget:s,min:a,max:l,restDelta:u=.5,restSpeed:c}){const d=e[0],f={done:!1,value:d},h=C=>a!==void 0&&Cl,p=C=>a===void 0?l:l===void 0||Math.abs(a-C)-m*Math.exp(-C/r),g=C=>_+y(C),v=C=>{const A=y(C),T=g(C);f.done=Math.abs(A)<=u,f.value=f.done?_:T};let S,w;const x=C=>{h(f.value)&&(S=C,w=Ij({keyframes:[f.value,p(f.value)],velocity:Rj(g,C,f.value),damping:i,stiffness:o,restDelta:u,restSpeed:c}))};return x(0),{calculatedDuration:null,next:C=>{let A=!1;return!w&&S===void 0&&(A=!0,v(C),x(C)),S!==void 0&&C>S?w.next(C-S):(!A&&v(C),f)}}}const bTe=e=>{const t=({timestamp:n})=>e(n);return{start:()=>kn.update(t,!0),stop:()=>cl(t),now:()=>Ii.isProcessing?Ii.timestamp:performance.now()}},EI=2e4;function TI(e){let t=0;const n=50;let r=e.next(t);for(;!r.done&&t=EI?1/0:t}const STe={decay:CI,inertia:CI,tween:B1,keyframes:B1,spring:Ij};function z1({autoplay:e=!0,delay:t=0,driver:n=bTe,keyframes:r,type:i="keyframes",repeat:o=0,repeatDelay:s=0,repeatType:a="loop",onPlay:l,onStop:u,onComplete:c,onUpdate:d,...f}){let h=1,p=!1,m,b;const _=()=>{b=new Promise(F=>{m=F})};_();let y;const g=STe[i]||B1;let v;g!==B1&&typeof r[0]!="number"&&(v=kj([0,100],r,{clamp:!1}),r=[0,100]);const S=g({...f,keyframes:r});let w;a==="mirror"&&(w=g({...f,keyframes:[...r].reverse(),velocity:-(f.velocity||0)}));let x="idle",C=null,A=null,T=null;S.calculatedDuration===null&&o&&(S.calculatedDuration=TI(S));const{calculatedDuration:k}=S;let L=1/0,N=1/0;k!==null&&(L=k+s,N=L*(o+1)-s);let E=0;const P=F=>{if(A===null)return;h>0&&(A=Math.min(A,F)),h<0&&(A=Math.min(F-N/h,A)),C!==null?E=C:E=Math.round(F-A)*h;const U=E-t*(h>=0?1:-1),V=h>=0?U<0:U>N;E=Math.max(U,0),x==="finished"&&C===null&&(E=N);let H=E,Y=S;if(o){const te=E/L;let oe=Math.floor(te),me=te%1;!me&&te>=1&&(me=1),me===1&&oe--,oe=Math.min(oe,o+1);const le=!!(oe%2);le&&(a==="reverse"?(me=1-me,s&&(me-=s/L)):a==="mirror"&&(Y=w));let ht=xu(0,1,me);E>N&&(ht=a==="reverse"&&le?1:0),H=ht*L}const Q=V?{done:!1,value:r[0]}:Y.next(H);v&&(Q.value=v(Q.value));let{done:j}=Q;!V&&k!==null&&(j=h>=0?E>=N:E<=0);const K=C===null&&(x==="finished"||x==="running"&&j);return d&&d(Q.value),K&&R(),Q},D=()=>{y&&y.stop(),y=void 0},B=()=>{x="idle",D(),m(),_(),A=T=null},R=()=>{x="finished",c&&c(),D(),m()},I=()=>{if(p)return;y||(y=n(P));const F=y.now();l&&l(),C!==null?A=F-C:(!A||x==="finished")&&(A=F),x==="finished"&&_(),T=A,C=null,x="running",y.start()};e&&I();const O={then(F,U){return b.then(F,U)},get time(){return el(E)},set time(F){F=lu(F),E=F,C!==null||!y||h===0?C=F:A=y.now()-F/h},get duration(){const F=S.calculatedDuration===null?TI(S):S.calculatedDuration;return el(F)},get speed(){return h},set speed(F){F===h||!y||(h=F,O.time=el(E))},get state(){return x},play:I,pause:()=>{x="paused",C=E},stop:()=>{p=!0,x!=="idle"&&(x="idle",u&&u(),B())},cancel:()=>{T!==null&&P(T),B()},complete:()=>{x="finished"},sample:F=>(A=0,P(F))};return O}function wTe(e){let t;return()=>(t===void 0&&(t=e()),t)}const xTe=wTe(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),CTe=new Set(["opacity","clipPath","filter","transform","backgroundColor"]),d0=10,ETe=2e4,TTe=(e,t)=>t.type==="spring"||e==="backgroundColor"||!lj(t.ease);function ATe(e,t,{onUpdate:n,onComplete:r,...i}){if(!(xTe()&&CTe.has(t)&&!i.repeatDelay&&i.repeatType!=="mirror"&&i.damping!==0&&i.type!=="inertia"))return!1;let s=!1,a,l;const u=()=>{l=new Promise(y=>{a=y})};u();let{keyframes:c,duration:d=300,ease:f,times:h}=i;if(TTe(t,i)){const y=z1({...i,repeat:0,delay:0});let g={done:!1,value:c[0]};const v=[];let S=0;for(;!g.done&&Sp.cancel(),b=()=>{kn.update(m),a(),u()};return p.onfinish=()=>{e.set(F5e(c,i)),r&&r(),b()},{then(y,g){return l.then(y,g)},attachTimeline(y){return p.timeline=y,p.onfinish=null,dr},get time(){return el(p.currentTime||0)},set time(y){p.currentTime=lu(y)},get speed(){return p.playbackRate},set speed(y){p.playbackRate=y},get duration(){return el(d)},play:()=>{s||(p.play(),cl(m))},pause:()=>p.pause(),stop:()=>{if(s=!0,p.playState==="idle")return;const{currentTime:y}=p;if(y){const g=z1({...i,autoplay:!1});e.setWithVelocity(g.sample(y-d0).value,g.sample(y).value,d0)}b()},complete:()=>p.finish(),cancel:b}}function kTe({keyframes:e,delay:t,onUpdate:n,onComplete:r}){const i=()=>(n&&n(e[e.length-1]),r&&r(),{time:0,speed:1,duration:0,play:dr,pause:dr,stop:dr,then:o=>(o(),Promise.resolve()),cancel:dr,complete:dr});return t?z1({keyframes:[0,1],duration:0,delay:t,onComplete:i}):i()}const PTe={type:"spring",stiffness:500,damping:25,restSpeed:10},RTe=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),ITe={type:"keyframes",duration:.8},OTe={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},MTe=(e,{keyframes:t})=>t.length>2?ITe:ad.has(e)?e.startsWith("scale")?RTe(t[1]):PTe:OTe,M3=(e,t)=>e==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Cu.test(t)||t==="0")&&!t.startsWith("url(")),NTe=new Set(["brightness","contrast","saturate","opacity"]);function DTe(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[r]=n.match(qS)||[];if(!r)return e;const i=n.replace(r,"");let o=NTe.has(t)?1:0;return r!==n&&(o*=100),t+"("+o+i+")"}const LTe=/([a-z-]*)\(.*?\)/g,N3={...Cu,getAnimatableNone:e=>{const t=e.match(LTe);return t?t.map(DTe).join(" "):e}},$Te={...HU,color:Hi,backgroundColor:Hi,outlineColor:Hi,fill:Hi,stroke:Hi,borderColor:Hi,borderTopColor:Hi,borderRightColor:Hi,borderBottomColor:Hi,borderLeftColor:Hi,filter:N3,WebkitFilter:N3},S4=e=>$Te[e];function Oj(e,t){let n=S4(e);return n!==N3&&(n=Cu),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const Mj=e=>/^0[^.\s]+$/.test(e);function FTe(e){if(typeof e=="number")return e===0;if(e!==null)return e==="none"||e==="0"||Mj(e)}function BTe(e,t,n,r){const i=M3(t,n);let o;Array.isArray(n)?o=[...n]:o=[null,n];const s=r.from!==void 0?r.from:e.get();let a;const l=[];for(let u=0;ui=>{const o=Nj(r,e)||{},s=o.delay||r.delay||0;let{elapsed:a=0}=r;a=a-lu(s);const l=BTe(t,e,n,o),u=l[0],c=l[l.length-1],d=M3(e,u),f=M3(e,c);let h={keyframes:l,velocity:t.getVelocity(),ease:"easeOut",...o,delay:-a,onUpdate:p=>{t.set(p),o.onUpdate&&o.onUpdate(p)},onComplete:()=>{i(),o.onComplete&&o.onComplete()}};if(zTe(o)||(h={...h,...MTe(e,h)}),h.duration&&(h.duration=lu(h.duration)),h.repeatDelay&&(h.repeatDelay=lu(h.repeatDelay)),!d||!f||L5e.current||o.type===!1)return kTe(h);if(t.owner&&t.owner.current instanceof HTMLElement&&!t.owner.getProps().onUpdate){const p=ATe(t,e,h);if(p)return p}return z1(h)};function U1(e){return!!(_o(e)&&e.add)}const Dj=e=>/^\-?\d*\.?\d+$/.test(e);function x4(e,t){e.indexOf(t)===-1&&e.push(t)}function C4(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}class E4{constructor(){this.subscriptions=[]}add(t){return x4(this.subscriptions,t),()=>C4(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 jTe{constructor(t,n={}){this.version="10.16.1",this.timeDelta=0,this.lastUpdated=0,this.canTrackVelocity=!1,this.events={},this.updateAndNotify=(r,i=!0)=>{this.prev=this.current,this.current=r;const{delta:o,timestamp:s}=Ii;this.lastUpdated!==s&&(this.timeDelta=o,this.lastUpdated=s,kn.postRender(this.scheduleVelocityCheck)),this.prev!==this.current&&this.events.change&&this.events.change.notify(this.current),this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()),i&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.scheduleVelocityCheck=()=>kn.postRender(this.velocityCheck),this.velocityCheck=({timestamp:r})=>{r!==this.lastUpdated&&(this.prev=this.current,this.events.velocityChange&&this.events.velocityChange.notify(this.getVelocity()))},this.hasAnimated=!1,this.prev=this.current=t,this.canTrackVelocity=UTe(this.current),this.owner=n.owner}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new E4);const r=this.events[t].add(n);return t==="change"?()=>{r(),kn.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t,n=!0){!n||!this.passiveEffect?this.updateAndNotify(t,n):this.passiveEffect(t,this.updateAndNotify)}setWithVelocity(t,n,r){this.set(n),this.prev=t,this.timeDelta=r}jump(t){this.updateAndNotify(t),this.prev=t,this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){return this.canTrackVelocity?Pj(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Zf(e,t){return new jTe(e,t)}const Lj=e=>t=>t.test(e),VTe={test:e=>e==="auto",parse:e=>e},$j=[ld,rt,ma,kl,XEe,KEe,VTe],Qh=e=>$j.find(Lj(e)),GTe=[...$j,Hi,Cu],HTe=e=>GTe.find(Lj(e));function qTe(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,Zf(n))}function WTe(e,t){const n=KS(e,t);let{transitionEnd:r={},transition:i={},...o}=n?e.makeTargetAnimatable(n,!1):{};o={...o,...r};for(const s in o){const a=u5e(o[s]);qTe(e,s,a)}}function KTe(e,t,n){var r,i;const o=Object.keys(t).filter(a=>!e.hasValue(a)),s=o.length;if(s)for(let a=0;al.remove(d))),u.push(m)}return s&&Promise.all(u).then(()=>{s&&WTe(e,s)}),u}function D3(e,t,n={}){const r=KS(e,t,n.custom);let{transition:i=e.getDefaultTransition()||{}}=r||{};n.transitionOverride&&(i=n.transitionOverride);const o=r?()=>Promise.all(Fj(e,r,n)):()=>Promise.resolve(),s=e.variantChildren&&e.variantChildren.size?(l=0)=>{const{delayChildren:u=0,staggerChildren:c,staggerDirection:d}=i;return ZTe(e,t,u+l,c,d,n)}:()=>Promise.resolve(),{when:a}=i;if(a){const[l,u]=a==="beforeChildren"?[o,s]:[s,o];return l().then(()=>u())}else return Promise.all([o(),s(n.delay)])}function ZTe(e,t,n=0,r=0,i=1,o){const s=[],a=(e.variantChildren.size-1)*r,l=i===1?(u=0)=>u*r:(u=0)=>a-u*r;return Array.from(e.variantChildren).sort(JTe).forEach((u,c)=>{u.notify("AnimationStart",t),s.push(D3(u,t,{...o,delay:n+l(c)}).then(()=>u.notify("AnimationComplete",t)))}),Promise.all(s)}function JTe(e,t){return e.sortNodePosition(t)}function e4e(e,t,n={}){e.notify("AnimationStart",t);let r;if(Array.isArray(t)){const i=t.map(o=>D3(e,o,n));r=Promise.all(i)}else if(typeof t=="string")r=D3(e,t,n);else{const i=typeof t=="function"?KS(e,t,n.custom):t;r=Promise.all(Fj(e,i,n))}return r.then(()=>e.notify("AnimationComplete",t))}const t4e=[...s4].reverse(),n4e=s4.length;function r4e(e){return t=>Promise.all(t.map(({animation:n,options:r})=>e4e(e,n,r)))}function i4e(e){let t=r4e(e);const n=s4e();let r=!0;const i=(l,u)=>{const c=KS(e,u);if(c){const{transition:d,transitionEnd:f,...h}=c;l={...l,...h,...f}}return l};function o(l){t=l(e)}function s(l,u){const c=e.getProps(),d=e.getVariantContext(!0)||{},f=[],h=new Set;let p={},m=1/0;for(let _=0;_m&&S;const T=Array.isArray(v)?v:[v];let k=T.reduce(i,{});w===!1&&(k={});const{prevResolvedValues:L={}}=g,N={...L,...k},E=P=>{A=!0,h.delete(P),g.needsAnimating[P]=!0};for(const P in N){const D=k[P],B=L[P];p.hasOwnProperty(P)||(D!==B?$1(D)&&$1(B)?!sj(D,B)||C?E(P):g.protectedKeys[P]=!0:D!==void 0?E(P):h.add(P):D!==void 0&&h.has(P)?E(P):g.protectedKeys[P]=!0)}g.prevProp=v,g.prevResolvedValues=k,g.isActive&&(p={...p,...k}),r&&e.blockInitialAnimation&&(A=!1),A&&!x&&f.push(...T.map(P=>({animation:P,options:{type:y,...l}})))}if(h.size){const _={};h.forEach(y=>{const g=e.getBaseTarget(y);g!==void 0&&(_[y]=g)}),f.push({animation:_})}let b=!!f.length;return r&&c.initial===!1&&!e.manuallyAnimateOnMount&&(b=!1),r=!1,b?t(f):Promise.resolve()}function a(l,u,c){var d;if(n[l].isActive===u)return Promise.resolve();(d=e.variantChildren)===null||d===void 0||d.forEach(h=>{var p;return(p=h.animationState)===null||p===void 0?void 0:p.setActive(l,u)}),n[l].isActive=u;const f=s(c,l);for(const h in n)n[h].protectedKeys={};return f}return{animateChanges:s,setActive:a,setAnimateFunction:o,getState:()=>n}}function o4e(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!sj(t,e):!1}function Xu(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function s4e(){return{animate:Xu(!0),whileInView:Xu(),whileHover:Xu(),whileTap:Xu(),whileDrag:Xu(),whileFocus:Xu(),exit:Xu()}}class a4e extends Uu{constructor(t){super(t),t.animationState||(t.animationState=i4e(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();this.unmount(),GS(t)&&(this.unmount=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){}}let l4e=0;class u4e extends Uu{constructor(){super(...arguments),this.id=l4e++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n,custom:r}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const o=this.node.animationState.setActive("exit",!t,{custom:r??this.node.getProps().custom});n&&!t&&o.then(()=>n(this.id))}mount(){const{register:t}=this.node.presenceContext||{};t&&(this.unmount=t(this.id))}unmount(){}}const c4e={animation:{Feature:a4e},exit:{Feature:u4e}},AI=(e,t)=>Math.abs(e-t);function d4e(e,t){const n=AI(e.x,t.x),r=AI(e.y,t.y);return Math.sqrt(n**2+r**2)}class Bj{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=Xw(this.lastMoveEventInfo,this.history),c=this.startEvent!==null,d=d4e(u.offset,{x:0,y:0})>=3;if(!c&&!d)return;const{point:f}=u,{timestamp:h}=Ii;this.history.push({...f,timestamp:h});const{onStart:p,onMove:m}=this.handlers;c||(p&&p(this.lastMoveEvent,u),this.startEvent=this.lastMoveEvent),m&&m(this.lastMoveEvent,u)},this.handlePointerMove=(u,c)=>{this.lastMoveEvent=u,this.lastMoveEventInfo=Kw(c,this.transformPagePoint),kn.update(this.updatePoint,!0)},this.handlePointerUp=(u,c)=>{if(this.end(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const{onEnd:d,onSessionEnd:f}=this.handlers,h=Xw(u.type==="pointercancel"?this.lastMoveEventInfo:Kw(c,this.transformPagePoint),this.history);this.startEvent&&d&&d(u,h),f&&f(u,h)},!tj(t))return;this.handlers=n,this.transformPagePoint=r;const i=WS(t),o=Kw(i,this.transformPagePoint),{point:s}=o,{timestamp:a}=Ii;this.history=[{...s,timestamp:a}];const{onSessionStart:l}=n;l&&l(t,Xw(o,this.history)),this.removeListeners=au(Ja(window,"pointermove",this.handlePointerMove),Ja(window,"pointerup",this.handlePointerUp),Ja(window,"pointercancel",this.handlePointerUp))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),cl(this.updatePoint)}}function Kw(e,t){return t?{point:t(e.point)}:e}function kI(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Xw({point:e},t){return{point:e,delta:kI(e,zj(t)),offset:kI(e,f4e(t)),velocity:h4e(t,.1)}}function f4e(e){return e[0]}function zj(e){return e[e.length-1]}function h4e(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const i=zj(e);for(;n>=0&&(r=e[n],!(i.timestamp-r.timestamp>lu(t)));)n--;if(!r)return{x:0,y:0};const o=el(i.timestamp-r.timestamp);if(o===0)return{x:0,y:0};const s={x:(i.x-r.x)/o,y:(i.y-r.y)/o};return s.x===1/0&&(s.x=0),s.y===1/0&&(s.y=0),s}function Lo(e){return e.max-e.min}function L3(e,t=0,n=.01){return Math.abs(e-t)<=n}function PI(e,t,n,r=.5){e.origin=r,e.originPoint=rr(t.min,t.max,e.origin),e.scale=Lo(n)/Lo(t),(L3(e.scale,1,1e-4)||isNaN(e.scale))&&(e.scale=1),e.translate=rr(n.min,n.max,e.origin)-e.originPoint,(L3(e.translate)||isNaN(e.translate))&&(e.translate=0)}function Pp(e,t,n,r){PI(e.x,t.x,n.x,r?r.originX:void 0),PI(e.y,t.y,n.y,r?r.originY:void 0)}function RI(e,t,n){e.min=n.min+t.min,e.max=e.min+Lo(t)}function p4e(e,t,n){RI(e.x,t.x,n.x),RI(e.y,t.y,n.y)}function II(e,t,n){e.min=t.min-n.min,e.max=e.min+Lo(t)}function Rp(e,t,n){II(e.x,t.x,n.x),II(e.y,t.y,n.y)}function g4e(e,{min:t,max:n},r){return t!==void 0&&en&&(e=r?rr(n,e,r.max):Math.min(e,n)),e}function OI(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 m4e(e,{top:t,left:n,bottom:r,right:i}){return{x:OI(e.x,n,i),y:OI(e.y,t,r)}}function MI(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.minr?n=Zg(t.min,t.max-r,e.min):r>i&&(n=Zg(e.min,e.max-i,t.min)),xu(0,1,n)}function _4e(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 $3=.35;function b4e(e=$3){return e===!1?e=0:e===!0&&(e=$3),{x:NI(e,"left","right"),y:NI(e,"top","bottom")}}function NI(e,t,n){return{min:DI(e,t),max:DI(e,n)}}function DI(e,t){return typeof e=="number"?e:e[t]||0}const LI=()=>({translate:0,scale:1,origin:0,originPoint:0}),Qd=()=>({x:LI(),y:LI()}),$I=()=>({min:0,max:0}),Ar=()=>({x:$I(),y:$I()});function Qs(e){return[e("x"),e("y")]}function Uj({top:e,left:t,right:n,bottom:r}){return{x:{min:t,max:n},y:{min:e,max:r}}}function S4e({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function w4e(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 Qw(e){return e===void 0||e===1}function F3({scale:e,scaleX:t,scaleY:n}){return!Qw(e)||!Qw(t)||!Qw(n)}function tc(e){return F3(e)||jj(e)||e.z||e.rotate||e.rotateX||e.rotateY}function jj(e){return FI(e.x)||FI(e.y)}function FI(e){return e&&e!=="0%"}function j1(e,t,n){const r=e-n,i=t*r;return n+i}function BI(e,t,n,r,i){return i!==void 0&&(e=j1(e,i,r)),j1(e,n,r)+t}function B3(e,t=0,n=1,r,i){e.min=BI(e.min,t,n,r,i),e.max=BI(e.max,t,n,r,i)}function Vj(e,{x:t,y:n}){B3(e.x,t.translate,t.scale,t.originPoint),B3(e.y,n.translate,n.scale,n.originPoint)}function x4e(e,t,n,r=!1){const i=n.length;if(!i)return;t.x=t.y=1;let o,s;for(let a=0;a1.0000000000001||e<.999999999999?e:1}function Ml(e,t){e.min=e.min+t,e.max=e.max+t}function UI(e,t,[n,r,i]){const o=t[i]!==void 0?t[i]:.5,s=rr(e.min,e.max,o);B3(e,t[n],t[r],s,t.scale)}const C4e=["x","scaleX","originX"],E4e=["y","scaleY","originY"];function Yd(e,t){UI(e.x,t,C4e),UI(e.y,t,E4e)}function Gj(e,t){return Uj(w4e(e.getBoundingClientRect(),t))}function T4e(e,t,n){const r=Gj(e,n),{scroll:i}=t;return i&&(Ml(r.x,i.offset.x),Ml(r.y,i.offset.y)),r}const A4e=new WeakMap;class k4e{constructor(t){this.openGlobalLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Ar(),this.visualElement=t}start(t,{snapToCursor:n=!1}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const i=l=>{this.stopAnimation(),n&&this.snapToCursor(WS(l,"page").point)},o=(l,u)=>{const{drag:c,dragPropagation:d,onDragStart:f}=this.getProps();if(c&&!d&&(this.openGlobalLock&&this.openGlobalLock(),this.openGlobalLock=rj(c),!this.openGlobalLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Qs(p=>{let m=this.getAxisMotionValue(p).get()||0;if(ma.test(m)){const{projection:b}=this.visualElement;if(b&&b.layout){const _=b.layout.layoutBox[p];_&&(m=Lo(_)*(parseFloat(m)/100))}}this.originPoint[p]=m}),f&&kn.update(()=>f(l,u),!1,!0);const{animationState:h}=this.visualElement;h&&h.setActive("whileDrag",!0)},s=(l,u)=>{const{dragPropagation:c,dragDirectionLock:d,onDirectionLock:f,onDrag:h}=this.getProps();if(!c&&!this.openGlobalLock)return;const{offset:p}=u;if(d&&this.currentDirection===null){this.currentDirection=P4e(p),this.currentDirection!==null&&f&&f(this.currentDirection);return}this.updateAxis("x",u.point,p),this.updateAxis("y",u.point,p),this.visualElement.render(),h&&h(l,u)},a=(l,u)=>this.stop(l,u);this.panSession=new Bj(t,{onSessionStart:i,onStart:o,onMove:s,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&&kn.update(()=>o(t,n))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,r){const{drag:i}=this.getProps();if(!r||!f0(t,i,this.currentDirection))return;const o=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=g4e(s,this.constraints[t],this.elastic[t])),o.set(s)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),{layout:r}=this.visualElement.projection||{},i=this.constraints;t&&Kd(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=m4e(r.layoutBox,t):this.constraints=!1,this.elastic=b4e(n),i!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&Qs(o=>{this.getAxisMotionValue(o)&&(this.constraints[o]=_4e(r.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Kd(t))return!1;const r=t.current,{projection:i}=this.visualElement;if(!i||!i.layout)return!1;const o=T4e(r,i.root,this.visualElement.getTransformPagePoint());let s=y4e(i.layout.layoutBox,o);if(n){const a=n(S4e(s));this.hasMutatedConstraints=!!a,a&&(s=Uj(a))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:i,dragTransition:o,dragSnapToOrigin:s,onDragTransitionEnd:a}=this.getProps(),l=this.constraints||{},u=Qs(c=>{if(!f0(c,n,this.currentDirection))return;let d=l&&l[c]||{};s&&(d={min:0,max:0});const f=i?200:1e6,h=i?40:1e7,p={type:"inertia",velocity:r?t[c]:0,bounceStiffness:f,bounceDamping:h,timeConstant:750,restDelta:1,restSpeed:10,...o,...d};return this.startAxisValueAnimation(c,p)});return Promise.all(u).then(a)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return r.start(w4(t,r,0,n))}stopAnimation(){Qs(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){const n="_drag"+t.toUpperCase(),r=this.visualElement.getProps(),i=r[n];return i||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){Qs(n=>{const{drag:r}=this.getProps();if(!f0(n,r,this.currentDirection))return;const{projection:i}=this.visualElement,o=this.getAxisMotionValue(n);if(i&&i.layout){const{min:s,max:a}=i.layout.layoutBox[n];o.set(t[n]-rr(s,a,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!Kd(n)||!r||!this.constraints)return;this.stopAnimation();const i={x:0,y:0};Qs(s=>{const a=this.getAxisMotionValue(s);if(a){const l=a.get();i[s]=v4e({min:l,max:l},this.constraints[s])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.resolveConstraints(),Qs(s=>{if(!f0(s,t,null))return;const a=this.getAxisMotionValue(s),{min:l,max:u}=this.constraints[s];a.set(rr(l,u,i[s]))})}addListeners(){if(!this.visualElement.current)return;A4e.set(this.visualElement,this);const t=this.visualElement.current,n=Ja(t,"pointerdown",l=>{const{drag:u,dragListener:c=!0}=this.getProps();u&&c&&this.start(l)}),r=()=>{const{dragConstraints:l}=this.getProps();Kd(l)&&(this.constraints=this.resolveRefConstraints())},{projection:i}=this.visualElement,o=i.addEventListener("measure",r);i&&!i.layout&&(i.root&&i.root.updateScroll(),i.updateLayout()),r();const s=Ka(window,"resize",()=>this.scalePositionWithinConstraints()),a=i.addEventListener("didUpdate",({delta:l,hasLayoutChanged:u})=>{this.isDragging&&u&&(Qs(c=>{const d=this.getAxisMotionValue(c);d&&(this.originPoint[c]+=l[c].translate,d.set(d.get()+l[c].translate))}),this.visualElement.render())});return()=>{s(),n(),o(),a&&a()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:i=!1,dragConstraints:o=!1,dragElastic:s=$3,dragMomentum:a=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:i,dragConstraints:o,dragElastic:s,dragMomentum:a}}}function f0(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function P4e(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class R4e extends Uu{constructor(t){super(t),this.removeGroupControls=dr,this.removeListeners=dr,this.controls=new k4e(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||dr}unmount(){this.removeGroupControls(),this.removeListeners()}}const jI=e=>(t,n)=>{e&&kn.update(()=>e(t,n))};class I4e extends Uu{constructor(){super(...arguments),this.removePointerDownListener=dr}onPointerDown(t){this.session=new Bj(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint()})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:i}=this.node.getProps();return{onSessionStart:jI(t),onStart:jI(n),onMove:r,onEnd:(o,s)=>{delete this.session,i&&kn.update(()=>i(o,s))}}}mount(){this.removePointerDownListener=Ja(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}function O4e(){const e=M.useContext(Hm);if(e===null)return[!0,null];const{isPresent:t,onExitComplete:n,register:r}=e,i=M.useId();return M.useEffect(()=>r(i),[]),!t&&n?[!1,()=>n&&n(i)]:[!0]}function YMe(){return M4e(M.useContext(Hm))}function M4e(e){return e===null?!0:e.isPresent}const Z0={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function VI(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const Yh={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(rt.test(e))e=parseFloat(e);else return e;const n=VI(e,t.target.x),r=VI(e,t.target.y);return`${n}% ${r}%`}},N4e={correct:(e,{treeScale:t,projectionDelta:n})=>{const r=e,i=Cu.parse(e);if(i.length>5)return r;const o=Cu.createTransformer(e),s=typeof i[0]!="number"?1:0,a=n.x.scale*t.x,l=n.y.scale*t.y;i[0+s]/=a,i[1+s]/=l;const u=rr(a,l,.5);return typeof i[2+s]=="number"&&(i[2+s]/=u),typeof i[3+s]=="number"&&(i[3+s]/=u),o(i)}};class D4e extends vn.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:i}=this.props,{projection:o}=t;UEe(L4e),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()})),Z0.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:i,isPresent:o}=this.props,s=r.projection;return s&&(s.isPresent=o,i||t.layoutDependency!==n||n===void 0?s.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?s.promote():s.relegate()||kn.postRender(()=>{const a=s.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),queueMicrotask(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:i}=t;i&&(i.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(i),r&&r.deregister&&r.deregister(i))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function Hj(e){const[t,n]=O4e(),r=M.useContext(l4);return vn.createElement(D4e,{...e,layoutGroup:r,switchLayoutGroup:M.useContext(zU),isPresent:t,safeToRemove:n})}const L4e={borderRadius:{...Yh,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Yh,borderTopRightRadius:Yh,borderBottomLeftRadius:Yh,borderBottomRightRadius:Yh,boxShadow:N4e},qj=["TopLeft","TopRight","BottomLeft","BottomRight"],$4e=qj.length,GI=e=>typeof e=="string"?parseFloat(e):e,HI=e=>typeof e=="number"||rt.test(e);function F4e(e,t,n,r,i,o){i?(e.opacity=rr(0,n.opacity!==void 0?n.opacity:1,B4e(r)),e.opacityExit=rr(t.opacity!==void 0?t.opacity:1,0,z4e(r))):o&&(e.opacity=rr(t.opacity!==void 0?t.opacity:1,n.opacity!==void 0?n.opacity:1,r));for(let s=0;s<$4e;s++){const a=`border${qj[s]}Radius`;let l=qI(t,a),u=qI(n,a);if(l===void 0&&u===void 0)continue;l||(l=0),u||(u=0),l===0||u===0||HI(l)===HI(u)?(e[a]=Math.max(rr(GI(l),GI(u),r),0),(ma.test(u)||ma.test(l))&&(e[a]+="%")):e[a]=u}(t.rotate||n.rotate)&&(e.rotate=rr(t.rotate||0,n.rotate||0,r))}function qI(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const B4e=Wj(0,.5,v4),z4e=Wj(.5,.95,dr);function Wj(e,t,n){return r=>rt?1:n(Zg(e,t,r))}function WI(e,t){e.min=t.min,e.max=t.max}function Go(e,t){WI(e.x,t.x),WI(e.y,t.y)}function KI(e,t,n,r,i){return e-=t,e=j1(e,1/n,r),i!==void 0&&(e=j1(e,1/i,r)),e}function U4e(e,t=0,n=1,r=.5,i,o=e,s=e){if(ma.test(t)&&(t=parseFloat(t),t=rr(s.min,s.max,t/100)-s.min),typeof t!="number")return;let a=rr(o.min,o.max,r);e===o&&(a-=t),e.min=KI(e.min,t,n,a,i),e.max=KI(e.max,t,n,a,i)}function XI(e,t,[n,r,i],o,s){U4e(e,t[n],t[r],t[i],t.scale,o,s)}const j4e=["x","scaleX","originX"],V4e=["y","scaleY","originY"];function QI(e,t,n,r){XI(e.x,t,j4e,n?n.x:void 0,r?r.x:void 0),XI(e.y,t,V4e,n?n.y:void 0,r?r.y:void 0)}function YI(e){return e.translate===0&&e.scale===1}function Kj(e){return YI(e.x)&&YI(e.y)}function G4e(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 Xj(e,t){return Math.round(e.x.min)===Math.round(t.x.min)&&Math.round(e.x.max)===Math.round(t.x.max)&&Math.round(e.y.min)===Math.round(t.y.min)&&Math.round(e.y.max)===Math.round(t.y.max)}function ZI(e){return Lo(e.x)/Lo(e.y)}class H4e{constructor(){this.members=[]}add(t){x4(this.members,t),t.scheduleRender()}remove(t){if(C4(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){const r=this.lead;if(t!==r&&(this.prevLead=r,this.lead=t,t.show(),r)){r.instance&&r.scheduleRender(),t.scheduleRender(),t.resumeFrom=r,n&&(t.resumeFrom.preserveOpacity=!0),r.snapshot&&(t.snapshot=r.snapshot,t.snapshot.latestValues=r.animationValues||r.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:i}=t.options;i===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:r}=t;n.onExitComplete&&n.onExitComplete(),r&&r.options.onExitComplete&&r.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function JI(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:c}=n;l&&(r+=`rotate(${l}deg) `),u&&(r+=`rotateX(${u}deg) `),c&&(r+=`rotateY(${c}deg) `)}const s=e.x.scale*t.x,a=e.y.scale*t.y;return(s!==1||a!==1)&&(r+=`scale(${s}, ${a})`),r||"none"}const q4e=(e,t)=>e.depth-t.depth;class W4e{constructor(){this.children=[],this.isDirty=!1}add(t){x4(this.children,t),this.isDirty=!0}remove(t){C4(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(q4e),this.isDirty=!1,this.children.forEach(t)}}function K4e(e,t){const n=performance.now(),r=({timestamp:i})=>{const o=i-n;o>=t&&(cl(r),e(o-t))};return kn.read(r,!0),()=>cl(r)}function X4e(e){window.MotionDebug&&window.MotionDebug.record(e)}function Q4e(e){return e instanceof SVGElement&&e.tagName!=="svg"}function Y4e(e,t,n){const r=_o(e)?e:Zf(e);return r.start(w4("",r,t,n)),r.animation}const eO=["","X","Y","Z"],tO=1e3;let Z4e=0;const nc={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0};function Qj({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:r,resetTransform:i}){return class{constructor(s={},a=t==null?void 0:t()){this.id=Z4e++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!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.hasTreeAnimated=!1,this.updateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{nc.totalNodes=nc.resolvedTargetDeltas=nc.recalculatedProjection=0,this.nodes.forEach(tAe),this.nodes.forEach(sAe),this.nodes.forEach(aAe),this.nodes.forEach(nAe),X4e(nc)},this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=s,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let l=0;lthis.root.updateBlockedByResize=!1;e(s,()=>{this.root.updateBlockedByResize=!0,d&&d(),d=K4e(f,250),Z0.hasAnimatedSinceResize&&(Z0.hasAnimatedSinceResize=!1,this.nodes.forEach(rO))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&c&&(l||u)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:f,hasRelativeTargetChanged:h,layout:p})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const m=this.options.transition||c.getDefaultTransition()||fAe,{onLayoutAnimationStart:b,onLayoutAnimationComplete:_}=c.getProps(),y=!this.targetLayout||!Xj(this.targetLayout,p)||h,g=!f&&h;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||g||f&&(y||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(d,g);const v={...Nj(m,"layout"),onPlay:b,onComplete:_};(c.shouldReduceMotion||this.options.layoutRoot)&&(v.delay=0,v.type=!1),this.startAnimation(v)}else f||rO(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=p})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const s=this.getStack();s&&s.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,cl(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(lAe),this.animationId++)}getTransformTemplate(){const{visualElement:s}=this.options;return s&&s.getProps().transformTemplate}willUpdate(s=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let c=0;cthis.update()))}clearAllSnapshots(){this.nodes.forEach(rAe),this.sharedNodes.forEach(uAe)}scheduleUpdateProjection(){kn.preRender(this.updateProjection,!1,!0)}scheduleCheckAfterUnmount(){kn.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let l=0;l{const S=v/1e3;iO(d.x,s.x,S),iO(d.y,s.y,S),this.setTargetDelta(d),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Rp(f,this.layout.layoutBox,this.relativeParent.layout.layoutBox),cAe(this.relativeTarget,this.relativeTargetOrigin,f,S),g&&G4e(this.relativeTarget,g)&&(this.isProjectionDirty=!1),g||(g=Ar()),Go(g,this.relativeTarget)),m&&(this.animationValues=c,F4e(c,u,this.latestValues,S,y,_)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(s){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(cl(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=kn.update(()=>{Z0.hasAnimatedSinceResize=!0,this.currentAnimation=Y4e(0,tO,{...s,onUpdate:a=>{this.mixTargetDelta(a),s.onUpdate&&s.onUpdate(a)},onComplete:()=>{s.onComplete&&s.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const s=this.getStack();s&&s.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(tO),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const s=this.getLead();let{targetWithTransforms:a,target:l,layout:u,latestValues:c}=s;if(!(!a||!l||!u)){if(this!==s&&this.layout&&u&&Yj(this.options.animationType,this.layout.layoutBox,u.layoutBox)){l=this.target||Ar();const d=Lo(this.layout.layoutBox.x);l.x.min=s.target.x.min,l.x.max=l.x.min+d;const f=Lo(this.layout.layoutBox.y);l.y.min=s.target.y.min,l.y.max=l.y.min+f}Go(a,l),Yd(a,c),Pp(this.projectionDeltaWithTransform,this.layoutCorrected,a,c)}}registerSharedNode(s,a){this.sharedNodes.has(s)||this.sharedNodes.set(s,new H4e),this.sharedNodes.get(s).add(a);const u=a.options.initialPromotionConfig;a.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(a):void 0})}isLead(){const s=this.getStack();return s?s.lead===this:!0}getLead(){var s;const{layoutId:a}=this.options;return a?((s=this.getStack())===null||s===void 0?void 0:s.lead)||this:this}getPrevLead(){var s;const{layoutId:a}=this.options;return a?(s=this.getStack())===null||s===void 0?void 0:s.prevLead:void 0}getStack(){const{layoutId:s}=this.options;if(s)return this.root.sharedNodes.get(s)}promote({needsReset:s,transition:a,preserveFollowOpacity:l}={}){const u=this.getStack();u&&u.promote(this,l),s&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){const s=this.getStack();return s?s.relegate(this):!1}resetRotation(){const{visualElement:s}=this.options;if(!s)return;let a=!1;const{latestValues:l}=s;if((l.rotate||l.rotateX||l.rotateY||l.rotateZ)&&(a=!0),!a)return;const u={};for(let c=0;c{var a;return(a=s.currentAnimation)===null||a===void 0?void 0:a.stop()}),this.root.nodes.forEach(nO),this.root.sharedNodes.clear()}}}function J4e(e){e.updateLayout()}function eAe(e){var t;const n=((t=e.resumeFrom)===null||t===void 0?void 0:t.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&n&&e.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:i}=e.layout,{animationType:o}=e.options,s=n.source!==e.layout.source;o==="size"?Qs(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Lo(f);f.min=r[d].min,f.max=f.min+h}):Yj(o,n.layoutBox,r)&&Qs(d=>{const f=s?n.measuredBox[d]:n.layoutBox[d],h=Lo(r[d]);f.max=f.min+h,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[d].max=e.relativeTarget[d].min+h)});const a=Qd();Pp(a,r,n.layoutBox);const l=Qd();s?Pp(l,e.applyTransform(i,!0),n.measuredBox):Pp(l,r,n.layoutBox);const u=!Kj(a);let c=!1;if(!e.resumeFrom){const d=e.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:f,layout:h}=d;if(f&&h){const p=Ar();Rp(p,n.layoutBox,f.layoutBox);const m=Ar();Rp(m,r,h.layoutBox),Xj(p,m)||(c=!0),d.options.layoutRoot&&(e.relativeTarget=m,e.relativeTargetOrigin=p,e.relativeParent=d)}}}e.notifyListeners("didUpdate",{layout:r,snapshot:n,delta:l,layoutDelta:a,hasLayoutChanged:u,hasRelativeTargetChanged:c})}else if(e.isLead()){const{onExitComplete:r}=e.options;r&&r()}e.options.transition=void 0}function tAe(e){nc.totalNodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function nAe(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function rAe(e){e.clearSnapshot()}function nO(e){e.clearMeasurements()}function iAe(e){e.isLayoutDirty=!1}function oAe(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function rO(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function sAe(e){e.resolveTargetDelta()}function aAe(e){e.calcProjection()}function lAe(e){e.resetRotation()}function uAe(e){e.removeLeadSnapshot()}function iO(e,t,n){e.translate=rr(t.translate,0,n),e.scale=rr(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function oO(e,t,n,r){e.min=rr(t.min,n.min,r),e.max=rr(t.max,n.max,r)}function cAe(e,t,n,r){oO(e.x,t.x,n.x,r),oO(e.y,t.y,n.y,r)}function dAe(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const fAe={duration:.45,ease:[.4,0,.1,1]},sO=e=>typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes(e),aO=sO("applewebkit/")&&!sO("chrome/")?Math.round:dr;function lO(e){e.min=aO(e.min),e.max=aO(e.max)}function hAe(e){lO(e.x),lO(e.y)}function Yj(e,t,n){return e==="position"||e==="preserve-aspect"&&!L3(ZI(t),ZI(n),.2)}const pAe=Qj({attachResizeListener:(e,t)=>Ka(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Yw={current:void 0},Zj=Qj({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Yw.current){const e=new pAe({});e.mount(window),e.setOptions({layoutScroll:!0}),Yw.current=e}return Yw.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),gAe={pan:{Feature:I4e},drag:{Feature:R4e,ProjectionNode:Zj,MeasureLayout:Hj}},mAe=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function yAe(e){const t=mAe.exec(e);if(!t)return[,];const[,n,r]=t;return[n,r]}function z3(e,t,n=1){const[r,i]=yAe(e);if(!r)return;const o=window.getComputedStyle(t).getPropertyValue(r);if(o){const s=o.trim();return Dj(s)?parseFloat(s):s}else return P3(i)?z3(i,t,n+1):i}function vAe(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(!P3(o))return;const s=z3(o,r);s&&i.set(s)});for(const i in t){const o=t[i];if(!P3(o))continue;const s=z3(o,r);s&&(t[i]=s,n||(n={}),n[i]===void 0&&(n[i]=o))}return{target:t,transitionEnd:n}}const _Ae=new Set(["width","height","top","left","right","bottom","x","y","translateX","translateY"]),Jj=e=>_Ae.has(e),bAe=e=>Object.keys(e).some(Jj),uO=e=>e===ld||e===rt,cO=(e,t)=>parseFloat(e.split(", ")[t]),dO=(e,t)=>(n,{transform:r})=>{if(r==="none"||!r)return 0;const i=r.match(/^matrix3d\((.+)\)$/);if(i)return cO(i[1],t);{const o=r.match(/^matrix\((.+)\)$/);return o?cO(o[1],e):0}},SAe=new Set(["x","y","z"]),wAe=qm.filter(e=>!SAe.has(e));function xAe(e){const t=[];return wAe.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 Jf={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:dO(4,13),y:dO(5,14)};Jf.translateX=Jf.x;Jf.translateY=Jf.y;const CAe=(e,t,n)=>{const r=t.measureViewportBox(),i=t.current,o=getComputedStyle(i),{display:s}=o,a={};s==="none"&&t.setStaticValue("display",e.display||"block"),n.forEach(u=>{a[u]=Jf[u](r,o)}),t.render();const l=t.measureViewportBox();return n.forEach(u=>{const c=t.getValue(u);c&&c.jump(a[u]),e[u]=Jf[u](l,o)}),e},EAe=(e,t,n={},r={})=>{t={...t},r={...r};const i=Object.keys(t).filter(Jj);let o=[],s=!1;const a=[];if(i.forEach(l=>{const u=e.getValue(l);if(!e.hasValue(l))return;let c=n[l],d=Qh(c);const f=t[l];let h;if($1(f)){const p=f.length,m=f[0]===null?1:0;c=f[m],d=Qh(c);for(let b=m;b=0?window.pageYOffset:null,u=CAe(t,e,a);return o.length&&o.forEach(([c,d])=>{e.getValue(c).set(d)}),e.render(),VS&&l!==null&&window.scrollTo({top:l}),{target:u,transitionEnd:r}}else return{target:t,transitionEnd:r}};function TAe(e,t,n,r){return bAe(t)?EAe(e,t,n,r):{target:t,transitionEnd:r}}const AAe=(e,t,n,r)=>{const i=vAe(e,t,r);return t=i.target,r=i.transitionEnd,TAe(e,t,n,r)},U3={current:null},eV={current:!1};function kAe(){if(eV.current=!0,!!VS)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>U3.current=e.matches;e.addListener(t),t()}else U3.current=!1}function PAe(e,t,n){const{willChange:r}=t;for(const i in t){const o=t[i],s=n[i];if(_o(o))e.addValue(i,o),U1(r)&&r.add(i);else if(_o(s))e.addValue(i,Zf(o,{owner:e})),U1(r)&&r.remove(i);else if(s!==o)if(e.hasValue(i)){const a=e.getValue(i);!a.hasAnimated&&a.set(o)}else{const a=e.getStaticValue(i);e.addValue(i,Zf(a!==void 0?a:o,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const fO=new WeakMap,tV=Object.keys(Yg),RAe=tV.length,hO=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],IAe=a4.length;class OAe{constructor({parent:t,props:n,presenceContext:r,reducedMotionConfig:i,visualState:o},s={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.features={},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=()=>kn.render(this.render,!1,!0);const{latestValues:a,renderState:l}=o;this.latestValues=a,this.baseTarget={...a},this.initialValues=n.initial?{...a}:{},this.renderState=l,this.parent=t,this.props=n,this.presenceContext=r,this.depth=t?t.depth+1:0,this.reducedMotionConfig=i,this.options=s,this.isControllingVariants=HS(n),this.isVariantNode=BU(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:u,...c}=this.scrapeMotionValuesFromProps(n,{});for(const d in c){const f=c[d];a[d]!==void 0&&_o(f)&&(f.set(a[d],!1),U1(u)&&u.add(d))}}scrapeMotionValuesFromProps(t,n){return{}}mount(t){this.current=t,fO.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,r)=>this.bindToMotionValue(r,n)),eV.current||kAe(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:U3.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){fO.delete(this.current),this.projection&&this.projection.unmount(),cl(this.notifyUpdate),cl(this.render),this.valueSubscriptions.forEach(t=>t()),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const t in this.events)this.events[t].clear();for(const t in this.features)this.features[t].unmount();this.current=null}bindToMotionValue(t,n){const r=ad.has(t),i=n.on("change",s=>{this.latestValues[t]=s,this.props.onUpdate&&kn.update(this.notifyUpdate,!1,!0),r&&this.projection&&(this.projection.isTransformDirty=!0)}),o=n.on("renderRequest",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({children:t,...n},r,i,o){let s,a;for(let l=0;lthis.scheduleRender(),animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:f,layoutRoot:h})}return a}updateFeatures(){for(const t in this.features){const n=this.features[t];n.isMounted?n.update():(n.mount(),n.isMounted=!0)}}triggerBuild(){this.build(this.renderState,this.latestValues,this.options,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Ar()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}makeTargetAnimatable(t,n=!0){return this.makeTargetAnimatableFromInstance(t,this.props,n)}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let r=0;rn.variantChildren.delete(t)}addValue(t,n){n!==this.values.get(t)&&(this.removeValue(t),this.bindToMotionValue(t,n)),this.values.set(t,n),this.latestValues[t]=n.get()}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(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=Zf(n,{owner:this}),this.addValue(t,r)),r}readValue(t){var n;return this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(n=this.getBaseTargetFromProps(this.props,t))!==null&&n!==void 0?n: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=m4(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&&!_o(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 E4),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}}class nV extends OAe{sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){return t.style?t.style[n]:void 0}removeValueFromRenderState(t,{vars:n,style:r}){delete n[t],delete r[t]}makeTargetAnimatableFromInstance({transition:t,transitionEnd:n,...r},{transformValues:i},o){let s=QTe(r,t||{},this);if(i&&(n&&(n=i(n)),r&&(r=i(r)),s&&(s=i(s))),o){KTe(this,r,s);const a=AAe(this,r,s,n);n=a.transitionEnd,r=a.target}return{transition:t,transitionEnd:n,...r}}}function MAe(e){return window.getComputedStyle(e)}class NAe extends nV{readValueFromInstance(t,n){if(ad.has(n)){const r=S4(n);return r&&r.default||0}else{const r=MAe(t),i=(VU(n)?r.getPropertyValue(n):r[n])||0;return typeof i=="string"?i.trim():i}}measureInstanceViewportBox(t,{transformPagePoint:n}){return Gj(t,n)}build(t,n,r,i){c4(t,n,r,i.transformTemplate)}scrapeMotionValuesFromProps(t,n){return g4(t,n)}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;_o(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}renderInstance(t,n,r,i){XU(t,n,r,i)}}class DAe extends nV{constructor(){super(...arguments),this.isSVGTag=!1}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(ad.has(n)){const r=S4(n);return r&&r.default||0}return n=QU.has(n)?n:p4(n),t.getAttribute(n)}measureInstanceViewportBox(){return Ar()}scrapeMotionValuesFromProps(t,n){return ZU(t,n)}build(t,n,r,i){f4(t,n,r,this.isSVGTag,i.transformTemplate)}renderInstance(t,n,r,i){YU(t,n,r,i)}mount(t){this.isSVGTag=h4(t.tagName),super.mount(t)}}const LAe=(e,t)=>u4(e)?new DAe(t,{enableHardwareAcceleration:!1}):new NAe(t,{enableHardwareAcceleration:!0}),$Ae={layout:{ProjectionNode:Zj,MeasureLayout:Hj}},FAe={...c4e,...R5e,...gAe,...$Ae},BAe=BEe((e,t)=>y5e(e,t,FAe,LAe));function rV(){const e=M.useRef(!1);return o4(()=>(e.current=!0,()=>{e.current=!1}),[]),e}function zAe(){const e=rV(),[t,n]=M.useState(0),r=M.useCallback(()=>{e.current&&n(t+1)},[t]);return[M.useCallback(()=>kn.postRender(r),[r]),t]}class UAe extends M.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 jAe({children:e,isPresent:t}){const n=M.useId(),r=M.useRef(null),i=M.useRef({width:0,height:0,top:0,left:0});return M.useInsertionEffect(()=>{const{width:o,height:s,top:a,left:l}=i.current;if(t||!r.current||!o||!s)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: ${s}px !important; + top: ${a}px !important; + left: ${l}px !important; + } + `),()=>{document.head.removeChild(u)}},[t]),M.createElement(UAe,{isPresent:t,childRef:r,sizeRef:i},M.cloneElement(e,{ref:r}))}const Zw=({children:e,initial:t,isPresent:n,onExitComplete:r,custom:i,presenceAffectsLayout:o,mode:s})=>{const a=JU(VAe),l=M.useId(),u=M.useMemo(()=>({id:l,initial:t,isPresent:n,custom:i,onExitComplete:c=>{a.set(c,!0);for(const d of a.values())if(!d)return;r&&r()},register:c=>(a.set(c,!1),()=>a.delete(c))}),o?void 0:[n]);return M.useMemo(()=>{a.forEach((c,d)=>a.set(d,!1))},[n]),M.useEffect(()=>{!n&&!a.size&&r&&r()},[n]),s==="popLayout"&&(e=M.createElement(jAe,{isPresent:n},e)),M.createElement(Hm.Provider,{value:u},e)};function VAe(){return new Map}function GAe(e){return M.useEffect(()=>()=>e(),[])}const Md=e=>e.key||"";function HAe(e,t){e.forEach(n=>{const r=Md(n);t.set(r,n)})}function qAe(e){const t=[];return M.Children.forEach(e,n=>{M.isValidElement(n)&&t.push(n)}),t}const WAe=({children:e,custom:t,initial:n=!0,onExitComplete:r,exitBeforeEnter:i,presenceAffectsLayout:o=!0,mode:s="sync"})=>{const a=M.useContext(l4).forceRender||zAe()[0],l=rV(),u=qAe(e);let c=u;const d=M.useRef(new Map).current,f=M.useRef(c),h=M.useRef(new Map).current,p=M.useRef(!0);if(o4(()=>{p.current=!1,HAe(u,h),f.current=c}),GAe(()=>{p.current=!0,h.clear(),d.clear()}),p.current)return M.createElement(M.Fragment,null,c.map(y=>M.createElement(Zw,{key:Md(y),isPresent:!0,initial:n?void 0:!1,presenceAffectsLayout:o,mode:s},y)));c=[...c];const m=f.current.map(Md),b=u.map(Md),_=m.length;for(let y=0;y<_;y++){const g=m[y];b.indexOf(g)===-1&&!d.has(g)&&d.set(g,void 0)}return s==="wait"&&d.size&&(c=[]),d.forEach((y,g)=>{if(b.indexOf(g)!==-1)return;const v=h.get(g);if(!v)return;const S=m.indexOf(g);let w=y;if(!w){const x=()=>{h.delete(g),d.delete(g);const C=f.current.findIndex(A=>A.key===g);if(f.current.splice(C,1),!d.size){if(f.current=u,l.current===!1)return;a(),r&&r()}};w=M.createElement(Zw,{key:Md(v),isPresent:!1,onExitComplete:x,custom:t,presenceAffectsLayout:o,mode:s},v),d.set(g,w)}c.splice(S,0,w)}),c=c.map(y=>{const g=y.key;return d.has(g)?y:M.createElement(Zw,{key:Md(y),isPresent:!0,presenceAffectsLayout:o,mode:s},y)}),M.createElement(M.Fragment,null,d.size?c:c.map(y=>M.cloneElement(y)))};var KAe=DCe({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),iV=zu((e,t)=>{const n=i4("Spinner",e),{label:r="Loading...",thickness:i="2px",speed:o="0.45s",emptyColor:s="transparent",className:a,...l}=r4(e),u=JT("chakra-spinner",a),c={display:"inline-block",borderColor:"currentColor",borderStyle:"solid",borderRadius:"99999px",borderWidth:i,borderBottomColor:s,borderLeftColor:s,animation:`${KAe} ${o} linear infinite`,...n};return Z.jsx(wu.div,{ref:t,__css:c,className:u,...l,children:r&&Z.jsx(wu.span,{srOnly:!0,children:r})})});iV.displayName="Spinner";var j3=zu(function(t,n){const{htmlWidth:r,htmlHeight:i,alt:o,...s}=t;return Z.jsx("img",{width:r,height:i,ref:n,alt:o,...s})});j3.displayName="NativeImage";function XAe(e){const{loading:t,src:n,srcSet:r,onLoad:i,onError:o,crossOrigin:s,sizes:a,ignoreFallback:l}=e,[u,c]=M.useState("pending");M.useEffect(()=>{c(n?"loading":"pending")},[n]);const d=M.useRef(),f=M.useCallback(()=>{if(!n)return;h();const p=new Image;p.src=n,s&&(p.crossOrigin=s),r&&(p.srcset=r),a&&(p.sizes=a),t&&(p.loading=t),p.onload=m=>{h(),c("loaded"),i==null||i(m)},p.onerror=m=>{h(),c("failed"),o==null||o(m)},d.current=p},[n,s,r,a,i,o,t]),h=()=>{d.current&&(d.current.onload=null,d.current.onerror=null,d.current=null)};return LCe(()=>{if(!l)return u==="loading"&&f(),()=>{h()}},[u,f,l]),l?"loaded":u}var QAe=(e,t)=>e!=="loaded"&&t==="beforeLoadOrError"||e==="failed"&&t==="onError";function YAe(e,t=[]){const n=Object.assign({},e);for(const r of t)r in n&&delete n[r];return n}var T4=zu(function(t,n){const{fallbackSrc:r,fallback:i,src:o,srcSet:s,align:a,fit:l,loading:u,ignoreFallback:c,crossOrigin:d,fallbackStrategy:f="beforeLoadOrError",referrerPolicy:h,...p}=t,m=r!==void 0||i!==void 0,b=u!=null||c||!m,_=XAe({...t,crossOrigin:d,ignoreFallback:b}),y=QAe(_,f),g={ref:n,objectFit:l,objectPosition:a,...b?p:YAe(p,["onError","onLoad"])};return y?i||Z.jsx(wu.img,{as:j3,className:"chakra-image__placeholder",src:r,...g}):Z.jsx(wu.img,{as:j3,src:o,srcSet:s,crossOrigin:d,loading:u,referrerPolicy:h,className:"chakra-image",...g})});T4.displayName="Image";var oV=zu(function(t,n){const r=i4("Text",t),{className:i,align:o,decoration:s,casing:a,...l}=r4(t),u=bEe({textAlign:t.align,textDecoration:t.decoration,textTransform:t.casing});return Z.jsx(wu.p,{ref:n,className:JT("chakra-text",t.className),...u,...l,__css:r})});oV.displayName="Text";var V3=zu(function(t,n){const r=i4("Heading",t),{className:i,...o}=r4(t);return Z.jsx(wu.h2,{ref:n,className:JT("chakra-heading",t.className),...o,__css:r})});V3.displayName="Heading";var V1=wu("div");V1.displayName="Box";var sV=zu(function(t,n){const{size:r,centerContent:i=!0,...o}=t,s=i?{display:"flex",alignItems:"center",justifyContent:"center"}:{};return Z.jsx(V1,{ref:n,boxSize:r,__css:{...s,flexShrink:0,flexGrow:0},...o})});sV.displayName="Square";var ZAe=zu(function(t,n){const{size:r,...i}=t;return Z.jsx(sV,{size:r,ref:n,borderRadius:"9999px",...i})});ZAe.displayName="Circle";var A4=zu(function(t,n){const{direction:r,align:i,justify:o,wrap:s,basis:a,grow:l,shrink:u,...c}=t,d={display:"flex",flexDirection:r,alignItems:i,justifyContent:o,flexWrap:s,flexBasis:a,flexGrow:l,flexShrink:u};return Z.jsx(wu.div,{ref:n,__css:d,...c})});A4.displayName="Flex";const JAe=""+new URL("logo-13003d72.png",import.meta.url).href,eke=()=>Z.jsxs(A4,{position:"relative",width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",bg:"#151519",children:[Z.jsx(T4,{src:JAe,w:"8rem",h:"8rem"}),Z.jsx(iV,{label:"Loading",color:"grey",position:"absolute",size:"sm",width:"24px !important",height:"24px !important",right:"1.5rem",bottom:"1.5rem"})]}),tke=M.memo(eke);function G3(e){"@babel/helpers - typeof";return G3=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G3(e)}var aV=[],nke=aV.forEach,rke=aV.slice;function H3(e){return nke.call(rke.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e}function lV(){return typeof XMLHttpRequest=="function"||(typeof XMLHttpRequest>"u"?"undefined":G3(XMLHttpRequest))==="object"}function ike(e){return!!e&&typeof e.then=="function"}function oke(e){return ike(e)?e:Promise.resolve(e)}function ske(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var q3={exports:{}},h0={exports:{}},pO;function ake(){return pO||(pO=1,function(e,t){var n=typeof self<"u"?self:dt,r=function(){function o(){this.fetch=!1,this.DOMException=n.DOMException}return o.prototype=n,new o}();(function(o){(function(s){var a={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function l(E){return E&&DataView.prototype.isPrototypeOf(E)}if(a.arrayBuffer)var u=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],c=ArrayBuffer.isView||function(E){return E&&u.indexOf(Object.prototype.toString.call(E))>-1};function d(E){if(typeof E!="string"&&(E=String(E)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(E))throw new TypeError("Invalid character in header field name");return E.toLowerCase()}function f(E){return typeof E!="string"&&(E=String(E)),E}function h(E){var P={next:function(){var D=E.shift();return{done:D===void 0,value:D}}};return a.iterable&&(P[Symbol.iterator]=function(){return P}),P}function p(E){this.map={},E instanceof p?E.forEach(function(P,D){this.append(D,P)},this):Array.isArray(E)?E.forEach(function(P){this.append(P[0],P[1])},this):E&&Object.getOwnPropertyNames(E).forEach(function(P){this.append(P,E[P])},this)}p.prototype.append=function(E,P){E=d(E),P=f(P);var D=this.map[E];this.map[E]=D?D+", "+P:P},p.prototype.delete=function(E){delete this.map[d(E)]},p.prototype.get=function(E){return E=d(E),this.has(E)?this.map[E]:null},p.prototype.has=function(E){return this.map.hasOwnProperty(d(E))},p.prototype.set=function(E,P){this.map[d(E)]=f(P)},p.prototype.forEach=function(E,P){for(var D in this.map)this.map.hasOwnProperty(D)&&E.call(P,this.map[D],D,this)},p.prototype.keys=function(){var E=[];return this.forEach(function(P,D){E.push(D)}),h(E)},p.prototype.values=function(){var E=[];return this.forEach(function(P){E.push(P)}),h(E)},p.prototype.entries=function(){var E=[];return this.forEach(function(P,D){E.push([D,P])}),h(E)},a.iterable&&(p.prototype[Symbol.iterator]=p.prototype.entries);function m(E){if(E.bodyUsed)return Promise.reject(new TypeError("Already read"));E.bodyUsed=!0}function b(E){return new Promise(function(P,D){E.onload=function(){P(E.result)},E.onerror=function(){D(E.error)}})}function _(E){var P=new FileReader,D=b(P);return P.readAsArrayBuffer(E),D}function y(E){var P=new FileReader,D=b(P);return P.readAsText(E),D}function g(E){for(var P=new Uint8Array(E),D=new Array(P.length),B=0;B-1?P:E}function C(E,P){P=P||{};var D=P.body;if(E instanceof C){if(E.bodyUsed)throw new TypeError("Already read");this.url=E.url,this.credentials=E.credentials,P.headers||(this.headers=new p(E.headers)),this.method=E.method,this.mode=E.mode,this.signal=E.signal,!D&&E._bodyInit!=null&&(D=E._bodyInit,E.bodyUsed=!0)}else this.url=String(E);if(this.credentials=P.credentials||this.credentials||"same-origin",(P.headers||!this.headers)&&(this.headers=new p(P.headers)),this.method=x(P.method||this.method||"GET"),this.mode=P.mode||this.mode||null,this.signal=P.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}C.prototype.clone=function(){return new C(this,{body:this._bodyInit})};function A(E){var P=new FormData;return E.trim().split("&").forEach(function(D){if(D){var B=D.split("="),R=B.shift().replace(/\+/g," "),I=B.join("=").replace(/\+/g," ");P.append(decodeURIComponent(R),decodeURIComponent(I))}}),P}function T(E){var P=new p,D=E.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(B){var R=B.split(":"),I=R.shift().trim();if(I){var O=R.join(":").trim();P.append(I,O)}}),P}S.call(C.prototype);function k(E,P){P||(P={}),this.type="default",this.status=P.status===void 0?200:P.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in P?P.statusText:"OK",this.headers=new p(P.headers),this.url=P.url||"",this._initBody(E)}S.call(k.prototype),k.prototype.clone=function(){return new k(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},k.error=function(){var E=new k(null,{status:0,statusText:""});return E.type="error",E};var L=[301,302,303,307,308];k.redirect=function(E,P){if(L.indexOf(P)===-1)throw new RangeError("Invalid status code");return new k(null,{status:P,headers:{location:E}})},s.DOMException=o.DOMException;try{new s.DOMException}catch{s.DOMException=function(P,D){this.message=P,this.name=D;var B=Error(P);this.stack=B.stack},s.DOMException.prototype=Object.create(Error.prototype),s.DOMException.prototype.constructor=s.DOMException}function N(E,P){return new Promise(function(D,B){var R=new C(E,P);if(R.signal&&R.signal.aborted)return B(new s.DOMException("Aborted","AbortError"));var I=new XMLHttpRequest;function O(){I.abort()}I.onload=function(){var F={status:I.status,statusText:I.statusText,headers:T(I.getAllResponseHeaders()||"")};F.url="responseURL"in I?I.responseURL:F.headers.get("X-Request-URL");var U="response"in I?I.response:I.responseText;D(new k(U,F))},I.onerror=function(){B(new TypeError("Network request failed"))},I.ontimeout=function(){B(new TypeError("Network request failed"))},I.onabort=function(){B(new s.DOMException("Aborted","AbortError"))},I.open(R.method,R.url,!0),R.credentials==="include"?I.withCredentials=!0:R.credentials==="omit"&&(I.withCredentials=!1),"responseType"in I&&a.blob&&(I.responseType="blob"),R.headers.forEach(function(F,U){I.setRequestHeader(U,F)}),R.signal&&(R.signal.addEventListener("abort",O),I.onreadystatechange=function(){I.readyState===4&&R.signal.removeEventListener("abort",O)}),I.send(typeof R._bodyInit>"u"?null:R._bodyInit)})}return N.polyfill=!0,o.fetch||(o.fetch=N,o.Headers=p,o.Request=C,o.Response=k),s.Headers=p,s.Request=C,s.Response=k,s.fetch=N,Object.defineProperty(s,"__esModule",{value:!0}),s})({})})(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;t=i.fetch,t.default=i.fetch,t.fetch=i.fetch,t.Headers=i.Headers,t.Request=i.Request,t.Response=i.Response,e.exports=t}(h0,h0.exports)),h0.exports}(function(e,t){var n;if(typeof fetch=="function"&&(typeof dt<"u"&&dt.fetch?n=dt.fetch:typeof window<"u"&&window.fetch?n=window.fetch:n=fetch),typeof ske<"u"&&(typeof window>"u"||typeof window.document>"u")){var r=n||ake();r.default&&(r=r.default),t.default=r,e.exports=t.default}})(q3,q3.exports);var uV=q3.exports;const cV=Uc(uV),gO=NO({__proto__:null,default:cV},[uV]);function G1(e){"@babel/helpers - typeof";return G1=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},G1(e)}var tl;typeof fetch=="function"&&(typeof global<"u"&&global.fetch?tl=global.fetch:typeof window<"u"&&window.fetch?tl=window.fetch:tl=fetch);var Jg;lV()&&(typeof global<"u"&&global.XMLHttpRequest?Jg=global.XMLHttpRequest:typeof window<"u"&&window.XMLHttpRequest&&(Jg=window.XMLHttpRequest));var H1;typeof ActiveXObject=="function"&&(typeof global<"u"&&global.ActiveXObject?H1=global.ActiveXObject:typeof window<"u"&&window.ActiveXObject&&(H1=window.ActiveXObject));!tl&&gO&&!Jg&&!H1&&(tl=cV||gO);typeof tl!="function"&&(tl=void 0);var W3=function(t,n){if(n&&G1(n)==="object"){var r="";for(var i in n)r+="&"+encodeURIComponent(i)+"="+encodeURIComponent(n[i]);if(!r)return t;t=t+(t.indexOf("?")!==-1?"&":"?")+r.slice(1)}return t},mO=function(t,n,r){tl(t,n).then(function(i){if(!i.ok)return r(i.statusText||"Error",{status:i.status});i.text().then(function(o){r(null,{status:i.status,data:o})}).catch(r)}).catch(r)},yO=!1,lke=function(t,n,r,i){t.queryStringParams&&(n=W3(n,t.queryStringParams));var o=H3({},typeof t.customHeaders=="function"?t.customHeaders():t.customHeaders);r&&(o["Content-Type"]="application/json");var s=typeof t.requestOptions=="function"?t.requestOptions(r):t.requestOptions,a=H3({method:r?"POST":"GET",body:r?t.stringify(r):void 0,headers:o},yO?{}:s);try{mO(n,a,i)}catch(l){if(!s||Object.keys(s).length===0||!l.message||l.message.indexOf("not implemented")<0)return i(l);try{Object.keys(s).forEach(function(u){delete a[u]}),mO(n,a,i),yO=!0}catch(u){i(u)}}},uke=function(t,n,r,i){r&&G1(r)==="object"&&(r=W3("",r).slice(1)),t.queryStringParams&&(n=W3(n,t.queryStringParams));try{var o;Jg?o=new Jg:o=new H1("MSXML2.XMLHTTP.3.0"),o.open(r?"POST":"GET",n,1),t.crossDomain||o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.withCredentials=!!t.withCredentials,r&&o.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),o.overrideMimeType&&o.overrideMimeType("application/json");var s=t.customHeaders;if(s=typeof s=="function"?s():s,s)for(var a in s)o.setRequestHeader(a,s[a]);o.onreadystatechange=function(){o.readyState>3&&i(o.status>=400?o.statusText:null,{status:o.status,data:o.responseText})},o.send(r)}catch(l){console&&console.log(l)}},cke=function(t,n,r,i){if(typeof r=="function"&&(i=r,r=void 0),i=i||function(){},tl&&n.indexOf("file:")!==0)return lke(t,n,r,i);if(lV()||typeof ActiveXObject=="function")return uke(t,n,r,i);i(new Error("No fetch and no xhr implementation found!"))};function em(e){"@babel/helpers - typeof";return em=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},em(e)}function dke(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function vO(e,t){for(var n=0;n1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};dke(this,e),this.services=t,this.options=n,this.allOptions=r,this.type="backend",this.init(t,n,r)}return fke(e,[{key:"init",value:function(n){var r=this,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=n,this.options=H3(i,this.options||{},gke()),this.allOptions=o,this.services&&this.options.reloadInterval&&setInterval(function(){return r.reload()},this.options.reloadInterval)}},{key:"readMulti",value:function(n,r,i){this._readAny(n,n,r,r,i)}},{key:"read",value:function(n,r,i){this._readAny([n],n,[r],r,i)}},{key:"_readAny",value:function(n,r,i,o,s){var a=this,l=this.options.loadPath;typeof this.options.loadPath=="function"&&(l=this.options.loadPath(n,i)),l=oke(l),l.then(function(u){if(!u)return s(null,{});var c=a.services.interpolator.interpolate(u,{lng:n.join("+"),ns:i.join("+")});a.loadUrl(c,s,r,o)})}},{key:"loadUrl",value:function(n,r,i,o){var s=this,a=typeof i=="string"?[i]:i,l=typeof o=="string"?[o]:o,u=this.options.parseLoadPayload(a,l);this.options.request(this.options,n,u,function(c,d){if(d&&(d.status>=500&&d.status<600||!d.status))return r("failed loading "+n+"; status code: "+d.status,!0);if(d&&d.status>=400&&d.status<500)return r("failed loading "+n+"; status code: "+d.status,!1);if(!d&&c&&c.message&&c.message.indexOf("Failed to fetch")>-1)return r("failed loading "+n+": "+c.message,!0);if(c)return r(c,!1);var f,h;try{typeof d.data=="string"?f=s.options.parse(d.data,i,o):f=d.data}catch{h="failed parsing "+n+" to json"}if(h)return r(h,!1);r(null,f)})}},{key:"create",value:function(n,r,i,o,s){var a=this;if(this.options.addPath){typeof n=="string"&&(n=[n]);var l=this.options.parsePayload(r,i,o),u=0,c=[],d=[];n.forEach(function(f){var h=a.options.addPath;typeof a.options.addPath=="function"&&(h=a.options.addPath(f,r));var p=a.services.interpolator.interpolate(h,{lng:f,ns:r});a.options.request(a.options,p,l,function(m,b){u+=1,c.push(m),d.push(b),u===n.length&&typeof s=="function"&&s(c,d)})})}}},{key:"reload",value:function(){var n=this,r=this.services,i=r.backendConnector,o=r.languageUtils,s=r.logger,a=i.language;if(!(a&&a.toLowerCase()==="cimode")){var l=[],u=function(d){var f=o.toResolveHierarchy(d);f.forEach(function(h){l.indexOf(h)<0&&l.push(h)})};u(a),this.allOptions.preload&&this.allOptions.preload.forEach(function(c){return u(c)}),l.forEach(function(c){n.allOptions.ns.forEach(function(d){i.read(c,d,"read",null,null,function(f,h){f&&s.warn("loading namespace ".concat(d," for language ").concat(c," failed"),f),!f&&h&&s.log("loaded namespace ".concat(d," for language ").concat(c),h),i.loaded("".concat(c,"|").concat(d),f,h)})})})}}}]),e}();fV.type="backend";const mke=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,yke={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},vke=e=>yke[e],_ke=e=>e.replace(mke,vke);let K3={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:_ke};function bke(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K3={...K3,...e}}function JMe(){return K3}let hV;function Ske(e){hV=e}function eNe(){return hV}const wke={type:"3rdParty",init(e){bke(e.options.react),Ske(e)}};we.use(fV).use(wke).init({fallbackLng:"en",debug:!1,backend:{loadPath:"/locales/{{lng}}.json"},interpolation:{escapeValue:!1},returnNull:!1});const XS=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function wh(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function k4(e){return"nodeType"in e}function eo(e){var t,n;return e?wh(e)?e:k4(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function P4(e){const{Document:t}=eo(e);return e instanceof t}function Qm(e){return wh(e)?!1:e instanceof eo(e).HTMLElement}function xke(e){return e instanceof eo(e).SVGElement}function xh(e){return e?wh(e)?e.document:k4(e)?P4(e)?e:Qm(e)?e.ownerDocument:document:document:document}const Sa=XS?M.useLayoutEffect:M.useEffect;function QS(e){const t=M.useRef(e);return Sa(()=>{t.current=e}),M.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;i{e.current=setInterval(r,i)},[]),n=M.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function tm(e,t){t===void 0&&(t=[e]);const n=M.useRef(e);return Sa(()=>{n.current!==e&&(n.current=e)},t),n}function Ym(e,t){const n=M.useRef();return M.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function q1(e){const t=QS(e),n=M.useRef(null),r=M.useCallback(i=>{i!==n.current&&(t==null||t(i,n.current)),n.current=i},[]);return[n,r]}function W1(e){const t=M.useRef();return M.useEffect(()=>{t.current=e},[e]),t.current}let Jw={};function YS(e,t){return M.useMemo(()=>{if(t)return t;const n=Jw[e]==null?0:Jw[e]+1;return Jw[e]=n,e+"-"+n},[e,t])}function pV(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i{const a=Object.entries(s);for(const[l,u]of a){const c=o[l];c!=null&&(o[l]=c+e*u)}return o},{...t})}}const wf=pV(1),K1=pV(-1);function Eke(e){return"clientX"in e&&"clientY"in e}function R4(e){if(!e)return!1;const{KeyboardEvent:t}=eo(e.target);return t&&e instanceof t}function Tke(e){if(!e)return!1;const{TouchEvent:t}=eo(e.target);return t&&e instanceof t}function nm(e){if(Tke(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return Eke(e)?{x:e.clientX,y:e.clientY}:null}const rm=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[rm.Translate.toString(e),rm.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),_O="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Ake(e){return e.matches(_O)?e:e.querySelector(_O)}const kke={display:"none"};function Pke(e){let{id:t,value:n}=e;return vn.createElement("div",{id:t,style:kke},n)}const Rke={position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};function Ike(e){let{id:t,announcement:n}=e;return vn.createElement("div",{id:t,style:Rke,role:"status","aria-live":"assertive","aria-atomic":!0},n)}function Oke(){const[e,t]=M.useState("");return{announce:M.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const gV=M.createContext(null);function Mke(e){const t=M.useContext(gV);M.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function Nke(){const[e]=M.useState(()=>new Set),t=M.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[M.useCallback(r=>{let{type:i,event:o}=r;e.forEach(s=>{var a;return(a=s[i])==null?void 0:a.call(s,o)})},[e]),t]}const Dke={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},Lke={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function $ke(e){let{announcements:t=Lke,container:n,hiddenTextDescribedById:r,screenReaderInstructions:i=Dke}=e;const{announce:o,announcement:s}=Oke(),a=YS("DndLiveRegion"),[l,u]=M.useState(!1);if(M.useEffect(()=>{u(!0)},[]),Mke(M.useMemo(()=>({onDragStart(d){let{active:f}=d;o(t.onDragStart({active:f}))},onDragMove(d){let{active:f,over:h}=d;t.onDragMove&&o(t.onDragMove({active:f,over:h}))},onDragOver(d){let{active:f,over:h}=d;o(t.onDragOver({active:f,over:h}))},onDragEnd(d){let{active:f,over:h}=d;o(t.onDragEnd({active:f,over:h}))},onDragCancel(d){let{active:f,over:h}=d;o(t.onDragCancel({active:f,over:h}))}}),[o,t])),!l)return null;const c=vn.createElement(vn.Fragment,null,vn.createElement(Pke,{id:r,value:i.draggable}),vn.createElement(Ike,{id:a,announcement:s}));return n?Cs.createPortal(c,n):c}var Fr;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Fr||(Fr={}));function X1(){}function bO(e,t){return M.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function Fke(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const Fs=Object.freeze({x:0,y:0});function Bke(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function zke(e,t){const n=nm(e);if(!n)return"0 0";const r={x:(n.x-t.left)/t.width*100,y:(n.y-t.top)/t.height*100};return r.x+"% "+r.y+"%"}function Uke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function jke(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function Vke(e){let{left:t,top:n,height:r,width:i}=e;return[{x:t,y:n},{x:t+i,y:n},{x:t,y:n+r},{x:t+i,y:n+r}]}function Gke(e,t){if(!e||e.length===0)return null;const[n]=e;return t?n[t]:n}function Hke(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),i=Math.min(t.left+t.width,e.left+e.width),o=Math.min(t.top+t.height,e.top+e.height),s=i-r,a=o-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const i=[];for(const o of r){const{id:s}=o,a=n.get(s);if(a){const l=Hke(a,t);l>0&&i.push({id:s,data:{droppableContainer:o,value:l}})}}return i.sort(jke)};function Wke(e,t){const{top:n,left:r,bottom:i,right:o}=t;return n<=e.y&&e.y<=i&&r<=e.x&&e.x<=o}const Kke=e=>{let{droppableContainers:t,droppableRects:n,pointerCoordinates:r}=e;if(!r)return[];const i=[];for(const o of t){const{id:s}=o,a=n.get(s);if(a&&Wke(r,a)){const u=Vke(a).reduce((d,f)=>d+Bke(r,f),0),c=Number((u/4).toFixed(4));i.push({id:s,data:{droppableContainer:o,value:c}})}}return i.sort(Uke)};function Xke(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function mV(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Fs}function Qke(e){return function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o({...s,top:s.top+e*a.y,bottom:s.bottom+e*a.y,left:s.left+e*a.x,right:s.right+e*a.x}),{...n})}}const Yke=Qke(1);function yV(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Zke(e,t,n){const r=yV(t);if(!r)return e;const{scaleX:i,scaleY:o,x:s,y:a}=r,l=e.left-s-(1-i)*parseFloat(n),u=e.top-a-(1-o)*parseFloat(n.slice(n.indexOf(" ")+1)),c=i?e.width/i:e.width,d=o?e.height/o:e.height;return{width:c,height:d,top:u,right:l+c,bottom:u+d,left:l}}const Jke={ignoreTransform:!1};function Zm(e,t){t===void 0&&(t=Jke);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:c}=eo(e).getComputedStyle(e);u&&(n=Zke(n,u,c))}const{top:r,left:i,width:o,height:s,bottom:a,right:l}=n;return{top:r,left:i,width:o,height:s,bottom:a,right:l}}function SO(e){return Zm(e,{ignoreTransform:!0})}function ePe(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function tPe(e,t){return t===void 0&&(t=eo(e).getComputedStyle(e)),t.position==="fixed"}function nPe(e,t){t===void 0&&(t=eo(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(i=>{const o=t[i];return typeof o=="string"?n.test(o):!1})}function I4(e,t){const n=[];function r(i){if(t!=null&&n.length>=t||!i)return n;if(P4(i)&&i.scrollingElement!=null&&!n.includes(i.scrollingElement))return n.push(i.scrollingElement),n;if(!Qm(i)||xke(i)||n.includes(i))return n;const o=eo(e).getComputedStyle(i);return i!==e&&nPe(i,o)&&n.push(i),tPe(i,o)?n:r(i.parentNode)}return e?r(e):n}function vV(e){const[t]=I4(e,1);return t??null}function ex(e){return!XS||!e?null:wh(e)?e:k4(e)?P4(e)||e===xh(e).scrollingElement?window:Qm(e)?e:null:null}function _V(e){return wh(e)?e.scrollX:e.scrollLeft}function bV(e){return wh(e)?e.scrollY:e.scrollTop}function X3(e){return{x:_V(e),y:bV(e)}}var ti;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(ti||(ti={}));function SV(e){return!XS||!e?!1:e===document.scrollingElement}function wV(e){const t={x:0,y:0},n=SV(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},i=e.scrollTop<=t.y,o=e.scrollLeft<=t.x,s=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:i,isLeft:o,isBottom:s,isRight:a,maxScroll:r,minScroll:t}}const rPe={x:.2,y:.2};function iPe(e,t,n,r,i){let{top:o,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),i===void 0&&(i=rPe);const{isTop:u,isBottom:c,isLeft:d,isRight:f}=wV(e),h={x:0,y:0},p={x:0,y:0},m={height:t.height*i.y,width:t.width*i.x};return!u&&o<=t.top+m.height?(h.y=ti.Backward,p.y=r*Math.abs((t.top+m.height-o)/m.height)):!c&&l>=t.bottom-m.height&&(h.y=ti.Forward,p.y=r*Math.abs((t.bottom-m.height-l)/m.height)),!f&&a>=t.right-m.width?(h.x=ti.Forward,p.x=r*Math.abs((t.right-m.width-a)/m.width)):!d&&s<=t.left+m.width&&(h.x=ti.Backward,p.x=r*Math.abs((t.left+m.width-s)/m.width)),{direction:h,speed:p}}function oPe(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:s}=window;return{top:0,left:0,right:o,bottom:s,width:o,height:s}}const{top:t,left:n,right:r,bottom:i}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:i,width:e.clientWidth,height:e.clientHeight}}function xV(e){return e.reduce((t,n)=>wf(t,X3(n)),Fs)}function sPe(e){return e.reduce((t,n)=>t+_V(n),0)}function aPe(e){return e.reduce((t,n)=>t+bV(n),0)}function CV(e,t){if(t===void 0&&(t=Zm),!e)return;const{top:n,left:r,bottom:i,right:o}=t(e);vV(e)&&(i<=0||o<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const lPe=[["x",["left","right"],sPe],["y",["top","bottom"],aPe]];class O4{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=I4(n),i=xV(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[o,s,a]of lPe)for(const l of s)Object.defineProperty(this,l,{get:()=>{const u=a(r),c=i[o]-u;return this.rect[l]+c},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Ip{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var i;(i=this.target)==null||i.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function uPe(e){const{EventTarget:t}=eo(e);return e instanceof t?e:xh(e)}function tx(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var qo;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(qo||(qo={}));function wO(e){e.preventDefault()}function cPe(e){e.stopPropagation()}var En;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"})(En||(En={}));const EV={start:[En.Space,En.Enter],cancel:[En.Esc],end:[En.Space,En.Enter]},dPe=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case En.Right:return{...n,x:n.x+25};case En.Left:return{...n,x:n.x-25};case En.Down:return{...n,y:n.y+25};case En.Up:return{...n,y:n.y-25}}};class TV{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new Ip(xh(n)),this.windowListeners=new Ip(eo(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(qo.Resize,this.handleCancel),this.windowListeners.add(qo.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(qo.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&CV(r),n(Fs)}handleKeyDown(t){if(R4(t)){const{active:n,context:r,options:i}=this.props,{keyboardCodes:o=EV,coordinateGetter:s=dPe,scrollBehavior:a="smooth"}=i,{code:l}=t;if(o.end.includes(l)){this.handleEnd(t);return}if(o.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:u}=r.current,c=u?{x:u.left,y:u.top}:Fs;this.referenceCoordinates||(this.referenceCoordinates=c);const d=s(t,{active:n,context:r.current,currentCoordinates:c});if(d){const f=K1(d,c),h={x:0,y:0},{scrollableAncestors:p}=r.current;for(const m of p){const b=t.code,{isTop:_,isRight:y,isLeft:g,isBottom:v,maxScroll:S,minScroll:w}=wV(m),x=oPe(m),C={x:Math.min(b===En.Right?x.right-x.width/2:x.right,Math.max(b===En.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(b===En.Down?x.bottom-x.height/2:x.bottom,Math.max(b===En.Down?x.top:x.top+x.height/2,d.y))},A=b===En.Right&&!y||b===En.Left&&!g,T=b===En.Down&&!v||b===En.Up&&!_;if(A&&C.x!==d.x){const k=m.scrollLeft+f.x,L=b===En.Right&&k<=S.x||b===En.Left&&k>=w.x;if(L&&!f.y){m.scrollTo({left:k,behavior:a});return}L?h.x=m.scrollLeft-k:h.x=b===En.Right?m.scrollLeft-S.x:m.scrollLeft-w.x,h.x&&m.scrollBy({left:-h.x,behavior:a});break}else if(T&&C.y!==d.y){const k=m.scrollTop+f.y,L=b===En.Down&&k<=S.y||b===En.Up&&k>=w.y;if(L&&!f.x){m.scrollTo({top:k,behavior:a});return}L?h.y=m.scrollTop-k:h.y=b===En.Down?m.scrollTop-S.y:m.scrollTop-w.y,h.y&&m.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,wf(K1(d,this.referenceCoordinates),h))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}TV.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=EV,onActivation:i}=t,{active:o}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const a=o.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),i==null||i({event:e.nativeEvent}),!0)}return!1}}];function xO(e){return!!(e&&"distance"in e)}function CO(e){return!!(e&&"delay"in e)}class M4{constructor(t,n,r){var i;r===void 0&&(r=uPe(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:o}=t,{target:s}=o;this.props=t,this.events=n,this.document=xh(s),this.documentListeners=new Ip(this.document),this.listeners=new Ip(r),this.windowListeners=new Ip(eo(s)),this.initialCoordinates=(i=nm(o))!=null?i:Fs,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),this.windowListeners.add(qo.Resize,this.handleCancel),this.windowListeners.add(qo.DragStart,wO),this.windowListeners.add(qo.VisibilityChange,this.handleCancel),this.windowListeners.add(qo.ContextMenu,wO),this.documentListeners.add(qo.Keydown,this.handleKeydown),n){if(xO(n))return;if(CO(n)){this.timeoutId=setTimeout(this.handleStart,n.delay);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(qo.Click,cPe,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(qo.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:i,props:o}=this,{onMove:s,options:{activationConstraint:a}}=o;if(!i)return;const l=(n=nm(t))!=null?n:Fs,u=K1(i,l);if(!r&&a){if(CO(a))return tx(u,a.tolerance)?this.handleCancel():void 0;if(xO(a))return a.tolerance!=null&&tx(u,a.tolerance)?this.handleCancel():tx(u,a.distance)?this.handleStart():void 0}t.cancelable&&t.preventDefault(),s(l)}handleEnd(){const{onEnd:t}=this.props;this.detach(),t()}handleCancel(){const{onCancel:t}=this.props;this.detach(),t()}handleKeydown(t){t.code===En.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const fPe={move:{name:"pointermove"},end:{name:"pointerup"}};class AV extends M4{constructor(t){const{event:n}=t,r=xh(n.target);super(t,fPe,r)}}AV.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const hPe={move:{name:"mousemove"},end:{name:"mouseup"}};var Q3;(function(e){e[e.RightClick=2]="RightClick"})(Q3||(Q3={}));class kV extends M4{constructor(t){super(t,hPe,xh(t.event.target))}}kV.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===Q3.RightClick?!1:(r==null||r({event:n}),!0)}}];const nx={move:{name:"touchmove"},end:{name:"touchend"}};class PV extends M4{constructor(t){super(t,nx)}static setup(){return window.addEventListener(nx.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(nx.move.name,t)};function t(){}}}PV.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:i}=n;return i.length>1?!1:(r==null||r({event:n}),!0)}}];var Op;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Op||(Op={}));var Q1;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Q1||(Q1={}));function pPe(e){let{acceleration:t,activator:n=Op.Pointer,canScroll:r,draggingRect:i,enabled:o,interval:s=5,order:a=Q1.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:c,delta:d,threshold:f}=e;const h=mPe({delta:d,disabled:!o}),[p,m]=Cke(),b=M.useRef({x:0,y:0}),_=M.useRef({x:0,y:0}),y=M.useMemo(()=>{switch(n){case Op.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case Op.DraggableRect:return i}},[n,i,l]),g=M.useRef(null),v=M.useCallback(()=>{const w=g.current;if(!w)return;const x=b.current.x*_.current.x,C=b.current.y*_.current.y;w.scrollBy(x,C)},[]),S=M.useMemo(()=>a===Q1.TreeOrder?[...u].reverse():u,[a,u]);M.useEffect(()=>{if(!o||!u.length||!y){m();return}for(const w of S){if((r==null?void 0:r(w))===!1)continue;const x=u.indexOf(w),C=c[x];if(!C)continue;const{direction:A,speed:T}=iPe(w,C,y,t,f);for(const k of["x","y"])h[k][A[k]]||(T[k]=0,A[k]=0);if(T.x>0||T.y>0){m(),g.current=w,p(v,s),b.current=T,_.current=A;return}}b.current={x:0,y:0},_.current={x:0,y:0},m()},[t,v,r,m,o,s,JSON.stringify(y),JSON.stringify(h),p,u,S,c,JSON.stringify(f)])}const gPe={x:{[ti.Backward]:!1,[ti.Forward]:!1},y:{[ti.Backward]:!1,[ti.Forward]:!1}};function mPe(e){let{delta:t,disabled:n}=e;const r=W1(t);return Ym(i=>{if(n||!r||!i)return gPe;const o={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[ti.Backward]:i.x[ti.Backward]||o.x===-1,[ti.Forward]:i.x[ti.Forward]||o.x===1},y:{[ti.Backward]:i.y[ti.Backward]||o.y===-1,[ti.Forward]:i.y[ti.Forward]||o.y===1}}},[n,t,r])}function yPe(e,t){const n=t!==null?e.get(t):void 0,r=n?n.node.current:null;return Ym(i=>{var o;return t===null?null:(o=r??i)!=null?o:null},[r,t])}function vPe(e,t){return M.useMemo(()=>e.reduce((n,r)=>{const{sensor:i}=r,o=i.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...o]},[]),[e,t])}var im;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(im||(im={}));var Y3;(function(e){e.Optimized="optimized"})(Y3||(Y3={}));const EO=new Map;function _Pe(e,t){let{dragging:n,dependencies:r,config:i}=t;const[o,s]=M.useState(null),{frequency:a,measure:l,strategy:u}=i,c=M.useRef(e),d=b(),f=tm(d),h=M.useCallback(function(_){_===void 0&&(_=[]),!f.current&&s(y=>y===null?_:y.concat(_.filter(g=>!y.includes(g))))},[f]),p=M.useRef(null),m=Ym(_=>{if(d&&!n)return EO;if(!_||_===EO||c.current!==e||o!=null){const y=new Map;for(let g of e){if(!g)continue;if(o&&o.length>0&&!o.includes(g.id)&&g.rect.current){y.set(g.id,g.rect.current);continue}const v=g.node.current,S=v?new O4(l(v),v):null;g.rect.current=S,S&&y.set(g.id,S)}return y}return _},[e,o,n,d,l]);return M.useEffect(()=>{c.current=e},[e]),M.useEffect(()=>{d||h()},[n,d]),M.useEffect(()=>{o&&o.length>0&&s(null)},[JSON.stringify(o)]),M.useEffect(()=>{d||typeof a!="number"||p.current!==null||(p.current=setTimeout(()=>{h(),p.current=null},a))},[a,d,h,...r]),{droppableRects:m,measureDroppableContainers:h,measuringScheduled:o!=null};function b(){switch(u){case im.Always:return!1;case im.BeforeDragging:return n;default:return!n}}}function N4(e,t){return Ym(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function bPe(e,t){return N4(e,t)}function SPe(e){let{callback:t,disabled:n}=e;const r=QS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(r)},[r,n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function ZS(e){let{callback:t,disabled:n}=e;const r=QS(t),i=M.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(r)},[n]);return M.useEffect(()=>()=>i==null?void 0:i.disconnect(),[i]),i}function wPe(e){return new O4(Zm(e),e)}function TO(e,t,n){t===void 0&&(t=wPe);const[r,i]=M.useReducer(a,null),o=SPe({callback(l){if(e)for(const u of l){const{type:c,target:d}=u;if(c==="childList"&&d instanceof HTMLElement&&d.contains(e)){i();break}}}}),s=ZS({callback:i});return Sa(()=>{i(),e?(s==null||s.observe(e),o==null||o.observe(document.body,{childList:!0,subtree:!0})):(s==null||s.disconnect(),o==null||o.disconnect())},[e]),r;function a(l){if(!e)return null;if(e.isConnected===!1){var u;return(u=l??n)!=null?u:null}const c=t(e);return JSON.stringify(l)===JSON.stringify(c)?l:c}}function xPe(e){const t=N4(e);return mV(e,t)}const AO=[];function CPe(e){const t=M.useRef(e),n=Ym(r=>e?r&&r!==AO&&e&&t.current&&e.parentNode===t.current.parentNode?r:I4(e):AO,[e]);return M.useEffect(()=>{t.current=e},[e]),n}function EPe(e){const[t,n]=M.useState(null),r=M.useRef(e),i=M.useCallback(o=>{const s=ex(o.target);s&&n(a=>a?(a.set(s,X3(s)),new Map(a)):null)},[]);return M.useEffect(()=>{const o=r.current;if(e!==o){s(o);const a=e.map(l=>{const u=ex(l);return u?(u.addEventListener("scroll",i,{passive:!0}),[u,X3(u)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{s(e),s(o)};function s(a){a.forEach(l=>{const u=ex(l);u==null||u.removeEventListener("scroll",i)})}},[i,e]),M.useMemo(()=>e.length?t?Array.from(t.values()).reduce((o,s)=>wf(o,s),Fs):xV(e):Fs,[e,t])}function kO(e,t){t===void 0&&(t=[]);const n=M.useRef(null);return M.useEffect(()=>{n.current=null},t),M.useEffect(()=>{const r=e!==Fs;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?K1(e,n.current):Fs}function TPe(e){M.useEffect(()=>{if(!XS)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n==null||n()}},e.map(t=>{let{sensor:n}=t;return n}))}function APe(e,t){return M.useMemo(()=>e.reduce((n,r)=>{let{eventName:i,handler:o}=r;return n[i]=s=>{o(s,t)},n},{}),[e,t])}function RV(e){return M.useMemo(()=>e?ePe(e):null,[e])}const rx=[];function kPe(e,t){t===void 0&&(t=Zm);const[n]=e,r=RV(n?eo(n):null),[i,o]=M.useReducer(a,rx),s=ZS({callback:o});return e.length>0&&i===rx&&o(),Sa(()=>{e.length?e.forEach(l=>s==null?void 0:s.observe(l)):(s==null||s.disconnect(),o())},[e]),i;function a(){return e.length?e.map(l=>SV(l)?r:new O4(t(l),l)):rx}}function IV(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Qm(t)?t:e}function PPe(e){let{measure:t}=e;const[n,r]=M.useState(null),i=M.useCallback(u=>{for(const{target:c}of u)if(Qm(c)){r(d=>{const f=t(c);return d?{...d,width:f.width,height:f.height}:f});break}},[t]),o=ZS({callback:i}),s=M.useCallback(u=>{const c=IV(u);o==null||o.disconnect(),c&&(o==null||o.observe(c)),r(c?t(c):null)},[t,o]),[a,l]=q1(s);return M.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const RPe=[{sensor:AV,options:{}},{sensor:TV,options:{}}],IPe={current:{}},J0={draggable:{measure:SO},droppable:{measure:SO,strategy:im.WhileDragging,frequency:Y3.Optimized},dragOverlay:{measure:Zm}};class Mp extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const OPe={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Mp,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:X1},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:J0,measureDroppableContainers:X1,windowRect:null,measuringScheduled:!1},OV={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:X1,draggableNodes:new Map,over:null,measureDroppableContainers:X1},Jm=M.createContext(OV),MV=M.createContext(OPe);function MPe(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Mp}}}function NPe(e,t){switch(t.type){case Fr.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case Fr.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case Fr.DragEnd:case Fr.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Fr.RegisterDroppable:{const{element:n}=t,{id:r}=n,i=new Mp(e.droppable.containers);return i.set(r,n),{...e,droppable:{...e.droppable,containers:i}}}case Fr.SetDroppableDisabled:{const{id:n,key:r,disabled:i}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const s=new Mp(e.droppable.containers);return s.set(n,{...o,disabled:i}),{...e,droppable:{...e.droppable,containers:s}}}case Fr.UnregisterDroppable:{const{id:n,key:r}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new Mp(e.droppable.containers);return o.delete(n),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function DPe(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:i}=M.useContext(Jm),o=W1(r),s=W1(n==null?void 0:n.id);return M.useEffect(()=>{if(!t&&!r&&o&&s!=null){if(!R4(o)||document.activeElement===o.target)return;const a=i.get(s);if(!a)return;const{activatorNode:l,node:u}=a;if(!l.current&&!u.current)return;requestAnimationFrame(()=>{for(const c of[l.current,u.current]){if(!c)continue;const d=Ake(c);if(d){d.focus();break}}})}},[r,t,i,s,o]),null}function NV(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((i,o)=>o({transform:i,...r}),n):n}function LPe(e){return M.useMemo(()=>({draggable:{...J0.draggable,...e==null?void 0:e.draggable},droppable:{...J0.droppable,...e==null?void 0:e.droppable},dragOverlay:{...J0.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function $Pe(e){let{activeNode:t,measure:n,initialRect:r,config:i=!0}=e;const o=M.useRef(!1),{x:s,y:a}=typeof i=="boolean"?{x:i,y:i}:i;Sa(()=>{if(!s&&!a||!t){o.current=!1;return}if(o.current||!r)return;const u=t==null?void 0:t.node.current;if(!u||u.isConnected===!1)return;const c=n(u),d=mV(c,r);if(s||(d.x=0),a||(d.y=0),o.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const f=vV(u);f&&f.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const JS=M.createContext({...Fs,scaleX:1,scaleY:1});var Nl;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Nl||(Nl={}));const FPe=M.memo(function(t){var n,r,i,o;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:c=RPe,collisionDetection:d=qke,measuring:f,modifiers:h,...p}=t;const m=M.useReducer(NPe,void 0,MPe),[b,_]=m,[y,g]=Nke(),[v,S]=M.useState(Nl.Uninitialized),w=v===Nl.Initialized,{draggable:{active:x,nodes:C,translate:A},droppable:{containers:T}}=b,k=x?C.get(x):null,L=M.useRef({initial:null,translated:null}),N=M.useMemo(()=>{var On;return x!=null?{id:x,data:(On=k==null?void 0:k.data)!=null?On:IPe,rect:L}:null},[x,k]),E=M.useRef(null),[P,D]=M.useState(null),[B,R]=M.useState(null),I=tm(p,Object.values(p)),O=YS("DndDescribedBy",s),F=M.useMemo(()=>T.getEnabled(),[T]),U=LPe(f),{droppableRects:V,measureDroppableContainers:H,measuringScheduled:Y}=_Pe(F,{dragging:w,dependencies:[A.x,A.y],config:U.droppable}),Q=yPe(C,x),j=M.useMemo(()=>B?nm(B):null,[B]),K=Aa(),te=bPe(Q,U.draggable.measure);$Pe({activeNode:x?C.get(x):null,config:K.layoutShiftCompensation,initialRect:te,measure:U.draggable.measure});const oe=TO(Q,U.draggable.measure,te),me=TO(Q?Q.parentElement:null),le=M.useRef({activatorEvent:null,active:null,activeNode:Q,collisionRect:null,collisions:null,droppableRects:V,draggableNodes:C,draggingNode:null,draggingNodeRect:null,droppableContainers:T,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),ht=T.getNodeFor((n=le.current.over)==null?void 0:n.id),nt=PPe({measure:U.dragOverlay.measure}),$e=(r=nt.nodeRef.current)!=null?r:Q,ct=w?(i=nt.rect)!=null?i:oe:null,Pe=!!(nt.nodeRef.current&&nt.rect),qt=xPe(Pe?null:oe),Sr=RV($e?eo($e):null),Pn=CPe(w?ht??Q:null),bn=kPe(Pn),Wt=NV(h,{transform:{x:A.x-qt.x,y:A.y-qt.y,scaleX:1,scaleY:1},activatorEvent:B,active:N,activeNodeRect:oe,containerNodeRect:me,draggingNodeRect:ct,over:le.current.over,overlayNodeRect:nt.rect,scrollableAncestors:Pn,scrollableAncestorRects:bn,windowRect:Sr}),Rn=j?wf(j,A):null,wr=EPe(Pn),to=kO(wr),Gr=kO(wr,[oe]),ar=wf(Wt,to),Or=ct?Yke(ct,Wt):null,Hr=N&&Or?d({active:N,collisionRect:Or,droppableRects:V,droppableContainers:F,pointerCoordinates:Rn}):null,In=Gke(Hr,"id"),[dn,Ci]=M.useState(null),si=Pe?Wt:wf(Wt,Gr),ji=Xke(si,(o=dn==null?void 0:dn.rect)!=null?o:null,oe),ps=M.useCallback((On,Kt)=>{let{sensor:Mr,options:Cr}=Kt;if(E.current==null)return;const Er=C.get(E.current);if(!Er)return;const qr=On.nativeEvent,Ei=new Mr({active:E.current,activeNode:Er,event:qr,options:Cr,context:le,onStart(ai){const Nr=E.current;if(Nr==null)return;const gs=C.get(Nr);if(!gs)return;const{onDragStart:Vs}=I.current,li={active:{id:Nr,data:gs.data,rect:L}};Cs.unstable_batchedUpdates(()=>{Vs==null||Vs(li),S(Nl.Initializing),_({type:Fr.DragStart,initialCoordinates:ai,active:Nr}),y({type:"onDragStart",event:li})})},onMove(ai){_({type:Fr.DragMove,coordinates:ai})},onEnd:ro(Fr.DragEnd),onCancel:ro(Fr.DragCancel)});Cs.unstable_batchedUpdates(()=>{D(Ei),R(On.nativeEvent)});function ro(ai){return async function(){const{active:gs,collisions:Vs,over:li,scrollAdjustedTranslate:_l}=le.current;let zo=null;if(gs&&_l){const{cancelDrop:Wr}=I.current;zo={activatorEvent:qr,active:gs,collisions:Vs,delta:_l,over:li},ai===Fr.DragEnd&&typeof Wr=="function"&&await Promise.resolve(Wr(zo))&&(ai=Fr.DragCancel)}E.current=null,Cs.unstable_batchedUpdates(()=>{_({type:ai}),S(Nl.Uninitialized),Ci(null),D(null),R(null);const Wr=ai===Fr.DragEnd?"onDragEnd":"onDragCancel";if(zo){const ka=I.current[Wr];ka==null||ka(zo),y({type:Wr,event:zo})}})}}},[C]),xr=M.useCallback((On,Kt)=>(Mr,Cr)=>{const Er=Mr.nativeEvent,qr=C.get(Cr);if(E.current!==null||!qr||Er.dndKit||Er.defaultPrevented)return;const Ei={active:qr};On(Mr,Kt.options,Ei)===!0&&(Er.dndKit={capturedBy:Kt.sensor},E.current=Cr,ps(Mr,Kt))},[C,ps]),no=vPe(c,xr);TPe(c),Sa(()=>{oe&&v===Nl.Initializing&&S(Nl.Initialized)},[oe,v]),M.useEffect(()=>{const{onDragMove:On}=I.current,{active:Kt,activatorEvent:Mr,collisions:Cr,over:Er}=le.current;if(!Kt||!Mr)return;const qr={active:Kt,activatorEvent:Mr,collisions:Cr,delta:{x:ar.x,y:ar.y},over:Er};Cs.unstable_batchedUpdates(()=>{On==null||On(qr),y({type:"onDragMove",event:qr})})},[ar.x,ar.y]),M.useEffect(()=>{const{active:On,activatorEvent:Kt,collisions:Mr,droppableContainers:Cr,scrollAdjustedTranslate:Er}=le.current;if(!On||E.current==null||!Kt||!Er)return;const{onDragOver:qr}=I.current,Ei=Cr.get(In),ro=Ei&&Ei.rect.current?{id:Ei.id,rect:Ei.rect.current,data:Ei.data,disabled:Ei.disabled}:null,ai={active:On,activatorEvent:Kt,collisions:Mr,delta:{x:Er.x,y:Er.y},over:ro};Cs.unstable_batchedUpdates(()=>{Ci(ro),qr==null||qr(ai),y({type:"onDragOver",event:ai})})},[In]),Sa(()=>{le.current={activatorEvent:B,active:N,activeNode:Q,collisionRect:Or,collisions:Hr,droppableRects:V,draggableNodes:C,draggingNode:$e,draggingNodeRect:ct,droppableContainers:T,over:dn,scrollableAncestors:Pn,scrollAdjustedTranslate:ar},L.current={initial:ct,translated:Or}},[N,Q,Hr,Or,C,$e,ct,V,T,dn,Pn,ar]),pPe({...K,delta:A,draggingRect:Or,pointerCoordinates:Rn,scrollableAncestors:Pn,scrollableAncestorRects:bn});const Ta=M.useMemo(()=>({active:N,activeNode:Q,activeNodeRect:oe,activatorEvent:B,collisions:Hr,containerNodeRect:me,dragOverlay:nt,draggableNodes:C,droppableContainers:T,droppableRects:V,over:dn,measureDroppableContainers:H,scrollableAncestors:Pn,scrollableAncestorRects:bn,measuringConfiguration:U,measuringScheduled:Y,windowRect:Sr}),[N,Q,oe,B,Hr,me,nt,C,T,V,dn,H,Pn,bn,U,Y,Sr]),bo=M.useMemo(()=>({activatorEvent:B,activators:no,active:N,activeNodeRect:oe,ariaDescribedById:{draggable:O},dispatch:_,draggableNodes:C,over:dn,measureDroppableContainers:H}),[B,no,N,oe,_,O,C,dn,H]);return vn.createElement(gV.Provider,{value:g},vn.createElement(Jm.Provider,{value:bo},vn.createElement(MV.Provider,{value:Ta},vn.createElement(JS.Provider,{value:ji},u)),vn.createElement(DPe,{disabled:(a==null?void 0:a.restoreFocus)===!1})),vn.createElement($ke,{...a,hiddenTextDescribedById:O}));function Aa(){const On=(P==null?void 0:P.autoScrollEnabled)===!1,Kt=typeof l=="object"?l.enabled===!1:l===!1,Mr=w&&!On&&!Kt;return typeof l=="object"?{...l,enabled:Mr}:{enabled:Mr}}}),BPe=M.createContext(null),PO="button",zPe="Droppable";function tNe(e){let{id:t,data:n,disabled:r=!1,attributes:i}=e;const o=YS(zPe),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:c,draggableNodes:d,over:f}=M.useContext(Jm),{role:h=PO,roleDescription:p="draggable",tabIndex:m=0}=i??{},b=(l==null?void 0:l.id)===t,_=M.useContext(b?JS:BPe),[y,g]=q1(),[v,S]=q1(),w=APe(s,t),x=tm(n);Sa(()=>(d.set(t,{id:t,key:o,node:y,activatorNode:v,data:x}),()=>{const A=d.get(t);A&&A.key===o&&d.delete(t)}),[d,t]);const C=M.useMemo(()=>({role:h,tabIndex:m,"aria-disabled":r,"aria-pressed":b&&h===PO?!0:void 0,"aria-roledescription":p,"aria-describedby":c.draggable}),[r,h,m,b,p,c.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:C,isDragging:b,listeners:r?void 0:w,node:y,over:f,setNodeRef:g,setActivatorNodeRef:S,transform:_}}function UPe(){return M.useContext(MV)}const jPe="Droppable",VPe={timeout:25};function nNe(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:i}=e;const o=YS(jPe),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=M.useContext(Jm),c=M.useRef({disabled:n}),d=M.useRef(!1),f=M.useRef(null),h=M.useRef(null),{disabled:p,updateMeasurementsFor:m,timeout:b}={...VPe,...i},_=tm(m??r),y=M.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(_.current)?_.current:[_.current]),h.current=null},b)},[b]),g=ZS({callback:y,disabled:p||!s}),v=M.useCallback((C,A)=>{g&&(A&&(g.unobserve(A),d.current=!1),C&&g.observe(C))},[g]),[S,w]=q1(v),x=tm(t);return M.useEffect(()=>{!g||!S.current||(g.disconnect(),d.current=!1,g.observe(S.current))},[S,g]),Sa(()=>(a({type:Fr.RegisterDroppable,element:{id:r,key:o,disabled:n,node:S,rect:f,data:x}}),()=>a({type:Fr.UnregisterDroppable,key:o,id:r})),[r]),M.useEffect(()=>{n!==c.current.disabled&&(a({type:Fr.SetDroppableDisabled,id:r,key:o,disabled:n}),c.current.disabled=n)},[r,o,n,a]),{active:s,rect:f,isOver:(l==null?void 0:l.id)===r,node:S,over:l,setNodeRef:w}}function GPe(e){let{animation:t,children:n}=e;const[r,i]=M.useState(null),[o,s]=M.useState(null),a=W1(n);return!n&&!r&&a&&i(a),Sa(()=>{if(!o)return;const l=r==null?void 0:r.key,u=r==null?void 0:r.props.id;if(l==null||u==null){i(null);return}Promise.resolve(t(u,o)).then(()=>{i(null)})},[t,r,o]),vn.createElement(vn.Fragment,null,n,r?M.cloneElement(r,{ref:s}):null)}const HPe={x:0,y:0,scaleX:1,scaleY:1};function qPe(e){let{children:t}=e;return vn.createElement(Jm.Provider,{value:OV},vn.createElement(JS.Provider,{value:HPe},t))}const WPe={position:"fixed",touchAction:"none"},KPe=e=>R4(e)?"transform 250ms ease":void 0,XPe=M.forwardRef((e,t)=>{let{as:n,activatorEvent:r,adjustScale:i,children:o,className:s,rect:a,style:l,transform:u,transition:c=KPe}=e;if(!a)return null;const d=i?u:{...u,scaleX:1,scaleY:1},f={...WPe,width:a.width,height:a.height,top:a.top,left:a.left,transform:rm.Transform.toString(d),transformOrigin:i&&r?zke(r,a):void 0,transition:typeof c=="function"?c(r):c,...l};return vn.createElement(n,{className:s,style:f,ref:t},o)}),QPe=e=>t=>{let{active:n,dragOverlay:r}=t;const i={},{styles:o,className:s}=e;if(o!=null&&o.active)for(const[a,l]of Object.entries(o.active))l!==void 0&&(i[a]=n.node.style.getPropertyValue(a),n.node.style.setProperty(a,l));if(o!=null&&o.dragOverlay)for(const[a,l]of Object.entries(o.dragOverlay))l!==void 0&&r.node.style.setProperty(a,l);return s!=null&&s.active&&n.node.classList.add(s.active),s!=null&&s.dragOverlay&&r.node.classList.add(s.dragOverlay),function(){for(const[l,u]of Object.entries(i))n.node.style.setProperty(l,u);s!=null&&s.active&&n.node.classList.remove(s.active)}},YPe=e=>{let{transform:{initial:t,final:n}}=e;return[{transform:rm.Transform.toString(t)},{transform:rm.Transform.toString(n)}]},ZPe={duration:250,easing:"ease",keyframes:YPe,sideEffects:QPe({styles:{active:{opacity:"0"}}})};function JPe(e){let{config:t,draggableNodes:n,droppableContainers:r,measuringConfiguration:i}=e;return QS((o,s)=>{if(t===null)return;const a=n.get(o);if(!a)return;const l=a.node.current;if(!l)return;const u=IV(s);if(!u)return;const{transform:c}=eo(s).getComputedStyle(s),d=yV(c);if(!d)return;const f=typeof t=="function"?t:e6e(t);return CV(l,i.draggable.measure),f({active:{id:o,data:a.data,node:l,rect:i.draggable.measure(l)},draggableNodes:n,dragOverlay:{node:s,rect:i.dragOverlay.measure(u)},droppableContainers:r,measuringConfiguration:i,transform:d})})}function e6e(e){const{duration:t,easing:n,sideEffects:r,keyframes:i}={...ZPe,...e};return o=>{let{active:s,dragOverlay:a,transform:l,...u}=o;if(!t)return;const c={x:a.rect.left-s.rect.left,y:a.rect.top-s.rect.top},d={scaleX:l.scaleX!==1?s.rect.width*l.scaleX/a.rect.width:1,scaleY:l.scaleY!==1?s.rect.height*l.scaleY/a.rect.height:1},f={x:l.x-c.x,y:l.y-c.y,...d},h=i({...u,active:s,dragOverlay:a,transform:{initial:l,final:f}}),[p]=h,m=h[h.length-1];if(JSON.stringify(p)===JSON.stringify(m))return;const b=r==null?void 0:r({active:s,dragOverlay:a,...u}),_=a.node.animate(h,{duration:t,easing:n,fill:"forwards"});return new Promise(y=>{_.onfinish=()=>{b==null||b(),y()}})}}let RO=0;function t6e(e){return M.useMemo(()=>{if(e!=null)return RO++,RO},[e])}const n6e=vn.memo(e=>{let{adjustScale:t=!1,children:n,dropAnimation:r,style:i,transition:o,modifiers:s,wrapperElement:a="div",className:l,zIndex:u=999}=e;const{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggableNodes:p,droppableContainers:m,dragOverlay:b,over:_,measuringConfiguration:y,scrollableAncestors:g,scrollableAncestorRects:v,windowRect:S}=UPe(),w=M.useContext(JS),x=t6e(d==null?void 0:d.id),C=NV(s,{activatorEvent:c,active:d,activeNodeRect:f,containerNodeRect:h,draggingNodeRect:b.rect,over:_,overlayNodeRect:b.rect,scrollableAncestors:g,scrollableAncestorRects:v,transform:w,windowRect:S}),A=N4(f),T=JPe({config:r,draggableNodes:p,droppableContainers:m,measuringConfiguration:y}),k=A?b.setRef:void 0;return vn.createElement(qPe,null,vn.createElement(GPe,{animation:T},d&&x?vn.createElement(XPe,{key:x,id:d.id,ref:k,as:a,activatorEvent:c,adjustScale:t,className:l,transition:o,rect:A,style:{zIndex:u,...i},transform:C},n):null))}),r6e=()=>w$(),i6e=p$,o6e=Fi([rxe,BT],({nodes:e},t)=>t==="nodes"?e.viewport.zoom:1),s6e=()=>{const e=i6e(o6e);return M.useCallback(({activatorEvent:n,draggingNodeRect:r,transform:i})=>{if(r&&n){const o=nm(n);if(!o)return i;const s=o.x-r.left,a=o.y-r.top,l=i.x+s-r.width/2,u=i.y+a-r.height/2,c=i.scaleX*e,d=i.scaleY*e;return{x:l,y:u,scaleX:c,scaleY:d}}return i},[e])};function a6e(e){return Z.jsx(FPe,{...e})}const p0=28,IO={w:p0,h:p0,maxW:p0,maxH:p0,shadow:"dark-lg",borderRadius:"lg",opacity:.3,bg:"base.800",color:"base.50",_dark:{borderColor:"base.200",bg:"base.900",color:"base.100"}},l6e=e=>{if(!e.dragData)return null;if(e.dragData.payloadType==="NODE_FIELD"){const{field:t,fieldTemplate:n}=e.dragData.payload;return Z.jsx(V1,{sx:{position:"relative",p:2,px:3,opacity:.7,bg:"base.300",borderRadius:"base",boxShadow:"dark-lg",whiteSpace:"nowrap",fontSize:"sm"},children:Z.jsx(oV,{children:t.label||n.title})})}if(e.dragData.payloadType==="IMAGE_DTO"){const{thumbnail_url:t,width:n,height:r}=e.dragData.payload.imageDTO;return Z.jsx(V1,{sx:{position:"relative",width:"full",height:"full",display:"flex",alignItems:"center",justifyContent:"center"},children:Z.jsx(T4,{sx:{...IO},objectFit:"contain",src:t,width:n,height:r})})}return e.dragData.payloadType==="IMAGE_DTOS"?Z.jsxs(A4,{sx:{position:"relative",alignItems:"center",justifyContent:"center",flexDir:"column",...IO},children:[Z.jsx(V3,{children:e.dragData.payload.imageDTOs.length}),Z.jsx(V3,{size:"sm",children:"Images"})]}):null},u6e=M.memo(l6e),c6e=e=>{const[t,n]=M.useState(null),r=ge("images"),i=r6e(),o=M.useCallback(d=>{r.trace({dragData:mn(d.active.data.current)},"Drag started");const f=d.active.data.current;f&&n(f)},[r]),s=M.useCallback(d=>{var h;r.trace({dragData:mn(d.active.data.current)},"Drag ended");const f=(h=d.over)==null?void 0:h.data.current;!t||!f||(i(zz({overData:f,activeData:t})),n(null))},[t,i,r]),a=bO(kV,{activationConstraint:{distance:10}}),l=bO(PV,{activationConstraint:{distance:10}}),u=Fke(a,l),c=s6e();return Z.jsxs(a6e,{onDragStart:o,onDragEnd:s,sensors:u,collisionDetection:Kke,autoScroll:!1,children:[e.children,Z.jsx(n6e,{dropAnimation:null,modifiers:[c],style:{width:"min-content",height:"min-content",cursor:"none",userSelect:"none",padding:"10rem"},children:Z.jsx(WAe,{children:t&&Z.jsx(BAe.div,{layout:!0,initial:{opacity:0,scale:.7},animate:{opacity:1,scale:1,transition:{duration:.1}},children:Z.jsx(u6e,{dragData:t})},"overlay-drag-image")})})]})},d6e=M.memo(c6e),OO=Ru(void 0),MO=Ru(void 0),f6e=M.lazy(()=>KM(()=>import("./App-dbf8f111.js"),["./App-dbf8f111.js","./menu-c9cc8c3d.js","./App-6125620a.css"],import.meta.url)),h6e=M.lazy(()=>KM(()=>import("./ThemeLocaleProvider-a3380d0c.js"),["./ThemeLocaleProvider-a3380d0c.js","./menu-c9cc8c3d.js","./ThemeLocaleProvider-90f0fcd3.css"],import.meta.url)),p6e=({apiUrl:e,token:t,config:n,headerComponent:r,middleware:i,projectId:o,selectedImage:s,customStarUi:a})=>(M.useEffect(()=>(t&&$f.set(t),e&&_g.set(e),o&&bg.set(o),qB(),i&&i.length>0?JC(GR(),...i):JC(GR()),()=>{_g.set(void 0),$f.set(void 0),bg.set(void 0)}),[e,t,i,o]),M.useEffect(()=>(a&&OO.set(a),()=>{OO.set(void 0)}),[a]),M.useEffect(()=>(r&&MO.set(r),()=>{MO.set(void 0)}),[r]),Z.jsx(vn.StrictMode,{children:Z.jsx(Jce,{store:nxe,children:Z.jsx(vn.Suspense,{fallback:Z.jsx(tke,{}),children:Z.jsx(h6e,{children:Z.jsx(d6e,{children:Z.jsx(f6e,{config:n,selectedImage:s})})})})})})),g6e=M.memo(p6e);ix.createRoot(document.getElementById("root")).render(Z.jsx(g6e,{}));export{pc as $,Es as A,Ege as B,yo as C,ou as D,Ys as E,ZIe as F,dT as G,Xwe as H,zu as I,$Ce as J,wu as K,JT as L,zMe as M,$Me as N,WAe as O,kge as P,BAe as Q,QMe as R,sg as S,r4 as T,iV as U,i4 as V,FMe as W,BMe as X,LCe as Y,DCe as Z,UMe as _,i5 as a,yee as a$,Uc as a0,u1 as a1,Cq as a2,vn as a3,uEe as a4,XMe as a5,bEe as a6,Za as a7,TU as a8,O4e as a9,SU as aA,CCe as aB,Cs as aC,F4 as aD,ZT as aE,B9e as aF,QRe as aG,dIe as aH,fIe as aI,zRe as aJ,FRe as aK,oV as aL,wp as aM,z0e as aN,ez as aO,x9e as aP,$Ie as aQ,Z5 as aR,LT as aS,eMe as aT,T4 as aU,JAe as aV,we as aW,nIe as aX,cIe as aY,Nde as aZ,S5 as a_,GMe as aa,A3 as ab,LMe as ac,KMe as ad,Fi as ae,_T as af,wm as ag,i6e as ah,KRe as ai,Mm as aj,CL as ak,QL as al,sb as am,ge as an,r6e as ao,A9e as ap,Tn as aq,sa as ar,V1 as as,A4 as at,V3 as au,rxe as av,BT as aw,uIe as ax,wCe as ay,YT as az,C_ as b,SR as b$,P6e as b0,K9e as b1,M9e as b2,tMe as b3,J9e as b4,y0e as b5,O9e as b6,L9e as b7,Rne as b8,$ye as b9,VIe as bA,y6e as bB,w6e as bC,x6e as bD,C6e as bE,E6e as bF,Q6e as bG,Y6e as bH,f9e as bI,h9e as bJ,R6e as bK,i8e as bL,A6e as bM,H6e as bN,M6e as bO,kSe as bP,k6e as bQ,Z6e as bR,T6e as bS,u8e as bT,I6e as bU,Kk as bV,O6e as bW,Xk as bX,F6e as bY,W6e as bZ,fMe as b_,Fye as ba,H9e as bb,W9e as bc,D9e as bd,Q9e as be,WRe as bf,T9e as bg,tIe as bh,sre as bi,vIe as bj,yIe as bk,JRe as bl,qIe as bm,nNe as bn,tNe as bo,kB as bp,HIe as bq,YRe as br,ZRe as bs,oIe as bt,LC as bu,eIe as bv,jl as bw,vy as bx,GIe as by,jIe as bz,CK as c,v6e as c$,D6e as c0,YIe as c1,ASe as c2,N6e as c3,P8 as c4,m9e as c5,y9e as c6,v9e as c7,B6e as c8,_9e as c9,fT as cA,rs as cB,j6e as cC,Fm as cD,Z9e as cE,K7 as cF,jOe as cG,HOe as cH,KOe as cI,WOe as cJ,VOe as cK,GOe as cL,qOe as cM,Fwe as cN,u9e as cO,iOe as cP,jRe as cQ,URe as cR,lOe as cS,tte as cT,YOe as cU,tOe as cV,SOe as cW,wOe as cX,L6e as cY,cMe as cZ,AOe as c_,z6e as ca,b9e as cb,U6e as cc,S9e as cd,Le as ce,OO as cf,SIe as cg,_Ie as ch,bIe as ci,$de as cj,I0e as ck,HB as cl,wD as cm,BRe as cn,Bz as co,rIe as cp,f1 as cq,oF as cr,DMe as cs,iIe as ct,Ey as cu,h1 as cv,k9e as cw,Iu as cx,R9e as cy,Kr as cz,dee as d,S8e as d$,TOe as d0,Lb as d1,xne as d2,EOe as d3,Cm as d4,xMe as d5,uMe as d6,kMe as d7,lMe as d8,xOe as d9,hIe as dA,pIe as dB,Qc as dC,Qk as dD,Ode as dE,Id as dF,L6 as dG,Q0e as dH,X0e as dI,kIe as dJ,PIe as dK,RIe as dL,Mde as dM,IIe as dN,Z$ as dO,CIe as dP,TIe as dQ,DIe as dR,LIe as dS,OIe as dT,Pb as dU,NIe as dV,MIe as dW,wIe as dX,_we as dY,wR as dZ,xIe as d_,bOe as da,PMe as db,POe as dc,AMe as dd,ROe as de,_Oe as df,wne as dg,pMe as dh,COe as di,$6e as dj,dMe as dk,kOe as dl,QOe as dm,UIe as dn,FIe as dp,BIe as dq,zIe as dr,KIe as ds,XIe as dt,aF as du,WIe as dv,O_ as dw,D6 as dx,AIe as dy,gIe as dz,U7 as e,_6e as e$,c8e as e0,y8e as e1,X6e as e2,v8e as e3,_8e as e4,hMe as e5,p9e as e6,_5 as e7,Mye as e8,K6e as e9,hte as eA,g8e as eB,m8e as eC,p8e as eD,b5 as eE,d9e as eF,hwe as eG,j9e as eH,pe as eI,pi as eJ,Ln as eK,ha as eL,aMe as eM,EMe as eN,vMe as eO,F9e as eP,yMe as eQ,TMe as eR,CMe as eS,$9e as eT,bMe as eU,_Me as eV,gMe as eW,wMe as eX,b6e as eY,mMe as eZ,SMe as e_,cwe as ea,yD as eb,IMe as ec,x8e as ed,Ine as ee,w8e as ef,xs as eg,q6e as eh,s8e as ei,S6e as ej,pte as ek,l8e as el,g9e as em,t8e as en,n8e as eo,r8e as ep,J6e as eq,e8e as er,Pne as es,f8e as et,d8e as eu,R8e as ev,Y8e as ew,NRe as ex,Z8e as ey,b8e as ez,qN as f,iG as f$,hB as f0,nOe as f1,hC as f2,Sye as f3,dOe as f4,i9e as f5,r9e as f6,oOe as f7,xye as f8,aOe as f9,gOe as fA,NOe as fB,fOe as fC,zOe as fD,UOe as fE,ZOe as fF,Hwe as fG,e9e as fH,n9e as fI,t9e as fJ,pye as fK,OMe as fL,FD as fM,PR as fN,mn as fO,Aye as fP,zg as fQ,bu as fR,DOe as fS,LOe as fT,FOe as fU,BOe as fV,s9e as fW,$Oe as fX,yOe as fY,TB as fZ,rz as f_,PB as fa,qF as fb,$m as fc,JIe as fd,Fa as fe,c9e as ff,Y9e as fg,p$ as fh,wye as fi,a9e as fj,l9e as fk,eOe as fl,IOe as fm,OOe as fn,VRe as fo,x1 as fp,Je as fq,MOe as fr,sOe as fs,Pye as ft,rOe as fu,XOe as fv,uOe as fw,cOe as fx,pOe as fy,hOe as fz,t7 as g,J8e as g$,At as g0,uRe as g1,kRe as g2,ARe as g3,W8e as g4,vRe as g5,RRe as g6,Y0e as g7,B8e as g8,iRe as g9,U8e as gA,DT as gB,vwe as gC,X8e as gD,cRe as gE,lRe as gF,oRe as gG,A8e as gH,k8e as gI,$Re as gJ,rMe as gK,nMe as gL,yRe as gM,fRe as gN,dRe as gO,G0e as gP,q8e as gQ,F8e as gR,CRe as gS,xRe as gT,gRe as gU,hRe as gV,pRe as gW,DRe as gX,SRe as gY,LRe as gZ,eRe as g_,qh as ga,tRe as gb,z8e as gc,Fb as gd,rRe as ge,L8e as gf,nRe as gg,$8e as gh,V8e as gi,T8e as gj,E8e as gk,C8e as gl,PRe as gm,X7 as gn,_D as go,$f as gp,Xne as gq,I8e as gr,O8e as gs,M8e as gt,TRe as gu,H8e as gv,G8e as gw,Zne as gx,ERe as gy,K0e as gz,zi as h,D8e as h0,N8e as h1,MRe as h2,P8e as h3,K8e as h4,W0e as h5,V0e as h6,H0e as h7,q0e as h8,RMe as h9,jB as ha,sIe as hb,J as hc,$T as hd,z9e as he,U9e as hf,dte as hg,F0e as hh,MO as hi,NMe as hj,AU as hk,WMe as hl,HMe as hm,jMe as hn,qMe as ho,aa as hp,VMe as hq,MMe as hr,aEe as hs,J3e as ht,YMe as hu,JMe as hv,eNe as hw,iee as i,A_ as j,_m as k,s5 as l,GN as m,f5 as n,N7 as o,oh as p,WN as q,VW as r,ute as s,Sm as t,M as u,Z as v,as as w,hr as x,mf as y,oi as z}; diff --git a/invokeai/frontend/web/dist/assets/menu-3d10c968.js b/invokeai/frontend/web/dist/assets/menu-3d10c968.js deleted file mode 100644 index abaabc97a1..0000000000 --- a/invokeai/frontend/web/dist/assets/menu-3d10c968.js +++ /dev/null @@ -1 +0,0 @@ -import{w as p,x as d,Z,aD as xe,hc as We,R as De,L as j,a0 as q,J as z,M as R,W as _e,V as Be,U as Ce,T as Ge,Q as Ue,hd as Ve,he as Ze,a4 as A,h1 as B,h9 as qe,h3 as Xe}from"./index-08cda350.js";function Je(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function M(e={}){const{name:t,strict:r=!0,hookName:o="useContext",providerName:a="Provider",errorMessage:n,defaultValue:s}=e,i=p.createContext(s);i.displayName=t;function l(){var c;const u=p.useContext(i);if(!u&&r){const f=new Error(n??Je(o,a));throw f.name="ContextError",(c=Error.captureStackTrace)==null||c.call(Error,f,l),f}return u}return[i.Provider,l,i]}var[Ke,Qe]=M({strict:!1,name:"PortalManagerContext"});function Ye(e){const{children:t,zIndex:r}=e;return d.jsx(Ke,{value:{zIndex:r},children:t})}Ye.displayName="PortalManager";var[ke,et]=M({strict:!1,name:"PortalContext"}),J="chakra-portal",tt=".chakra-portal",rt=e=>d.jsx("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),nt=e=>{const{appendToParentPortal:t,children:r}=e,[o,a]=p.useState(null),n=p.useRef(null),[,s]=p.useState({});p.useEffect(()=>s({}),[]);const i=et(),l=Qe();Z(()=>{if(!o)return;const u=o.ownerDocument,f=t?i??u.body:u.body;if(!f)return;n.current=u.createElement("div"),n.current.className=J,f.appendChild(n.current),s({});const y=n.current;return()=>{f.contains(y)&&f.removeChild(y)}},[o]);const c=l!=null&&l.zIndex?d.jsx(rt,{zIndex:l==null?void 0:l.zIndex,children:r}):r;return n.current?xe.createPortal(d.jsx(ke,{value:n.current,children:c}),n.current):d.jsx("span",{ref:u=>{u&&a(u)}})},ot=e=>{const{children:t,containerRef:r,appendToParentPortal:o}=e,a=r.current,n=a??(typeof window<"u"?document.body:void 0),s=p.useMemo(()=>{const l=a==null?void 0:a.ownerDocument.createElement("div");return l&&(l.className=J),l},[a]),[,i]=p.useState({});return Z(()=>i({}),[]),Z(()=>{if(!(!s||!n))return n.appendChild(s),()=>{n.removeChild(s)}},[s,n]),n&&s?xe.createPortal(d.jsx(ke,{value:o?s:null,children:t}),s):null};function G(e){const t={appendToParentPortal:!0,...e},{containerRef:r,...o}=t;return r?d.jsx(ot,{containerRef:r,...o}):d.jsx(nt,{...o})}G.className=J;G.selector=tt;G.displayName="Portal";function m(e,t={}){let r=!1;function o(){if(!r){r=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function a(...u){o();for(const f of u)t[f]=l(f);return m(e,t)}function n(...u){for(const f of u)f in t||(t[f]=l(f));return m(e,t)}function s(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.selector]))}function i(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.className]))}function l(u){const g=`chakra-${(["container","root"].includes(u??"")?[e]:[e,u]).filter(Boolean).join("__")}`;return{className:g,selector:`.${g}`,toString:()=>u}}return{parts:a,toPart:l,extend:n,selectors:s,classnames:i,get keys(){return Object.keys(t)},__type:{}}}var Or=m("accordion").parts("root","container","button","panel").extend("icon"),zr=m("alert").parts("title","description","container").extend("icon","spinner"),Rr=m("avatar").parts("label","badge","container").extend("excessLabel","group"),Mr=m("breadcrumb").parts("link","item","container").extend("separator");m("button").parts();var Lr=m("checkbox").parts("control","icon","container").extend("label");m("progress").parts("track","filledTrack").extend("label");var Fr=m("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Hr=m("editable").parts("preview","input","textarea"),Wr=m("form").parts("container","requiredIndicator","helperText"),Dr=m("formError").parts("text","icon"),Br=m("input").parts("addon","field","element","group"),Gr=m("list").parts("container","item","icon"),at=m("menu").parts("button","list","item").extend("groupTitle","icon","command","divider"),Ur=m("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Vr=m("numberinput").parts("root","field","stepperGroup","stepper");m("pininput").parts("field");var Zr=m("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),qr=m("progress").parts("label","filledTrack","track"),Xr=m("radio").parts("container","control","label"),Jr=m("select").parts("field","icon"),Kr=m("slider").parts("container","track","thumb","filledTrack","mark"),Qr=m("stat").parts("container","label","helpText","number","icon"),Yr=m("switch").parts("container","track","thumb"),en=m("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),tn=m("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),rn=m("tag").parts("container","label","closeButton"),nn=m("card").parts("container","header","body","footer");function P(e,t){return r=>r.colorMode==="dark"?t:e}function on(e){const{orientation:t,vertical:r,horizontal:o}=e;return t?t==="vertical"?r:o:{}}var st=(e,t)=>e.find(r=>r.id===t);function re(e,t){const r=we(e,t),o=r?e[r].findIndex(a=>a.id===t):-1;return{position:r,index:o}}function we(e,t){for(const[r,o]of Object.entries(e))if(st(o,t))return r}function it(e){const t=e.includes("right"),r=e.includes("left");let o="center";return t&&(o="flex-end"),r&&(o="flex-start"),{display:"flex",flexDirection:"column",alignItems:o}}function lt(e){const r=e==="top"||e==="bottom"?"0 auto":void 0,o=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,a=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,n=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",s=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:"var(--toast-z-index, 5500)",pointerEvents:"none",display:"flex",flexDirection:"column",margin:r,top:o,bottom:a,right:n,left:s}}function ct(e,t=[]){const r=p.useRef(e);return p.useEffect(()=>{r.current=e}),p.useCallback((...o)=>{var a;return(a=r.current)==null?void 0:a.call(r,...o)},t)}function ut(e,t){const r=ct(e);p.useEffect(()=>{if(t==null)return;let o=null;return o=window.setTimeout(()=>{r()},t),()=>{o&&window.clearTimeout(o)}},[t,r])}function ne(e,t){const r=p.useRef(!1),o=p.useRef(!1);p.useEffect(()=>{if(r.current&&o.current)return e();o.current=!0},t),p.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[])}var dt={initial:e=>{const{position:t}=e,r=["top","bottom"].includes(t)?"y":"x";let o=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(o=1),{opacity:0,[r]:o*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]}}},Pe=p.memo(e=>{const{id:t,message:r,onCloseComplete:o,onRequestRemove:a,requestClose:n=!1,position:s="bottom",duration:i=5e3,containerStyle:l,motionVariants:c=dt,toastSpacing:u="0.5rem"}=e,[f,y]=p.useState(i),g=We();ne(()=>{g||o==null||o()},[g]),ne(()=>{y(i)},[i]);const h=()=>y(null),$=()=>y(i),S=()=>{g&&a()};p.useEffect(()=>{g&&n&&a()},[g,n,a]),ut(S,f);const H=p.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:u,...l}),[l,u]),N=p.useMemo(()=>it(s),[s]);return d.jsx(De.div,{layout:!0,className:"chakra-toast",variants:c,initial:"initial",animate:"animate",exit:"exit",onHoverStart:h,onHoverEnd:$,custom:{position:s},style:N,children:d.jsx(j.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:H,children:q(r,{id:t,onClose:S})})})});Pe.displayName="ToastComponent";function ft(e,t){var r;const o=e??"bottom",n={"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"}}[o];return(r=n==null?void 0:n[t])!=null?r:o}var oe={path:d.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("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"}),d.jsx("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),d.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},L=z((e,t)=>{const{as:r,viewBox:o,color:a="currentColor",focusable:n=!1,children:s,className:i,__css:l,...c}=e,u=R("chakra-icon",i),f=_e("Icon",e),y={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:a,...l,...f},g={ref:t,focusable:n,className:u,__css:y},h=o??oe.viewBox;if(r&&typeof r!="string")return d.jsx(j.svg,{as:r,...g,...c});const $=s??oe.path;return d.jsx(j.svg,{verticalAlign:"middle",viewBox:h,...g,...c,children:$})});L.displayName="Icon";function pt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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 mt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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 ae(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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[gt,K]=M({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[bt,Q]=M({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),Ae={info:{icon:mt,colorScheme:"blue"},warning:{icon:ae,colorScheme:"orange"},success:{icon:pt,colorScheme:"green"},error:{icon:ae,colorScheme:"red"},loading:{icon:Be,colorScheme:"blue"}};function yt(e){return Ae[e].colorScheme}function vt(e){return Ae[e].icon}var je=z(function(t,r){const o=Q(),{status:a}=K(),n={display:"inline",...o.description};return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__desc",t.className),__css:n})});je.displayName="AlertDescription";function Ee(e){const{status:t}=K(),r=vt(t),o=Q(),a=t==="loading"?o.spinner:o.icon;return d.jsx(j.span,{display:"inherit","data-status":t,...e,className:R("chakra-alert__icon",e.className),__css:a,children:e.children||d.jsx(r,{h:"100%",w:"100%"})})}Ee.displayName="AlertIcon";var Ne=z(function(t,r){const o=Q(),{status:a}=K();return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__title",t.className),__css:o.title})});Ne.displayName="AlertTitle";var $e=z(function(t,r){var o;const{status:a="info",addRole:n=!0,...s}=Ce(t),i=(o=t.colorScheme)!=null?o:yt(a),l=Ge("Alert",{...t,colorScheme:i}),c={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...l.container};return d.jsx(gt,{value:{status:a},children:d.jsx(bt,{value:l,children:d.jsx(j.div,{"data-status":a,role:n?"alert":void 0,ref:r,...s,className:R("chakra-alert",t.className),__css:c})})})});$e.displayName="Alert";function ht(e){return d.jsx(L,{focusable:"false","aria-hidden":!0,...e,children:d.jsx("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 Te=z(function(t,r){const o=_e("CloseButton",t),{children:a,isDisabled:n,__css:s,...i}=Ce(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return d.jsx(j.button,{type:"button","aria-label":"Close",ref:r,disabled:n,__css:{...l,...o,...s},...i,children:a||d.jsx(ht,{width:"1em",height:"1em"})})});Te.displayName="CloseButton";var St={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},C=xt(St);function xt(e){let t=e;const r=new Set,o=a=>{t=a(t),r.forEach(n=>n())};return{getState:()=>t,subscribe:a=>(r.add(a),()=>{o(()=>e),r.delete(a)}),removeToast:(a,n)=>{o(s=>({...s,[n]:s[n].filter(i=>i.id!=a)}))},notify:(a,n)=>{const s=_t(a,n),{position:i,id:l}=s;return o(c=>{var u,f;const g=i.includes("top")?[s,...(u=c[i])!=null?u:[]]:[...(f=c[i])!=null?f:[],s];return{...c,[i]:g}}),l},update:(a,n)=>{a&&o(s=>{const i={...s},{position:l,index:c}=re(i,a);return l&&c!==-1&&(i[l][c]={...i[l][c],...n,message:Ie(n)}),i})},closeAll:({positions:a}={})=>{o(n=>(a??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,c)=>(l[c]=n[c].map(u=>({...u,requestClose:!0})),l),{...n}))},close:a=>{o(n=>{const s=we(n,a);return s?{...n,[s]:n[s].map(i=>i.id==a?{...i,requestClose:!0}:i)}:n})},isActive:a=>!!re(C.getState(),a).position}}var se=0;function _t(e,t={}){var r,o;se+=1;const a=(r=t.id)!=null?r:se,n=(o=t.position)!=null?o:"bottom";return{id:a,message:e,position:n,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>C.removeToast(String(a),n),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var Ct=e=>{const{status:t,variant:r="solid",id:o,title:a,isClosable:n,onClose:s,description:i,colorScheme:l,icon:c}=e,u=o?{root:`toast-${o}`,title:`toast-${o}-title`,description:`toast-${o}-description`}:void 0;return d.jsxs($e,{addRole:!1,status:t,variant:r,id:u==null?void 0:u.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto",colorScheme:l,children:[d.jsx(Ee,{children:c}),d.jsxs(j.div,{flex:"1",maxWidth:"100%",children:[a&&d.jsx(Ne,{id:u==null?void 0:u.title,children:a}),i&&d.jsx(je,{id:u==null?void 0:u.description,display:"block",children:i})]}),n&&d.jsx(Te,{size:"sm",onClick:s,position:"absolute",insetEnd:1,top:1})]})};function Ie(e={}){const{render:t,toastComponent:r=Ct}=e;return a=>typeof t=="function"?t({...a,...e}):d.jsx(r,{...a,...e})}function an(e,t){const r=a=>{var n;return{...t,...a,position:ft((n=a==null?void 0:a.position)!=null?n:t==null?void 0:t.position,e)}},o=a=>{const n=r(a),s=Ie(n);return C.notify(s,n)};return o.update=(a,n)=>{C.update(a,r(n))},o.promise=(a,n)=>{const s=o({...n.loading,status:"loading",duration:null});a.then(i=>o.update(s,{status:"success",duration:5e3,...q(n.success,i)})).catch(i=>o.update(s,{status:"error",duration:5e3,...q(n.error,i)}))},o.closeAll=C.closeAll,o.close=C.close,o.isActive=C.isActive,o}var[sn,ln]=M({name:"ToastOptionsContext",strict:!1}),cn=e=>{const t=p.useSyncExternalStore(C.subscribe,C.getState,C.getState),{motionVariants:r,component:o=Pe,portalProps:a}=e,s=Object.keys(t).map(i=>{const l=t[i];return d.jsx("div",{role:"region","aria-live":"polite","aria-label":"Notifications",id:`chakra-toast-manager-${i}`,style:lt(i),children:d.jsx(Ue,{initial:!1,children:l.map(c=>d.jsx(o,{motionVariants:r,...c},c.id))})},i)});return d.jsx(G,{...a,children:s})};function kt(){if(console&&console.warn){for(var e=arguments.length,t=new Array(e),r=0;r()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}};function le(e,t,r){e.loadNamespaces(t,Oe(e,r))}function ce(e,t,r,o){typeof r=="string"&&(r=[r]),r.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(t,Oe(e,o))}function wt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const o=t.languages[0],a=t.options?t.options.fallbackLng:!1,n=t.languages[t.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const s=(i,l)=>{const c=t.services.backendConnector.state[`${i}|${l}`];return c===-1||c===2};return r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!s(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(o,e)&&(!a||s(n,e)))}function Pt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return!t.languages||!t.languages.length?(X("i18n.languages were undefined or empty",t.languages),!0):t.options.ignoreJSONStructure!==void 0?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(a,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!n(a.isLanguageChangingTo,e))return!1}}):wt(e,t,r)}const At=p.createContext();class jt{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Et=(e,t)=>{const r=p.useRef();return p.useEffect(()=>{r.current=t?r.current:e},[e,t]),r.current};function un(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{i18n:r}=t,{i18n:o,defaultNS:a}=p.useContext(At)||{},n=r||o||Ze();if(n&&!n.reportNamespaces&&(n.reportNamespaces=new jt),!n){X("You will need to pass in an i18next instance by using initReactI18next");const v=(w,x)=>typeof x=="string"?x:x&&typeof x=="object"&&typeof x.defaultValue=="string"?x.defaultValue:Array.isArray(w)?w[w.length-1]:w,k=[v,{},!1];return k.t=v,k.i18n={},k.ready=!1,k}n.options.react&&n.options.react.wait!==void 0&&X("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...Ve(),...n.options.react,...t},{useSuspense:i,keyPrefix:l}=s;let c=e||a||n.options&&n.options.defaultNS;c=typeof c=="string"?[c]:c||["translation"],n.reportNamespaces.addUsedNamespaces&&n.reportNamespaces.addUsedNamespaces(c);const u=(n.isInitialized||n.initializedStoreOnce)&&c.every(v=>Pt(v,n,s));function f(){return n.getFixedT(t.lng||null,s.nsMode==="fallback"?c:c[0],l)}const[y,g]=p.useState(f);let h=c.join();t.lng&&(h=`${t.lng}${h}`);const $=Et(h),S=p.useRef(!0);p.useEffect(()=>{const{bindI18n:v,bindI18nStore:k}=s;S.current=!0,!u&&!i&&(t.lng?ce(n,t.lng,c,()=>{S.current&&g(f)}):le(n,c,()=>{S.current&&g(f)})),u&&$&&$!==h&&S.current&&g(f);function w(){S.current&&g(f)}return v&&n&&n.on(v,w),k&&n&&n.store.on(k,w),()=>{S.current=!1,v&&n&&v.split(" ").forEach(x=>n.off(x,w)),k&&n&&k.split(" ").forEach(x=>n.store.off(x,w))}},[n,h]);const H=p.useRef(!0);p.useEffect(()=>{S.current&&!H.current&&g(f),H.current=!1},[n,l]);const N=[y,n,u];if(N.t=y,N.i18n=n,N.ready=u,u||!u&&!i)return N;throw new Promise(v=>{t.lng?ce(n,t.lng,c,()=>v()):le(n,c,()=>v())})}const Nt={dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};function $t(e){return()=>({fontFamily:e.fontFamily||"sans-serif"})}var Tt=Object.defineProperty,ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,de=(e,t,r)=>t in e?Tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fe=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&de(e,r,t[r]);if(ue)for(var r of ue(t))Ot.call(t,r)&&de(e,r,t[r]);return e};function zt(e){return t=>({WebkitTapHighlightColor:"transparent",[t||"&:focus"]:fe({},e.focusRing==="always"||e.focusRing==="auto"?e.focusRingStyles.styles(e):e.focusRingStyles.resetStyles(e)),[t?t.replace(":focus",":focus:not(:focus-visible)"):"&:focus:not(:focus-visible)"]:fe({},e.focusRing==="auto"||e.focusRing==="never"?e.focusRingStyles.resetStyles(e):null)})}function F(e){return t=>typeof e.primaryShade=="number"?e.primaryShade:e.primaryShade[t||e.colorScheme]}function Y(e){const t=F(e);return(r,o,a=!0,n=!0)=>{if(typeof r=="string"&&r.includes(".")){const[i,l]=r.split("."),c=parseInt(l,10);if(i in e.colors&&c>=0&&c<10)return e.colors[i][typeof o=="number"&&!n?o:c]}const s=typeof o=="number"?o:t();return r in e.colors?e.colors[r][s]:a?e.colors[e.primaryColor][s]:r}}function ze(e){let t="";for(let r=1;r{const a={from:(o==null?void 0:o.from)||e.defaultGradient.from,to:(o==null?void 0:o.to)||e.defaultGradient.to,deg:(o==null?void 0:o.deg)||e.defaultGradient.deg};return`linear-gradient(${a.deg}deg, ${t(a.from,r(),!1)} 0%, ${t(a.to,r(),!1)} 100%)`}}function Me(e){return t=>{if(typeof t=="number")return`${t/16}${e}`;if(typeof t=="string"){const r=t.replace("px","");if(!Number.isNaN(Number(r)))return`${Number(r)/16}${e}`}return t}}const E=Me("rem"),U=Me("em");function Le({size:e,sizes:t,units:r}){return e in t?t[e]:typeof e=="number"?r==="em"?U(e):E(e):e||t.md}function W(e){return typeof e=="number"?e:typeof e=="string"&&e.includes("rem")?Number(e.replace("rem",""))*16:typeof e=="string"&&e.includes("em")?Number(e.replace("em",""))*16:Number(e)}function Lt(e){return t=>`@media (min-width: ${U(W(Le({size:t,sizes:e.breakpoints})))})`}function Ft(e){return t=>`@media (max-width: ${U(W(Le({size:t,sizes:e.breakpoints}))-1)})`}function Ht(e){return/^#?([0-9A-F]{3}){1,2}$/i.test(e)}function Wt(e){let t=e.replace("#","");if(t.length===3){const s=t.split("");t=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}const r=parseInt(t,16),o=r>>16&255,a=r>>8&255,n=r&255;return{r:o,g:a,b:n,a:1}}function Dt(e){const[t,r,o,a]=e.replace(/[^0-9,.]/g,"").split(",").map(Number);return{r:t,g:r,b:o,a:a||1}}function ee(e){return Ht(e)?Wt(e):e.startsWith("rgb")?Dt(e):{r:0,g:0,b:0,a:1}}function T(e,t){if(typeof e!="string"||t>1||t<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(--"))return e;const{r,g:o,b:a}=ee(e);return`rgba(${r}, ${o}, ${a}, ${t})`}function Bt(e=0){return{position:"absolute",top:E(e),right:E(e),left:E(e),bottom:E(e)}}function Gt(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=1-t,i=l=>Math.round(l*s);return`rgba(${i(r)}, ${i(o)}, ${i(a)}, ${n})`}function Ut(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=i=>Math.round(i+(255-i)*t);return`rgba(${s(r)}, ${s(o)}, ${s(a)}, ${n})`}function Vt(e){return t=>{if(typeof t=="number")return E(t);const r=typeof e.defaultRadius=="number"?e.defaultRadius:e.radius[e.defaultRadius]||e.defaultRadius;return e.radius[t]||t||r}}function Zt(e,t){if(typeof e=="string"&&e.includes(".")){const[r,o]=e.split("."),a=parseInt(o,10);if(r in t.colors&&a>=0&&a<10)return{isSplittedColor:!0,key:r,shade:a}}return{isSplittedColor:!1}}function qt(e){const t=Y(e),r=F(e),o=Re(e);return({variant:a,color:n,gradient:s,primaryFallback:i})=>{const l=Zt(n,e);switch(a){case"light":return{border:"transparent",background:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1),color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?7:1,i,!1),e.colorScheme==="dark"?.25:.65)};case"subtle":return{border:"transparent",background:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1)};case"outline":return{border:t(n,e.colorScheme==="dark"?5:r("light")),background:"transparent",color:t(n,e.colorScheme==="dark"?5:r("light")),hover:e.colorScheme==="dark"?T(t(n,5,i,!1),.05):T(t(n,0,i,!1),.35)};case"default":return{border:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4],background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,color:e.colorScheme==="dark"?e.white:e.black,hover:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]};case"white":return{border:"transparent",background:e.white,color:t(n,r()),hover:null};case"transparent":return{border:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),background:"transparent",hover:null};case"gradient":return{background:o(s),color:e.white,border:"transparent",hover:null};default:{const c=r(),u=l.isSplittedColor?l.shade:c,f=l.isSplittedColor?l.key:n;return{border:"transparent",background:t(f,u,i),color:e.white,hover:t(f,u===9?8:u+1)}}}}}function Xt(e){return t=>{const r=F(e)(t);return e.colors[e.primaryColor][r]}}function Jt(e){return{"@media (hover: hover)":{"&:hover":e},"@media (hover: none)":{"&:active":e}}}function Kt(e){return()=>({userSelect:"none",color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]})}function Qt(e){return()=>e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]}const b={fontStyles:$t,themeColor:Y,focusStyles:zt,linearGradient:Rt,radialGradient:Mt,smallerThan:Ft,largerThan:Lt,rgba:T,cover:Bt,darken:Gt,lighten:Ut,radius:Vt,variant:qt,primaryShade:F,hover:Jt,gradient:Re,primaryColor:Xt,placeholderStyles:Kt,dimmed:Qt};var Yt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,me=(e,t,r)=>t in e?Yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,or=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&me(e,r,t[r]);if(pe)for(var r of pe(t))nr.call(t,r)&&me(e,r,t[r]);return e},ar=(e,t)=>er(e,tr(t));function Fe(e){return ar(or({},e),{fn:{fontStyles:b.fontStyles(e),themeColor:b.themeColor(e),focusStyles:b.focusStyles(e),largerThan:b.largerThan(e),smallerThan:b.smallerThan(e),radialGradient:b.radialGradient,linearGradient:b.linearGradient,gradient:b.gradient(e),rgba:b.rgba,cover:b.cover,lighten:b.lighten,darken:b.darken,primaryShade:b.primaryShade(e),radius:b.radius(e),variant:b.variant(e),hover:b.hover,primaryColor:b.primaryColor(e),placeholderStyles:b.placeholderStyles(e),dimmed:b.dimmed(e)}})}const sr={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:Nt,lineHeight:1.55,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",primaryColor:"blue",respectReducedMotion:!0,cursorType:"default",defaultGradient:{from:"indigo",to:"cyan",deg:45},shadows:{xs:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.1)",sm:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 0.625rem 0.9375rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.4375rem 0.4375rem -0.3125rem",md:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.25rem 1.5625rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.625rem 0.625rem -0.3125rem",lg:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.75rem 1.4375rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 0.75rem 0.75rem -0.4375rem",xl:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 2.25rem 1.75rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 1.0625rem 1.0625rem -0.4375rem"},fontSizes:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem"},radius:{xs:"0.125rem",sm:"0.25rem",md:"0.5rem",lg:"1rem",xl:"2rem"},spacing:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},headings:{fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontWeight:700,sizes:{h1:{fontSize:"2.125rem",lineHeight:1.3,fontWeight:void 0},h2:{fontSize:"1.625rem",lineHeight:1.35,fontWeight:void 0},h3:{fontSize:"1.375rem",lineHeight:1.4,fontWeight:void 0},h4:{fontSize:"1.125rem",lineHeight:1.45,fontWeight:void 0},h5:{fontSize:"1rem",lineHeight:1.5,fontWeight:void 0},h6:{fontSize:"0.875rem",lineHeight:1.5,fontWeight:void 0}}},other:{},components:{},activeStyles:{transform:"translateY(0.0625rem)"},datesLocale:"en",globalStyles:void 0,focusRingStyles:{styles:e=>({outlineOffset:"0.125rem",outline:`0.125rem solid ${e.colors[e.primaryColor][e.colorScheme==="dark"?7:5]}`}),resetStyles:()=>({outline:"none"}),inputStyles:e=>({outline:"none",borderColor:e.colors[e.primaryColor][typeof e.primaryShade=="object"?e.primaryShade[e.colorScheme]:e.primaryShade]})}},te=Fe(sr);var ir=Object.defineProperty,lr=Object.defineProperties,cr=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,ur=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable,be=(e,t,r)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fr=(e,t)=>{for(var r in t||(t={}))ur.call(t,r)&&be(e,r,t[r]);if(ge)for(var r of ge(t))dr.call(t,r)&&be(e,r,t[r]);return e},pr=(e,t)=>lr(e,cr(t));function mr({theme:e}){return A.createElement(B,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:e.colorScheme==="dark"?"dark":"light"},body:pr(fr({},e.fn.fontStyles()),{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.white,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,lineHeight:e.lineHeight,fontSize:e.fontSizes.md,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"})}})}function I(e,t,r,o=E){Object.keys(t).forEach(a=>{e[`--mantine-${r}-${a}`]=o(t[a])})}function gr({theme:e}){const t={"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-transition-timing-function":e.transitionTimingFunction,"--mantine-line-height":`${e.lineHeight}`,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":`${e.headings.fontWeight}`};I(t,e.shadows,"shadow"),I(t,e.fontSizes,"font-size"),I(t,e.radius,"radius"),I(t,e.spacing,"spacing"),I(t,e.breakpoints,"breakpoints",U),Object.keys(e.colors).forEach(o=>{e.colors[o].forEach((a,n)=>{t[`--mantine-color-${o}-${n}`]=a})});const r=e.headings.sizes;return Object.keys(r).forEach(o=>{t[`--mantine-${o}-font-size`]=r[o].fontSize,t[`--mantine-${o}-line-height`]=`${r[o].lineHeight}`}),A.createElement(B,{styles:{":root":t}})}var br=Object.defineProperty,yr=Object.defineProperties,vr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,hr=Object.prototype.hasOwnProperty,Sr=Object.prototype.propertyIsEnumerable,ve=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,_=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&ve(e,r,t[r]);if(ye)for(var r of ye(t))Sr.call(t,r)&&ve(e,r,t[r]);return e},V=(e,t)=>yr(e,vr(t));function xr(e,t){var r;if(!t)return e;const o=Object.keys(e).reduce((a,n)=>{if(n==="headings"&&t.headings){const s=t.headings.sizes?Object.keys(e.headings.sizes).reduce((i,l)=>(i[l]=_(_({},e.headings.sizes[l]),t.headings.sizes[l]),i),{}):e.headings.sizes;return V(_({},a),{headings:V(_(_({},e.headings),t.headings),{sizes:s})})}if(n==="breakpoints"&&t.breakpoints){const s=_(_({},e.breakpoints),t.breakpoints);return V(_({},a),{breakpoints:Object.fromEntries(Object.entries(s).sort((i,l)=>W(i[1])-W(l[1])))})}return a[n]=typeof t[n]=="object"?_(_({},e[n]),t[n]):typeof t[n]=="number"||typeof t[n]=="boolean"||typeof t[n]=="function"?t[n]:t[n]||e[n],a},{});if(t!=null&&t.fontFamily&&!((r=t==null?void 0:t.headings)!=null&&r.fontFamily)&&(o.headings.fontFamily=t.fontFamily),!(o.primaryColor in o.colors))throw new Error("MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color");return o}function _r(e,t){return Fe(xr(e,t))}function Cr(e){return Object.keys(e).reduce((t,r)=>(e[r]!==void 0&&(t[r]=e[r]),t),{})}const kr={html:{fontFamily:"sans-serif",lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:0},"article, aside, footer, header, nav, section, figcaption, figure, main":{display:"block"},h1:{fontSize:"2em"},hr:{boxSizing:"content-box",height:0,overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{background:"transparent",textDecorationSkip:"objects"},"a:active, a:hover":{outlineWidth:0},"abbr[title]":{borderBottom:"none",textDecoration:"underline"},"b, strong":{fontWeight:"bolder"},"code, kbp, samp":{fontFamily:"monospace, monospace",fontSize:"1em"},dfn:{fontStyle:"italic"},mark:{backgroundColor:"#ff0",color:"#000"},small:{fontSize:"80%"},"sub, sup":{fontSize:"75%",lineHeight:0,position:"relative",verticalAlign:"baseline"},sup:{top:"-0.5em"},sub:{bottom:"-0.25em"},"audio, video":{display:"inline-block"},"audio:not([controls])":{display:"none",height:0},img:{borderStyle:"none",verticalAlign:"middle"},"svg:not(:root)":{overflow:"hidden"},"button, input, optgroup, select, textarea":{fontFamily:"sans-serif",fontSize:"100%",lineHeight:"1.15",margin:0},"button, input":{overflow:"visible"},"button, select":{textTransform:"none"},"button, [type=reset], [type=submit]":{WebkitAppearance:"button"},"button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner":{borderStyle:"none",padding:0},"button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring":{outline:`${E(1)} dotted ButtonText`},legend:{boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:0,whiteSpace:"normal"},progress:{display:"inline-block",verticalAlign:"baseline"},textarea:{overflow:"auto"},"[type=checkbox], [type=radio]":{boxSizing:"border-box",padding:0},"[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button":{height:"auto"},"[type=search]":{appearance:"none"},"[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration":{appearance:"none"},"::-webkit-file-upload-button":{appearance:"button",font:"inherit"},"details, menu":{display:"block"},summary:{display:"list-item"},canvas:{display:"inline-block"},template:{display:"none"}};function wr(){return A.createElement(B,{styles:kr})}var Pr=Object.defineProperty,he=Object.getOwnPropertySymbols,Ar=Object.prototype.hasOwnProperty,jr=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&Se(e,r,t[r]);if(he)for(var r of he(t))jr.call(t,r)&&Se(e,r,t[r]);return e};const D=p.createContext({theme:te});function He(){var e;return((e=p.useContext(D))==null?void 0:e.theme)||te}function dn(e){const t=He(),r=o=>{var a,n,s,i;return{styles:((a=t.components[o])==null?void 0:a.styles)||{},classNames:((n=t.components[o])==null?void 0:n.classNames)||{},variants:(s=t.components[o])==null?void 0:s.variants,sizes:(i=t.components[o])==null?void 0:i.sizes}};return Array.isArray(e)?e.map(r):[r(e)]}function fn(){var e;return(e=p.useContext(D))==null?void 0:e.emotionCache}function pn(e,t,r){var o;const a=He(),n=(o=a.components[e])==null?void 0:o.defaultProps,s=typeof n=="function"?n(a):n;return O(O(O({},t),s),Cr(r))}function Er({theme:e,emotionCache:t,withNormalizeCSS:r=!1,withGlobalStyles:o=!1,withCSSVariables:a=!1,inherit:n=!1,children:s}){const i=p.useContext(D),l=_r(te,n?O(O({},i.theme),e):e);return A.createElement(qe,{theme:l},A.createElement(D.Provider,{value:{theme:l,emotionCache:t}},r&&A.createElement(wr,null),o&&A.createElement(mr,{theme:l}),a&&A.createElement(gr,{theme:l}),typeof l.globalStyles=="function"&&A.createElement(B,{styles:l.globalStyles(l)}),s))}Er.displayName="@mantine/core/MantineProvider";const{definePartsStyle:Nr,defineMultiStyleConfig:$r}=Xe(at.keys),Tr=Nr(e=>({button:{fontWeight:500,bg:P("base.300","base.500")(e),color:P("base.900","base.100")(e),_hover:{bg:P("base.400","base.600")(e),color:P("base.900","base.50")(e),fontWeight:600}},list:{zIndex:9999,color:P("base.900","base.150")(e),bg:P("base.200","base.800")(e),shadow:"dark-lg",border:"none"},item:{fontSize:"sm",bg:P("base.200","base.800")(e),_hover:{bg:P("base.300","base.700")(e),svg:{opacity:1}},_focus:{bg:P("base.400","base.600")(e)},svg:{opacity:.7,fontSize:14}}})),mn=$r({variants:{invokeAI:Tr},defaultProps:{variant:"invokeAI"}}),gn={variants:{enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.07,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.07,easings:"easeOut"}}}};export{on as A,Qr as B,Te as C,Gr as D,at as E,Ur as F,Vr as G,Zr as H,L as I,Fr as J,Hr as K,Wr as L,Dr as M,Mr as N,nn as O,G as P,Or as Q,zr as R,Rr as S,Ye as T,sn as U,cn as V,mn as W,Er as X,M as a,ct as b,an as c,ne as d,un as e,fn as f,He as g,dn as h,Cr as i,W as j,Le as k,pn as l,gn as m,P as n,tn as o,rn as p,Br as q,E as r,Yr as s,en as t,ln as u,qr as v,Lr as w,Xr as x,Jr as y,Kr as z}; diff --git a/invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js b/invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js new file mode 100644 index 0000000000..71ceb87707 --- /dev/null +++ b/invokeai/frontend/web/dist/assets/menu-c9cc8c3d.js @@ -0,0 +1 @@ +import{u as p,v as d,Y as Z,aC as xe,hu as We,Q as De,K as j,$ as q,I as z,L as R,V as Ce,U as Be,T as _e,R as Ge,O as Ue,hv as Ve,hw as Ze,a3 as A,hj as B,hr as qe,hl as Xe}from"./index-f6c3f475.js";function Ke(e,t){return`${e} returned \`undefined\`. Seems you forgot to wrap component within ${t}`}function M(e={}){const{name:t,strict:r=!0,hookName:o="useContext",providerName:a="Provider",errorMessage:n,defaultValue:s}=e,i=p.createContext(s);i.displayName=t;function l(){var c;const u=p.useContext(i);if(!u&&r){const f=new Error(n??Ke(o,a));throw f.name="ContextError",(c=Error.captureStackTrace)==null||c.call(Error,f,l),f}return u}return[i.Provider,l,i]}var[Je,Ye]=M({strict:!1,name:"PortalManagerContext"});function Qe(e){const{children:t,zIndex:r}=e;return d.jsx(Je,{value:{zIndex:r},children:t})}Qe.displayName="PortalManager";var[ke,et]=M({strict:!1,name:"PortalContext"}),K="chakra-portal",tt=".chakra-portal",rt=e=>d.jsx("div",{className:"chakra-portal-zIndex",style:{position:"absolute",zIndex:e.zIndex,top:0,left:0,right:0},children:e.children}),nt=e=>{const{appendToParentPortal:t,children:r}=e,[o,a]=p.useState(null),n=p.useRef(null),[,s]=p.useState({});p.useEffect(()=>s({}),[]);const i=et(),l=Ye();Z(()=>{if(!o)return;const u=o.ownerDocument,f=t?i??u.body:u.body;if(!f)return;n.current=u.createElement("div"),n.current.className=K,f.appendChild(n.current),s({});const y=n.current;return()=>{f.contains(y)&&f.removeChild(y)}},[o]);const c=l!=null&&l.zIndex?d.jsx(rt,{zIndex:l==null?void 0:l.zIndex,children:r}):r;return n.current?xe.createPortal(d.jsx(ke,{value:n.current,children:c}),n.current):d.jsx("span",{ref:u=>{u&&a(u)}})},ot=e=>{const{children:t,containerRef:r,appendToParentPortal:o}=e,a=r.current,n=a??(typeof window<"u"?document.body:void 0),s=p.useMemo(()=>{const l=a==null?void 0:a.ownerDocument.createElement("div");return l&&(l.className=K),l},[a]),[,i]=p.useState({});return Z(()=>i({}),[]),Z(()=>{if(!(!s||!n))return n.appendChild(s),()=>{n.removeChild(s)}},[s,n]),n&&s?xe.createPortal(d.jsx(ke,{value:o?s:null,children:t}),s):null};function G(e){const t={appendToParentPortal:!0,...e},{containerRef:r,...o}=t;return r?d.jsx(ot,{containerRef:r,...o}):d.jsx(nt,{...o})}G.className=K;G.selector=tt;G.displayName="Portal";function m(e,t={}){let r=!1;function o(){if(!r){r=!0;return}throw new Error("[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?")}function a(...u){o();for(const f of u)t[f]=l(f);return m(e,t)}function n(...u){for(const f of u)f in t||(t[f]=l(f));return m(e,t)}function s(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.selector]))}function i(){return Object.fromEntries(Object.entries(t).map(([f,y])=>[f,y.className]))}function l(u){const g=`chakra-${(["container","root"].includes(u??"")?[e]:[e,u]).filter(Boolean).join("__")}`;return{className:g,selector:`.${g}`,toString:()=>u}}return{parts:a,toPart:l,extend:n,selectors:s,classnames:i,get keys(){return Object.keys(t)},__type:{}}}var Or=m("accordion").parts("root","container","button","panel").extend("icon"),zr=m("alert").parts("title","description","container").extend("icon","spinner"),Rr=m("avatar").parts("label","badge","container").extend("excessLabel","group"),Mr=m("breadcrumb").parts("link","item","container").extend("separator");m("button").parts();var Lr=m("checkbox").parts("control","icon","container").extend("label");m("progress").parts("track","filledTrack").extend("label");var Fr=m("drawer").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Hr=m("editable").parts("preview","input","textarea"),Wr=m("form").parts("container","requiredIndicator","helperText"),Dr=m("formError").parts("text","icon"),Br=m("input").parts("addon","field","element","group"),Gr=m("list").parts("container","item","icon"),at=m("menu").parts("button","list","item").extend("groupTitle","icon","command","divider"),Ur=m("modal").parts("overlay","dialogContainer","dialog").extend("header","closeButton","body","footer"),Vr=m("numberinput").parts("root","field","stepperGroup","stepper");m("pininput").parts("field");var Zr=m("popover").parts("content","header","body","footer").extend("popper","arrow","closeButton"),qr=m("progress").parts("label","filledTrack","track"),Xr=m("radio").parts("container","control","label"),Kr=m("select").parts("field","icon"),Jr=m("slider").parts("container","track","thumb","filledTrack","mark"),Yr=m("stat").parts("container","label","helpText","number","icon"),Qr=m("switch").parts("container","track","thumb"),en=m("table").parts("table","thead","tbody","tr","th","td","tfoot","caption"),tn=m("tabs").parts("root","tab","tablist","tabpanel","tabpanels","indicator"),rn=m("tag").parts("container","label","closeButton"),nn=m("card").parts("container","header","body","footer");function P(e,t){return r=>r.colorMode==="dark"?t:e}function on(e){const{orientation:t,vertical:r,horizontal:o}=e;return t?t==="vertical"?r:o:{}}var st=(e,t)=>e.find(r=>r.id===t);function re(e,t){const r=we(e,t),o=r?e[r].findIndex(a=>a.id===t):-1;return{position:r,index:o}}function we(e,t){for(const[r,o]of Object.entries(e))if(st(o,t))return r}function it(e){const t=e.includes("right"),r=e.includes("left");let o="center";return t&&(o="flex-end"),r&&(o="flex-start"),{display:"flex",flexDirection:"column",alignItems:o}}function lt(e){const r=e==="top"||e==="bottom"?"0 auto":void 0,o=e.includes("top")?"env(safe-area-inset-top, 0px)":void 0,a=e.includes("bottom")?"env(safe-area-inset-bottom, 0px)":void 0,n=e.includes("left")?void 0:"env(safe-area-inset-right, 0px)",s=e.includes("right")?void 0:"env(safe-area-inset-left, 0px)";return{position:"fixed",zIndex:"var(--toast-z-index, 5500)",pointerEvents:"none",display:"flex",flexDirection:"column",margin:r,top:o,bottom:a,right:n,left:s}}function ct(e,t=[]){const r=p.useRef(e);return p.useEffect(()=>{r.current=e}),p.useCallback((...o)=>{var a;return(a=r.current)==null?void 0:a.call(r,...o)},t)}function ut(e,t){const r=ct(e);p.useEffect(()=>{if(t==null)return;let o=null;return o=window.setTimeout(()=>{r()},t),()=>{o&&window.clearTimeout(o)}},[t,r])}function ne(e,t){const r=p.useRef(!1),o=p.useRef(!1);p.useEffect(()=>{if(r.current&&o.current)return e();o.current=!0},t),p.useEffect(()=>(r.current=!0,()=>{r.current=!1}),[])}var dt={initial:e=>{const{position:t}=e,r=["top","bottom"].includes(t)?"y":"x";let o=["top-right","bottom-right"].includes(t)?1:-1;return t==="bottom"&&(o=1),{opacity:0,[r]:o*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]}}},Pe=p.memo(e=>{const{id:t,message:r,onCloseComplete:o,onRequestRemove:a,requestClose:n=!1,position:s="bottom",duration:i=5e3,containerStyle:l,motionVariants:c=dt,toastSpacing:u="0.5rem"}=e,[f,y]=p.useState(i),g=We();ne(()=>{g||o==null||o()},[g]),ne(()=>{y(i)},[i]);const h=()=>y(null),$=()=>y(i),S=()=>{g&&a()};p.useEffect(()=>{g&&n&&a()},[g,n,a]),ut(S,f);const H=p.useMemo(()=>({pointerEvents:"auto",maxWidth:560,minWidth:300,margin:u,...l}),[l,u]),N=p.useMemo(()=>it(s),[s]);return d.jsx(De.div,{layout:!0,className:"chakra-toast",variants:c,initial:"initial",animate:"animate",exit:"exit",onHoverStart:h,onHoverEnd:$,custom:{position:s},style:N,children:d.jsx(j.div,{role:"status","aria-atomic":"true",className:"chakra-toast__inner",__css:H,children:q(r,{id:t,onClose:S})})})});Pe.displayName="ToastComponent";function ft(e,t){var r;const o=e??"bottom",n={"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"}}[o];return(r=n==null?void 0:n[t])!=null?r:o}var oe={path:d.jsxs("g",{stroke:"currentColor",strokeWidth:"1.5",children:[d.jsx("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"}),d.jsx("path",{fill:"currentColor",strokeLinecap:"round",d:"M12,17.25a.375.375,0,1,0,.375.375A.375.375,0,0,0,12,17.25h0"}),d.jsx("circle",{fill:"none",strokeMiterlimit:"10",cx:"12",cy:"12",r:"11.25"})]}),viewBox:"0 0 24 24"},L=z((e,t)=>{const{as:r,viewBox:o,color:a="currentColor",focusable:n=!1,children:s,className:i,__css:l,...c}=e,u=R("chakra-icon",i),f=Ce("Icon",e),y={w:"1em",h:"1em",display:"inline-block",lineHeight:"1em",flexShrink:0,color:a,...l,...f},g={ref:t,focusable:n,className:u,__css:y},h=o??oe.viewBox;if(r&&typeof r!="string")return d.jsx(j.svg,{as:r,...g,...c});const $=s??oe.path;return d.jsx(j.svg,{verticalAlign:"middle",viewBox:h,...g,...c,children:$})});L.displayName="Icon";function pt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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 mt(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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 ae(e){return d.jsx(L,{viewBox:"0 0 24 24",...e,children:d.jsx("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[gt,J]=M({name:"AlertContext",hookName:"useAlertContext",providerName:""}),[bt,Y]=M({name:"AlertStylesContext",hookName:"useAlertStyles",providerName:""}),Ae={info:{icon:mt,colorScheme:"blue"},warning:{icon:ae,colorScheme:"orange"},success:{icon:pt,colorScheme:"green"},error:{icon:ae,colorScheme:"red"},loading:{icon:Be,colorScheme:"blue"}};function yt(e){return Ae[e].colorScheme}function vt(e){return Ae[e].icon}var je=z(function(t,r){const o=Y(),{status:a}=J(),n={display:"inline",...o.description};return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__desc",t.className),__css:n})});je.displayName="AlertDescription";function Ee(e){const{status:t}=J(),r=vt(t),o=Y(),a=t==="loading"?o.spinner:o.icon;return d.jsx(j.span,{display:"inherit","data-status":t,...e,className:R("chakra-alert__icon",e.className),__css:a,children:e.children||d.jsx(r,{h:"100%",w:"100%"})})}Ee.displayName="AlertIcon";var Ne=z(function(t,r){const o=Y(),{status:a}=J();return d.jsx(j.div,{ref:r,"data-status":a,...t,className:R("chakra-alert__title",t.className),__css:o.title})});Ne.displayName="AlertTitle";var $e=z(function(t,r){var o;const{status:a="info",addRole:n=!0,...s}=_e(t),i=(o=t.colorScheme)!=null?o:yt(a),l=Ge("Alert",{...t,colorScheme:i}),c={width:"100%",display:"flex",alignItems:"center",position:"relative",overflow:"hidden",...l.container};return d.jsx(gt,{value:{status:a},children:d.jsx(bt,{value:l,children:d.jsx(j.div,{"data-status":a,role:n?"alert":void 0,ref:r,...s,className:R("chakra-alert",t.className),__css:c})})})});$e.displayName="Alert";function ht(e){return d.jsx(L,{focusable:"false","aria-hidden":!0,...e,children:d.jsx("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 Te=z(function(t,r){const o=Ce("CloseButton",t),{children:a,isDisabled:n,__css:s,...i}=_e(t),l={outline:0,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0};return d.jsx(j.button,{type:"button","aria-label":"Close",ref:r,disabled:n,__css:{...l,...o,...s},...i,children:a||d.jsx(ht,{width:"1em",height:"1em"})})});Te.displayName="CloseButton";var St={top:[],"top-left":[],"top-right":[],"bottom-left":[],bottom:[],"bottom-right":[]},_=xt(St);function xt(e){let t=e;const r=new Set,o=a=>{t=a(t),r.forEach(n=>n())};return{getState:()=>t,subscribe:a=>(r.add(a),()=>{o(()=>e),r.delete(a)}),removeToast:(a,n)=>{o(s=>({...s,[n]:s[n].filter(i=>i.id!=a)}))},notify:(a,n)=>{const s=Ct(a,n),{position:i,id:l}=s;return o(c=>{var u,f;const g=i.includes("top")?[s,...(u=c[i])!=null?u:[]]:[...(f=c[i])!=null?f:[],s];return{...c,[i]:g}}),l},update:(a,n)=>{a&&o(s=>{const i={...s},{position:l,index:c}=re(i,a);return l&&c!==-1&&(i[l][c]={...i[l][c],...n,message:Ie(n)}),i})},closeAll:({positions:a}={})=>{o(n=>(a??["bottom","bottom-right","bottom-left","top","top-left","top-right"]).reduce((l,c)=>(l[c]=n[c].map(u=>({...u,requestClose:!0})),l),{...n}))},close:a=>{o(n=>{const s=we(n,a);return s?{...n,[s]:n[s].map(i=>i.id==a?{...i,requestClose:!0}:i)}:n})},isActive:a=>!!re(_.getState(),a).position}}var se=0;function Ct(e,t={}){var r,o;se+=1;const a=(r=t.id)!=null?r:se,n=(o=t.position)!=null?o:"bottom";return{id:a,message:e,position:n,duration:t.duration,onCloseComplete:t.onCloseComplete,onRequestRemove:()=>_.removeToast(String(a),n),status:t.status,requestClose:!1,containerStyle:t.containerStyle}}var _t=e=>{const{status:t,variant:r="solid",id:o,title:a,isClosable:n,onClose:s,description:i,colorScheme:l,icon:c}=e,u=o?{root:`toast-${o}`,title:`toast-${o}-title`,description:`toast-${o}-description`}:void 0;return d.jsxs($e,{addRole:!1,status:t,variant:r,id:u==null?void 0:u.root,alignItems:"start",borderRadius:"md",boxShadow:"lg",paddingEnd:8,textAlign:"start",width:"auto",colorScheme:l,children:[d.jsx(Ee,{children:c}),d.jsxs(j.div,{flex:"1",maxWidth:"100%",children:[a&&d.jsx(Ne,{id:u==null?void 0:u.title,children:a}),i&&d.jsx(je,{id:u==null?void 0:u.description,display:"block",children:i})]}),n&&d.jsx(Te,{size:"sm",onClick:s,position:"absolute",insetEnd:1,top:1})]})};function Ie(e={}){const{render:t,toastComponent:r=_t}=e;return a=>typeof t=="function"?t({...a,...e}):d.jsx(r,{...a,...e})}function an(e,t){const r=a=>{var n;return{...t,...a,position:ft((n=a==null?void 0:a.position)!=null?n:t==null?void 0:t.position,e)}},o=a=>{const n=r(a),s=Ie(n);return _.notify(s,n)};return o.update=(a,n)=>{_.update(a,r(n))},o.promise=(a,n)=>{const s=o({...n.loading,status:"loading",duration:null});a.then(i=>o.update(s,{status:"success",duration:5e3,...q(n.success,i)})).catch(i=>o.update(s,{status:"error",duration:5e3,...q(n.error,i)}))},o.closeAll=_.closeAll,o.close=_.close,o.isActive=_.isActive,o}var[sn,ln]=M({name:"ToastOptionsContext",strict:!1}),cn=e=>{const t=p.useSyncExternalStore(_.subscribe,_.getState,_.getState),{motionVariants:r,component:o=Pe,portalProps:a}=e,s=Object.keys(t).map(i=>{const l=t[i];return d.jsx("div",{role:"region","aria-live":"polite","aria-label":"Notifications",id:`chakra-toast-manager-${i}`,style:lt(i),children:d.jsx(Ue,{initial:!1,children:l.map(c=>d.jsx(o,{motionVariants:r,...c},c.id))})},i)});return d.jsx(G,{...a,children:s})};function kt(){if(console&&console.warn){for(var e=arguments.length,t=new Array(e),r=0;r()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}};function le(e,t,r){e.loadNamespaces(t,Oe(e,r))}function ce(e,t,r,o){typeof r=="string"&&(r=[r]),r.forEach(a=>{e.options.ns.indexOf(a)<0&&e.options.ns.push(a)}),e.loadLanguages(t,Oe(e,o))}function wt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const o=t.languages[0],a=t.options?t.options.fallbackLng:!1,n=t.languages[t.languages.length-1];if(o.toLowerCase()==="cimode")return!0;const s=(i,l)=>{const c=t.services.backendConnector.state[`${i}|${l}`];return c===-1||c===2};return r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!s(t.isLanguageChangingTo,e)?!1:!!(t.hasResourceBundle(o,e)||!t.services.backendConnector.backend||t.options.resources&&!t.options.partialBundledLanguages||s(o,e)&&(!a||s(n,e)))}function Pt(e,t){let r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return!t.languages||!t.languages.length?(X("i18n.languages were undefined or empty",t.languages),!0):t.options.ignoreJSONStructure!==void 0?t.hasLoadedNamespace(e,{lng:r.lng,precheck:(a,n)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!n(a.isLanguageChangingTo,e))return!1}}):wt(e,t,r)}const At=p.createContext();class jt{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Et=(e,t)=>{const r=p.useRef();return p.useEffect(()=>{r.current=t?r.current:e},[e,t]),r.current};function un(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{i18n:r}=t,{i18n:o,defaultNS:a}=p.useContext(At)||{},n=r||o||Ze();if(n&&!n.reportNamespaces&&(n.reportNamespaces=new jt),!n){X("You will need to pass in an i18next instance by using initReactI18next");const v=(w,x)=>typeof x=="string"?x:x&&typeof x=="object"&&typeof x.defaultValue=="string"?x.defaultValue:Array.isArray(w)?w[w.length-1]:w,k=[v,{},!1];return k.t=v,k.i18n={},k.ready=!1,k}n.options.react&&n.options.react.wait!==void 0&&X("It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const s={...Ve(),...n.options.react,...t},{useSuspense:i,keyPrefix:l}=s;let c=e||a||n.options&&n.options.defaultNS;c=typeof c=="string"?[c]:c||["translation"],n.reportNamespaces.addUsedNamespaces&&n.reportNamespaces.addUsedNamespaces(c);const u=(n.isInitialized||n.initializedStoreOnce)&&c.every(v=>Pt(v,n,s));function f(){return n.getFixedT(t.lng||null,s.nsMode==="fallback"?c:c[0],l)}const[y,g]=p.useState(f);let h=c.join();t.lng&&(h=`${t.lng}${h}`);const $=Et(h),S=p.useRef(!0);p.useEffect(()=>{const{bindI18n:v,bindI18nStore:k}=s;S.current=!0,!u&&!i&&(t.lng?ce(n,t.lng,c,()=>{S.current&&g(f)}):le(n,c,()=>{S.current&&g(f)})),u&&$&&$!==h&&S.current&&g(f);function w(){S.current&&g(f)}return v&&n&&n.on(v,w),k&&n&&n.store.on(k,w),()=>{S.current=!1,v&&n&&v.split(" ").forEach(x=>n.off(x,w)),k&&n&&k.split(" ").forEach(x=>n.store.off(x,w))}},[n,h]);const H=p.useRef(!0);p.useEffect(()=>{S.current&&!H.current&&g(f),H.current=!1},[n,l]);const N=[y,n,u];if(N.t=y,N.i18n=n,N.ready=u,u||!u&&!i)return N;throw new Promise(v=>{t.lng?ce(n,t.lng,c,()=>v()):le(n,c,()=>v())})}const Nt={dark:["#C1C2C5","#A6A7AB","#909296","#5c5f66","#373A40","#2C2E33","#25262b","#1A1B1E","#141517","#101113"],gray:["#f8f9fa","#f1f3f5","#e9ecef","#dee2e6","#ced4da","#adb5bd","#868e96","#495057","#343a40","#212529"],red:["#fff5f5","#ffe3e3","#ffc9c9","#ffa8a8","#ff8787","#ff6b6b","#fa5252","#f03e3e","#e03131","#c92a2a"],pink:["#fff0f6","#ffdeeb","#fcc2d7","#faa2c1","#f783ac","#f06595","#e64980","#d6336c","#c2255c","#a61e4d"],grape:["#f8f0fc","#f3d9fa","#eebefa","#e599f7","#da77f2","#cc5de8","#be4bdb","#ae3ec9","#9c36b5","#862e9c"],violet:["#f3f0ff","#e5dbff","#d0bfff","#b197fc","#9775fa","#845ef7","#7950f2","#7048e8","#6741d9","#5f3dc4"],indigo:["#edf2ff","#dbe4ff","#bac8ff","#91a7ff","#748ffc","#5c7cfa","#4c6ef5","#4263eb","#3b5bdb","#364fc7"],blue:["#e7f5ff","#d0ebff","#a5d8ff","#74c0fc","#4dabf7","#339af0","#228be6","#1c7ed6","#1971c2","#1864ab"],cyan:["#e3fafc","#c5f6fa","#99e9f2","#66d9e8","#3bc9db","#22b8cf","#15aabf","#1098ad","#0c8599","#0b7285"],teal:["#e6fcf5","#c3fae8","#96f2d7","#63e6be","#38d9a9","#20c997","#12b886","#0ca678","#099268","#087f5b"],green:["#ebfbee","#d3f9d8","#b2f2bb","#8ce99a","#69db7c","#51cf66","#40c057","#37b24d","#2f9e44","#2b8a3e"],lime:["#f4fce3","#e9fac8","#d8f5a2","#c0eb75","#a9e34b","#94d82d","#82c91e","#74b816","#66a80f","#5c940d"],yellow:["#fff9db","#fff3bf","#ffec99","#ffe066","#ffd43b","#fcc419","#fab005","#f59f00","#f08c00","#e67700"],orange:["#fff4e6","#ffe8cc","#ffd8a8","#ffc078","#ffa94d","#ff922b","#fd7e14","#f76707","#e8590c","#d9480f"]};function $t(e){return()=>({fontFamily:e.fontFamily||"sans-serif"})}var Tt=Object.defineProperty,ue=Object.getOwnPropertySymbols,It=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,de=(e,t,r)=>t in e?Tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fe=(e,t)=>{for(var r in t||(t={}))It.call(t,r)&&de(e,r,t[r]);if(ue)for(var r of ue(t))Ot.call(t,r)&&de(e,r,t[r]);return e};function zt(e){return t=>({WebkitTapHighlightColor:"transparent",[t||"&:focus"]:fe({},e.focusRing==="always"||e.focusRing==="auto"?e.focusRingStyles.styles(e):e.focusRingStyles.resetStyles(e)),[t?t.replace(":focus",":focus:not(:focus-visible)"):"&:focus:not(:focus-visible)"]:fe({},e.focusRing==="auto"||e.focusRing==="never"?e.focusRingStyles.resetStyles(e):null)})}function F(e){return t=>typeof e.primaryShade=="number"?e.primaryShade:e.primaryShade[t||e.colorScheme]}function Q(e){const t=F(e);return(r,o,a=!0,n=!0)=>{if(typeof r=="string"&&r.includes(".")){const[i,l]=r.split("."),c=parseInt(l,10);if(i in e.colors&&c>=0&&c<10)return e.colors[i][typeof o=="number"&&!n?o:c]}const s=typeof o=="number"?o:t();return r in e.colors?e.colors[r][s]:a?e.colors[e.primaryColor][s]:r}}function ze(e){let t="";for(let r=1;r{const a={from:(o==null?void 0:o.from)||e.defaultGradient.from,to:(o==null?void 0:o.to)||e.defaultGradient.to,deg:(o==null?void 0:o.deg)||e.defaultGradient.deg};return`linear-gradient(${a.deg}deg, ${t(a.from,r(),!1)} 0%, ${t(a.to,r(),!1)} 100%)`}}function Me(e){return t=>{if(typeof t=="number")return`${t/16}${e}`;if(typeof t=="string"){const r=t.replace("px","");if(!Number.isNaN(Number(r)))return`${Number(r)/16}${e}`}return t}}const E=Me("rem"),U=Me("em");function Le({size:e,sizes:t,units:r}){return e in t?t[e]:typeof e=="number"?r==="em"?U(e):E(e):e||t.md}function W(e){return typeof e=="number"?e:typeof e=="string"&&e.includes("rem")?Number(e.replace("rem",""))*16:typeof e=="string"&&e.includes("em")?Number(e.replace("em",""))*16:Number(e)}function Lt(e){return t=>`@media (min-width: ${U(W(Le({size:t,sizes:e.breakpoints})))})`}function Ft(e){return t=>`@media (max-width: ${U(W(Le({size:t,sizes:e.breakpoints}))-1)})`}function Ht(e){return/^#?([0-9A-F]{3}){1,2}$/i.test(e)}function Wt(e){let t=e.replace("#","");if(t.length===3){const s=t.split("");t=[s[0],s[0],s[1],s[1],s[2],s[2]].join("")}const r=parseInt(t,16),o=r>>16&255,a=r>>8&255,n=r&255;return{r:o,g:a,b:n,a:1}}function Dt(e){const[t,r,o,a]=e.replace(/[^0-9,.]/g,"").split(",").map(Number);return{r:t,g:r,b:o,a:a||1}}function ee(e){return Ht(e)?Wt(e):e.startsWith("rgb")?Dt(e):{r:0,g:0,b:0,a:1}}function T(e,t){if(typeof e!="string"||t>1||t<0)return"rgba(0, 0, 0, 1)";if(e.startsWith("var(--"))return e;const{r,g:o,b:a}=ee(e);return`rgba(${r}, ${o}, ${a}, ${t})`}function Bt(e=0){return{position:"absolute",top:E(e),right:E(e),left:E(e),bottom:E(e)}}function Gt(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=1-t,i=l=>Math.round(l*s);return`rgba(${i(r)}, ${i(o)}, ${i(a)}, ${n})`}function Ut(e,t){if(typeof e=="string"&&e.startsWith("var(--"))return e;const{r,g:o,b:a,a:n}=ee(e),s=i=>Math.round(i+(255-i)*t);return`rgba(${s(r)}, ${s(o)}, ${s(a)}, ${n})`}function Vt(e){return t=>{if(typeof t=="number")return E(t);const r=typeof e.defaultRadius=="number"?e.defaultRadius:e.radius[e.defaultRadius]||e.defaultRadius;return e.radius[t]||t||r}}function Zt(e,t){if(typeof e=="string"&&e.includes(".")){const[r,o]=e.split("."),a=parseInt(o,10);if(r in t.colors&&a>=0&&a<10)return{isSplittedColor:!0,key:r,shade:a}}return{isSplittedColor:!1}}function qt(e){const t=Q(e),r=F(e),o=Re(e);return({variant:a,color:n,gradient:s,primaryFallback:i})=>{const l=Zt(n,e);switch(a){case"light":return{border:"transparent",background:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1),color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?7:1,i,!1),e.colorScheme==="dark"?.25:.65)};case"subtle":return{border:"transparent",background:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),hover:T(t(n,e.colorScheme==="dark"?8:0,i,!1),e.colorScheme==="dark"?.2:1)};case"outline":return{border:t(n,e.colorScheme==="dark"?5:r("light")),background:"transparent",color:t(n,e.colorScheme==="dark"?5:r("light")),hover:e.colorScheme==="dark"?T(t(n,5,i,!1),.05):T(t(n,0,i,!1),.35)};case"default":return{border:e.colorScheme==="dark"?e.colors.dark[4]:e.colors.gray[4],background:e.colorScheme==="dark"?e.colors.dark[6]:e.white,color:e.colorScheme==="dark"?e.white:e.black,hover:e.colorScheme==="dark"?e.colors.dark[5]:e.colors.gray[0]};case"white":return{border:"transparent",background:e.white,color:t(n,r()),hover:null};case"transparent":return{border:"transparent",color:n==="dark"?e.colorScheme==="dark"?e.colors.dark[0]:e.colors.dark[9]:t(n,e.colorScheme==="dark"?2:r("light")),background:"transparent",hover:null};case"gradient":return{background:o(s),color:e.white,border:"transparent",hover:null};default:{const c=r(),u=l.isSplittedColor?l.shade:c,f=l.isSplittedColor?l.key:n;return{border:"transparent",background:t(f,u,i),color:e.white,hover:t(f,u===9?8:u+1)}}}}}function Xt(e){return t=>{const r=F(e)(t);return e.colors[e.primaryColor][r]}}function Kt(e){return{"@media (hover: hover)":{"&:hover":e},"@media (hover: none)":{"&:active":e}}}function Jt(e){return()=>({userSelect:"none",color:e.colorScheme==="dark"?e.colors.dark[3]:e.colors.gray[5]})}function Yt(e){return()=>e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6]}const b={fontStyles:$t,themeColor:Q,focusStyles:zt,linearGradient:Rt,radialGradient:Mt,smallerThan:Ft,largerThan:Lt,rgba:T,cover:Bt,darken:Gt,lighten:Ut,radius:Vt,variant:qt,primaryShade:F,hover:Kt,gradient:Re,primaryColor:Xt,placeholderStyles:Jt,dimmed:Yt};var Qt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,pe=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,me=(e,t,r)=>t in e?Qt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,or=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&me(e,r,t[r]);if(pe)for(var r of pe(t))nr.call(t,r)&&me(e,r,t[r]);return e},ar=(e,t)=>er(e,tr(t));function Fe(e){return ar(or({},e),{fn:{fontStyles:b.fontStyles(e),themeColor:b.themeColor(e),focusStyles:b.focusStyles(e),largerThan:b.largerThan(e),smallerThan:b.smallerThan(e),radialGradient:b.radialGradient,linearGradient:b.linearGradient,gradient:b.gradient(e),rgba:b.rgba,cover:b.cover,lighten:b.lighten,darken:b.darken,primaryShade:b.primaryShade(e),radius:b.radius(e),variant:b.variant(e),hover:b.hover,primaryColor:b.primaryColor(e),placeholderStyles:b.placeholderStyles(e),dimmed:b.dimmed(e)}})}const sr={dir:"ltr",primaryShade:{light:6,dark:8},focusRing:"auto",loader:"oval",colorScheme:"light",white:"#fff",black:"#000",defaultRadius:"sm",transitionTimingFunction:"ease",colors:Nt,lineHeight:1.55,fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontFamilyMonospace:"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace",primaryColor:"blue",respectReducedMotion:!0,cursorType:"default",defaultGradient:{from:"indigo",to:"cyan",deg:45},shadows:{xs:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), 0 0.0625rem 0.125rem rgba(0, 0, 0, 0.1)",sm:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 0.625rem 0.9375rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.4375rem 0.4375rem -0.3125rem",md:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.25rem 1.5625rem -0.3125rem, rgba(0, 0, 0, 0.04) 0 0.625rem 0.625rem -0.3125rem",lg:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 1.75rem 1.4375rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 0.75rem 0.75rem -0.4375rem",xl:"0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05) 0 2.25rem 1.75rem -0.4375rem, rgba(0, 0, 0, 0.04) 0 1.0625rem 1.0625rem -0.4375rem"},fontSizes:{xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.125rem",xl:"1.25rem"},radius:{xs:"0.125rem",sm:"0.25rem",md:"0.5rem",lg:"1rem",xl:"2rem"},spacing:{xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},breakpoints:{xs:"36em",sm:"48em",md:"62em",lg:"75em",xl:"88em"},headings:{fontFamily:"-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji",fontWeight:700,sizes:{h1:{fontSize:"2.125rem",lineHeight:1.3,fontWeight:void 0},h2:{fontSize:"1.625rem",lineHeight:1.35,fontWeight:void 0},h3:{fontSize:"1.375rem",lineHeight:1.4,fontWeight:void 0},h4:{fontSize:"1.125rem",lineHeight:1.45,fontWeight:void 0},h5:{fontSize:"1rem",lineHeight:1.5,fontWeight:void 0},h6:{fontSize:"0.875rem",lineHeight:1.5,fontWeight:void 0}}},other:{},components:{},activeStyles:{transform:"translateY(0.0625rem)"},datesLocale:"en",globalStyles:void 0,focusRingStyles:{styles:e=>({outlineOffset:"0.125rem",outline:`0.125rem solid ${e.colors[e.primaryColor][e.colorScheme==="dark"?7:5]}`}),resetStyles:()=>({outline:"none"}),inputStyles:e=>({outline:"none",borderColor:e.colors[e.primaryColor][typeof e.primaryShade=="object"?e.primaryShade[e.colorScheme]:e.primaryShade]})}},te=Fe(sr);var ir=Object.defineProperty,lr=Object.defineProperties,cr=Object.getOwnPropertyDescriptors,ge=Object.getOwnPropertySymbols,ur=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable,be=(e,t,r)=>t in e?ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,fr=(e,t)=>{for(var r in t||(t={}))ur.call(t,r)&&be(e,r,t[r]);if(ge)for(var r of ge(t))dr.call(t,r)&&be(e,r,t[r]);return e},pr=(e,t)=>lr(e,cr(t));function mr({theme:e}){return A.createElement(B,{styles:{"*, *::before, *::after":{boxSizing:"border-box"},html:{colorScheme:e.colorScheme==="dark"?"dark":"light"},body:pr(fr({},e.fn.fontStyles()),{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.white,color:e.colorScheme==="dark"?e.colors.dark[0]:e.black,lineHeight:e.lineHeight,fontSize:e.fontSizes.md,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"})}})}function I(e,t,r,o=E){Object.keys(t).forEach(a=>{e[`--mantine-${r}-${a}`]=o(t[a])})}function gr({theme:e}){const t={"--mantine-color-white":e.white,"--mantine-color-black":e.black,"--mantine-transition-timing-function":e.transitionTimingFunction,"--mantine-line-height":`${e.lineHeight}`,"--mantine-font-family":e.fontFamily,"--mantine-font-family-monospace":e.fontFamilyMonospace,"--mantine-font-family-headings":e.headings.fontFamily,"--mantine-heading-font-weight":`${e.headings.fontWeight}`};I(t,e.shadows,"shadow"),I(t,e.fontSizes,"font-size"),I(t,e.radius,"radius"),I(t,e.spacing,"spacing"),I(t,e.breakpoints,"breakpoints",U),Object.keys(e.colors).forEach(o=>{e.colors[o].forEach((a,n)=>{t[`--mantine-color-${o}-${n}`]=a})});const r=e.headings.sizes;return Object.keys(r).forEach(o=>{t[`--mantine-${o}-font-size`]=r[o].fontSize,t[`--mantine-${o}-line-height`]=`${r[o].lineHeight}`}),A.createElement(B,{styles:{":root":t}})}var br=Object.defineProperty,yr=Object.defineProperties,vr=Object.getOwnPropertyDescriptors,ye=Object.getOwnPropertySymbols,hr=Object.prototype.hasOwnProperty,Sr=Object.prototype.propertyIsEnumerable,ve=(e,t,r)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C=(e,t)=>{for(var r in t||(t={}))hr.call(t,r)&&ve(e,r,t[r]);if(ye)for(var r of ye(t))Sr.call(t,r)&&ve(e,r,t[r]);return e},V=(e,t)=>yr(e,vr(t));function xr(e,t){var r;if(!t)return e;const o=Object.keys(e).reduce((a,n)=>{if(n==="headings"&&t.headings){const s=t.headings.sizes?Object.keys(e.headings.sizes).reduce((i,l)=>(i[l]=C(C({},e.headings.sizes[l]),t.headings.sizes[l]),i),{}):e.headings.sizes;return V(C({},a),{headings:V(C(C({},e.headings),t.headings),{sizes:s})})}if(n==="breakpoints"&&t.breakpoints){const s=C(C({},e.breakpoints),t.breakpoints);return V(C({},a),{breakpoints:Object.fromEntries(Object.entries(s).sort((i,l)=>W(i[1])-W(l[1])))})}return a[n]=typeof t[n]=="object"?C(C({},e[n]),t[n]):typeof t[n]=="number"||typeof t[n]=="boolean"||typeof t[n]=="function"?t[n]:t[n]||e[n],a},{});if(t!=null&&t.fontFamily&&!((r=t==null?void 0:t.headings)!=null&&r.fontFamily)&&(o.headings.fontFamily=t.fontFamily),!(o.primaryColor in o.colors))throw new Error("MantineProvider: Invalid theme.primaryColor, it accepts only key of theme.colors, learn more – https://mantine.dev/theming/colors/#primary-color");return o}function Cr(e,t){return Fe(xr(e,t))}function _r(e){return Object.keys(e).reduce((t,r)=>(e[r]!==void 0&&(t[r]=e[r]),t),{})}const kr={html:{fontFamily:"sans-serif",lineHeight:"1.15",textSizeAdjust:"100%"},body:{margin:0},"article, aside, footer, header, nav, section, figcaption, figure, main":{display:"block"},h1:{fontSize:"2em"},hr:{boxSizing:"content-box",height:0,overflow:"visible"},pre:{fontFamily:"monospace, monospace",fontSize:"1em"},a:{background:"transparent",textDecorationSkip:"objects"},"a:active, a:hover":{outlineWidth:0},"abbr[title]":{borderBottom:"none",textDecoration:"underline"},"b, strong":{fontWeight:"bolder"},"code, kbp, samp":{fontFamily:"monospace, monospace",fontSize:"1em"},dfn:{fontStyle:"italic"},mark:{backgroundColor:"#ff0",color:"#000"},small:{fontSize:"80%"},"sub, sup":{fontSize:"75%",lineHeight:0,position:"relative",verticalAlign:"baseline"},sup:{top:"-0.5em"},sub:{bottom:"-0.25em"},"audio, video":{display:"inline-block"},"audio:not([controls])":{display:"none",height:0},img:{borderStyle:"none",verticalAlign:"middle"},"svg:not(:root)":{overflow:"hidden"},"button, input, optgroup, select, textarea":{fontFamily:"sans-serif",fontSize:"100%",lineHeight:"1.15",margin:0},"button, input":{overflow:"visible"},"button, select":{textTransform:"none"},"button, [type=reset], [type=submit]":{WebkitAppearance:"button"},"button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner":{borderStyle:"none",padding:0},"button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring":{outline:`${E(1)} dotted ButtonText`},legend:{boxSizing:"border-box",color:"inherit",display:"table",maxWidth:"100%",padding:0,whiteSpace:"normal"},progress:{display:"inline-block",verticalAlign:"baseline"},textarea:{overflow:"auto"},"[type=checkbox], [type=radio]":{boxSizing:"border-box",padding:0},"[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button":{height:"auto"},"[type=search]":{appearance:"none"},"[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration":{appearance:"none"},"::-webkit-file-upload-button":{appearance:"button",font:"inherit"},"details, menu":{display:"block"},summary:{display:"list-item"},canvas:{display:"inline-block"},template:{display:"none"}};function wr(){return A.createElement(B,{styles:kr})}var Pr=Object.defineProperty,he=Object.getOwnPropertySymbols,Ar=Object.prototype.hasOwnProperty,jr=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Pr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,O=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&Se(e,r,t[r]);if(he)for(var r of he(t))jr.call(t,r)&&Se(e,r,t[r]);return e};const D=p.createContext({theme:te});function He(){var e;return((e=p.useContext(D))==null?void 0:e.theme)||te}function dn(e){const t=He(),r=o=>{var a,n,s,i;return{styles:((a=t.components[o])==null?void 0:a.styles)||{},classNames:((n=t.components[o])==null?void 0:n.classNames)||{},variants:(s=t.components[o])==null?void 0:s.variants,sizes:(i=t.components[o])==null?void 0:i.sizes}};return Array.isArray(e)?e.map(r):[r(e)]}function fn(){var e;return(e=p.useContext(D))==null?void 0:e.emotionCache}function pn(e,t,r){var o;const a=He(),n=(o=a.components[e])==null?void 0:o.defaultProps,s=typeof n=="function"?n(a):n;return O(O(O({},t),s),_r(r))}function Er({theme:e,emotionCache:t,withNormalizeCSS:r=!1,withGlobalStyles:o=!1,withCSSVariables:a=!1,inherit:n=!1,children:s}){const i=p.useContext(D),l=Cr(te,n?O(O({},i.theme),e):e);return A.createElement(qe,{theme:l},A.createElement(D.Provider,{value:{theme:l,emotionCache:t}},r&&A.createElement(wr,null),o&&A.createElement(mr,{theme:l}),a&&A.createElement(gr,{theme:l}),typeof l.globalStyles=="function"&&A.createElement(B,{styles:l.globalStyles(l)}),s))}Er.displayName="@mantine/core/MantineProvider";const{definePartsStyle:Nr,defineMultiStyleConfig:$r}=Xe(at.keys),Tr=Nr(e=>({button:{fontWeight:500,bg:P("base.300","base.500")(e),color:P("base.900","base.100")(e),_hover:{bg:P("base.400","base.600")(e),color:P("base.900","base.50")(e),fontWeight:600}},list:{zIndex:9999,color:P("base.900","base.150")(e),bg:P("base.200","base.800")(e),shadow:"dark-lg",border:"none"},item:{fontSize:"sm",bg:P("base.200","base.800")(e),_hover:{bg:P("base.300","base.700")(e),svg:{opacity:1}},_focus:{bg:P("base.400","base.600")(e)},svg:{opacity:.7,fontSize:14}}})),mn=$r({variants:{invokeAI:Tr},defaultProps:{variant:"invokeAI"}}),gn={variants:{enter:{visibility:"visible",opacity:1,scale:1,transition:{duration:.07,ease:[.4,0,.2,1]}},exit:{transitionEnd:{visibility:"hidden"},opacity:0,scale:.8,transition:{duration:.07,easings:"easeOut"}}}};export{on as A,Yr as B,Te as C,Gr as D,at as E,Ur as F,Vr as G,Zr as H,L as I,Fr as J,Hr as K,Wr as L,Dr as M,Mr as N,nn as O,G as P,Or as Q,zr as R,Rr as S,Qe as T,sn as U,cn as V,mn as W,Er as X,M as a,ct as b,an as c,ne as d,un as e,fn as f,He as g,dn as h,_r as i,W as j,Le as k,pn as l,gn as m,P as n,tn as o,rn as p,Br as q,E as r,Qr as s,en as t,ln as u,qr as v,Lr as w,Xr as x,Kr as y,Jr as z}; diff --git a/invokeai/frontend/web/dist/index.html b/invokeai/frontend/web/dist/index.html index 42b2bcdd8c..db8fa11747 100644 --- a/invokeai/frontend/web/dist/index.html +++ b/invokeai/frontend/web/dist/index.html @@ -12,7 +12,7 @@ margin: 0; } - + diff --git a/invokeai/frontend/web/dist/locales/en.json b/invokeai/frontend/web/dist/locales/en.json index 32144749bd..881e531701 100644 --- a/invokeai/frontend/web/dist/locales/en.json +++ b/invokeai/frontend/web/dist/locales/en.json @@ -1,40 +1,67 @@ { "accessibility": { - "modelSelect": "Model Select", - "invokeProgressBar": "Invoke progress bar", - "reset": "Reset", - "uploadImage": "Upload Image", - "previousImage": "Previous Image", - "nextImage": "Next Image", - "useThisParameter": "Use this parameter", "copyMetadataJson": "Copy metadata JSON", "exitViewer": "Exit Viewer", - "zoomIn": "Zoom In", - "zoomOut": "Zoom Out", - "rotateCounterClockwise": "Rotate Counter-Clockwise", - "rotateClockwise": "Rotate Clockwise", "flipHorizontally": "Flip Horizontally", "flipVertically": "Flip Vertically", + "invokeProgressBar": "Invoke progress bar", + "menu": "Menu", + "modelSelect": "Model Select", "modifyConfig": "Modify Config", - "toggleAutoscroll": "Toggle autoscroll", - "toggleLogViewer": "Toggle Log Viewer", + "nextImage": "Next Image", + "previousImage": "Previous Image", + "reset": "Reset", + "rotateClockwise": "Rotate Clockwise", + "rotateCounterClockwise": "Rotate Counter-Clockwise", "showGallery": "Show Gallery", "showOptionsPanel": "Show Side Panel", - "menu": "Menu" + "toggleAutoscroll": "Toggle autoscroll", + "toggleLogViewer": "Toggle Log Viewer", + "uploadImage": "Upload Image", + "useThisParameter": "Use this parameter", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out" + }, + "boards": { + "addBoard": "Add Board", + "autoAddBoard": "Auto-Add Board", + "bottomMessage": "Deleting this board and its images will reset any features currently using them.", + "cancel": "Cancel", + "changeBoard": "Change Board", + "clearSearch": "Clear Search", + "loading": "Loading...", + "menuItemAutoAdd": "Auto-add to this Board", + "move": "Move", + "myBoard": "My Board", + "noMatching": "No matching Boards", + "searchBoard": "Search Boards...", + "selectBoard": "Select a Board", + "topMessage": "This board contains images used in the following features:", + "uncategorized": "Uncategorized" }, "common": { + "accept": "Accept", + "advanced": "Advanced", + "areYouSure": "Are you sure?", + "back": "Back", + "batch": "Batch Manager", + "cancel": "Cancel", + "close": "Close", "communityLabel": "Community", - "hotkeysLabel": "Hotkeys", + "controlNet": "Controlnet", + "ipAdapter": "IP Adapter", "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "languagePickerLabel": "Language", - "reportBugLabel": "Report Bug", - "githubLabel": "Github", "discordLabel": "Discord", - "settingsLabel": "Settings", + "dontAskMeAgain": "Don't ask me again", + "generate": "Generate", + "githubLabel": "Github", + "hotkeysLabel": "Hotkeys", + "imagePrompt": "Image Prompt", + "img2img": "Image To Image", "langArabic": "العربية", - "langEnglish": "English", + "langBrPortuguese": "Português do Brasil", "langDutch": "Nederlands", + "langEnglish": "English", "langFrench": "Français", "langGerman": "Deutsch", "langHebrew": "עברית", @@ -43,377 +70,430 @@ "langKorean": "한국어", "langPolish": "Polski", "langPortuguese": "Português", - "langBrPortuguese": "Português do Brasil", "langRussian": "Русский", "langSimplifiedChinese": "简体中文", - "langUkranian": "Украї́нська", "langSpanish": "Español", - "txt2img": "Text To Image", - "img2img": "Image To Image", - "unifiedCanvas": "Unified Canvas", + "languagePickerLabel": "Language", + "langUkranian": "Украї́нська", + "lightMode": "Light Mode", "linear": "Linear", - "nodes": "Workflow Editor", - "batch": "Batch Manager", + "load": "Load", + "loading": "Loading", + "loadingInvokeAI": "Loading Invoke AI", "modelManager": "Model Manager", - "postprocessing": "Post Processing", + "nodeEditor": "Node Editor", + "nodes": "Workflow Editor", "nodesDesc": "A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature.", - "postProcessing": "Post Processing", + "openInNewTab": "Open in New Tab", "postProcessDesc1": "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.", "postProcessDesc2": "A dedicated UI will be released soon to facilitate more advanced post processing workflows.", "postProcessDesc3": "The Invoke AI Command Line Interface offers various other features including Embiggen.", - "training": "Training", - "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", - "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", - "upload": "Upload", - "close": "Close", - "cancel": "Cancel", - "accept": "Accept", - "load": "Load", - "back": "Back", + "postprocessing": "Post Processing", + "postProcessing": "Post Processing", + "random": "Random", + "reportBugLabel": "Report Bug", + "settingsLabel": "Settings", "statusConnected": "Connected", + "statusConvertingModel": "Converting Model", "statusDisconnected": "Disconnected", "statusError": "Error", - "statusPreparing": "Preparing", - "statusProcessingCanceled": "Processing Canceled", - "statusProcessingComplete": "Processing Complete", "statusGenerating": "Generating", - "statusGeneratingTextToImage": "Generating Text To Image", "statusGeneratingImageToImage": "Generating Image To Image", "statusGeneratingInpainting": "Generating Inpainting", "statusGeneratingOutpainting": "Generating Outpainting", + "statusGeneratingTextToImage": "Generating Text To Image", "statusGenerationComplete": "Generation Complete", "statusIterationComplete": "Iteration Complete", - "statusSavingImage": "Saving Image", + "statusLoadingModel": "Loading Model", + "statusMergedModels": "Models Merged", + "statusMergingModels": "Merging Models", + "statusModelChanged": "Model Changed", + "statusModelConverted": "Model Converted", + "statusPreparing": "Preparing", + "statusProcessingCanceled": "Processing Canceled", + "statusProcessingComplete": "Processing Complete", "statusRestoringFaces": "Restoring Faces", - "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", "statusRestoringFacesCodeFormer": "Restoring Faces (CodeFormer)", + "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", + "statusSavingImage": "Saving Image", "statusUpscaling": "Upscaling", "statusUpscalingESRGAN": "Upscaling (ESRGAN)", - "statusLoadingModel": "Loading Model", - "statusModelChanged": "Model Changed", - "statusConvertingModel": "Converting Model", - "statusModelConverted": "Model Converted", - "statusMergingModels": "Merging Models", - "statusMergedModels": "Models Merged", - "loading": "Loading", - "loadingInvokeAI": "Loading Invoke AI", - "random": "Random", - "generate": "Generate", - "openInNewTab": "Open in New Tab", - "dontAskMeAgain": "Don't ask me again", - "areYouSure": "Are you sure?", - "imagePrompt": "Image Prompt" + "training": "Training", + "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", + "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", + "txt2img": "Text To Image", + "unifiedCanvas": "Unified Canvas", + "upload": "Upload" + }, + "controlnet": { + "amult": "a_mult", + "autoConfigure": "Auto configure processor", + "balanced": "Balanced", + "beginEndStepPercent": "Begin / End Step Percentage", + "bgth": "bg_th", + "canny": "Canny", + "cannyDescription": "Canny edge detection", + "coarse": "Coarse", + "contentShuffle": "Content Shuffle", + "contentShuffleDescription": "Shuffles the content in an image", + "control": "Control", + "controlMode": "Control Mode", + "crop": "Crop", + "delete": "Delete", + "depthMidas": "Depth (Midas)", + "depthMidasDescription": "Depth map generation using Midas", + "depthZoe": "Depth (Zoe)", + "depthZoeDescription": "Depth map generation using Zoe", + "detectResolution": "Detect Resolution", + "duplicate": "Duplicate", + "enableControlnet": "Enable ControlNet", + "f": "F", + "fill": "Fill", + "h": "H", + "handAndFace": "Hand and Face", + "hed": "HED", + "hedDescription": "Holistically-Nested Edge Detection", + "hideAdvanced": "Hide Advanced", + "highThreshold": "High Threshold", + "imageResolution": "Image Resolution", + "importImageFromCanvas": "Import Image From Canvas", + "importMaskFromCanvas": "Import Mask From Canvas", + "incompatibleBaseModel": "Incompatible base model:", + "lineart": "Lineart", + "lineartAnime": "Lineart Anime", + "lineartAnimeDescription": "Anime-style lineart processing", + "lineartDescription": "Converts image to lineart", + "lowThreshold": "Low Threshold", + "maxFaces": "Max Faces", + "mediapipeFace": "Mediapipe Face", + "mediapipeFaceDescription": "Face detection using Mediapipe", + "megaControl": "Mega Control", + "minConfidence": "Min Confidence", + "mlsd": "M-LSD", + "mlsdDescription": "Minimalist Line Segment Detector", + "none": "None", + "noneDescription": "No processing applied", + "normalBae": "Normal BAE", + "normalBaeDescription": "Normal BAE processing", + "openPose": "Openpose", + "openPoseDescription": "Human pose estimation using Openpose", + "pidi": "PIDI", + "pidiDescription": "PIDI image processing", + "processor": "Processor", + "prompt": "Prompt", + "resetControlImage": "Reset Control Image", + "resize": "Resize", + "resizeMode": "Resize Mode", + "safe": "Safe", + "saveControlImage": "Save Control Image", + "scribble": "scribble", + "selectModel": "Select a model", + "setControlImageDimensions": "Set Control Image Dimensions To W/H", + "showAdvanced": "Show Advanced", + "toggleControlNet": "Toggle this ControlNet", + "w": "W", + "weight": "Weight", + "enableIPAdapter": "Enable IP Adapter", + "ipAdapterModel": "Adapter Model", + "resetIPAdapterImage": "Reset IP Adapter Image", + "ipAdapterImageFallback": "No IP Adapter Image Selected" + }, + "embedding": { + "addEmbedding": "Add Embedding", + "incompatibleModel": "Incompatible base model:", + "noMatchingEmbedding": "No matching Embeddings" }, "gallery": { - "generations": "Generations", - "showGenerations": "Show Generations", - "uploads": "Uploads", - "showUploads": "Show Uploads", - "galleryImageSize": "Image Size", - "galleryImageResetSize": "Reset Size", - "gallerySettings": "Gallery Settings", - "maintainAspectRatio": "Maintain Aspect Ratio", - "autoSwitchNewImages": "Auto-Switch to New Images", - "singleColumnLayout": "Single Column Layout", "allImagesLoaded": "All Images Loaded", - "loadMore": "Load More", - "noImagesInGallery": "No Images to Display", + "assets": "Assets", + "autoAssignBoardOnClick": "Auto-Assign Board on Click", + "autoSwitchNewImages": "Auto-Switch to New Images", + "copy": "Copy", + "currentlyInUse": "This image is currently in use in the following features:", "deleteImage": "Delete Image", "deleteImageBin": "Deleted images will be sent to your operating system's Bin.", "deleteImagePermanent": "Deleted images cannot be restored.", + "download": "Download", + "featuresWillReset": "If you delete this image, those features will immediately be reset.", + "galleryImageResetSize": "Reset Size", + "galleryImageSize": "Image Size", + "gallerySettings": "Gallery Settings", + "generations": "Generations", "images": "Images", - "assets": "Assets", - "autoAssignBoardOnClick": "Auto-Assign Board on Click" + "loading": "Loading", + "loadMore": "Load More", + "maintainAspectRatio": "Maintain Aspect Ratio", + "noImagesInGallery": "No Images to Display", + "setCurrentImage": "Set as Current Image", + "showGenerations": "Show Generations", + "showUploads": "Show Uploads", + "singleColumnLayout": "Single Column Layout", + "unableToLoad": "Unable to load Gallery", + "uploads": "Uploads" }, "hotkeys": { - "keyboardShortcuts": "Keyboard Shortcuts", - "appHotkeys": "App Hotkeys", - "generalHotkeys": "General Hotkeys", - "galleryHotkeys": "Gallery Hotkeys", - "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", - "nodesHotkeys": "Nodes Hotkeys", - "invoke": { - "title": "Invoke", - "desc": "Generate an image" - }, - "cancel": { - "title": "Cancel", - "desc": "Cancel image generation" - }, - "focusPrompt": { - "title": "Focus Prompt", - "desc": "Focus the prompt input area" - }, - "toggleOptions": { - "title": "Toggle Options", - "desc": "Open and close the options panel" - }, - "pinOptions": { - "title": "Pin Options", - "desc": "Pin the options panel" - }, - "toggleViewer": { - "title": "Toggle Viewer", - "desc": "Open and close Image Viewer" - }, - "toggleGallery": { - "title": "Toggle Gallery", - "desc": "Open and close the gallery drawer" - }, - "maximizeWorkSpace": { - "title": "Maximize Workspace", - "desc": "Close panels and maximize work area" - }, - "changeTabs": { - "title": "Change Tabs", - "desc": "Switch to another workspace" - }, - "consoleToggle": { - "title": "Console Toggle", - "desc": "Open and close console" - }, - "setPrompt": { - "title": "Set Prompt", - "desc": "Use the prompt of the current image" - }, - "setSeed": { - "title": "Set Seed", - "desc": "Use the seed of the current image" - }, - "setParameters": { - "title": "Set Parameters", - "desc": "Use all parameters of the current image" - }, - "restoreFaces": { - "title": "Restore Faces", - "desc": "Restore the current image" - }, - "upscale": { - "title": "Upscale", - "desc": "Upscale the current image" - }, - "showInfo": { - "title": "Show Info", - "desc": "Show metadata info of the current image" - }, - "sendToImageToImage": { - "title": "Send To Image To Image", - "desc": "Send current image to Image to Image" - }, - "deleteImage": { - "title": "Delete Image", - "desc": "Delete the current image" - }, - "closePanels": { - "title": "Close Panels", - "desc": "Closes open panels" - }, - "previousImage": { - "title": "Previous Image", - "desc": "Display the previous image in gallery" - }, - "nextImage": { - "title": "Next Image", - "desc": "Display the next image in gallery" - }, - "toggleGalleryPin": { - "title": "Toggle Gallery Pin", - "desc": "Pins and unpins the gallery to the UI" - }, - "increaseGalleryThumbSize": { - "title": "Increase Gallery Image Size", - "desc": "Increases gallery thumbnails size" - }, - "decreaseGalleryThumbSize": { - "title": "Decrease Gallery Image Size", - "desc": "Decreases gallery thumbnails size" - }, - "selectBrush": { - "title": "Select Brush", - "desc": "Selects the canvas brush" - }, - "selectEraser": { - "title": "Select Eraser", - "desc": "Selects the canvas eraser" - }, - "decreaseBrushSize": { - "title": "Decrease Brush Size", - "desc": "Decreases the size of the canvas brush/eraser" - }, - "increaseBrushSize": { - "title": "Increase Brush Size", - "desc": "Increases the size of the canvas brush/eraser" - }, - "decreaseBrushOpacity": { - "title": "Decrease Brush Opacity", - "desc": "Decreases the opacity of the canvas brush" - }, - "increaseBrushOpacity": { - "title": "Increase Brush Opacity", - "desc": "Increases the opacity of the canvas brush" - }, - "moveTool": { - "title": "Move Tool", - "desc": "Allows canvas navigation" - }, - "fillBoundingBox": { - "title": "Fill Bounding Box", - "desc": "Fills the bounding box with brush color" - }, - "eraseBoundingBox": { - "title": "Erase Bounding Box", - "desc": "Erases the bounding box area" - }, - "colorPicker": { - "title": "Select Color Picker", - "desc": "Selects the canvas color picker" - }, - "toggleSnap": { - "title": "Toggle Snap", - "desc": "Toggles Snap to Grid" - }, - "quickToggleMove": { - "title": "Quick Toggle Move", - "desc": "Temporarily toggles Move mode" - }, - "toggleLayer": { - "title": "Toggle Layer", - "desc": "Toggles mask/base layer selection" - }, - "clearMask": { - "title": "Clear Mask", - "desc": "Clear the entire mask" - }, - "hideMask": { - "title": "Hide Mask", - "desc": "Hide and unhide mask" - }, - "showHideBoundingBox": { - "title": "Show/Hide Bounding Box", - "desc": "Toggle visibility of bounding box" - }, - "mergeVisible": { - "title": "Merge Visible", - "desc": "Merge all visible layers of canvas" - }, - "saveToGallery": { - "title": "Save To Gallery", - "desc": "Save current canvas to gallery" - }, - "copyToClipboard": { - "title": "Copy to Clipboard", - "desc": "Copy current canvas to clipboard" - }, - "downloadImage": { - "title": "Download Image", - "desc": "Download current canvas" - }, - "undoStroke": { - "title": "Undo Stroke", - "desc": "Undo a brush stroke" - }, - "redoStroke": { - "title": "Redo Stroke", - "desc": "Redo a brush stroke" - }, - "resetView": { - "title": "Reset View", - "desc": "Reset Canvas View" - }, - "previousStagingImage": { - "title": "Previous Staging Image", - "desc": "Previous Staging Area Image" - }, - "nextStagingImage": { - "title": "Next Staging Image", - "desc": "Next Staging Area Image" - }, "acceptStagingImage": { - "title": "Accept Staging Image", - "desc": "Accept Current Staging Area Image" + "desc": "Accept Current Staging Area Image", + "title": "Accept Staging Image" }, "addNodes": { - "title": "Add Nodes", - "desc": "Opens the add node menu" + "desc": "Opens the add node menu", + "title": "Add Nodes" + }, + "appHotkeys": "App Hotkeys", + "cancel": { + "desc": "Cancel image generation", + "title": "Cancel" + }, + "changeTabs": { + "desc": "Switch to another workspace", + "title": "Change Tabs" + }, + "clearMask": { + "desc": "Clear the entire mask", + "title": "Clear Mask" + }, + "closePanels": { + "desc": "Closes open panels", + "title": "Close Panels" + }, + "colorPicker": { + "desc": "Selects the canvas color picker", + "title": "Select Color Picker" + }, + "consoleToggle": { + "desc": "Open and close console", + "title": "Console Toggle" + }, + "copyToClipboard": { + "desc": "Copy current canvas to clipboard", + "title": "Copy to Clipboard" + }, + "decreaseBrushOpacity": { + "desc": "Decreases the opacity of the canvas brush", + "title": "Decrease Brush Opacity" + }, + "decreaseBrushSize": { + "desc": "Decreases the size of the canvas brush/eraser", + "title": "Decrease Brush Size" + }, + "decreaseGalleryThumbSize": { + "desc": "Decreases gallery thumbnails size", + "title": "Decrease Gallery Image Size" + }, + "deleteImage": { + "desc": "Delete the current image", + "title": "Delete Image" + }, + "downloadImage": { + "desc": "Download current canvas", + "title": "Download Image" + }, + "eraseBoundingBox": { + "desc": "Erases the bounding box area", + "title": "Erase Bounding Box" + }, + "fillBoundingBox": { + "desc": "Fills the bounding box with brush color", + "title": "Fill Bounding Box" + }, + "focusPrompt": { + "desc": "Focus the prompt input area", + "title": "Focus Prompt" + }, + "galleryHotkeys": "Gallery Hotkeys", + "generalHotkeys": "General Hotkeys", + "hideMask": { + "desc": "Hide and unhide mask", + "title": "Hide Mask" + }, + "increaseBrushOpacity": { + "desc": "Increases the opacity of the canvas brush", + "title": "Increase Brush Opacity" + }, + "increaseBrushSize": { + "desc": "Increases the size of the canvas brush/eraser", + "title": "Increase Brush Size" + }, + "increaseGalleryThumbSize": { + "desc": "Increases gallery thumbnails size", + "title": "Increase Gallery Image Size" + }, + "invoke": { + "desc": "Generate an image", + "title": "Invoke" + }, + "keyboardShortcuts": "Keyboard Shortcuts", + "maximizeWorkSpace": { + "desc": "Close panels and maximize work area", + "title": "Maximize Workspace" + }, + "mergeVisible": { + "desc": "Merge all visible layers of canvas", + "title": "Merge Visible" + }, + "moveTool": { + "desc": "Allows canvas navigation", + "title": "Move Tool" + }, + "nextImage": { + "desc": "Display the next image in gallery", + "title": "Next Image" + }, + "nextStagingImage": { + "desc": "Next Staging Area Image", + "title": "Next Staging Image" + }, + "nodesHotkeys": "Nodes Hotkeys", + "pinOptions": { + "desc": "Pin the options panel", + "title": "Pin Options" + }, + "previousImage": { + "desc": "Display the previous image in gallery", + "title": "Previous Image" + }, + "previousStagingImage": { + "desc": "Previous Staging Area Image", + "title": "Previous Staging Image" + }, + "quickToggleMove": { + "desc": "Temporarily toggles Move mode", + "title": "Quick Toggle Move" + }, + "redoStroke": { + "desc": "Redo a brush stroke", + "title": "Redo Stroke" + }, + "resetView": { + "desc": "Reset Canvas View", + "title": "Reset View" + }, + "restoreFaces": { + "desc": "Restore the current image", + "title": "Restore Faces" + }, + "saveToGallery": { + "desc": "Save current canvas to gallery", + "title": "Save To Gallery" + }, + "selectBrush": { + "desc": "Selects the canvas brush", + "title": "Select Brush" + }, + "selectEraser": { + "desc": "Selects the canvas eraser", + "title": "Select Eraser" + }, + "sendToImageToImage": { + "desc": "Send current image to Image to Image", + "title": "Send To Image To Image" + }, + "setParameters": { + "desc": "Use all parameters of the current image", + "title": "Set Parameters" + }, + "setPrompt": { + "desc": "Use the prompt of the current image", + "title": "Set Prompt" + }, + "setSeed": { + "desc": "Use the seed of the current image", + "title": "Set Seed" + }, + "showHideBoundingBox": { + "desc": "Toggle visibility of bounding box", + "title": "Show/Hide Bounding Box" + }, + "showInfo": { + "desc": "Show metadata info of the current image", + "title": "Show Info" + }, + "toggleGallery": { + "desc": "Open and close the gallery drawer", + "title": "Toggle Gallery" + }, + "toggleGalleryPin": { + "desc": "Pins and unpins the gallery to the UI", + "title": "Toggle Gallery Pin" + }, + "toggleLayer": { + "desc": "Toggles mask/base layer selection", + "title": "Toggle Layer" + }, + "toggleOptions": { + "desc": "Open and close the options panel", + "title": "Toggle Options" + }, + "toggleSnap": { + "desc": "Toggles Snap to Grid", + "title": "Toggle Snap" + }, + "toggleViewer": { + "desc": "Open and close Image Viewer", + "title": "Toggle Viewer" + }, + "undoStroke": { + "desc": "Undo a brush stroke", + "title": "Undo Stroke" + }, + "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", + "upscale": { + "desc": "Upscale the current image", + "title": "Upscale" } }, - "modelManager": { - "modelManager": "Model Manager", + "metadata": { + "cfgScale": "CFG scale", + "createdBy": "Created By", + "fit": "Image to image fit", + "generationMode": "Generation Mode", + "height": "Height", + "hiresFix": "High Resolution Optimization", + "imageDetails": "Image Details", + "initImage": "Initial image", + "metadata": "Metadata", "model": "Model", - "vae": "VAE", - "allModels": "All Models", - "checkpointModels": "Checkpoints", - "diffusersModels": "Diffusers", - "loraModels": "LoRAs", - "safetensorModels": "SafeTensors", - "onnxModels": "Onnx", - "oliveModels": "Olives", - "modelAdded": "Model Added", - "modelUpdated": "Model Updated", - "modelUpdateFailed": "Model Update Failed", - "modelEntryDeleted": "Model Entry Deleted", - "cannotUseSpaces": "Cannot Use Spaces", + "negativePrompt": "Negative Prompt", + "noImageDetails": "No image details found", + "noMetaData": "No metadata found", + "perlin": "Perlin Noise", + "positivePrompt": "Positive Prompt", + "scheduler": "Scheduler", + "seamless": "Seamless", + "seed": "Seed", + "steps": "Steps", + "strength": "Image to image strength", + "Threshold": "Noise Threshold", + "variations": "Seed-weight pairs", + "width": "Width", + "workflow": "Workflow" + }, + "modelManager": { + "active": "active", + "addCheckpointModel": "Add Checkpoint / Safetensor Model", + "addDifference": "Add Difference", + "addDiffuserModel": "Add Diffusers", + "addManually": "Add Manually", + "addModel": "Add Model", "addNew": "Add New", "addNewModel": "Add New Model", - "addCheckpointModel": "Add Checkpoint / Safetensor Model", - "addDiffuserModel": "Add Diffusers", - "scanForModels": "Scan For Models", - "addManually": "Add Manually", - "manual": "Manual", + "addSelected": "Add Selected", + "advanced": "Advanced", + "allModels": "All Models", + "alpha": "Alpha", + "availableModels": "Available Models", "baseModel": "Base Model", - "name": "Name", - "nameValidationMsg": "Enter a name for your model", - "description": "Description", - "descriptionValidationMsg": "Add a description for your model", + "cached": "cached", + "cannotUseSpaces": "Cannot Use Spaces", + "checkpointFolder": "Checkpoint Folder", + "checkpointModels": "Checkpoints", + "clearCheckpointFolder": "Clear Checkpoint Folder", + "closeAdvanced": "Close Advanced", "config": "Config", "configValidationMsg": "Path to the config file of your model.", - "modelLocation": "Model Location", - "modelLocationValidationMsg": "Path to where your model is located locally.", - "repo_id": "Repo ID", - "repoIDValidationMsg": "Online repository of your model", - "vaeLocation": "VAE Location", - "vaeLocationValidationMsg": "Path to where your VAE is located.", - "variant": "Variant", - "vaeRepoID": "VAE Repo ID", - "vaeRepoIDValidationMsg": "Online repository of your VAE", - "width": "Width", - "widthValidationMsg": "Default width of your model.", - "height": "Height", - "heightValidationMsg": "Default height of your model.", - "addModel": "Add Model", - "updateModel": "Update Model", - "availableModels": "Available Models", - "search": "Search", - "load": "Load", - "active": "active", - "notLoaded": "not loaded", - "cached": "cached", - "checkpointFolder": "Checkpoint Folder", - "clearCheckpointFolder": "Clear Checkpoint Folder", - "findModels": "Find Models", - "scanAgain": "Scan Again", - "modelsFound": "Models Found", - "selectFolder": "Select Folder", - "selected": "Selected", - "selectAll": "Select All", - "deselectAll": "Deselect All", - "showExisting": "Show Existing", - "addSelected": "Add Selected", - "modelExists": "Model Exists", - "selectAndAdd": "Select and Add Models Listed Below", - "noModelsFound": "No Models Found", - "delete": "Delete", - "deleteModel": "Delete Model", - "deleteConfig": "Delete Config", - "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", - "modelDeleted": "Model Deleted", - "modelDeleteFailed": "Failed to delete model", - "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", - "formMessageDiffusersModelLocation": "Diffusers Model Location", - "formMessageDiffusersModelLocationDesc": "Please enter at least one.", - "formMessageDiffusersVAELocation": "VAE Location", - "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", "convert": "Convert", + "convertingModelBegin": "Converting Model. Please wait.", "convertToDiffusers": "Convert To Diffusers", "convertToDiffusersHelpText1": "This model will be converted to the 🧨 Diffusers format.", "convertToDiffusersHelpText2": "This process will replace your Model Manager entry with the Diffusers version of the same model.", @@ -422,316 +502,634 @@ "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", "convertToDiffusersHelpText6": "Do you wish to convert this model?", "convertToDiffusersSaveLocation": "Save Location", - "noCustomLocationProvided": "No Custom Location Provided", - "convertingModelBegin": "Converting Model. Please wait.", - "v1": "v1", - "v2_base": "v2 (512px)", - "v2_768": "v2 (768px)", - "inpainting": "v1 Inpainting", - "customConfig": "Custom Config", - "pathToCustomConfig": "Path To Custom Config", - "statusConverting": "Converting", - "modelConverted": "Model Converted", - "modelConversionFailed": "Model Conversion Failed", - "sameFolder": "Same folder", - "invokeRoot": "InvokeAI folder", "custom": "Custom", + "customConfig": "Custom Config", + "customConfigFileLocation": "Custom Config File Location", "customSaveLocation": "Custom Save Location", - "merge": "Merge", - "modelsMerged": "Models Merged", - "modelsMergeFailed": "Model Merge Failed", - "mergeModels": "Merge Models", - "modelOne": "Model 1", - "modelTwo": "Model 2", - "modelThree": "Model 3", - "mergedModelName": "Merged Model Name", - "alpha": "Alpha", - "interpolationType": "Interpolation Type", - "mergedModelSaveLocation": "Save Location", - "mergedModelCustomSaveLocation": "Custom Path", - "invokeAIFolder": "Invoke AI Folder", + "delete": "Delete", + "deleteConfig": "Delete Config", + "deleteModel": "Delete Model", + "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", + "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", + "description": "Description", + "descriptionValidationMsg": "Add a description for your model", + "deselectAll": "Deselect All", + "diffusersModels": "Diffusers", + "findModels": "Find Models", + "formMessageDiffusersModelLocation": "Diffusers Model Location", + "formMessageDiffusersModelLocationDesc": "Please enter at least one.", + "formMessageDiffusersVAELocation": "VAE Location", + "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", + "height": "Height", + "heightValidationMsg": "Default height of your model.", "ignoreMismatch": "Ignore Mismatches Between Selected Models", + "importModels": "Import Models", + "inpainting": "v1 Inpainting", + "interpolationType": "Interpolation Type", + "inverseSigmoid": "Inverse Sigmoid", + "invokeAIFolder": "Invoke AI Folder", + "invokeRoot": "InvokeAI folder", + "load": "Load", + "loraModels": "LoRAs", + "manual": "Manual", + "merge": "Merge", + "mergedModelCustomSaveLocation": "Custom Path", + "mergedModelName": "Merged Model Name", + "mergedModelSaveLocation": "Save Location", + "mergeModels": "Merge Models", + "model": "Model", + "modelAdded": "Model Added", + "modelConversionFailed": "Model Conversion Failed", + "modelConverted": "Model Converted", + "modelDeleted": "Model Deleted", + "modelDeleteFailed": "Failed to delete model", + "modelEntryDeleted": "Model Entry Deleted", + "modelExists": "Model Exists", + "modelLocation": "Model Location", + "modelLocationValidationMsg": "Provide the path to a local folder where your Diffusers Model is stored", + "modelManager": "Model Manager", + "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeHeaderHelp1": "You can merge up to three different models to create a blend that suits your needs.", "modelMergeHeaderHelp2": "Only Diffusers are available for merging. If you want to merge a checkpoint model, please convert it to Diffusers first.", - "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeInterpAddDifferenceHelp": "In this mode, Model 3 is first subtracted from Model 2. The resulting version is blended with Model 1 with the alpha rate set above.", - "inverseSigmoid": "Inverse Sigmoid", - "sigmoid": "Sigmoid", - "weightedSum": "Weighted Sum", + "modelOne": "Model 1", + "modelsFound": "Models Found", + "modelsMerged": "Models Merged", + "modelsMergeFailed": "Model Merge Failed", + "modelsSynced": "Models Synced", + "modelSyncFailed": "Model Sync Failed", + "modelThree": "Model 3", + "modelTwo": "Model 2", + "modelType": "Model Type", + "modelUpdated": "Model Updated", + "modelUpdateFailed": "Model Update Failed", + "name": "Name", + "nameValidationMsg": "Enter a name for your model", + "noCustomLocationProvided": "No Custom Location Provided", + "noModels": "No Models Found", + "noModelsFound": "No Models Found", "none": "none", - "addDifference": "Add Difference", + "notLoaded": "not loaded", + "oliveModels": "Olives", + "onnxModels": "Onnx", + "pathToCustomConfig": "Path To Custom Config", "pickModelType": "Pick Model Type", + "predictionType": "Prediction Type (for Stable Diffusion 2.x Models only)", + "quickAdd": "Quick Add", + "repo_id": "Repo ID", + "repoIDValidationMsg": "Online repository of your model", + "safetensorModels": "SafeTensors", + "sameFolder": "Same folder", + "scanAgain": "Scan Again", + "scanForModels": "Scan For Models", + "search": "Search", + "selectAll": "Select All", + "selectAndAdd": "Select and Add Models Listed Below", + "selected": "Selected", + "selectFolder": "Select Folder", "selectModel": "Select Model", - "importModels": "Import Models", "settings": "Settings", + "showExisting": "Show Existing", + "sigmoid": "Sigmoid", + "simpleModelDesc": "Provide a path to a local Diffusers model, local checkpoint / safetensors model a HuggingFace Repo ID, or a checkpoint/diffusers model URL.", + "statusConverting": "Converting", "syncModels": "Sync Models", "syncModelsDesc": "If your models are out of sync with the backend, you can refresh them up using this option. This is generally handy in cases where you manually update your models.yaml file or add models to the InvokeAI root folder after the application has booted.", - "modelsSynced": "Models Synced", - "modelSyncFailed": "Model Sync Failed" + "updateModel": "Update Model", + "useCustomConfig": "Use Custom Config", + "v1": "v1", + "v2_768": "v2 (768px)", + "v2_base": "v2 (512px)", + "vae": "VAE", + "vaeLocation": "VAE Location", + "vaeLocationValidationMsg": "Path to where your VAE is located.", + "vaeRepoID": "VAE Repo ID", + "vaeRepoIDValidationMsg": "Online repository of your VAE", + "variant": "Variant", + "weightedSum": "Weighted Sum", + "width": "Width", + "widthValidationMsg": "Default width of your model." + }, + "models": { + "loading": "loading", + "noLoRAsAvailable": "No LoRAs available", + "noMatchingLoRAs": "No matching LoRAs", + "noMatchingModels": "No matching Models", + "noModelsAvailable": "No Modelss available", + "selectLoRA": "Select a LoRA", + "selectModel": "Select a Model" + }, + "nodes": { + "addNode": "Add Node", + "addNodeToolTip": "Add Node (Shift+A, Space)", + "animatedEdges": "Animated Edges", + "animatedEdgesHelp": "Animate selected edges and edges connected to selected nodes", + "boolean": "Booleans", + "booleanCollection": "Boolean Collection", + "booleanCollectionDescription": "A collection of booleans.", + "booleanDescription": "Booleans are true or false.", + "booleanPolymorphic": "Boolean Polymorphic", + "booleanPolymorphicDescription": "A collection of booleans.", + "cannotConnectInputToInput": "Cannot connect input to input", + "cannotConnectOutputToOutput": "Cannot connect output to output", + "cannotConnectToSelf": "Cannot connect to self", + "clipField": "Clip", + "clipFieldDescription": "Tokenizer and text_encoder submodels.", + "collection": "Collection", + "collectionDescription": "TODO", + "collectionItem": "Collection Item", + "collectionItemDescription": "TODO", + "colorCodeEdges": "Color-Code Edges", + "colorCodeEdgesHelp": "Color-code edges according to their connected fields", + "colorCollectionDescription": "A collection of colors.", + "colorField": "Color", + "colorFieldDescription": "A RGBA color.", + "colorPolymorphic": "Color Polymorphic", + "colorPolymorphicDescription": "A collection of colors.", + "conditioningCollection": "Conditioning Collection", + "conditioningCollectionDescription": "Conditioning may be passed between nodes.", + "conditioningField": "Conditioning", + "conditioningFieldDescription": "Conditioning may be passed between nodes.", + "conditioningPolymorphic": "Conditioning Polymorphic", + "conditioningPolymorphicDescription": "Conditioning may be passed between nodes.", + "connectionWouldCreateCycle": "Connection would create a cycle", + "controlCollection": "Control Collection", + "controlCollectionDescription": "Control info passed between nodes.", + "controlField": "Control", + "controlFieldDescription": "Control info passed between nodes.", + "currentImage": "Current Image", + "currentImageDescription": "Displays the current image in the Node Editor", + "denoiseMaskField": "Denoise Mask", + "denoiseMaskFieldDescription": "Denoise Mask may be passed between nodes", + "doesNotExist": "does not exist", + "downloadWorkflow": "Download Workflow JSON", + "edge": "Edge", + "enum": "Enum", + "enumDescription": "Enums are values that may be one of a number of options.", + "executionStateCompleted": "Completed", + "executionStateError": "Error", + "executionStateInProgress": "In Progress", + "fieldTypesMustMatch": "Field types must match", + "fitViewportNodes": "Fit View", + "float": "Float", + "floatCollection": "Float Collection", + "floatCollectionDescription": "A collection of floats.", + "floatDescription": "Floats are numbers with a decimal point.", + "floatPolymorphic": "Float Polymorphic", + "floatPolymorphicDescription": "A collection of floats.", + "fullyContainNodes": "Fully Contain Nodes to Select", + "fullyContainNodesHelp": "Nodes must be fully inside the selection box to be selected", + "hideGraphNodes": "Hide Graph Overlay", + "hideLegendNodes": "Hide Field Type Legend", + "hideMinimapnodes": "Hide MiniMap", + "imageCollection": "Image Collection", + "imageCollectionDescription": "A collection of images.", + "imageField": "Image", + "imageFieldDescription": "Images may be passed between nodes.", + "imagePolymorphic": "Image Polymorphic", + "imagePolymorphicDescription": "A collection of images.", + "inputFields": "Input Feilds", + "inputMayOnlyHaveOneConnection": "Input may only have one connection", + "inputNode": "Input Node", + "integer": "Integer", + "integerCollection": "Integer Collection", + "integerCollectionDescription": "A collection of integers.", + "integerDescription": "Integers are whole numbers, without a decimal point.", + "integerPolymorphic": "Integer Polymorphic", + "integerPolymorphicDescription": "A collection of integers.", + "invalidOutputSchema": "Invalid output schema", + "latentsCollection": "Latents Collection", + "latentsCollectionDescription": "Latents may be passed between nodes.", + "latentsField": "Latents", + "latentsFieldDescription": "Latents may be passed between nodes.", + "latentsPolymorphic": "Latents Polymorphic", + "latentsPolymorphicDescription": "Latents may be passed between nodes.", + "loadingNodes": "Loading Nodes...", + "loadWorkflow": "Load Workflow", + "loRAModelField": "LoRA", + "loRAModelFieldDescription": "TODO", + "mainModelField": "Model", + "mainModelFieldDescription": "TODO", + "maybeIncompatible": "May be Incompatible With Installed", + "mismatchedVersion": "Has Mismatched Version", + "missingCanvaInitImage": "Missing canvas init image", + "missingCanvaInitMaskImages": "Missing canvas init and mask images", + "missingTemplate": "Missing Template", + "noConnectionData": "No connection data", + "noConnectionInProgress": "No connection in progress", + "node": "Node", + "nodeOutputs": "Node Outputs", + "nodeSearch": "Search for nodes", + "nodeTemplate": "Node Template", + "nodeType": "Node Type", + "noFieldsLinearview": "No fields added to Linear View", + "noFieldType": "No field type", + "noImageFoundState": "No initial image found in state", + "noMatchingNodes": "No matching nodes", + "noNodeSelected": "No node selected", + "noOpacity": "Node Opacity", + "noOutputRecorded": "No outputs recorded", + "noOutputSchemaName": "No output schema name found in ref object", + "notes": "Notes", + "notesDescription": "Add notes about your workflow", + "oNNXModelField": "ONNX Model", + "oNNXModelFieldDescription": "ONNX model field.", + "outputFields": "Output Feilds", + "outputNode": "Output node", + "outputSchemaNotFound": "Output schema not found", + "pickOne": "Pick One", + "problemReadingMetadata": "Problem reading metadata from image", + "problemReadingWorkflow": "Problem reading workflow from image", + "problemSettingTitle": "Problem Setting Title", + "reloadNodeTemplates": "Reload Node Templates", + "removeLinearView": "Remove from Linear View", + "resetWorkflow": "Reset Workflow", + "resetWorkflowDesc": "Are you sure you want to reset this workflow?", + "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", + "scheduler": "Scheduler", + "schedulerDescription": "TODO", + "sDXLMainModelField": "SDXL Model", + "sDXLMainModelFieldDescription": "SDXL model field.", + "sDXLRefinerModelField": "Refiner Model", + "sDXLRefinerModelFieldDescription": "TODO", + "showGraphNodes": "Show Graph Overlay", + "showLegendNodes": "Show Field Type Legend", + "showMinimapnodes": "Show MiniMap", + "skipped": "Skipped", + "skippedReservedInput": "Skipped reserved input field", + "skippedReservedOutput": "Skipped reserved output field", + "skippingInputNoTemplate": "Skipping input field with no template", + "skippingReservedFieldType": "Skipping reserved field type", + "skippingUnknownInputType": "Skipping unknown input field type", + "skippingUnknownOutputType": "Skipping unknown output field type", + "snapToGrid": "Snap to Grid", + "snapToGridHelp": "Snap nodes to grid when moved", + "sourceNode": "Source node", + "string": "String", + "stringCollection": "String Collection", + "stringCollectionDescription": "A collection of strings.", + "stringDescription": "Strings are text.", + "stringPolymorphic": "String Polymorphic", + "stringPolymorphicDescription": "A collection of strings.", + "unableToLoadWorkflow": "Unable to Validate Workflow", + "unableToParseEdge": "Unable to parse edge", + "unableToParseNode": "Unable to parse node", + "unableToValidateWorkflow": "Unable to Validate Workflow", + "uNetField": "UNet", + "uNetFieldDescription": "UNet submodel.", + "unhandledInputProperty": "Unhandled input property", + "unhandledOutputProperty": "Unhandled output property", + "unknownField": "Unknown Field", + "unknownNode": "Unknown Node", + "unknownTemplate": "Unknown Template", + "unkownInvocation": "Unknown Invocation type", + "updateApp": "Update App", + "vaeField": "Vae", + "vaeFieldDescription": "Vae submodel.", + "vaeModelField": "VAE", + "vaeModelFieldDescription": "TODO", + "validateConnections": "Validate Connections and Graph", + "validateConnectionsHelp": "Prevent invalid connections from being made, and invalid graphs from being invoked", + "version": "Version", + "versionUnknown": " Version Unknown", + "workflow": "Workflow", + "workflowAuthor": "Author", + "workflowContact": "Contact", + "workflowDescription": "Short Description", + "workflowName": "Name", + "workflowNotes": "Notes", + "workflowSettings": "Workflow Editor Settings", + "workflowTags": "Tags", + "workflowValidation": "Workflow Validation Error", + "workflowVersion": "Version", + "zoomInNodes": "Zoom In", + "zoomOutNodes": "Zoom Out" }, "parameters": { - "general": "General", - "images": "Images", - "steps": "Steps", - "cfgScale": "CFG Scale", - "width": "Width", - "height": "Height", - "scheduler": "Scheduler", - "seed": "Seed", - "boundingBoxWidth": "Bounding Box Width", + "aspectRatio": "Ratio", + "boundingBoxHeader": "Bounding Box", "boundingBoxHeight": "Bounding Box Height", - "imageToImage": "Image to Image", - "randomizeSeed": "Randomize Seed", - "shuffle": "Shuffle Seed", - "noiseThreshold": "Noise Threshold", - "perlinNoise": "Perlin Noise", - "noiseSettings": "Noise", - "variations": "Variations", - "variationAmount": "Variation Amount", - "seedWeights": "Seed Weights", - "faceRestoration": "Face Restoration", - "restoreFaces": "Restore Faces", - "type": "Type", - "strength": "Strength", - "upscaling": "Upscaling", - "upscale": "Upscale", - "upscaleImage": "Upscale Image", - "denoisingStrength": "Denoising Strength", - "scale": "Scale", - "otherOptions": "Other Options", - "seamlessTiling": "Seamless Tiling", - "seamlessXAxis": "X Axis", - "seamlessYAxis": "Y Axis", - "hiresOptim": "High Res Optimization", - "hiresStrength": "High Res Strength", - "imageFit": "Fit Initial Image To Output Size", + "boundingBoxWidth": "Bounding Box Width", + "cancel": { + "cancel": "Cancel", + "immediate": "Cancel immediately", + "isScheduled": "Canceling", + "schedule": "Cancel after current iteration", + "setType": "Set cancel type" + }, + "cfgScale": "CFG Scale", + "clipSkip": "CLIP Skip", + "closeViewer": "Close Viewer", "codeformerFidelity": "Fidelity", - "compositingSettingsHeader": "Compositing Settings", - "maskAdjustmentsHeader": "Mask Adjustments", - "maskBlur": "Blur", - "maskBlurMethod": "Blur Method", + "coherenceMode": "Mode", "coherencePassHeader": "Coherence Pass", "coherenceSteps": "Steps", "coherenceStrength": "Strength", - "seamLowThreshold": "Low", - "seamHighThreshold": "High", - "scaleBeforeProcessing": "Scale Before Processing", - "scaledWidth": "Scaled W", - "scaledHeight": "Scaled H", - "infillMethod": "Infill Method", - "tileSize": "Tile Size", - "boundingBoxHeader": "Bounding Box", - "seamCorrectionHeader": "Seam Correction", - "infillScalingHeader": "Infill and Scaling", - "img2imgStrength": "Image To Image Strength", - "toggleLoopback": "Toggle Loopback", - "symmetry": "Symmetry", + "compositingSettingsHeader": "Compositing Settings", + "controlNetControlMode": "Control Mode", + "copyImage": "Copy Image", + "copyImageToLink": "Copy Image To Link", + "denoisingStrength": "Denoising Strength", + "downloadImage": "Download Image", + "enableNoiseSettings": "Enable Noise Settings", + "faceRestoration": "Face Restoration", + "general": "General", + "height": "Height", + "hidePreview": "Hide Preview", + "hiresOptim": "High Res Optimization", + "hiresStrength": "High Res Strength", "hSymmetryStep": "H Symmetry Step", - "vSymmetryStep": "V Symmetry Step", - "invoke": "Invoke", - "cancel": { - "immediate": "Cancel immediately", - "schedule": "Cancel after current iteration", - "isScheduled": "Canceling", - "setType": "Set cancel type" + "imageFit": "Fit Initial Image To Output Size", + "images": "Images", + "imageToImage": "Image to Image", + "img2imgStrength": "Image To Image Strength", + "infillMethod": "Infill Method", + "infillScalingHeader": "Infill and Scaling", + "info": "Info", + "initialImage": "Initial Image", + "invoke": { + "addingImagesTo": "Adding images to", + "invoke": "Invoke", + "missingFieldTemplate": "Missing field template", + "missingInputForField": "{{nodeLabel}} -> {{fieldLabel}} missing input", + "missingNodeTemplate": "Missing node template", + "noControlImageForControlNet": "ControlNet {{index}} has no control image", + "noInitialImageSelected": "No initial image selected", + "noModelForControlNet": "ControlNet {{index}} has no model selected.", + "noModelSelected": "No model selected", + "noNodesInGraph": "No nodes in graph", + "readyToInvoke": "Ready to Invoke", + "systemBusy": "System busy", + "systemDisconnected": "System disconnected", + "unableToInvoke": "Unable to Invoke" }, - "positivePromptPlaceholder": "Positive Prompt", + "maskAdjustmentsHeader": "Mask Adjustments", + "maskBlur": "Blur", + "maskBlurMethod": "Blur Method", "negativePromptPlaceholder": "Negative Prompt", + "noiseSettings": "Noise", + "noiseThreshold": "Noise Threshold", + "openInViewer": "Open In Viewer", + "otherOptions": "Other Options", + "patchmatchDownScaleSize": "Downscale", + "perlinNoise": "Perlin Noise", + "positivePromptPlaceholder": "Positive Prompt", + "randomizeSeed": "Randomize Seed", + "restoreFaces": "Restore Faces", + "scale": "Scale", + "scaleBeforeProcessing": "Scale Before Processing", + "scaledHeight": "Scaled H", + "scaledWidth": "Scaled W", + "scheduler": "Scheduler", + "seamCorrectionHeader": "Seam Correction", + "seamHighThreshold": "High", + "seamlessTiling": "Seamless Tiling", + "seamlessXAxis": "X Axis", + "seamlessYAxis": "Y Axis", + "seamLowThreshold": "Low", + "seed": "Seed", + "seedWeights": "Seed Weights", "sendTo": "Send to", "sendToImg2Img": "Send to Image to Image", "sendToUnifiedCanvas": "Send To Unified Canvas", - "copyImage": "Copy Image", - "copyImageToLink": "Copy Image To Link", - "downloadImage": "Download Image", - "openInViewer": "Open In Viewer", - "closeViewer": "Close Viewer", + "showOptionsPanel": "Show Options Panel", + "showPreview": "Show Preview", + "shuffle": "Shuffle Seed", + "steps": "Steps", + "strength": "Strength", + "symmetry": "Symmetry", + "tileSize": "Tile Size", + "toggleLoopback": "Toggle Loopback", + "type": "Type", + "upscale": "Upscale", + "upscaleImage": "Upscale Image", + "upscaling": "Upscaling", + "useAll": "Use All", + "useCpuNoise": "Use CPU Noise", + "useInitImg": "Use Initial Image", "usePrompt": "Use Prompt", "useSeed": "Use Seed", - "useAll": "Use All", - "useInitImg": "Use Initial Image", - "info": "Info", - "initialImage": "Initial Image", - "showOptionsPanel": "Show Options Panel", - "hidePreview": "Hide Preview", - "showPreview": "Show Preview", - "controlNetControlMode": "Control Mode", - "clipSkip": "CLIP Skip", - "aspectRatio": "Ratio" + "variationAmount": "Variation Amount", + "variations": "Variations", + "vSymmetryStep": "V Symmetry Step", + "width": "Width" + }, + "prompt": { + "combinatorial": "Combinatorial Generation", + "dynamicPrompts": "Dynamic Prompts", + "enableDynamicPrompts": "Enable Dynamic Prompts", + "maxPrompts": "Max Prompts" + }, + "sdxl": { + "cfgScale": "CFG Scale", + "concatPromptStyle": "Concatenate Prompt & Style", + "denoisingStrength": "Denoising Strength", + "loading": "Loading...", + "negAestheticScore": "Negative Aesthetic Score", + "negStylePrompt": "Negative Style Prompt", + "noModelsAvailable": "No models available", + "posAestheticScore": "Positive Aesthetic Score", + "posStylePrompt": "Positive Style Prompt", + "refiner": "Refiner", + "refinermodel": "Refiner Model", + "refinerStart": "Refiner Start", + "scheduler": "Scheduler", + "selectAModel": "Select a model", + "steps": "Steps", + "useRefiner": "Use Refiner" }, "settings": { - "models": "Models", - "displayInProgress": "Display Progress Images", - "saveSteps": "Save images every n steps", - "confirmOnDelete": "Confirm On Delete", - "displayHelpIcons": "Display Help Icons", "alternateCanvasLayout": "Alternate Canvas Layout", - "enableNodesEditor": "Enable Nodes Editor", - "enableImageDebugging": "Enable Image Debugging", - "useSlidersForAll": "Use Sliders For All Options", - "showProgressInViewer": "Show Progress Images in Viewer", "antialiasProgressImages": "Antialias Progress Images", "autoChangeDimensions": "Update W/H To Model Defaults On Change", + "beta": "Beta", + "confirmOnDelete": "Confirm On Delete", + "consoleLogLevel": "Log Level", + "developer": "Developer", + "displayHelpIcons": "Display Help Icons", + "displayInProgress": "Display Progress Images", + "enableImageDebugging": "Enable Image Debugging", + "enableNodesEditor": "Enable Nodes Editor", + "experimental": "Experimental", + "favoriteSchedulers": "Favorite Schedulers", + "favoriteSchedulersPlaceholder": "No schedulers favorited", + "general": "General", + "generation": "Generation", + "models": "Models", + "resetComplete": "Web UI has been reset.", "resetWebUI": "Reset Web UI", "resetWebUIDesc1": "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.", "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", - "resetComplete": "Web UI has been reset.", - "consoleLogLevel": "Log Level", + "saveSteps": "Save images every n steps", "shouldLogToConsole": "Console Logging", - "developer": "Developer", - "general": "General", - "generation": "Generation", - "ui": "User Interface", - "favoriteSchedulers": "Favorite Schedulers", - "favoriteSchedulersPlaceholder": "No schedulers favorited", "showAdvancedOptions": "Show Advanced Options", - "experimental": "Experimental", - "beta": "Beta" + "showProgressInViewer": "Show Progress Images in Viewer", + "ui": "User Interface", + "useSlidersForAll": "Use Sliders For All Options" }, "toast": { - "serverError": "Server Error", - "disconnected": "Disconnected from Server", - "connected": "Connected to Server", + "addedToBoard": "Added to board", + "baseModelChangedCleared": "Base model changed, cleared", "canceled": "Processing Canceled", - "tempFoldersEmptied": "Temp Folder Emptied", - "uploadFailed": "Upload failed", - "uploadFailedUnableToLoadDesc": "Unable to load file", - "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "canvasCopiedClipboard": "Canvas Copied to Clipboard", + "canvasDownloaded": "Canvas Downloaded", + "canvasMerged": "Canvas Merged", + "canvasSavedGallery": "Canvas Saved to Gallery", + "canvasSentControlnetAssets": "Canvas Sent to ControlNet & Assets", + "connected": "Connected to Server", + "disconnected": "Disconnected from Server", "downloadImageStarted": "Image Download Started", + "faceRestoreFailed": "Face Restoration Failed", "imageCopied": "Image Copied", - "problemCopyingImage": "Unable to Copy Image", "imageLinkCopied": "Image Link Copied", - "problemCopyingImageLink": "Unable to Copy Image Link", "imageNotLoaded": "No Image Loaded", "imageNotLoadedDesc": "Could not find image", + "imageSaved": "Image Saved", "imageSavedToGallery": "Image Saved to Gallery", - "canvasMerged": "Canvas Merged", - "sentToImageToImage": "Sent To Image To Image", - "sentToUnifiedCanvas": "Sent to Unified Canvas", - "parameterSet": "Parameter set", - "parameterNotSet": "Parameter not set", - "parametersSet": "Parameters Set", - "parametersNotSet": "Parameters Not Set", - "parametersNotSetDesc": "No metadata found for this image.", - "parametersFailed": "Problem loading parameters", - "parametersFailedDesc": "Unable to load init image.", - "seedSet": "Seed Set", - "seedNotSet": "Seed Not Set", - "seedNotSetDesc": "Could not find seed for this image.", - "promptSet": "Prompt Set", - "promptNotSet": "Prompt Not Set", - "promptNotSetDesc": "Could not find prompt for this image.", - "upscalingFailed": "Upscaling Failed", - "faceRestoreFailed": "Face Restoration Failed", - "metadataLoadFailed": "Failed to load metadata", - "initialImageSet": "Initial Image Set", + "imageSavingFailed": "Image Saving Failed", + "imageUploaded": "Image Uploaded", + "imageUploadFailed": "Image Upload Failed", + "incompatibleSubmodel": "incompatible submodel", "initialImageNotSet": "Initial Image Not Set", "initialImageNotSetDesc": "Could not load initial image", - "nodesSaved": "Nodes Saved", + "initialImageSet": "Initial Image Set", + "loadedWithWarnings": "Workflow Loaded with Warnings", + "maskSavedAssets": "Mask Saved to Assets", + "maskSentControlnetAssets": "Mask Sent to ControlNet & Assets", + "metadataLoadFailed": "Failed to load metadata", + "modelAdded": "Model Added: {{modelName}}", + "modelAddedSimple": "Model Added", + "modelAddFailed": "Model Add Failed", + "nodesBrokenConnections": "Cannot load. Some connections are broken.", + "nodesCleared": "Nodes Cleared", + "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", "nodesLoaded": "Nodes Loaded", + "nodesLoadedFailed": "Failed To Load Nodes", "nodesNotValidGraph": "Not a valid InvokeAI Node Graph", "nodesNotValidJSON": "Not a valid JSON", - "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", + "nodesSaved": "Nodes Saved", "nodesUnrecognizedTypes": "Cannot load. Graph has unrecognized types", - "nodesBrokenConnections": "Cannot load. Some connections are broken.", - "nodesLoadedFailed": "Failed To Load Nodes", - "nodesCleared": "Nodes Cleared" + "parameterNotSet": "Parameter not set", + "parameterSet": "Parameter set", + "parametersFailed": "Problem loading parameters", + "parametersFailedDesc": "Unable to load init image.", + "parametersNotSet": "Parameters Not Set", + "parametersNotSetDesc": "No metadata found for this image.", + "parametersSet": "Parameters Set", + "problemCopyingCanvas": "Problem Copying Canvas", + "problemCopyingCanvasDesc": "Unable to export base layer", + "problemCopyingImage": "Unable to Copy Image", + "problemCopyingImageLink": "Unable to Copy Image Link", + "problemDownloadingCanvas": "Problem Downloading Canvas", + "problemDownloadingCanvasDesc": "Unable to export base layer", + "problemImportingMask": "Problem Importing Mask", + "problemImportingMaskDesc": "Unable to export mask", + "problemMergingCanvas": "Problem Merging Canvas", + "problemMergingCanvasDesc": "Unable to export base layer", + "problemSavingCanvas": "Problem Saving Canvas", + "problemSavingCanvasDesc": "Unable to export base layer", + "problemSavingMask": "Problem Saving Mask", + "problemSavingMaskDesc": "Unable to export mask", + "promptNotSet": "Prompt Not Set", + "promptNotSetDesc": "Could not find prompt for this image.", + "promptSet": "Prompt Set", + "seedNotSet": "Seed Not Set", + "seedNotSetDesc": "Could not find seed for this image.", + "seedSet": "Seed Set", + "sentToImageToImage": "Sent To Image To Image", + "sentToUnifiedCanvas": "Sent to Unified Canvas", + "serverError": "Server Error", + "setCanvasInitialImage": "Set as canvas initial image", + "setControlImage": "Set as control image", + "setIPAdapterImage": "Set as IP Adapter Image", + "setInitialImage": "Set as initial image", + "setNodeField": "Set as node field", + "tempFoldersEmptied": "Temp Folder Emptied", + "uploadFailed": "Upload failed", + "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "uploadFailedUnableToLoadDesc": "Unable to load file", + "upscalingFailed": "Upscaling Failed", + "workflowLoaded": "Workflow Loaded" }, "tooltip": { "feature": { - "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", - "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", - "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", - "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", - "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3.", - "upscale": "Use ESRGAN to enlarge the image immediately after generation.", - "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", - "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", "boundingBox": "The bounding box is the same as the Width and Height settings for Text to Image or Image to Image. Only the area in the box will be processed.", + "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", + "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", + "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", + "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes).", + "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", + "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", "seamCorrection": "Controls the handling of visible seams that occur between generated images on the canvas.", - "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes)." + "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", + "upscale": "Use ESRGAN to enlarge the image immediately after generation.", + "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3." } }, + "ui": { + "hideProgressImages": "Hide Progress Images", + "lockRatio": "Lock Ratio", + "showProgressImages": "Show Progress Images", + "swapSizes": "Swap Sizes" + }, "unifiedCanvas": { - "layer": "Layer", - "base": "Base", - "mask": "Mask", - "maskingOptions": "Masking Options", - "enableMask": "Enable Mask", - "preserveMaskedArea": "Preserve Masked Area", - "clearMask": "Clear Mask", - "brush": "Brush", - "eraser": "Eraser", - "fillBoundingBox": "Fill Bounding Box", - "eraseBoundingBox": "Erase Bounding Box", - "colorPicker": "Color Picker", - "brushOptions": "Brush Options", - "brushSize": "Size", - "move": "Move", - "resetView": "Reset View", - "mergeVisible": "Merge Visible", - "saveToGallery": "Save To Gallery", - "copyToClipboard": "Copy to Clipboard", - "downloadAsImage": "Download As Image", - "undo": "Undo", - "redo": "Redo", - "clearCanvas": "Clear Canvas", - "canvasSettings": "Canvas Settings", - "showIntermediates": "Show Intermediates", - "showGrid": "Show Grid", - "snapToGrid": "Snap to Grid", - "darkenOutsideSelection": "Darken Outside Selection", - "autoSaveToGallery": "Auto Save to Gallery", - "saveBoxRegionOnly": "Save Box Region Only", - "limitStrokesToBox": "Limit Strokes to Box", - "showCanvasDebugInfo": "Show Additional Canvas Info", - "clearCanvasHistory": "Clear Canvas History", - "clearHistory": "Clear History", - "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", - "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", - "emptyTempImageFolder": "Empty Temp Image Folder", - "emptyFolder": "Empty Folder", - "emptyTempImagesFolderMessage": "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.", - "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", - "activeLayer": "Active Layer", - "canvasScale": "Canvas Scale", - "boundingBox": "Bounding Box", - "scaledBoundingBox": "Scaled Bounding Box", - "boundingBoxPosition": "Bounding Box Position", - "canvasDimensions": "Canvas Dimensions", - "canvasPosition": "Canvas Position", - "cursorPosition": "Cursor Position", - "previous": "Previous", - "next": "Next", "accept": "Accept", - "showHide": "Show/Hide", - "discardAll": "Discard All", + "activeLayer": "Active Layer", + "antialiasing": "Antialiasing", + "autoSaveToGallery": "Auto Save to Gallery", + "base": "Base", "betaClear": "Clear", "betaDarkenOutside": "Darken Outside", "betaLimitToBox": "Limit To Box", "betaPreserveMasked": "Preserve Masked", - "antialiasing": "Antialiasing" - }, - "ui": { - "showProgressImages": "Show Progress Images", - "hideProgressImages": "Hide Progress Images", - "swapSizes": "Swap Sizes", - "lockRatio": "Lock Ratio" - }, - "nodes": { - "reloadNodeTemplates": "Reload Node Templates", - "downloadWorkflow": "Download Workflow JSON", - "loadWorkflow": "Load Workflow", - "resetWorkflow": "Reset Workflow", - "resetWorkflowDesc": "Are you sure you want to reset this workflow?", - "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", - "zoomInNodes": "Zoom In", - "zoomOutNodes": "Zoom Out", - "fitViewportNodes": "Fit View", - "hideGraphNodes": "Hide Graph Overlay", - "showGraphNodes": "Show Graph Overlay", - "hideLegendNodes": "Hide Field Type Legend", - "showLegendNodes": "Show Field Type Legend", - "hideMinimapnodes": "Hide MiniMap", - "showMinimapnodes": "Show MiniMap" + "boundingBox": "Bounding Box", + "boundingBoxPosition": "Bounding Box Position", + "brush": "Brush", + "brushOptions": "Brush Options", + "brushSize": "Size", + "canvasDimensions": "Canvas Dimensions", + "canvasPosition": "Canvas Position", + "canvasScale": "Canvas Scale", + "canvasSettings": "Canvas Settings", + "clearCanvas": "Clear Canvas", + "clearCanvasHistory": "Clear Canvas History", + "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", + "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", + "clearHistory": "Clear History", + "clearMask": "Clear Mask", + "colorPicker": "Color Picker", + "copyToClipboard": "Copy to Clipboard", + "cursorPosition": "Cursor Position", + "darkenOutsideSelection": "Darken Outside Selection", + "discardAll": "Discard All", + "downloadAsImage": "Download As Image", + "emptyFolder": "Empty Folder", + "emptyTempImageFolder": "Empty Temp Image Folder", + "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", + "emptyTempImagesFolderMessage": "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.", + "enableMask": "Enable Mask", + "eraseBoundingBox": "Erase Bounding Box", + "eraser": "Eraser", + "fillBoundingBox": "Fill Bounding Box", + "layer": "Layer", + "limitStrokesToBox": "Limit Strokes to Box", + "mask": "Mask", + "maskingOptions": "Masking Options", + "mergeVisible": "Merge Visible", + "move": "Move", + "next": "Next", + "preserveMaskedArea": "Preserve Masked Area", + "previous": "Previous", + "redo": "Redo", + "resetView": "Reset View", + "saveBoxRegionOnly": "Save Box Region Only", + "saveToGallery": "Save To Gallery", + "scaledBoundingBox": "Scaled Bounding Box", + "showCanvasDebugInfo": "Show Additional Canvas Info", + "showGrid": "Show Grid", + "showHide": "Show/Hide", + "showIntermediates": "Show Intermediates", + "snapToGrid": "Snap to Grid", + "undo": "Undo" } } diff --git a/invokeai/frontend/web/public/locales/en.json b/invokeai/frontend/web/public/locales/en.json index 125554fc40..b663275f92 100644 --- a/invokeai/frontend/web/public/locales/en.json +++ b/invokeai/frontend/web/public/locales/en.json @@ -1,40 +1,68 @@ { "accessibility": { - "modelSelect": "Model Select", - "invokeProgressBar": "Invoke progress bar", - "reset": "Reset", - "uploadImage": "Upload Image", - "previousImage": "Previous Image", - "nextImage": "Next Image", - "useThisParameter": "Use this parameter", "copyMetadataJson": "Copy metadata JSON", "exitViewer": "Exit Viewer", - "zoomIn": "Zoom In", - "zoomOut": "Zoom Out", - "rotateCounterClockwise": "Rotate Counter-Clockwise", - "rotateClockwise": "Rotate Clockwise", "flipHorizontally": "Flip Horizontally", "flipVertically": "Flip Vertically", + "invokeProgressBar": "Invoke progress bar", + "menu": "Menu", + "modelSelect": "Model Select", "modifyConfig": "Modify Config", + "nextImage": "Next Image", + "previousImage": "Previous Image", + "reset": "Reset", + "rotateClockwise": "Rotate Clockwise", + "rotateCounterClockwise": "Rotate Counter-Clockwise", + "showGalleryPanel": "Show Gallery Panel", + "showOptionsPanel": "Show Side Panel", "toggleAutoscroll": "Toggle autoscroll", "toggleLogViewer": "Toggle Log Viewer", - "showGallery": "Show Gallery", - "showOptionsPanel": "Show Side Panel", - "menu": "Menu" + "uploadImage": "Upload Image", + "useThisParameter": "Use this parameter", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "loadMore": "Load More" + }, + "boards": { + "addBoard": "Add Board", + "autoAddBoard": "Auto-Add Board", + "bottomMessage": "Deleting this board and its images will reset any features currently using them.", + "cancel": "Cancel", + "changeBoard": "Change Board", + "clearSearch": "Clear Search", + "loading": "Loading...", + "menuItemAutoAdd": "Auto-add to this Board", + "move": "Move", + "myBoard": "My Board", + "noMatching": "No matching Boards", + "searchBoard": "Search Boards...", + "selectBoard": "Select a Board", + "topMessage": "This board contains images used in the following features:", + "uncategorized": "Uncategorized" }, "common": { + "accept": "Accept", + "advanced": "Advanced", + "areYouSure": "Are you sure?", + "back": "Back", + "batch": "Batch Manager", + "cancel": "Cancel", + "close": "Close", "communityLabel": "Community", - "hotkeysLabel": "Hotkeys", + "controlNet": "Controlnet", + "ipAdapter": "IP Adapter", "darkMode": "Dark Mode", - "lightMode": "Light Mode", - "languagePickerLabel": "Language", - "reportBugLabel": "Report Bug", - "githubLabel": "Github", "discordLabel": "Discord", - "settingsLabel": "Settings", + "dontAskMeAgain": "Don't ask me again", + "generate": "Generate", + "githubLabel": "Github", + "hotkeysLabel": "Hotkeys", + "imagePrompt": "Image Prompt", + "img2img": "Image To Image", "langArabic": "العربية", - "langEnglish": "English", + "langBrPortuguese": "Português do Brasil", "langDutch": "Nederlands", + "langEnglish": "English", "langFrench": "Français", "langGerman": "Deutsch", "langHebrew": "עברית", @@ -43,377 +71,510 @@ "langKorean": "한국어", "langPolish": "Polski", "langPortuguese": "Português", - "langBrPortuguese": "Português do Brasil", "langRussian": "Русский", "langSimplifiedChinese": "简体中文", - "langUkranian": "Украї́нська", "langSpanish": "Español", - "txt2img": "Text To Image", - "img2img": "Image To Image", - "unifiedCanvas": "Unified Canvas", + "languagePickerLabel": "Language", + "langUkranian": "Украї́нська", + "lightMode": "Light Mode", "linear": "Linear", - "nodes": "Workflow Editor", - "batch": "Batch Manager", + "load": "Load", + "loading": "Loading", + "loadingInvokeAI": "Loading Invoke AI", + "learnMore": "Learn More", "modelManager": "Model Manager", - "postprocessing": "Post Processing", + "nodeEditor": "Node Editor", + "nodes": "Workflow Editor", "nodesDesc": "A node based system for the generation of images is under development currently. Stay tuned for updates about this amazing feature.", - "postProcessing": "Post Processing", + "openInNewTab": "Open in New Tab", "postProcessDesc1": "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.", "postProcessDesc2": "A dedicated UI will be released soon to facilitate more advanced post processing workflows.", "postProcessDesc3": "The Invoke AI Command Line Interface offers various other features including Embiggen.", - "training": "Training", - "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", - "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", - "upload": "Upload", - "close": "Close", - "cancel": "Cancel", - "accept": "Accept", - "load": "Load", - "back": "Back", + "postprocessing": "Post Processing", + "postProcessing": "Post Processing", + "random": "Random", + "reportBugLabel": "Report Bug", + "settingsLabel": "Settings", "statusConnected": "Connected", + "statusConvertingModel": "Converting Model", "statusDisconnected": "Disconnected", "statusError": "Error", - "statusPreparing": "Preparing", - "statusProcessingCanceled": "Processing Canceled", - "statusProcessingComplete": "Processing Complete", "statusGenerating": "Generating", - "statusGeneratingTextToImage": "Generating Text To Image", "statusGeneratingImageToImage": "Generating Image To Image", "statusGeneratingInpainting": "Generating Inpainting", "statusGeneratingOutpainting": "Generating Outpainting", + "statusGeneratingTextToImage": "Generating Text To Image", "statusGenerationComplete": "Generation Complete", "statusIterationComplete": "Iteration Complete", - "statusSavingImage": "Saving Image", + "statusLoadingModel": "Loading Model", + "statusMergedModels": "Models Merged", + "statusMergingModels": "Merging Models", + "statusModelChanged": "Model Changed", + "statusModelConverted": "Model Converted", + "statusPreparing": "Preparing", + "statusProcessing": "Processing", + "statusProcessingCanceled": "Processing Canceled", + "statusProcessingComplete": "Processing Complete", "statusRestoringFaces": "Restoring Faces", - "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", "statusRestoringFacesCodeFormer": "Restoring Faces (CodeFormer)", + "statusRestoringFacesGFPGAN": "Restoring Faces (GFPGAN)", + "statusSavingImage": "Saving Image", "statusUpscaling": "Upscaling", "statusUpscalingESRGAN": "Upscaling (ESRGAN)", - "statusLoadingModel": "Loading Model", - "statusModelChanged": "Model Changed", - "statusConvertingModel": "Converting Model", - "statusModelConverted": "Model Converted", - "statusMergingModels": "Merging Models", - "statusMergedModels": "Models Merged", - "loading": "Loading", - "loadingInvokeAI": "Loading Invoke AI", - "random": "Random", - "generate": "Generate", - "openInNewTab": "Open in New Tab", - "dontAskMeAgain": "Don't ask me again", - "areYouSure": "Are you sure?", - "imagePrompt": "Image Prompt" + "training": "Training", + "trainingDesc1": "A dedicated workflow for training your own embeddings and checkpoints using Textual Inversion and Dreambooth from the web interface.", + "trainingDesc2": "InvokeAI already supports training custom embeddourings using Textual Inversion using the main script.", + "txt2img": "Text To Image", + "unifiedCanvas": "Unified Canvas", + "upload": "Upload" + }, + "controlnet": { + "amult": "a_mult", + "autoConfigure": "Auto configure processor", + "balanced": "Balanced", + "beginEndStepPercent": "Begin / End Step Percentage", + "bgth": "bg_th", + "canny": "Canny", + "cannyDescription": "Canny edge detection", + "colorMap": "Color", + "colorMapDescription": "Generates a color map from the image", + "coarse": "Coarse", + "contentShuffle": "Content Shuffle", + "contentShuffleDescription": "Shuffles the content in an image", + "control": "Control", + "controlMode": "Control Mode", + "crop": "Crop", + "delete": "Delete", + "depthMidas": "Depth (Midas)", + "depthMidasDescription": "Depth map generation using Midas", + "depthZoe": "Depth (Zoe)", + "depthZoeDescription": "Depth map generation using Zoe", + "detectResolution": "Detect Resolution", + "duplicate": "Duplicate", + "enableControlnet": "Enable ControlNet", + "f": "F", + "fill": "Fill", + "h": "H", + "handAndFace": "Hand and Face", + "hed": "HED", + "hedDescription": "Holistically-Nested Edge Detection", + "hideAdvanced": "Hide Advanced", + "highThreshold": "High Threshold", + "imageResolution": "Image Resolution", + "colorMapTileSize": "Tile Size", + "importImageFromCanvas": "Import Image From Canvas", + "importMaskFromCanvas": "Import Mask From Canvas", + "incompatibleBaseModel": "Incompatible base model:", + "lineart": "Lineart", + "lineartAnime": "Lineart Anime", + "lineartAnimeDescription": "Anime-style lineart processing", + "lineartDescription": "Converts image to lineart", + "lowThreshold": "Low Threshold", + "maxFaces": "Max Faces", + "mediapipeFace": "Mediapipe Face", + "mediapipeFaceDescription": "Face detection using Mediapipe", + "megaControl": "Mega Control", + "minConfidence": "Min Confidence", + "mlsd": "M-LSD", + "mlsdDescription": "Minimalist Line Segment Detector", + "none": "None", + "noneDescription": "No processing applied", + "normalBae": "Normal BAE", + "normalBaeDescription": "Normal BAE processing", + "openPose": "Openpose", + "openPoseDescription": "Human pose estimation using Openpose", + "pidi": "PIDI", + "pidiDescription": "PIDI image processing", + "processor": "Processor", + "prompt": "Prompt", + "resetControlImage": "Reset Control Image", + "resize": "Resize", + "resizeMode": "Resize Mode", + "safe": "Safe", + "saveControlImage": "Save Control Image", + "scribble": "scribble", + "selectModel": "Select a model", + "setControlImageDimensions": "Set Control Image Dimensions To W/H", + "showAdvanced": "Show Advanced", + "toggleControlNet": "Toggle this ControlNet", + "w": "W", + "weight": "Weight", + "enableIPAdapter": "Enable IP Adapter", + "ipAdapterModel": "Adapter Model", + "resetIPAdapterImage": "Reset IP Adapter Image", + "ipAdapterImageFallback": "No IP Adapter Image Selected" + }, + "embedding": { + "addEmbedding": "Add Embedding", + "incompatibleModel": "Incompatible base model:", + "noMatchingEmbedding": "No matching Embeddings" + }, + "queue": { + "queue": "Queue", + "queueFront": "Add to Front of Queue", + "queueBack": "Add to Queue", + "queueCountPrediction": "Add {{predicted}} to Queue", + "queueMaxExceeded": "Max of {{max_queue_size}} exceeded, would skip {{skip}}", + "queuedCount": "{{pending}} Pending", + "queueTotal": "{{total}} Total", + "queueEmpty": "Queue Empty", + "enqueueing": "Queueing Batch", + "resume": "Resume", + "resumeTooltip": "Resume Processor", + "resumeSucceeded": "Processor Resumed", + "resumeFailed": "Problem Resuming Processor", + "pause": "Pause", + "pauseTooltip": "Pause Processor", + "pauseSucceeded": "Processor Paused", + "pauseFailed": "Problem Pausing Processor", + "cancel": "Cancel", + "cancelTooltip": "Cancel Current Item", + "cancelSucceeded": "Item Canceled", + "cancelFailed": "Problem Canceling Item", + "prune": "Prune", + "pruneTooltip": "Prune {{item_count}} Completed Items", + "pruneSucceeded": "Pruned {{item_count}} Completed Items from Queue", + "pruneFailed": "Problem Pruning Queue", + "clear": "Clear", + "clearTooltip": "Cancel and Clear All Items", + "clearSucceeded": "Queue Cleared", + "clearFailed": "Problem Clearing Queue", + "cancelBatch": "Cancel Batch", + "cancelItem": "Cancel Item", + "cancelBatchSucceeded": "Batch Canceled", + "cancelBatchFailed": "Problem Canceling Batch", + "clearQueueAlertDialog": "Clearing the queue immediately cancels any processing items and clears the queue entirely.", + "clearQueueAlertDialog2": "Are you sure you want to clear the queue?", + "current": "Current", + "next": "Next", + "status": "Status", + "total": "Total", + "pending": "Pending", + "in_progress": "In Progress", + "completed": "Completed", + "failed": "Failed", + "canceled": "Canceled", + "completedIn": "Completed in", + "batch": "Batch", + "item": "Item", + "session": "Session", + "batchValues": "Batch Values", + "notReady": "Unable to Queue", + "batchQueued": "Batch Queued", + "batchQueuedDesc": "Added {{item_count}} sessions to {{direction}} of queue", + "front": "front", + "back": "back", + "batchFailedToQueue": "Failed to Queue Batch", + "graphQueued": "Graph queued", + "graphFailedToQueue": "Failed to queue graph" + }, + "invocationCache": { + "invocationCache": "Invocation Cache", + "cacheSize": "Cache Size", + "maxCacheSize": "Max Cache Size", + "hits": "Cache Hits", + "misses": "Cache Misses", + "clear": "Clear", + "clearSucceeded": "Invocation Cache Cleared", + "clearFailed": "Problem Clearing Invocation Cache", + "enable": "Enable", + "enableSucceeded": "Invocation Cache Enabled", + "enableFailed": "Problem Enabling Invocation Cache", + "disable": "Disable", + "disableSucceeded": "Invocation Cache Disabled", + "disableFailed": "Problem Disabling Invocation Cache" }, "gallery": { - "generations": "Generations", - "showGenerations": "Show Generations", - "uploads": "Uploads", - "showUploads": "Show Uploads", - "galleryImageSize": "Image Size", - "galleryImageResetSize": "Reset Size", - "gallerySettings": "Gallery Settings", - "maintainAspectRatio": "Maintain Aspect Ratio", - "autoSwitchNewImages": "Auto-Switch to New Images", - "singleColumnLayout": "Single Column Layout", "allImagesLoaded": "All Images Loaded", - "loadMore": "Load More", - "noImagesInGallery": "No Images to Display", + "assets": "Assets", + "autoAssignBoardOnClick": "Auto-Assign Board on Click", + "autoSwitchNewImages": "Auto-Switch to New Images", + "copy": "Copy", + "currentlyInUse": "This image is currently in use in the following features:", "deleteImage": "Delete Image", "deleteImageBin": "Deleted images will be sent to your operating system's Bin.", "deleteImagePermanent": "Deleted images cannot be restored.", + "download": "Download", + "featuresWillReset": "If you delete this image, those features will immediately be reset.", + "galleryImageResetSize": "Reset Size", + "galleryImageSize": "Image Size", + "gallerySettings": "Gallery Settings", + "generations": "Generations", "images": "Images", - "assets": "Assets", - "autoAssignBoardOnClick": "Auto-Assign Board on Click" + "loading": "Loading", + "loadMore": "Load More", + "maintainAspectRatio": "Maintain Aspect Ratio", + "noImagesInGallery": "No Images to Display", + "setCurrentImage": "Set as Current Image", + "showGenerations": "Show Generations", + "showUploads": "Show Uploads", + "singleColumnLayout": "Single Column Layout", + "unableToLoad": "Unable to load Gallery", + "uploads": "Uploads" }, "hotkeys": { - "keyboardShortcuts": "Keyboard Shortcuts", - "appHotkeys": "App Hotkeys", - "generalHotkeys": "General Hotkeys", - "galleryHotkeys": "Gallery Hotkeys", - "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", - "nodesHotkeys": "Nodes Hotkeys", - "invoke": { - "title": "Invoke", - "desc": "Generate an image" - }, - "cancel": { - "title": "Cancel", - "desc": "Cancel image generation" - }, - "focusPrompt": { - "title": "Focus Prompt", - "desc": "Focus the prompt input area" - }, - "toggleOptions": { - "title": "Toggle Options", - "desc": "Open and close the options panel" - }, - "pinOptions": { - "title": "Pin Options", - "desc": "Pin the options panel" - }, - "toggleViewer": { - "title": "Toggle Viewer", - "desc": "Open and close Image Viewer" - }, - "toggleGallery": { - "title": "Toggle Gallery", - "desc": "Open and close the gallery drawer" - }, - "maximizeWorkSpace": { - "title": "Maximize Workspace", - "desc": "Close panels and maximize work area" - }, - "changeTabs": { - "title": "Change Tabs", - "desc": "Switch to another workspace" - }, - "consoleToggle": { - "title": "Console Toggle", - "desc": "Open and close console" - }, - "setPrompt": { - "title": "Set Prompt", - "desc": "Use the prompt of the current image" - }, - "setSeed": { - "title": "Set Seed", - "desc": "Use the seed of the current image" - }, - "setParameters": { - "title": "Set Parameters", - "desc": "Use all parameters of the current image" - }, - "restoreFaces": { - "title": "Restore Faces", - "desc": "Restore the current image" - }, - "upscale": { - "title": "Upscale", - "desc": "Upscale the current image" - }, - "showInfo": { - "title": "Show Info", - "desc": "Show metadata info of the current image" - }, - "sendToImageToImage": { - "title": "Send To Image To Image", - "desc": "Send current image to Image to Image" - }, - "deleteImage": { - "title": "Delete Image", - "desc": "Delete the current image" - }, - "closePanels": { - "title": "Close Panels", - "desc": "Closes open panels" - }, - "previousImage": { - "title": "Previous Image", - "desc": "Display the previous image in gallery" - }, - "nextImage": { - "title": "Next Image", - "desc": "Display the next image in gallery" - }, - "toggleGalleryPin": { - "title": "Toggle Gallery Pin", - "desc": "Pins and unpins the gallery to the UI" - }, - "increaseGalleryThumbSize": { - "title": "Increase Gallery Image Size", - "desc": "Increases gallery thumbnails size" - }, - "decreaseGalleryThumbSize": { - "title": "Decrease Gallery Image Size", - "desc": "Decreases gallery thumbnails size" - }, - "selectBrush": { - "title": "Select Brush", - "desc": "Selects the canvas brush" - }, - "selectEraser": { - "title": "Select Eraser", - "desc": "Selects the canvas eraser" - }, - "decreaseBrushSize": { - "title": "Decrease Brush Size", - "desc": "Decreases the size of the canvas brush/eraser" - }, - "increaseBrushSize": { - "title": "Increase Brush Size", - "desc": "Increases the size of the canvas brush/eraser" - }, - "decreaseBrushOpacity": { - "title": "Decrease Brush Opacity", - "desc": "Decreases the opacity of the canvas brush" - }, - "increaseBrushOpacity": { - "title": "Increase Brush Opacity", - "desc": "Increases the opacity of the canvas brush" - }, - "moveTool": { - "title": "Move Tool", - "desc": "Allows canvas navigation" - }, - "fillBoundingBox": { - "title": "Fill Bounding Box", - "desc": "Fills the bounding box with brush color" - }, - "eraseBoundingBox": { - "title": "Erase Bounding Box", - "desc": "Erases the bounding box area" - }, - "colorPicker": { - "title": "Select Color Picker", - "desc": "Selects the canvas color picker" - }, - "toggleSnap": { - "title": "Toggle Snap", - "desc": "Toggles Snap to Grid" - }, - "quickToggleMove": { - "title": "Quick Toggle Move", - "desc": "Temporarily toggles Move mode" - }, - "toggleLayer": { - "title": "Toggle Layer", - "desc": "Toggles mask/base layer selection" - }, - "clearMask": { - "title": "Clear Mask", - "desc": "Clear the entire mask" - }, - "hideMask": { - "title": "Hide Mask", - "desc": "Hide and unhide mask" - }, - "showHideBoundingBox": { - "title": "Show/Hide Bounding Box", - "desc": "Toggle visibility of bounding box" - }, - "mergeVisible": { - "title": "Merge Visible", - "desc": "Merge all visible layers of canvas" - }, - "saveToGallery": { - "title": "Save To Gallery", - "desc": "Save current canvas to gallery" - }, - "copyToClipboard": { - "title": "Copy to Clipboard", - "desc": "Copy current canvas to clipboard" - }, - "downloadImage": { - "title": "Download Image", - "desc": "Download current canvas" - }, - "undoStroke": { - "title": "Undo Stroke", - "desc": "Undo a brush stroke" - }, - "redoStroke": { - "title": "Redo Stroke", - "desc": "Redo a brush stroke" - }, - "resetView": { - "title": "Reset View", - "desc": "Reset Canvas View" - }, - "previousStagingImage": { - "title": "Previous Staging Image", - "desc": "Previous Staging Area Image" - }, - "nextStagingImage": { - "title": "Next Staging Image", - "desc": "Next Staging Area Image" - }, "acceptStagingImage": { - "title": "Accept Staging Image", - "desc": "Accept Current Staging Area Image" + "desc": "Accept Current Staging Area Image", + "title": "Accept Staging Image" }, "addNodes": { - "title": "Add Nodes", - "desc": "Opens the add node menu" + "desc": "Opens the add node menu", + "title": "Add Nodes" + }, + "appHotkeys": "App Hotkeys", + "cancel": { + "desc": "Cancel image generation", + "title": "Cancel" + }, + "changeTabs": { + "desc": "Switch to another workspace", + "title": "Change Tabs" + }, + "clearMask": { + "desc": "Clear the entire mask", + "title": "Clear Mask" + }, + "closePanels": { + "desc": "Closes open panels", + "title": "Close Panels" + }, + "colorPicker": { + "desc": "Selects the canvas color picker", + "title": "Select Color Picker" + }, + "consoleToggle": { + "desc": "Open and close console", + "title": "Console Toggle" + }, + "copyToClipboard": { + "desc": "Copy current canvas to clipboard", + "title": "Copy to Clipboard" + }, + "decreaseBrushOpacity": { + "desc": "Decreases the opacity of the canvas brush", + "title": "Decrease Brush Opacity" + }, + "decreaseBrushSize": { + "desc": "Decreases the size of the canvas brush/eraser", + "title": "Decrease Brush Size" + }, + "decreaseGalleryThumbSize": { + "desc": "Decreases gallery thumbnails size", + "title": "Decrease Gallery Image Size" + }, + "deleteImage": { + "desc": "Delete the current image", + "title": "Delete Image" + }, + "downloadImage": { + "desc": "Download current canvas", + "title": "Download Image" + }, + "eraseBoundingBox": { + "desc": "Erases the bounding box area", + "title": "Erase Bounding Box" + }, + "fillBoundingBox": { + "desc": "Fills the bounding box with brush color", + "title": "Fill Bounding Box" + }, + "focusPrompt": { + "desc": "Focus the prompt input area", + "title": "Focus Prompt" + }, + "galleryHotkeys": "Gallery Hotkeys", + "generalHotkeys": "General Hotkeys", + "hideMask": { + "desc": "Hide and unhide mask", + "title": "Hide Mask" + }, + "increaseBrushOpacity": { + "desc": "Increases the opacity of the canvas brush", + "title": "Increase Brush Opacity" + }, + "increaseBrushSize": { + "desc": "Increases the size of the canvas brush/eraser", + "title": "Increase Brush Size" + }, + "increaseGalleryThumbSize": { + "desc": "Increases gallery thumbnails size", + "title": "Increase Gallery Image Size" + }, + "invoke": { + "desc": "Generate an image", + "title": "Invoke" + }, + "keyboardShortcuts": "Keyboard Shortcuts", + "maximizeWorkSpace": { + "desc": "Close panels and maximize work area", + "title": "Maximize Workspace" + }, + "mergeVisible": { + "desc": "Merge all visible layers of canvas", + "title": "Merge Visible" + }, + "moveTool": { + "desc": "Allows canvas navigation", + "title": "Move Tool" + }, + "nextImage": { + "desc": "Display the next image in gallery", + "title": "Next Image" + }, + "nextStagingImage": { + "desc": "Next Staging Area Image", + "title": "Next Staging Image" + }, + "nodesHotkeys": "Nodes Hotkeys", + "pinOptions": { + "desc": "Pin the options panel", + "title": "Pin Options" + }, + "previousImage": { + "desc": "Display the previous image in gallery", + "title": "Previous Image" + }, + "previousStagingImage": { + "desc": "Previous Staging Area Image", + "title": "Previous Staging Image" + }, + "quickToggleMove": { + "desc": "Temporarily toggles Move mode", + "title": "Quick Toggle Move" + }, + "redoStroke": { + "desc": "Redo a brush stroke", + "title": "Redo Stroke" + }, + "resetView": { + "desc": "Reset Canvas View", + "title": "Reset View" + }, + "restoreFaces": { + "desc": "Restore the current image", + "title": "Restore Faces" + }, + "saveToGallery": { + "desc": "Save current canvas to gallery", + "title": "Save To Gallery" + }, + "selectBrush": { + "desc": "Selects the canvas brush", + "title": "Select Brush" + }, + "selectEraser": { + "desc": "Selects the canvas eraser", + "title": "Select Eraser" + }, + "sendToImageToImage": { + "desc": "Send current image to Image to Image", + "title": "Send To Image To Image" + }, + "setParameters": { + "desc": "Use all parameters of the current image", + "title": "Set Parameters" + }, + "setPrompt": { + "desc": "Use the prompt of the current image", + "title": "Set Prompt" + }, + "setSeed": { + "desc": "Use the seed of the current image", + "title": "Set Seed" + }, + "showHideBoundingBox": { + "desc": "Toggle visibility of bounding box", + "title": "Show/Hide Bounding Box" + }, + "showInfo": { + "desc": "Show metadata info of the current image", + "title": "Show Info" + }, + "toggleGallery": { + "desc": "Open and close the gallery drawer", + "title": "Toggle Gallery" + }, + "toggleGalleryPin": { + "desc": "Pins and unpins the gallery to the UI", + "title": "Toggle Gallery Pin" + }, + "toggleLayer": { + "desc": "Toggles mask/base layer selection", + "title": "Toggle Layer" + }, + "toggleOptions": { + "desc": "Open and close the options panel", + "title": "Toggle Options" + }, + "toggleSnap": { + "desc": "Toggles Snap to Grid", + "title": "Toggle Snap" + }, + "toggleViewer": { + "desc": "Open and close Image Viewer", + "title": "Toggle Viewer" + }, + "undoStroke": { + "desc": "Undo a brush stroke", + "title": "Undo Stroke" + }, + "unifiedCanvasHotkeys": "Unified Canvas Hotkeys", + "upscale": { + "desc": "Upscale the current image", + "title": "Upscale" } }, - "modelManager": { - "modelManager": "Model Manager", + "metadata": { + "cfgScale": "CFG scale", + "createdBy": "Created By", + "fit": "Image to image fit", + "generationMode": "Generation Mode", + "height": "Height", + "hiresFix": "High Resolution Optimization", + "imageDetails": "Image Details", + "initImage": "Initial image", + "metadata": "Metadata", "model": "Model", - "vae": "VAE", - "allModels": "All Models", - "checkpointModels": "Checkpoints", - "diffusersModels": "Diffusers", - "loraModels": "LoRAs", - "safetensorModels": "SafeTensors", - "onnxModels": "Onnx", - "oliveModels": "Olives", - "modelAdded": "Model Added", - "modelUpdated": "Model Updated", - "modelUpdateFailed": "Model Update Failed", - "modelEntryDeleted": "Model Entry Deleted", - "cannotUseSpaces": "Cannot Use Spaces", + "negativePrompt": "Negative Prompt", + "noImageDetails": "No image details found", + "noMetaData": "No metadata found", + "perlin": "Perlin Noise", + "positivePrompt": "Positive Prompt", + "scheduler": "Scheduler", + "seamless": "Seamless", + "seed": "Seed", + "steps": "Steps", + "strength": "Image to image strength", + "Threshold": "Noise Threshold", + "variations": "Seed-weight pairs", + "width": "Width", + "workflow": "Workflow" + }, + "modelManager": { + "active": "active", + "addCheckpointModel": "Add Checkpoint / Safetensor Model", + "addDifference": "Add Difference", + "addDiffuserModel": "Add Diffusers", + "addManually": "Add Manually", + "addModel": "Add Model", "addNew": "Add New", "addNewModel": "Add New Model", - "addCheckpointModel": "Add Checkpoint / Safetensor Model", - "addDiffuserModel": "Add Diffusers", - "scanForModels": "Scan For Models", - "addManually": "Add Manually", - "manual": "Manual", + "addSelected": "Add Selected", + "advanced": "Advanced", + "allModels": "All Models", + "alpha": "Alpha", + "availableModels": "Available Models", "baseModel": "Base Model", - "name": "Name", - "nameValidationMsg": "Enter a name for your model", - "description": "Description", - "descriptionValidationMsg": "Add a description for your model", + "cached": "cached", + "cannotUseSpaces": "Cannot Use Spaces", + "checkpointFolder": "Checkpoint Folder", + "checkpointModels": "Checkpoints", + "clearCheckpointFolder": "Clear Checkpoint Folder", + "closeAdvanced": "Close Advanced", "config": "Config", "configValidationMsg": "Path to the config file of your model.", - "modelLocation": "Model Location", - "modelLocationValidationMsg": "Path to where your model is located locally.", - "repo_id": "Repo ID", - "repoIDValidationMsg": "Online repository of your model", - "vaeLocation": "VAE Location", - "vaeLocationValidationMsg": "Path to where your VAE is located.", - "variant": "Variant", - "vaeRepoID": "VAE Repo ID", - "vaeRepoIDValidationMsg": "Online repository of your VAE", - "width": "Width", - "widthValidationMsg": "Default width of your model.", - "height": "Height", - "heightValidationMsg": "Default height of your model.", - "addModel": "Add Model", - "updateModel": "Update Model", - "availableModels": "Available Models", - "search": "Search", - "load": "Load", - "active": "active", - "notLoaded": "not loaded", - "cached": "cached", - "checkpointFolder": "Checkpoint Folder", - "clearCheckpointFolder": "Clear Checkpoint Folder", - "findModels": "Find Models", - "scanAgain": "Scan Again", - "modelsFound": "Models Found", - "selectFolder": "Select Folder", - "selected": "Selected", - "selectAll": "Select All", - "deselectAll": "Deselect All", - "showExisting": "Show Existing", - "addSelected": "Add Selected", - "modelExists": "Model Exists", - "selectAndAdd": "Select and Add Models Listed Below", - "noModelsFound": "No Models Found", - "delete": "Delete", - "deleteModel": "Delete Model", - "deleteConfig": "Delete Config", - "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", - "modelDeleted": "Model Deleted", - "modelDeleteFailed": "Failed to delete model", - "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", - "formMessageDiffusersModelLocation": "Diffusers Model Location", - "formMessageDiffusersModelLocationDesc": "Please enter at least one.", - "formMessageDiffusersVAELocation": "VAE Location", - "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", "convert": "Convert", + "convertingModelBegin": "Converting Model. Please wait.", "convertToDiffusers": "Convert To Diffusers", "convertToDiffusersHelpText1": "This model will be converted to the 🧨 Diffusers format.", "convertToDiffusersHelpText2": "This process will replace your Model Manager entry with the Diffusers version of the same model.", @@ -422,318 +583,867 @@ "convertToDiffusersHelpText5": "Please make sure you have enough disk space. Models generally vary between 2GB-7GB in size.", "convertToDiffusersHelpText6": "Do you wish to convert this model?", "convertToDiffusersSaveLocation": "Save Location", - "noCustomLocationProvided": "No Custom Location Provided", - "convertingModelBegin": "Converting Model. Please wait.", - "v1": "v1", - "v2_base": "v2 (512px)", - "v2_768": "v2 (768px)", - "inpainting": "v1 Inpainting", - "customConfig": "Custom Config", - "pathToCustomConfig": "Path To Custom Config", - "statusConverting": "Converting", - "modelConverted": "Model Converted", - "modelConversionFailed": "Model Conversion Failed", - "sameFolder": "Same folder", - "invokeRoot": "InvokeAI folder", "custom": "Custom", + "customConfig": "Custom Config", + "customConfigFileLocation": "Custom Config File Location", "customSaveLocation": "Custom Save Location", - "merge": "Merge", - "modelsMerged": "Models Merged", - "modelsMergeFailed": "Model Merge Failed", - "mergeModels": "Merge Models", - "modelOne": "Model 1", - "modelTwo": "Model 2", - "modelThree": "Model 3", - "mergedModelName": "Merged Model Name", - "alpha": "Alpha", - "interpolationType": "Interpolation Type", - "mergedModelSaveLocation": "Save Location", - "mergedModelCustomSaveLocation": "Custom Path", - "invokeAIFolder": "Invoke AI Folder", + "delete": "Delete", + "deleteConfig": "Delete Config", + "deleteModel": "Delete Model", + "deleteMsg1": "Are you sure you want to delete this model from InvokeAI?", + "deleteMsg2": "This WILL delete the model from disk if it is in the InvokeAI root folder. If you are using a custom location, then the model WILL NOT be deleted from disk.", + "description": "Description", + "descriptionValidationMsg": "Add a description for your model", + "deselectAll": "Deselect All", + "diffusersModels": "Diffusers", + "findModels": "Find Models", + "formMessageDiffusersModelLocation": "Diffusers Model Location", + "formMessageDiffusersModelLocationDesc": "Please enter at least one.", + "formMessageDiffusersVAELocation": "VAE Location", + "formMessageDiffusersVAELocationDesc": "If not provided, InvokeAI will look for the VAE file inside the model location given above.", + "height": "Height", + "heightValidationMsg": "Default height of your model.", "ignoreMismatch": "Ignore Mismatches Between Selected Models", + "importModels": "Import Models", + "inpainting": "v1 Inpainting", + "interpolationType": "Interpolation Type", + "inverseSigmoid": "Inverse Sigmoid", + "invokeAIFolder": "Invoke AI Folder", + "invokeRoot": "InvokeAI folder", + "load": "Load", + "loraModels": "LoRAs", + "manual": "Manual", + "merge": "Merge", + "mergedModelCustomSaveLocation": "Custom Path", + "mergedModelName": "Merged Model Name", + "mergedModelSaveLocation": "Save Location", + "mergeModels": "Merge Models", + "model": "Model", + "modelAdded": "Model Added", + "modelConversionFailed": "Model Conversion Failed", + "modelConverted": "Model Converted", + "modelDeleted": "Model Deleted", + "modelDeleteFailed": "Failed to delete model", + "modelEntryDeleted": "Model Entry Deleted", + "modelExists": "Model Exists", + "modelLocation": "Model Location", + "modelLocationValidationMsg": "Provide the path to a local folder where your Diffusers Model is stored", + "modelManager": "Model Manager", + "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeHeaderHelp1": "You can merge up to three different models to create a blend that suits your needs.", "modelMergeHeaderHelp2": "Only Diffusers are available for merging. If you want to merge a checkpoint model, please convert it to Diffusers first.", - "modelMergeAlphaHelp": "Alpha controls blend strength for the models. Lower alpha values lead to lower influence of the second model.", "modelMergeInterpAddDifferenceHelp": "In this mode, Model 3 is first subtracted from Model 2. The resulting version is blended with Model 1 with the alpha rate set above.", - "inverseSigmoid": "Inverse Sigmoid", - "sigmoid": "Sigmoid", - "weightedSum": "Weighted Sum", + "modelOne": "Model 1", + "modelsFound": "Models Found", + "modelsMerged": "Models Merged", + "modelsMergeFailed": "Model Merge Failed", + "modelsSynced": "Models Synced", + "modelSyncFailed": "Model Sync Failed", + "modelThree": "Model 3", + "modelTwo": "Model 2", + "modelType": "Model Type", + "modelUpdated": "Model Updated", + "modelUpdateFailed": "Model Update Failed", + "name": "Name", + "nameValidationMsg": "Enter a name for your model", + "noCustomLocationProvided": "No Custom Location Provided", + "noModels": "No Models Found", + "noModelsFound": "No Models Found", "none": "none", - "addDifference": "Add Difference", + "notLoaded": "not loaded", + "oliveModels": "Olives", + "onnxModels": "Onnx", + "pathToCustomConfig": "Path To Custom Config", "pickModelType": "Pick Model Type", + "predictionType": "Prediction Type (for Stable Diffusion 2.x Models only)", + "quickAdd": "Quick Add", + "repo_id": "Repo ID", + "repoIDValidationMsg": "Online repository of your model", + "safetensorModels": "SafeTensors", + "sameFolder": "Same folder", + "scanAgain": "Scan Again", + "scanForModels": "Scan For Models", + "search": "Search", + "selectAll": "Select All", + "selectAndAdd": "Select and Add Models Listed Below", + "selected": "Selected", + "selectFolder": "Select Folder", "selectModel": "Select Model", - "importModels": "Import Models", "settings": "Settings", + "showExisting": "Show Existing", + "sigmoid": "Sigmoid", + "simpleModelDesc": "Provide a path to a local Diffusers model, local checkpoint / safetensors model a HuggingFace Repo ID, or a checkpoint/diffusers model URL.", + "statusConverting": "Converting", "syncModels": "Sync Models", "syncModelsDesc": "If your models are out of sync with the backend, you can refresh them up using this option. This is generally handy in cases where you manually update your models.yaml file or add models to the InvokeAI root folder after the application has booted.", - "modelsSynced": "Models Synced", - "modelSyncFailed": "Model Sync Failed" + "updateModel": "Update Model", + "useCustomConfig": "Use Custom Config", + "v1": "v1", + "v2_768": "v2 (768px)", + "v2_base": "v2 (512px)", + "vae": "VAE", + "vaeLocation": "VAE Location", + "vaeLocationValidationMsg": "Path to where your VAE is located.", + "vaeRepoID": "VAE Repo ID", + "vaeRepoIDValidationMsg": "Online repository of your VAE", + "variant": "Variant", + "weightedSum": "Weighted Sum", + "width": "Width", + "widthValidationMsg": "Default width of your model." + }, + "models": { + "loading": "loading", + "noLoRAsAvailable": "No LoRAs available", + "noMatchingLoRAs": "No matching LoRAs", + "noMatchingModels": "No matching Models", + "noModelsAvailable": "No Modelss available", + "selectLoRA": "Select a LoRA", + "selectModel": "Select a Model" + }, + "nodes": { + "addNode": "Add Node", + "addNodeToolTip": "Add Node (Shift+A, Space)", + "animatedEdges": "Animated Edges", + "animatedEdgesHelp": "Animate selected edges and edges connected to selected nodes", + "boardField": "Board", + "boardFieldDescription": "A gallery board", + "boolean": "Booleans", + "booleanCollection": "Boolean Collection", + "booleanCollectionDescription": "A collection of booleans.", + "booleanDescription": "Booleans are true or false.", + "booleanPolymorphic": "Boolean Polymorphic", + "booleanPolymorphicDescription": "A collection of booleans.", + "cannotConnectInputToInput": "Cannot connect input to input", + "cannotConnectOutputToOutput": "Cannot connect output to output", + "cannotConnectToSelf": "Cannot connect to self", + "clipField": "Clip", + "clipFieldDescription": "Tokenizer and text_encoder submodels.", + "collection": "Collection", + "collectionDescription": "TODO", + "collectionItem": "Collection Item", + "collectionItemDescription": "TODO", + "colorCodeEdges": "Color-Code Edges", + "colorCodeEdgesHelp": "Color-code edges according to their connected fields", + "colorCollection": "A collection of colors.", + "colorCollectionDescription": "TODO", + "colorField": "Color", + "colorFieldDescription": "A RGBA color.", + "colorPolymorphic": "Color Polymorphic", + "colorPolymorphicDescription": "A collection of colors.", + "conditioningCollection": "Conditioning Collection", + "conditioningCollectionDescription": "Conditioning may be passed between nodes.", + "conditioningField": "Conditioning", + "conditioningFieldDescription": "Conditioning may be passed between nodes.", + "conditioningPolymorphic": "Conditioning Polymorphic", + "conditioningPolymorphicDescription": "Conditioning may be passed between nodes.", + "connectionWouldCreateCycle": "Connection would create a cycle", + "controlCollection": "Control Collection", + "controlCollectionDescription": "Control info passed between nodes.", + "controlField": "Control", + "controlFieldDescription": "Control info passed between nodes.", + "currentImage": "Current Image", + "currentImageDescription": "Displays the current image in the Node Editor", + "denoiseMaskField": "Denoise Mask", + "denoiseMaskFieldDescription": "Denoise Mask may be passed between nodes", + "doesNotExist": "does not exist", + "downloadWorkflow": "Download Workflow JSON", + "edge": "Edge", + "enum": "Enum", + "enumDescription": "Enums are values that may be one of a number of options.", + "executionStateCompleted": "Completed", + "executionStateError": "Error", + "executionStateInProgress": "In Progress", + "fieldTypesMustMatch": "Field types must match", + "fitViewportNodes": "Fit View", + "float": "Float", + "floatCollection": "Float Collection", + "floatCollectionDescription": "A collection of floats.", + "floatDescription": "Floats are numbers with a decimal point.", + "floatPolymorphic": "Float Polymorphic", + "floatPolymorphicDescription": "A collection of floats.", + "fullyContainNodes": "Fully Contain Nodes to Select", + "fullyContainNodesHelp": "Nodes must be fully inside the selection box to be selected", + "hideGraphNodes": "Hide Graph Overlay", + "hideLegendNodes": "Hide Field Type Legend", + "hideMinimapnodes": "Hide MiniMap", + "imageCollection": "Image Collection", + "imageCollectionDescription": "A collection of images.", + "imageField": "Image", + "imageFieldDescription": "Images may be passed between nodes.", + "imagePolymorphic": "Image Polymorphic", + "imagePolymorphicDescription": "A collection of images.", + "inputField": "Input Field", + "inputFields": "Input Fields", + "inputMayOnlyHaveOneConnection": "Input may only have one connection", + "inputNode": "Input Node", + "integer": "Integer", + "integerCollection": "Integer Collection", + "integerCollectionDescription": "A collection of integers.", + "integerDescription": "Integers are whole numbers, without a decimal point.", + "integerPolymorphic": "Integer Polymorphic", + "integerPolymorphicDescription": "A collection of integers.", + "invalidOutputSchema": "Invalid output schema", + "latentsCollection": "Latents Collection", + "latentsCollectionDescription": "Latents may be passed between nodes.", + "latentsField": "Latents", + "latentsFieldDescription": "Latents may be passed between nodes.", + "latentsPolymorphic": "Latents Polymorphic", + "latentsPolymorphicDescription": "Latents may be passed between nodes.", + "loadingNodes": "Loading Nodes...", + "loadWorkflow": "Load Workflow", + "noWorkflow": "No Workflow", + "loRAModelField": "LoRA", + "loRAModelFieldDescription": "TODO", + "mainModelField": "Model", + "mainModelFieldDescription": "TODO", + "maybeIncompatible": "May be Incompatible With Installed", + "mismatchedVersion": "Has Mismatched Version", + "missingCanvaInitImage": "Missing canvas init image", + "missingCanvaInitMaskImages": "Missing canvas init and mask images", + "missingTemplate": "Missing Template", + "noConnectionData": "No connection data", + "noConnectionInProgress": "No connection in progress", + "node": "Node", + "nodeOutputs": "Node Outputs", + "nodeSearch": "Search for nodes", + "nodeTemplate": "Node Template", + "nodeType": "Node Type", + "noFieldsLinearview": "No fields added to Linear View", + "noFieldType": "No field type", + "noImageFoundState": "No initial image found in state", + "noMatchingNodes": "No matching nodes", + "noNodeSelected": "No node selected", + "nodeOpacity": "Node Opacity", + "noOutputRecorded": "No outputs recorded", + "noOutputSchemaName": "No output schema name found in ref object", + "notes": "Notes", + "notesDescription": "Add notes about your workflow", + "oNNXModelField": "ONNX Model", + "oNNXModelFieldDescription": "ONNX model field.", + "outputField": "Output Field", + "outputFields": "Output Fields", + "outputNode": "Output node", + "outputSchemaNotFound": "Output schema not found", + "pickOne": "Pick One", + "problemReadingMetadata": "Problem reading metadata from image", + "problemReadingWorkflow": "Problem reading workflow from image", + "problemSettingTitle": "Problem Setting Title", + "reloadNodeTemplates": "Reload Node Templates", + "removeLinearView": "Remove from Linear View", + "resetWorkflow": "Reset Workflow", + "resetWorkflowDesc": "Are you sure you want to reset this workflow?", + "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", + "scheduler": "Scheduler", + "schedulerDescription": "TODO", + "sDXLMainModelField": "SDXL Model", + "sDXLMainModelFieldDescription": "SDXL model field.", + "sDXLRefinerModelField": "Refiner Model", + "sDXLRefinerModelFieldDescription": "TODO", + "showGraphNodes": "Show Graph Overlay", + "showLegendNodes": "Show Field Type Legend", + "showMinimapnodes": "Show MiniMap", + "skipped": "Skipped", + "skippedReservedInput": "Skipped reserved input field", + "skippedReservedOutput": "Skipped reserved output field", + "skippingInputNoTemplate": "Skipping input field with no template", + "skippingReservedFieldType": "Skipping reserved field type", + "skippingUnknownInputType": "Skipping unknown input field type", + "skippingUnknownOutputType": "Skipping unknown output field type", + "snapToGrid": "Snap to Grid", + "snapToGridHelp": "Snap nodes to grid when moved", + "sourceNode": "Source node", + "string": "String", + "stringCollection": "String Collection", + "stringCollectionDescription": "A collection of strings.", + "stringDescription": "Strings are text.", + "stringPolymorphic": "String Polymorphic", + "stringPolymorphicDescription": "A collection of strings.", + "unableToLoadWorkflow": "Unable to Validate Workflow", + "unableToParseEdge": "Unable to parse edge", + "unableToParseNode": "Unable to parse node", + "unableToValidateWorkflow": "Unable to Validate Workflow", + "uNetField": "UNet", + "uNetFieldDescription": "UNet submodel.", + "unhandledInputProperty": "Unhandled input property", + "unhandledOutputProperty": "Unhandled output property", + "unknownField": "Unknown Field", + "unknownNode": "Unknown Node", + "unknownTemplate": "Unknown Template", + "unkownInvocation": "Unknown Invocation type", + "updateNode": "Update Node", + "updateApp": "Update App", + "vaeField": "Vae", + "vaeFieldDescription": "Vae submodel.", + "vaeModelField": "VAE", + "vaeModelFieldDescription": "TODO", + "validateConnections": "Validate Connections and Graph", + "validateConnectionsHelp": "Prevent invalid connections from being made, and invalid graphs from being invoked", + "version": "Version", + "versionUnknown": " Version Unknown", + "workflow": "Workflow", + "workflowAuthor": "Author", + "workflowContact": "Contact", + "workflowDescription": "Short Description", + "workflowName": "Name", + "workflowNotes": "Notes", + "workflowSettings": "Workflow Editor Settings", + "workflowTags": "Tags", + "workflowValidation": "Workflow Validation Error", + "workflowVersion": "Version", + "zoomInNodes": "Zoom In", + "zoomOutNodes": "Zoom Out" }, "parameters": { - "general": "General", - "images": "Images", - "steps": "Steps", - "cfgScale": "CFG Scale", - "width": "Width", - "height": "Height", - "scheduler": "Scheduler", - "seed": "Seed", - "boundingBoxWidth": "Bounding Box Width", + "aspectRatio": "Aspect Ratio", + "boundingBoxHeader": "Bounding Box", "boundingBoxHeight": "Bounding Box Height", - "imageToImage": "Image to Image", - "randomizeSeed": "Randomize Seed", - "shuffle": "Shuffle Seed", - "noiseThreshold": "Noise Threshold", - "perlinNoise": "Perlin Noise", - "noiseSettings": "Noise", - "variations": "Variations", - "variationAmount": "Variation Amount", - "seedWeights": "Seed Weights", - "faceRestoration": "Face Restoration", - "restoreFaces": "Restore Faces", - "type": "Type", - "strength": "Strength", - "upscaling": "Upscaling", - "upscale": "Upscale", - "upscaleImage": "Upscale Image", + "boundingBoxWidth": "Bounding Box Width", + "cancel": { + "cancel": "Cancel", + "immediate": "Cancel immediately", + "isScheduled": "Canceling", + "schedule": "Cancel after current iteration", + "setType": "Set cancel type" + }, + "cfgScale": "CFG Scale", + "clipSkip": "CLIP Skip", + "clipSkipWithLayerCount": "CLIP Skip {{layerCount}}", + "closeViewer": "Close Viewer", + "codeformerFidelity": "Fidelity", + "coherenceMode": "Mode", + "coherencePassHeader": "Coherence Pass", + "coherenceSteps": "Steps", + "coherenceStrength": "Strength", + "compositingSettingsHeader": "Compositing Settings", + "controlNetControlMode": "Control Mode", + "copyImage": "Copy Image", + "copyImageToLink": "Copy Image To Link", "denoisingStrength": "Denoising Strength", - "scale": "Scale", - "otherOptions": "Other Options", - "seamlessTiling": "Seamless Tiling", - "seamlessXAxis": "X Axis", - "seamlessYAxis": "Y Axis", + "downloadImage": "Download Image", + "enableNoiseSettings": "Enable Noise Settings", + "faceRestoration": "Face Restoration", + "general": "General", + "height": "Height", + "hidePreview": "Hide Preview", "hiresOptim": "High Res Optimization", "hiresStrength": "High Res Strength", + "hSymmetryStep": "H Symmetry Step", "imageFit": "Fit Initial Image To Output Size", - "codeformerFidelity": "Fidelity", - "compositingSettingsHeader": "Compositing Settings", + "images": "Images", + "imageToImage": "Image to Image", + "img2imgStrength": "Image To Image Strength", + "infillMethod": "Infill Method", + "infillScalingHeader": "Infill and Scaling", + "info": "Info", + "initialImage": "Initial Image", + "invoke": { + "addingImagesTo": "Adding images to", + "invoke": "Invoke", + "missingFieldTemplate": "Missing field template", + "missingInputForField": "{{nodeLabel}} -> {{fieldLabel}} missing input", + "missingNodeTemplate": "Missing node template", + "noControlImageForControlNet": "ControlNet {{index}} has no control image", + "noInitialImageSelected": "No initial image selected", + "noModelForControlNet": "ControlNet {{index}} has no model selected.", + "noModelSelected": "No model selected", + "noPrompts": "No prompts generated", + "noNodesInGraph": "No nodes in graph", + "readyToInvoke": "Ready to Invoke", + "systemBusy": "System busy", + "systemDisconnected": "System disconnected", + "unableToInvoke": "Unable to Invoke" + }, "maskAdjustmentsHeader": "Mask Adjustments", "maskBlur": "Blur", "maskBlurMethod": "Blur Method", - "coherencePassHeader": "Coherence Pass", - "coherenceMode": "Mode", - "coherenceSteps": "Steps", - "coherenceStrength": "Strength", - "seamLowThreshold": "Low", - "seamHighThreshold": "High", - "scaleBeforeProcessing": "Scale Before Processing", - "scaledWidth": "Scaled W", - "scaledHeight": "Scaled H", - "infillMethod": "Infill Method", - "tileSize": "Tile Size", - "patchmatchDownScaleSize": "Downscale", - "boundingBoxHeader": "Bounding Box", - "seamCorrectionHeader": "Seam Correction", - "infillScalingHeader": "Infill and Scaling", - "img2imgStrength": "Image To Image Strength", - "toggleLoopback": "Toggle Loopback", - "symmetry": "Symmetry", - "hSymmetryStep": "H Symmetry Step", - "vSymmetryStep": "V Symmetry Step", - "invoke": "Invoke", - "cancel": { - "immediate": "Cancel immediately", - "schedule": "Cancel after current iteration", - "isScheduled": "Canceling", - "setType": "Set cancel type" - }, - "positivePromptPlaceholder": "Positive Prompt", "negativePromptPlaceholder": "Negative Prompt", + "noiseSettings": "Noise", + "noiseThreshold": "Noise Threshold", + "openInViewer": "Open In Viewer", + "otherOptions": "Other Options", + "patchmatchDownScaleSize": "Downscale", + "perlinNoise": "Perlin Noise", + "positivePromptPlaceholder": "Positive Prompt", + "randomizeSeed": "Randomize Seed", + "manualSeed": "Manual Seed", + "randomSeed": "Random Seed", + "restoreFaces": "Restore Faces", + "iterations": "Iterations", + "iterationsWithCount_one": "{{count}} Iteration", + "iterationsWithCount_other": "{{count}} Iterations", + "scale": "Scale", + "scaleBeforeProcessing": "Scale Before Processing", + "scaledHeight": "Scaled H", + "scaledWidth": "Scaled W", + "scheduler": "Scheduler", + "seamCorrectionHeader": "Seam Correction", + "seamHighThreshold": "High", + "seamlessTiling": "Seamless Tiling", + "seamlessXAxis": "X Axis", + "seamlessYAxis": "Y Axis", + "seamlessX": "Seamless X", + "seamlessY": "Seamless Y", + "seamlessX&Y": "Seamless X & Y", + "seamLowThreshold": "Low", + "seed": "Seed", + "seedWeights": "Seed Weights", + "imageActions": "Image Actions", "sendTo": "Send to", "sendToImg2Img": "Send to Image to Image", "sendToUnifiedCanvas": "Send To Unified Canvas", - "copyImage": "Copy Image", - "copyImageToLink": "Copy Image To Link", - "downloadImage": "Download Image", - "openInViewer": "Open In Viewer", - "closeViewer": "Close Viewer", + "showOptionsPanel": "Show Side Panel (O or T)", + "showPreview": "Show Preview", + "shuffle": "Shuffle Seed", + "steps": "Steps", + "strength": "Strength", + "symmetry": "Symmetry", + "tileSize": "Tile Size", + "toggleLoopback": "Toggle Loopback", + "type": "Type", + "upscale": "Upscale (Shift + U)", + "upscaleImage": "Upscale Image", + "upscaling": "Upscaling", + "useAll": "Use All", + "useCpuNoise": "Use CPU Noise", + "cpuNoise": "CPU Noise", + "gpuNoise": "GPU Noise", + "useInitImg": "Use Initial Image", "usePrompt": "Use Prompt", "useSeed": "Use Seed", - "useAll": "Use All", - "useInitImg": "Use Initial Image", - "info": "Info", - "initialImage": "Initial Image", - "showOptionsPanel": "Show Options Panel", - "hidePreview": "Hide Preview", - "showPreview": "Show Preview", - "controlNetControlMode": "Control Mode", - "clipSkip": "CLIP Skip", - "aspectRatio": "Ratio" + "variationAmount": "Variation Amount", + "variations": "Variations", + "vSymmetryStep": "V Symmetry Step", + "width": "Width" + }, + "dynamicPrompts": { + "combinatorial": "Combinatorial Generation", + "dynamicPrompts": "Dynamic Prompts", + "enableDynamicPrompts": "Enable Dynamic Prompts", + "maxPrompts": "Max Prompts", + "promptsWithCount_one": "{{count}} Prompt", + "promptsWithCount_other": "{{count}} Prompts", + "seedBehaviour": { + "label": "Seed Behaviour", + "perIterationLabel": "Seed per Iteration", + "perIterationDesc": "Use a different seed for each iteration", + "perPromptLabel": "Seed per Image", + "perPromptDesc": "Use a different seed for each image" + } + }, + "sdxl": { + "cfgScale": "CFG Scale", + "concatPromptStyle": "Concatenate Prompt & Style", + "denoisingStrength": "Denoising Strength", + "loading": "Loading...", + "negAestheticScore": "Negative Aesthetic Score", + "negStylePrompt": "Negative Style Prompt", + "noModelsAvailable": "No models available", + "posAestheticScore": "Positive Aesthetic Score", + "posStylePrompt": "Positive Style Prompt", + "refiner": "Refiner", + "refinermodel": "Refiner Model", + "refinerStart": "Refiner Start", + "scheduler": "Scheduler", + "selectAModel": "Select a model", + "steps": "Steps", + "useRefiner": "Use Refiner" }, "settings": { - "models": "Models", - "displayInProgress": "Display Progress Images", - "saveSteps": "Save images every n steps", - "confirmOnDelete": "Confirm On Delete", - "displayHelpIcons": "Display Help Icons", "alternateCanvasLayout": "Alternate Canvas Layout", - "enableNodesEditor": "Enable Nodes Editor", - "enableImageDebugging": "Enable Image Debugging", - "useSlidersForAll": "Use Sliders For All Options", - "showProgressInViewer": "Show Progress Images in Viewer", "antialiasProgressImages": "Antialias Progress Images", "autoChangeDimensions": "Update W/H To Model Defaults On Change", + "beta": "Beta", + "confirmOnDelete": "Confirm On Delete", + "consoleLogLevel": "Log Level", + "developer": "Developer", + "displayHelpIcons": "Display Help Icons", + "displayInProgress": "Display Progress Images", + "enableImageDebugging": "Enable Image Debugging", + "enableNodesEditor": "Enable Nodes Editor", + "experimental": "Experimental", + "favoriteSchedulers": "Favorite Schedulers", + "favoriteSchedulersPlaceholder": "No schedulers favorited", + "general": "General", + "generation": "Generation", + "models": "Models", + "resetComplete": "Web UI has been reset.", "resetWebUI": "Reset Web UI", "resetWebUIDesc1": "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.", "resetWebUIDesc2": "If images aren't showing up in the gallery or something else isn't working, please try resetting before submitting an issue on GitHub.", - "resetComplete": "Web UI has been reset.", - "consoleLogLevel": "Log Level", + "saveSteps": "Save images every n steps", "shouldLogToConsole": "Console Logging", - "developer": "Developer", - "general": "General", - "generation": "Generation", - "ui": "User Interface", - "favoriteSchedulers": "Favorite Schedulers", - "favoriteSchedulersPlaceholder": "No schedulers favorited", "showAdvancedOptions": "Show Advanced Options", - "experimental": "Experimental", - "beta": "Beta" + "showProgressInViewer": "Show Progress Images in Viewer", + "ui": "User Interface", + "useSlidersForAll": "Use Sliders For All Options" }, "toast": { - "serverError": "Server Error", - "disconnected": "Disconnected from Server", - "connected": "Connected to Server", + "addedToBoard": "Added to board", + "baseModelChangedCleared": "Base model changed, cleared", "canceled": "Processing Canceled", - "tempFoldersEmptied": "Temp Folder Emptied", - "uploadFailed": "Upload failed", - "uploadFailedUnableToLoadDesc": "Unable to load file", - "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "canvasCopiedClipboard": "Canvas Copied to Clipboard", + "canvasDownloaded": "Canvas Downloaded", + "canvasMerged": "Canvas Merged", + "canvasSavedGallery": "Canvas Saved to Gallery", + "canvasSentControlnetAssets": "Canvas Sent to ControlNet & Assets", + "connected": "Connected to Server", + "disconnected": "Disconnected from Server", "downloadImageStarted": "Image Download Started", + "faceRestoreFailed": "Face Restoration Failed", "imageCopied": "Image Copied", - "problemCopyingImage": "Unable to Copy Image", "imageLinkCopied": "Image Link Copied", - "problemCopyingImageLink": "Unable to Copy Image Link", "imageNotLoaded": "No Image Loaded", "imageNotLoadedDesc": "Could not find image", + "imageSaved": "Image Saved", "imageSavedToGallery": "Image Saved to Gallery", - "canvasMerged": "Canvas Merged", - "sentToImageToImage": "Sent To Image To Image", - "sentToUnifiedCanvas": "Sent to Unified Canvas", - "parameterSet": "Parameter set", - "parameterNotSet": "Parameter not set", - "parametersSet": "Parameters Set", - "parametersNotSet": "Parameters Not Set", - "parametersNotSetDesc": "No metadata found for this image.", - "parametersFailed": "Problem loading parameters", - "parametersFailedDesc": "Unable to load init image.", - "seedSet": "Seed Set", - "seedNotSet": "Seed Not Set", - "seedNotSetDesc": "Could not find seed for this image.", - "promptSet": "Prompt Set", - "promptNotSet": "Prompt Not Set", - "promptNotSetDesc": "Could not find prompt for this image.", - "upscalingFailed": "Upscaling Failed", - "faceRestoreFailed": "Face Restoration Failed", - "metadataLoadFailed": "Failed to load metadata", - "initialImageSet": "Initial Image Set", + "imageSavingFailed": "Image Saving Failed", + "imageUploaded": "Image Uploaded", + "imageUploadFailed": "Image Upload Failed", + "incompatibleSubmodel": "incompatible submodel", "initialImageNotSet": "Initial Image Not Set", "initialImageNotSetDesc": "Could not load initial image", - "nodesSaved": "Nodes Saved", + "initialImageSet": "Initial Image Set", + "loadedWithWarnings": "Workflow Loaded with Warnings", + "maskSavedAssets": "Mask Saved to Assets", + "maskSentControlnetAssets": "Mask Sent to ControlNet & Assets", + "metadataLoadFailed": "Failed to load metadata", + "modelAdded": "Model Added: {{modelName}}", + "modelAddedSimple": "Model Added", + "modelAddFailed": "Model Add Failed", + "nodesBrokenConnections": "Cannot load. Some connections are broken.", + "nodesCleared": "Nodes Cleared", + "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", "nodesLoaded": "Nodes Loaded", + "nodesLoadedFailed": "Failed To Load Nodes", "nodesNotValidGraph": "Not a valid InvokeAI Node Graph", "nodesNotValidJSON": "Not a valid JSON", - "nodesCorruptedGraph": "Cannot load. Graph seems to be corrupted.", + "nodesSaved": "Nodes Saved", "nodesUnrecognizedTypes": "Cannot load. Graph has unrecognized types", - "nodesBrokenConnections": "Cannot load. Some connections are broken.", - "nodesLoadedFailed": "Failed To Load Nodes", - "nodesCleared": "Nodes Cleared" + "parameterNotSet": "Parameter not set", + "parameterSet": "Parameter set", + "parametersFailed": "Problem loading parameters", + "parametersFailedDesc": "Unable to load init image.", + "parametersNotSet": "Parameters Not Set", + "parametersNotSetDesc": "No metadata found for this image.", + "parametersSet": "Parameters Set", + "problemCopyingCanvas": "Problem Copying Canvas", + "problemCopyingCanvasDesc": "Unable to export base layer", + "problemCopyingImage": "Unable to Copy Image", + "problemCopyingImageLink": "Unable to Copy Image Link", + "problemDownloadingCanvas": "Problem Downloading Canvas", + "problemDownloadingCanvasDesc": "Unable to export base layer", + "problemImportingMask": "Problem Importing Mask", + "problemImportingMaskDesc": "Unable to export mask", + "problemMergingCanvas": "Problem Merging Canvas", + "problemMergingCanvasDesc": "Unable to export base layer", + "problemSavingCanvas": "Problem Saving Canvas", + "problemSavingCanvasDesc": "Unable to export base layer", + "problemSavingMask": "Problem Saving Mask", + "problemSavingMaskDesc": "Unable to export mask", + "promptNotSet": "Prompt Not Set", + "promptNotSetDesc": "Could not find prompt for this image.", + "promptSet": "Prompt Set", + "seedNotSet": "Seed Not Set", + "seedNotSetDesc": "Could not find seed for this image.", + "seedSet": "Seed Set", + "sentToImageToImage": "Sent To Image To Image", + "sentToUnifiedCanvas": "Sent to Unified Canvas", + "serverError": "Server Error", + "setCanvasInitialImage": "Set as canvas initial image", + "setControlImage": "Set as control image", + "setIPAdapterImage": "Set as IP Adapter Image", + "setInitialImage": "Set as initial image", + "setNodeField": "Set as node field", + "tempFoldersEmptied": "Temp Folder Emptied", + "uploadFailed": "Upload failed", + "uploadFailedInvalidUploadDesc": "Must be single PNG or JPEG image", + "uploadFailedUnableToLoadDesc": "Unable to load file", + "upscalingFailed": "Upscaling Failed", + "workflowLoaded": "Workflow Loaded" }, "tooltip": { "feature": { - "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", - "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", - "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", - "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", - "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3.", - "upscale": "Use ESRGAN to enlarge the image immediately after generation.", - "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", - "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", "boundingBox": "The bounding box is the same as the Width and Height settings for Text to Image or Image to Image. Only the area in the box will be processed.", + "faceCorrection": "Face correction with GFPGAN or Codeformer: the algorithm detects faces in the image and corrects any defects. High value will change the image more, resulting in more attractive faces. Codeformer with a higher fidelity preserves the original image at the expense of stronger face correction.", + "gallery": "Gallery displays generations from the outputs folder as they're created. Settings are stored within files and accesed by context menu.", + "imageToImage": "Image to Image loads any image as initial, which is then used to generate a new one along with the prompt. The higher the value, the more the result image will change. Values from 0.0 to 1.0 are possible, the recommended range is .25-.75", + "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes).", + "other": "These options will enable alternative processing modes for Invoke. 'Seamless tiling' will create repeating patterns in the output. 'High resolution' is generation in two steps with img2img: use this setting when you want a larger and more coherent image without artifacts. It will take longer than usual txt2img.", + "prompt": "This is the prompt field. Prompt includes generation objects and stylistic terms. You can add weight (token importance) in the prompt as well, but CLI commands and parameters will not work.", "seamCorrection": "Controls the handling of visible seams that occur between generated images on the canvas.", - "infillAndScaling": "Manage infill methods (used on masked or erased areas of the canvas) and scaling (useful for small bounding box sizes)." + "seed": "Seed value affects the initial noise from which the image is formed. You can use the already existing seeds from previous images. 'Noise Threshold' is used to mitigate artifacts at high CFG values (try the 0-10 range), and Perlin to add Perlin noise during generation: both serve to add variation to your outputs.", + "upscale": "Use ESRGAN to enlarge the image immediately after generation.", + "variations": "Try a variation with a value between 0.1 and 1.0 to change the result for a given seed. Interesting variations of the seed are between 0.1 and 0.3." } }, + "popovers": { + "clipSkip": { + "heading": "CLIP Skip", + "paragraphs": [ + "Choose how many layers of the CLIP model to skip.", + "Some models work better with certain CLIP Skip settings.", + "A higher value typically results in a less detailed image." + ] + }, + "paramNegativeConditioning": { + "heading": "Negative Prompt", + "paragraphs": [ + "The generation process avoids the concepts in the negative prompt. Use this to exclude qualities or objects from the output.", + "Supports Compel syntax and embeddings." + ] + }, + "paramPositiveConditioning": { + "heading": "Positive Prompt", + "paragraphs": [ + "Guides the generation process. You may use any words or phrases.", + "Compel and Dynamic Prompts syntaxes and embeddings." + ] + }, + "paramScheduler": { + "heading": "Scheduler", + "paragraphs": [ + "Scheduler defines how to iteratively add noise to an image or how to update a sample based on a model's output." + ] + }, + "compositingBlur": { + "heading": "Blur", + "paragraphs": ["The blur radius of the mask."] + }, + "compositingBlurMethod": { + "heading": "Blur Method", + "paragraphs": ["The method of blur applied to the masked area."] + }, + "compositingCoherencePass": { + "heading": "Coherence Pass", + "paragraphs": [ + "A second round of denoising helps to composite the Inpainted/Outpainted image." + ] + }, + "compositingCoherenceMode": { + "heading": "Mode", + "paragraphs": ["The mode of the Coherence Pass."] + }, + "compositingCoherenceSteps": { + "heading": "Steps", + "paragraphs": [ + "Number of denoising steps used in the Coherence Pass.", + "Same as the main Steps parameter." + ] + }, + "compositingStrength": { + "heading": "Strength", + "paragraphs": [ + "Denoising strength for the Coherence Pass.", + "Same as the Image to Image Denoising Strength parameter." + ] + }, + "compositingMaskAdjustments": { + "heading": "Mask Adjustments", + "paragraphs": ["Adjust the mask."] + }, + "controlNetBeginEnd": { + "heading": "Begin / End Step Percentage", + "paragraphs": [ + "Which steps of the denoising process will have the ControlNet applied.", + "ControlNets applied at the beginning of the process guide composition, and ControlNets applied at the end guide details." + ] + }, + "controlNetControlMode": { + "heading": "Control Mode", + "paragraphs": [ + "Lends more weight to either the prompt or ControlNet." + ] + }, + "controlNetResizeMode": { + "heading": "Resize Mode", + "paragraphs": [ + "How the ControlNet image will be fit to the image output size." + ] + }, + "controlNet": { + "heading": "ControlNet", + "paragraphs": [ + "ControlNets provide guidance to the generation process, helping create images with controlled composition, structure, or style, depending on the model selected." + ] + }, + "controlNetWeight": { + "heading": "Weight", + "paragraphs": [ + "How strongly the ControlNet will impact the generated image." + ] + }, + "dynamicPrompts": { + "heading": "Dynamic Prompts", + "paragraphs": [ + "Dynamic Prompts parses a single prompt into many.", + "The basic syntax is \"a {red|green|blue} ball\". This will produce three prompts: \"a red ball\", \"a green ball\" and \"a blue ball\".", + "You can use the syntax as many times as you like in a single prompt, but be sure to keep the number of prompts generated in check with the Max Prompts setting." + ] + }, + "dynamicPromptsMaxPrompts": { + "heading": "Max Prompts", + "paragraphs": [ + "Limits the number of prompts that can be generated by Dynamic Prompts." + ] + }, + "dynamicPromptsSeedBehaviour": { + "heading": "Seed Behaviour", + "paragraphs": [ + "Controls how the seed is used when generating prompts.", + "Per Iteration will use a unique seed for each iteration. Use this to explore prompt variations on a single seed.", + "For example, if you have 5 prompts, each image will use the same seed.", + "Per Image will use a unique seed for each image. This provides more variation." + ] + }, + "infillMethod": { + "heading": "Infill Method", + "paragraphs": ["Method to infill the selected area."] + }, + "lora": { + "heading": "LoRA Weight", + "paragraphs": [ + "Higher LoRA weight will lead to larger impacts on the final image." + ] + }, + "noiseUseCPU": { + "heading": "Use CPU Noise", + "paragraphs": [ + "Controls whether noise is generated on the CPU or GPU.", + "With CPU Noise enabled, a particular seed will produce the same image on any machine.", + "There is no performance impact to enabling CPU Noise." + ] + }, + "paramCFGScale": { + "heading": "CFG Scale", + "paragraphs": [ + "Controls how much your prompt influences the generation process." + ] + }, + "paramDenoisingStrength": { + "heading": "Denoising Strength", + "paragraphs": [ + "How much noise is added to the input image.", + "0 will result in an identical image, while 1 will result in a completely new image." + ] + }, + "paramIterations": { + "heading": "Iterations", + "paragraphs": [ + "The number of images to generate.", + "If Dynamic Prompts is enabled, each of the prompts will be generated this many times." + ] + }, + "paramModel": { + "heading": "Model", + "paragraphs": [ + "Model used for the denoising steps.", + "Different models are typically trained to specialize in producing particular aesthetic results and content." + ] + }, + "paramRatio": { + "heading": "Aspect Ratio", + "paragraphs": [ + "The aspect ratio of the dimensions of the image generated.", + "An image size (in number of pixels) equivalent to 512x512 is recommended for SD1.5 models and a size equivalent to 1024x1024 is recommended for SDXL models." + ] + }, + "paramSeed": { + "heading": "Seed", + "paragraphs": [ + "Controls the starting noise used for generation.", + "Disable “Random Seed” to produce identical results with the same generation settings." + ] + }, + "paramSteps": { + "heading": "Steps", + "paragraphs": [ + "Number of steps that will be performed in each generation.", + "Higher step counts will typically create better images but will require more generation time." + ] + }, + "paramVAE": { + "heading": "VAE", + "paragraphs": [ + "Model used for translating AI output into the final image." + ] + }, + "paramVAEPrecision": { + "heading": "VAE Precision", + "paragraphs": [ + "The precision used during VAE encoding and decoding. FP16/half precision is more efficient, at the expense of minor image variations." + ] + }, + "scaleBeforeProcessing": { + "heading": "Scale Before Processing", + "paragraphs": [ + "Scales the selected area to the size best suited for the model before the image generation process." + ] + } + }, + "ui": { + "hideProgressImages": "Hide Progress Images", + "lockRatio": "Lock Ratio", + "showProgressImages": "Show Progress Images", + "swapSizes": "Swap Sizes" + }, "unifiedCanvas": { - "layer": "Layer", - "base": "Base", - "mask": "Mask", - "maskingOptions": "Masking Options", - "enableMask": "Enable Mask", - "preserveMaskedArea": "Preserve Masked Area", - "clearMask": "Clear Mask", - "brush": "Brush", - "eraser": "Eraser", - "fillBoundingBox": "Fill Bounding Box", - "eraseBoundingBox": "Erase Bounding Box", - "colorPicker": "Color Picker", - "brushOptions": "Brush Options", - "brushSize": "Size", - "move": "Move", - "resetView": "Reset View", - "mergeVisible": "Merge Visible", - "saveToGallery": "Save To Gallery", - "copyToClipboard": "Copy to Clipboard", - "downloadAsImage": "Download As Image", - "undo": "Undo", - "redo": "Redo", - "clearCanvas": "Clear Canvas", - "canvasSettings": "Canvas Settings", - "showIntermediates": "Show Intermediates", - "showGrid": "Show Grid", - "snapToGrid": "Snap to Grid", - "darkenOutsideSelection": "Darken Outside Selection", - "autoSaveToGallery": "Auto Save to Gallery", - "saveBoxRegionOnly": "Save Box Region Only", - "limitStrokesToBox": "Limit Strokes to Box", - "showCanvasDebugInfo": "Show Additional Canvas Info", - "clearCanvasHistory": "Clear Canvas History", - "clearHistory": "Clear History", - "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", - "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", - "emptyTempImageFolder": "Empty Temp Image Folder", - "emptyFolder": "Empty Folder", - "emptyTempImagesFolderMessage": "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.", - "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", - "activeLayer": "Active Layer", - "canvasScale": "Canvas Scale", - "boundingBox": "Bounding Box", - "scaledBoundingBox": "Scaled Bounding Box", - "boundingBoxPosition": "Bounding Box Position", - "canvasDimensions": "Canvas Dimensions", - "canvasPosition": "Canvas Position", - "cursorPosition": "Cursor Position", - "previous": "Previous", - "next": "Next", "accept": "Accept", - "showHide": "Show/Hide", - "discardAll": "Discard All", + "activeLayer": "Active Layer", + "antialiasing": "Antialiasing", + "autoSaveToGallery": "Auto Save to Gallery", + "base": "Base", "betaClear": "Clear", "betaDarkenOutside": "Darken Outside", "betaLimitToBox": "Limit To Box", "betaPreserveMasked": "Preserve Masked", - "antialiasing": "Antialiasing" - }, - "ui": { - "showProgressImages": "Show Progress Images", - "hideProgressImages": "Hide Progress Images", - "swapSizes": "Swap Sizes", - "lockRatio": "Lock Ratio" - }, - "nodes": { - "reloadNodeTemplates": "Reload Node Templates", - "downloadWorkflow": "Download Workflow JSON", - "loadWorkflow": "Load Workflow", - "resetWorkflow": "Reset Workflow", - "resetWorkflowDesc": "Are you sure you want to reset this workflow?", - "resetWorkflowDesc2": "Resetting the workflow will clear all nodes, edges and workflow details.", - "zoomInNodes": "Zoom In", - "zoomOutNodes": "Zoom Out", - "fitViewportNodes": "Fit View", - "hideGraphNodes": "Hide Graph Overlay", - "showGraphNodes": "Show Graph Overlay", - "hideLegendNodes": "Hide Field Type Legend", - "showLegendNodes": "Show Field Type Legend", - "hideMinimapnodes": "Hide MiniMap", - "showMinimapnodes": "Show MiniMap" + "boundingBox": "Bounding Box", + "boundingBoxPosition": "Bounding Box Position", + "brush": "Brush", + "brushOptions": "Brush Options", + "brushSize": "Size", + "canvasDimensions": "Canvas Dimensions", + "canvasPosition": "Canvas Position", + "canvasScale": "Canvas Scale", + "canvasSettings": "Canvas Settings", + "clearCanvas": "Clear Canvas", + "clearCanvasHistory": "Clear Canvas History", + "clearCanvasHistoryConfirm": "Are you sure you want to clear the canvas history?", + "clearCanvasHistoryMessage": "Clearing the canvas history leaves your current canvas intact, but irreversibly clears the undo and redo history.", + "clearHistory": "Clear History", + "clearMask": "Clear Mask", + "colorPicker": "Color Picker", + "copyToClipboard": "Copy to Clipboard", + "cursorPosition": "Cursor Position", + "darkenOutsideSelection": "Darken Outside Selection", + "discardAll": "Discard All", + "downloadAsImage": "Download As Image", + "emptyFolder": "Empty Folder", + "emptyTempImageFolder": "Empty Temp Image Folder", + "emptyTempImagesFolderConfirm": "Are you sure you want to empty the temp folder?", + "emptyTempImagesFolderMessage": "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.", + "enableMask": "Enable Mask", + "eraseBoundingBox": "Erase Bounding Box", + "eraser": "Eraser", + "fillBoundingBox": "Fill Bounding Box", + "layer": "Layer", + "limitStrokesToBox": "Limit Strokes to Box", + "mask": "Mask", + "maskingOptions": "Masking Options", + "mergeVisible": "Merge Visible", + "move": "Move", + "next": "Next", + "preserveMaskedArea": "Preserve Masked Area", + "previous": "Previous", + "redo": "Redo", + "resetView": "Reset View", + "saveBoxRegionOnly": "Save Box Region Only", + "saveToGallery": "Save To Gallery", + "scaledBoundingBox": "Scaled Bounding Box", + "showCanvasDebugInfo": "Show Additional Canvas Info", + "showGrid": "Show Grid", + "showHide": "Show/Hide", + "showIntermediates": "Show Intermediates", + "snapToGrid": "Snap to Grid", + "undo": "Undo" } } diff --git a/invokeai/frontend/web/src/app/components/App.tsx b/invokeai/frontend/web/src/app/components/App.tsx index a70ed03fda..b3ffeee333 100644 --- a/invokeai/frontend/web/src/app/components/App.tsx +++ b/invokeai/frontend/web/src/app/components/App.tsx @@ -12,34 +12,32 @@ import { languageSelector } from 'features/system/store/systemSelectors'; import InvokeTabs from 'features/ui/components/InvokeTabs'; import i18n from 'i18n'; import { size } from 'lodash-es'; -import { ReactNode, memo, useCallback, useEffect } from 'react'; +import { memo, useCallback, useEffect } from 'react'; import { ErrorBoundary } from 'react-error-boundary'; import { usePreselectedImage } from '../../features/parameters/hooks/usePreselectedImage'; import AppErrorBoundaryFallback from './AppErrorBoundaryFallback'; import GlobalHotkeys from './GlobalHotkeys'; import Toaster from './Toaster'; +import { useStore } from '@nanostores/react'; +import { $headerComponent } from 'app/store/nanostores/headerComponent'; const DEFAULT_CONFIG = {}; interface Props { config?: PartialAppConfig; - headerComponent?: ReactNode; selectedImage?: { imageName: string; action: 'sendToImg2Img' | 'sendToCanvas' | 'useAllParameters'; }; } -const App = ({ - config = DEFAULT_CONFIG, - headerComponent, - selectedImage, -}: Props) => { +const App = ({ config = DEFAULT_CONFIG, selectedImage }: Props) => { const language = useAppSelector(languageSelector); const logger = useLogger('system'); const dispatch = useAppDispatch(); - const { handlePreselectedImage } = usePreselectedImage(); + const { handleSendToCanvas, handleSendToImg2Img, handleUseAllMetadata } = + usePreselectedImage(selectedImage?.imageName); const handleReset = useCallback(() => { localStorage.clear(); location.reload(); @@ -62,8 +60,24 @@ const App = ({ }, [dispatch]); useEffect(() => { - handlePreselectedImage(selectedImage); - }, [handlePreselectedImage, selectedImage]); + if (selectedImage && selectedImage.action === 'sendToCanvas') { + handleSendToCanvas(); + } + }, [selectedImage, handleSendToCanvas]); + + useEffect(() => { + if (selectedImage && selectedImage.action === 'sendToImg2Img') { + handleSendToImg2Img(); + } + }, [selectedImage, handleSendToImg2Img]); + + useEffect(() => { + if (selectedImage && selectedImage.action === 'useAllParameters') { + handleUseAllMetadata(); + } + }, [selectedImage, handleUseAllMetadata]); + + const headerComponent = useStore($headerComponent); return ( { - const { isUploading } = system; - - let tooltip = ''; - - if (isUploading) { - tooltip = 'Uploading...'; - } - - return { - tooltip, - shouldShow: isUploading, - }; -}); - -export const AuxiliaryProgressIndicator = () => { - const { shouldShow, tooltip } = useAppSelector(selector); - - if (!shouldShow) { - return null; - } - - return ( - - - - - - ); -}; - -export default memo(AuxiliaryProgressIndicator); diff --git a/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts b/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts index ac48fcc7b1..c77dfd5d86 100644 --- a/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts +++ b/invokeai/frontend/web/src/app/components/GlobalHotkeys.ts @@ -1,6 +1,8 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useQueueBack } from 'features/queue/hooks/useQueueBack'; +import { useQueueFront } from 'features/queue/hooks/useQueueFront'; import { ctrlKeyPressed, metaKeyPressed, @@ -33,6 +35,39 @@ const globalHotkeysSelector = createSelector( const GlobalHotkeys: React.FC = () => { const dispatch = useAppDispatch(); const { shift, ctrl, meta } = useAppSelector(globalHotkeysSelector); + const { + queueBack, + isDisabled: isDisabledQueueBack, + isLoading: isLoadingQueueBack, + } = useQueueBack(); + + useHotkeys( + ['ctrl+enter', 'meta+enter'], + queueBack, + { + enabled: () => !isDisabledQueueBack && !isLoadingQueueBack, + preventDefault: true, + enableOnFormTags: ['input', 'textarea', 'select'], + }, + [queueBack, isDisabledQueueBack, isLoadingQueueBack] + ); + + const { + queueFront, + isDisabled: isDisabledQueueFront, + isLoading: isLoadingQueueFront, + } = useQueueFront(); + + useHotkeys( + ['ctrl+shift+enter', 'meta+shift+enter'], + queueFront, + { + enabled: () => !isDisabledQueueFront && !isLoadingQueueFront, + preventDefault: true, + enableOnFormTags: ['input', 'textarea', 'select'], + }, + [queueFront, isDisabledQueueFront, isLoadingQueueFront] + ); useHotkeys( '*', diff --git a/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx b/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx index 322ee3fd2b..8c8c02ee85 100644 --- a/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx +++ b/invokeai/frontend/web/src/app/components/InvokeAIUI.tsx @@ -15,6 +15,9 @@ import { socketMiddleware } from 'services/events/middleware'; import Loading from '../../common/components/Loading/Loading'; import '../../i18n'; import AppDndContext from '../../features/dnd/components/AppDndContext'; +import { $customStarUI, CustomStarUi } from 'app/store/nanostores/customStarUI'; +import { $headerComponent } from 'app/store/nanostores/headerComponent'; +import { $queueId, DEFAULT_QUEUE_ID } from 'features/queue/store/nanoStores'; const App = lazy(() => import('./App')); const ThemeLocaleProvider = lazy(() => import('./ThemeLocaleProvider')); @@ -26,10 +29,12 @@ interface Props extends PropsWithChildren { headerComponent?: ReactNode; middleware?: Middleware[]; projectId?: string; + queueId?: string; selectedImage?: { imageName: string; action: 'sendToImg2Img' | 'sendToCanvas' | 'useAllParameters'; }; + customStarUi?: CustomStarUi; } const InvokeAIUI = ({ @@ -39,7 +44,9 @@ const InvokeAIUI = ({ headerComponent, middleware, projectId, + queueId, selectedImage, + customStarUi, }: Props) => { useEffect(() => { // configure API client token @@ -57,6 +64,11 @@ const InvokeAIUI = ({ $projectId.set(projectId); } + // configure API client project header + if (queueId) { + $queueId.set(queueId); + } + // reset dynamically added middlewares resetMiddlewares(); @@ -77,8 +89,29 @@ const InvokeAIUI = ({ $baseUrl.set(undefined); $authToken.set(undefined); $projectId.set(undefined); + $queueId.set(DEFAULT_QUEUE_ID); }; - }, [apiUrl, token, middleware, projectId]); + }, [apiUrl, token, middleware, projectId, queueId]); + + useEffect(() => { + if (customStarUi) { + $customStarUI.set(customStarUi); + } + + return () => { + $customStarUI.set(undefined); + }; + }, [customStarUi]); + + useEffect(() => { + if (headerComponent) { + $headerComponent.set(headerComponent); + } + + return () => { + $headerComponent.set(undefined); + }; + }, [headerComponent]); return ( @@ -86,11 +119,7 @@ const InvokeAIUI = ({ }> - + diff --git a/invokeai/frontend/web/src/app/components/Toaster.ts b/invokeai/frontend/web/src/app/components/Toaster.ts index 9d7149023b..e319bef59c 100644 --- a/invokeai/frontend/web/src/app/components/Toaster.ts +++ b/invokeai/frontend/web/src/app/components/Toaster.ts @@ -1,6 +1,5 @@ import { useToast } from '@chakra-ui/react'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { toastQueueSelector } from 'features/system/store/systemSelectors'; import { addToast, clearToastQueue } from 'features/system/store/systemSlice'; import { MakeToastArg, makeToast } from 'features/system/util/makeToast'; import { memo, useCallback, useEffect } from 'react'; @@ -11,7 +10,7 @@ import { memo, useCallback, useEffect } from 'react'; */ const Toaster = () => { const dispatch = useAppDispatch(); - const toastQueue = useAppSelector(toastQueueSelector); + const toastQueue = useAppSelector((state) => state.system.toastQueue); const toast = useToast(); useEffect(() => { toastQueue.forEach((t) => { diff --git a/invokeai/frontend/web/src/app/logging/logger.ts b/invokeai/frontend/web/src/app/logging/logger.ts index 2d7b8a7744..0e0a1a7324 100644 --- a/invokeai/frontend/web/src/app/logging/logger.ts +++ b/invokeai/frontend/web/src/app/logging/logger.ts @@ -20,6 +20,7 @@ export type LoggerNamespace = | 'system' | 'socketio' | 'session' + | 'queue' | 'dnd'; export const logger = (namespace: LoggerNamespace) => diff --git a/invokeai/frontend/web/src/app/logging/useLogger.ts b/invokeai/frontend/web/src/app/logging/useLogger.ts index d31bcc2660..697c3d3fc8 100644 --- a/invokeai/frontend/web/src/app/logging/useLogger.ts +++ b/invokeai/frontend/web/src/app/logging/useLogger.ts @@ -1,7 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { createLogWriter } from '@roarr/browser-log-writer'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { isEqual } from 'lodash-es'; import { useEffect, useMemo } from 'react'; import { ROARR, Roarr } from 'roarr'; @@ -14,8 +14,8 @@ import { } from './logger'; const selector = createSelector( - systemSelector, - (system) => { + stateSelector, + ({ system }) => { const { consoleLogLevel, shouldLogToConsole } = system; return { diff --git a/invokeai/frontend/web/src/app/store/actions.ts b/invokeai/frontend/web/src/app/store/actions.ts index e07920ce0c..418440a5fb 100644 --- a/invokeai/frontend/web/src/app/store/actions.ts +++ b/invokeai/frontend/web/src/app/store/actions.ts @@ -1,4 +1,10 @@ import { createAction } from '@reduxjs/toolkit'; import { InvokeTabName } from 'features/ui/store/tabMap'; +import { BatchConfig } from 'services/api/types'; -export const userInvoked = createAction('app/userInvoked'); +export const enqueueRequested = createAction<{ + tabName: InvokeTabName; + prepend: boolean; +}>('app/enqueueRequested'); + +export const batchEnqueued = createAction('app/batchEnqueued'); diff --git a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts index 1b21770aa0..9de7f739a1 100644 --- a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts +++ b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/serialize.ts @@ -1,5 +1,6 @@ import { canvasPersistDenylist } from 'features/canvas/store/canvasPersistDenylist'; import { controlNetDenylist } from 'features/controlNet/store/controlNetDenylist'; +import { dynamicPromptsPersistDenylist } from 'features/dynamicPrompts/store/dynamicPromptsPersistDenylist'; import { galleryPersistDenylist } from 'features/gallery/store/galleryPersistDenylist'; import { nodesPersistDenylist } from 'features/nodes/store/nodesPersistDenylist'; import { generationPersistDenylist } from 'features/parameters/store/generationPersistDenylist'; @@ -20,6 +21,7 @@ const serializationDenylist: { system: systemPersistDenylist, ui: uiPersistDenylist, controlNet: controlNetDenylist, + dynamicPrompts: dynamicPromptsPersistDenylist, }; export const serialize: SerializeFunction = (data, key) => { diff --git a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts index 159952d654..508ab9f69a 100644 --- a/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts +++ b/invokeai/frontend/web/src/app/store/enhancers/reduxRemember/unserialize.ts @@ -1,9 +1,11 @@ import { initialCanvasState } from 'features/canvas/store/canvasSlice'; import { initialControlNetState } from 'features/controlNet/store/controlNetSlice'; +import { initialDynamicPromptsState } from 'features/dynamicPrompts/store/dynamicPromptsSlice'; import { initialGalleryState } from 'features/gallery/store/gallerySlice'; import { initialNodesState } from 'features/nodes/store/nodesSlice'; import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { initialPostprocessingState } from 'features/parameters/store/postprocessingSlice'; +import { initialSDXLState } from 'features/sdxl/store/sdxlSlice'; import { initialConfigState } from 'features/system/store/configSlice'; import { initialSystemState } from 'features/system/store/systemSlice'; import { initialHotkeysState } from 'features/ui/store/hotkeysSlice'; @@ -24,6 +26,8 @@ const initialStates: { ui: initialUIState, hotkeys: initialHotkeysState, controlNet: initialControlNetState, + dynamicPrompts: initialDynamicPromptsState, + sdxl: initialSDXLState, }; export const unserialize: UnserializeFunction = (data, key) => { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts index 261edba0af..ead6e1cd42 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/index.ts @@ -9,6 +9,7 @@ import { import type { AppDispatch, RootState } from '../../store'; import { addCommitStagingAreaImageListener } from './listeners/addCommitStagingAreaImageListener'; import { addFirstListImagesListener } from './listeners/addFirstListImagesListener.ts'; +import { addAnyEnqueuedListener } from './listeners/anyEnqueued'; import { addAppConfigReceivedListener } from './listeners/appConfigReceived'; import { addAppStartedListener } from './listeners/appStarted'; import { addDeleteBoardAndImagesFulfilledListener } from './listeners/boardAndImagesDeleted'; @@ -22,6 +23,9 @@ import { addCanvasMergedListener } from './listeners/canvasMerged'; import { addCanvasSavedToGalleryListener } from './listeners/canvasSavedToGallery'; import { addControlNetAutoProcessListener } from './listeners/controlNetAutoProcess'; import { addControlNetImageProcessedListener } from './listeners/controlNetImageProcessed'; +import { addEnqueueRequestedCanvasListener } from './listeners/enqueueRequestedCanvas'; +import { addEnqueueRequestedLinear } from './listeners/enqueueRequestedLinear'; +import { addEnqueueRequestedNodes } from './listeners/enqueueRequestedNodes'; import { addImageAddedToBoardFulfilledListener, addImageAddedToBoardRejectedListener, @@ -48,6 +52,7 @@ import { addImagesUnstarredListener } from './listeners/imagesUnstarred'; import { addInitialImageSelectedListener } from './listeners/initialImageSelected'; import { addModelSelectedListener } from './listeners/modelSelected'; import { addModelsLoadedListener } from './listeners/modelsLoaded'; +import { addDynamicPromptsListener } from './listeners/promptChanged'; import { addReceivedOpenAPISchemaListener } from './listeners/receivedOpenAPISchema'; import { addSessionCanceledFulfilledListener, @@ -64,7 +69,6 @@ import { addSessionInvokedPendingListener, addSessionInvokedRejectedListener, } from './listeners/sessionInvoked'; -import { addSessionReadyToInvokeListener } from './listeners/sessionReadyToInvoke'; import { addSocketConnectedEventListener as addSocketConnectedListener } from './listeners/socketio/socketConnected'; import { addSocketDisconnectedEventListener as addSocketDisconnectedListener } from './listeners/socketio/socketDisconnected'; import { addGeneratorProgressEventListener as addGeneratorProgressListener } from './listeners/socketio/socketGeneratorProgress'; @@ -74,16 +78,13 @@ import { addInvocationErrorEventListener as addInvocationErrorListener } from '. import { addInvocationRetrievalErrorEventListener } from './listeners/socketio/socketInvocationRetrievalError'; import { addInvocationStartedEventListener as addInvocationStartedListener } from './listeners/socketio/socketInvocationStarted'; import { addModelLoadEventListener } from './listeners/socketio/socketModelLoad'; +import { addSocketQueueItemStatusChangedEventListener } from './listeners/socketio/socketQueueItemStatusChanged'; import { addSessionRetrievalErrorEventListener } from './listeners/socketio/socketSessionRetrievalError'; import { addSocketSubscribedEventListener as addSocketSubscribedListener } from './listeners/socketio/socketSubscribed'; import { addSocketUnsubscribedEventListener as addSocketUnsubscribedListener } from './listeners/socketio/socketUnsubscribed'; import { addStagingAreaImageSavedListener } from './listeners/stagingAreaImageSaved'; import { addTabChangedListener } from './listeners/tabChanged'; import { addUpscaleRequestedListener } from './listeners/upscaleRequested'; -import { addUserInvokedCanvasListener } from './listeners/userInvokedCanvas'; -import { addUserInvokedImageToImageListener } from './listeners/userInvokedImageToImage'; -import { addUserInvokedNodesListener } from './listeners/userInvokedNodes'; -import { addUserInvokedTextToImageListener } from './listeners/userInvokedTextToImage'; import { addWorkflowLoadedListener } from './listeners/workflowLoaded'; export const listenerMiddleware = createListenerMiddleware(); @@ -131,11 +132,10 @@ addImagesStarredListener(); addImagesUnstarredListener(); // User Invoked -addUserInvokedCanvasListener(); -addUserInvokedNodesListener(); -addUserInvokedTextToImageListener(); -addUserInvokedImageToImageListener(); -addSessionReadyToInvokeListener(); +addEnqueueRequestedCanvasListener(); +addEnqueueRequestedNodes(); +addEnqueueRequestedLinear(); +addAnyEnqueuedListener(); // Canvas actions addCanvasSavedToGalleryListener(); @@ -173,6 +173,7 @@ addSocketUnsubscribedListener(); addModelLoadEventListener(); addSessionRetrievalErrorEventListener(); addInvocationRetrievalErrorEventListener(); +addSocketQueueItemStatusChangedEventListener(); // Session Created addSessionCreatedPendingListener(); @@ -223,3 +224,6 @@ addUpscaleRequestedListener(); // Tab Change addTabChangedListener(); + +// Dynamic prompts +addDynamicPromptsListener(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts index d157fae7ed..d302d50255 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/addCommitStagingAreaImageListener.ts @@ -1,39 +1,53 @@ +import { isAnyOf } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; -import { commitStagingAreaImage } from 'features/canvas/store/canvasSlice'; -import { sessionCanceled } from 'services/api/thunks/session'; +import { + canvasBatchIdsReset, + commitStagingAreaImage, + discardStagedImages, +} from 'features/canvas/store/canvasSlice'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; import { startAppListening } from '..'; +const matcher = isAnyOf(commitStagingAreaImage, discardStagedImages); + export const addCommitStagingAreaImageListener = () => { startAppListening({ - actionCreator: commitStagingAreaImage, - effect: async (action, { dispatch, getState }) => { + matcher, + effect: async (_, { dispatch, getState }) => { const log = logger('canvas'); const state = getState(); - const { sessionId: session_id, isProcessing } = state.system; - const canvasSessionId = action.payload; + const { batchIds } = state.canvas; - if (!isProcessing) { - // Only need to cancel if we are processing - return; - } - - if (!canvasSessionId) { - log.debug('No canvas session, skipping cancel'); - return; - } - - if (canvasSessionId !== session_id) { - log.debug( - { - canvasSessionId, - session_id, - }, - 'Canvas session does not match global session, skipping cancel' + try { + const req = dispatch( + queueApi.endpoints.cancelByBatchIds.initiate( + { batch_ids: batchIds }, + { fixedCacheKey: 'cancelByBatchIds' } + ) + ); + const { canceled } = await req.unwrap(); + req.reset(); + if (canceled > 0) { + log.debug(`Canceled ${canceled} canvas batches`); + dispatch( + addToast({ + title: t('queue.cancelBatchSucceeded'), + status: 'success', + }) + ); + } + dispatch(canvasBatchIdsReset()); + } catch { + log.error('Failed to cancel canvas batches'); + dispatch( + addToast({ + title: t('queue.cancelBatchFailed'), + status: 'error', + }) ); - return; } - - dispatch(sessionCanceled({ session_id })); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts new file mode 100644 index 0000000000..ff11491b53 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/anyEnqueued.ts @@ -0,0 +1,27 @@ +import { isAnyOf } from '@reduxjs/toolkit'; +import { queueApi } from 'services/api/endpoints/queue'; +import { startAppListening } from '..'; + +const matcher = isAnyOf( + queueApi.endpoints.enqueueBatch.matchFulfilled, + queueApi.endpoints.enqueueGraph.matchFulfilled +); + +export const addAnyEnqueuedListener = () => { + startAppListening({ + matcher, + effect: async (_, { dispatch, getState }) => { + const { data } = queueApi.endpoints.getQueueStatus.select()(getState()); + + if (!data || data.processor.is_started) { + return; + } + + dispatch( + queueApi.endpoints.resumeProcessor.initiate(undefined, { + fixedCacheKey: 'resumeProcessor', + }) + ); + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts index d4a36d64dc..69b136ca60 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/boardAndImagesDeleted.ts @@ -1,5 +1,8 @@ import { resetCanvas } from 'features/canvas/store/canvasSlice'; -import { controlNetReset } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetReset, + ipAdapterStateReset, +} from 'features/controlNet/store/controlNetSlice'; import { getImageUsage } from 'features/deleteImageModal/store/selectors'; import { nodeEditorReset } from 'features/nodes/store/nodesSlice'; import { clearInitialImage } from 'features/parameters/store/generationSlice'; @@ -18,6 +21,7 @@ export const addDeleteBoardAndImagesFulfilledListener = () => { let wasCanvasReset = false; let wasNodeEditorReset = false; let wasControlNetReset = false; + let wasIPAdapterReset = false; const state = getState(); deleted_images.forEach((image_name) => { @@ -42,6 +46,11 @@ export const addDeleteBoardAndImagesFulfilledListener = () => { dispatch(controlNetReset()); wasControlNetReset = true; } + + if (imageUsage.isIPAdapterImage && !wasIPAdapterReset) { + dispatch(ipAdapterStateReset()); + wasIPAdapterReset = true; + } }); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasCopiedToClipboard.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasCopiedToClipboard.ts index 9e66d1bdb8..1ac80d219b 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasCopiedToClipboard.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasCopiedToClipboard.ts @@ -3,7 +3,8 @@ import { startAppListening } from '..'; import { $logger } from 'app/logging/logger'; import { getBaseLayerBlob } from 'features/canvas/util/getBaseLayerBlob'; import { addToast } from 'features/system/store/systemSlice'; -import { copyBlobToClipboard } from 'features/canvas/util/copyBlobToClipboard'; +import { copyBlobToClipboard } from 'features/system/util/copyBlobToClipboard'; +import { t } from 'i18next'; export const addCanvasCopiedToClipboardListener = () => { startAppListening({ @@ -14,25 +15,25 @@ export const addCanvasCopiedToClipboardListener = () => { .child({ namespace: 'canvasCopiedToClipboardListener' }); const state = getState(); - const blob = await getBaseLayerBlob(state); + try { + const blob = getBaseLayerBlob(state); - if (!blob) { - moduleLog.error('Problem getting base layer blob'); + copyBlobToClipboard(blob); + } catch (err) { + moduleLog.error(String(err)); dispatch( addToast({ - title: 'Problem Copying Canvas', - description: 'Unable to export base layer', + title: t('toast.problemCopyingCanvas'), + description: t('toast.problemCopyingCanvasDesc'), status: 'error', }) ); return; } - copyBlobToClipboard(blob); - dispatch( addToast({ - title: 'Canvas Copied to Clipboard', + title: t('toast.canvasCopiedClipboard'), status: 'success', }) ); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasDownloadedAsImage.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasDownloadedAsImage.ts index b101d00541..cfaf20b64c 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasDownloadedAsImage.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasDownloadedAsImage.ts @@ -4,6 +4,7 @@ import { $logger } from 'app/logging/logger'; import { downloadBlob } from 'features/canvas/util/downloadBlob'; import { getBaseLayerBlob } from 'features/canvas/util/getBaseLayerBlob'; import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; export const addCanvasDownloadedAsImageListener = () => { startAppListening({ @@ -14,14 +15,15 @@ export const addCanvasDownloadedAsImageListener = () => { .child({ namespace: 'canvasSavedToGalleryListener' }); const state = getState(); - const blob = await getBaseLayerBlob(state); - - if (!blob) { - moduleLog.error('Problem getting base layer blob'); + let blob; + try { + blob = await getBaseLayerBlob(state); + } catch (err) { + moduleLog.error(String(err)); dispatch( addToast({ - title: 'Problem Downloading Canvas', - description: 'Unable to export base layer', + title: t('toast.problemDownloadingCanvas'), + description: t('toast.problemDownloadingCanvasDesc'), status: 'error', }) ); @@ -29,7 +31,9 @@ export const addCanvasDownloadedAsImageListener = () => { } downloadBlob(blob, 'canvas.png'); - dispatch(addToast({ title: 'Canvas Downloaded', status: 'success' })); + dispatch( + addToast({ title: t('toast.canvasDownloaded'), status: 'success' }) + ); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasImageToControlNet.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasImageToControlNet.ts index fb411a6e25..835b8246f1 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasImageToControlNet.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasImageToControlNet.ts @@ -5,6 +5,7 @@ import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlic import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addCanvasImageToControlNetListener = () => { startAppListening({ @@ -13,14 +14,15 @@ export const addCanvasImageToControlNetListener = () => { const log = logger('canvas'); const state = getState(); - const blob = await getBaseLayerBlob(state); - - if (!blob) { - log.error('Problem getting base layer blob'); + let blob; + try { + blob = await getBaseLayerBlob(state); + } catch (err) { + log.error(String(err)); dispatch( addToast({ - title: 'Problem Saving Canvas', - description: 'Unable to export base layer', + title: t('toast.problemSavingCanvas'), + description: t('toast.problemSavingCanvasDesc'), status: 'error', }) ); @@ -40,7 +42,7 @@ export const addCanvasImageToControlNetListener = () => { crop_visible: true, postUploadAction: { type: 'TOAST', - toastOptions: { title: 'Canvas Sent to ControlNet & Assets' }, + toastOptions: { title: t('toast.canvasSentControlnetAssets') }, }, }) ).unwrap(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskSavedToGallery.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskSavedToGallery.ts index e701b93352..f814d94f3a 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskSavedToGallery.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskSavedToGallery.ts @@ -4,6 +4,7 @@ import { getCanvasData } from 'features/canvas/util/getCanvasData'; import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addCanvasMaskSavedToGalleryListener = () => { startAppListening({ @@ -30,8 +31,8 @@ export const addCanvasMaskSavedToGalleryListener = () => { log.error('Problem getting mask layer blob'); dispatch( addToast({ - title: 'Problem Saving Mask', - description: 'Unable to export mask', + title: t('toast.problemSavingMask'), + description: t('toast.problemSavingMaskDesc'), status: 'error', }) ); @@ -51,7 +52,7 @@ export const addCanvasMaskSavedToGalleryListener = () => { crop_visible: true, postUploadAction: { type: 'TOAST', - toastOptions: { title: 'Mask Saved to Assets' }, + toastOptions: { title: t('toast.maskSavedAssets') }, }, }) ); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskToControlNet.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskToControlNet.ts index 6c97259f02..671c7f63e4 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskToControlNet.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMaskToControlNet.ts @@ -5,6 +5,7 @@ import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlic import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addCanvasMaskToControlNetListener = () => { startAppListening({ @@ -31,8 +32,8 @@ export const addCanvasMaskToControlNetListener = () => { log.error('Problem getting mask layer blob'); dispatch( addToast({ - title: 'Problem Importing Mask', - description: 'Unable to export mask', + title: t('toast.problemImportingMask'), + description: t('toast.problemImportingMaskDesc'), status: 'error', }) ); @@ -52,7 +53,7 @@ export const addCanvasMaskToControlNetListener = () => { crop_visible: true, postUploadAction: { type: 'TOAST', - toastOptions: { title: 'Mask Sent to ControlNet & Assets' }, + toastOptions: { title: t('toast.maskSentControlnetAssets') }, }, }) ).unwrap(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMerged.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMerged.ts index 21c506242d..62f7b60036 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMerged.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasMerged.ts @@ -6,6 +6,7 @@ import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addCanvasMergedListener = () => { startAppListening({ @@ -20,8 +21,8 @@ export const addCanvasMergedListener = () => { moduleLog.error('Problem getting base layer blob'); dispatch( addToast({ - title: 'Problem Merging Canvas', - description: 'Unable to export base layer', + title: t('toast.problemMergingCanvas'), + description: t('toast.problemMergingCanvasDesc'), status: 'error', }) ); @@ -34,8 +35,8 @@ export const addCanvasMergedListener = () => { moduleLog.error('Problem getting canvas base layer'); dispatch( addToast({ - title: 'Problem Merging Canvas', - description: 'Unable to export base layer', + title: t('toast.problemMergingCanvas'), + description: t('toast.problemMergingCanvasDesc'), status: 'error', }) ); @@ -55,7 +56,7 @@ export const addCanvasMergedListener = () => { is_intermediate: true, postUploadAction: { type: 'TOAST', - toastOptions: { title: 'Canvas Merged' }, + toastOptions: { title: t('toast.canvasMerged') }, }, }) ).unwrap(); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasSavedToGallery.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasSavedToGallery.ts index dbadb72a52..23e2cebe53 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasSavedToGallery.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/canvasSavedToGallery.ts @@ -4,6 +4,7 @@ import { getBaseLayerBlob } from 'features/canvas/util/getBaseLayerBlob'; import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addCanvasSavedToGalleryListener = () => { startAppListening({ @@ -12,14 +13,15 @@ export const addCanvasSavedToGalleryListener = () => { const log = logger('canvas'); const state = getState(); - const blob = await getBaseLayerBlob(state); - - if (!blob) { - log.error('Problem getting base layer blob'); + let blob; + try { + blob = await getBaseLayerBlob(state); + } catch (err) { + log.error(String(err)); dispatch( addToast({ - title: 'Problem Saving Canvas', - description: 'Unable to export base layer', + title: t('toast.problemSavingCanvas'), + description: t('toast.problemSavingCanvasDesc'), status: 'error', }) ); @@ -39,7 +41,7 @@ export const addCanvasSavedToGalleryListener = () => { crop_visible: true, postUploadAction: { type: 'TOAST', - toastOptions: { title: 'Canvas Saved to Gallery' }, + toastOptions: { title: t('toast.canvasSavedGallery') }, }, }) ); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts index 61bcf28833..ffb1c9565f 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetAutoProcess.ts @@ -52,11 +52,9 @@ const predicate: AnyListenerPredicate = ( const isProcessorSelected = processorType !== 'none'; - const isBusy = state.system.isProcessing; - const hasControlImage = Boolean(controlImage); - return isProcessorSelected && !isBusy && hasControlImage; + return isProcessorSelected && hasControlImage; }; /** diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts index fa915ef21b..814614da10 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/controlNetImageProcessed.ts @@ -1,10 +1,13 @@ import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { controlNetImageProcessed } from 'features/controlNet/store/actions'; import { controlNetProcessedImageChanged } from 'features/controlNet/store/controlNetSlice'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; +import { SAVE_IMAGE } from 'features/nodes/util/graphBuilders/constants'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { imagesApi } from 'services/api/endpoints/images'; +import { queueApi } from 'services/api/endpoints/queue'; import { isImageOutput } from 'services/api/guards'; -import { sessionCreated } from 'services/api/thunks/session'; import { Graph, ImageDTO } from 'services/api/types'; import { socketInvocationComplete } from 'services/events/actions'; import { startAppListening } from '..'; @@ -31,51 +34,83 @@ export const addControlNetImageProcessedListener = () => { is_intermediate: true, image: { image_name: controlNet.controlImage }, }, + [SAVE_IMAGE]: { + id: SAVE_IMAGE, + type: 'save_image', + is_intermediate: true, + use_cache: false, + }, }, + edges: [ + { + source: { + node_id: controlNet.processorNode.id, + field: 'image', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'image', + }, + }, + ], }; - - // Create a session to run the graph & wait til it's ready to invoke - const sessionCreatedAction = dispatch(sessionCreated({ graph })); - const [sessionCreatedFulfilledAction] = await take( - (action): action is ReturnType => - sessionCreated.fulfilled.match(action) && - action.meta.requestId === sessionCreatedAction.requestId - ); - - const sessionId = sessionCreatedFulfilledAction.payload.id; - - // Invoke the session & wait til it's complete - dispatch(sessionReadyToInvoke()); - const [invocationCompleteAction] = await take( - (action): action is ReturnType => - socketInvocationComplete.match(action) && - action.payload.data.graph_execution_state_id === sessionId - ); - - // We still have to check the output type - if (isImageOutput(invocationCompleteAction.payload.data.result)) { - const { image_name } = - invocationCompleteAction.payload.data.result.image; - - // Wait for the ImageDTO to be received - const [{ payload }] = await take( - (action) => - imagesApi.endpoints.getImageDTO.matchFulfilled(action) && - action.payload.image_name === image_name + try { + const req = dispatch( + queueApi.endpoints.enqueueGraph.initiate( + { graph, prepend: true }, + { + fixedCacheKey: 'enqueueGraph', + } + ) ); - - const processedControlImage = payload as ImageDTO; - + const enqueueResult = await req.unwrap(); + req.reset(); log.debug( - { controlNetId: action.payload, processedControlImage }, - 'ControlNet image processed' + { enqueueResult: parseify(enqueueResult) }, + t('queue.graphQueued') ); - // Update the processed image in the store + const [invocationCompleteAction] = await take( + (action): action is ReturnType => + socketInvocationComplete.match(action) && + action.payload.data.graph_execution_state_id === + enqueueResult.queue_item.session_id && + action.payload.data.source_node_id === SAVE_IMAGE + ); + + // We still have to check the output type + if (isImageOutput(invocationCompleteAction.payload.data.result)) { + const { image_name } = + invocationCompleteAction.payload.data.result.image; + + // Wait for the ImageDTO to be received + const [{ payload }] = await take( + (action) => + imagesApi.endpoints.getImageDTO.matchFulfilled(action) && + action.payload.image_name === image_name + ); + + const processedControlImage = payload as ImageDTO; + + log.debug( + { controlNetId: action.payload, processedControlImage }, + 'ControlNet image processed' + ); + + // Update the processed image in the store + dispatch( + controlNetProcessedImageChanged({ + controlNetId, + processedControlImage: processedControlImage.image_name, + }) + ); + } + } catch { + log.error({ graph: parseify(graph) }, t('queue.graphFailedToQueue')); dispatch( - controlNetProcessedImageChanged({ - controlNetId, - processedControlImage: processedControlImage.image_name, + addToast({ + title: t('queue.graphFailedToQueue'), + status: 'error', }) ); } diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts similarity index 65% rename from invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts rename to invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts index cd6791cc0b..c1511bd0e8 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedCanvas.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedCanvas.ts @@ -1,9 +1,9 @@ import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; +import { enqueueRequested } from 'app/store/actions'; import openBase64ImageInTab from 'common/util/openBase64ImageInTab'; import { parseify } from 'common/util/serialize'; import { - canvasSessionIdChanged, + canvasBatchIdAdded, stagingAreaInitialized, } from 'features/canvas/store/canvasSlice'; import { blobToDataURL } from 'features/canvas/util/blobToDataURL'; @@ -11,9 +11,11 @@ import { getCanvasData } from 'features/canvas/util/getCanvasData'; import { getCanvasGenerationMode } from 'features/canvas/util/getCanvasGenerationMode'; import { canvasGraphBuilt } from 'features/nodes/store/actions'; import { buildCanvasGraph } from 'features/nodes/util/graphBuilders/buildCanvasGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; +import { prepareLinearUIBatch } from 'features/nodes/util/graphBuilders/buildLinearBatchConfig'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { imagesApi } from 'services/api/endpoints/images'; -import { sessionCreated } from 'services/api/thunks/session'; +import { queueApi } from 'services/api/endpoints/queue'; import { ImageDTO } from 'services/api/types'; import { startAppListening } from '..'; @@ -30,13 +32,14 @@ import { startAppListening } from '..'; * 8. Initialize the staging area if not yet initialized * 9. Dispatch the sessionReadyToInvoke action to invoke the session */ -export const addUserInvokedCanvasListener = () => { +export const addEnqueueRequestedCanvasListener = () => { startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'unifiedCanvas', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && + action.payload.tabName === 'unifiedCanvas', + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const { prepend } = action.payload; const state = getState(); const { @@ -125,57 +128,59 @@ export const addUserInvokedCanvasListener = () => { // currently this action is just listened to for logging dispatch(canvasGraphBuilt(graph)); - // Create the session, store the request id - const { requestId: sessionCreatedRequestId } = dispatch( - sessionCreated({ graph }) - ); + const batchConfig = prepareLinearUIBatch(state, graph, prepend); - // Take the session created action, matching by its request id - const [sessionCreatedAction] = await take( - (action): action is ReturnType => - sessionCreated.fulfilled.match(action) && - action.meta.requestId === sessionCreatedRequestId - ); - const session_id = sessionCreatedAction.payload.id; + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + + const batchId = enqueueResult.batch.batch_id as string; // we know the is a string, backend provides it + + // Prep the canvas staging area if it is not yet initialized + if (!state.canvas.layerState.stagingArea.boundingBox) { + dispatch( + stagingAreaInitialized({ + boundingBox: { + ...state.canvas.boundingBoxCoordinates, + ...state.canvas.boundingBoxDimensions, + }, + }) + ); + } + + // Associate the session with the canvas session ID + dispatch(canvasBatchIdAdded(batchId)); - // Associate the init image with the session, now that we have the session ID - if (['img2img', 'inpaint'].includes(generationMode) && canvasInitImage) { dispatch( - imagesApi.endpoints.changeImageSessionId.initiate({ - imageDTO: canvasInitImage, - session_id, + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', }) ); } - - // Associate the mask image with the session, now that we have the session ID - if (['inpaint'].includes(generationMode) && canvasMaskImage) { - dispatch( - imagesApi.endpoints.changeImageSessionId.initiate({ - imageDTO: canvasMaskImage, - session_id, - }) - ); - } - - // Prep the canvas staging area if it is not yet initialized - if (!state.canvas.layerState.stagingArea.boundingBox) { - dispatch( - stagingAreaInitialized({ - sessionId: session_id, - boundingBox: { - ...state.canvas.boundingBoxCoordinates, - ...state.canvas.boundingBoxDimensions, - }, - }) - ); - } - - // Flag the session with the canvas session ID - dispatch(canvasSessionIdChanged(session_id)); - - // We are ready to invoke the session! - dispatch(sessionReadyToInvoke()); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts new file mode 100644 index 0000000000..e36c6f2ebe --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedLinear.ts @@ -0,0 +1,78 @@ +import { logger } from 'app/logging/logger'; +import { enqueueRequested } from 'app/store/actions'; +import { parseify } from 'common/util/serialize'; +import { prepareLinearUIBatch } from 'features/nodes/util/graphBuilders/buildLinearBatchConfig'; +import { buildLinearImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearImageToImageGraph'; +import { buildLinearSDXLImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph'; +import { buildLinearSDXLTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph'; +import { buildLinearTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearTextToImageGraph'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { startAppListening } from '..'; + +export const addEnqueueRequestedLinear = () => { + startAppListening({ + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && + (action.payload.tabName === 'txt2img' || + action.payload.tabName === 'img2img'), + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const state = getState(); + const model = state.generation.model; + const { prepend } = action.payload; + + let graph; + + if (model && model.base_model === 'sdxl') { + if (action.payload.tabName === 'txt2img') { + graph = buildLinearSDXLTextToImageGraph(state); + } else { + graph = buildLinearSDXLImageToImageGraph(state); + } + } else { + if (action.payload.tabName === 'txt2img') { + graph = buildLinearTextToImageGraph(state); + } else { + graph = buildLinearImageToImageGraph(state); + } + } + + const batchConfig = prepareLinearUIBatch(state, graph, prepend); + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts new file mode 100644 index 0000000000..31281678d4 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/enqueueRequestedNodes.ts @@ -0,0 +1,62 @@ +import { logger } from 'app/logging/logger'; +import { enqueueRequested } from 'app/store/actions'; +import { parseify } from 'common/util/serialize'; +import { buildNodesGraph } from 'features/nodes/util/graphBuilders/buildNodesGraph'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { BatchConfig } from 'services/api/types'; +import { startAppListening } from '..'; + +export const addEnqueueRequestedNodes = () => { + startAppListening({ + predicate: (action): action is ReturnType => + enqueueRequested.match(action) && action.payload.tabName === 'nodes', + effect: async (action, { getState, dispatch }) => { + const log = logger('queue'); + const state = getState(); + const { prepend } = action.payload; + const graph = buildNodesGraph(state.nodes); + const batchConfig: BatchConfig = { + batch: { + graph, + runs: state.generation.iterations, + }, + prepend: action.payload.prepend, + }; + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + 'Failed to enqueue batch' + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts index 770c9fc11b..7c51b44aa2 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDeleted.ts @@ -3,6 +3,7 @@ import { resetCanvas } from 'features/canvas/store/canvasSlice'; import { controlNetImageChanged, controlNetProcessedImageChanged, + ipAdapterImageChanged, } from 'features/controlNet/store/controlNetSlice'; import { imageDeletionConfirmed } from 'features/deleteImageModal/store/actions'; import { isModalOpenChanged } from 'features/deleteImageModal/store/slice'; @@ -110,6 +111,14 @@ export const addRequestedSingleImageDeletionListener = () => { } }); + // Remove IP Adapter Set Image if image is deleted. + if ( + getState().controlNet.ipAdapterInfo.adapterImage?.image_name === + imageDTO.image_name + ) { + dispatch(ipAdapterImageChanged(null)); + } + // reset nodes that use the deleted images getState().nodes.nodes.forEach((node) => { if (!isInvocationNode(node)) { @@ -227,6 +236,14 @@ export const addRequestedMultipleImageDeletionListener = () => { } }); + // Remove IP Adapter Set Image if image is deleted. + if ( + getState().controlNet.ipAdapterInfo.adapterImage?.image_name === + imageDTO.image_name + ) { + dispatch(ipAdapterImageChanged(null)); + } + // reset nodes that use the deleted images getState().nodes.nodes.forEach((node) => { if (!isInvocationNode(node)) { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts index fc0b44653d..d38a20a917 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageDropped.ts @@ -1,7 +1,13 @@ import { createAction } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; -import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetImageChanged, + controlNetIsEnabledChanged, + ipAdapterImageChanged, + isIPAdapterEnabledChanged, +} from 'features/controlNet/store/controlNetSlice'; import { TypesafeDraggableData, TypesafeDroppableData, @@ -14,7 +20,6 @@ import { import { initialImageChanged } from 'features/parameters/store/generationSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '../'; -import { parseify } from 'common/util/serialize'; export const dndDropped = createAction<{ overData: TypesafeDroppableData; @@ -96,6 +101,25 @@ export const addImageDroppedListener = () => { controlNetId, }) ); + dispatch( + controlNetIsEnabledChanged({ + controlNetId, + isEnabled: true, + }) + ); + return; + } + + /** + * Image dropped on IP Adapter image + */ + if ( + overData.actionType === 'SET_IP_ADAPTER_IMAGE' && + activeData.payloadType === 'IMAGE_DTO' && + activeData.payload.imageDTO + ) { + dispatch(ipAdapterImageChanged(activeData.payload.imageDTO)); + dispatch(isIPAdapterEnabledChanged(true)); return; } diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts index 88a4e773d5..61b4379d5d 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageToDeleteSelected.ts @@ -19,6 +19,7 @@ export const addImageToDeleteSelectedListener = () => { imagesUsage.some((i) => i.isCanvasImage) || imagesUsage.some((i) => i.isInitialImage) || imagesUsage.some((i) => i.isControlNetImage) || + imagesUsage.some((i) => i.isIPAdapterImage) || imagesUsage.some((i) => i.isNodesImage); if (shouldConfirmOnDelete || isImageInUse) { diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts index 0c55908748..b27c922342 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/imageUploaded.ts @@ -1,17 +1,23 @@ import { UseToastOptions } from '@chakra-ui/react'; import { logger } from 'app/logging/logger'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; -import { controlNetImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetImageChanged, + controlNetIsEnabledChanged, + ipAdapterImageChanged, + isIPAdapterEnabledChanged, +} from 'features/controlNet/store/controlNetSlice'; import { fieldImageValueChanged } from 'features/nodes/store/nodesSlice'; import { initialImageChanged } from 'features/parameters/store/generationSlice'; import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; import { omit } from 'lodash-es'; import { boardsApi } from 'services/api/endpoints/boards'; import { startAppListening } from '..'; import { imagesApi } from '../../../../../services/api/endpoints/images'; const DEFAULT_UPLOADED_TOAST: UseToastOptions = { - title: 'Image Uploaded', + title: t('toast.imageUploaded'), status: 'success', }; @@ -57,8 +63,8 @@ export const addImageUploadedFulfilledListener = () => { // Fall back to just the board id if we can't find the board for some reason const board = data?.find((b) => b.board_id === autoAddBoardId); const description = board - ? `Added to board ${board.board_name}` - : `Added to board ${autoAddBoardId}`; + ? `${t('toast.addedToBoard')} ${board.board_name}` + : `${t('toast.addedToBoard')} ${autoAddBoardId}`; dispatch( addToast({ @@ -75,7 +81,7 @@ export const addImageUploadedFulfilledListener = () => { dispatch( addToast({ ...DEFAULT_UPLOADED_TOAST, - description: 'Set as canvas initial image', + description: t('toast.setCanvasInitialImage'), }) ); return; @@ -83,6 +89,12 @@ export const addImageUploadedFulfilledListener = () => { if (postUploadAction?.type === 'SET_CONTROLNET_IMAGE') { const { controlNetId } = postUploadAction; + dispatch( + controlNetIsEnabledChanged({ + controlNetId, + isEnabled: true, + }) + ); dispatch( controlNetImageChanged({ controlNetId, @@ -92,7 +104,19 @@ export const addImageUploadedFulfilledListener = () => { dispatch( addToast({ ...DEFAULT_UPLOADED_TOAST, - description: 'Set as control image', + description: t('toast.setControlImage'), + }) + ); + return; + } + + if (postUploadAction?.type === 'SET_IP_ADAPTER_IMAGE') { + dispatch(ipAdapterImageChanged(imageDTO)); + dispatch(isIPAdapterEnabledChanged(true)); + dispatch( + addToast({ + ...DEFAULT_UPLOADED_TOAST, + description: t('toast.setIPAdapterImage'), }) ); return; @@ -103,7 +127,7 @@ export const addImageUploadedFulfilledListener = () => { dispatch( addToast({ ...DEFAULT_UPLOADED_TOAST, - description: 'Set as initial image', + description: t('toast.setInitialImage'), }) ); return; @@ -117,7 +141,7 @@ export const addImageUploadedFulfilledListener = () => { dispatch( addToast({ ...DEFAULT_UPLOADED_TOAST, - description: `Set as node field ${fieldName}`, + description: `${t('toast.setNodeField')} ${fieldName}`, }) ); return; @@ -140,7 +164,7 @@ export const addImageUploadedRejectedListener = () => { log.error({ ...sanitizedData }, 'Image upload failed'); dispatch( addToast({ - title: 'Image Upload Failed', + title: t('toast.imageUploadFailed'), description: action.error.message, status: 'error', }) diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts index 240890f043..ba42fce950 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/modelSelected.ts @@ -1,6 +1,9 @@ import { logger } from 'app/logging/logger'; import { setBoundingBoxDimensions } from 'features/canvas/store/canvasSlice'; -import { controlNetRemoved } from 'features/controlNet/store/controlNetSlice'; +import { + controlNetRemoved, + ipAdapterStateReset, +} from 'features/controlNet/store/controlNetSlice'; import { loraRemoved } from 'features/lora/store/loraSlice'; import { modelSelected } from 'features/parameters/store/actions'; import { @@ -14,6 +17,7 @@ import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { forEach } from 'lodash-es'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addModelSelectedListener = () => { startAppListening({ @@ -55,6 +59,7 @@ export const addModelSelectedListener = () => { modelsCleared += 1; } + // handle incompatible controlnets const { controlNets } = state.controlNet; forEach(controlNets, (controlNet, controlNetId) => { if (controlNet.model?.base_model !== base_model) { @@ -63,11 +68,23 @@ export const addModelSelectedListener = () => { } }); + // handle incompatible IP-Adapter + const { ipAdapterInfo } = state.controlNet; + if ( + ipAdapterInfo.model && + ipAdapterInfo.model.base_model !== base_model + ) { + dispatch(ipAdapterStateReset()); + modelsCleared += 1; + } + if (modelsCleared > 0) { dispatch( addToast( makeToast({ - title: `Base model changed, cleared ${modelsCleared} incompatible submodel${ + title: `${t( + 'toast.baseModelChangedCleared' + )} ${modelsCleared} ${t('toast.incompatibleSubmodel')}${ modelsCleared === 1 ? '' : 's' }`, status: 'warning', diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts new file mode 100644 index 0000000000..a48a84a30f --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/promptChanged.ts @@ -0,0 +1,67 @@ +import { isAnyOf } from '@reduxjs/toolkit'; +import { + combinatorialToggled, + isErrorChanged, + isLoadingChanged, + maxPromptsChanged, + maxPromptsReset, + parsingErrorChanged, + promptsChanged, +} from 'features/dynamicPrompts/store/dynamicPromptsSlice'; +import { setPositivePrompt } from 'features/parameters/store/generationSlice'; +import { utilitiesApi } from 'services/api/endpoints/utilities'; +import { appSocketConnected } from 'services/events/actions'; +import { startAppListening } from '..'; + +const matcher = isAnyOf( + setPositivePrompt, + combinatorialToggled, + maxPromptsChanged, + maxPromptsReset, + appSocketConnected +); + +export const addDynamicPromptsListener = () => { + startAppListening({ + matcher, + effect: async ( + action, + { dispatch, getState, cancelActiveListeners, delay } + ) => { + // debounce request + cancelActiveListeners(); + await delay(1000); + + const state = getState(); + + if (state.config.disabledFeatures.includes('dynamicPrompting')) { + return; + } + + const { positivePrompt } = state.generation; + const { maxPrompts } = state.dynamicPrompts; + + dispatch(isLoadingChanged(true)); + + try { + const req = dispatch( + utilitiesApi.endpoints.dynamicPrompts.initiate({ + prompt: positivePrompt, + max_prompts: maxPrompts, + }) + ); + + const res = await req.unwrap(); + req.unsubscribe(); + + dispatch(promptsChanged(res.prompts)); + dispatch(parsingErrorChanged(res.error)); + dispatch(isErrorChanged(false)); + dispatch(isLoadingChanged(false)); + } catch { + dispatch(isErrorChanged(true)); + dispatch(isLoadingChanged(false)); + } + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/receivedOpenAPISchema.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/receivedOpenAPISchema.ts index dd86c77735..5599913a18 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/receivedOpenAPISchema.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/receivedOpenAPISchema.ts @@ -9,13 +9,17 @@ import { startAppListening } from '..'; export const addReceivedOpenAPISchemaListener = () => { startAppListening({ actionCreator: receivedOpenAPISchema.fulfilled, - effect: (action, { dispatch }) => { + effect: (action, { dispatch, getState }) => { const log = logger('system'); const schemaJSON = action.payload; log.debug({ schemaJSON }, 'Received OpenAPI schema'); - - const nodeTemplates = parseSchema(schemaJSON); + const { nodesAllowlist, nodesDenylist } = getState().config; + const nodeTemplates = parseSchema( + schemaJSON, + nodesAllowlist, + nodesDenylist + ); log.debug( { nodeTemplates: parseify(nodeTemplates) }, diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts deleted file mode 100644 index 0267eb629b..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/sessionReadyToInvoke.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionInvoked } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addSessionReadyToInvokeListener = () => { - startAppListening({ - actionCreator: sessionReadyToInvoke, - effect: (action, { getState, dispatch }) => { - const log = logger('session'); - const { sessionId: session_id } = getState().system; - if (session_id) { - log.debug({ session_id }, `Session ready to invoke (${session_id})})`); - dispatch(sessionInvoked({ session_id })); - } - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts index 739bbd7110..9957b7f117 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketConnected.ts @@ -1,11 +1,10 @@ import { logger } from 'app/logging/logger'; -import { LIST_TAG } from 'services/api'; -import { appInfoApi } from 'services/api/endpoints/appInfo'; -import { modelsApi } from 'services/api/endpoints/models'; +import { size } from 'lodash-es'; +import { api } from 'services/api'; import { receivedOpenAPISchema } from 'services/api/thunks/schema'; import { appSocketConnected, socketConnected } from 'services/events/actions'; import { startAppListening } from '../..'; -import { size } from 'lodash-es'; +import { isInitializedChanged } from 'features/system/store/systemSlice'; export const addSocketConnectedEventListener = () => { startAppListening({ @@ -15,7 +14,7 @@ export const addSocketConnectedEventListener = () => { log.debug('Connected'); - const { nodes, config } = getState(); + const { nodes, config, system } = getState(); const { disabledTabs } = config; @@ -23,22 +22,15 @@ export const addSocketConnectedEventListener = () => { dispatch(receivedOpenAPISchema()); } + if (system.isInitialized) { + // only reset the query caches if this connect event is a *reconnect* event + dispatch(api.util.resetApiState()); + } else { + dispatch(isInitializedChanged(true)); + } + // pass along the socket event as an application action dispatch(appSocketConnected(action.payload)); - - // update all server state - dispatch( - modelsApi.util.invalidateTags([ - { type: 'MainModel', id: LIST_TAG }, - { type: 'SDXLRefinerModel', id: LIST_TAG }, - { type: 'LoRAModel', id: LIST_TAG }, - { type: 'ControlNetModel', id: LIST_TAG }, - { type: 'VaeModel', id: LIST_TAG }, - { type: 'TextualInversionModel', id: LIST_TAG }, - { type: 'ScannedModels', id: LIST_TAG }, - ]) - ); - dispatch(appInfoApi.util.invalidateTags(['AppConfig', 'AppVersion'])); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts index dfbdd25595..80e6fb0813 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketDisconnected.ts @@ -11,6 +11,7 @@ export const addSocketDisconnectedEventListener = () => { effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug('Disconnected'); + // pass along the socket event as an application action dispatch(appSocketDisconnected(action.payload)); }, diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts index 72fa317037..44d6ceed63 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketGeneratorProgress.ts @@ -8,25 +8,11 @@ import { startAppListening } from '../..'; export const addGeneratorProgressEventListener = () => { startAppListening({ actionCreator: socketGeneratorProgress, - effect: (action, { dispatch, getState }) => { + effect: (action, { dispatch }) => { const log = logger('socketio'); - if ( - getState().system.canceledSession === - action.payload.data.graph_execution_state_id - ) { - log.trace( - action.payload, - 'Ignored generator progress for canceled session' - ); - return; - } - log.trace( - action.payload, - `Generator progress (${action.payload.data.node.type})` - ); + log.trace(action.payload, `Generator progress`); - // pass along the socket event as an application action dispatch(appSocketGeneratorProgress(action.payload)); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts index 5501f208fd..7e918410a7 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationComplete.ts @@ -8,10 +8,8 @@ import { } from 'features/gallery/store/gallerySlice'; import { IMAGE_CATEGORIES } from 'features/gallery/store/types'; import { CANVAS_OUTPUT } from 'features/nodes/util/graphBuilders/constants'; -import { progressImageSet } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { isImageOutput } from 'services/api/guards'; -import { sessionCanceled } from 'services/api/thunks/session'; import { imagesAdapter } from 'services/api/util'; import { appSocketInvocationComplete, @@ -19,7 +17,8 @@ import { } from 'services/events/actions'; import { startAppListening } from '../..'; -const nodeDenylist = ['load_image']; +// These nodes output an image, but do not actually *save* an image, so we don't want to handle the gallery logic on them +const nodeDenylist = ['load_image', 'image']; export const addInvocationCompleteEventListener = () => { startAppListening({ @@ -31,30 +30,22 @@ export const addInvocationCompleteEventListener = () => { { data: parseify(data) }, `Invocation complete (${action.payload.data.node.type})` ); - const session_id = action.payload.data.graph_execution_state_id; - const { cancelType, isCancelScheduled } = getState().system; - - // Handle scheduled cancelation - if (cancelType === 'scheduled' && isCancelScheduled) { - dispatch(sessionCanceled({ session_id })); - } - - const { result, node, graph_execution_state_id } = data; + const { result, node, queue_batch_id } = data; // This complete event has an associated image output if (isImageOutput(result) && !nodeDenylist.includes(node.type)) { const { image_name } = result.image; const { canvas, gallery } = getState(); + // This populates the `getImageDTO` cache const imageDTO = await dispatch( imagesApi.endpoints.getImageDTO.initiate(image_name) ).unwrap(); // Add canvas images to the staging area if ( - graph_execution_state_id === - canvas.layerState.stagingArea.sessionId && + canvas.batchIds.includes(queue_batch_id) && [CANVAS_OUTPUT].includes(data.source_node_id) ) { dispatch(addImageToStagingArea(imageDTO)); @@ -63,59 +54,39 @@ export const addInvocationCompleteEventListener = () => { if (!imageDTO.is_intermediate) { /** * Cache updates for when an image result is received - * - *add* to getImageDTO - * - IF `autoAddBoardId` is set: - * - THEN add it to the board_id/images - * - ELSE (`autoAddBoardId` is not set): - * - THEN add it to the no_board/images + * - add it to the no_board/images */ - const { autoAddBoardId } = gallery; - if (autoAddBoardId && autoAddBoardId !== 'none') { - dispatch( - imagesApi.endpoints.addImageToBoard.initiate({ - board_id: autoAddBoardId, - imageDTO, - }) - ); - } else { - dispatch( - imagesApi.util.updateQueryData( - 'listImages', - { - board_id: 'none', - categories: IMAGE_CATEGORIES, - }, - (draft) => { - imagesAdapter.addOne(draft, imageDTO); - } - ) - ); - } + dispatch( + imagesApi.util.updateQueryData( + 'listImages', + { + board_id: imageDTO.board_id ?? 'none', + categories: IMAGE_CATEGORIES, + }, + (draft) => { + imagesAdapter.addOne(draft, imageDTO); + } + ) + ); dispatch( imagesApi.util.invalidateTags([ - { type: 'BoardImagesTotal', id: autoAddBoardId }, - { type: 'BoardAssetsTotal', id: autoAddBoardId }, + { type: 'BoardImagesTotal', id: imageDTO.board_id }, + { type: 'BoardAssetsTotal', id: imageDTO.board_id }, ]) ); - const { selectedBoardId, shouldAutoSwitch } = gallery; + const { shouldAutoSwitch } = gallery; // If auto-switch is enabled, select the new image if (shouldAutoSwitch) { // if auto-add is enabled, switch the board as the image comes in - if (autoAddBoardId && autoAddBoardId !== selectedBoardId) { - dispatch(boardIdSelected(autoAddBoardId)); - dispatch(galleryViewChanged('images')); - } else if (!autoAddBoardId) { - dispatch(galleryViewChanged('images')); - } + dispatch(galleryViewChanged('images')); + dispatch(boardIdSelected(imageDTO.board_id ?? 'none')); dispatch(imageSelected(imageDTO)); } } - - dispatch(progressImageSet(null)); } // pass along the socket event as an application action dispatch(appSocketInvocationComplete(action.payload)); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts index 4e77811762..50f52e2851 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketInvocationStarted.ts @@ -8,23 +8,14 @@ import { startAppListening } from '../..'; export const addInvocationStartedEventListener = () => { startAppListening({ actionCreator: socketInvocationStarted, - effect: (action, { dispatch, getState }) => { + effect: (action, { dispatch }) => { const log = logger('socketio'); - if ( - getState().system.canceledSession === - action.payload.data.graph_execution_state_id - ) { - log.trace( - action.payload, - 'Ignored invocation started for canceled session' - ); - return; - } log.debug( action.payload, `Invocation started (${action.payload.data.node.type})` ); + dispatch(appSocketInvocationStarted(action.payload)); }, }); diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts new file mode 100644 index 0000000000..b0377e950b --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketQueueItemStatusChanged.ts @@ -0,0 +1,53 @@ +import { logger } from 'app/logging/logger'; +import { queueApi, queueItemsAdapter } from 'services/api/endpoints/queue'; +import { + appSocketQueueItemStatusChanged, + socketQueueItemStatusChanged, +} from 'services/events/actions'; +import { startAppListening } from '../..'; + +export const addSocketQueueItemStatusChangedEventListener = () => { + startAppListening({ + actionCreator: socketQueueItemStatusChanged, + effect: async (action, { dispatch }) => { + const log = logger('socketio'); + const { + queue_item_id: item_id, + queue_batch_id, + status, + } = action.payload.data; + log.debug( + action.payload, + `Queue item ${item_id} status updated: ${status}` + ); + dispatch(appSocketQueueItemStatusChanged(action.payload)); + + dispatch( + queueApi.util.updateQueryData('listQueueItems', undefined, (draft) => { + queueItemsAdapter.updateOne(draft, { + id: item_id, + changes: action.payload.data, + }); + }) + ); + + dispatch( + queueApi.util.invalidateTags([ + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + { type: 'SessionQueueItem', id: item_id }, + { type: 'SessionQueueItemDTO', id: item_id }, + { type: 'BatchStatus', id: queue_batch_id }, + ]) + ); + + const req = dispatch( + queueApi.endpoints.getQueueStatus.initiate(undefined, { + forceRefetch: true, + }) + ); + await req.unwrap(); + req.unsubscribe(); + }, + }); +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts index a05527790e..1f9354ee67 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketSubscribed.ts @@ -1,14 +1,17 @@ import { logger } from 'app/logging/logger'; -import { appSocketSubscribed, socketSubscribed } from 'services/events/actions'; +import { + appSocketSubscribedSession, + socketSubscribedSession, +} from 'services/events/actions'; import { startAppListening } from '../..'; export const addSocketSubscribedEventListener = () => { startAppListening({ - actionCreator: socketSubscribed, + actionCreator: socketSubscribedSession, effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug(action.payload, 'Subscribed'); - dispatch(appSocketSubscribed(action.payload)); + dispatch(appSocketSubscribedSession(action.payload)); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts index a8076ee1b7..2f4f65edc6 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/socketio/socketUnsubscribed.ts @@ -1,17 +1,17 @@ import { logger } from 'app/logging/logger'; import { - appSocketUnsubscribed, - socketUnsubscribed, + appSocketUnsubscribedSession, + socketUnsubscribedSession, } from 'services/events/actions'; import { startAppListening } from '../..'; export const addSocketUnsubscribedEventListener = () => { startAppListening({ - actionCreator: socketUnsubscribed, + actionCreator: socketUnsubscribedSession, effect: (action, { dispatch }) => { const log = logger('socketio'); log.debug(action.payload, 'Unsubscribed'); - dispatch(appSocketUnsubscribed(action.payload)); + dispatch(appSocketUnsubscribedSession(action.payload)); }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/stagingAreaImageSaved.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/stagingAreaImageSaved.ts index b14e18ea63..c00cf78beb 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/stagingAreaImageSaved.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/stagingAreaImageSaved.ts @@ -2,6 +2,7 @@ import { stagingAreaImageSaved } from 'features/canvas/store/actions'; import { addToast } from 'features/system/store/systemSlice'; import { imagesApi } from 'services/api/endpoints/images'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addStagingAreaImageSavedListener = () => { startAppListening({ @@ -28,11 +29,11 @@ export const addStagingAreaImageSavedListener = () => { }) ); } - dispatch(addToast({ title: 'Image Saved', status: 'success' })); + dispatch(addToast({ title: t('toast.imageSaved'), status: 'success' })); } catch (error) { dispatch( addToast({ - title: 'Image Saving Failed', + title: t('toast.imageSavingFailed'), description: (error as Error)?.message, status: 'error', }) diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts index 75980a65e4..b54d8b553c 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/upscaleRequested.ts @@ -1,7 +1,10 @@ import { createAction } from '@reduxjs/toolkit'; +import { logger } from 'app/logging/logger'; +import { parseify } from 'common/util/serialize'; import { buildAdHocUpscaleGraph } from 'features/nodes/util/graphBuilders/buildAdHocUpscaleGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; import { startAppListening } from '..'; export const upscaleRequested = createAction<{ image_name: string }>( @@ -11,21 +14,45 @@ export const upscaleRequested = createAction<{ image_name: string }>( export const addUpscaleRequestedListener = () => { startAppListening({ actionCreator: upscaleRequested, - effect: async (action, { dispatch, getState, take }) => { + effect: async (action, { dispatch, getState }) => { + const log = logger('session'); + const { image_name } = action.payload; - const { esrganModelName } = getState().postprocessing; + const state = getState(); + const { esrganModelName } = state.postprocessing; + const { autoAddBoardId } = state.gallery; const graph = buildAdHocUpscaleGraph({ image_name, esrganModelName, + autoAddBoardId, }); - // Create a session to run the graph & wait til it's ready to invoke - dispatch(sessionCreated({ graph })); + try { + const req = dispatch( + queueApi.endpoints.enqueueGraph.initiate( + { graph, prepend: true }, + { + fixedCacheKey: 'enqueueGraph', + } + ) + ); - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); + const enqueueResult = await req.unwrap(); + req.reset(); + log.debug( + { enqueueResult: parseify(enqueueResult) }, + t('queue.graphQueued') + ); + } catch { + log.error({ graph: parseify(graph) }, t('queue.graphFailedToQueue')); + dispatch( + addToast({ + title: t('queue.graphFailedToQueue'), + status: 'error', + }) + ); + } }, }); }; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts deleted file mode 100644 index b0172e693b..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedImageToImage.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { imageToImageGraphBuilt } from 'features/nodes/store/actions'; -import { buildLinearImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearImageToImageGraph'; -import { buildLinearSDXLImageToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedImageToImageListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'img2img', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - const model = state.generation.model; - - let graph; - - if (model && model.base_model === 'sdxl') { - graph = buildLinearSDXLImageToImageGraph(state); - } else { - graph = buildLinearImageToImageGraph(state); - } - - dispatch(imageToImageGraphBuilt(graph)); - log.debug({ graph: parseify(graph) }, 'Image to Image graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts deleted file mode 100644 index 5894bba5df..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedNodes.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { nodesGraphBuilt } from 'features/nodes/store/actions'; -import { buildNodesGraph } from 'features/nodes/util/graphBuilders/buildNodesGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedNodesListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'nodes', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - - const graph = buildNodesGraph(state.nodes); - dispatch(nodesGraphBuilt(graph)); - log.debug({ graph: parseify(graph) }, 'Nodes graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts deleted file mode 100644 index f1cdabcabd..0000000000 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/userInvokedTextToImage.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { logger } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; -import { parseify } from 'common/util/serialize'; -import { textToImageGraphBuilt } from 'features/nodes/store/actions'; -import { buildLinearSDXLTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph'; -import { buildLinearTextToImageGraph } from 'features/nodes/util/graphBuilders/buildLinearTextToImageGraph'; -import { sessionReadyToInvoke } from 'features/system/store/actions'; -import { sessionCreated } from 'services/api/thunks/session'; -import { startAppListening } from '..'; - -export const addUserInvokedTextToImageListener = () => { - startAppListening({ - predicate: (action): action is ReturnType => - userInvoked.match(action) && action.payload === 'txt2img', - effect: async (action, { getState, dispatch, take }) => { - const log = logger('session'); - const state = getState(); - const model = state.generation.model; - - let graph; - - if (model && model.base_model === 'sdxl') { - graph = buildLinearSDXLTextToImageGraph(state); - } else { - graph = buildLinearTextToImageGraph(state); - } - - dispatch(textToImageGraphBuilt(graph)); - - log.debug({ graph: parseify(graph) }, 'Text to Image graph built'); - - dispatch(sessionCreated({ graph })); - - await take(sessionCreated.fulfilled.match); - - dispatch(sessionReadyToInvoke()); - }, - }); -}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts new file mode 100644 index 0000000000..1d5a1232c8 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/util/enqueueBatch.ts @@ -0,0 +1,54 @@ +import { logger } from 'app/logging/logger'; +import { AppThunkDispatch } from 'app/store/store'; +import { parseify } from 'common/util/serialize'; +import { addToast } from 'features/system/store/systemSlice'; +import { t } from 'i18next'; +import { queueApi } from 'services/api/endpoints/queue'; +import { BatchConfig } from 'services/api/types'; + +export const enqueueBatch = async ( + batchConfig: BatchConfig, + dispatch: AppThunkDispatch +) => { + const log = logger('session'); + const { prepend } = batchConfig; + + try { + const req = dispatch( + queueApi.endpoints.enqueueBatch.initiate(batchConfig, { + fixedCacheKey: 'enqueueBatch', + }) + ); + const enqueueResult = await req.unwrap(); + req.reset(); + + dispatch( + queueApi.endpoints.resumeProcessor.initiate(undefined, { + fixedCacheKey: 'resumeProcessor', + }) + ); + + log.debug({ enqueueResult: parseify(enqueueResult) }, 'Batch enqueued'); + dispatch( + addToast({ + title: t('queue.batchQueued'), + description: t('queue.batchQueuedDesc', { + item_count: enqueueResult.enqueued, + direction: prepend ? t('queue.front') : t('queue.back'), + }), + status: 'success', + }) + ); + } catch { + log.error( + { batchConfig: parseify(batchConfig) }, + t('queue.batchFailedToQueue') + ); + dispatch( + addToast({ + title: t('queue.batchFailedToQueue'), + status: 'error', + }) + ); + } +}; diff --git a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoaded.ts b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoaded.ts index c447720941..de697a70e5 100644 --- a/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoaded.ts +++ b/invokeai/frontend/web/src/app/store/middleware/listenerMiddleware/listeners/workflowLoaded.ts @@ -7,6 +7,7 @@ import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { setActiveTab } from 'features/ui/store/uiSlice'; import { startAppListening } from '..'; +import { t } from 'i18next'; export const addWorkflowLoadedListener = () => { startAppListening({ @@ -27,7 +28,7 @@ export const addWorkflowLoadedListener = () => { dispatch( addToast( makeToast({ - title: 'Workflow Loaded', + title: t('toast.workflowLoaded'), status: 'success', }) ) @@ -36,7 +37,7 @@ export const addWorkflowLoadedListener = () => { dispatch( addToast( makeToast({ - title: 'Workflow Loaded with Warnings', + title: t('toast.loadedWithWarnings'), status: 'warning', }) ) diff --git a/invokeai/frontend/web/src/app/store/nanostores/customStarUI.ts b/invokeai/frontend/web/src/app/store/nanostores/customStarUI.ts new file mode 100644 index 0000000000..0459c2f31f --- /dev/null +++ b/invokeai/frontend/web/src/app/store/nanostores/customStarUI.ts @@ -0,0 +1,14 @@ +import { MenuItemProps } from '@chakra-ui/react'; +import { atom } from 'nanostores'; + +export type CustomStarUi = { + on: { + icon: MenuItemProps['icon']; + text: string; + }; + off: { + icon: MenuItemProps['icon']; + text: string; + }; +}; +export const $customStarUI = atom(undefined); diff --git a/invokeai/frontend/web/src/app/store/nanostores/headerComponent.ts b/invokeai/frontend/web/src/app/store/nanostores/headerComponent.ts new file mode 100644 index 0000000000..90a4775ff9 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/nanostores/headerComponent.ts @@ -0,0 +1,4 @@ +import { atom } from 'nanostores'; +import { ReactNode } from 'react'; + +export const $headerComponent = atom(undefined); diff --git a/invokeai/frontend/web/src/app/store/nanostores/index.ts b/invokeai/frontend/web/src/app/store/nanostores/index.ts new file mode 100644 index 0000000000..ae43ed3035 --- /dev/null +++ b/invokeai/frontend/web/src/app/store/nanostores/index.ts @@ -0,0 +1,3 @@ +/** + * For non-serializable data that needs to be available throughout the app, or when redux is not appropriate, use nanostores. + */ diff --git a/invokeai/frontend/web/src/app/store/nanostores/store.ts b/invokeai/frontend/web/src/app/store/nanostores/store.ts new file mode 100644 index 0000000000..c9f041fa5d --- /dev/null +++ b/invokeai/frontend/web/src/app/store/nanostores/store.ts @@ -0,0 +1,5 @@ +import { Store } from '@reduxjs/toolkit'; +import { atom } from 'nanostores'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const $store = atom | undefined>(); diff --git a/invokeai/frontend/web/src/app/store/store.ts b/invokeai/frontend/web/src/app/store/store.ts index ce2a21c6e7..b9bbe4f06b 100644 --- a/invokeai/frontend/web/src/app/store/store.ts +++ b/invokeai/frontend/web/src/app/store/store.ts @@ -18,6 +18,7 @@ import postprocessingReducer from 'features/parameters/store/postprocessingSlice import sdxlReducer from 'features/sdxl/store/sdxlSlice'; import configReducer from 'features/system/store/configSlice'; import systemReducer from 'features/system/store/systemSlice'; +import queueReducer from 'features/queue/store/queueSlice'; import modelmanagerReducer from 'features/ui/components/tabs/ModelManager/store/modelManagerSlice'; import hotkeysReducer from 'features/ui/store/hotkeysSlice'; import uiReducer from 'features/ui/store/uiSlice'; @@ -31,6 +32,7 @@ import { actionSanitizer } from './middleware/devtools/actionSanitizer'; import { actionsDenylist } from './middleware/devtools/actionsDenylist'; import { stateSanitizer } from './middleware/devtools/stateSanitizer'; import { listenerMiddleware } from './middleware/listenerMiddleware'; +import { $store } from './nanostores/store'; const allReducers = { canvas: canvasReducer, @@ -49,6 +51,7 @@ const allReducers = { lora: loraReducer, modelmanager: modelmanagerReducer, sdxl: sdxlReducer, + queue: queueReducer, [api.reducerPath]: api.reducer, }; @@ -87,8 +90,8 @@ export const store = configureStore({ }, middleware: (getDefaultMiddleware) => getDefaultMiddleware({ - immutableCheck: false, serializableCheck: false, + immutableCheck: false, }) .concat(api.middleware) .concat(dynamicMiddlewares) @@ -124,3 +127,4 @@ export type RootState = ReturnType; export type AppThunkDispatch = ThunkDispatch; export type AppDispatch = typeof store.dispatch; export const stateSelector = (state: RootState) => state; +$store.set(store); diff --git a/invokeai/frontend/web/src/app/types/invokeai.ts b/invokeai/frontend/web/src/app/types/invokeai.ts index a39ed2ca7b..2cb2173b19 100644 --- a/invokeai/frontend/web/src/app/types/invokeai.ts +++ b/invokeai/frontend/web/src/app/types/invokeai.ts @@ -18,7 +18,11 @@ export type AppFeature = | 'dynamicPrompting' | 'batches' | 'syncModels' - | 'multiselect'; + | 'multiselect' + | 'pauseQueue' + | 'resumeQueue' + | 'prependQueue' + | 'invocationCache'; /** * A disable-able Stable Diffusion feature @@ -45,10 +49,13 @@ export type AppConfig = { * Whether or not we should update image urls when image loading errors */ shouldUpdateImagesOnConnect: boolean; + shouldFetchMetadataFromApi: boolean; disabledTabs: InvokeTabName[]; disabledFeatures: AppFeature[]; disabledSDFeatures: SDFeature[]; canRestoreDeletedImagesFromBin: boolean; + nodesAllowlist: string[] | undefined; + nodesDenylist: string[] | undefined; sd: { defaultModel?: string; disabledControlNetModels: string[]; diff --git a/invokeai/frontend/web/src/common/components/GreyscaleInvokeAIIcon.tsx b/invokeai/frontend/web/src/common/components/GreyscaleInvokeAIIcon.tsx new file mode 100644 index 0000000000..a6c6cdca18 --- /dev/null +++ b/invokeai/frontend/web/src/common/components/GreyscaleInvokeAIIcon.tsx @@ -0,0 +1,22 @@ +import { Box, Image } from '@chakra-ui/react'; +import InvokeAILogoImage from 'assets/images/logo.png'; +import { memo } from 'react'; + +const GreyscaleInvokeAIIcon = () => ( + + invoke-ai-logo + +); + +export default memo(GreyscaleInvokeAIIcon); diff --git a/invokeai/frontend/web/src/common/components/IAIDroppable.tsx b/invokeai/frontend/web/src/common/components/IAIDroppable.tsx index e4fb121c78..bf98961c21 100644 --- a/invokeai/frontend/web/src/common/components/IAIDroppable.tsx +++ b/invokeai/frontend/web/src/common/components/IAIDroppable.tsx @@ -31,7 +31,7 @@ const IAIDroppable = (props: IAIDroppableProps) => { insetInlineStart={0} w="full" h="full" - pointerEvents="none" + pointerEvents={active ? 'auto' : 'none'} > {isValidDrop(data, active) && ( diff --git a/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx b/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx index a150e4ed0c..ca61ea847f 100644 --- a/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx +++ b/invokeai/frontend/web/src/common/components/IAIImageFallback.tsx @@ -1,7 +1,7 @@ import { As, - ChakraProps, Flex, + FlexProps, Icon, Skeleton, Spinner, @@ -47,15 +47,14 @@ export const IAILoadingImageFallback = (props: Props) => { ); }; -type IAINoImageFallbackProps = { +type IAINoImageFallbackProps = FlexProps & { label?: string; icon?: As | null; boxSize?: StyleProps['boxSize']; - sx?: ChakraProps['sx']; }; export const IAINoContentFallback = (props: IAINoImageFallbackProps) => { - const { icon = FaImage, boxSize = 16 } = props; + const { icon = FaImage, boxSize = 16, sx, ...rest } = props; return ( { _dark: { color: 'base.500', }, - ...props.sx, + ...sx, }} + {...rest} > {icon && } {props.label && {props.label}} diff --git a/invokeai/frontend/web/src/common/components/IAIInformationalPopover/IAIInformationalPopover.tsx b/invokeai/frontend/web/src/common/components/IAIInformationalPopover/IAIInformationalPopover.tsx new file mode 100644 index 0000000000..b58f8fc565 --- /dev/null +++ b/invokeai/frontend/web/src/common/components/IAIInformationalPopover/IAIInformationalPopover.tsx @@ -0,0 +1,155 @@ +import { + Box, + BoxProps, + Button, + Divider, + Flex, + Heading, + Image, + Popover, + PopoverBody, + PopoverCloseButton, + PopoverContent, + PopoverProps, + PopoverTrigger, + Portal, + Text, + forwardRef, +} from '@chakra-ui/react'; +import { merge, omit } from 'lodash-es'; +import { PropsWithChildren, memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaExternalLinkAlt } from 'react-icons/fa'; +import { useAppSelector } from '../../../app/store/storeHooks'; +import { + Feature, + OPEN_DELAY, + POPOVER_DATA, + POPPER_MODIFIERS, +} from './constants'; + +type Props = PropsWithChildren & { + feature: Feature; + wrapperProps?: BoxProps; + popoverProps?: PopoverProps; +}; + +const IAIInformationalPopover = forwardRef( + ({ feature, children, wrapperProps, ...rest }: Props, ref) => { + const { t } = useTranslation(); + const shouldEnableInformationalPopovers = useAppSelector( + (state) => state.system.shouldEnableInformationalPopovers + ); + + const data = useMemo(() => POPOVER_DATA[feature], [feature]); + + const popoverProps = useMemo( + () => merge(omit(data, ['image', 'href', 'buttonLabel']), rest), + [data, rest] + ); + + const heading = useMemo( + () => t(`popovers.${feature}.heading`), + [feature, t] + ); + + const paragraphs = useMemo( + () => + t(`popovers.${feature}.paragraphs`, { + returnObjects: true, + }) ?? [], + [feature, t] + ); + + const handleClick = useCallback(() => { + if (!data?.href) { + return; + } + window.open(data.href); + }, [data?.href]); + + if (!shouldEnableInformationalPopovers) { + return ( + + {children} + + ); + } + + return ( + + + + {children} + + + + + + + + {heading && ( + <> + {heading} + + + )} + {data?.image && ( + <> + Optional Image + + + )} + {paragraphs.map((p) => ( + {p} + ))} + {data?.href && ( + <> + + + + )} + + + + + + ); + } +); + +IAIInformationalPopover.displayName = 'IAIInformationalPopover'; + +export default memo(IAIInformationalPopover); diff --git a/invokeai/frontend/web/src/common/components/IAIInformationalPopover/constants.ts b/invokeai/frontend/web/src/common/components/IAIInformationalPopover/constants.ts new file mode 100644 index 0000000000..f2398483bf --- /dev/null +++ b/invokeai/frontend/web/src/common/components/IAIInformationalPopover/constants.ts @@ -0,0 +1,98 @@ +import { PopoverProps } from '@chakra-ui/react'; + +export type Feature = + | 'clipSkip' + | 'paramNegativeConditioning' + | 'paramPositiveConditioning' + | 'paramScheduler' + | 'compositingBlur' + | 'compositingBlurMethod' + | 'compositingCoherencePass' + | 'compositingCoherenceMode' + | 'compositingCoherenceSteps' + | 'compositingStrength' + | 'compositingMaskAdjustments' + | 'controlNetBeginEnd' + | 'controlNetControlMode' + | 'controlNetResizeMode' + | 'controlNet' + | 'controlNetWeight' + | 'dynamicPrompts' + | 'dynamicPromptsMaxPrompts' + | 'dynamicPromptsSeedBehaviour' + | 'infillMethod' + | 'lora' + | 'noiseUseCPU' + | 'paramCFGScale' + | 'paramDenoisingStrength' + | 'paramIterations' + | 'paramModel' + | 'paramRatio' + | 'paramSeed' + | 'paramSteps' + | 'paramVAE' + | 'paramVAEPrecision' + | 'scaleBeforeProcessing'; + +export type PopoverData = PopoverProps & { + image?: string; + href?: string; + buttonLabel?: string; +}; + +export const POPOVER_DATA: { [key in Feature]?: PopoverData } = { + paramNegativeConditioning: { + placement: 'right', + }, + controlNet: { + href: 'https://support.invoke.ai/support/solutions/articles/151000105880', + }, + lora: { + href: 'https://support.invoke.ai/support/solutions/articles/151000159072', + }, + compositingCoherenceMode: { + href: 'https://support.invoke.ai/support/solutions/articles/151000158838', + }, + infillMethod: { + href: 'https://support.invoke.ai/support/solutions/articles/151000158841', + }, + scaleBeforeProcessing: { + href: 'https://support.invoke.ai/support/solutions/articles/151000158841', + }, + paramIterations: { + href: 'https://support.invoke.ai/support/solutions/articles/151000159073', + }, + paramPositiveConditioning: { + href: 'https://support.invoke.ai/support/solutions/articles/151000096606-tips-on-crafting-prompts', + placement: 'right', + }, + paramScheduler: { + placement: 'right', + href: 'https://support.invoke.ai/support/solutions/articles/151000159073', + }, + paramModel: { + placement: 'right', + href: 'https://support.invoke.ai/support/solutions/articles/151000096601-what-is-a-model-which-should-i-use-', + }, + paramRatio: { + gutter: 16, + }, + controlNetControlMode: { + placement: 'right', + }, + controlNetResizeMode: { + placement: 'right', + }, + paramVAE: { + placement: 'right', + }, + paramVAEPrecision: { + placement: 'right', + }, +} as const; + +export const OPEN_DELAY = 1000; // in milliseconds + +export const POPPER_MODIFIERS: PopoverProps['modifiers'] = [ + { name: 'preventOverflow', options: { padding: 10 } }, +]; diff --git a/invokeai/frontend/web/src/common/components/IAIMantineMultiSelect.tsx b/invokeai/frontend/web/src/common/components/IAIMantineMultiSelect.tsx index 28c680b824..669fdb5788 100644 --- a/invokeai/frontend/web/src/common/components/IAIMantineMultiSelect.tsx +++ b/invokeai/frontend/web/src/common/components/IAIMantineMultiSelect.tsx @@ -1,4 +1,4 @@ -import { FormControl, FormLabel, Tooltip } from '@chakra-ui/react'; +import { FormControl, FormLabel, Tooltip, forwardRef } from '@chakra-ui/react'; import { MultiSelect, MultiSelectProps } from '@mantine/core'; import { useAppDispatch } from 'app/store/storeHooks'; import { shiftKeyPressed } from 'features/ui/store/hotkeysSlice'; @@ -11,7 +11,7 @@ type IAIMultiSelectProps = Omit & { label?: string; }; -const IAIMantineMultiSelect = (props: IAIMultiSelectProps) => { +const IAIMantineMultiSelect = forwardRef((props: IAIMultiSelectProps, ref) => { const { searchable = true, tooltip, @@ -44,25 +44,23 @@ const IAIMantineMultiSelect = (props: IAIMultiSelectProps) => { return ( - - {label} - - ) : undefined - } - ref={inputRef} - disabled={disabled} - onKeyDown={handleKeyDown} - onKeyUp={handleKeyUp} - searchable={searchable} - maxDropdownHeight={300} - styles={styles} - {...rest} - /> + + {label && {label}} + + ); -}; +}); + +IAIMantineMultiSelect.displayName = 'IAIMantineMultiSelect'; export default memo(IAIMantineMultiSelect); diff --git a/invokeai/frontend/web/src/common/components/IAIMantineSearchableSelect.tsx b/invokeai/frontend/web/src/common/components/IAIMantineSearchableSelect.tsx index 079421d4e5..f0bc52ab63 100644 --- a/invokeai/frontend/web/src/common/components/IAIMantineSearchableSelect.tsx +++ b/invokeai/frontend/web/src/common/components/IAIMantineSearchableSelect.tsx @@ -1,4 +1,4 @@ -import { FormControl, FormLabel, Tooltip } from '@chakra-ui/react'; +import { FormControl, FormLabel, Tooltip, forwardRef } from '@chakra-ui/react'; import { Select, SelectProps } from '@mantine/core'; import { useAppDispatch } from 'app/store/storeHooks'; import { shiftKeyPressed } from 'features/ui/store/hotkeysSlice'; @@ -17,7 +17,7 @@ type IAISelectProps = Omit & { inputRef?: RefObject; }; -const IAIMantineSearchableSelect = (props: IAISelectProps) => { +const IAIMantineSearchableSelect = forwardRef((props: IAISelectProps, ref) => { const { searchable = true, tooltip, @@ -70,28 +70,27 @@ const IAIMantineSearchableSelect = (props: IAISelectProps) => { return ( - + ); -}; +}); + +IAIMantineSearchableSelect.displayName = 'IAIMantineSearchableSelect'; export default memo(IAIMantineSearchableSelect); diff --git a/invokeai/frontend/web/src/common/components/IAIMantineSelect.tsx b/invokeai/frontend/web/src/common/components/IAIMantineSelect.tsx index 46b5fc95f6..f0d64f43c9 100644 --- a/invokeai/frontend/web/src/common/components/IAIMantineSelect.tsx +++ b/invokeai/frontend/web/src/common/components/IAIMantineSelect.tsx @@ -1,4 +1,4 @@ -import { FormControl, FormLabel, Tooltip } from '@chakra-ui/react'; +import { FormControl, FormLabel, Tooltip, forwardRef } from '@chakra-ui/react'; import { Select, SelectProps } from '@mantine/core'; import { useMantineSelectStyles } from 'mantine-theme/hooks/useMantineSelectStyles'; import { RefObject, memo } from 'react'; @@ -15,28 +15,21 @@ export type IAISelectProps = Omit & { label?: string; }; -const IAIMantineSelect = (props: IAISelectProps) => { +const IAIMantineSelect = forwardRef((props: IAISelectProps, ref) => { const { tooltip, inputRef, label, disabled, required, ...rest } = props; const styles = useMantineSelectStyles(); return ( - + ); -}; +}); + +IAIMantineSelect.displayName = 'IAIMantineSelect'; export default memo(IAIMantineSelect); diff --git a/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx b/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx new file mode 100644 index 0000000000..a61268c99e --- /dev/null +++ b/invokeai/frontend/web/src/common/components/IAIMantineSelectItemWithDescription.tsx @@ -0,0 +1,29 @@ +import { Box, Text } from '@chakra-ui/react'; +import { forwardRef, memo } from 'react'; + +interface ItemProps extends React.ComponentPropsWithoutRef<'div'> { + label: string; + value: string; + description?: string; +} + +const IAIMantineSelectItemWithDescription = forwardRef< + HTMLDivElement, + ItemProps +>(({ label, description, ...rest }: ItemProps, ref) => ( + + + {label} + {description && ( + + {description} + + )} + + +)); + +IAIMantineSelectItemWithDescription.displayName = + 'IAIMantineSelectItemWithDescription'; + +export default memo(IAIMantineSelectItemWithDescription); diff --git a/invokeai/frontend/web/src/common/components/IAINumberInput.tsx b/invokeai/frontend/web/src/common/components/IAINumberInput.tsx index de3b44564a..243dac9d63 100644 --- a/invokeai/frontend/web/src/common/components/IAINumberInput.tsx +++ b/invokeai/frontend/web/src/common/components/IAINumberInput.tsx @@ -13,6 +13,7 @@ import { NumberInputStepperProps, Tooltip, TooltipProps, + forwardRef, } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; import { stopPastePropagation } from 'common/util/stopPastePropagation'; @@ -50,7 +51,7 @@ interface Props extends Omit { /** * Customized Chakra FormControl + NumberInput multi-part component. */ -const IAINumberInput = (props: Props) => { +const IAINumberInput = forwardRef((props: Props, ref) => { const { label, isDisabled = false, @@ -141,6 +142,7 @@ const IAINumberInput = (props: Props) => { return ( { ); -}; +}); + +IAINumberInput.displayName = 'IAINumberInput'; export default memo(IAINumberInput); diff --git a/invokeai/frontend/web/src/common/components/IAISlider.tsx b/invokeai/frontend/web/src/common/components/IAISlider.tsx index fd3eed754f..e879c00977 100644 --- a/invokeai/frontend/web/src/common/components/IAISlider.tsx +++ b/invokeai/frontend/web/src/common/components/IAISlider.tsx @@ -22,6 +22,7 @@ import { SliderTrackProps, Tooltip, TooltipProps, + forwardRef, } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; import { roundDownToMultiple } from 'common/util/roundDownToMultiple'; @@ -71,7 +72,7 @@ export type IAIFullSliderProps = { sliderIAIIconButtonProps?: IAIIconButtonProps; }; -const IAISlider = (props: IAIFullSliderProps) => { +const IAISlider = forwardRef((props: IAIFullSliderProps, ref) => { const [showTooltip, setShowTooltip] = useState(false); const { label, @@ -187,6 +188,7 @@ const IAISlider = (props: IAIFullSliderProps) => { return ( { ); -}; +}); + +IAISlider.displayName = 'IAISlider'; export default memo(IAISlider); diff --git a/invokeai/frontend/web/src/common/components/IAISwitch.tsx b/invokeai/frontend/web/src/common/components/IAISwitch.tsx index da0883d77e..8773be49e5 100644 --- a/invokeai/frontend/web/src/common/components/IAISwitch.tsx +++ b/invokeai/frontend/web/src/common/components/IAISwitch.tsx @@ -72,4 +72,6 @@ const IAISwitch = (props: IAISwitchProps) => { ); }; +IAISwitch.displayName = 'IAISwitch'; + export default memo(IAISwitch); diff --git a/invokeai/frontend/web/src/common/components/ImageUploader.tsx b/invokeai/frontend/web/src/common/components/ImageUploader.tsx index bb341a63f6..59349e615d 100644 --- a/invokeai/frontend/web/src/common/components/ImageUploader.tsx +++ b/invokeai/frontend/web/src/common/components/ImageUploader.tsx @@ -4,7 +4,6 @@ import { useAppToaster } from 'app/components/Toaster'; import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { AnimatePresence, motion } from 'framer-motion'; import { @@ -51,7 +50,6 @@ type ImageUploaderProps = { const ImageUploader = (props: ImageUploaderProps) => { const { children } = props; const { autoAddBoardId, postUploadAction } = useAppSelector(selector); - const isBusy = useAppSelector(selectIsBusy); const toaster = useAppToaster(); const { t } = useTranslation(); const [isHandlingUpload, setIsHandlingUpload] = useState(false); @@ -106,6 +104,10 @@ const ImageUploader = (props: ImageUploaderProps) => { [t, toaster, fileAcceptedCallback, fileRejectionCallback] ); + const onDragOver = useCallback(() => { + setIsHandlingUpload(true); + }, []); + const { getRootProps, getInputProps, @@ -117,8 +119,7 @@ const ImageUploader = (props: ImageUploaderProps) => { accept: { 'image/png': ['.png'], 'image/jpeg': ['.jpg', '.jpeg', '.png'] }, noClick: true, onDrop, - onDragOver: () => setIsHandlingUpload(true), - disabled: isBusy, + onDragOver, multiple: false, }); diff --git a/invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts b/invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts similarity index 60% rename from invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts rename to invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts index 8eaabeeedf..77afeb4161 100644 --- a/invokeai/frontend/web/src/common/hooks/useIsReadyToInvoke.ts +++ b/invokeai/frontend/web/src/common/hooks/useIsReadyToEnqueue.ts @@ -4,37 +4,35 @@ import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { isInvocationNode } from 'features/nodes/types/types'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import i18n from 'i18next'; import { forEach, map } from 'lodash-es'; import { getConnectedEdges } from 'reactflow'; const selector = createSelector( [stateSelector, activeTabNameSelector], - (state, activeTabName) => { - const { generation, system, nodes } = state; + ( + { controlNet, generation, system, nodes, dynamicPrompts }, + activeTabName + ) => { const { initialImage, model } = generation; - const { isProcessing, isConnected } = system; + const { isConnected } = system; const reasons: string[] = []; - // Cannot generate if already processing an image - if (isProcessing) { - reasons.push('System busy'); - } - // Cannot generate if not connected if (!isConnected) { - reasons.push('System disconnected'); + reasons.push(i18n.t('parameters.invoke.systemDisconnected')); } if (activeTabName === 'img2img' && !initialImage) { - reasons.push('No initial image selected'); + reasons.push(i18n.t('parameters.invoke.noInitialImageSelected')); } if (activeTabName === 'nodes') { if (nodes.shouldValidateGraph) { if (!nodes.nodes.length) { - reasons.push('No nodes in graph'); + reasons.push(i18n.t('parameters.invoke.noNodesInGraph')); } nodes.nodes.forEach((node) => { @@ -46,7 +44,7 @@ const selector = createSelector( if (!nodeTemplate) { // Node type not found - reasons.push('Missing node template'); + reasons.push(i18n.t('parameters.invoke.missingNodeTemplate')); return; } @@ -60,7 +58,7 @@ const selector = createSelector( ); if (!fieldTemplate) { - reasons.push('Missing field template'); + reasons.push(i18n.t('parameters.invoke.missingFieldTemplate')); return; } @@ -70,9 +68,10 @@ const selector = createSelector( !hasConnection ) { reasons.push( - `${node.data.label || nodeTemplate.title} -> ${ - field.label || fieldTemplate.title - } missing input` + i18n.t('parameters.invoke.missingInputForField', { + nodeLabel: node.data.label || nodeTemplate.title, + fieldLabel: field.label || fieldTemplate.title, + }) ); return; } @@ -80,17 +79,23 @@ const selector = createSelector( }); } } else { - if (!model) { - reasons.push('No model selected'); + if (dynamicPrompts.prompts.length === 0) { + reasons.push(i18n.t('parameters.invoke.noPrompts')); } - if (state.controlNet.isEnabled) { - map(state.controlNet.controlNets).forEach((controlNet, i) => { + if (!model) { + reasons.push(i18n.t('parameters.invoke.noModelSelected')); + } + + if (controlNet.isEnabled) { + map(controlNet.controlNets).forEach((controlNet, i) => { if (!controlNet.isEnabled) { return; } if (!controlNet.model) { - reasons.push(`ControlNet ${i + 1} has no model selected.`); + reasons.push( + i18n.t('parameters.invoke.noModelForControlNet', { index: i + 1 }) + ); } if ( @@ -98,18 +103,22 @@ const selector = createSelector( (!controlNet.processedControlImage && controlNet.processorType !== 'none') ) { - reasons.push(`ControlNet ${i + 1} has no control image`); + reasons.push( + i18n.t('parameters.invoke.noControlImageForControlNet', { + index: i + 1, + }) + ); } }); } } - return { isReady: !reasons.length, isProcessing, reasons }; + return { isReady: !reasons.length, reasons }; }, defaultSelectorOptions ); -export const useIsReadyToInvoke = () => { - const { isReady, isProcessing, reasons } = useAppSelector(selector); - return { isReady, isProcessing, reasons }; +export const useIsReadyToEnqueue = () => { + const { isReady, reasons } = useAppSelector(selector); + return { isReady, reasons }; }; diff --git a/invokeai/frontend/web/src/common/util/generateSeeds.ts b/invokeai/frontend/web/src/common/util/generateSeeds.ts new file mode 100644 index 0000000000..ae74f80810 --- /dev/null +++ b/invokeai/frontend/web/src/common/util/generateSeeds.ts @@ -0,0 +1,28 @@ +import { NUMPY_RAND_MAX, NUMPY_RAND_MIN } from 'app/constants'; +import { random } from 'lodash-es'; + +export type GenerateSeedsArg = { + count: number; + start?: number; + min?: number; + max?: number; +}; + +export const generateSeeds = ({ + count, + start, + min = NUMPY_RAND_MIN, + max = NUMPY_RAND_MAX, +}: GenerateSeedsArg) => { + const first = start ?? random(min, max); + const seeds: number[] = []; + for (let i = first; i < first + count; i++) { + seeds.push(i % max); + } + return seeds; +}; + +export const generateOneSeed = ( + min: number = NUMPY_RAND_MIN, + max: number = NUMPY_RAND_MAX +) => random(min, max); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx index 4f9e47282d..e2f20f99a2 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvas.tsx @@ -153,6 +153,8 @@ const IAICanvas = () => { }); resizeObserver.observe(containerRef.current); + const { width, height } = containerRef.current.getBoundingClientRect(); + dispatch(canvasResized({ width, height })); return () => { resizeObserver.disconnect(); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx index b636ef9528..0febf7fb21 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasIntermediateImage.tsx @@ -1,23 +1,24 @@ import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { ImageConfig } from 'konva/lib/shapes/Image'; import { isEqual } from 'lodash-es'; - import { memo, useEffect, useState } from 'react'; import { Image as KonvaImage } from 'react-konva'; -import { canvasSelector } from '../store/canvasSelectors'; const selector = createSelector( - [systemSelector, canvasSelector], - (system, canvas) => { - const { progressImage, sessionId } = system; - const { sessionId: canvasSessionId, boundingBox } = - canvas.layerState.stagingArea; + [stateSelector], + ({ system, canvas }) => { + const { denoiseProgress } = system; + const { boundingBox } = canvas.layerState.stagingArea; + const { batchIds } = canvas; return { boundingBox, - progressImage: sessionId === canvasSessionId ? progressImage : undefined, + progressImage: + denoiseProgress && batchIds.includes(denoiseProgress.batch_id) + ? denoiseProgress.progress_image + : undefined, }; }, { diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx index cc15141d38..3e617f8767 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasStagingAreaToolbar.tsx @@ -11,8 +11,9 @@ import { setShouldShowStagingImage, setShouldShowStagingOutline, } from 'features/canvas/store/canvasSlice'; -import { isEqual } from 'lodash-es'; +import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; @@ -25,16 +26,15 @@ import { FaPlus, FaSave, } from 'react-icons/fa'; -import { stagingAreaImageSaved } from '../store/actions'; import { useGetImageDTOQuery } from 'services/api/endpoints/images'; -import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { stagingAreaImageSaved } from '../store/actions'; const selector = createSelector( [canvasSelector], (canvas) => { const { layerState: { - stagingArea: { images, selectedImageIndex, sessionId }, + stagingArea: { images, selectedImageIndex }, }, shouldShowStagingOutline, shouldShowStagingImage, @@ -47,14 +47,9 @@ const selector = createSelector( isOnLastImage: selectedImageIndex === images.length - 1, shouldShowStagingImage, shouldShowStagingOutline, - sessionId, }; }, - { - memoizeOptions: { - resultEqualityCheck: isEqual, - }, - } + defaultSelectorOptions ); const IAICanvasStagingAreaToolbar = () => { @@ -64,7 +59,6 @@ const IAICanvasStagingAreaToolbar = () => { isOnLastImage, currentStagingAreaImage, shouldShowStagingImage, - sessionId, } = useAppSelector(selector); const { t } = useTranslation(); @@ -121,8 +115,8 @@ const IAICanvasStagingAreaToolbar = () => { ); const handleAccept = useCallback( - () => dispatch(commitStagingAreaImage(sessionId)), - [dispatch, sessionId] + () => dispatch(commitStagingAreaImage()), + [dispatch] ); const { data: imageDTO } = useGetImageDTOQuery( diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx index 72f4a19479..18ded1c9c7 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasRedoButton.tsx @@ -1,24 +1,23 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { useHotkeys } from 'react-hotkeys-hook'; import { FaRedo } from 'react-icons/fa'; import { redo } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; +import { stateSelector } from 'app/store/store'; import { isEqual } from 'lodash-es'; import { useTranslation } from 'react-i18next'; const canvasRedoSelector = createSelector( - [canvasSelector, activeTabNameSelector, systemSelector], - (canvas, activeTabName, system) => { + [stateSelector, activeTabNameSelector], + ({ canvas }, activeTabName) => { const { futureLayerStates } = canvas; return { - canRedo: futureLayerStates.length > 0 && !system.isProcessing, + canRedo: futureLayerStates.length > 0, activeTabName, }; }, diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx index 10e01ccac4..6a7db0e5f2 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolChooserOptions.tsx @@ -1,14 +1,12 @@ import { ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIColorPicker from 'common/components/IAIColorPicker'; import IAIIconButton from 'common/components/IAIIconButton'; import IAIPopover from 'common/components/IAIPopover'; import IAISlider from 'common/components/IAISlider'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { addEraseRect, addFillRect, @@ -16,7 +14,6 @@ import { setBrushSize, setTool, } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { clamp, isEqual } from 'lodash-es'; import { memo } from 'react'; @@ -32,15 +29,13 @@ import { } from 'react-icons/fa'; export const selector = createSelector( - [canvasSelector, isStagingSelector, systemSelector], - (canvas, isStaging, system) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool, brushColor, brushSize } = canvas; return { tool, isStaging, - isProcessing, brushColor, brushSize, }; diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx index 49ce63d25f..617fedf0f0 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasToolbar.tsx @@ -1,5 +1,6 @@ import { Box, ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; @@ -11,10 +12,7 @@ import { canvasMerged, canvasSavedToGallery, } from 'features/canvas/store/actions'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { resetCanvas, resetCanvasView, @@ -27,9 +25,9 @@ import { LAYER_NAMES_DICT, } from 'features/canvas/store/canvasTypes'; import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { useCopyImageToClipboard } from 'features/ui/hooks/useCopyImageToClipboard'; import { isEqual } from 'lodash-es'; +import { memo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { @@ -47,17 +45,14 @@ import IAICanvasRedoButton from './IAICanvasRedoButton'; import IAICanvasSettingsButtonPopover from './IAICanvasSettingsButtonPopover'; import IAICanvasToolChooserOptions from './IAICanvasToolChooserOptions'; import IAICanvasUndoButton from './IAICanvasUndoButton'; -import { memo } from 'react'; export const selector = createSelector( - [systemSelector, canvasSelector, isStagingSelector], - (system, canvas, isStaging) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool, shouldCropToBoundingBoxOnSave, layer, isMaskEnabled } = canvas; return { - isProcessing, isStaging, isMaskEnabled, tool, @@ -74,8 +69,7 @@ export const selector = createSelector( const IAICanvasToolbar = () => { const dispatch = useAppDispatch(); - const { isProcessing, isStaging, isMaskEnabled, layer, tool } = - useAppSelector(selector); + const { isStaging, isMaskEnabled, layer, tool } = useAppSelector(selector); const canvasBaseLayer = getCanvasBaseLayer(); const { t } = useTranslation(); @@ -118,7 +112,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); useHotkeys( @@ -130,7 +124,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); useHotkeys( @@ -142,7 +136,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging && isClipboardAPIAvailable, preventDefault: true, }, - [canvasBaseLayer, isProcessing, isClipboardAPIAvailable] + [canvasBaseLayer, isClipboardAPIAvailable] ); useHotkeys( @@ -154,7 +148,7 @@ const IAICanvasToolbar = () => { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [canvasBaseLayer] ); const handleSelectMoveTool = () => dispatch(setTool('move')); diff --git a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx index 9feb2dfcb5..126470a9e8 100644 --- a/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx +++ b/invokeai/frontend/web/src/features/canvas/components/IAICanvasToolbar/IAICanvasUndoButton.tsx @@ -1,24 +1,23 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { useHotkeys } from 'react-hotkeys-hook'; import { FaUndo } from 'react-icons/fa'; import { undo } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { isEqual } from 'lodash-es'; import { useTranslation } from 'react-i18next'; +import { stateSelector } from 'app/store/store'; const canvasUndoSelector = createSelector( - [canvasSelector, activeTabNameSelector, systemSelector], - (canvas, activeTabName, system) => { + [stateSelector, activeTabNameSelector], + ({ canvas }, activeTabName) => { const { pastLayerStates } = canvas; return { - canUndo: pastLayerStates.length > 0 && !system.isProcessing, + canUndo: pastLayerStates.length > 0, activeTabName, }; }, diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts b/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts index dbcdde00d5..46bf7db3d0 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasSelectors.ts @@ -1,16 +1,12 @@ import { createSelector } from '@reduxjs/toolkit'; -import { RootState } from 'app/store/store'; -import { systemSelector } from 'features/system/store/systemSelectors'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { RootState, stateSelector } from 'app/store/store'; 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) + [stateSelector], + ({ canvas }) => canvas.layerState.stagingArea.images.length > 0 ); export const initialCanvasImageSelector = ( diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts b/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts index fb908fa601..b726e757f6 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasSlice.ts @@ -85,6 +85,7 @@ export const initialCanvasState: CanvasState = { stageDimensions: { width: 0, height: 0 }, stageScale: 1, tool: 'brush', + batchIds: [], }; export const canvasSlice = createSlice({ @@ -297,18 +298,22 @@ export const canvasSlice = createSlice({ setIsMoveStageKeyHeld: (state, action: PayloadAction) => { state.isMoveStageKeyHeld = action.payload; }, - canvasSessionIdChanged: (state, action: PayloadAction) => { - state.layerState.stagingArea.sessionId = action.payload; + canvasBatchIdAdded: (state, action: PayloadAction) => { + state.batchIds.push(action.payload); + }, + canvasBatchIdsReset: (state) => { + state.batchIds = []; }, stagingAreaInitialized: ( state, - action: PayloadAction<{ sessionId: string; boundingBox: IRect }> + action: PayloadAction<{ + boundingBox: IRect; + }> ) => { - const { sessionId, boundingBox } = action.payload; + const { boundingBox } = action.payload; state.layerState.stagingArea = { boundingBox, - sessionId, images: [], selectedImageIndex: -1, }; @@ -632,10 +637,7 @@ export const canvasSlice = createSlice({ 0 ); }, - commitStagingAreaImage: ( - state, - _action: PayloadAction - ) => { + commitStagingAreaImage: (state) => { if (!state.layerState.stagingArea.images.length) { return; } @@ -869,9 +871,10 @@ export const { setScaledBoundingBoxDimensions, setShouldRestrictStrokesToBox, stagingAreaInitialized, - canvasSessionIdChanged, setShouldAntialias, canvasResized, + canvasBatchIdAdded, + canvasBatchIdsReset, } = canvasSlice.actions; export default canvasSlice.reducer; diff --git a/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts b/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts index 1b4eca329d..875157d36a 100644 --- a/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts +++ b/invokeai/frontend/web/src/features/canvas/store/canvasTypes.ts @@ -89,7 +89,6 @@ export type CanvasLayerState = { stagingArea: { images: CanvasImage[]; selectedImageIndex: number; - sessionId?: string; boundingBox?: IRect; }; }; @@ -166,6 +165,7 @@ export interface CanvasState { stageScale: number; tool: CanvasTool; generationMode?: GenerationMode; + batchIds: string[]; } export type GenerationMode = 'txt2img' | 'img2img' | 'inpaint' | 'outpaint'; diff --git a/invokeai/frontend/web/src/features/canvas/util/calculateScale.ts b/invokeai/frontend/web/src/features/canvas/util/calculateScale.ts index 954c36869c..255cb2850b 100644 --- a/invokeai/frontend/web/src/features/canvas/util/calculateScale.ts +++ b/invokeai/frontend/web/src/features/canvas/util/calculateScale.ts @@ -8,7 +8,7 @@ const calculateScale = ( const scaleX = (containerWidth * padding) / contentWidth; const scaleY = (containerHeight * padding) / contentHeight; const scaleFit = Math.min(1, Math.min(scaleX, scaleY)); - return scaleFit; + return scaleFit ? scaleFit : 1; }; export default calculateScale; diff --git a/invokeai/frontend/web/src/features/canvas/util/getBaseLayerBlob.ts b/invokeai/frontend/web/src/features/canvas/util/getBaseLayerBlob.ts index 20ac482710..3667acc79b 100644 --- a/invokeai/frontend/web/src/features/canvas/util/getBaseLayerBlob.ts +++ b/invokeai/frontend/web/src/features/canvas/util/getBaseLayerBlob.ts @@ -9,7 +9,7 @@ export const getBaseLayerBlob = async (state: RootState) => { const canvasBaseLayer = getCanvasBaseLayer(); if (!canvasBaseLayer) { - return; + throw new Error('Problem getting base layer blob'); } const { diff --git a/invokeai/frontend/web/src/features/changeBoardModal/components/ChangeBoardModal.tsx b/invokeai/frontend/web/src/features/changeBoardModal/components/ChangeBoardModal.tsx index 2443fa6081..6bdf434d52 100644 --- a/invokeai/frontend/web/src/features/changeBoardModal/components/ChangeBoardModal.tsx +++ b/invokeai/frontend/web/src/features/changeBoardModal/components/ChangeBoardModal.tsx @@ -21,6 +21,7 @@ import { useRemoveImagesFromBoardMutation, } from 'services/api/endpoints/images'; import { changeBoardReset, isModalOpenChanged } from '../store/slice'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( [stateSelector], @@ -42,10 +43,11 @@ const ChangeBoardModal = () => { const { imagesToChange, isModalOpen } = useAppSelector(selector); const [addImagesToBoard] = useAddImagesToBoardMutation(); const [removeImagesFromBoard] = useRemoveImagesFromBoardMutation(); + const { t } = useTranslation(); const data = useMemo(() => { const data: { label: string; value: string }[] = [ - { label: 'Uncategorized', value: 'none' }, + { label: t('boards.uncategorized'), value: 'none' }, ]; (boards ?? []).forEach((board) => data.push({ @@ -55,7 +57,7 @@ const ChangeBoardModal = () => { ); return data; - }, [boards]); + }, [boards, t]); const handleClose = useCallback(() => { dispatch(changeBoardReset()); @@ -97,7 +99,7 @@ const ChangeBoardModal = () => { - Change Board + {t('boards.changeBoard')} @@ -107,7 +109,9 @@ const ChangeBoardModal = () => { {`${imagesToChange.length > 1 ? 's' : ''}`} to board: setSelectedBoard(v)} value={selectedBoard} @@ -117,10 +121,10 @@ const ChangeBoardModal = () => { - Cancel + {t('boards.cancel')} - Move + {t('boards.move')} diff --git a/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx b/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx index 1f70542494..3d00359d18 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ControlNet.tsx @@ -1,12 +1,12 @@ import { Box, Flex } from '@chakra-ui/react'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { memo, useCallback } from 'react'; +import { ChangeEvent, memo, useCallback } from 'react'; import { FaCopy, FaTrash } from 'react-icons/fa'; import { ControlNetConfig, controlNetDuplicated, controlNetRemoved, - controlNetToggled, + controlNetIsEnabledChanged, } from '../store/controlNetSlice'; import ParamControlNetModel from './parameters/ParamControlNetModel'; import ParamControlNetWeight from './parameters/ParamControlNetWeight'; @@ -18,6 +18,7 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIIconButton from 'common/components/IAIIconButton'; import IAISwitch from 'common/components/IAISwitch'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useTranslation } from 'react-i18next'; import { useToggle } from 'react-use'; import { v4 as uuidv4 } from 'uuid'; import ControlNetImagePreview from './ControlNetImagePreview'; @@ -37,6 +38,7 @@ const ControlNet = (props: ControlNetProps) => { const { controlNet } = props; const { controlNetId } = controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); const activeTabName = useAppSelector(activeTabNameSelector); @@ -75,9 +77,17 @@ const ControlNet = (props: ControlNetProps) => { ); }, [controlNetId, dispatch]); - const handleToggleIsEnabled = useCallback(() => { - dispatch(controlNetToggled({ controlNetId })); - }, [controlNetId, dispatch]); + const handleToggleIsEnabled = useCallback( + (e: ChangeEvent) => { + dispatch( + controlNetIsEnabledChanged({ + controlNetId, + isEnabled: e.target.checked, + }) + ); + }, + [controlNetId, dispatch] + ); return ( { > @@ -104,8 +114,8 @@ const ControlNet = (props: ControlNetProps) => { sx={{ w: 'full', minW: 0, - opacity: isEnabled ? 1 : 0.5, - pointerEvents: isEnabled ? 'auto' : 'none', + // opacity: isEnabled ? 1 : 0.5, + // pointerEvents: isEnabled ? 'auto' : 'none', transitionProperty: 'common', transitionDuration: '0.1s', }} @@ -117,23 +127,31 @@ const ControlNet = (props: ControlNetProps) => { )} } /> } /> { controlImage: controlImageName, processedControlImage: processedControlImageName, processorType, - isEnabled, controlNetId, } = controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); const { pendingControlImages, autoAddBoardId } = useAppSelector(selector); const activeTabName = useAppSelector(activeTabNameSelector); @@ -170,15 +171,13 @@ const ControlNetImagePreview = ({ isSmall, controlNet }: Props) => { h: isSmall ? 28 : 366, // magic no touch alignItems: 'center', justifyContent: 'center', - pointerEvents: isEnabled ? 'auto' : 'none', - opacity: isEnabled ? 1 : 0.5, }} > @@ -200,7 +199,6 @@ const ControlNetImagePreview = ({ isSmall, controlNet }: Props) => { droppableData={droppableData} imageDTO={processedControlImage} isUploadDisabled={true} - isDropDisabled={!isEnabled} /> @@ -208,18 +206,18 @@ const ControlNetImagePreview = ({ isSmall, controlNet }: Props) => { : undefined} - tooltip="Reset Control Image" + tooltip={t('controlnet.resetControlImage')} /> : undefined} - tooltip="Save Control Image" + tooltip={t('controlnet.saveControlImage')} styleOverrides={{ marginTop: 6 }} /> : undefined} - tooltip="Set Control Image Dimensions To W/H" + tooltip={t('controlnet.setControlImageDimensions')} styleOverrides={{ marginTop: 12 }} /> diff --git a/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx b/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx index 95a4f968e5..7a9d2f8b10 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ControlNetPreprocessButton.tsx @@ -3,7 +3,7 @@ import { memo, useCallback } from 'react'; import { ControlNetConfig } from '../store/controlNetSlice'; import { useAppDispatch } from 'app/store/storeHooks'; import { controlNetImageProcessed } from '../store/actions'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; type Props = { controlNet: ControlNetConfig; @@ -12,7 +12,7 @@ type Props = { const ControlNetPreprocessButton = (props: Props) => { const { controlNetId, controlImage } = props.controlNet; const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); + const isReady = useIsReadyToEnqueue(); const handleProcess = useCallback(() => { dispatch( diff --git a/invokeai/frontend/web/src/features/controlNet/components/ControlNetProcessorComponent.tsx b/invokeai/frontend/web/src/features/controlNet/components/ControlNetProcessorComponent.tsx index 681838ef27..29aaae4e70 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/ControlNetProcessorComponent.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/ControlNetProcessorComponent.tsx @@ -1,6 +1,7 @@ import { memo } from 'react'; import { ControlNetConfig } from '../store/controlNetSlice'; import CannyProcessor from './processors/CannyProcessor'; +import ColorMapProcessor from './processors/ColorMapProcessor'; import ContentShuffleProcessor from './processors/ContentShuffleProcessor'; import HedProcessor from './processors/HedProcessor'; import LineartAnimeProcessor from './processors/LineartAnimeProcessor'; @@ -30,6 +31,16 @@ const ControlNetProcessorComponent = (props: ControlNetProcessorProps) => { ); } + if (processorNode.type === 'color_map_image_processor') { + return ( + + ); + } + if (processorNode.type === 'hed_image_processor') { return ( { const { controlNetId, isEnabled, shouldAutoConfig } = props.controlNet; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleShouldAutoConfigChanged = useCallback(() => { dispatch(controlNetAutoConfigToggled({ controlNetId })); @@ -22,11 +22,11 @@ const ParamControlNetShouldAutoConfig = (props: Props) => { return ( ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/imports/ControlNetCanvasImageImports.tsx b/invokeai/frontend/web/src/features/controlNet/components/imports/ControlNetCanvasImageImports.tsx index d62af1d3d3..c89bf747fc 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/imports/ControlNetCanvasImageImports.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/imports/ControlNetCanvasImageImports.tsx @@ -8,6 +8,7 @@ import { import { ControlNetConfig } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; import { FaImage, FaMask } from 'react-icons/fa'; +import { useTranslation } from 'react-i18next'; type ControlNetCanvasImageImportsProps = { controlNet: ControlNetConfig; @@ -18,6 +19,7 @@ const ControlNetCanvasImageImports = ( ) => { const { controlNet } = props; const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleImportImageFromCanvas = useCallback(() => { dispatch(canvasImageToControlNet({ controlNet })); @@ -36,15 +38,15 @@ const ControlNetCanvasImageImports = ( } - tooltip="Import Image From Canvas" - aria-label="Import Image From Canvas" + tooltip={t('controlnet.importImageFromCanvas')} + aria-label={t('controlnet.importImageFromCanvas')} onClick={handleImportImageFromCanvas} /> } - tooltip="Import Mask From Canvas" - aria-label="Import Mask From Canvas" + tooltip={t('controlnet.importMaskFromCanvas')} + aria-label={t('controlnet.importMaskFromCanvas')} onClick={handleImportMaskFromCanvas} /> diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx new file mode 100644 index 0000000000..b0a1fcc731 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/IPAdapterPanel.tsx @@ -0,0 +1,35 @@ +import { Flex } from '@chakra-ui/react'; +import { memo } from 'react'; +import ParamIPAdapterBeginEnd from './ParamIPAdapterBeginEnd'; +import ParamIPAdapterFeatureToggle from './ParamIPAdapterFeatureToggle'; +import ParamIPAdapterImage from './ParamIPAdapterImage'; +import ParamIPAdapterModelSelect from './ParamIPAdapterModelSelect'; +import ParamIPAdapterWeight from './ParamIPAdapterWeight'; + +const IPAdapterPanel = () => { + return ( + + + + + + + + ); +}; + +export default memo(IPAdapterPanel); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx new file mode 100644 index 0000000000..5bef23b66c --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterBeginEnd.tsx @@ -0,0 +1,100 @@ +import { + FormControl, + FormLabel, + HStack, + RangeSlider, + RangeSliderFilledTrack, + RangeSliderMark, + RangeSliderThumb, + RangeSliderTrack, + Tooltip, +} from '@chakra-ui/react'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { + ipAdapterBeginStepPctChanged, + ipAdapterEndStepPctChanged, +} from 'features/controlNet/store/controlNetSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const formatPct = (v: number) => `${Math.round(v * 100)}%`; + +const ParamIPAdapterBeginEnd = () => { + const isEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + const beginStepPct = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.beginStepPct + ); + const endStepPct = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.endStepPct + ); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const handleStepPctChanged = useCallback( + (v: number[]) => { + dispatch(ipAdapterBeginStepPctChanged(v[0] as number)); + dispatch(ipAdapterEndStepPctChanged(v[1] as number)); + }, + [dispatch] + ); + + return ( + + {t('controlnet.beginEndStepPercent')} + + + + + + + + + + + + + 0% + + + 50% + + + 100% + + + + + ); +}; + +export default memo(ParamIPAdapterBeginEnd); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx new file mode 100644 index 0000000000..7fae538cf0 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterFeatureToggle.tsx @@ -0,0 +1,44 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAISwitch from 'common/components/IAISwitch'; +import { isIPAdapterEnabledChanged } from 'features/controlNet/store/controlNetSlice'; +import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const selector = createSelector( + stateSelector, + (state) => { + const { isIPAdapterEnabled } = state.controlNet; + + return { isIPAdapterEnabled }; + }, + defaultSelectorOptions +); + +const ParamIPAdapterFeatureToggle = () => { + const { isIPAdapterEnabled } = useAppSelector(selector); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const handleChange = useCallback( + (e: ChangeEvent) => { + dispatch(isIPAdapterEnabledChanged(e.target.checked)); + }, + [dispatch] + ); + + return ( + + ); +}; + +export default memo(ParamIPAdapterFeatureToggle); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx new file mode 100644 index 0000000000..21229a81a5 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterImage.tsx @@ -0,0 +1,95 @@ +import { Flex } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { skipToken } from '@reduxjs/toolkit/dist/query'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIDndImage from 'common/components/IAIDndImage'; +import IAIDndImageIcon from 'common/components/IAIDndImageIcon'; +import { IAINoContentFallback } from 'common/components/IAIImageFallback'; +import { ipAdapterImageChanged } from 'features/controlNet/store/controlNetSlice'; +import { + TypesafeDraggableData, + TypesafeDroppableData, +} from 'features/dnd/types'; +import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaUndo } from 'react-icons/fa'; +import { useGetImageDTOQuery } from 'services/api/endpoints/images'; +import { PostUploadAction } from 'services/api/types'; + +const selector = createSelector( + stateSelector, + ({ controlNet }) => { + const { ipAdapterInfo } = controlNet; + return { ipAdapterInfo }; + }, + defaultSelectorOptions +); + +const ParamIPAdapterImage = () => { + const { ipAdapterInfo } = useAppSelector(selector); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const { currentData: imageDTO } = useGetImageDTOQuery( + ipAdapterInfo.adapterImage?.image_name ?? skipToken + ); + + const draggableData = useMemo(() => { + if (imageDTO) { + return { + id: 'ip-adapter-image', + payloadType: 'IMAGE_DTO', + payload: { imageDTO }, + }; + } + }, [imageDTO]); + + const droppableData = useMemo( + () => ({ + id: 'ip-adapter-image', + actionType: 'SET_IP_ADAPTER_IMAGE', + }), + [] + ); + + const postUploadAction = useMemo( + () => ({ + type: 'SET_IP_ADAPTER_IMAGE', + }), + [] + ); + + return ( + + + } + /> + + dispatch(ipAdapterImageChanged(null))} + icon={ipAdapterInfo.adapterImage ? : undefined} + tooltip={t('controlnet.resetIPAdapterImage')} + /> + + ); +}; + +export default memo(ParamIPAdapterImage); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx new file mode 100644 index 0000000000..8fb738d025 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterModelSelect.tsx @@ -0,0 +1,101 @@ +import { SelectItem } from '@mantine/core'; +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { ipAdapterModelChanged } from 'features/controlNet/store/controlNetSlice'; +import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; +import { modelIdToIPAdapterModelParam } from 'features/parameters/util/modelIdToIPAdapterModelParams'; +import { forEach } from 'lodash-es'; +import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetIPAdapterModelsQuery } from 'services/api/endpoints/models'; + +const ParamIPAdapterModelSelect = () => { + const isEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + const ipAdapterModel = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.model + ); + const model = useAppSelector((state: RootState) => state.generation.model); + + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const { data: ipAdapterModels } = useGetIPAdapterModelsQuery(); + + // grab the full model entity from the RTK Query cache + const selectedModel = useMemo( + () => + ipAdapterModels?.entities[ + `${ipAdapterModel?.base_model}/ip_adapter/${ipAdapterModel?.model_name}` + ] ?? null, + [ + ipAdapterModel?.base_model, + ipAdapterModel?.model_name, + ipAdapterModels?.entities, + ] + ); + + const data = useMemo(() => { + if (!ipAdapterModels) { + return []; + } + + const data: SelectItem[] = []; + + forEach(ipAdapterModels.entities, (ipAdapterModel, id) => { + if (!ipAdapterModel) { + return; + } + + const disabled = model?.base_model !== ipAdapterModel.base_model; + + data.push({ + value: id, + label: ipAdapterModel.model_name, + group: MODEL_TYPE_MAP[ipAdapterModel.base_model], + disabled, + tooltip: disabled + ? `Incompatible base model: ${ipAdapterModel.base_model}` + : undefined, + }); + }); + + return data.sort((a, b) => (a.disabled && !b.disabled ? 1 : -1)); + }, [ipAdapterModels, model?.base_model]); + + const handleValueChanged = useCallback( + (v: string | null) => { + if (!v) { + return; + } + + const newIPAdapterModel = modelIdToIPAdapterModelParam(v); + + if (!newIPAdapterModel) { + return; + } + + dispatch(ipAdapterModelChanged(newIPAdapterModel)); + }, + [dispatch] + ); + + return ( + + ); +}; + +export default memo(ParamIPAdapterModelSelect); diff --git a/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx new file mode 100644 index 0000000000..df5a9a36a3 --- /dev/null +++ b/invokeai/frontend/web/src/features/controlNet/components/ipAdapter/ParamIPAdapterWeight.tsx @@ -0,0 +1,46 @@ +import { RootState } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAISlider from 'common/components/IAISlider'; +import { ipAdapterWeightChanged } from 'features/controlNet/store/controlNetSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; + +const ParamIPAdapterWeight = () => { + const isIpAdapterEnabled = useAppSelector( + (state: RootState) => state.controlNet.isIPAdapterEnabled + ); + const ipAdapterWeight = useAppSelector( + (state: RootState) => state.controlNet.ipAdapterInfo.weight + ); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const handleWeightChanged = useCallback( + (weight: number) => { + dispatch(ipAdapterWeightChanged(weight)); + }, + [dispatch] + ); + + const handleWeightReset = useCallback(() => { + dispatch(ipAdapterWeightChanged(1)); + }, [dispatch]); + + return ( + + ); +}; + +export default memo(ParamIPAdapterWeight); diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx index 1219239e5d..4a303a1801 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetBeginEnd.tsx @@ -10,12 +10,14 @@ import { Tooltip, } from '@chakra-ui/react'; import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import { ControlNetConfig, controlNetBeginStepPctChanged, controlNetEndStepPctChanged, } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; type Props = { controlNet: ControlNetConfig; @@ -27,6 +29,7 @@ const ParamControlNetBeginEnd = (props: Props) => { const { beginStepPct, endStepPct, isEnabled, controlNetId } = props.controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleStepPctChanged = useCallback( (v: number[]) => { @@ -47,58 +50,60 @@ const ParamControlNetBeginEnd = (props: Props) => { ); return ( - - Begin / End Step Percentage - - - - - - - - - - - - + + {t('controlnet.beginEndStepPercent')} + + - 0% - - - 50% - - - 100% - - - - + + + + + + + + + + + 0% + + + 50% + + + 100% + +
+ + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx index 761edde42b..19da346fc3 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetControlMode.tsx @@ -1,4 +1,5 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { ControlModes, @@ -6,23 +7,25 @@ import { controlNetControlModeChanged, } from 'features/controlNet/store/controlNetSlice'; import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; type ParamControlNetControlModeProps = { controlNet: ControlNetConfig; }; -const CONTROL_MODE_DATA = [ - { label: 'Balanced', value: 'balanced' }, - { label: 'Prompt', value: 'more_prompt' }, - { label: 'Control', value: 'more_control' }, - { label: 'Mega Control', value: 'unbalanced' }, -]; - export default function ParamControlNetControlMode( props: ParamControlNetControlModeProps ) { const { controlMode, isEnabled, controlNetId } = props.controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const CONTROL_MODE_DATA = [ + { label: t('controlnet.balanced'), value: 'balanced' }, + { label: t('controlnet.prompt'), value: 'more_prompt' }, + { label: t('controlnet.control'), value: 'more_control' }, + { label: t('controlnet.megaControl'), value: 'unbalanced' }, + ]; const handleControlModeChange = useCallback( (controlMode: ControlModes) => { @@ -32,12 +35,14 @@ export default function ParamControlNetControlMode( ); return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx index 97a54dc7d1..d13c29f500 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetFeatureToggle.tsx @@ -1,7 +1,9 @@ +import { Box } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISwitch from 'common/components/IAISwitch'; import { isControlNetEnabledToggled } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; @@ -25,14 +27,15 @@ const ParamControlNetFeatureToggle = () => { }, [dispatch]); return ( - + + + + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx index 5d7db854d8..5ed82ac501 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetModel.tsx @@ -11,9 +11,9 @@ import { } from 'features/controlNet/store/controlNetSlice'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; import { modelIdToControlNetModelParam } from 'features/parameters/util/modelIdToControlNetModelParam'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { forEach } from 'lodash-es'; import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; import { useGetControlNetModelsQuery } from 'services/api/endpoints/models'; type ParamControlNetModelProps = { @@ -32,9 +32,9 @@ const selector = createSelector( const ParamControlNetModel = (props: ParamControlNetModelProps) => { const { controlNetId, model: controlNetModel, isEnabled } = props.controlNet; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); const { mainModel } = useAppSelector(selector); + const { t } = useTranslation(); const { data: controlNetModels } = useGetControlNetModelsQuery(); @@ -58,13 +58,13 @@ const ParamControlNetModel = (props: ParamControlNetModelProps) => { group: MODEL_TYPE_MAP[model.base_model], disabled, tooltip: disabled - ? `Incompatible base model: ${model.base_model}` + ? `${t('controlnet.incompatibleBaseModel')} ${model.base_model}` : undefined, }); }); return data; - }, [controlNetModels, mainModel?.base_model]); + }, [controlNetModels, mainModel?.base_model, t]); // grab the full model entity from the RTK Query cache const selectedModel = useMemo( @@ -105,10 +105,10 @@ const ParamControlNetModel = (props: ParamControlNetModelProps) => { error={ !selectedModel || mainModel?.base_model !== selectedModel.base_model } - placeholder="Select a model" + placeholder={t('controlnet.selectModel')} value={selectedModel?.id ?? null} onChange={handleModelChanged} - disabled={isBusy || !isEnabled} + disabled={!isEnabled} tooltip={selectedModel?.description} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx index 190b1bc012..9ab2422fa8 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetProcessorSelect.tsx @@ -6,7 +6,6 @@ import IAIMantineSearchableSelect, { IAISelectDataType, } from 'common/components/IAIMantineSearchableSelect'; import { configSelector } from 'features/system/store/configSelectors'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { map } from 'lodash-es'; import { memo, useCallback } from 'react'; import { CONTROLNET_PROCESSORS } from '../../store/constants'; @@ -15,6 +14,7 @@ import { controlNetProcessorTypeChanged, } from '../../store/controlNetSlice'; import { ControlNetProcessorType } from '../../store/types'; +import { useTranslation } from 'react-i18next'; type ParamControlNetProcessorSelectProps = { controlNet: ControlNetConfig; @@ -55,8 +55,8 @@ const ParamControlNetProcessorSelect = ( ) => { const dispatch = useAppDispatch(); const { controlNetId, isEnabled, processorNode } = props.controlNet; - const isBusy = useAppSelector(selectIsBusy); const controlNetProcessors = useAppSelector(selector); + const { t } = useTranslation(); const handleProcessorTypeChanged = useCallback( (v: string | null) => { @@ -72,11 +72,11 @@ const ParamControlNetProcessorSelect = ( return ( ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx index 72f15fb178..e9556d3364 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetResizeMode.tsx @@ -1,4 +1,5 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { ControlNetConfig, @@ -6,22 +7,24 @@ import { controlNetResizeModeChanged, } from 'features/controlNet/store/controlNetSlice'; import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; type ParamControlNetResizeModeProps = { controlNet: ControlNetConfig; }; -const RESIZE_MODE_DATA = [ - { label: 'Resize', value: 'just_resize' }, - { label: 'Crop', value: 'crop_resize' }, - { label: 'Fill', value: 'fill_resize' }, -]; - export default function ParamControlNetResizeMode( props: ParamControlNetResizeModeProps ) { const { resizeMode, isEnabled, controlNetId } = props.controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); + + const RESIZE_MODE_DATA = [ + { label: t('controlnet.resize'), value: 'just_resize' }, + { label: t('controlnet.crop'), value: 'crop_resize' }, + { label: t('controlnet.fill'), value: 'fill_resize' }, + ]; const handleResizeModeChange = useCallback( (resizeMode: ResizeModes) => { @@ -31,12 +34,14 @@ export default function ParamControlNetResizeMode( ); return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx index 6725c47bb8..97752988e3 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/parameters/ParamControlNetWeight.tsx @@ -1,10 +1,12 @@ import { useAppDispatch } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { ControlNetConfig, controlNetWeightChanged, } from 'features/controlNet/store/controlNetSlice'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; type ParamControlNetWeightProps = { controlNet: ControlNetConfig; @@ -13,6 +15,7 @@ type ParamControlNetWeightProps = { const ParamControlNetWeight = (props: ParamControlNetWeightProps) => { const { weight, isEnabled, controlNetId } = props.controlNet; const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleWeightChanged = useCallback( (weight: number) => { dispatch(controlNetWeightChanged({ controlNetId, weight })); @@ -21,17 +24,19 @@ const ParamControlNetWeight = (props: ParamControlNetWeightProps) => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx index e226e2a55c..f4813c0957 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/CannyProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredCannyImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -19,8 +18,8 @@ type CannyProcessorProps = { const CannyProcessor = (props: CannyProcessorProps) => { const { controlNetId, processorNode, isEnabled } = props; const { low_threshold, high_threshold } = processorNode; - const isBusy = useAppSelector(selectIsBusy); const processorChanged = useProcessorNodeChanged(); + const { t } = useTranslation(); const handleLowThresholdChanged = useCallback( (v: number) => { @@ -51,8 +50,8 @@ const CannyProcessor = (props: CannyProcessorProps) => { return ( { withSliderMarks /> { + const { controlNetId, processorNode, isEnabled } = props; + const { color_map_tile_size } = processorNode; + const processorChanged = useProcessorNodeChanged(); + const { t } = useTranslation(); + + const handleColorMapTileSizeChanged = useCallback( + (v: number) => { + processorChanged(controlNetId, { color_map_tile_size: v }); + }, + [controlNetId, processorChanged] + ); + + const handleColorMapTileSizeReset = useCallback(() => { + processorChanged(controlNetId, { + color_map_tile_size: DEFAULTS.color_map_tile_size, + }); + }, [controlNetId, processorChanged]); + + return ( + + + + ); +}; + +export default memo(ColorMapProcessor); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/ContentShuffleProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/ContentShuffleProcessor.tsx index d66f0a0aa8..efc943e800 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/ContentShuffleProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/ContentShuffleProcessor.tsx @@ -2,10 +2,9 @@ import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredContentShuffleImageProcessorInvocation } from 'features/controlNet/store/types'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; -import { useAppSelector } from 'app/store/storeHooks'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; const DEFAULTS = CONTROLNET_PROCESSORS.content_shuffle_image_processor .default as RequiredContentShuffleImageProcessorInvocation; @@ -20,7 +19,7 @@ const ContentShuffleProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, w, h, f } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -90,7 +89,7 @@ const ContentShuffleProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx index 04d6027ff9..ab8de7b2e0 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/HedProcessor.tsx @@ -1,10 +1,9 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredHedImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -23,8 +22,8 @@ const HedPreprocessor = (props: HedProcessorProps) => { processorNode: { detect_resolution, image_resolution, scribble }, isEnabled, } = props; - const isBusy = useAppSelector(selectIsBusy); const processorChanged = useProcessorNodeChanged(); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -62,7 +61,7 @@ const HedPreprocessor = (props: HedProcessorProps) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx index 90177e7ceb..f7970fda75 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartAnimeProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredLineartAnimeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -20,7 +19,7 @@ const LineartAnimeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -51,7 +50,7 @@ const LineartAnimeProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx index 7f661b1cb9..4879857a64 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/LineartProcessor.tsx @@ -1,10 +1,9 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredLineartImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -21,7 +20,7 @@ const LineartProcessor = (props: LineartProcessorProps) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, coarse } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -59,7 +58,7 @@ const LineartProcessor = (props: LineartProcessorProps) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx index b8b24ce877..d1b92a3b4f 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MediapipeFaceProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMediapipeFaceProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -20,7 +19,7 @@ const MediapipeFaceProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { max_faces, min_confidence } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleMaxFacesChanged = useCallback( (v: number) => { @@ -47,7 +46,7 @@ const MediapipeFaceProcessor = (props: Props) => { return ( { max={20} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx index 54b174b5df..893e459875 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MidasDepthProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMidasDepthImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -20,7 +19,7 @@ const MidasDepthProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { a_mult, bg_th } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleAMultChanged = useCallback( (v: number) => { @@ -47,7 +46,7 @@ const MidasDepthProcessor = (props: Props) => { return ( { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx index 9a86cd2cb5..c97c803021 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/MlsdImageProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredMlsdImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -20,7 +19,7 @@ const MlsdImageProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, thr_d, thr_v } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -73,7 +72,7 @@ const MlsdImageProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { step={0.01} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx index a0a8ad72cf..a0c15374a8 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/NormalBaeProcessor.tsx @@ -1,9 +1,8 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredNormalbaeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -20,7 +19,7 @@ const NormalBaeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -51,7 +50,7 @@ const NormalBaeProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx index 8335a5f75d..904078ff6d 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/OpenposeProcessor.tsx @@ -1,10 +1,9 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredOpenposeImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -21,7 +20,7 @@ const OpenposeProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, hand_and_face } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -59,7 +58,7 @@ const OpenposeProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx index 4eab83136d..50065d66d0 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/PidiProcessor.tsx @@ -1,10 +1,9 @@ -import { useAppSelector } from 'app/store/storeHooks'; import IAISlider from 'common/components/IAISlider'; import IAISwitch from 'common/components/IAISwitch'; import { CONTROLNET_PROCESSORS } from 'features/controlNet/store/constants'; import { RequiredPidiImageProcessorInvocation } from 'features/controlNet/store/types'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { useProcessorNodeChanged } from '../hooks/useProcessorNodeChanged'; import ProcessorWrapper from './common/ProcessorWrapper'; @@ -21,7 +20,7 @@ const PidiProcessor = (props: Props) => { const { controlNetId, processorNode, isEnabled } = props; const { image_resolution, detect_resolution, scribble, safe } = processorNode; const processorChanged = useProcessorNodeChanged(); - const isBusy = useAppSelector(selectIsBusy); + const { t } = useTranslation(); const handleDetectResolutionChanged = useCallback( (v: number) => { @@ -66,7 +65,7 @@ const PidiProcessor = (props: Props) => { return ( { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> { max={4096} withInput withSliderMarks - isDisabled={isBusy || !isEnabled} + isDisabled={!isEnabled} /> ); diff --git a/invokeai/frontend/web/src/features/controlNet/components/processors/common/ProcessorWrapper.tsx b/invokeai/frontend/web/src/features/controlNet/components/processors/common/ProcessorWrapper.tsx index 5dc0a909d5..c3e5b2258e 100644 --- a/invokeai/frontend/web/src/features/controlNet/components/processors/common/ProcessorWrapper.tsx +++ b/invokeai/frontend/web/src/features/controlNet/components/processors/common/ProcessorWrapper.tsx @@ -4,5 +4,9 @@ import { PropsWithChildren } from 'react'; type Props = PropsWithChildren; export default function ProcessorWrapper(props: Props) { - return {props.children}; + return ( + + {props.children} + + ); } diff --git a/invokeai/frontend/web/src/features/controlNet/store/constants.ts b/invokeai/frontend/web/src/features/controlNet/store/constants.ts index f8f9c38619..1c6437a87d 100644 --- a/invokeai/frontend/web/src/features/controlNet/store/constants.ts +++ b/invokeai/frontend/web/src/features/controlNet/store/constants.ts @@ -1,3 +1,4 @@ +import i18n from 'i18next'; import { ControlNetProcessorType, RequiredControlNetProcessorNode, @@ -12,7 +13,6 @@ type ControlNetProcessorsDict = Record< default: RequiredControlNetProcessorNode | { type: 'none' }; } >; - /** * A dict of ControlNet processors, including: * - type @@ -25,16 +25,24 @@ type ControlNetProcessorsDict = Record< export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { none: { type: 'none', - label: 'none', - description: '', + get label() { + return i18n.t('controlnet.none'); + }, + get description() { + return i18n.t('controlnet.noneDescription'); + }, default: { type: 'none', }, }, canny_image_processor: { type: 'canny_image_processor', - label: 'Canny', - description: '', + get label() { + return i18n.t('controlnet.canny'); + }, + get description() { + return i18n.t('controlnet.cannyDescription'); + }, default: { id: 'canny_image_processor', type: 'canny_image_processor', @@ -42,10 +50,28 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { high_threshold: 200, }, }, + color_map_image_processor: { + type: 'color_map_image_processor', + get label() { + return i18n.t('controlnet.colorMap'); + }, + get description() { + return i18n.t('controlnet.colorMapDescription'); + }, + default: { + id: 'color_map_image_processor', + type: 'color_map_image_processor', + color_map_tile_size: 64, + }, + }, content_shuffle_image_processor: { type: 'content_shuffle_image_processor', - label: 'Content Shuffle', - description: '', + get label() { + return i18n.t('controlnet.contentShuffle'); + }, + get description() { + return i18n.t('controlnet.contentShuffleDescription'); + }, default: { id: 'content_shuffle_image_processor', type: 'content_shuffle_image_processor', @@ -58,8 +84,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, hed_image_processor: { type: 'hed_image_processor', - label: 'HED', - description: '', + get label() { + return i18n.t('controlnet.hed'); + }, + get description() { + return i18n.t('controlnet.hedDescription'); + }, default: { id: 'hed_image_processor', type: 'hed_image_processor', @@ -70,8 +100,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, lineart_anime_image_processor: { type: 'lineart_anime_image_processor', - label: 'Lineart Anime', - description: '', + get label() { + return i18n.t('controlnet.lineartAnime'); + }, + get description() { + return i18n.t('controlnet.lineartAnimeDescription'); + }, default: { id: 'lineart_anime_image_processor', type: 'lineart_anime_image_processor', @@ -81,8 +115,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, lineart_image_processor: { type: 'lineart_image_processor', - label: 'Lineart', - description: '', + get label() { + return i18n.t('controlnet.lineart'); + }, + get description() { + return i18n.t('controlnet.lineartDescription'); + }, default: { id: 'lineart_image_processor', type: 'lineart_image_processor', @@ -93,8 +131,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, mediapipe_face_processor: { type: 'mediapipe_face_processor', - label: 'Mediapipe Face', - description: '', + get label() { + return i18n.t('controlnet.mediapipeFace'); + }, + get description() { + return i18n.t('controlnet.mediapipeFaceDescription'); + }, default: { id: 'mediapipe_face_processor', type: 'mediapipe_face_processor', @@ -104,8 +146,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, midas_depth_image_processor: { type: 'midas_depth_image_processor', - label: 'Depth (Midas)', - description: '', + get label() { + return i18n.t('controlnet.depthMidas'); + }, + get description() { + return i18n.t('controlnet.depthMidasDescription'); + }, default: { id: 'midas_depth_image_processor', type: 'midas_depth_image_processor', @@ -115,8 +161,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, mlsd_image_processor: { type: 'mlsd_image_processor', - label: 'M-LSD', - description: '', + get label() { + return i18n.t('controlnet.mlsd'); + }, + get description() { + return i18n.t('controlnet.mlsdDescription'); + }, default: { id: 'mlsd_image_processor', type: 'mlsd_image_processor', @@ -128,8 +178,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, normalbae_image_processor: { type: 'normalbae_image_processor', - label: 'Normal BAE', - description: '', + get label() { + return i18n.t('controlnet.normalBae'); + }, + get description() { + return i18n.t('controlnet.normalBaeDescription'); + }, default: { id: 'normalbae_image_processor', type: 'normalbae_image_processor', @@ -139,8 +193,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, openpose_image_processor: { type: 'openpose_image_processor', - label: 'Openpose', - description: '', + get label() { + return i18n.t('controlnet.openPose'); + }, + get description() { + return i18n.t('controlnet.openPoseDescription'); + }, default: { id: 'openpose_image_processor', type: 'openpose_image_processor', @@ -151,8 +209,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, pidi_image_processor: { type: 'pidi_image_processor', - label: 'PIDI', - description: '', + get label() { + return i18n.t('controlnet.pidi'); + }, + get description() { + return i18n.t('controlnet.pidiDescription'); + }, default: { id: 'pidi_image_processor', type: 'pidi_image_processor', @@ -164,8 +226,12 @@ export const CONTROLNET_PROCESSORS: ControlNetProcessorsDict = { }, zoe_depth_image_processor: { type: 'zoe_depth_image_processor', - label: 'Depth (Zoe)', - description: '', + get label() { + return i18n.t('controlnet.depthZoe'); + }, + get description() { + return i18n.t('controlnet.depthZoeDescription'); + }, default: { id: 'zoe_depth_image_processor', type: 'zoe_depth_image_processor', @@ -186,4 +252,6 @@ export const CONTROLNET_MODEL_DEFAULT_PROCESSORS: { shuffle: 'content_shuffle_image_processor', openpose: 'openpose_image_processor', mediapipe: 'mediapipe_face_processor', + pidi: 'pidi_image_processor', + zoe: 'zoe_depth_image_processor', }; diff --git a/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts b/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts index 8f391521d6..70c459f0a4 100644 --- a/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts +++ b/invokeai/frontend/web/src/features/controlNet/store/controlNetSlice.ts @@ -1,9 +1,13 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { ControlNetModelParam } from 'features/parameters/types/parameterSchemas'; +import { + ControlNetModelParam, + IPAdapterModelParam, +} from 'features/parameters/types/parameterSchemas'; import { cloneDeep, forEach } from 'lodash-es'; import { imagesApi } from 'services/api/endpoints/images'; import { components } from 'services/api/schema'; import { isAnySessionRejected } from 'services/api/thunks/session'; +import { ImageDTO } from 'services/api/types'; import { appSocketInvocationError } from 'services/events/actions'; import { controlNetImageProcessed } from './actions'; import { @@ -56,16 +60,36 @@ export type ControlNetConfig = { shouldAutoConfig: boolean; }; +export type IPAdapterConfig = { + adapterImage: ImageDTO | null; + model: IPAdapterModelParam | null; + weight: number; + beginStepPct: number; + endStepPct: number; +}; + export type ControlNetState = { controlNets: Record; isEnabled: boolean; pendingControlImages: string[]; + isIPAdapterEnabled: boolean; + ipAdapterInfo: IPAdapterConfig; +}; + +export const initialIPAdapterState: IPAdapterConfig = { + adapterImage: null, + model: null, + weight: 1, + beginStepPct: 0, + endStepPct: 1, }; export const initialControlNetState: ControlNetState = { controlNets: {}, isEnabled: false, pendingControlImages: [], + isIPAdapterEnabled: false, + ipAdapterInfo: { ...initialIPAdapterState }, }; export const controlNetSlice = createSlice({ @@ -122,16 +146,16 @@ export const controlNetSlice = createSlice({ const { controlNetId } = action.payload; delete state.controlNets[controlNetId]; }, - controlNetToggled: ( + controlNetIsEnabledChanged: ( state, - action: PayloadAction<{ controlNetId: string }> + action: PayloadAction<{ controlNetId: string; isEnabled: boolean }> ) => { - const { controlNetId } = action.payload; + const { controlNetId, isEnabled } = action.payload; const cn = state.controlNets[controlNetId]; if (!cn) { return; } - cn.isEnabled = !cn.isEnabled; + cn.isEnabled = isEnabled; }, controlNetImageChanged: ( state, @@ -353,6 +377,31 @@ export const controlNetSlice = createSlice({ controlNetReset: () => { return { ...initialControlNetState }; }, + isIPAdapterEnabledChanged: (state, action: PayloadAction) => { + state.isIPAdapterEnabled = action.payload; + }, + ipAdapterImageChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.adapterImage = action.payload; + }, + ipAdapterWeightChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.weight = action.payload; + }, + ipAdapterModelChanged: ( + state, + action: PayloadAction + ) => { + state.ipAdapterInfo.model = action.payload; + }, + ipAdapterBeginStepPctChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.beginStepPct = action.payload; + }, + ipAdapterEndStepPctChanged: (state, action: PayloadAction) => { + state.ipAdapterInfo.endStepPct = action.payload; + }, + ipAdapterStateReset: (state) => { + state.isIPAdapterEnabled = false; + state.ipAdapterInfo = { ...initialIPAdapterState }; + }, }, extraReducers: (builder) => { builder.addCase(controlNetImageProcessed, (state, action) => { @@ -401,7 +450,7 @@ export const { controlNetRemoved, controlNetImageChanged, controlNetProcessedImageChanged, - controlNetToggled, + controlNetIsEnabledChanged, controlNetModelChanged, controlNetWeightChanged, controlNetBeginStepPctChanged, @@ -412,6 +461,13 @@ export const { controlNetProcessorTypeChanged, controlNetReset, controlNetAutoConfigToggled, + isIPAdapterEnabledChanged, + ipAdapterImageChanged, + ipAdapterWeightChanged, + ipAdapterModelChanged, + ipAdapterBeginStepPctChanged, + ipAdapterEndStepPctChanged, + ipAdapterStateReset, } = controlNetSlice.actions; export default controlNetSlice.reducer; diff --git a/invokeai/frontend/web/src/features/controlNet/store/types.ts b/invokeai/frontend/web/src/features/controlNet/store/types.ts index 80edb41699..871ca91377 100644 --- a/invokeai/frontend/web/src/features/controlNet/store/types.ts +++ b/invokeai/frontend/web/src/features/controlNet/store/types.ts @@ -1,6 +1,7 @@ import { isObject } from 'lodash-es'; import { CannyImageProcessorInvocation, + ColorMapImageProcessorInvocation, ContentShuffleImageProcessorInvocation, HedImageProcessorInvocation, LineartAnimeImageProcessorInvocation, @@ -20,6 +21,7 @@ import { O } from 'ts-toolbelt'; */ export type ControlNetProcessorNode = | CannyImageProcessorInvocation + | ColorMapImageProcessorInvocation | ContentShuffleImageProcessorInvocation | HedImageProcessorInvocation | LineartAnimeImageProcessorInvocation @@ -47,6 +49,14 @@ export type RequiredCannyImageProcessorInvocation = O.Required< 'type' | 'low_threshold' | 'high_threshold' >; +/** + * The Color Map processor node, with parameters flagged as required + */ +export type RequiredColorMapImageProcessorInvocation = O.Required< + ColorMapImageProcessorInvocation, + 'type' | 'color_map_tile_size' +>; + /** * The ContentShuffle processor node, with parameters flagged as required */ @@ -140,6 +150,7 @@ export type RequiredZoeDepthImageProcessorInvocation = O.Required< */ export type RequiredControlNetProcessorNode = O.Required< | RequiredCannyImageProcessorInvocation + | RequiredColorMapImageProcessorInvocation | RequiredContentShuffleImageProcessorInvocation | RequiredHedImageProcessorInvocation | RequiredLineartAnimeImageProcessorInvocation @@ -166,6 +177,22 @@ export const isCannyImageProcessorInvocation = ( return false; }; +/** + * Type guard for ColorMapImageProcessorInvocation + */ +export const isColorMapImageProcessorInvocation = ( + obj: unknown +): obj is ColorMapImageProcessorInvocation => { + if ( + isObject(obj) && + 'type' in obj && + obj.type === 'color_map_image_processor' + ) { + return true; + } + return false; +}; + /** * Type guard for ContentShuffleImageProcessorInvocation */ diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx index dde6d1a517..5a98581403 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageButton.tsx @@ -1,20 +1,9 @@ import { IconButtonProps } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { useTranslation } from 'react-i18next'; import { FaTrash } from 'react-icons/fa'; -const deleteImageButtonsSelector = createSelector( - [stateSelector], - ({ system }) => { - const { isProcessing, isConnected } = system; - - return isConnected && !isProcessing; - } -); - type DeleteImageButtonProps = Omit & { onClick: () => void; }; @@ -22,7 +11,7 @@ type DeleteImageButtonProps = Omit & { export const DeleteImageButton = (props: DeleteImageButtonProps) => { const { onClick, isDisabled } = props; const { t } = useTranslation(); - const canDeleteImage = useAppSelector(deleteImageButtonsSelector); + const isConnected = useAppSelector((state) => state.system.isConnected); return ( { icon={} tooltip={`${t('gallery.deleteImage')} (Del)`} aria-label={`${t('gallery.deleteImage')} (Del)`} - isDisabled={isDisabled || !canDeleteImage} + isDisabled={isDisabled || !isConnected} colorScheme="error" /> ); diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx index 0d8ecfbae6..78bd71e802 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/DeleteImageModal.tsx @@ -10,20 +10,20 @@ import { Text, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIButton from 'common/components/IAIButton'; import IAISwitch from 'common/components/IAISwitch'; import { setShouldConfirmOnDelete } from 'features/system/store/systemSlice'; -import { stateSelector } from 'app/store/store'; import { some } from 'lodash-es'; import { ChangeEvent, memo, useCallback, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { imageDeletionConfirmed } from '../store/actions'; import { getImageUsage, selectImageUsage } from '../store/selectors'; import { imageDeletionCanceled, isModalOpenChanged } from '../store/slice'; -import ImageUsageMessage from './ImageUsageMessage'; import { ImageUsage } from '../store/types'; +import ImageUsageMessage from './ImageUsageMessage'; const selector = createSelector( [stateSelector, selectImageUsage], @@ -42,6 +42,7 @@ const selector = createSelector( isCanvasImage: some(allImageUsage, (i) => i.isCanvasImage), isNodesImage: some(allImageUsage, (i) => i.isNodesImage), isControlNetImage: some(allImageUsage, (i) => i.isControlNetImage), + isIPAdapterImage: some(allImageUsage, (i) => i.isIPAdapterImage), }; return { diff --git a/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx b/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx index 3ed7f3f05f..6844e13a32 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx +++ b/invokeai/frontend/web/src/features/deleteImageModal/components/ImageUsageMessage.tsx @@ -1,17 +1,20 @@ import { ListItem, Text, UnorderedList } from '@chakra-ui/react'; import { some } from 'lodash-es'; import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; import { ImageUsage } from '../store/types'; + type Props = { imageUsage?: ImageUsage; topMessage?: string; bottomMessage?: string; }; const ImageUsageMessage = (props: Props) => { + const { t } = useTranslation(); const { imageUsage, - topMessage = 'This image is currently in use in the following features:', - bottomMessage = 'If you delete this image, those features will immediately be reset.', + topMessage = t('gallery.currentlyInUse'), + bottomMessage = t('gallery.featuresWillReset'), } = props; if (!imageUsage) { @@ -26,10 +29,21 @@ const ImageUsageMessage = (props: Props) => { <> {topMessage} - {imageUsage.isInitialImage && Image to Image} - {imageUsage.isCanvasImage && Unified Canvas} - {imageUsage.isControlNetImage && ControlNet} - {imageUsage.isNodesImage && Node Editor} + {imageUsage.isInitialImage && ( + {t('common.img2img')} + )} + {imageUsage.isCanvasImage && ( + {t('common.unifiedCanvas')} + )} + {imageUsage.isControlNetImage && ( + {t('common.controlNet')} + )} + {imageUsage.isIPAdapterImage && ( + {t('common.ipAdapter')} + )} + {imageUsage.isNodesImage && ( + {t('common.nodeEditor')} + )} {bottomMessage} diff --git a/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts b/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts index 37be06bad6..151e975634 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts +++ b/invokeai/frontend/web/src/features/deleteImageModal/store/selectors.ts @@ -1,9 +1,9 @@ import { createSelector } from '@reduxjs/toolkit'; import { RootState } from 'app/store/store'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { isInvocationNode } from 'features/nodes/types/types'; import { some } from 'lodash-es'; import { ImageUsage } from './types'; -import { isInvocationNode } from 'features/nodes/types/types'; export const getImageUsage = (state: RootState, image_name: string) => { const { generation, canvas, nodes, controlNet } = state; @@ -27,11 +27,15 @@ export const getImageUsage = (state: RootState, image_name: string) => { c.controlImage === image_name || c.processedControlImage === image_name ); + const isIPAdapterImage = + controlNet.ipAdapterInfo.adapterImage?.image_name === image_name; + const imageUsage: ImageUsage = { isInitialImage, isCanvasImage, isNodesImage, isControlNetImage, + isIPAdapterImage, }; return imageUsage; diff --git a/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts b/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts index 2beaa8ca2e..fd13462866 100644 --- a/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts +++ b/invokeai/frontend/web/src/features/deleteImageModal/store/types.ts @@ -10,4 +10,5 @@ export type ImageUsage = { isCanvasImage: boolean; isNodesImage: boolean; isControlNetImage: boolean; + isIPAdapterImage: boolean; }; diff --git a/invokeai/frontend/web/src/features/dnd/components/AppDndContext.tsx b/invokeai/frontend/web/src/features/dnd/components/AppDndContext.tsx index bffe738aa9..520abc33ed 100644 --- a/invokeai/frontend/web/src/features/dnd/components/AppDndContext.tsx +++ b/invokeai/frontend/web/src/features/dnd/components/AppDndContext.tsx @@ -2,7 +2,6 @@ import { DragOverlay, MouseSensor, TouchSensor, - pointerWithin, useSensor, useSensors, } from '@dnd-kit/core'; @@ -14,6 +13,7 @@ import { AnimatePresence, motion } from 'framer-motion'; import { PropsWithChildren, memo, useCallback, useState } from 'react'; import { useScaledModifer } from '../hooks/useScaledCenteredModifer'; import { DragEndEvent, DragStartEvent, TypesafeDraggableData } from '../types'; +import { customPointerWithin } from '../util/customPointerWithin'; import { DndContextTypesafe } from './DndContextTypesafe'; import DragPreview from './DragPreview'; @@ -77,7 +77,7 @@ const AppDndContext = (props: PropsWithChildren) => { onDragStart={handleDragStart} onDragEnd={handleDragEnd} sensors={sensors} - collisionDetection={pointerWithin} + collisionDetection={customPointerWithin} autoScroll={false} > {props.children} @@ -87,7 +87,7 @@ const AppDndContext = (props: PropsWithChildren) => { style={{ width: 'min-content', height: 'min-content', - cursor: 'none', + cursor: 'grabbing', userSelect: 'none', // expand overlay to prevent cursor from going outside it and displaying padding: '10rem', diff --git a/invokeai/frontend/web/src/features/dnd/types/index.ts b/invokeai/frontend/web/src/features/dnd/types/index.ts index 294132d0a3..3c5751bfac 100644 --- a/invokeai/frontend/web/src/features/dnd/types/index.ts +++ b/invokeai/frontend/web/src/features/dnd/types/index.ts @@ -35,6 +35,10 @@ export type ControlNetDropData = BaseDropData & { }; }; +export type IPAdapterImageDropData = BaseDropData & { + actionType: 'SET_IP_ADAPTER_IMAGE'; +}; + export type CanvasInitialImageDropData = BaseDropData & { actionType: 'SET_CANVAS_INITIAL_IMAGE'; }; @@ -73,6 +77,7 @@ export type TypesafeDroppableData = | CurrentImageDropData | InitialImageDropData | ControlNetDropData + | IPAdapterImageDropData | CanvasInitialImageDropData | NodesImageDropData | AddToBatchDropData diff --git a/invokeai/frontend/web/src/features/dnd/util/customPointerWithin.ts b/invokeai/frontend/web/src/features/dnd/util/customPointerWithin.ts new file mode 100644 index 0000000000..68f1e98b16 --- /dev/null +++ b/invokeai/frontend/web/src/features/dnd/util/customPointerWithin.ts @@ -0,0 +1,38 @@ +import { CollisionDetection, pointerWithin } from '@dnd-kit/core'; + +/** + * Filters out droppable elements that are overflowed, then applies the pointerWithin collision detection. + * + * Fixes collision detection firing on droppables that are not visible, having been scrolled out of view. + * + * See https://github.com/clauderic/dnd-kit/issues/1198 + */ +export const customPointerWithin: CollisionDetection = (arg) => { + if (!arg.pointerCoordinates) { + // sanity check + return []; + } + + // Get all elements at the pointer coordinates. This excludes elements which are overflowed, + // so it won't include the droppable elements that are scrolled out of view. + const targetElements = document.elementsFromPoint( + arg.pointerCoordinates.x, + arg.pointerCoordinates.y + ); + + const filteredDroppableContainers = arg.droppableContainers.filter( + (container) => { + if (!container.node.current) { + return false; + } + // Only include droppable elements that are in the list of elements at the pointer coordinates. + return targetElements.includes(container.node.current); + } + ); + + // Run the provided collision detection with the filtered droppable elements. + return pointerWithin({ + ...arg, + droppableContainers: filteredDroppableContainers, + }); +}; diff --git a/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts b/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts index f704d22dff..b040caf83d 100644 --- a/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts +++ b/invokeai/frontend/web/src/features/dnd/util/isValidDrop.ts @@ -24,6 +24,8 @@ export const isValidDrop = ( return payloadType === 'IMAGE_DTO'; case 'SET_CONTROLNET_IMAGE': return payloadType === 'IMAGE_DTO'; + case 'SET_IP_ADAPTER_IMAGE': + return payloadType === 'IMAGE_DTO'; case 'SET_CANVAS_INITIAL_IMAGE': return payloadType === 'IMAGE_DTO'; case 'SET_NODES_IMAGE': diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx index 70aadcd4ce..f34235bab2 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCollapse.tsx @@ -2,26 +2,33 @@ import { Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; -import { memo } from 'react'; +import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; -import ParamDynamicPromptsCombinatorial from './ParamDynamicPromptsCombinatorial'; -import ParamDynamicPromptsToggle from './ParamDynamicPromptsEnabled'; import ParamDynamicPromptsMaxPrompts from './ParamDynamicPromptsMaxPrompts'; - -const selector = createSelector( - stateSelector, - (state) => { - const { isEnabled } = state.dynamicPrompts; - - return { activeLabel: isEnabled ? 'Enabled' : undefined }; - }, - defaultSelectorOptions -); +import ParamDynamicPromptsPreview from './ParamDynamicPromptsPreview'; +import ParamDynamicPromptsSeedBehaviour from './ParamDynamicPromptsSeedBehaviour'; const ParamDynamicPromptsCollapse = () => { - const { activeLabel } = useAppSelector(selector); + const { t } = useTranslation(); + const selectActiveLabel = useMemo( + () => + createSelector(stateSelector, ({ dynamicPrompts }) => { + const count = dynamicPrompts.prompts.length; + if (count === 1) { + return t('dynamicPrompts.promptsWithCount_one', { + count, + }); + } else { + return t('dynamicPrompts.promptsWithCount_other', { + count, + }); + } + }), + [t] + ); + const activeLabel = useAppSelector(selectActiveLabel); const isDynamicPromptingEnabled = useFeatureStatus('dynamicPrompting').isFeatureEnabled; @@ -31,10 +38,13 @@ const ParamDynamicPromptsCollapse = () => { } return ( - + - - + + diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx index c028a5d55c..353f0b4eaa 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsCombinatorial.tsx @@ -4,21 +4,23 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAISwitch from 'common/components/IAISwitch'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { combinatorialToggled } from '../store/dynamicPromptsSlice'; const selector = createSelector( stateSelector, (state) => { - const { combinatorial, isEnabled } = state.dynamicPrompts; + const { combinatorial } = state.dynamicPrompts; - return { combinatorial, isDisabled: !isEnabled }; + return { combinatorial }; }, defaultSelectorOptions ); const ParamDynamicPromptsCombinatorial = () => { - const { combinatorial, isDisabled } = useAppSelector(selector); + const { combinatorial } = useAppSelector(selector); const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleChange = useCallback(() => { dispatch(combinatorialToggled()); @@ -26,8 +28,7 @@ const ParamDynamicPromptsCombinatorial = () => { return ( diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx deleted file mode 100644 index 1b31147937..0000000000 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsEnabled.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAISwitch from 'common/components/IAISwitch'; -import { memo, useCallback } from 'react'; -import { isEnabledToggled } from '../store/dynamicPromptsSlice'; - -const selector = createSelector( - stateSelector, - (state) => { - const { isEnabled } = state.dynamicPrompts; - - return { isEnabled }; - }, - defaultSelectorOptions -); - -const ParamDynamicPromptsToggle = () => { - const dispatch = useAppDispatch(); - const { isEnabled } = useAppSelector(selector); - - const handleToggleIsEnabled = useCallback(() => { - dispatch(isEnabledToggled()); - }, [dispatch]); - - return ( - - ); -}; - -export default memo(ParamDynamicPromptsToggle); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx index f374f1cb15..df80faaa3b 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsMaxPrompts.tsx @@ -8,11 +8,13 @@ import { maxPromptsChanged, maxPromptsReset, } from '../store/dynamicPromptsSlice'; +import { useTranslation } from 'react-i18next'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; const selector = createSelector( stateSelector, (state) => { - const { maxPrompts, combinatorial, isEnabled } = state.dynamicPrompts; + const { maxPrompts, combinatorial } = state.dynamicPrompts; const { min, sliderMax, inputMax } = state.config.sd.dynamicPrompts.maxPrompts; @@ -21,7 +23,7 @@ const selector = createSelector( min, sliderMax, inputMax, - isDisabled: !isEnabled || !combinatorial, + isDisabled: !combinatorial, }; }, defaultSelectorOptions @@ -31,6 +33,7 @@ const ParamDynamicPromptsMaxPrompts = () => { const { maxPrompts, min, sliderMax, inputMax, isDisabled } = useAppSelector(selector); const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleChange = useCallback( (v: number) => { @@ -44,19 +47,21 @@ const ParamDynamicPromptsMaxPrompts = () => { }, [dispatch]); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsPreview.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsPreview.tsx new file mode 100644 index 0000000000..7e64521be2 --- /dev/null +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsPreview.tsx @@ -0,0 +1,116 @@ +import { + ChakraProps, + Flex, + FormControl, + FormLabel, + ListItem, + OrderedList, + Spinner, + Text, +} from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { IAINoContentFallback } from 'common/components/IAIImageFallback'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; +import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent'; +import { memo } from 'react'; +import { FaCircleExclamation } from 'react-icons/fa6'; + +const selector = createSelector( + stateSelector, + (state) => { + const { isLoading, isError, prompts, parsingError } = state.dynamicPrompts; + + return { + prompts, + parsingError, + isError, + isLoading, + }; + }, + defaultSelectorOptions +); + +const listItemStyles: ChakraProps['sx'] = { + '&::marker': { color: 'base.500', _dark: { color: 'base.500' } }, +}; + +const ParamDynamicPromptsPreview = () => { + const { prompts, parsingError, isLoading, isError } = + useAppSelector(selector); + + if (isError) { + return ( + + + + + + ); + } + + return ( + + + + Prompts Preview ({prompts.length}) + {parsingError && ` - ${parsingError}`} + + + + + {prompts.map((prompt, i) => ( + + {prompt} + + ))} + + + {isLoading && ( + + + + )} + + + + ); +}; + +export default memo(ParamDynamicPromptsPreview); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx new file mode 100644 index 0000000000..fdd90919af --- /dev/null +++ b/invokeai/frontend/web/src/features/dynamicPrompts/components/ParamDynamicPromptsSeedBehaviour.tsx @@ -0,0 +1,63 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + SeedBehaviour, + seedBehaviourChanged, +} from '../store/dynamicPromptsSlice'; +import IAIMantineSelectItemWithDescription from 'common/components/IAIMantineSelectItemWithDescription'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; + +type Item = { + label: string; + value: SeedBehaviour; + description: string; +}; + +const ParamDynamicPromptsSeedBehaviour = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const seedBehaviour = useAppSelector( + (state) => state.dynamicPrompts.seedBehaviour + ); + + const data = useMemo(() => { + return [ + { + value: 'PER_ITERATION', + label: t('dynamicPrompts.seedBehaviour.perIterationLabel'), + description: t('dynamicPrompts.seedBehaviour.perIterationDesc'), + }, + { + value: 'PER_PROMPT', + label: t('dynamicPrompts.seedBehaviour.perPromptLabel'), + description: t('dynamicPrompts.seedBehaviour.perPromptDesc'), + }, + ]; + }, [t]); + + const handleChange = useCallback( + (v: string | null) => { + if (!v) { + return; + } + dispatch(seedBehaviourChanged(v as SeedBehaviour)); + }, + [dispatch] + ); + + return ( + + + + ); +}; + +export default memo(ParamDynamicPromptsSeedBehaviour); diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts new file mode 100644 index 0000000000..5b1ed52938 --- /dev/null +++ b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsPersistDenylist.ts @@ -0,0 +1,4 @@ +import { initialDynamicPromptsState } from './dynamicPromptsSlice'; + +export const dynamicPromptsPersistDenylist: (keyof typeof initialDynamicPromptsState)[] = + ['prompts']; diff --git a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts index d96c8ff0b0..32e24845ea 100644 --- a/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts +++ b/invokeai/frontend/web/src/features/dynamicPrompts/store/dynamicPromptsSlice.ts @@ -1,15 +1,24 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +export type SeedBehaviour = 'PER_ITERATION' | 'PER_PROMPT'; export interface DynamicPromptsState { - isEnabled: boolean; maxPrompts: number; combinatorial: boolean; + prompts: string[]; + parsingError: string | undefined | null; + isError: boolean; + isLoading: boolean; + seedBehaviour: SeedBehaviour; } export const initialDynamicPromptsState: DynamicPromptsState = { - isEnabled: false, maxPrompts: 100, combinatorial: true, + prompts: [], + parsingError: undefined, + isError: false, + isLoading: false, + seedBehaviour: 'PER_ITERATION', }; const initialState: DynamicPromptsState = initialDynamicPromptsState; @@ -27,17 +36,33 @@ export const dynamicPromptsSlice = createSlice({ combinatorialToggled: (state) => { state.combinatorial = !state.combinatorial; }, - isEnabledToggled: (state) => { - state.isEnabled = !state.isEnabled; + promptsChanged: (state, action: PayloadAction) => { + state.prompts = action.payload; + }, + parsingErrorChanged: (state, action: PayloadAction) => { + state.parsingError = action.payload; + }, + isErrorChanged: (state, action: PayloadAction) => { + state.isError = action.payload; + }, + isLoadingChanged: (state, action: PayloadAction) => { + state.isLoading = action.payload; + }, + seedBehaviourChanged: (state, action: PayloadAction) => { + state.seedBehaviour = action.payload; }, }, }); export const { - isEnabledToggled, maxPromptsChanged, maxPromptsReset, combinatorialToggled, + promptsChanged, + parsingErrorChanged, + isErrorChanged, + isLoadingChanged, + seedBehaviourChanged, } = dynamicPromptsSlice.actions; export default dynamicPromptsSlice.reducer; diff --git a/invokeai/frontend/web/src/features/embedding/components/AddEmbeddingButton.tsx b/invokeai/frontend/web/src/features/embedding/components/AddEmbeddingButton.tsx index 94ddc08315..d376e189aa 100644 --- a/invokeai/frontend/web/src/features/embedding/components/AddEmbeddingButton.tsx +++ b/invokeai/frontend/web/src/features/embedding/components/AddEmbeddingButton.tsx @@ -1,6 +1,7 @@ import IAIIconButton from 'common/components/IAIIconButton'; import { memo } from 'react'; import { FaCode } from 'react-icons/fa'; +import { useTranslation } from 'react-i18next'; type Props = { onClick: () => void; @@ -8,11 +9,12 @@ type Props = { const AddEmbeddingButton = (props: Props) => { const { onClick } = props; + const { t } = useTranslation(); return ( } sx={{ p: 2, diff --git a/invokeai/frontend/web/src/features/embedding/components/ParamEmbeddingPopover.tsx b/invokeai/frontend/web/src/features/embedding/components/ParamEmbeddingPopover.tsx index 93daaf946f..164fd01a1f 100644 --- a/invokeai/frontend/web/src/features/embedding/components/ParamEmbeddingPopover.tsx +++ b/invokeai/frontend/web/src/features/embedding/components/ParamEmbeddingPopover.tsx @@ -16,6 +16,7 @@ import { forEach } from 'lodash-es'; import { PropsWithChildren, memo, useCallback, useMemo, useRef } from 'react'; import { useGetTextualInversionModelsQuery } from 'services/api/endpoints/models'; import { PARAMETERS_PANEL_WIDTH } from 'theme/util/constants'; +import { useTranslation } from 'react-i18next'; type Props = PropsWithChildren & { onSelect: (v: string) => void; @@ -27,6 +28,7 @@ const ParamEmbeddingPopover = (props: Props) => { const { onSelect, isOpen, onClose, children } = props; const { data: embeddingQueryData } = useGetTextualInversionModelsQuery(); const inputRef = useRef(null); + const { t } = useTranslation(); const currentMainModel = useAppSelector( (state: RootState) => state.generation.model @@ -52,7 +54,7 @@ const ParamEmbeddingPopover = (props: Props) => { group: MODEL_TYPE_MAP[embedding.base_model], disabled, tooltip: disabled - ? `Incompatible base model: ${embedding.base_model}` + ? `${t('embedding.incompatibleModel')} ${embedding.base_model}` : undefined, }); }); @@ -63,7 +65,7 @@ const ParamEmbeddingPopover = (props: Props) => { ); return data.sort((a, b) => (a.disabled && !b.disabled ? 1 : -1)); - }, [embeddingQueryData, currentMainModel?.base_model]); + }, [embeddingQueryData, currentMainModel?.base_model, t]); const handleChange = useCallback( (v: string | null) => { @@ -118,10 +120,10 @@ const ParamEmbeddingPopover = (props: Props) => { { + ({ gallery }) => { const { autoAddBoardId, autoAssignBoardOnClick } = gallery; - const { isProcessing } = system; return { autoAddBoardId, autoAssignBoardOnClick, - isProcessing, }; }, defaultSelectorOptions @@ -26,8 +25,8 @@ const selector = createSelector( const BoardAutoAddSelect = () => { const dispatch = useAppDispatch(); - const { autoAddBoardId, autoAssignBoardOnClick, isProcessing } = - useAppSelector(selector); + const { t } = useTranslation(); + const { autoAddBoardId, autoAssignBoardOnClick } = useAppSelector(selector); const inputRef = useRef(null); const { boards, hasBoards } = useListAllBoardsQuery(undefined, { selectFromResult: ({ data }) => { @@ -63,15 +62,15 @@ const BoardAutoAddSelect = () => { return ( item.label?.toLowerCase().includes(value.toLowerCase().trim()) || item.value.toLowerCase().includes(value.toLowerCase().trim()) diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx index c711ad892b..c18a9f671c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardContextMenu.tsx @@ -2,6 +2,7 @@ import { MenuGroup, MenuItem, MenuList } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { IAIContextMenu, IAIContextMenuProps, @@ -9,13 +10,13 @@ import { import { autoAddBoardIdChanged } from 'features/gallery/store/gallerySlice'; import { BoardId } from 'features/gallery/store/types'; import { MouseEvent, memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; import { FaPlus } from 'react-icons/fa'; import { useBoardName } from 'services/api/hooks/useBoardName'; import { BoardDTO } from 'services/api/types'; import { menuListMotionProps } from 'theme/components/menu'; import GalleryBoardContextMenuItems from './GalleryBoardContextMenuItems'; import NoBoardContextMenuItems from './NoBoardContextMenuItems'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; type Props = { board?: BoardDTO; @@ -36,19 +37,17 @@ const BoardContextMenu = ({ () => createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const isAutoAdd = gallery.autoAddBoardId === board_id; - const isProcessing = system.isProcessing; const autoAssignBoardOnClick = gallery.autoAssignBoardOnClick; - return { isAutoAdd, isProcessing, autoAssignBoardOnClick }; + return { isAutoAdd, autoAssignBoardOnClick }; }, defaultSelectorOptions ), [board_id] ); - const { isAutoAdd, isProcessing, autoAssignBoardOnClick } = - useAppSelector(selector); + const { isAutoAdd, autoAssignBoardOnClick } = useAppSelector(selector); const boardName = useBoardName(board_id); const handleSetAutoAdd = useCallback(() => { @@ -59,6 +58,8 @@ const BoardContextMenu = ({ e.preventDefault(); }, []); + const { t } = useTranslation(); + return ( menuProps={{ size: 'sm', isLazy: true }} @@ -75,10 +76,10 @@ const BoardContextMenu = ({ } - isDisabled={isAutoAdd || isProcessing || autoAssignBoardOnClick} + isDisabled={isAutoAdd || autoAssignBoardOnClick} onClick={handleSetAutoAdd} > - Auto-add to this Board + {t('boards.menuItemAutoAdd')} {!board && } {board && ( diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx index ebd08e94d5..96739f4c84 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/AddBoardButton.tsx @@ -2,22 +2,22 @@ import IAIIconButton from 'common/components/IAIIconButton'; import { memo, useCallback } from 'react'; import { FaPlus } from 'react-icons/fa'; import { useCreateBoardMutation } from 'services/api/endpoints/boards'; - -const DEFAULT_BOARD_NAME = 'My Board'; +import { useTranslation } from 'react-i18next'; const AddBoardButton = () => { + const { t } = useTranslation(); const [createBoard, { isLoading }] = useCreateBoardMutation(); - + const DEFAULT_BOARD_NAME = t('boards.myBoard'); const handleCreateBoard = useCallback(() => { createBoard(DEFAULT_BOARD_NAME); - }, [createBoard]); + }, [createBoard, DEFAULT_BOARD_NAME]); return ( } isLoading={isLoading} - tooltip="Add Board" - aria-label="Add Board" + tooltip={t('boards.addBoard')} + aria-label={t('boards.addBoard')} onClick={handleCreateBoard} size="sm" /> diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx index d7db96a938..2d2a85597c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/BoardsSearch.tsx @@ -18,6 +18,7 @@ import { useEffect, useRef, } from 'react'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( [stateSelector], @@ -32,6 +33,7 @@ const BoardsSearch = () => { const dispatch = useAppDispatch(); const { boardSearchText } = useAppSelector(selector); const inputRef = useRef(null); + const { t } = useTranslation(); const handleBoardSearch = useCallback( (searchTerm: string) => { @@ -73,7 +75,7 @@ const BoardsSearch = () => { { onClick={clearBoardSearch} size="xs" variant="ghost" - aria-label="Clear Search" + aria-label={t('boards.clearSearch')} opacity={0.5} icon={} /> diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx index 78b633bd99..1bb6816bd9 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/GalleryBoard.tsx @@ -16,6 +16,7 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIDroppable from 'common/components/IAIDroppable'; import SelectionOverlay from 'common/components/SelectionOverlay'; +import { AddToBoardDropData } from 'features/dnd/types'; import { autoAddBoardIdChanged, boardIdSelected, @@ -31,7 +32,6 @@ import { useGetImageDTOQuery } from 'services/api/endpoints/images'; import { BoardDTO } from 'services/api/types'; import AutoAddIcon from '../AutoAddIcon'; import BoardContextMenu from '../BoardContextMenu'; -import { AddToBoardDropData } from 'features/dnd/types'; interface GalleryBoardProps { board: BoardDTO; @@ -49,16 +49,14 @@ const GalleryBoard = ({ () => createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const isSelectedForAutoAdd = board.board_id === gallery.autoAddBoardId; const autoAssignBoardOnClick = gallery.autoAssignBoardOnClick; - const isProcessing = system.isProcessing; return { isSelectedForAutoAdd, autoAssignBoardOnClick, - isProcessing, }; }, defaultSelectorOptions @@ -66,7 +64,7 @@ const GalleryBoard = ({ [board.board_id] ); - const { isSelectedForAutoAdd, autoAssignBoardOnClick, isProcessing } = + const { isSelectedForAutoAdd, autoAssignBoardOnClick } = useAppSelector(selector); const [isHovered, setIsHovered] = useState(false); const handleMouseOver = useCallback(() => { @@ -96,10 +94,10 @@ const GalleryBoard = ({ const handleSelectBoard = useCallback(() => { dispatch(boardIdSelected(board_id)); - if (autoAssignBoardOnClick && !isProcessing) { + if (autoAssignBoardOnClick) { dispatch(autoAddBoardIdChanged(board_id)); } - }, [board_id, autoAssignBoardOnClick, isProcessing, dispatch]); + }, [board_id, autoAssignBoardOnClick, dispatch]); const [updateBoard, { isLoading: isUpdateBoardLoading }] = useUpdateBoardMutation(); diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx index da51a5fe39..55034decf0 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/BoardsList/NoBoardBoard.tsx @@ -22,25 +22,23 @@ interface Props { const selector = createSelector( stateSelector, - ({ gallery, system }) => { + ({ gallery }) => { const { autoAddBoardId, autoAssignBoardOnClick } = gallery; - const { isProcessing } = system; - return { autoAddBoardId, autoAssignBoardOnClick, isProcessing }; + return { autoAddBoardId, autoAssignBoardOnClick }; }, defaultSelectorOptions ); const NoBoardBoard = memo(({ isSelected }: Props) => { const dispatch = useAppDispatch(); - const { autoAddBoardId, autoAssignBoardOnClick, isProcessing } = - useAppSelector(selector); + const { autoAddBoardId, autoAssignBoardOnClick } = useAppSelector(selector); const boardName = useBoardName('none'); const handleSelectBoard = useCallback(() => { dispatch(boardIdSelected('none')); - if (autoAssignBoardOnClick && !isProcessing) { + if (autoAssignBoardOnClick) { dispatch(autoAddBoardIdChanged('none')); } - }, [dispatch, autoAssignBoardOnClick, isProcessing]); + }, [dispatch, autoAssignBoardOnClick]); const [isHovered, setIsHovered] = useState(false); const handleMouseOver = useCallback(() => { diff --git a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx index f09cf131e2..f83c08c923 100644 --- a/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/Boards/DeleteBoardModal.tsx @@ -53,6 +53,7 @@ const DeleteBoardModal = (props: Props) => { isCanvasImage: some(allImageUsage, (i) => i.isCanvasImage), isNodesImage: some(allImageUsage, (i) => i.isNodesImage), isControlNetImage: some(allImageUsage, (i) => i.isControlNetImage), + isIPAdapterImage: some(allImageUsage, (i) => i.isIPAdapterImage), }; return { imageUsageSummary }; }), @@ -132,8 +133,8 @@ const DeleteBoardModal = (props: Props) => { ) : ( )} Deleted boards cannot be restored. diff --git a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx index 846cf5a6f0..83b9466722 100644 --- a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImageButtons.tsx @@ -21,13 +21,14 @@ import { workflowLoadRequested } from 'features/nodes/store/actions'; import ParamUpscalePopover from 'features/parameters/components/Parameters/Upscale/ParamUpscaleSettings'; import { useRecallParameters } from 'features/parameters/hooks/useRecallParameters'; import { initialImageSelected } from 'features/parameters/store/actions'; +import { useIsQueueMutationInProgress } from 'features/queue/hooks/useIsQueueMutationInProgress'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { setShouldShowImageDetails, setShouldShowProgressInViewer, } from 'features/ui/store/uiSlice'; -import { memo, useCallback } from 'react'; +import { memo, useCallback, useMemo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { @@ -36,9 +37,8 @@ import { FaHourglassHalf, FaQuoteRight, FaSeedling, - FaShareAlt, } from 'react-icons/fa'; -import { MdDeviceHub } from 'react-icons/md'; +import { FaCircleNodes, FaEllipsis } from 'react-icons/fa6'; import { useGetImageDTOQuery, useGetImageMetadataFromFileQuery, @@ -49,9 +49,8 @@ import SingleSelectionMenuItems from '../ImageContextMenu/SingleSelectionMenuIte const currentImageButtonsSelector = createSelector( [stateSelector, activeTabNameSelector], - ({ gallery, system, ui }, activeTabName) => { - const { isProcessing, isConnected, shouldConfirmOnDelete, progressImage } = - system; + ({ gallery, system, ui, config }, activeTabName) => { + const { isConnected, shouldConfirmOnDelete, denoiseProgress } = system; const { shouldShowImageDetails, @@ -59,19 +58,21 @@ const currentImageButtonsSelector = createSelector( shouldShowProgressInViewer, } = ui; + const { shouldFetchMetadataFromApi } = config; + const lastSelectedImage = gallery.selection[gallery.selection.length - 1]; return { - canDeleteImage: isConnected && !isProcessing, shouldConfirmOnDelete, - isProcessing, isConnected, - shouldDisableToolbarButtons: Boolean(progressImage) || !lastSelectedImage, + shouldDisableToolbarButtons: + Boolean(denoiseProgress?.progress_image) || !lastSelectedImage, shouldShowImageDetails, activeTabName, shouldHidePreview, shouldShowProgressInViewer, lastSelectedImage, + shouldFetchMetadataFromApi, }; }, { @@ -86,16 +87,16 @@ type CurrentImageButtonsProps = FlexProps; const CurrentImageButtons = (props: CurrentImageButtonsProps) => { const dispatch = useAppDispatch(); const { - isProcessing, isConnected, shouldDisableToolbarButtons, shouldShowImageDetails, lastSelectedImage, shouldShowProgressInViewer, + shouldFetchMetadataFromApi, } = useAppSelector(currentImageButtonsSelector); const isUpscalingEnabled = useFeatureStatus('upscaling').isFeatureEnabled; - + const isQueueMutationInProgress = useIsQueueMutationInProgress(); const toaster = useAppToaster(); const { t } = useTranslation(); @@ -106,8 +107,16 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { lastSelectedImage?.image_name ?? skipToken ); + const getMetadataArg = useMemo(() => { + if (lastSelectedImage) { + return { image: lastSelectedImage, shouldFetchMetadataFromApi }; + } else { + return skipToken; + } + }, [lastSelectedImage, shouldFetchMetadataFromApi]); + const { metadata, workflow, isLoading } = useGetImageMetadataFromFileQuery( - lastSelectedImage ?? skipToken, + getMetadataArg, { selectFromResult: (res) => ({ isLoading: res.isFetching, @@ -190,19 +199,10 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { { enabled: () => Boolean( - isUpscalingEnabled && - !shouldDisableToolbarButtons && - isConnected && - !isProcessing + isUpscalingEnabled && !shouldDisableToolbarButtons && isConnected ), }, - [ - isUpscalingEnabled, - imageDTO, - shouldDisableToolbarButtons, - isConnected, - isProcessing, - ] + [isUpscalingEnabled, imageDTO, shouldDisableToolbarButtons, isConnected] ); const handleClickShowImageDetails = useCallback( @@ -254,10 +254,10 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { } + icon={} /> {imageDTO && } @@ -268,7 +268,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { } + icon={} tooltip={`${t('nodes.loadWorkflow')} (W)`} aria-label={`${t('nodes.loadWorkflow')} (W)`} isDisabled={!workflow} @@ -301,15 +301,12 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { {isUpscalingEnabled && ( - + {isUpscalingEnabled && } )} - + } tooltip={`${t('parameters.info')} (I)`} @@ -330,10 +327,7 @@ const CurrentImageButtons = (props: CurrentImageButtonsProps) => { - + diff --git a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx index 2576c8e9e3..ac2e4a2bf8 100644 --- a/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/CurrentImage/CurrentImagePreview.tsx @@ -19,6 +19,7 @@ import { FaImage } from 'react-icons/fa'; import { useGetImageDTOQuery } from 'services/api/endpoints/images'; import ImageMetadataViewer from '../ImageMetadataViewer/ImageMetadataViewer'; import NextPrevImageButtons from '../NextPrevImageButtons'; +import { useTranslation } from 'react-i18next'; export const imagesSelector = createSelector( [stateSelector, selectLastSelectedImage], @@ -28,12 +29,12 @@ export const imagesSelector = createSelector( shouldHidePreview, shouldShowProgressInViewer, } = ui; - const { progressImage, shouldAntialiasProgressImage } = system; + const { denoiseProgress, shouldAntialiasProgressImage } = system; return { shouldShowImageDetails, shouldHidePreview, imageName: lastSelectedImage?.image_name, - progressImage, + denoiseProgress, shouldShowProgressInViewer, shouldAntialiasProgressImage, }; @@ -49,7 +50,7 @@ const CurrentImagePreview = () => { const { shouldShowImageDetails, imageName, - progressImage, + denoiseProgress, shouldShowProgressInViewer, shouldAntialiasProgressImage, } = useAppSelector(imagesSelector); @@ -117,6 +118,8 @@ const CurrentImagePreview = () => { const timeoutId = useRef(0); + const { t } = useTranslation(); + const handleMouseOver = useCallback(() => { setShouldShowNextPrevButtons(true); window.clearTimeout(timeoutId.current); @@ -140,11 +143,11 @@ const CurrentImagePreview = () => { position: 'relative', }} > - {progressImage && shouldShowProgressInViewer ? ( + {denoiseProgress?.progress_image && shouldShowProgressInViewer ? ( { isUploadDisabled={true} fitContainer useThumbailFallback - dropLabel="Set as Current Image" + dropLabel={t('gallery.setCurrentImage')} noContentFallback={ } diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx index bf2b344b4c..29b45761ee 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/MultipleSelectionMenuItems.tsx @@ -1,4 +1,6 @@ import { MenuItem } from '@chakra-ui/react'; +import { useStore } from '@nanostores/react'; +import { $customStarUI } from 'app/store/nanostores/customStarUI'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { imagesToChangeSelected, @@ -16,6 +18,7 @@ import { const MultipleSelectionMenuItems = () => { const dispatch = useAppDispatch(); const selection = useAppSelector((state) => state.gallery.selection); + const customStarUi = useStore($customStarUI); const [starImages] = useStarImagesMutation(); const [unstarImages] = useUnstarImagesMutation(); @@ -49,15 +52,18 @@ const MultipleSelectionMenuItems = () => { <> {areAllStarred && ( } + icon={customStarUi ? customStarUi.on.icon : } onClickCapture={handleUnstarSelection} > - Unstar All + {customStarUi ? customStarUi.off.text : `Unstar All`} )} {(areAllUnstarred || (!areAllStarred && !areAllUnstarred)) && ( - } onClickCapture={handleStarSelection}> - Star All + } + onClickCapture={handleStarSelection} + > + {customStarUi ? customStarUi.on.text : `Star All`} )} } onClickCapture={handleChangeBoard}> diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx index 90272a3a86..35a4e9f18c 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageContextMenu/SingleSelectionMenuItems.tsx @@ -1,18 +1,22 @@ import { Flex, MenuItem, Spinner } from '@chakra-ui/react'; +import { useStore } from '@nanostores/react'; import { useAppToaster } from 'app/components/Toaster'; -import { useAppDispatch } from 'app/store/storeHooks'; +import { $customStarUI } from 'app/store/nanostores/customStarUI'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { setInitialCanvasImage } from 'features/canvas/store/canvasSlice'; import { imagesToChangeSelected, isModalOpenChanged, } from 'features/changeBoardModal/store/slice'; import { imagesToDeleteSelected } from 'features/deleteImageModal/store/slice'; +import { workflowLoadRequested } from 'features/nodes/store/actions'; import { useRecallParameters } from 'features/parameters/hooks/useRecallParameters'; import { initialImageSelected } from 'features/parameters/store/actions'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { useCopyImageToClipboard } from 'features/ui/hooks/useCopyImageToClipboard'; import { setActiveTab } from 'features/ui/store/uiSlice'; import { memo, useCallback } from 'react'; +import { flushSync } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { FaAsterisk, @@ -25,15 +29,16 @@ import { FaShare, FaTrash, } from 'react-icons/fa'; -import { MdDeviceHub, MdStar, MdStarBorder } from 'react-icons/md'; +import { FaCircleNodes } from 'react-icons/fa6'; +import { MdStar, MdStarBorder } from 'react-icons/md'; import { useGetImageMetadataFromFileQuery, useStarImagesMutation, useUnstarImagesMutation, } from 'services/api/endpoints/images'; import { ImageDTO } from 'services/api/types'; +import { configSelector } from '../../../system/store/configSelectors'; import { sentImageToCanvas, sentImageToImg2Img } from '../../store/actions'; -import { workflowLoadRequested } from 'features/nodes/store/actions'; type SingleSelectionMenuItemsProps = { imageDTO: ImageDTO; @@ -48,9 +53,11 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { const toaster = useAppToaster(); const isCanvasEnabled = useFeatureStatus('unifiedCanvas').isFeatureEnabled; + const { shouldFetchMetadataFromApi } = useAppSelector(configSelector); + const customStarUi = useStore($customStarUI); const { metadata, workflow, isLoading } = useGetImageMetadataFromFileQuery( - imageDTO, + { image: imageDTO, shouldFetchMetadataFromApi }, { selectFromResult: (res) => ({ isLoading: res.isFetching, @@ -110,8 +117,10 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { const handleSendToCanvas = useCallback(() => { dispatch(sentImageToCanvas()); + flushSync(() => { + dispatch(setActiveTab('unifiedCanvas')); + }); dispatch(setInitialCanvasImage(imageDTO)); - dispatch(setActiveTab('unifiedCanvas')); toaster({ title: t('toast.sentToUnifiedCanvas'), @@ -172,7 +181,7 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { {t('parameters.downloadImage')} : } + icon={isLoading ? : } onClickCapture={handleLoadWorkflow} isDisabled={isLoading || !workflow} > @@ -223,12 +232,18 @@ const SingleSelectionMenuItems = (props: SingleSelectionMenuItemsProps) => { Change Board {imageDTO.starred ? ( - } onClickCapture={handleUnstarImage}> - Unstar Image + } + onClickCapture={handleUnstarImage} + > + {customStarUi ? customStarUi.off.text : `Unstar Image`} ) : ( - } onClickCapture={handleStarImage}> - Star Image + } + onClickCapture={handleStarImage} + > + {customStarUi ? customStarUi.on.text : `Star Image`} )} { const { imageName } = props; const { currentData: imageDTO } = useGetImageDTOQuery(imageName); const shift = useAppSelector((state) => state.hotkeys.shift); + const { t } = useTranslation(); const { handleClick, isSelected, selection, selectionCount } = useMultiselect(imageDTO); + const customStarUi = useStore($customStarUI); + const handleDelete = useCallback( (e: MouseEvent) => { e.stopPropagation(); @@ -89,12 +95,22 @@ const GalleryImage = (props: HoverableImageProps) => { const starIcon = useMemo(() => { if (imageDTO?.starred) { - return ; + return customStarUi ? customStarUi.on.icon : ; } if (!imageDTO?.starred && isHovered) { - return ; + return customStarUi ? customStarUi.off.icon : ; } - }, [imageDTO?.starred, isHovered]); + }, [imageDTO?.starred, isHovered, customStarUi]); + + const starTooltip = useMemo(() => { + if (imageDTO?.starred) { + return customStarUi ? customStarUi.off.text : 'Unstar'; + } + if (!imageDTO?.starred) { + return customStarUi ? customStarUi.on.text : 'Star'; + } + return ''; + }, [imageDTO?.starred, customStarUi]); if (!imageDTO) { return ; @@ -129,14 +145,14 @@ const GalleryImage = (props: HoverableImageProps) => { {isHovered && shift && ( } - tooltip="Delete" + tooltip={t('gallery.deleteImage')} styleOverrides={{ bottom: 2, top: 'auto', diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImageGrid.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImageGrid.tsx index bacd5c38ad..dc41a2ef2a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImageGrid.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageGrid/GalleryImageGrid.tsx @@ -95,7 +95,7 @@ const GalleryImageGrid = () => { justifyContent: 'center', }} > - + ); } @@ -140,7 +140,7 @@ const GalleryImageGrid = () => { onClick={handleLoadMoreImages} isDisabled={!areMoreAvailable} isLoading={isFetching} - loadingText="Loading" + loadingText={t('gallery.loading')} flexShrink={0} > {`Load More (${currentData.ids.length} of ${currentViewTotal})`} @@ -153,7 +153,7 @@ const GalleryImageGrid = () => { return ( diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx index 2267bf15c2..ed7df88e3a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/DataViewer.tsx @@ -3,6 +3,7 @@ import { isString } from 'lodash-es'; import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; import { memo, useCallback, useMemo } from 'react'; import { FaCopy, FaDownload } from 'react-icons/fa'; +import { useTranslation } from 'react-i18next'; type Props = { label: string; @@ -33,6 +34,8 @@ const DataViewer = (props: Props) => { a.remove(); }, [dataString, label, fileName]); + const { t } = useTranslation(); + return ( { {withDownload && ( - + } variant="ghost" opacity={0.7} @@ -84,9 +87,9 @@ const DataViewer = (props: Props) => { )} {withCopy && ( - + } variant="ghost" opacity={0.7} diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx index e82b03360e..955e8a5a3a 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataActions.tsx @@ -1,6 +1,8 @@ -import { CoreMetadata } from 'features/nodes/types/types'; +import { CoreMetadata, LoRAMetadataItem } from 'features/nodes/types/types'; import { useRecallParameters } from 'features/parameters/hooks/useRecallParameters'; import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { isValidLoRAModel } from '../../../parameters/types/parameterSchemas'; import ImageMetadataItem from './ImageMetadataItem'; type Props = { @@ -10,6 +12,8 @@ type Props = { const ImageMetadataActions = (props: Props) => { const { metadata } = props; + const { t } = useTranslation(); + const { recallPositivePrompt, recallNegativePrompt, @@ -21,6 +25,7 @@ const ImageMetadataActions = (props: Props) => { recallWidth, recallHeight, recallStrength, + recallLoRA, } = useRecallParameters(); const handleRecallPositivePrompt = useCallback(() => { @@ -63,6 +68,13 @@ const ImageMetadataActions = (props: Props) => { recallStrength(metadata?.strength); }, [metadata?.strength, recallStrength]); + const handleRecallLoRA = useCallback( + (lora: LoRAMetadataItem) => { + recallLoRA(lora); + }, + [recallLoRA] + ); + if (!metadata || Object.keys(metadata).length === 0) { return null; } @@ -70,17 +82,20 @@ const ImageMetadataActions = (props: Props) => { return ( <> {metadata.created_by && ( - + )} {metadata.generation_mode && ( )} {metadata.positive_prompt && ( { )} {metadata.negative_prompt && ( { )} {metadata.seed !== undefined && metadata.seed !== null && ( @@ -105,108 +120,66 @@ const ImageMetadataActions = (props: Props) => { metadata.model !== null && metadata.model.model_name && ( )} {metadata.width && ( )} {metadata.height && ( )} - {/* {metadata.threshold !== undefined && ( - dispatch(setThreshold(Number(metadata.threshold)))} - /> - )} - {metadata.perlin !== undefined && ( - dispatch(setPerlin(Number(metadata.perlin)))} - /> - )} */} {metadata.scheduler && ( )} {metadata.steps && ( )} {metadata.cfg_scale !== undefined && metadata.cfg_scale !== null && ( )} - {/* {metadata.variations && metadata.variations.length > 0 && ( - - dispatch( - setSeedWeights(seedWeightsToString(metadata.variations)) - ) - } - /> - )} - {metadata.seamless && ( - dispatch(setSeamless(metadata.seamless))} - /> - )} - {metadata.hires_fix && ( - dispatch(setHiresFix(metadata.hires_fix))} - /> - )} */} - - {/* {init_image_path && ( - dispatch(setInitialImage(init_image_path))} - /> - )} */} {metadata.strength && ( )} - {/* {metadata.fit && ( - dispatch(setShouldFitToWidthHeight(metadata.fit))} - /> - )} */} + {metadata.loras && + metadata.loras.map((lora, index) => { + if (isValidLoRAModel(lora.lora)) { + return ( + handleRecallLoRA(lora)} + /> + ); + } + })} ); }; diff --git a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataViewer.tsx b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataViewer.tsx index ca3eab2dba..8c7e69b2b1 100644 --- a/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataViewer.tsx +++ b/invokeai/frontend/web/src/features/gallery/components/ImageMetadataViewer/ImageMetadataViewer.tsx @@ -15,6 +15,9 @@ import { useGetImageMetadataFromFileQuery } from 'services/api/endpoints/images' import { ImageDTO } from 'services/api/types'; import DataViewer from './DataViewer'; import ImageMetadataActions from './ImageMetadataActions'; +import { useAppSelector } from '../../../../app/store/storeHooks'; +import { configSelector } from '../../../system/store/configSelectors'; +import { useTranslation } from 'react-i18next'; type ImageMetadataViewerProps = { image: ImageDTO; @@ -26,13 +29,19 @@ const ImageMetadataViewer = ({ image }: ImageMetadataViewerProps) => { // useHotkeys('esc', () => { // dispatch(setShouldShowImageDetails(false)); // }); + const { t } = useTranslation(); - const { metadata, workflow } = useGetImageMetadataFromFileQuery(image, { - selectFromResult: (res) => ({ - metadata: res?.currentData?.metadata, - workflow: res?.currentData?.workflow, - }), - }); + const { shouldFetchMetadataFromApi } = useAppSelector(configSelector); + + const { metadata, workflow } = useGetImageMetadataFromFileQuery( + { image, shouldFetchMetadataFromApi }, + { + selectFromResult: (res) => ({ + metadata: res?.currentData?.metadata, + workflow: res?.currentData?.workflow, + }), + } + ); return ( { sx={{ display: 'flex', flexDir: 'column', w: 'full', h: 'full' }} > - Metadata - Image Details - Workflow + {t('metadata.metadata')} + {t('metadata.imageDetails')} + {t('metadata.workflow')} {metadata ? ( - + ) : ( - + )} {image ? ( - + ) : ( - + )} {workflow ? ( - + ) : ( - + )} diff --git a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx index 3432838ec0..7338caec22 100644 --- a/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx +++ b/invokeai/frontend/web/src/features/lora/components/ParamLora.tsx @@ -10,6 +10,7 @@ import { loraWeightChanged, loraWeightReset, } from '../store/loraSlice'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; type Props = { lora: LoRA; @@ -35,30 +36,32 @@ const ParamLora = (props: Props) => { }, [dispatch, lora.id]); return ( - - - } - colorScheme="error" - /> - + + + + } + colorScheme="error" + /> + + ); }; diff --git a/invokeai/frontend/web/src/features/lora/store/loraSlice.ts b/invokeai/frontend/web/src/features/lora/store/loraSlice.ts index 10a1671933..bbe019b1c3 100644 --- a/invokeai/frontend/web/src/features/lora/store/loraSlice.ts +++ b/invokeai/frontend/web/src/features/lora/store/loraSlice.ts @@ -27,6 +27,13 @@ export const loraSlice = createSlice({ const { model_name, id, base_model } = action.payload; state.loras[id] = { id, model_name, base_model, ...defaultLoRAConfig }; }, + loraRecalled: ( + state, + action: PayloadAction + ) => { + const { model_name, id, base_model, weight } = action.payload; + state.loras[id] = { id, model_name, base_model, weight }; + }, loraRemoved: (state, action: PayloadAction) => { const id = action.payload; delete state.loras[id]; @@ -62,6 +69,7 @@ export const { loraWeightChanged, loraWeightReset, lorasCleared, + loraRecalled, } = loraSlice.actions; export default loraSlice.reducer; diff --git a/invokeai/frontend/web/src/features/nodes/components/NodeEditor.tsx b/invokeai/frontend/web/src/features/nodes/components/NodeEditor.tsx index 4cefdbb20b..3675dd9af9 100644 --- a/invokeai/frontend/web/src/features/nodes/components/NodeEditor.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/NodeEditor.tsx @@ -12,9 +12,11 @@ import TopCenterPanel from './flow/panels/TopCenterPanel/TopCenterPanel'; import TopRightPanel from './flow/panels/TopRightPanel/TopRightPanel'; import BottomLeftPanel from './flow/panels/BottomLeftPanel/BottomLeftPanel'; import MinimapPanel from './flow/panels/MinimapPanel/MinimapPanel'; +import { useTranslation } from 'react-i18next'; const NodeEditor = () => { const isReady = useAppSelector((state) => state.nodes.isReady); + const { t } = useTranslation(); return ( { }} > diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx index 83f7482177..9ab413a98f 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/AddNodePopover/AddNodePopover.tsx @@ -24,6 +24,7 @@ import { HotkeyCallback } from 'react-hotkeys-hook/dist/types'; import 'reactflow/dist/style.css'; import { AnyInvocationType } from 'services/events/types'; import { AddNodePopoverSelectItem } from './AddNodePopoverSelectItem'; +import { useTranslation } from 'react-i18next'; type NodeTemplate = { label: string; @@ -48,43 +49,45 @@ const filter = (value: string, item: NodeTemplate) => { ); }; -const selector = createSelector( - [stateSelector], - ({ nodes }) => { - const data: NodeTemplate[] = map(nodes.nodeTemplates, (template) => { - return { - label: template.title, - value: template.type, - description: template.description, - tags: template.tags, - }; - }); - - data.push({ - label: 'Progress Image', - value: 'current_image', - description: 'Displays the current image in the Node Editor', - tags: ['progress'], - }); - - data.push({ - label: 'Notes', - value: 'notes', - description: 'Add notes about your workflow', - tags: ['notes'], - }); - - data.sort((a, b) => a.label.localeCompare(b.label)); - - return { data }; - }, - defaultSelectorOptions -); - const AddNodePopover = () => { const dispatch = useAppDispatch(); const buildInvocation = useBuildNodeData(); const toaster = useAppToaster(); + const { t } = useTranslation(); + + const selector = createSelector( + [stateSelector], + ({ nodes }) => { + const data: NodeTemplate[] = map(nodes.nodeTemplates, (template) => { + return { + label: template.title, + value: template.type, + description: template.description, + tags: template.tags, + }; + }); + + data.push({ + label: t('nodes.currentImage'), + value: 'current_image', + description: t('nodes.currentImageDescription'), + tags: ['progress'], + }); + + data.push({ + label: t('nodes.notes'), + value: 'notes', + description: t('nodes.notesDescription'), + tags: ['notes'], + }); + + data.sort((a, b) => a.label.localeCompare(b.label)); + + return { data, t }; + }, + defaultSelectorOptions + ); + const { data } = useAppSelector(selector); const isOpen = useAppSelector((state) => state.nodes.isAddNodePopoverOpen); const inputRef = useRef(null); @@ -92,18 +95,20 @@ const AddNodePopover = () => { const addNode = useCallback( (nodeType: AnyInvocationType) => { const invocation = buildInvocation(nodeType); - if (!invocation) { + const errorMessage = t('nodes.unknownNode', { + nodeType: nodeType, + }); toaster({ status: 'error', - title: `Unknown Invocation type ${nodeType}`, + title: errorMessage, }); return; } dispatch(nodeAdded(invocation)); }, - [dispatch, buildInvocation, toaster] + [dispatch, buildInvocation, toaster, t] ); const handleChange = useCallback( @@ -179,11 +184,11 @@ const AddNodePopover = () => { { const edges = useAppSelector((state) => state.nodes.edges); const viewport = useAppSelector((state) => state.nodes.viewport); const { shouldSnapToGrid, selectionMode } = useAppSelector(selector); - + const flowWrapper = useRef(null); + const cursorPosition = useRef(); const isValidConnection = useIsValidConnection(); const [borderRadius] = useToken('radii', ['base']); @@ -154,6 +156,17 @@ export const Flow = () => { flow.fitView(); }, []); + const onMouseMove = useCallback((event: MouseEvent) => { + const bounds = flowWrapper.current?.getBoundingClientRect(); + if (bounds) { + const pos = $flow.get()?.project({ + x: event.clientX - bounds.left, + y: event.clientY - bounds.top, + }); + cursorPosition.current = pos; + } + }, []); + useHotkeys(['Ctrl+c', 'Meta+c'], (e) => { e.preventDefault(); dispatch(selectionCopied()); @@ -166,18 +179,20 @@ export const Flow = () => { useHotkeys(['Ctrl+v', 'Meta+v'], (e) => { e.preventDefault(); - dispatch(selectionPasted()); + dispatch(selectionPasted({ cursorPosition: cursorPosition.current })); }); return ( { return { imageDTO, - progressImage: system.progressImage, + progressImage: system.denoiseProgress?.progress_image, }; }); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx index 6542713942..447dfcbd97 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/EmbedWorkflowCheckbox.tsx @@ -27,7 +27,7 @@ const EmbedWorkflowCheckbox = ({ nodeId }: { nodeId: string }) => { return ( - Embed Workflow + Workflow { const inputConnectionFieldNames = useConnectionInputFieldNames(nodeId); const inputAnyOrDirectFieldNames = useAnyOrDirectInputFieldNames(nodeId); const outputFieldNames = useOutputFieldNames(nodeId); - const withFooter = useWithFooter(nodeId); return ( @@ -43,7 +41,7 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { h: 'full', py: 2, gap: 1, - borderBottomRadius: withFooter ? 0 : 'base', + borderBottomRadius: 0, }} > @@ -76,7 +74,7 @@ const InvocationNode = ({ nodeId, isOpen, label, type, selected }: Props) => { ))} - {withFooter && } + )} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx index 320b56b057..ba1f7977ab 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeFooter.tsx @@ -3,12 +3,15 @@ import { DRAG_HANDLE_CLASSNAME } from 'features/nodes/types/constants'; import { memo } from 'react'; import EmbedWorkflowCheckbox from './EmbedWorkflowCheckbox'; import SaveToGalleryCheckbox from './SaveToGalleryCheckbox'; +import UseCacheCheckbox from './UseCacheCheckbox'; +import { useHasImageOutput } from 'features/nodes/hooks/useHasImageOutput'; type Props = { nodeId: string; }; const InvocationNodeFooter = ({ nodeId }: Props) => { + const hasImageOutput = useHasImageOutput(nodeId); return ( { justifyContent: 'space-between', }} > - - + + {hasImageOutput && } + {hasImageOutput && } ); }; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeNotes.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeNotes.tsx index 143785ecfe..8a96fb4230 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeNotes.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeNotes.tsx @@ -22,6 +22,7 @@ import { memo, useMemo } from 'react'; import { FaInfoCircle } from 'react-icons/fa'; import NotesTextarea from './NotesTextarea'; import { useDoNodeVersionsMatch } from 'features/nodes/hooks/useDoNodeVersionsMatch'; +import { useTranslation } from 'react-i18next'; interface Props { nodeId: string; @@ -32,6 +33,7 @@ const InvocationNodeNotes = ({ nodeId }: Props) => { const label = useNodeLabel(nodeId); const title = useNodeTemplateTitle(nodeId); const doVersionsMatch = useDoNodeVersionsMatch(nodeId); + const { t } = useTranslation(); return ( <> @@ -65,7 +67,7 @@ const InvocationNodeNotes = ({ nodeId }: Props) => { - {label || title || 'Unknown Node'} + {label || title || t('nodes.unknownNode')} @@ -82,6 +84,7 @@ export default memo(InvocationNodeNotes); const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { const data = useNodeData(nodeId); const nodeTemplate = useNodeTemplate(nodeId); + const { t } = useTranslation(); const title = useMemo(() => { if (data?.label && nodeTemplate?.title) { @@ -96,8 +99,8 @@ const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { return nodeTemplate.title; } - return 'Unknown Node'; - }, [data, nodeTemplate]); + return t('nodes.unknownNode'); + }, [data, nodeTemplate, t]); const versionComponent = useMemo(() => { if (!isInvocationNodeData(data) || !nodeTemplate) { @@ -107,7 +110,7 @@ const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { if (!data.version) { return ( - Version unknown + {t('nodes.versionUnknown')} ); } @@ -115,7 +118,7 @@ const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { if (!nodeTemplate.version) { return ( - Version {data.version} (unknown template) + {t('nodes.version')} {data.version} ({t('nodes.unknownTemplate')}) ); } @@ -123,7 +126,7 @@ const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { if (compare(data.version, nodeTemplate.version, '<')) { return ( - Version {data.version} (update node) + {t('nodes.version')} {data.version} ({t('nodes.updateNode')}) ); } @@ -131,16 +134,20 @@ const TooltipContent = memo(({ nodeId }: { nodeId: string }) => { if (compare(data.version, nodeTemplate.version, '>')) { return ( - Version {data.version} (update app) + {t('nodes.version')} {data.version} ({t('nodes.updateApp')}) ); } - return Version {data.version}; - }, [data, nodeTemplate]); + return ( + + {t('nodes.version')} {data.version} + + ); + }, [data, nodeTemplate, t]); if (!isInvocationNodeData(data)) { - return Unknown Node; + return {t('nodes.unknownNode')}; } return ( diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeStatusIndicator.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeStatusIndicator.tsx index 6e1da90ad8..28f6e08a4e 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeStatusIndicator.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/InvocationNodeStatusIndicator.tsx @@ -14,6 +14,7 @@ import { DRAG_HANDLE_CLASSNAME } from 'features/nodes/types/constants'; import { NodeExecutionState, NodeStatus } from 'features/nodes/types/types'; import { memo, useMemo } from 'react'; import { FaCheck, FaEllipsisH, FaExclamation } from 'react-icons/fa'; +import { useTranslation } from 'react-i18next'; type Props = { nodeId: string; @@ -72,10 +73,10 @@ type TooltipLabelProps = { const TooltipLabel = memo(({ nodeExecutionState }: TooltipLabelProps) => { const { status, progress, progressImage } = nodeExecutionState; + const { t } = useTranslation(); if (status === NodeStatus.PENDING) { return Pending; } - if (status === NodeStatus.IN_PROGRESS) { if (progressImage) { return ( @@ -97,18 +98,22 @@ const TooltipLabel = memo(({ nodeExecutionState }: TooltipLabelProps) => { } if (progress !== null) { - return In Progress ({Math.round(progress * 100)}%); + return ( + + {t('nodes.executionStateInProgress')} ({Math.round(progress * 100)}%) + + ); } - return In Progress; + return {t('nodes.executionStateInProgress')}; } if (status === NodeStatus.COMPLETED) { - return Completed; + return {t('nodes.executionStateCompleted')}; } if (status === NodeStatus.FAILED) { - return nodeExecutionState.error; + return {t('nodes.executionStateError')}; } return null; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/NotesTextarea.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/NotesTextarea.tsx index 68967096f9..5e85f5ba3c 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/NotesTextarea.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/NotesTextarea.tsx @@ -5,10 +5,12 @@ import { useNodeData } from 'features/nodes/hooks/useNodeData'; import { nodeNotesChanged } from 'features/nodes/store/nodesSlice'; import { isInvocationNodeData } from 'features/nodes/types/types'; import { ChangeEvent, memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; const NotesTextarea = ({ nodeId }: { nodeId: string }) => { const dispatch = useAppDispatch(); const data = useNodeData(nodeId); + const { t } = useTranslation(); const handleNotesChanged = useCallback( (e: ChangeEvent) => { dispatch(nodeNotesChanged({ nodeId, notes: e.target.value })); @@ -20,7 +22,7 @@ const NotesTextarea = ({ nodeId }: { nodeId: string }) => { } return ( - Notes + {t('nodes.notes')} { + const dispatch = useAppDispatch(); + const useCache = useUseCache(nodeId); + const handleChange = useCallback( + (e: ChangeEvent) => { + dispatch( + nodeUseCacheChanged({ + nodeId, + useCache: e.target.checked, + }) + ); + }, + [dispatch, nodeId] + ); + + return ( + + Use Cache + + + ); +}; + +export default memo(UseCacheCheckbox); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx index 2dbeeb2d9b..8e5c8f4e48 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/EditableFieldTitle.tsx @@ -14,6 +14,7 @@ import { fieldLabelChanged } from 'features/nodes/store/nodesSlice'; import { MouseEvent, memo, useCallback, useEffect, useState } from 'react'; import FieldTooltipContent from './FieldTooltipContent'; import { HANDLE_TOOLTIP_OPEN_DELAY } from 'features/nodes/types/constants'; +import { useTranslation } from 'react-i18next'; interface Props { nodeId: string; @@ -33,10 +34,11 @@ const EditableFieldTitle = forwardRef((props: Props, ref) => { } = props; const label = useFieldLabel(nodeId, fieldName); const fieldTemplateTitle = useFieldTemplateTitle(nodeId, fieldName, kind); + const { t } = useTranslation(); const dispatch = useAppDispatch(); const [localTitle, setLocalTitle] = useState( - label || fieldTemplateTitle || 'Unknown Field' + label || fieldTemplateTitle || t('nodes.unknownField') ); const handleSubmit = useCallback( @@ -44,10 +46,10 @@ const EditableFieldTitle = forwardRef((props: Props, ref) => { if (newTitle && (newTitle === label || newTitle === fieldTemplateTitle)) { return; } - setLocalTitle(newTitle || fieldTemplateTitle || 'Unknown Field'); + setLocalTitle(newTitle || fieldTemplateTitle || t('nodes.unknownField')); dispatch(fieldLabelChanged({ nodeId, fieldName, label: newTitle })); }, - [label, fieldTemplateTitle, dispatch, nodeId, fieldName] + [label, fieldTemplateTitle, dispatch, nodeId, fieldName, t] ); const handleChange = useCallback((newTitle: string) => { @@ -56,8 +58,8 @@ const EditableFieldTitle = forwardRef((props: Props, ref) => { useEffect(() => { // Another component may change the title; sync local title with global state - setLocalTitle(label || fieldTemplateTitle || 'Unknown Field'); - }, [label, fieldTemplateTitle]); + setLocalTitle(label || fieldTemplateTitle || t('nodes.unknownField')); + }, [label, fieldTemplateTitle, t]); return ( { const label = useFieldLabel(nodeId, fieldName); const fieldTemplateTitle = useFieldTemplateTitle(nodeId, fieldName, kind); const input = useFieldInputKind(nodeId, fieldName); + const { t } = useTranslation(); const skipEvent = useCallback((e: MouseEvent) => { e.preventDefault(); @@ -119,7 +121,9 @@ const FieldContextMenu = ({ nodeId, fieldName, kind, children }: Props) => { motionProps={menuListMotionProps} onContextMenu={skipEvent} > - + {menuItems} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/FieldTooltipContent.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/FieldTooltipContent.tsx index 1a47e81aa3..be66214a59 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/FieldTooltipContent.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/FieldTooltipContent.tsx @@ -8,6 +8,7 @@ import { } from 'features/nodes/types/types'; import { startCase } from 'lodash-es'; import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; interface Props { nodeId: string; @@ -19,6 +20,7 @@ const FieldTooltipContent = ({ nodeId, fieldName, kind }: Props) => { const field = useFieldData(nodeId, fieldName); const fieldTemplate = useFieldTemplate(nodeId, fieldName, kind); const isInputTemplate = isInputFieldTemplate(fieldTemplate); + const { t } = useTranslation(); const fieldTitle = useMemo(() => { if (isInputFieldValue(field)) { if (field.label && fieldTemplate?.title) { @@ -33,11 +35,11 @@ const FieldTooltipContent = ({ nodeId, fieldName, kind }: Props) => { return fieldTemplate.title; } - return 'Unknown Field'; + return t('nodes.unknownField'); } else { - return fieldTemplate?.title || 'Unknown Field'; + return fieldTemplate?.title || t('nodes.unknownField'); } - }, [field, fieldTemplate]); + }, [field, fieldTemplate, t]); return ( diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx index fa5c4533c2..5dc1305900 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx @@ -15,6 +15,8 @@ import SDXLMainModelInputField from './inputs/SDXLMainModelInputField'; import SchedulerInputField from './inputs/SchedulerInputField'; import StringInputField from './inputs/StringInputField'; import VaeModelInputField from './inputs/VaeModelInputField'; +import IPAdapterModelInputField from './inputs/IPAdapterModelInputField'; +import BoardInputField from './inputs/BoardInputField'; type InputFieldProps = { nodeId: string; @@ -29,7 +31,11 @@ const InputFieldRenderer = ({ nodeId, fieldName }: InputFieldProps) => { return Output field in input: {field?.type}; } - if (field?.type === 'string' && fieldTemplate?.type === 'string') { + if ( + (field?.type === 'string' && fieldTemplate?.type === 'string') || + (field?.type === 'StringPolymorphic' && + fieldTemplate?.type === 'StringPolymorphic') + ) { return ( { ); } - if (field?.type === 'boolean' && fieldTemplate?.type === 'boolean') { + if ( + (field?.type === 'boolean' && fieldTemplate?.type === 'boolean') || + (field?.type === 'BooleanPolymorphic' && + fieldTemplate?.type === 'BooleanPolymorphic') + ) { return ( { if ( (field?.type === 'integer' && fieldTemplate?.type === 'integer') || - (field?.type === 'float' && fieldTemplate?.type === 'float') + (field?.type === 'float' && fieldTemplate?.type === 'float') || + (field?.type === 'FloatPolymorphic' && + fieldTemplate?.type === 'FloatPolymorphic') || + (field?.type === 'IntegerPolymorphic' && + fieldTemplate?.type === 'IntegerPolymorphic') ) { return ( { ); } - if (field?.type === 'ImageField' && fieldTemplate?.type === 'ImageField') { + if ( + (field?.type === 'ImageField' && fieldTemplate?.type === 'ImageField') || + (field?.type === 'ImagePolymorphic' && + fieldTemplate?.type === 'ImagePolymorphic') + ) { return ( { ); } + if (field?.type === 'BoardField' && fieldTemplate?.type === 'BoardField') { + return ( + + ); + } + if ( field?.type === 'MainModelField' && fieldTemplate?.type === 'MainModelField' @@ -147,6 +175,19 @@ const InputFieldRenderer = ({ nodeId, fieldName }: InputFieldProps) => { ); } + if ( + field?.type === 'IPAdapterModelField' && + fieldTemplate?.type === 'IPAdapterModelField' + ) { + return ( + + ); + } + if (field?.type === 'ColorField' && fieldTemplate?.type === 'ColorField') { return ( { const dispatch = useAppDispatch(); const { isMouseOverNode, handleMouseOut, handleMouseOver } = useMouseOverNode(nodeId); - + const { t } = useTranslation(); const handleRemoveField = useCallback(() => { dispatch(workflowExposedFieldRemoved({ nodeId, fieldName })); }, [dispatch, fieldName, nodeId]); @@ -75,8 +76,8 @@ const LinearViewField = ({ nodeId, fieldName }: Props) => { +) => { + const { nodeId, field } = props; + const dispatch = useAppDispatch(); + + const { data, hasBoards } = useListAllBoardsQuery(undefined, { + selectFromResult: ({ data }) => { + const boards: SelectItem[] = [ + { + label: 'None', + value: 'none', + }, + ]; + data?.forEach(({ board_id, board_name }) => { + boards.push({ + label: board_name, + value: board_id, + }); + }); + return { + data: boards, + hasBoards: boards.length > 1, + }; + }, + }); + + const handleChange = useCallback( + (v: string | null) => { + dispatch( + fieldBoardValueChanged({ + nodeId, + fieldName: field.name, + value: v && v !== 'none' ? { board_id: v } : undefined, + }) + ); + }, + [dispatch, field.name, nodeId] + ); + + return ( + + ); +}; + +export default memo(BoardInputFieldComponent); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/BooleanInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/BooleanInputField.tsx index c9f83403f6..d14756dbdb 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/BooleanInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/BooleanInputField.tsx @@ -4,12 +4,17 @@ import { fieldBooleanValueChanged } from 'features/nodes/store/nodesSlice'; import { BooleanInputFieldTemplate, BooleanInputFieldValue, + BooleanPolymorphicInputFieldTemplate, + BooleanPolymorphicInputFieldValue, FieldComponentProps, } from 'features/nodes/types/types'; import { ChangeEvent, memo, useCallback } from 'react'; const BooleanInputFieldComponent = ( - props: FieldComponentProps + props: FieldComponentProps< + BooleanInputFieldValue | BooleanPolymorphicInputFieldValue, + BooleanInputFieldTemplate | BooleanPolymorphicInputFieldTemplate + > ) => { const { nodeId, field } = props; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/EnumInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/EnumInputField.tsx index 84ecf4842e..277020d847 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/EnumInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/EnumInputField.tsx @@ -35,7 +35,11 @@ const EnumInputFieldComponent = ( value={field.value} > {fieldTemplate.options.map((option) => ( - + ))} ); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterInputField.tsx new file mode 100644 index 0000000000..5d5567e515 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterInputField.tsx @@ -0,0 +1,17 @@ +import { + IPAdapterInputFieldTemplate, + IPAdapterInputFieldValue, + FieldComponentProps, +} from 'features/nodes/types/types'; +import { memo } from 'react'; + +const IPAdapterInputFieldComponent = ( + _props: FieldComponentProps< + IPAdapterInputFieldValue, + IPAdapterInputFieldTemplate + > +) => { + return null; +}; + +export default memo(IPAdapterInputFieldComponent); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx new file mode 100644 index 0000000000..637fa79f60 --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/IPAdapterModelInputField.tsx @@ -0,0 +1,100 @@ +import { SelectItem } from '@mantine/core'; +import { useAppDispatch } from 'app/store/storeHooks'; +import IAIMantineSelect from 'common/components/IAIMantineSelect'; +import { fieldIPAdapterModelValueChanged } from 'features/nodes/store/nodesSlice'; +import { + IPAdapterModelInputFieldTemplate, + IPAdapterModelInputFieldValue, + FieldComponentProps, +} from 'features/nodes/types/types'; +import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; +import { modelIdToIPAdapterModelParam } from 'features/parameters/util/modelIdToIPAdapterModelParams'; +import { forEach } from 'lodash-es'; +import { memo, useCallback, useMemo } from 'react'; +import { useGetIPAdapterModelsQuery } from 'services/api/endpoints/models'; + +const IPAdapterModelInputFieldComponent = ( + props: FieldComponentProps< + IPAdapterModelInputFieldValue, + IPAdapterModelInputFieldTemplate + > +) => { + const { nodeId, field } = props; + const ipAdapterModel = field.value; + const dispatch = useAppDispatch(); + + const { data: ipAdapterModels } = useGetIPAdapterModelsQuery(); + + // grab the full model entity from the RTK Query cache + const selectedModel = useMemo( + () => + ipAdapterModels?.entities[ + `${ipAdapterModel?.base_model}/ip_adapter/${ipAdapterModel?.model_name}` + ] ?? null, + [ + ipAdapterModel?.base_model, + ipAdapterModel?.model_name, + ipAdapterModels?.entities, + ] + ); + + const data = useMemo(() => { + if (!ipAdapterModels) { + return []; + } + + const data: SelectItem[] = []; + + forEach(ipAdapterModels.entities, (model, id) => { + if (!model) { + return; + } + + data.push({ + value: id, + label: model.model_name, + group: MODEL_TYPE_MAP[model.base_model], + }); + }); + + return data; + }, [ipAdapterModels]); + + const handleValueChanged = useCallback( + (v: string | null) => { + if (!v) { + return; + } + + const newIPAdapterModel = modelIdToIPAdapterModelParam(v); + + if (!newIPAdapterModel) { + return; + } + + dispatch( + fieldIPAdapterModelValueChanged({ + nodeId, + fieldName: field.name, + value: newIPAdapterModel, + }) + ); + }, + [dispatch, field.name, nodeId] + ); + + return ( + + ); +}; + +export default memo(IPAdapterModelInputFieldComponent); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageInputField.tsx index 7f96675792..6099593c2a 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/ImageInputField.tsx @@ -12,6 +12,8 @@ import { FieldComponentProps, ImageInputFieldTemplate, ImageInputFieldValue, + ImagePolymorphicInputFieldTemplate, + ImagePolymorphicInputFieldValue, } from 'features/nodes/types/types'; import { memo, useCallback, useMemo } from 'react'; import { FaUndo } from 'react-icons/fa'; @@ -19,7 +21,10 @@ import { useGetImageDTOQuery } from 'services/api/endpoints/images'; import { PostUploadAction } from 'services/api/types'; const ImageInputFieldComponent = ( - props: FieldComponentProps + props: FieldComponentProps< + ImageInputFieldValue | ImagePolymorphicInputFieldValue, + ImageInputFieldTemplate | ImagePolymorphicInputFieldTemplate + > ) => { const { nodeId, field } = props; const dispatch = useAppDispatch(); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/LoRAModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/LoRAModelInputField.tsx index 7f8f179add..3ca87b3e85 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/LoRAModelInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/LoRAModelInputField.tsx @@ -14,6 +14,7 @@ import { modelIdToLoRAModelParam } from 'features/parameters/util/modelIdToLoRAM import { forEach } from 'lodash-es'; import { memo, useCallback, useMemo } from 'react'; import { useGetLoRAModelsQuery } from 'services/api/endpoints/models'; +import { useTranslation } from 'react-i18next'; const LoRAModelInputFieldComponent = ( props: FieldComponentProps< @@ -25,6 +26,7 @@ const LoRAModelInputFieldComponent = ( const lora = field.value; const dispatch = useAppDispatch(); const { data: loraModels } = useGetLoRAModelsQuery(); + const { t } = useTranslation(); const data = useMemo(() => { if (!loraModels) { @@ -92,9 +94,11 @@ const LoRAModelInputFieldComponent = ( 0 ? 'Select a LoRA' : 'No LoRAs available'} + placeholder={ + data.length > 0 ? t('models.selectLoRA') : t('models.noLoRAsAvailable') + } data={data} - nothingFound="No matching LoRAs" + nothingFound={t('models.noMatchingLoRAs')} itemComponent={IAIMantineSelectItemWithTooltip} disabled={data.length === 0} filter={(value, item: SelectItem) => diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/MainModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/MainModelInputField.tsx index f89177576c..08483986e3 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/MainModelInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/MainModelInputField.tsx @@ -19,6 +19,7 @@ import { useGetMainModelsQuery, useGetOnnxModelsQuery, } from 'services/api/endpoints/models'; +import { useTranslation } from 'react-i18next'; const MainModelInputFieldComponent = ( props: FieldComponentProps< @@ -29,7 +30,7 @@ const MainModelInputFieldComponent = ( const { nodeId, field } = props; const dispatch = useAppDispatch(); const isSyncModelEnabled = useFeatureStatus('syncModels').isFeatureEnabled; - + const { t } = useTranslation(); const { data: onnxModels, isLoading: isLoadingOnnxModels } = useGetOnnxModelsQuery(NON_SDXL_MAIN_MODELS); const { data: mainModels, isLoading: isLoadingMainModels } = @@ -127,7 +128,9 @@ const MainModelInputFieldComponent = ( tooltip={selectedModel?.description} value={selectedModel?.id} placeholder={ - data.length > 0 ? 'Select a model' : 'No models available' + data.length > 0 + ? t('models.selectModel') + : t('models.noModelsAvailable') } data={data} error={!selectedModel} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/NumberInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/NumberInputField.tsx index 61387d751b..2afbec1df8 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/NumberInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/NumberInputField.tsx @@ -12,15 +12,25 @@ import { FieldComponentProps, FloatInputFieldTemplate, FloatInputFieldValue, + FloatPolymorphicInputFieldTemplate, + FloatPolymorphicInputFieldValue, IntegerInputFieldTemplate, IntegerInputFieldValue, + IntegerPolymorphicInputFieldTemplate, + IntegerPolymorphicInputFieldValue, } from 'features/nodes/types/types'; import { memo, useEffect, useMemo, useState } from 'react'; const NumberInputFieldComponent = ( props: FieldComponentProps< - IntegerInputFieldValue | FloatInputFieldValue, - IntegerInputFieldTemplate | FloatInputFieldTemplate + | IntegerInputFieldValue + | IntegerPolymorphicInputFieldValue + | FloatInputFieldValue + | FloatPolymorphicInputFieldValue, + | IntegerInputFieldTemplate + | IntegerPolymorphicInputFieldTemplate + | FloatInputFieldTemplate + | FloatPolymorphicInputFieldTemplate > ) => { const { nodeId, field, fieldTemplate } = props; diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/RefinerModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/RefinerModelInputField.tsx index edad33d342..19f2c5ac8e 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/RefinerModelInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/RefinerModelInputField.tsx @@ -89,7 +89,7 @@ const RefinerModelInputFieldComponent = ( return isLoading ? ( @@ -99,7 +99,11 @@ const RefinerModelInputFieldComponent = ( className="nowheel nodrag" tooltip={selectedModel?.description} value={selectedModel?.id} - placeholder={data.length > 0 ? 'Select a model' : 'No models available'} + placeholder={ + data.length > 0 + ? t('models.selectModel') + : t('models.noModelsAvailable') + } data={data} error={!selectedModel} disabled={data.length === 0} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SDXLMainModelInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SDXLMainModelInputField.tsx index ffb4d8d412..89cb8d5150 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SDXLMainModelInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SDXLMainModelInputField.tsx @@ -116,7 +116,7 @@ const ModelInputFieldComponent = ( return isLoading ? ( @@ -126,7 +126,11 @@ const ModelInputFieldComponent = ( className="nowheel nodrag" tooltip={selectedModel?.description} value={selectedModel?.id} - placeholder={data.length > 0 ? 'Select a model' : 'No models available'} + placeholder={ + data.length > 0 + ? t('models.selectModel') + : t('models.noModelsAvailable') + } data={data} error={!selectedModel} disabled={data.length === 0} diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SchedulerInputField.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SchedulerInputField.tsx index 557c128942..e4a3fb2a3d 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SchedulerInputField.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/inputs/SchedulerInputField.tsx @@ -65,11 +65,6 @@ const SchedulerInputField = ( return ( + props: FieldComponentProps< + StringInputFieldValue | StringPolymorphicInputFieldValue, + StringInputFieldTemplate | StringPolymorphicInputFieldTemplate + > ) => { const { nodeId, field, fieldTemplate } = props; const dispatch = useAppDispatch(); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx index 283e5d115d..e31ac19be0 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/common/NodeTitle.tsx @@ -12,6 +12,7 @@ import { useNodeTemplateTitle } from 'features/nodes/hooks/useNodeTemplateTitle' import { nodeLabelChanged } from 'features/nodes/store/nodesSlice'; import { DRAG_HANDLE_CLASSNAME } from 'features/nodes/types/constants'; import { MouseEvent, memo, useCallback, useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; type Props = { nodeId: string; @@ -22,16 +23,17 @@ const NodeTitle = ({ nodeId, title }: Props) => { const dispatch = useAppDispatch(); const label = useNodeLabel(nodeId); const templateTitle = useNodeTemplateTitle(nodeId); + const { t } = useTranslation(); const [localTitle, setLocalTitle] = useState(''); const handleSubmit = useCallback( async (newTitle: string) => { dispatch(nodeLabelChanged({ nodeId, label: newTitle })); setLocalTitle( - newTitle || title || templateTitle || 'Problem Setting Title' + label || title || templateTitle || t('nodes.problemSettingTitle') ); }, - [dispatch, nodeId, title, templateTitle] + [dispatch, nodeId, title, templateTitle, label, t] ); const handleChange = useCallback((newTitle: string) => { @@ -40,8 +42,10 @@ const NodeTitle = ({ nodeId, title }: Props) => { useEffect(() => { // Another component may change the title; sync local title with global state - setLocalTitle(label || title || templateTitle || 'Problem Setting Title'); - }, [label, templateTitle, title]); + setLocalTitle( + label || title || templateTitle || t('nodes.problemSettingTitle') + ); + }, [label, templateTitle, title, t]); return ( { borderRadius: 'md', pointerEvents: 'none', transitionProperty: 'common', - transitionDuration: 'normal', + transitionDuration: '0.1s', opacity: 0.7, shadow: isInProgress ? inProgressShadow : undefined, zIndex: -1, diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/NodeOpacitySlider.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/NodeOpacitySlider.tsx index 7818dece72..b9078017d4 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/NodeOpacitySlider.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/BottomLeftPanel/NodeOpacitySlider.tsx @@ -8,10 +8,12 @@ import { import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { nodeOpacityChanged } from 'features/nodes/store/nodesSlice'; import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; export default function NodeOpacitySlider() { const dispatch = useAppDispatch(); const nodeOpacity = useAppSelector((state) => state.nodes.nodeOpacity); + const { t } = useTranslation(); const handleChange = useCallback( (v: number) => { @@ -23,7 +25,7 @@ export default function NodeOpacitySlider() { return ( { - return ( - - - - - ); -}; - -export default memo(WorkflowEditorControls); diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopLeftPanel/TopLeftPanel.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopLeftPanel/TopLeftPanel.tsx index 73296ef52d..d355eab348 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopLeftPanel/TopLeftPanel.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopLeftPanel/TopLeftPanel.tsx @@ -4,10 +4,11 @@ import IAIIconButton from 'common/components/IAIIconButton'; import { addNodePopoverOpened } from 'features/nodes/store/nodesSlice'; import { memo, useCallback } from 'react'; import { FaPlus } from 'react-icons/fa'; +import { useTranslation } from 'react-i18next'; const TopLeftPanel = () => { const dispatch = useAppDispatch(); - + const { t } = useTranslation(); const handleOpenAddNodePopover = useCallback(() => { dispatch(addNodePopoverOpened()); }, [dispatch]); @@ -15,8 +16,8 @@ const TopLeftPanel = () => { return ( } onClick={handleOpenAddNodePopover} /> diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings.tsx index c423750cd8..b822b2abb9 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/panels/TopRightPanel/WorkflowEditorSettings.tsx @@ -29,6 +29,7 @@ import { ChangeEvent, memo, useCallback } from 'react'; import { FaCog } from 'react-icons/fa'; import { SelectionMode } from 'reactflow'; import ReloadNodeTemplatesButton from '../TopCenterPanel/ReloadSchemaButton'; +import { useTranslation } from 'react-i18next'; const formLabelProps: FormLabelProps = { fontWeight: 600, @@ -101,12 +102,14 @@ const WorkflowEditorSettings = forwardRef((_, ref) => { [dispatch] ); + const { t } = useTranslation(); + return ( <> } onClick={onOpen} /> @@ -114,7 +117,7 @@ const WorkflowEditorSettings = forwardRef((_, ref) => { - Workflow Editor Settings + {t('nodes.workflowSettings')} { formLabelProps={formLabelProps} onChange={handleChangeShouldAnimate} isChecked={shouldAnimateEdges} - label="Animated Edges" - helperText="Animate selected edges and edges connected to selected nodes" + label={t('nodes.animatedEdges')} + helperText={t('nodes.animatedEdgesHelp')} /> Advanced @@ -162,8 +165,8 @@ const WorkflowEditorSettings = forwardRef((_, ref) => { formLabelProps={formLabelProps} isChecked={shouldValidateGraph} onChange={handleChangeShouldValidate} - label="Validate Connections and Graph" - helperText="Prevent invalid connections from being made, and invalid graphs from being invoked" + label={t('nodes.validateConnections')} + helperText={t('nodes.validateConnectionsHelp')} /> diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx index f40d5ddd80..fd1f20b7a1 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/NodeEditorPanelGroup.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react'; -import ProcessButtons from 'features/parameters/components/ProcessButtons/ProcessButtons'; +import QueueControls from 'features/queue/components/QueueControls'; import ResizeHandle from 'features/ui/components/tabs/ResizeHandle'; import { usePanelStorage } from 'features/ui/hooks/usePanelStorage'; import { memo, useCallback, useRef, useState } from 'react'; @@ -11,6 +11,7 @@ import { import 'reactflow/dist/style.css'; import InspectorPanel from './inspector/InspectorPanel'; import WorkflowPanel from './workflow/WorkflowPanel'; +import ParamIterations from 'features/parameters/components/Parameters/Core/ParamIterations'; const NodeEditorPanelGroup = () => { const [isTopPanelCollapsed, setIsTopPanelCollapsed] = useState(false); @@ -26,10 +27,25 @@ const NodeEditorPanelGroup = () => { return ( - + + + + { +type Props = PropsWithChildren & { + maxHeight?: StyleProps['maxHeight']; +}; + +const ScrollableContent = ({ children, maxHeight }: Props) => { return ( @@ -35,7 +40,7 @@ const ScrollableContent = (props: PropsWithChildren) => { }, }} > - {props.children} + {children} diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorDetailsTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorDetailsTab.tsx index d626a92021..ffc260b95a 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorDetailsTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorDetailsTab.tsx @@ -9,6 +9,7 @@ import { memo } from 'react'; import NotesTextarea from '../../flow/nodes/Invocation/NotesTextarea'; import NodeTitle from '../../flow/nodes/common/NodeTitle'; import ScrollableContent from '../ScrollableContent'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -34,9 +35,12 @@ const selector = createSelector( const InspectorDetailsTab = () => { const { data, template } = useAppSelector(selector); + const { t } = useTranslation(); if (!template || !data) { - return ; + return ( + + ); } return ; diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx index f6b229f997..f4abc621b4 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorOutputsTab.tsx @@ -11,6 +11,7 @@ import { ImageOutput } from 'services/api/types'; import { AnyResult } from 'services/events/types'; import ScrollableContent from '../ScrollableContent'; import ImageOutputPreview from './outputs/ImageOutputPreview'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -40,13 +41,18 @@ const selector = createSelector( const InspectorOutputsTab = () => { const { node, template, nes } = useAppSelector(selector); + const { t } = useTranslation(); if (!node || !nes || !isInvocationNode(node)) { - return ; + return ( + + ); } if (nes.outputs.length === 0) { - return ; + return ( + + ); } return ( @@ -77,7 +83,7 @@ const InspectorOutputsTab = () => { /> )) ) : ( - + )} diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx index 525b58b1cb..caa01e5b67 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/inspector/InspectorTemplateTab.tsx @@ -5,6 +5,7 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { IAINoContentFallback } from 'common/components/IAIImageFallback'; import DataViewer from 'features/gallery/components/ImageMetadataViewer/DataViewer'; import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -29,12 +30,15 @@ const selector = createSelector( const NodeTemplateInspector = () => { const { template } = useAppSelector(selector); + const { t } = useTranslation(); if (!template) { - return ; + return ( + + ); } - return ; + return ; }; export default memo(NodeTemplateInspector); diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowGeneralTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowGeneralTab.tsx index e36675b71f..ad1070096e 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowGeneralTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowGeneralTab.tsx @@ -16,6 +16,7 @@ import { } from 'features/nodes/store/nodesSlice'; import { ChangeEvent, memo, useCallback } from 'react'; import ScrollableContent from '../ScrollableContent'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -85,6 +86,8 @@ const WorkflowGeneralTab = () => { [dispatch] ); + const { t } = useTranslation(); + return ( { }} > - + - + - Short Description + {t('nodes.workflowDescription')} { /> - Notes + {t('nodes.workflowNotes')} { const workflow = useWorkflow(); + const { t } = useTranslation(); return ( { h: 'full', }} > - + ); }; diff --git a/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowLinearTab.tsx b/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowLinearTab.tsx index d1cecefbff..cf9e11d9d6 100644 --- a/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowLinearTab.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/sidePanel/workflow/WorkflowLinearTab.tsx @@ -7,6 +7,7 @@ import { IAINoContentFallback } from 'common/components/IAIImageFallback'; import { memo } from 'react'; import LinearViewField from '../../flow/nodes/Invocation/fields/LinearViewField'; import ScrollableContent from '../ScrollableContent'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -20,6 +21,7 @@ const selector = createSelector( const WorkflowLinearTab = () => { const { fields } = useAppSelector(selector); + const { t } = useTranslation(); return ( { )) ) : ( )} diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useAnyOrDirectInputFieldNames.ts b/invokeai/frontend/web/src/features/nodes/hooks/useAnyOrDirectInputFieldNames.ts index 5822d2ac53..36f2e8a62c 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useAnyOrDirectInputFieldNames.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useAnyOrDirectInputFieldNames.ts @@ -5,6 +5,10 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { map } from 'lodash-es'; import { useMemo } from 'react'; import { isInvocationNode } from '../types/types'; +import { + POLYMORPHIC_TYPES, + TYPES_WITH_INPUT_COMPONENTS, +} from '../types/constants'; export const useAnyOrDirectInputFieldNames = (nodeId: string) => { const selector = useMemo( @@ -21,7 +25,12 @@ export const useAnyOrDirectInputFieldNames = (nodeId: string) => { return []; } return map(nodeTemplate.inputs) - .filter((field) => ['any', 'direct'].includes(field.input)) + .filter( + (field) => + (['any', 'direct'].includes(field.input) || + POLYMORPHIC_TYPES.includes(field.type)) && + TYPES_WITH_INPUT_COMPONENTS.includes(field.type) + ) .filter((field) => !field.ui_hidden) .sort((a, b) => (a.ui_order ?? 0) - (b.ui_order ?? 0)) .map((field) => field.name) diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts b/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts index 24982f591e..40c3f029d7 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useBuildNodeData.ts @@ -143,9 +143,10 @@ export const useBuildNodeData = () => { notes: '', isOpen: true, embedWorkflow: false, - isIntermediate: true, + isIntermediate: type === 'save_image' ? false : true, inputs, outputs, + useCache: template.useCache, }, }; diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useConnectionInputFieldNames.ts b/invokeai/frontend/web/src/features/nodes/hooks/useConnectionInputFieldNames.ts index 93125a3499..eea874cc87 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useConnectionInputFieldNames.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useConnectionInputFieldNames.ts @@ -4,6 +4,10 @@ import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { map } from 'lodash-es'; import { useMemo } from 'react'; +import { + POLYMORPHIC_TYPES, + TYPES_WITH_INPUT_COMPONENTS, +} from '../types/constants'; import { isInvocationNode } from '../types/types'; export const useConnectionInputFieldNames = (nodeId: string) => { @@ -21,7 +25,12 @@ export const useConnectionInputFieldNames = (nodeId: string) => { return []; } return map(nodeTemplate.inputs) - .filter((field) => field.input === 'connection') + .filter( + (field) => + (field.input === 'connection' && + !POLYMORPHIC_TYPES.includes(field.type)) || + !TYPES_WITH_INPUT_COMPONENTS.includes(field.type) + ) .filter((field) => !field.ui_hidden) .sort((a, b) => (a.ui_order ?? 0) - (b.ui_order ?? 0)) .map((field) => field.name) diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useHasImageOutput.ts b/invokeai/frontend/web/src/features/nodes/hooks/useHasImageOutput.ts index 0976ededd1..111e48a45f 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useHasImageOutput.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useHasImageOutput.ts @@ -17,8 +17,12 @@ export const useHasImageOutput = (nodeId: string) => { if (!isInvocationNode(node)) { return false; } - return some(node.data.outputs, (output) => - IMAGE_FIELDS.includes(output.type) + return some( + node.data.outputs, + (output) => + IMAGE_FIELDS.includes(output.type) && + // the image primitive node does not actually save the image, do not show the image-saving checkboxes + node.data.type !== 'image' ); }, defaultSelectorOptions diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useIsValidConnection.ts b/invokeai/frontend/web/src/features/nodes/hooks/useIsValidConnection.ts index d1d10bb7e7..0439445c24 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useIsValidConnection.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useIsValidConnection.ts @@ -3,12 +3,7 @@ import graphlib from '@dagrejs/graphlib'; import { useAppSelector } from 'app/store/storeHooks'; import { useCallback } from 'react'; import { Connection, Edge, Node, useReactFlow } from 'reactflow'; -import { - COLLECTION_MAP, - COLLECTION_TYPES, - POLYMORPHIC_TO_SINGLE_MAP, - POLYMORPHIC_TYPES, -} from '../types/constants'; +import { validateSourceAndTargetTypes } from '../store/util/validateSourceAndTargetTypes'; import { InvocationNodeData } from '../types/types'; /** @@ -23,11 +18,6 @@ export const useIsValidConnection = () => { ); const isValidConnection = useCallback( ({ source, sourceHandle, target, targetHandle }: Connection): boolean => { - if (!shouldValidateGraph) { - // manual override! - return true; - } - const edges = flow.getEdges(); const nodes = flow.getNodes(); // Connection must have valid targets @@ -52,6 +42,16 @@ export const useIsValidConnection = () => { return false; } + if (source === target) { + // Don't allow nodes to connect to themselves, even if validation is disabled + return false; + } + + if (!shouldValidateGraph) { + // manual override! + return true; + } + if ( edges .filter((edge) => { @@ -76,60 +76,8 @@ export const useIsValidConnection = () => { return false; } - /** - * Connection types must be the same for a connection, with exceptions: - * - CollectionItem can connect to any non-Collection - * - Non-Collections can connect to CollectionItem - * - Anything (non-Collections, Collections, Polymorphics) can connect to Polymorphics of the same base type - * - Generic Collection can connect to any other Collection or Polymorphic - * - Any Collection can connect to a Generic Collection - */ - - if (sourceType !== targetType) { - const isCollectionItemToNonCollection = - sourceType === 'CollectionItem' && - !COLLECTION_TYPES.includes(targetType); - - const isNonCollectionToCollectionItem = - targetType === 'CollectionItem' && - !COLLECTION_TYPES.includes(sourceType) && - !POLYMORPHIC_TYPES.includes(sourceType); - - const isAnythingToPolymorphicOfSameBaseType = - POLYMORPHIC_TYPES.includes(targetType) && - (() => { - if (!POLYMORPHIC_TYPES.includes(targetType)) { - return false; - } - const baseType = - POLYMORPHIC_TO_SINGLE_MAP[ - targetType as keyof typeof POLYMORPHIC_TO_SINGLE_MAP - ]; - - const collectionType = - COLLECTION_MAP[baseType as keyof typeof COLLECTION_MAP]; - - return sourceType === baseType || sourceType === collectionType; - })(); - - const isGenericCollectionToAnyCollectionOrPolymorphic = - sourceType === 'Collection' && - (COLLECTION_TYPES.includes(targetType) || - POLYMORPHIC_TYPES.includes(targetType)); - - const isCollectionToGenericCollection = - targetType === 'Collection' && COLLECTION_TYPES.includes(sourceType); - - const isIntToFloat = sourceType === 'integer' && targetType === 'float'; - - return ( - isCollectionItemToNonCollection || - isNonCollectionToCollectionItem || - isAnythingToPolymorphicOfSameBaseType || - isGenericCollectionToAnyCollectionOrPolymorphic || - isCollectionToGenericCollection || - isIntToFloat - ); + if (!validateSourceAndTargetTypes(sourceType, targetType)) { + return false; } // Graphs much be acyclic (no loops!) diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useLoadWorkflowFromFile.tsx b/invokeai/frontend/web/src/features/nodes/hooks/useLoadWorkflowFromFile.tsx index 7f015ac5eb..890fa7a72d 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useLoadWorkflowFromFile.tsx +++ b/invokeai/frontend/web/src/features/nodes/hooks/useLoadWorkflowFromFile.tsx @@ -9,10 +9,12 @@ import { memo, useCallback } from 'react'; import { ZodError } from 'zod'; import { fromZodError, fromZodIssue } from 'zod-validation-error'; import { workflowLoadRequested } from '../store/actions'; +import { useTranslation } from 'react-i18next'; export const useLoadWorkflowFromFile = () => { const dispatch = useAppDispatch(); const logger = useLogger('nodes'); + const { t } = useTranslation(); const loadWorkflowFromFile = useCallback( (file: File | null) => { if (!file) { @@ -28,7 +30,7 @@ export const useLoadWorkflowFromFile = () => { if (!result.success) { const { message } = fromZodError(result.error, { - prefix: 'Workflow Validation Error', + prefix: t('nodes.workflowValidation'), }); logger.error({ error: parseify(result.error) }, message); @@ -36,7 +38,7 @@ export const useLoadWorkflowFromFile = () => { dispatch( addToast( makeToast({ - title: 'Unable to Validate Workflow', + title: t('nodes.unableToValidateWorkflow'), status: 'error', duration: 5000, }) @@ -54,7 +56,7 @@ export const useLoadWorkflowFromFile = () => { dispatch( addToast( makeToast({ - title: 'Unable to Load Workflow', + title: t('nodes.unableToLoadWorkflow'), status: 'error', }) ) @@ -64,7 +66,7 @@ export const useLoadWorkflowFromFile = () => { reader.readAsText(file); }, - [dispatch, logger] + [dispatch, logger, t] ); return loadWorkflowFromFile; diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts b/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts new file mode 100644 index 0000000000..7416d7e66e --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/hooks/useUseCache.ts @@ -0,0 +1,29 @@ +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { useMemo } from 'react'; +import { isInvocationNode } from '../types/types'; + +export const useUseCache = (nodeId: string) => { + const selector = useMemo( + () => + createSelector( + stateSelector, + ({ nodes }) => { + const node = nodes.nodes.find((node) => node.id === nodeId); + if (!isInvocationNode(node)) { + return false; + } + // cast to boolean to support older workflows that didn't have useCache + // TODO: handle this better somehow + return node.data.useCache; + }, + defaultSelectorOptions + ), + [nodeId] + ); + + const useCache = useAppSelector(selector); + return useCache; +}; diff --git a/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts b/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts index 8bde120005..57941eaec8 100644 --- a/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts +++ b/invokeai/frontend/web/src/features/nodes/hooks/useWithFooter.ts @@ -7,7 +7,7 @@ import { useMemo } from 'react'; import { FOOTER_FIELDS } from '../types/constants'; import { isInvocationNode } from '../types/types'; -export const useWithFooter = (nodeId: string) => { +export const useHasImageOutputs = (nodeId: string) => { const selector = useMemo( () => createSelector( diff --git a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts index 2ebed877ac..01de3de883 100644 --- a/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts +++ b/invokeai/frontend/web/src/features/nodes/store/nodesSlice.ts @@ -1,5 +1,5 @@ import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { cloneDeep, forEach, isEqual, map, uniqBy } from 'lodash-es'; +import { cloneDeep, forEach, isEqual, uniqBy } from 'lodash-es'; import { addEdge, applyEdgeChanges, @@ -16,19 +16,21 @@ import { OnConnectStartParams, SelectionMode, Viewport, + XYPosition, } from 'reactflow'; import { receivedOpenAPISchema } from 'services/api/thunks/schema'; -import { sessionCanceled, sessionInvoked } from 'services/api/thunks/session'; import { ImageField } from 'services/api/types'; import { appSocketGeneratorProgress, appSocketInvocationComplete, appSocketInvocationError, appSocketInvocationStarted, + appSocketQueueItemStatusChanged, } from 'services/events/actions'; import { v4 as uuidv4 } from 'uuid'; import { DRAG_HANDLE_CLASSNAME } from '../types/constants'; import { + BoardInputFieldValue, BooleanInputFieldValue, ColorInputFieldValue, ControlNetModelInputFieldValue, @@ -41,6 +43,7 @@ import { IntegerInputFieldValue, InvocationNodeData, InvocationTemplate, + IPAdapterModelInputFieldValue, isInvocationNode, isNotesNode, LoRAModelInputFieldValue, @@ -260,6 +263,20 @@ const nodesSlice = createSlice({ } node.data.embedWorkflow = embedWorkflow; }, + nodeUseCacheChanged: ( + state, + action: PayloadAction<{ nodeId: string; useCache: boolean }> + ) => { + const { nodeId, useCache } = action.payload; + const nodeIndex = state.nodes.findIndex((n) => n.id === nodeId); + + const node = state.nodes?.[nodeIndex]; + + if (!isInvocationNode(node)) { + return; + } + node.data.useCache = useCache; + }, nodeIsIntermediateChanged: ( state, action: PayloadAction<{ nodeId: string; isIntermediate: boolean }> @@ -478,6 +495,12 @@ const nodesSlice = createSlice({ ) => { fieldValueReducer(state, action); }, + fieldBoardValueChanged: ( + state, + action: FieldValueAction + ) => { + fieldValueReducer(state, action); + }, fieldImageValueChanged: ( state, action: FieldValueAction @@ -520,6 +543,12 @@ const nodesSlice = createSlice({ ) => { fieldValueReducer(state, action); }, + fieldIPAdapterModelValueChanged: ( + state, + action: FieldValueAction + ) => { + fieldValueReducer(state, action); + }, fieldEnumModelValueChanged: ( state, action: FieldValueAction @@ -693,8 +722,30 @@ const nodesSlice = createSlice({ selectionCopied: (state) => { state.nodesToCopy = state.nodes.filter((n) => n.selected).map(cloneDeep); state.edgesToCopy = state.edges.filter((e) => e.selected).map(cloneDeep); + + if (state.nodesToCopy.length > 0) { + const averagePosition = { x: 0, y: 0 }; + state.nodesToCopy.forEach((e) => { + const xOffset = 0.15 * (e.width ?? 0); + const yOffset = 0.5 * (e.height ?? 0); + averagePosition.x += e.position.x + xOffset; + averagePosition.y += e.position.y + yOffset; + }); + + averagePosition.x /= state.nodesToCopy.length; + averagePosition.y /= state.nodesToCopy.length; + + state.nodesToCopy.forEach((e) => { + e.position.x -= averagePosition.x; + e.position.y -= averagePosition.y; + }); + } }, - selectionPasted: (state) => { + selectionPasted: ( + state, + action: PayloadAction<{ cursorPosition?: XYPosition }> + ) => { + const { cursorPosition } = action.payload; const newNodes = state.nodesToCopy.map(cloneDeep); const oldNodeIds = newNodes.map((n) => n.data.id); const newEdges = state.edgesToCopy @@ -723,8 +774,8 @@ const nodesSlice = createSlice({ const position = findUnoccupiedPosition( state.nodes, - node.position.x, - node.position.y + node.position.x + (cursorPosition?.x ?? 0), + node.position.y + (cursorPosition?.y ?? 0) ); node.position = position; @@ -824,21 +875,16 @@ const nodesSlice = createSlice({ node.progressImage = progress_image ?? null; } }); - builder.addCase(sessionInvoked.fulfilled, (state) => { - forEach(state.nodeExecutionStates, (nes) => { - nes.status = NodeStatus.PENDING; - nes.error = null; - nes.progress = null; - nes.progressImage = null; - nes.outputs = []; - }); - }); - builder.addCase(sessionCanceled.fulfilled, (state) => { - map(state.nodeExecutionStates, (nes) => { - if (nes.status === NodeStatus.IN_PROGRESS) { + builder.addCase(appSocketQueueItemStatusChanged, (state, action) => { + if (['in_progress'].includes(action.payload.data.status)) { + forEach(state.nodeExecutionStates, (nes) => { nes.status = NodeStatus.PENDING; - } - }); + nes.error = null; + nes.progress = null; + nes.progressImage = null; + nes.outputs = []; + }); + } }); }, }); @@ -858,6 +904,7 @@ export const { imageCollectionFieldValueChanged, fieldStringValueChanged, fieldNumberValueChanged, + fieldBoardValueChanged, fieldBooleanValueChanged, fieldImageValueChanged, fieldColorValueChanged, @@ -866,6 +913,7 @@ export const { fieldLoRAModelValueChanged, fieldEnumModelValueChanged, fieldControlNetModelValueChanged, + fieldIPAdapterModelValueChanged, fieldRefinerModelValueChanged, fieldSchedulerValueChanged, nodeIsOpenChanged, @@ -904,6 +952,7 @@ export const { nodeIsIntermediateChanged, mouseOverNodeChanged, nodeExclusivelySelected, + nodeUseCacheChanged, } = nodesSlice.actions; export default nodesSlice.reducer; diff --git a/invokeai/frontend/web/src/features/nodes/store/util/makeIsConnectionValidSelector.ts b/invokeai/frontend/web/src/features/nodes/store/util/makeIsConnectionValidSelector.ts index 5cb6d557e8..1be2d579d8 100644 --- a/invokeai/frontend/web/src/features/nodes/store/util/makeIsConnectionValidSelector.ts +++ b/invokeai/frontend/web/src/features/nodes/store/util/makeIsConnectionValidSelector.ts @@ -1,14 +1,10 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { getIsGraphAcyclic } from 'features/nodes/hooks/useIsValidConnection'; -import { - COLLECTION_MAP, - COLLECTION_TYPES, - POLYMORPHIC_TO_SINGLE_MAP, - POLYMORPHIC_TYPES, -} from 'features/nodes/types/constants'; import { FieldType } from 'features/nodes/types/types'; +import i18n from 'i18next'; import { HandleType } from 'reactflow'; +import { validateSourceAndTargetTypes } from './validateSourceAndTargetTypes'; /** * NOTE: The logic here must be duplicated in `invokeai/frontend/web/src/features/nodes/hooks/useIsValidConnection.ts` @@ -20,17 +16,17 @@ export const makeConnectionErrorSelector = ( fieldName: string, handleType: HandleType, fieldType?: FieldType -) => - createSelector(stateSelector, (state) => { +) => { + return createSelector(stateSelector, (state) => { if (!fieldType) { - return 'No field type'; + return i18n.t('nodes.noFieldType'); } const { currentConnectionFieldType, connectionStartParams, nodes, edges } = state.nodes; if (!connectionStartParams || !currentConnectionFieldType) { - return 'No connection in progress'; + return i18n.t('nodes.noConnectionInProgress'); } const { @@ -40,7 +36,7 @@ export const makeConnectionErrorSelector = ( } = connectionStartParams; if (!connectionHandleType || !connectionNodeId || !connectionFieldName) { - return 'No connection data'; + return i18n.t('nodes.noConnectionData'); } const targetType = @@ -49,14 +45,14 @@ export const makeConnectionErrorSelector = ( handleType === 'source' ? fieldType : currentConnectionFieldType; if (nodeId === connectionNodeId) { - return 'Cannot connect to self'; + return i18n.t('nodes.cannotConnectToSelf'); } if (handleType === connectionHandleType) { if (handleType === 'source') { - return 'Cannot connect output to output'; + return i18n.t('nodes.cannotConnectOutputToOutput'); } - return 'Cannot connect input to input'; + return i18n.t('nodes.cannotConnectInputToInput'); } if ( @@ -66,67 +62,11 @@ export const makeConnectionErrorSelector = ( // except CollectionItem inputs can have multiples targetType !== 'CollectionItem' ) { - return 'Input may only have one connection'; + return i18n.t('nodes.inputMayOnlyHaveOneConnection'); } - /** - * Connection types must be the same for a connection, with exceptions: - * - CollectionItem can connect to any non-Collection - * - Non-Collections can connect to CollectionItem - * - Anything (non-Collections, Collections, Polymorphics) can connect to Polymorphics of the same base type - * - Generic Collection can connect to any other Collection or Polymorphic - * - Any Collection can connect to a Generic Collection - */ - - if (sourceType !== targetType) { - const isCollectionItemToNonCollection = - sourceType === 'CollectionItem' && - !COLLECTION_TYPES.includes(targetType); - - const isNonCollectionToCollectionItem = - targetType === 'CollectionItem' && - !COLLECTION_TYPES.includes(sourceType) && - !POLYMORPHIC_TYPES.includes(sourceType); - - const isAnythingToPolymorphicOfSameBaseType = - POLYMORPHIC_TYPES.includes(targetType) && - (() => { - if (!POLYMORPHIC_TYPES.includes(targetType)) { - return false; - } - const baseType = - POLYMORPHIC_TO_SINGLE_MAP[ - targetType as keyof typeof POLYMORPHIC_TO_SINGLE_MAP - ]; - - const collectionType = - COLLECTION_MAP[baseType as keyof typeof COLLECTION_MAP]; - - return sourceType === baseType || sourceType === collectionType; - })(); - - const isGenericCollectionToAnyCollectionOrPolymorphic = - sourceType === 'Collection' && - (COLLECTION_TYPES.includes(targetType) || - POLYMORPHIC_TYPES.includes(targetType)); - - const isCollectionToGenericCollection = - targetType === 'Collection' && COLLECTION_TYPES.includes(sourceType); - - const isIntToFloat = sourceType === 'integer' && targetType === 'float'; - - if ( - !( - isCollectionItemToNonCollection || - isNonCollectionToCollectionItem || - isAnythingToPolymorphicOfSameBaseType || - isGenericCollectionToAnyCollectionOrPolymorphic || - isCollectionToGenericCollection || - isIntToFloat - ) - ) { - return 'Field types must match'; - } + if (!validateSourceAndTargetTypes(sourceType, targetType)) { + return i18n.t('nodes.fieldTypesMustMatch'); } const isGraphAcyclic = getIsGraphAcyclic( @@ -137,8 +77,9 @@ export const makeConnectionErrorSelector = ( ); if (!isGraphAcyclic) { - return 'Connection would create a cycle'; + return i18n.t('nodes.connectionWouldCreateCycle'); } return null; }); +}; diff --git a/invokeai/frontend/web/src/features/nodes/store/util/validateSourceAndTargetTypes.ts b/invokeai/frontend/web/src/features/nodes/store/util/validateSourceAndTargetTypes.ts new file mode 100644 index 0000000000..4f0be3329a --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/store/util/validateSourceAndTargetTypes.ts @@ -0,0 +1,74 @@ +import { + COLLECTION_MAP, + COLLECTION_TYPES, + POLYMORPHIC_TO_SINGLE_MAP, + POLYMORPHIC_TYPES, +} from 'features/nodes/types/constants'; +import { FieldType } from 'features/nodes/types/types'; + +export const validateSourceAndTargetTypes = ( + sourceType: FieldType, + targetType: FieldType +) => { + if (sourceType === targetType) { + return true; + } + + /** + * Connection types must be the same for a connection, with exceptions: + * - CollectionItem can connect to any non-Collection + * - Non-Collections can connect to CollectionItem + * - Anything (non-Collections, Collections, Polymorphics) can connect to Polymorphics of the same base type + * - Generic Collection can connect to any other Collection or Polymorphic + * - Any Collection can connect to a Generic Collection + */ + + const isCollectionItemToNonCollection = + sourceType === 'CollectionItem' && !COLLECTION_TYPES.includes(targetType); + + const isNonCollectionToCollectionItem = + targetType === 'CollectionItem' && + !COLLECTION_TYPES.includes(sourceType) && + !POLYMORPHIC_TYPES.includes(sourceType); + + const isAnythingToPolymorphicOfSameBaseType = + POLYMORPHIC_TYPES.includes(targetType) && + (() => { + if (!POLYMORPHIC_TYPES.includes(targetType)) { + return false; + } + const baseType = + POLYMORPHIC_TO_SINGLE_MAP[ + targetType as keyof typeof POLYMORPHIC_TO_SINGLE_MAP + ]; + + const collectionType = + COLLECTION_MAP[baseType as keyof typeof COLLECTION_MAP]; + + return sourceType === baseType || sourceType === collectionType; + })(); + + const isGenericCollectionToAnyCollectionOrPolymorphic = + sourceType === 'Collection' && + (COLLECTION_TYPES.includes(targetType) || + POLYMORPHIC_TYPES.includes(targetType)); + + const isCollectionToGenericCollection = + targetType === 'Collection' && COLLECTION_TYPES.includes(sourceType); + + const isIntToFloat = sourceType === 'integer' && targetType === 'float'; + + const isIntOrFloatToString = + (sourceType === 'integer' || sourceType === 'float') && + targetType === 'string'; + + return ( + isCollectionItemToNonCollection || + isNonCollectionToCollectionItem || + isAnythingToPolymorphicOfSameBaseType || + isGenericCollectionToAnyCollectionOrPolymorphic || + isCollectionToGenericCollection || + isIntToFloat || + isIntOrFloatToString + ); +}; diff --git a/invokeai/frontend/web/src/features/nodes/types/constants.ts b/invokeai/frontend/web/src/features/nodes/types/constants.ts index a12c1fbddc..c41d8369b1 100644 --- a/invokeai/frontend/web/src/features/nodes/types/constants.ts +++ b/invokeai/frontend/web/src/features/nodes/types/constants.ts @@ -1,4 +1,10 @@ -import { FieldType, FieldUIConfig } from './types'; +import { + FieldType, + FieldTypeMap, + FieldTypeMapWithNumber, + FieldUIConfig, +} from './types'; +import { t } from 'i18next'; export const HANDLE_TOOLTIP_OPEN_DELAY = 500; export const COLOR_TOKEN_VALUE = 500; @@ -27,7 +33,7 @@ export const COLLECTION_TYPES: FieldType[] = [ 'ColorCollection', ]; -export const POLYMORPHIC_TYPES = [ +export const POLYMORPHIC_TYPES: FieldType[] = [ 'IntegerPolymorphic', 'BooleanPolymorphic', 'FloatPolymorphic', @@ -39,7 +45,8 @@ export const POLYMORPHIC_TYPES = [ 'ColorPolymorphic', ]; -export const MODEL_TYPES = [ +export const MODEL_TYPES: FieldType[] = [ + 'IPAdapterModelField', 'ControlNetModelField', 'LoRAModelField', 'MainModelField', @@ -52,7 +59,7 @@ export const MODEL_TYPES = [ 'ClipField', ]; -export const COLLECTION_MAP = { +export const COLLECTION_MAP: FieldTypeMapWithNumber = { integer: 'IntegerCollection', boolean: 'BooleanCollection', number: 'FloatCollection', @@ -69,7 +76,7 @@ export const isCollectionItemType = ( ): itemType is keyof typeof COLLECTION_MAP => Boolean(itemType && itemType in COLLECTION_MAP); -export const SINGLE_TO_POLYMORPHIC_MAP = { +export const SINGLE_TO_POLYMORPHIC_MAP: FieldTypeMapWithNumber = { integer: 'IntegerPolymorphic', boolean: 'BooleanPolymorphic', number: 'FloatPolymorphic', @@ -82,7 +89,7 @@ export const SINGLE_TO_POLYMORPHIC_MAP = { ColorField: 'ColorPolymorphic', }; -export const POLYMORPHIC_TO_SINGLE_MAP = { +export const POLYMORPHIC_TO_SINGLE_MAP: FieldTypeMap = { IntegerPolymorphic: 'integer', BooleanPolymorphic: 'boolean', FloatPolymorphic: 'float', @@ -94,6 +101,30 @@ export const POLYMORPHIC_TO_SINGLE_MAP = { ColorPolymorphic: 'ColorField', }; +export const TYPES_WITH_INPUT_COMPONENTS: FieldType[] = [ + 'string', + 'StringPolymorphic', + 'boolean', + 'BooleanPolymorphic', + 'integer', + 'float', + 'FloatPolymorphic', + 'IntegerPolymorphic', + 'enum', + 'ImageField', + 'ImagePolymorphic', + 'MainModelField', + 'SDXLRefinerModelField', + 'VaeModelField', + 'LoRAModelField', + 'ControlNetModelField', + 'ColorField', + 'SDXLMainModelField', + 'Scheduler', + 'IPAdapterModelField', + 'BoardField', +]; + export const isPolymorphicItemType = ( itemType: string | undefined ): itemType is keyof typeof SINGLE_TO_POLYMORPHIC_MAP => @@ -102,73 +133,73 @@ export const isPolymorphicItemType = ( export const FIELDS: Record = { boolean: { color: 'green.500', - description: 'Booleans are true or false.', - title: 'Boolean', + description: t('nodes.booleanDescription'), + title: t('nodes.boolean'), }, BooleanCollection: { color: 'green.500', - description: 'A collection of booleans.', - title: 'Boolean Collection', + description: t('nodes.booleanCollectionDescription'), + title: t('nodes.booleanCollection'), }, BooleanPolymorphic: { color: 'green.500', - description: 'A collection of booleans.', - title: 'Boolean Polymorphic', + description: t('nodes.booleanPolymorphicDescription'), + title: t('nodes.booleanPolymorphic'), }, ClipField: { color: 'green.500', - description: 'Tokenizer and text_encoder submodels.', - title: 'Clip', + description: t('nodes.clipFieldDescription'), + title: t('nodes.clipField'), }, Collection: { color: 'base.500', - description: 'TODO', - title: 'Collection', + description: t('nodes.collectionDescription'), + title: t('nodes.collection'), }, CollectionItem: { color: 'base.500', - description: 'TODO', - title: 'Collection Item', + description: t('nodes.collectionItemDescription'), + title: t('nodes.collectionItem'), }, ColorCollection: { color: 'pink.300', - description: 'A collection of colors.', - title: 'Color Collection', + description: t('nodes.colorCollectionDescription'), + title: t('nodes.colorCollection'), }, ColorField: { color: 'pink.300', - description: 'A RGBA color.', - title: 'Color', + description: t('nodes.colorFieldDescription'), + title: t('nodes.colorField'), }, ColorPolymorphic: { color: 'pink.300', - description: 'A collection of colors.', - title: 'Color Polymorphic', + description: t('nodes.colorPolymorphicDescription'), + title: t('nodes.colorPolymorphic'), }, ConditioningCollection: { color: 'cyan.500', - description: 'Conditioning may be passed between nodes.', - title: 'Conditioning Collection', + description: t('nodes.conditioningCollectionDescription'), + title: t('nodes.conditioningCollection'), }, ConditioningField: { color: 'cyan.500', - description: 'Conditioning may be passed between nodes.', - title: 'Conditioning', + description: t('nodes.conditioningFieldDescription'), + title: t('nodes.conditioningField'), }, ConditioningPolymorphic: { color: 'cyan.500', - description: 'Conditioning may be passed between nodes.', - title: 'Conditioning Polymorphic', + description: t('nodes.conditioningPolymorphicDescription'), + title: t('nodes.conditioningPolymorphic'), }, ControlCollection: { color: 'teal.500', - description: 'Control info passed between nodes.', - title: 'Control Collection', + description: t('nodes.controlCollectionDescription'), + title: t('nodes.controlCollection'), }, ControlField: { color: 'teal.500', - description: 'Control info passed between nodes.', - title: 'Control', + description: t('nodes.controlFieldDescription'), + title: t('nodes.controlField'), }, ControlNetModelField: { color: 'teal.500', @@ -182,132 +213,147 @@ export const FIELDS: Record = { }, DenoiseMaskField: { color: 'blue.300', - description: 'Denoise Mask may be passed between nodes', - title: 'Denoise Mask', + description: t('nodes.denoiseMaskFieldDescription'), + title: t('nodes.denoiseMaskField'), }, enum: { color: 'blue.500', - description: 'Enums are values that may be one of a number of options.', - title: 'Enum', + description: t('nodes.enumDescription'), + title: t('nodes.enum'), }, float: { color: 'orange.500', - description: 'Floats are numbers with a decimal point.', - title: 'Float', + description: t('nodes.floatDescription'), + title: t('nodes.float'), }, FloatCollection: { color: 'orange.500', - description: 'A collection of floats.', - title: 'Float Collection', + description: t('nodes.floatCollectionDescription'), + title: t('nodes.floatCollection'), }, FloatPolymorphic: { color: 'orange.500', - description: 'A collection of floats.', - title: 'Float Polymorphic', + description: t('nodes.floatPolymorphicDescription'), + title: t('nodes.floatPolymorphic'), }, ImageCollection: { color: 'purple.500', - description: 'A collection of images.', - title: 'Image Collection', + description: t('nodes.imageCollectionDescription'), + title: t('nodes.imageCollection'), }, ImageField: { color: 'purple.500', - description: 'Images may be passed between nodes.', - title: 'Image', + description: t('nodes.imageFieldDescription'), + title: t('nodes.imageField'), + }, + BoardField: { + color: 'purple.500', + description: t('nodes.imageFieldDescription'), + title: t('nodes.imageField'), }, ImagePolymorphic: { color: 'purple.500', - description: 'A collection of images.', - title: 'Image Polymorphic', + description: t('nodes.imagePolymorphicDescription'), + title: t('nodes.imagePolymorphic'), }, integer: { color: 'red.500', - description: 'Integers are whole numbers, without a decimal point.', - title: 'Integer', + description: t('nodes.integerDescription'), + title: t('nodes.integer'), }, IntegerCollection: { color: 'red.500', - description: 'A collection of integers.', - title: 'Integer Collection', + description: t('nodes.integerCollectionDescription'), + title: t('nodes.integerCollection'), }, IntegerPolymorphic: { color: 'red.500', - description: 'A collection of integers.', - title: 'Integer Polymorphic', + description: t('nodes.integerPolymorphicDescription'), + title: t('nodes.integerPolymorphic'), + }, + IPAdapterField: { + color: 'green.300', + description: 'IP-Adapter info passed between nodes.', + title: 'IP-Adapter', + }, + IPAdapterModelField: { + color: 'teal.500', + description: 'IP-Adapter model', + title: 'IP-Adapter Model', }, LatentsCollection: { color: 'pink.500', - description: 'Latents may be passed between nodes.', - title: 'Latents Collection', + description: t('nodes.latentsCollectionDescription'), + title: t('nodes.latentsCollection'), }, LatentsField: { color: 'pink.500', - description: 'Latents may be passed between nodes.', - title: 'Latents', + description: t('nodes.latentsFieldDescription'), + title: t('nodes.latentsField'), }, LatentsPolymorphic: { color: 'pink.500', - description: 'Latents may be passed between nodes.', - title: 'Latents Polymorphic', + description: t('nodes.latentsPolymorphicDescription'), + title: t('nodes.latentsPolymorphic'), }, LoRAModelField: { color: 'teal.500', - description: 'TODO', - title: 'LoRA', + description: t('nodes.loRAModelFieldDescription'), + title: t('nodes.loRAModelField'), }, MainModelField: { color: 'teal.500', - description: 'TODO', - title: 'Model', + description: t('nodes.mainModelFieldDescription'), + title: t('nodes.mainModelField'), }, ONNXModelField: { color: 'teal.500', - description: 'ONNX model field.', - title: 'ONNX Model', + description: t('nodes.oNNXModelFieldDescription'), + title: t('nodes.oNNXModelField'), }, Scheduler: { color: 'base.500', - description: 'TODO', - title: 'Scheduler', + description: t('nodes.schedulerDescription'), + title: t('nodes.scheduler'), }, SDXLMainModelField: { color: 'teal.500', - description: 'SDXL model field.', - title: 'SDXL Model', + description: t('nodes.sDXLMainModelFieldDescription'), + title: t('nodes.sDXLMainModelField'), }, SDXLRefinerModelField: { color: 'teal.500', - description: 'TODO', - title: 'Refiner Model', + description: t('nodes.sDXLRefinerModelFieldDescription'), + title: t('nodes.sDXLRefinerModelField'), }, string: { color: 'yellow.500', - description: 'Strings are text.', - title: 'String', + description: t('nodes.stringDescription'), + title: t('nodes.string'), }, StringCollection: { color: 'yellow.500', - description: 'A collection of strings.', - title: 'String Collection', + description: t('nodes.stringCollectionDescription'), + title: t('nodes.stringCollection'), }, StringPolymorphic: { color: 'yellow.500', - description: 'A collection of strings.', - title: 'String Polymorphic', + description: t('nodes.stringPolymorphicDescription'), + title: t('nodes.stringPolymorphic'), }, UNetField: { color: 'red.500', - description: 'UNet submodel.', - title: 'UNet', + description: t('nodes.uNetFieldDescription'), + title: t('nodes.uNetField'), }, VaeField: { color: 'blue.500', - description: 'Vae submodel.', - title: 'Vae', + description: t('nodes.vaeFieldDescription'), + title: t('nodes.vaeField'), }, VaeModelField: { color: 'teal.500', - description: 'TODO', - title: 'VAE', + description: t('nodes.vaeModelFieldDescription'), + title: t('nodes.vaeModelField'), }, }; diff --git a/invokeai/frontend/web/src/features/nodes/types/types.ts b/invokeai/frontend/web/src/features/nodes/types/types.ts index 402ef4ac7a..fc8fe10ccc 100644 --- a/invokeai/frontend/web/src/features/nodes/types/types.ts +++ b/invokeai/frontend/web/src/features/nodes/types/types.ts @@ -1,3 +1,4 @@ +import { $store } from 'app/store/nanostores/store'; import { SchedulerParam, zBaseModel, @@ -7,7 +8,8 @@ import { zSDXLRefinerModel, zScheduler, } from 'features/parameters/types/parameterSchemas'; -import { keyBy } from 'lodash-es'; +import i18n from 'i18next'; +import { has, keyBy } from 'lodash-es'; import { OpenAPIV3 } from 'openapi-types'; import { RgbaColor } from 'react-colorful'; import { Node } from 'reactflow'; @@ -56,6 +58,10 @@ export type InvocationTemplate = { * The invocation's version. */ version?: string; + /** + * Whether or not this node should use the cache + */ + useCache: boolean; }; export type FieldUIConfig = { @@ -66,6 +72,7 @@ export type FieldUIConfig = { // TODO: Get this from the OpenAPI schema? may be tricky... export const zFieldType = z.enum([ + 'BoardField', 'boolean', 'BooleanCollection', 'BooleanPolymorphic', @@ -93,6 +100,8 @@ export const zFieldType = z.enum([ 'integer', 'IntegerCollection', 'IntegerPolymorphic', + 'IPAdapterField', + 'IPAdapterModelField', 'LatentsCollection', 'LatentsField', 'LatentsPolymorphic', @@ -111,6 +120,10 @@ export const zFieldType = z.enum([ ]); export type FieldType = z.infer; +export type FieldTypeMap = { [key in FieldType]?: FieldType }; +export type FieldTypeMapWithNumber = { + [key in FieldType | 'number']?: FieldType; +}; export const zReservedFieldType = z.enum([ 'WorkflowField', @@ -179,6 +192,11 @@ export const zImageField = z.object({ }); export type ImageField = z.infer; +export const zBoardField = z.object({ + board_id: z.string().trim().min(1), +}); +export type BoardField = z.infer; + export const zLatentsField = z.object({ latents_name: z.string().trim().min(1), seed: z.number().int().optional(), @@ -212,7 +230,7 @@ export type IntegerCollectionInputFieldValue = z.infer< export const zIntegerPolymorphicInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('IntegerPolymorphic'), - value: z.union([z.number().int(), z.array(z.number().int())]).optional(), + value: z.number().int().optional(), }); export type IntegerPolymorphicInputFieldValue = z.infer< typeof zIntegerPolymorphicInputFieldValue @@ -234,7 +252,7 @@ export type FloatCollectionInputFieldValue = z.infer< export const zFloatPolymorphicInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('FloatPolymorphic'), - value: z.union([z.number(), z.array(z.number())]).optional(), + value: z.number().optional(), }); export type FloatPolymorphicInputFieldValue = z.infer< typeof zFloatPolymorphicInputFieldValue @@ -256,7 +274,7 @@ export type StringCollectionInputFieldValue = z.infer< export const zStringPolymorphicInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('StringPolymorphic'), - value: z.union([z.string(), z.array(z.string())]).optional(), + value: z.string().optional(), }); export type StringPolymorphicInputFieldValue = z.infer< typeof zStringPolymorphicInputFieldValue @@ -278,7 +296,7 @@ export type BooleanCollectionInputFieldValue = z.infer< export const zBooleanPolymorphicInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('BooleanPolymorphic'), - value: z.union([z.boolean(), z.array(z.boolean())]).optional(), + value: z.boolean().optional(), }); export type BooleanPolymorphicInputFieldValue = z.infer< typeof zBooleanPolymorphicInputFieldValue @@ -286,7 +304,7 @@ export type BooleanPolymorphicInputFieldValue = z.infer< export const zEnumInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('enum'), - value: z.union([z.string(), z.number()]).optional(), + value: z.string().optional(), }); export type EnumInputFieldValue = z.infer; @@ -388,6 +406,25 @@ export type ControlCollectionInputFieldValue = z.infer< typeof zControlCollectionInputFieldValue >; +export const zIPAdapterModel = zModelIdentifier; +export type IPAdapterModel = z.infer; + +export const zIPAdapterField = z.object({ + image: zImageField, + ip_adapter_model: zIPAdapterModel, + image_encoder_model: z.string().trim().min(1), + weight: z.number(), +}); +export type IPAdapterField = z.infer; + +export const zIPAdapterInputFieldValue = zInputFieldValueBase.extend({ + type: z.literal('IPAdapterField'), + value: zIPAdapterField.optional(), +}); +export type IPAdapterInputFieldValue = z.infer< + typeof zIPAdapterInputFieldValue +>; + export const zModelType = z.enum([ 'onnx', 'main', @@ -467,9 +504,15 @@ export const zImageInputFieldValue = zInputFieldValueBase.extend({ }); export type ImageInputFieldValue = z.infer; +export const zBoardInputFieldValue = zInputFieldValueBase.extend({ + type: z.literal('BoardField'), + value: zBoardField.optional(), +}); +export type BoardInputFieldValue = z.infer; + export const zImagePolymorphicInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('ImagePolymorphic'), - value: z.union([zImageField, z.array(zImageField)]).optional(), + value: zImageField.optional(), }); export type ImagePolymorphicInputFieldValue = z.infer< typeof zImagePolymorphicInputFieldValue @@ -537,6 +580,17 @@ export type ControlNetModelInputFieldValue = z.infer< typeof zControlNetModelInputFieldValue >; +export const zIPAdapterModelField = zModelIdentifier; +export type IPAdapterModelField = z.infer; + +export const zIPAdapterModelInputFieldValue = zInputFieldValueBase.extend({ + type: z.literal('IPAdapterModelField'), + value: zIPAdapterModelField.optional(), +}); +export type IPAdapterModelInputFieldValue = z.infer< + typeof zIPAdapterModelInputFieldValue +>; + export const zCollectionInputFieldValue = zInputFieldValueBase.extend({ type: z.literal('Collection'), value: z.array(z.any()).optional(), // TODO: should this field ever have a value? @@ -592,6 +646,7 @@ export type SchedulerInputFieldValue = z.infer< >; export const zInputFieldValue = z.discriminatedUnion('type', [ + zBoardInputFieldValue, zBooleanCollectionInputFieldValue, zBooleanInputFieldValue, zBooleanPolymorphicInputFieldValue, @@ -619,6 +674,8 @@ export const zInputFieldValue = z.discriminatedUnion('type', [ zIntegerCollectionInputFieldValue, zIntegerPolymorphicInputFieldValue, zIntegerInputFieldValue, + zIPAdapterInputFieldValue, + zIPAdapterModelInputFieldValue, zLatentsInputFieldValue, zLatentsCollectionInputFieldValue, zLatentsPolymorphicInputFieldValue, @@ -730,6 +787,11 @@ export type BooleanPolymorphicInputFieldTemplate = Omit< type: 'BooleanPolymorphic'; }; +export type BoardInputFieldTemplate = InputFieldTemplateBase & { + default: BoardField; + type: 'BoardField'; +}; + export type ImageInputFieldTemplate = InputFieldTemplateBase & { default: ImageField; type: 'ImageField'; @@ -821,11 +883,16 @@ export type ControlPolymorphicInputFieldTemplate = Omit< type: 'ControlPolymorphic'; }; +export type IPAdapterInputFieldTemplate = InputFieldTemplateBase & { + default: undefined; + type: 'IPAdapterField'; +}; + export type EnumInputFieldTemplate = InputFieldTemplateBase & { - default: string | number; + default: string; type: 'enum'; - enumType: 'string' | 'number'; - options: Array; + options: string[]; + labels?: { [key: string]: string }; }; export type MainModelInputFieldTemplate = InputFieldTemplateBase & { @@ -858,6 +925,11 @@ export type ControlNetModelInputFieldTemplate = InputFieldTemplateBase & { type: 'ControlNetModelField'; }; +export type IPAdapterModelInputFieldTemplate = InputFieldTemplateBase & { + default: string; + type: 'IPAdapterModelField'; +}; + export type CollectionInputFieldTemplate = InputFieldTemplateBase & { default: []; type: 'Collection'; @@ -902,6 +974,7 @@ export type WorkflowInputFieldTemplate = InputFieldTemplateBase & { * maximum length, pattern to match, etc). */ export type InputFieldTemplate = + | BoardInputFieldTemplate | BooleanCollectionInputFieldTemplate | BooleanPolymorphicInputFieldTemplate | BooleanInputFieldTemplate @@ -929,6 +1002,8 @@ export type InputFieldTemplate = | IntegerCollectionInputFieldTemplate | IntegerPolymorphicInputFieldTemplate | IntegerInputFieldTemplate + | IPAdapterInputFieldTemplate + | IPAdapterModelInputFieldTemplate | LatentsInputFieldTemplate | LatentsCollectionInputFieldTemplate | LatentsPolymorphicInputFieldTemplate @@ -975,6 +1050,9 @@ export type InvocationSchemaExtra = { type: Omit & { default: AnyInvocationType; }; + use_cache: Omit & { + default: boolean; + }; }; }; @@ -1056,25 +1134,33 @@ export const isInvocationFieldSchema = ( export type InvocationEdgeExtra = { type: 'default' | 'collapsed' }; +const zLoRAMetadataItem = z.object({ + lora: zLoRAModelField.deepPartial(), + weight: z.number(), +}); + +export type LoRAMetadataItem = z.infer; + export const zCoreMetadata = z .object({ - app_version: z.string().nullish(), - generation_mode: z.string().nullish(), - created_by: z.string().nullish(), - positive_prompt: z.string().nullish(), - negative_prompt: z.string().nullish(), - width: z.number().int().nullish(), - height: z.number().int().nullish(), - seed: z.number().int().nullish(), - rand_device: z.string().nullish(), - cfg_scale: z.number().nullish(), - steps: z.number().int().nullish(), - scheduler: z.string().nullish(), - clip_skip: z.number().int().nullish(), + app_version: z.string().nullish().catch(null), + generation_mode: z.string().nullish().catch(null), + created_by: z.string().nullish().catch(null), + positive_prompt: z.string().nullish().catch(null), + negative_prompt: z.string().nullish().catch(null), + width: z.number().int().nullish().catch(null), + height: z.number().int().nullish().catch(null), + seed: z.number().int().nullish().catch(null), + rand_device: z.string().nullish().catch(null), + cfg_scale: z.number().nullish().catch(null), + steps: z.number().int().nullish().catch(null), + scheduler: z.string().nullish().catch(null), + clip_skip: z.number().int().nullish().catch(null), model: z .union([zMainModel.deepPartial(), zOnnxModel.deepPartial()]) - .nullish(), - controlnets: z.array(zControlField.deepPartial()).nullish(), + .nullish() + .catch(null), + controlnets: z.array(zControlField.deepPartial()).nullish().catch(null), loras: z .array( z.object({ @@ -1082,19 +1168,20 @@ export const zCoreMetadata = z weight: z.number(), }) ) - .nullish(), - vae: zVaeModelField.nullish(), - strength: z.number().nullish(), - init_image: z.string().nullish(), - positive_style_prompt: z.string().nullish(), - negative_style_prompt: z.string().nullish(), - refiner_model: zSDXLRefinerModel.deepPartial().nullish(), - refiner_cfg_scale: z.number().nullish(), - refiner_steps: z.number().int().nullish(), - refiner_scheduler: z.string().nullish(), - refiner_positive_aesthetic_score: z.number().nullish(), - refiner_negative_aesthetic_score: z.number().nullish(), - refiner_start: z.number().nullish(), + .nullish() + .catch(null), + vae: zVaeModelField.nullish().catch(null), + strength: z.number().nullish().catch(null), + init_image: z.string().nullish().catch(null), + positive_style_prompt: z.string().nullish().catch(null), + negative_style_prompt: z.string().nullish().catch(null), + refiner_model: zSDXLRefinerModel.deepPartial().nullish().catch(null), + refiner_cfg_scale: z.number().nullish().catch(null), + refiner_steps: z.number().int().nullish().catch(null), + refiner_scheduler: z.string().nullish().catch(null), + refiner_positive_aesthetic_score: z.number().nullish().catch(null), + refiner_negative_aesthetic_score: z.number().nullish().catch(null), + refiner_start: z.number().nullish().catch(null), }) .passthrough(); @@ -1138,9 +1225,37 @@ export const zInvocationNodeData = z.object({ version: zSemVer.optional(), }); +export const zInvocationNodeDataV2 = z.preprocess( + (arg) => { + try { + const data = zInvocationNodeData.parse(arg); + if (!has(data, 'useCache')) { + const nodeTemplates = $store.get()?.getState().nodes.nodeTemplates as + | Record + | undefined; + + const template = nodeTemplates?.[data.type]; + + let useCache = true; + if (template) { + useCache = template.useCache; + } + + Object.assign(data, { useCache }); + } + return data; + } catch { + return arg; + } + }, + zInvocationNodeData.extend({ + useCache: z.boolean(), + }) +); + // Massage this to get better type safety while developing export type InvocationNodeData = Omit< - z.infer, + z.infer, 'type' > & { type: AnyInvocationType; @@ -1168,7 +1283,7 @@ const zDimension = z.number().gt(0).nullish(); export const zWorkflowInvocationNode = z.object({ id: z.string().trim().min(1), type: z.literal('invocation'), - data: zInvocationNodeData, + data: zInvocationNodeDataV2, width: zDimension, height: zDimension, position: zPosition, @@ -1230,6 +1345,8 @@ export type WorkflowWarning = { data: JsonObject; }; +const CURRENT_WORKFLOW_VERSION = '1.0.0'; + export const zWorkflow = z.object({ name: z.string().default(''), author: z.string().default(''), @@ -1245,7 +1362,7 @@ export const zWorkflow = z.object({ .object({ version: zSemVer, }) - .default({ version: '1.0.0' }), + .default({ version: CURRENT_WORKFLOW_VERSION }), }); export const zValidatedWorkflow = zWorkflow.transform((workflow) => { @@ -1258,23 +1375,35 @@ export const zValidatedWorkflow = zWorkflow.transform((workflow) => { const targetNode = keyedNodes[edge.target]; const issues: string[] = []; if (!sourceNode) { - issues.push(`Output node ${edge.source} does not exist`); + issues.push( + `${i18n.t('nodes.outputNode')} ${edge.source} ${i18n.t( + 'nodes.doesNotExist' + )}` + ); } else if ( edge.type === 'default' && !(edge.sourceHandle in sourceNode.data.outputs) ) { issues.push( - `Output field "${edge.source}.${edge.sourceHandle}" does not exist` + `${i18n.t('nodes.outputField')}"${edge.source}.${ + edge.sourceHandle + }" ${i18n.t('nodes.doesNotExist')}` ); } if (!targetNode) { - issues.push(`Input node ${edge.target} does not exist`); + issues.push( + `${i18n.t('nodes.inputNode')} ${edge.target} ${i18n.t( + 'nodes.doesNotExist' + )}` + ); } else if ( edge.type === 'default' && !(edge.targetHandle in targetNode.data.inputs) ) { issues.push( - `Input field "${edge.target}.${edge.targetHandle}" does not exist` + `${i18n.t('nodes.inputField')} "${edge.target}.${ + edge.targetHandle + }" ${i18n.t('nodes.doesNotExist')}` ); } if (issues.length) { @@ -1282,7 +1411,9 @@ export const zValidatedWorkflow = zWorkflow.transform((workflow) => { const src = edge.type === 'default' ? edge.sourceHandle : edge.source; const tgt = edge.type === 'default' ? edge.targetHandle : edge.target; warnings.push({ - message: `Edge "${src} -> ${tgt}" skipped`, + message: `${i18n.t('nodes.edge')} "${src} -> ${tgt}" ${i18n.t( + 'nodes.skipped' + )}`, issues, data: edge, }); diff --git a/invokeai/frontend/web/src/features/nodes/util/buildWorkflow.ts b/invokeai/frontend/web/src/features/nodes/util/buildWorkflow.ts index b0ade42a9f..43ee75b735 100644 --- a/invokeai/frontend/web/src/features/nodes/util/buildWorkflow.ts +++ b/invokeai/frontend/web/src/features/nodes/util/buildWorkflow.ts @@ -3,6 +3,7 @@ import { NodesState } from '../store/types'; import { Workflow, zWorkflowEdge, zWorkflowNode } from '../types/types'; import { fromZodError } from 'zod-validation-error'; import { parseify } from 'common/util/serialize'; +import i18n from 'i18next'; export const buildWorkflow = (nodesState: NodesState): Workflow => { const { workflow: workflowMeta, nodes, edges } = nodesState; @@ -20,7 +21,7 @@ export const buildWorkflow = (nodesState: NodesState): Workflow => { const result = zWorkflowNode.safeParse(node); if (!result.success) { const { message } = fromZodError(result.error, { - prefix: 'Unable to parse node', + prefix: i18n.t('nodes.unableToParseNode'), }); logger('nodes').warn({ node: parseify(node) }, message); return; @@ -32,7 +33,7 @@ export const buildWorkflow = (nodesState: NodesState): Workflow => { const result = zWorkflowEdge.safeParse(edge); if (!result.success) { const { message } = fromZodError(result.error, { - prefix: 'Unable to parse edge', + prefix: i18n.t('nodes.unableToParseEdge'), }); logger('nodes').warn({ edge: parseify(edge) }, message); return; diff --git a/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts b/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts index 20463f37f6..cf5f7c5523 100644 --- a/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts +++ b/invokeai/frontend/web/src/features/nodes/util/fieldTemplateBuilders.ts @@ -60,6 +60,10 @@ import { ImageField, LatentsField, ConditioningField, + IPAdapterInputFieldTemplate, + IPAdapterModelInputFieldTemplate, + BoardInputFieldTemplate, + InputFieldTemplate, } from '../types/types'; import { ControlField } from 'services/api/types'; @@ -435,6 +439,32 @@ const buildControlNetModelInputFieldTemplate = ({ return template; }; +const buildIPAdapterModelInputFieldTemplate = ({ + schemaObject, + baseField, +}: BuildInputFieldArg): IPAdapterModelInputFieldTemplate => { + const template: IPAdapterModelInputFieldTemplate = { + ...baseField, + type: 'IPAdapterModelField', + default: schemaObject.default ?? undefined, + }; + + return template; +}; + +const buildBoardInputFieldTemplate = ({ + schemaObject, + baseField, +}: BuildInputFieldArg): BoardInputFieldTemplate => { + const template: BoardInputFieldTemplate = { + ...baseField, + type: 'BoardField', + default: schemaObject.default ?? undefined, + }; + + return template; +}; + const buildImageInputFieldTemplate = ({ schemaObject, baseField, @@ -648,6 +678,19 @@ const buildControlCollectionInputFieldTemplate = ({ return template; }; +const buildIPAdapterInputFieldTemplate = ({ + schemaObject, + baseField, +}: BuildInputFieldArg): IPAdapterInputFieldTemplate => { + const template: IPAdapterInputFieldTemplate = { + ...baseField, + type: 'IPAdapterField', + default: schemaObject.default ?? undefined, + }; + + return template; +}; + const buildEnumInputFieldTemplate = ({ schemaObject, baseField, @@ -656,8 +699,8 @@ const buildEnumInputFieldTemplate = ({ const template: EnumInputFieldTemplate = { ...baseField, type: 'enum', - enumType: (schemaObject.type as 'string' | 'number') ?? 'string', // TODO: dangerous? - options: options, + options, + ui_choice_labels: schemaObject.ui_choice_labels, default: schemaObject.default ?? options[0], }; @@ -823,7 +866,10 @@ export const getFieldType = ( return; }; -const TEMPLATE_BUILDER_MAP = { +const TEMPLATE_BUILDER_MAP: { + [key in FieldType]?: (arg: BuildInputFieldArg) => InputFieldTemplate; +} = { + BoardField: buildBoardInputFieldTemplate, boolean: buildBooleanInputFieldTemplate, BooleanCollection: buildBooleanCollectionInputFieldTemplate, BooleanPolymorphic: buildBooleanPolymorphicInputFieldTemplate, @@ -851,6 +897,8 @@ const TEMPLATE_BUILDER_MAP = { integer: buildIntegerInputFieldTemplate, IntegerCollection: buildIntegerCollectionInputFieldTemplate, IntegerPolymorphic: buildIntegerPolymorphicInputFieldTemplate, + IPAdapterField: buildIPAdapterInputFieldTemplate, + IPAdapterModelField: buildIPAdapterModelInputFieldTemplate, LatentsCollection: buildLatentsCollectionInputFieldTemplate, LatentsField: buildLatentsInputFieldTemplate, LatentsPolymorphic: buildLatentsPolymorphicInputFieldTemplate, @@ -907,7 +955,13 @@ export const buildInputFieldTemplate = ( return; } - return TEMPLATE_BUILDER_MAP[fieldType]({ + const builder = TEMPLATE_BUILDER_MAP[fieldType]; + + if (!builder) { + return; + } + + return builder({ schemaObject: fieldSchema, baseField, }); diff --git a/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts b/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts index a3046feee7..9c90595c70 100644 --- a/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts +++ b/invokeai/frontend/web/src/features/nodes/util/fieldValueBuilders.ts @@ -1,8 +1,10 @@ -import { InputFieldTemplate, InputFieldValue } from '../types/types'; +import { FieldType, InputFieldTemplate, InputFieldValue } from '../types/types'; -const FIELD_VALUE_FALLBACK_MAP = { - 'enum.number': 0, - 'enum.string': '', +const FIELD_VALUE_FALLBACK_MAP: { + [key in FieldType]: InputFieldValue['value']; +} = { + enum: '', + BoardField: undefined, boolean: false, BooleanCollection: [], BooleanPolymorphic: false, @@ -29,6 +31,8 @@ const FIELD_VALUE_FALLBACK_MAP = { integer: 0, IntegerCollection: [], IntegerPolymorphic: 0, + IPAdapterField: undefined, + IPAdapterModelField: undefined, LatentsCollection: [], LatentsField: undefined, LatentsPolymorphic: undefined, @@ -62,19 +66,8 @@ export const buildInputFieldValue = ( fieldKind: 'input', } as InputFieldValue; - if (template.type === 'enum') { - if (template.enumType === 'number') { - fieldValue.value = - template.default ?? FIELD_VALUE_FALLBACK_MAP['enum.number']; - } - if (template.enumType === 'string') { - fieldValue.value = - template.default ?? FIELD_VALUE_FALLBACK_MAP['enum.string']; - } - } else { - fieldValue.value = - template.default ?? FIELD_VALUE_FALLBACK_MAP[template.type]; - } + fieldValue.value = + template.default ?? FIELD_VALUE_FALLBACK_MAP[template.type]; return fieldValue; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addControlNetToLinearGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addControlNetToLinearGraph.ts index 491c6547ba..1df90624ef 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addControlNetToLinearGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addControlNetToLinearGraph.ts @@ -8,7 +8,11 @@ import { MetadataAccumulatorInvocation, } from 'services/api/types'; import { NonNullableGraph } from '../../types/types'; -import { CONTROL_NET_COLLECT, METADATA_ACCUMULATOR } from './constants'; +import { + CANVAS_COHERENCE_DENOISE_LATENTS, + CONTROL_NET_COLLECT, + METADATA_ACCUMULATOR, +} from './constants'; export const addControlNetToLinearGraph = ( state: RootState, @@ -100,6 +104,16 @@ export const addControlNetToLinearGraph = ( field: 'item', }, }); + + if (CANVAS_COHERENCE_DENOISE_LATENTS in graph.nodes) { + graph.edges.push({ + source: { node_id: controlNetNode.id, field: 'control' }, + destination: { + node_id: CANVAS_COHERENCE_DENOISE_LATENTS, + field: 'control', + }, + }); + } }); } } diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts deleted file mode 100644 index acb091a06b..0000000000 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addDynamicPromptsToGraph.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { RootState } from 'app/store/store'; -import { NonNullableGraph } from 'features/nodes/types/types'; -import { unset } from 'lodash-es'; -import { - DynamicPromptInvocation, - IterateInvocation, - MetadataAccumulatorInvocation, - NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, -} from 'services/api/types'; -import { - DYNAMIC_PROMPT, - ITERATE, - METADATA_ACCUMULATOR, - NOISE, - POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, -} from './constants'; - -export const addDynamicPromptsToGraph = ( - state: RootState, - graph: NonNullableGraph -): void => { - const { positivePrompt, iterations, seed, shouldRandomizeSeed } = - state.generation; - - const { - combinatorial, - isEnabled: isDynamicPromptsEnabled, - maxPrompts, - } = state.dynamicPrompts; - - const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as - | MetadataAccumulatorInvocation - | undefined; - - if (isDynamicPromptsEnabled) { - // iteration is handled via dynamic prompts - unset(graph.nodes[POSITIVE_CONDITIONING], 'prompt'); - - const dynamicPromptNode: DynamicPromptInvocation = { - id: DYNAMIC_PROMPT, - type: 'dynamic_prompt', - is_intermediate: true, - max_prompts: combinatorial ? maxPrompts : iterations, - combinatorial, - prompt: positivePrompt, - }; - - const iterateNode: IterateInvocation = { - id: ITERATE, - type: 'iterate', - is_intermediate: true, - }; - - graph.nodes[DYNAMIC_PROMPT] = dynamicPromptNode; - graph.nodes[ITERATE] = iterateNode; - - // connect dynamic prompts to compel nodes - graph.edges.push( - { - source: { - node_id: DYNAMIC_PROMPT, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: POSITIVE_CONDITIONING, - field: 'prompt', - }, - } - ); - - // hook up positive prompt to metadata - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: METADATA_ACCUMULATOR, - field: 'positive_prompt', - }, - }); - } - - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - is_intermediate: true, - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: NOISE, field: 'seed' }, - }); - - if (metadataAccumulator) { - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: METADATA_ACCUMULATOR, field: 'seed' }, - }); - } - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[NOISE] as NoiseInvocation).seed = seed; - - // hook up seed to metadata - if (metadataAccumulator) { - metadataAccumulator.seed = seed; - } - } - } else { - // no dynamic prompt - hook up positive prompt - if (metadataAccumulator) { - metadataAccumulator.positive_prompt = positivePrompt; - } - - const rangeOfSizeNode: RangeOfSizeInvocation = { - id: RANGE_OF_SIZE, - type: 'range_of_size', - is_intermediate: true, - size: iterations, - step: 1, - }; - - const iterateNode: IterateInvocation = { - id: ITERATE, - type: 'iterate', - is_intermediate: true, - }; - - graph.nodes[ITERATE] = iterateNode; - graph.nodes[RANGE_OF_SIZE] = rangeOfSizeNode; - - graph.edges.push({ - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }); - - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }); - - // hook up seed to metadata - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: METADATA_ACCUMULATOR, - field: 'seed', - }, - }); - } - // handle seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - is_intermediate: true, - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - rangeOfSizeNode.start = seed; - } - } -}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts new file mode 100644 index 0000000000..d645b274ec --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addIPAdapterToLinearGraph.ts @@ -0,0 +1,69 @@ +import { RootState } from 'app/store/store'; +import { IPAdapterInvocation } from 'services/api/types'; +import { NonNullableGraph } from '../../types/types'; +import { CANVAS_COHERENCE_DENOISE_LATENTS, IP_ADAPTER } from './constants'; + +export const addIPAdapterToLinearGraph = ( + state: RootState, + graph: NonNullableGraph, + baseNodeId: string +): void => { + const { isIPAdapterEnabled, ipAdapterInfo } = state.controlNet; + + // const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as + // | MetadataAccumulatorInvocation + // | undefined; + + if (isIPAdapterEnabled && ipAdapterInfo.model) { + const ipAdapterNode: IPAdapterInvocation = { + id: IP_ADAPTER, + type: 'ip_adapter', + is_intermediate: true, + weight: ipAdapterInfo.weight, + ip_adapter_model: { + base_model: ipAdapterInfo.model?.base_model, + model_name: ipAdapterInfo.model?.model_name, + }, + begin_step_percent: ipAdapterInfo.beginStepPct, + end_step_percent: ipAdapterInfo.endStepPct, + }; + + if (ipAdapterInfo.adapterImage) { + ipAdapterNode.image = { + image_name: ipAdapterInfo.adapterImage.image_name, + }; + } else { + return; + } + + graph.nodes[ipAdapterNode.id] = ipAdapterNode as IPAdapterInvocation; + + // if (metadataAccumulator?.ip_adapters) { + // // metadata accumulator only needs the ip_adapter field - not the whole node + // // extract what we need and add to the accumulator + // const ipAdapterField = omit(ipAdapterNode, [ + // 'id', + // 'type', + // ]) as IPAdapterField; + // metadataAccumulator.ip_adapters.push(ipAdapterField); + // } + + graph.edges.push({ + source: { node_id: ipAdapterNode.id, field: 'ip_adapter' }, + destination: { + node_id: baseNodeId, + field: 'ip_adapter', + }, + }); + + if (CANVAS_COHERENCE_DENOISE_LATENTS in graph.nodes) { + graph.edges.push({ + source: { node_id: ipAdapterNode.id, field: 'ip_adapter' }, + destination: { + node_id: CANVAS_COHERENCE_DENOISE_LATENTS, + field: 'ip_adapter', + }, + }); + } + } +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts index 3291348d0a..94fddccc8f 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addNSFWCheckerToGraph.ts @@ -1,46 +1,32 @@ import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import { ImageNSFWBlurInvocation, LatentsToImageInvocation, - MetadataAccumulatorInvocation, } from 'services/api/types'; -import { - LATENTS_TO_IMAGE, - METADATA_ACCUMULATOR, - NSFW_CHECKER, -} from './constants'; +import { LATENTS_TO_IMAGE, NSFW_CHECKER } from './constants'; export const addNSFWCheckerToGraph = ( state: RootState, graph: NonNullableGraph, nodeIdToAddTo = LATENTS_TO_IMAGE ): void => { - const activeTabName = activeTabNameSelector(state); - - const is_intermediate = - activeTabName === 'unifiedCanvas' ? !state.canvas.shouldAutoSave : false; - const nodeToAddTo = graph.nodes[nodeIdToAddTo] as | LatentsToImageInvocation | undefined; - const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as - | MetadataAccumulatorInvocation - | undefined; - if (!nodeToAddTo) { // something has gone terribly awry return; } nodeToAddTo.is_intermediate = true; + nodeToAddTo.use_cache = true; const nsfwCheckerNode: ImageNSFWBlurInvocation = { id: NSFW_CHECKER, type: 'img_nsfw', - is_intermediate, + is_intermediate: true, }; graph.nodes[NSFW_CHECKER] = nsfwCheckerNode as ImageNSFWBlurInvocation; @@ -54,17 +40,4 @@ export const addNSFWCheckerToGraph = ( field: 'image', }, }); - - if (metadataAccumulator) { - graph.edges.push({ - source: { - node_id: METADATA_ACCUMULATOR, - field: 'metadata', - }, - destination: { - node_id: NSFW_CHECKER, - field: 'metadata', - }, - }); - } }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts index 0daca1f310..6bd44db197 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSDXLRefinerToGraph.ts @@ -25,7 +25,7 @@ import { SDXL_REFINER_POSITIVE_CONDITIONING, SDXL_REFINER_SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; export const addSDXLRefinerToGraph = ( state: RootState, @@ -78,8 +78,8 @@ export const addSDXLRefinerToGraph = ( : SDXL_MODEL_LOADER; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, true); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state, true); // Unplug SDXL Latents Generation To Latents To Image graph.edges = graph.edges.filter( @@ -100,13 +100,13 @@ export const addSDXLRefinerToGraph = ( graph.nodes[SDXL_REFINER_POSITIVE_CONDITIONING] = { type: 'sdxl_refiner_compel_prompt', id: SDXL_REFINER_POSITIVE_CONDITIONING, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, aesthetic_score: refinerPositiveAestheticScore, }; graph.nodes[SDXL_REFINER_NEGATIVE_CONDITIONING] = { type: 'sdxl_refiner_compel_prompt', id: SDXL_REFINER_NEGATIVE_CONDITIONING, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, aesthetic_score: refinerNegativeAestheticScore, }; graph.nodes[SDXL_REFINER_DENOISE_LATENTS] = { diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts new file mode 100644 index 0000000000..738c69faff --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addSaveImageNode.ts @@ -0,0 +1,94 @@ +import { NonNullableGraph } from 'features/nodes/types/types'; +import { + CANVAS_OUTPUT, + LATENTS_TO_IMAGE, + METADATA_ACCUMULATOR, + NSFW_CHECKER, + SAVE_IMAGE, + WATERMARKER, +} from './constants'; +import { + MetadataAccumulatorInvocation, + SaveImageInvocation, +} from 'services/api/types'; +import { RootState } from 'app/store/store'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; + +/** + * Set the `use_cache` field on the linear/canvas graph's final image output node to False. + */ +export const addSaveImageNode = ( + state: RootState, + graph: NonNullableGraph +): void => { + const activeTabName = activeTabNameSelector(state); + const is_intermediate = + activeTabName === 'unifiedCanvas' ? !state.canvas.shouldAutoSave : false; + const { autoAddBoardId } = state.gallery; + + const saveImageNode: SaveImageInvocation = { + id: SAVE_IMAGE, + type: 'save_image', + is_intermediate, + use_cache: false, + board: autoAddBoardId === 'none' ? undefined : { board_id: autoAddBoardId }, + }; + + graph.nodes[SAVE_IMAGE] = saveImageNode; + + const metadataAccumulator = graph.nodes[METADATA_ACCUMULATOR] as + | MetadataAccumulatorInvocation + | undefined; + + if (metadataAccumulator) { + graph.edges.push({ + source: { + node_id: METADATA_ACCUMULATOR, + field: 'metadata', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'metadata', + }, + }); + } + + const destination = { + node_id: SAVE_IMAGE, + field: 'image', + }; + + if (WATERMARKER in graph.nodes) { + graph.edges.push({ + source: { + node_id: WATERMARKER, + field: 'image', + }, + destination, + }); + } else if (NSFW_CHECKER in graph.nodes) { + graph.edges.push({ + source: { + node_id: NSFW_CHECKER, + field: 'image', + }, + destination, + }); + } else if (CANVAS_OUTPUT in graph.nodes) { + graph.edges.push({ + source: { + node_id: CANVAS_OUTPUT, + field: 'image', + }, + destination, + }); + } else if (LATENTS_TO_IMAGE in graph.nodes) { + graph.edges.push({ + source: { + node_id: LATENTS_TO_IMAGE, + field: 'image', + }, + destination, + }); + } +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts index f2e8a0aeca..4e515906b6 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/addWatermarkerToGraph.ts @@ -51,6 +51,7 @@ export const addWatermarkerToGraph = ( // no matter the situation, we want the l2i node to be intermediate nodeToAddTo.is_intermediate = true; + nodeToAddTo.use_cache = true; if (nsfwCheckerNode) { // if we are using NSFW checker, we need to "disable" it output by marking it intermediate, diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts index 10e3ba5152..c612e88598 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildAdHocUpscaleGraph.ts @@ -1,31 +1,58 @@ import { NonNullableGraph } from 'features/nodes/types/types'; import { ESRGANModelName } from 'features/parameters/store/postprocessingSlice'; -import { Graph, ESRGANInvocation } from 'services/api/types'; -import { REALESRGAN as ESRGAN } from './constants'; +import { + Graph, + ESRGANInvocation, + SaveImageInvocation, +} from 'services/api/types'; +import { REALESRGAN as ESRGAN, SAVE_IMAGE } from './constants'; +import { BoardId } from 'features/gallery/store/types'; type Arg = { image_name: string; esrganModelName: ESRGANModelName; + autoAddBoardId: BoardId; }; export const buildAdHocUpscaleGraph = ({ image_name, esrganModelName, + autoAddBoardId, }: Arg): Graph => { const realesrganNode: ESRGANInvocation = { id: ESRGAN, type: 'esrgan', image: { image_name }, model_name: esrganModelName, + is_intermediate: true, + }; + + const saveImageNode: SaveImageInvocation = { + id: SAVE_IMAGE, + type: 'save_image', + use_cache: false, is_intermediate: false, + board: autoAddBoardId === 'none' ? undefined : { board_id: autoAddBoardId }, }; const graph: NonNullableGraph = { id: `adhoc-esrgan-graph`, nodes: { [ESRGAN]: realesrganNode, + [SAVE_IMAGE]: saveImageNode, }, - edges: [], + edges: [ + { + source: { + node_id: ESRGAN, + field: 'image', + }, + destination: { + node_id: SAVE_IMAGE, + field: 'image', + }, + }, + ], }; return graph; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts index e750b40220..4dbbac9f96 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasImageToImageGraph.ts @@ -1,12 +1,12 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageDTO, ImageToLatentsInvocation } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -40,12 +40,12 @@ export const buildCanvasImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, img2imgStrength: strength, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -53,14 +53,10 @@ export const buildCanvasImageToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -72,9 +68,7 @@ export const buildCanvasImageToImageGraph = ( let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -92,32 +86,33 @@ export const buildCanvasImageToImageGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, use_cpu, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -128,12 +123,12 @@ export const buildCanvasImageToImageGraph = ( [IMAGE_TO_LATENTS]: { type: 'i2l', id: IMAGE_TO_LATENTS, - is_intermediate: true, + is_intermediate, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -143,7 +138,7 @@ export const buildCanvasImageToImageGraph = ( [CANVAS_OUTPUT]: { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, }, }, edges: [ @@ -238,7 +233,7 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[IMG2IMG_RESIZE] = { id: IMG2IMG_RESIZE, type: 'img_resize', - is_intermediate: true, + is_intermediate, image: initialImage, width: scaledBoundingBoxDimensions.width, height: scaledBoundingBoxDimensions.height, @@ -246,13 +241,13 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -293,7 +288,7 @@ export const buildCanvasImageToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -322,10 +317,10 @@ export const buildCanvasImageToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -337,17 +332,6 @@ export const buildCanvasImageToImageGraph = ( init_image: initialImage.image_name, }; - graph.edges.push({ - source: { - node_id: METADATA_ACCUMULATOR, - field: 'metadata', - }, - destination: { - node_id: CANVAS_OUTPUT, - field: 'metadata', - }, - }); - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -360,12 +344,12 @@ export const buildCanvasImageToImageGraph = ( // optionally add custom VAE addVAEToGraph(state, graph, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -377,5 +361,7 @@ export const buildCanvasImageToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts index 58a7726410..de7620bc7e 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasInpaintGraph.ts @@ -8,10 +8,9 @@ import { ImageToLatentsInvocation, MaskEdgeInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; @@ -31,7 +30,6 @@ import { INPAINT_IMAGE, INPAINT_IMAGE_RESIZE_DOWN, INPAINT_IMAGE_RESIZE_UP, - ITERATE, LATENTS_TO_IMAGE, MAIN_MODEL_LOADER, MASK_BLUR, @@ -40,10 +38,9 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SEAMLESS, } from './constants'; +import { addSaveImageNode } from './addSaveImageNode'; /** * Builds the Canvas tab's Inpaint graph. @@ -62,11 +59,8 @@ export const buildCanvasInpaintGraph = ( scheduler, steps, img2imgStrength: strength, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, maskBlurMethod, @@ -79,20 +73,16 @@ export const buildCanvasInpaintGraph = ( } = state.generation; if (!model) { - log.error('No model found in state'); - throw new Error('No model found in state'); + log.error('No Image found in state'); + throw new Error('No Image found in state'); } // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; - + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; + const is_intermediate = true; const fp32 = vaePrecision === 'fp32'; const isUsingScaledDimensions = ['auto', 'manual'].includes( @@ -101,9 +91,7 @@ export const buildCanvasInpaintGraph = ( let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const graph: NonNullableGraph = { id: CANVAS_INPAINT_GRAPH, @@ -111,56 +99,57 @@ export const buildCanvasInpaintGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [MASK_BLUR]: { type: 'img_blur', id: MASK_BLUR, - is_intermediate: true, + is_intermediate, radius: maskBlur, blur_type: maskBlurMethod, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -169,20 +158,21 @@ export const buildCanvasInpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -192,29 +182,15 @@ export const buildCanvasInpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, reference: canvasInitImage, }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, - }, }, edges: [ // Connect Model Loader to CLIP Skip and UNet @@ -321,48 +297,7 @@ export const buildCanvasInpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -436,7 +371,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -444,7 +379,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasMaskImage, @@ -452,14 +387,14 @@ export const buildCanvasInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -597,7 +532,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -650,7 +585,7 @@ export const buildCanvasInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -701,26 +636,6 @@ export const buildCanvasInpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -736,6 +651,9 @@ export const buildCanvasInpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -747,5 +665,7 @@ export const buildCanvasInpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts index 71d3492bdc..8205e477ec 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasOutpaintGraph.ts @@ -7,12 +7,12 @@ import { InfillPatchMatchInvocation, InfillTileInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -32,7 +32,6 @@ import { INPAINT_IMAGE_RESIZE_UP, INPAINT_INFILL, INPAINT_INFILL_RESIZE_DOWN, - ITERATE, LATENTS_TO_IMAGE, MAIN_MODEL_LOADER, MASK_COMBINE, @@ -42,8 +41,6 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SEAMLESS, } from './constants'; @@ -64,11 +61,8 @@ export const buildCanvasOutpaintGraph = ( scheduler, steps, img2imgStrength: strength, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, canvasCoherenceMode, @@ -91,23 +85,17 @@ export const buildCanvasOutpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const graph: NonNullableGraph = { id: CANVAS_OUTPAINT_GRAPH, @@ -115,61 +103,62 @@ export const buildCanvasOutpaintGraph = ( [modelLoaderNodeId]: { type: 'main_model_loader', id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [MASK_FROM_ALPHA]: { type: 'tomask', id: MASK_FROM_ALPHA, - is_intermediate: true, + is_intermediate, image: canvasInitImage, }, [MASK_COMBINE]: { type: 'mask_combine', id: MASK_COMBINE, - is_intermediate: true, + is_intermediate, mask2: canvasMaskImage, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [DENOISE_LATENTS]: { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -178,20 +167,21 @@ export const buildCanvasOutpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -201,27 +191,13 @@ export const buildCanvasOutpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, - }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, + is_intermediate, }, }, edges: [ @@ -351,48 +327,7 @@ export const buildCanvasOutpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -472,7 +407,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_patchmatch', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, downscale: infillPatchmatchDownscaleSize, }; } @@ -481,7 +416,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_lama', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -489,7 +424,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_cv2', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -497,7 +432,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_tile', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, tile_size: infillTileSize, }; } @@ -511,7 +446,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -519,28 +454,28 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, }; graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[INPAINT_INFILL_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_INFILL_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -699,7 +634,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -746,7 +681,7 @@ export const buildCanvasOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -803,26 +738,6 @@ export const buildCanvasOutpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -838,6 +753,9 @@ export const buildCanvasOutpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -849,5 +767,7 @@ export const buildCanvasOutpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts index 2a677a8775..d958b78a90 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLImageToImageGraph.ts @@ -1,13 +1,13 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageDTO, ImageToLatentsInvocation } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -26,7 +26,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Image to Image graph. @@ -42,11 +42,10 @@ export const buildCanvasSDXLImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, - clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -55,20 +54,15 @@ export const buildCanvasSDXLImageToImageGraph = ( shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, - shouldConcatSDXLStylePrompt, } = state.sdxl; // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -81,13 +75,11 @@ export const buildCanvasSDXLImageToImageGraph = ( // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -111,19 +103,20 @@ export const buildCanvasSDXLImageToImageGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, use_cpu, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -134,13 +127,13 @@ export const buildCanvasSDXLImageToImageGraph = ( [IMAGE_TO_LATENTS]: { type: 'i2l', id: IMAGE_TO_LATENTS, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -251,7 +244,7 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[IMG2IMG_RESIZE] = { id: IMG2IMG_RESIZE, type: 'img_resize', - is_intermediate: true, + is_intermediate, image: initialImage, width: scaledBoundingBoxDimensions.width, height: scaledBoundingBoxDimensions.height, @@ -259,13 +252,13 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -306,7 +299,7 @@ export const buildCanvasSDXLImageToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -335,17 +328,16 @@ export const buildCanvasSDXLImageToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, vae: undefined, // option; set in addVAEToGraph controlnets: [], // populated in addControlNetToLinearGraph loras: [], // populated in addLoRAsToGraph - clip_skip: clipSkip, strength, init_image: initialImage.image_name, }; @@ -386,12 +378,12 @@ export const buildCanvasSDXLImageToImageGraph = ( // add LoRA support addSDXLLoRAsToGraph(state, graph, SDXL_DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -403,5 +395,7 @@ export const buildCanvasSDXLImageToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts index baa1c0155f..389d510ac7 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLInpaintGraph.ts @@ -8,13 +8,13 @@ import { ImageToLatentsInvocation, MaskEdgeInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -29,7 +29,6 @@ import { INPAINT_IMAGE, INPAINT_IMAGE_RESIZE_DOWN, INPAINT_IMAGE_RESIZE_UP, - ITERATE, LATENTS_TO_IMAGE, MASK_BLUR, MASK_RESIZE_DOWN, @@ -37,15 +36,13 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SDXL_CANVAS_INPAINT_GRAPH, SDXL_DENOISE_LATENTS, SDXL_MODEL_LOADER, SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Inpaint graph. @@ -63,11 +60,8 @@ export const buildCanvasSDXLInpaintGraph = ( cfgScale: cfg_scale, scheduler, steps, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, maskBlurMethod, @@ -82,7 +76,6 @@ export const buildCanvasSDXLInpaintGraph = ( sdxlImg2ImgDenoisingStrength: strength, shouldUseSDXLRefiner, refinerStart, - shouldConcatSDXLStylePrompt, } = state.sdxl; if (!model) { @@ -94,27 +87,21 @@ export const buildCanvasSDXLInpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); const graph: NonNullableGraph = { id: SDXL_CANVAS_INPAINT_GRAPH, @@ -128,43 +115,44 @@ export const buildCanvasSDXLInpaintGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [MASK_BLUR]: { type: 'img_blur', id: MASK_BLUR, - is_intermediate: true, + is_intermediate, radius: maskBlur, blur_type: maskBlurMethod, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -175,20 +163,21 @@ export const buildCanvasSDXLInpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -198,29 +187,15 @@ export const buildCanvasSDXLInpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, reference: canvasInitImage, }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, - }, }, edges: [ // Connect Model Loader to UNet and CLIP @@ -336,48 +311,7 @@ export const buildCanvasSDXLInpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -451,7 +385,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -459,7 +393,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasMaskImage, @@ -467,14 +401,14 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -612,7 +546,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -665,7 +599,7 @@ export const buildCanvasSDXLInpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -716,26 +650,6 @@ export const buildCanvasSDXLInpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -765,6 +679,9 @@ export const buildCanvasSDXLInpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -776,5 +693,7 @@ export const buildCanvasSDXLInpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts index 3f8fffb70a..c913492335 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLOutpaintGraph.ts @@ -7,13 +7,13 @@ import { InfillPatchMatchInvocation, InfillTileInvocation, NoiseInvocation, - RandomIntInvocation, - RangeOfSizeInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -30,7 +30,6 @@ import { INPAINT_IMAGE_RESIZE_UP, INPAINT_INFILL, INPAINT_INFILL_RESIZE_DOWN, - ITERATE, LATENTS_TO_IMAGE, MASK_COMBINE, MASK_FROM_ALPHA, @@ -39,15 +38,13 @@ import { NEGATIVE_CONDITIONING, NOISE, POSITIVE_CONDITIONING, - RANDOM_INT, - RANGE_OF_SIZE, SDXL_CANVAS_OUTPAINT_GRAPH, SDXL_DENOISE_LATENTS, SDXL_MODEL_LOADER, SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Outpaint graph. @@ -65,11 +62,8 @@ export const buildCanvasSDXLOutpaintGraph = ( cfgScale: cfg_scale, scheduler, steps, - iterations, seed, - shouldRandomizeSeed, vaePrecision, - shouldUseNoiseSettings, shouldUseCpuNoise, maskBlur, canvasCoherenceMode, @@ -86,7 +80,6 @@ export const buildCanvasSDXLOutpaintGraph = ( sdxlImg2ImgDenoisingStrength: strength, shouldUseSDXLRefiner, refinerStart, - shouldConcatSDXLStylePrompt, } = state.sdxl; if (!model) { @@ -98,27 +91,21 @@ export const buildCanvasSDXLOutpaintGraph = ( const { width, height } = state.canvas.boundingBoxDimensions; // We may need to set the inpaint width and height to scale the image - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); const graph: NonNullableGraph = { id: SDXL_CANVAS_OUTPAINT_GRAPH, @@ -132,48 +119,49 @@ export const buildCanvasSDXLOutpaintGraph = ( type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [MASK_FROM_ALPHA]: { type: 'tomask', id: MASK_FROM_ALPHA, - is_intermediate: true, + is_intermediate, image: canvasInitImage, }, [MASK_COMBINE]: { type: 'mask_combine', id: MASK_COMBINE, - is_intermediate: true, + is_intermediate, mask2: canvasMaskImage, }, [INPAINT_IMAGE]: { type: 'i2l', id: INPAINT_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, - is_intermediate: true, + seed, + is_intermediate, }, [INPAINT_CREATE_MASK]: { type: 'create_denoise_mask', id: INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: steps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -184,20 +172,21 @@ export const buildCanvasSDXLOutpaintGraph = ( }, [CANVAS_COHERENCE_NOISE]: { type: 'noise', - id: NOISE, + id: CANVAS_COHERENCE_NOISE, use_cpu, - is_intermediate: true, + seed: seed + 1, + is_intermediate, }, [CANVAS_COHERENCE_NOISE_INCREMENT]: { type: 'add', id: CANVAS_COHERENCE_NOISE_INCREMENT, b: 1, - is_intermediate: true, + is_intermediate, }, [CANVAS_COHERENCE_DENOISE_LATENTS]: { type: 'denoise_latents', id: CANVAS_COHERENCE_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, steps: canvasCoherenceSteps, cfg_scale: cfg_scale, scheduler: scheduler, @@ -207,27 +196,13 @@ export const buildCanvasSDXLOutpaintGraph = ( [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, - is_intermediate: true, + is_intermediate, fp32, }, [CANVAS_OUTPUT]: { type: 'color_correct', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, - }, - [RANGE_OF_SIZE]: { - type: 'range_of_size', - id: RANGE_OF_SIZE, - is_intermediate: true, - // seed - must be connected manually - // start: 0, - size: iterations, - step: 1, - }, - [ITERATE]: { - type: 'iterate', - id: ITERATE, - is_intermediate: true, + is_intermediate, }, }, edges: [ @@ -366,48 +341,7 @@ export const buildCanvasSDXLOutpaintGraph = ( field: 'denoise_mask', }, }, - // Iterate - { - source: { - node_id: RANGE_OF_SIZE, - field: 'collection', - }, - destination: { - node_id: ITERATE, - field: 'collection', - }, - }, - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: NOISE, - field: 'seed', - }, - }, // Canvas Refine - { - source: { - node_id: ITERATE, - field: 'item', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'a', - }, - }, - { - source: { - node_id: CANVAS_COHERENCE_NOISE_INCREMENT, - field: 'value', - }, - destination: { - node_id: CANVAS_COHERENCE_NOISE, - field: 'seed', - }, - }, { source: { node_id: modelLoaderNodeId, @@ -487,7 +421,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_patchmatch', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, downscale: infillPatchmatchDownscaleSize, }; } @@ -496,7 +430,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_lama', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -504,7 +438,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_cv2', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, }; } @@ -512,7 +446,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_INFILL] = { type: 'infill_tile', id: INPAINT_INFILL, - is_intermediate: true, + is_intermediate, tile_size: infillTileSize, }; } @@ -526,7 +460,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[INPAINT_IMAGE_RESIZE_UP] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, image: canvasInitImage, @@ -534,28 +468,28 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[MASK_RESIZE_UP] = { type: 'img_resize', id: MASK_RESIZE_UP, - is_intermediate: true, + is_intermediate, width: scaledWidth, height: scaledHeight, }; graph.nodes[INPAINT_IMAGE_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_IMAGE_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[INPAINT_INFILL_RESIZE_DOWN] = { type: 'img_resize', id: INPAINT_INFILL_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; graph.nodes[MASK_RESIZE_DOWN] = { type: 'img_resize', id: MASK_RESIZE_DOWN, - is_intermediate: true, + is_intermediate, width: width, height: height, }; @@ -715,7 +649,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_INPAINT_CREATE_MASK] = { type: 'create_denoise_mask', id: CANVAS_COHERENCE_INPAINT_CREATE_MASK, - is_intermediate: true, + is_intermediate, fp32, }; @@ -762,7 +696,7 @@ export const buildCanvasSDXLOutpaintGraph = ( graph.nodes[CANVAS_COHERENCE_MASK_EDGE] = { type: 'mask_edge', id: CANVAS_COHERENCE_MASK_EDGE, - is_intermediate: true, + is_intermediate, edge_blur: maskBlur, edge_size: maskBlur * 2, low_threshold: 100, @@ -819,26 +753,6 @@ export const buildCanvasSDXLOutpaintGraph = ( }); } - // Handle Seed - if (shouldRandomizeSeed) { - // Random int node to generate the starting seed - const randomIntNode: RandomIntInvocation = { - id: RANDOM_INT, - type: 'rand_int', - }; - - graph.nodes[RANDOM_INT] = randomIntNode; - - // Connect random int to the start of the range of size so the range starts on the random first seed - graph.edges.push({ - source: { node_id: RANDOM_INT, field: 'value' }, - destination: { node_id: RANGE_OF_SIZE, field: 'start' }, - }); - } else { - // User specified seed, so set the start of the range of size to the seed - (graph.nodes[RANGE_OF_SIZE] as RangeOfSizeInvocation).start = seed; - } - // Add Seamless To Graph if (seamlessXAxis || seamlessYAxis) { addSeamlessToLinearGraph(state, graph, modelLoaderNodeId); @@ -868,6 +782,9 @@ export const buildCanvasSDXLOutpaintGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -879,5 +796,7 @@ export const buildCanvasSDXLOutpaintGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts index 6d787987ef..9f9a442b99 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasSDXLTextToImageGraph.ts @@ -1,16 +1,16 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -28,7 +28,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Canvas tab's Text to Image graph. @@ -43,11 +43,10 @@ export const buildCanvasSDXLTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, - clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -55,29 +54,22 @@ export const buildCanvasSDXLTextToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); - const { shouldUseSDXLRefiner, refinerStart, shouldConcatSDXLStylePrompt } = - state.sdxl; + const { shouldUseSDXLRefiner, refinerStart } = state.sdxl; if (!model) { log.error('No model found in state'); throw new Error('No model found in state'); } - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const isUsingOnnxModel = model.model_type === 'onnx'; @@ -94,7 +86,7 @@ export const buildCanvasSDXLTextToImageGraph = ( ? { type: 't2l_onnx', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -102,7 +94,7 @@ export const buildCanvasSDXLTextToImageGraph = ( : { type: 'denoise_latents', id: SDXL_DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -111,8 +103,8 @@ export const buildCanvasSDXLTextToImageGraph = ( }; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the @@ -131,27 +123,28 @@ export const buildCanvasSDXLTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -253,14 +246,14 @@ export const buildCanvasSDXLTextToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -291,7 +284,7 @@ export const buildCanvasSDXLTextToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -317,17 +310,16 @@ export const buildCanvasSDXLTextToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, vae: undefined, // option; set in addVAEToGraph controlnets: [], // populated in addControlNetToLinearGraph loras: [], // populated in addLoRAsToGraph - clip_skip: clipSkip, }; graph.edges.push({ @@ -366,12 +358,12 @@ export const buildCanvasSDXLTextToImageGraph = ( // optionally add custom VAE addVAEToGraph(state, graph, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -383,5 +375,7 @@ export const buildCanvasSDXLTextToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts index 094a7b02cc..2aa0b2b47d 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildCanvasTextToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -41,11 +41,11 @@ export const buildCanvasTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, vaePrecision, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, seamlessXAxis, seamlessYAxis, } = state.generation; @@ -53,14 +53,10 @@ export const buildCanvasTextToImageGraph = ( // The bounding box determines width and height, not the width and height params const { width, height } = state.canvas.boundingBoxDimensions; - const { - scaledBoundingBoxDimensions, - boundingBoxScaleMethod, - shouldAutoSave, - } = state.canvas; + const { scaledBoundingBoxDimensions, boundingBoxScaleMethod } = state.canvas; const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingScaledDimensions = ['auto', 'manual'].includes( boundingBoxScaleMethod ); @@ -70,9 +66,7 @@ export const buildCanvasTextToImageGraph = ( throw new Error('No model found in state'); } - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; const isUsingOnnxModel = model.model_type === 'onnx'; @@ -89,7 +83,7 @@ export const buildCanvasTextToImageGraph = ( ? { type: 't2l_onnx', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -97,7 +91,7 @@ export const buildCanvasTextToImageGraph = ( : { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -122,31 +116,32 @@ export const buildCanvasTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, - is_intermediate: true, + is_intermediate, skipped_layers: clipSkip, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: POSITIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: positivePrompt, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: NEGATIVE_CONDITIONING, - is_intermediate: true, + is_intermediate, prompt: negativePrompt, }, [NOISE]: { type: 'noise', id: NOISE, - is_intermediate: true, + is_intermediate, + seed, width: !isUsingScaledDimensions ? width : scaledBoundingBoxDimensions.width, @@ -239,14 +234,14 @@ export const buildCanvasTextToImageGraph = ( graph.nodes[LATENTS_TO_IMAGE] = { id: LATENTS_TO_IMAGE, type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', - is_intermediate: true, + is_intermediate, fp32, }; graph.nodes[CANVAS_OUTPUT] = { id: CANVAS_OUTPUT, type: 'img_resize', - is_intermediate: !shouldAutoSave, + is_intermediate, width: width, height: height, }; @@ -277,7 +272,7 @@ export const buildCanvasTextToImageGraph = ( graph.nodes[CANVAS_OUTPUT] = { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: CANVAS_OUTPUT, - is_intermediate: !shouldAutoSave, + is_intermediate, fp32, }; @@ -303,10 +298,10 @@ export const buildCanvasTextToImageGraph = ( height: !isUsingScaledDimensions ? height : scaledBoundingBoxDimensions.height, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -339,12 +334,12 @@ export const buildCanvasTextToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -356,5 +351,7 @@ export const buildCanvasTextToImageGraph = ( addWatermarkerToGraph(state, graph, CANVAS_OUTPUT); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts new file mode 100644 index 0000000000..9c25ee3b8f --- /dev/null +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearBatchConfig.ts @@ -0,0 +1,185 @@ +import { NUMPY_RAND_MAX } from 'app/constants'; +import { RootState } from 'app/store/store'; +import { generateSeeds } from 'common/util/generateSeeds'; +import { NonNullableGraph } from 'features/nodes/types/types'; +import { range, unset } from 'lodash-es'; +import { components } from 'services/api/schema'; +import { Batch, BatchConfig } from 'services/api/types'; +import { + CANVAS_COHERENCE_NOISE, + METADATA_ACCUMULATOR, + NOISE, + POSITIVE_CONDITIONING, +} from './constants'; + +export const prepareLinearUIBatch = ( + state: RootState, + graph: NonNullableGraph, + prepend: boolean +): BatchConfig => { + const { iterations, model, shouldRandomizeSeed, seed } = state.generation; + const { shouldConcatSDXLStylePrompt, positiveStylePrompt } = state.sdxl; + const { prompts, seedBehaviour } = state.dynamicPrompts; + + const data: Batch['data'] = []; + + if (prompts.length === 1) { + unset(graph.nodes[METADATA_ACCUMULATOR], 'seed'); + const seeds = generateSeeds({ + count: iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + const zipped: components['schemas']['BatchDatum'][] = []; + + if (graph.nodes[NOISE]) { + zipped.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + zipped.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + zipped.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + + data.push(zipped); + } else { + // prompts.length > 1 aka dynamic prompts + const firstBatchDatumList: components['schemas']['BatchDatum'][] = []; + const secondBatchDatumList: components['schemas']['BatchDatum'][] = []; + + // add seeds first to ensure the output order groups the prompts + if (seedBehaviour === 'PER_PROMPT') { + const seeds = generateSeeds({ + count: prompts.length * iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + if (graph.nodes[NOISE]) { + firstBatchDatumList.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + firstBatchDatumList.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + } else { + // seedBehaviour = SeedBehaviour.PerRun + const seeds = generateSeeds({ + count: iterations, + start: shouldRandomizeSeed ? undefined : seed, + }); + + if (graph.nodes[NOISE]) { + secondBatchDatumList.push({ + node_path: NOISE, + field_name: 'seed', + items: seeds, + }); + } + if (graph.nodes[METADATA_ACCUMULATOR]) { + secondBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'seed', + items: seeds, + }); + } + if (graph.nodes[CANVAS_COHERENCE_NOISE]) { + secondBatchDatumList.push({ + node_path: CANVAS_COHERENCE_NOISE, + field_name: 'seed', + items: seeds.map((seed) => (seed + 1) % NUMPY_RAND_MAX), + }); + } + data.push(secondBatchDatumList); + } + + const extendedPrompts = + seedBehaviour === 'PER_PROMPT' + ? range(iterations).flatMap(() => prompts) + : prompts; + + // zipped batch of prompts + if (graph.nodes[POSITIVE_CONDITIONING]) { + firstBatchDatumList.push({ + node_path: POSITIVE_CONDITIONING, + field_name: 'prompt', + items: extendedPrompts, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'positive_prompt', + items: extendedPrompts, + }); + } + + if (shouldConcatSDXLStylePrompt && model?.base_model === 'sdxl') { + unset(graph.nodes[METADATA_ACCUMULATOR], 'positive_style_prompt'); + + const stylePrompts = extendedPrompts.map((p) => + [p, positiveStylePrompt].join(' ') + ); + + if (graph.nodes[POSITIVE_CONDITIONING]) { + firstBatchDatumList.push({ + node_path: POSITIVE_CONDITIONING, + field_name: 'style', + items: stylePrompts, + }); + } + + if (graph.nodes[METADATA_ACCUMULATOR]) { + firstBatchDatumList.push({ + node_path: METADATA_ACCUMULATOR, + field_name: 'positive_style_prompt', + items: stylePrompts, + }); + } + } + + data.push(firstBatchDatumList); + } + + const enqueueBatchArg: BatchConfig = { + prepend, + batch: { + graph, + runs: 1, + data, + }, + }; + + return enqueueBatchArg; +}; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts index dc9a34c67e..bf8d9ea314 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearImageToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageResizeInvocation, ImageToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -41,6 +41,7 @@ export const buildLinearImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, initialImage, img2imgStrength: strength, @@ -49,22 +50,11 @@ export const buildLinearImageToImageGraph = ( height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, } = state.generation; - // TODO: add batch functionality - // const { - // isEnabled: isBatchEnabled, - // imageNames: batchImageNames, - // asInitialImage, - // } = state.batch; - - // const shouldBatch = - // isBatchEnabled && batchImageNames.length > 0 && asInitialImage; - /** * The easiest way to build linear graphs is to do it in the node editor, then copy and paste the * full graph here as a template. Then use the parameters from app state and set friendlier node @@ -85,12 +75,11 @@ export const buildLinearImageToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; let modelLoaderNodeId = MAIN_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // copy-pasted graph from node editor, filled in with state values & friendly node ids const graph: NonNullableGraph = { @@ -100,31 +89,38 @@ export const buildLinearImageToImageGraph = ( type: 'main_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, skipped_layers: clipSkip, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'compel', id: POSITIVE_CONDITIONING, prompt: positivePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'compel', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, + seed, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, [DENOISE_LATENTS]: { type: 'denoise_latents', @@ -134,6 +130,7 @@ export const buildLinearImageToImageGraph = ( steps, denoising_start: 1 - strength, denoising_end: 1, + is_intermediate, }, [IMAGE_TO_LATENTS]: { type: 'i2l', @@ -143,6 +140,7 @@ export const buildLinearImageToImageGraph = ( // image_name: initialImage.image_name, // }, fp32, + is_intermediate, }, }, edges: [ @@ -320,10 +318,10 @@ export const buildLinearImageToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -358,12 +356,12 @@ export const buildLinearImageToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -375,5 +373,7 @@ export const buildLinearImageToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts index 757a3976bb..bc02fb5a66 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLImageToImageGraph.ts @@ -1,16 +1,16 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { ImageResizeInvocation, ImageToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -28,7 +28,7 @@ import { SDXL_REFINER_SEAMLESS, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; /** * Builds the Image to Image tab graph. @@ -43,14 +43,13 @@ export const buildLinearSDXLImageToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, initialImage, shouldFitToWidthHeight, width, height, - clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, @@ -59,7 +58,6 @@ export const buildLinearSDXLImageToImageGraph = ( const { positiveStylePrompt, negativeStylePrompt, - shouldConcatSDXLStylePrompt, shouldUseSDXLRefiner, refinerStart, sdxlImg2ImgDenoisingStrength: strength, @@ -85,17 +83,16 @@ export const buildLinearSDXLImageToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); // copy-pasted graph from node editor, filled in with state values & friendly node ids const graph: NonNullableGraph = { @@ -105,28 +102,34 @@ export const buildLinearSDXLImageToImageGraph = ( type: 'sdxl_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, use_cpu, + seed, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -138,6 +141,7 @@ export const buildLinearSDXLImageToImageGraph = ( ? Math.min(refinerStart, 1 - strength) : 1 - strength, denoising_end: shouldUseSDXLRefiner ? refinerStart : 1, + is_intermediate, }, [IMAGE_TO_LATENTS]: { type: 'i2l', @@ -147,6 +151,7 @@ export const buildLinearSDXLImageToImageGraph = ( // image_name: initialImage.image_name, // }, fp32, + is_intermediate, }, }, edges: [ @@ -333,17 +338,16 @@ export const buildLinearSDXLImageToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, vae: undefined, controlnets: [], loras: [], - clip_skip: clipSkip, strength: strength, init_image: initialImage.imageName, positive_style_prompt: positiveStylePrompt, @@ -384,8 +388,8 @@ export const buildLinearSDXLImageToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); + // Add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { @@ -398,5 +402,7 @@ export const buildLinearSDXLImageToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts index 9590e77f89..22a7dd4192 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearSDXLTextToImageGraph.ts @@ -1,12 +1,12 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; import { addSDXLLoRAsToGraph } from './addSDXLLoRAstoGraph'; import { addSDXLRefinerToGraph } from './addSDXLRefinerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -22,7 +22,7 @@ import { SDXL_TEXT_TO_IMAGE_GRAPH, SEAMLESS, } from './constants'; -import { craftSDXLStylePrompt } from './helpers/craftSDXLStylePrompt'; +import { buildSDXLStylePrompts } from './helpers/craftSDXLStylePrompt'; export const buildLinearSDXLTextToImageGraph = ( state: RootState @@ -34,12 +34,11 @@ export const buildLinearSDXLTextToImageGraph = ( model, cfgScale: cfg_scale, scheduler, + seed, steps, width, height, - clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, @@ -49,13 +48,10 @@ export const buildLinearSDXLTextToImageGraph = ( positiveStylePrompt, negativeStylePrompt, shouldUseSDXLRefiner, - shouldConcatSDXLStylePrompt, refinerStart, } = state.sdxl; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; if (!model) { log.error('No model found in state'); @@ -63,10 +59,11 @@ export const buildLinearSDXLTextToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; + const is_intermediate = true; // Construct Style Prompt - const { craftedPositiveStylePrompt, craftedNegativeStylePrompt } = - craftSDXLStylePrompt(state, shouldConcatSDXLStylePrompt); + const { joinedPositiveStylePrompt, joinedNegativeStylePrompt } = + buildSDXLStylePrompts(state); // Model Loader ID let modelLoaderNodeId = SDXL_MODEL_LOADER; @@ -88,25 +85,30 @@ export const buildLinearSDXLTextToImageGraph = ( type: 'sdxl_model_loader', id: modelLoaderNodeId, model, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - style: craftedPositiveStylePrompt, + style: joinedPositiveStylePrompt, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: 'sdxl_compel_prompt', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - style: craftedNegativeStylePrompt, + style: joinedNegativeStylePrompt, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, + seed, width, height, use_cpu, + is_intermediate, }, [SDXL_DENOISE_LATENTS]: { type: 'denoise_latents', @@ -116,11 +118,13 @@ export const buildLinearSDXLTextToImageGraph = ( steps, denoising_start: 0, denoising_end: shouldUseSDXLRefiner ? refinerStart : 1, + is_intermediate, }, [LATENTS_TO_IMAGE]: { type: 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, }, edges: [ @@ -228,17 +232,16 @@ export const buildLinearSDXLTextToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, vae: undefined, controlnets: [], loras: [], - clip_skip: clipSkip, positive_style_prompt: positiveStylePrompt, negative_style_prompt: negativeStylePrompt, }; @@ -277,8 +280,8 @@ export const buildLinearSDXLTextToImageGraph = ( // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); + // add IP Adapter + addIPAdapterToLinearGraph(state, graph, SDXL_DENOISE_LATENTS); // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { @@ -291,5 +294,7 @@ export const buildLinearSDXLTextToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts index 5c534fff21..d7af045803 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildLinearTextToImageGraph.ts @@ -1,15 +1,15 @@ import { logger } from 'app/logging/logger'; import { RootState } from 'app/store/store'; import { NonNullableGraph } from 'features/nodes/types/types'; -import { initialGenerationState } from 'features/parameters/store/generationSlice'; import { DenoiseLatentsInvocation, ONNXTextToLatentsInvocation, } from 'services/api/types'; import { addControlNetToLinearGraph } from './addControlNetToLinearGraph'; -import { addDynamicPromptsToGraph } from './addDynamicPromptsToGraph'; +import { addIPAdapterToLinearGraph } from './addIPAdapterToLinearGraph'; import { addLoRAsToGraph } from './addLoRAsToGraph'; import { addNSFWCheckerToGraph } from './addNSFWCheckerToGraph'; +import { addSaveImageNode } from './addSaveImageNode'; import { addSeamlessToLinearGraph } from './addSeamlessToLinearGraph'; import { addVAEToGraph } from './addVAEToGraph'; import { addWatermarkerToGraph } from './addWatermarkerToGraph'; @@ -42,15 +42,13 @@ export const buildLinearTextToImageGraph = ( height, clipSkip, shouldUseCpuNoise, - shouldUseNoiseSettings, vaePrecision, seamlessXAxis, seamlessYAxis, + seed, } = state.generation; - const use_cpu = shouldUseNoiseSettings - ? shouldUseCpuNoise - : initialGenerationState.shouldUseCpuNoise; + const use_cpu = shouldUseCpuNoise; if (!model) { log.error('No model found in state'); @@ -58,7 +56,7 @@ export const buildLinearTextToImageGraph = ( } const fp32 = vaePrecision === 'fp32'; - + const is_intermediate = true; const isUsingOnnxModel = model.model_type === 'onnx'; let modelLoaderNodeId = isUsingOnnxModel @@ -74,7 +72,7 @@ export const buildLinearTextToImageGraph = ( ? { type: 't2l_onnx', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -82,7 +80,7 @@ export const buildLinearTextToImageGraph = ( : { type: 'denoise_latents', id: DENOISE_LATENTS, - is_intermediate: true, + is_intermediate, cfg_scale, scheduler, steps, @@ -108,40 +106,42 @@ export const buildLinearTextToImageGraph = ( [modelLoaderNodeId]: { type: modelLoaderNodeType, id: modelLoaderNodeId, - is_intermediate: true, + is_intermediate, model, }, [CLIP_SKIP]: { type: 'clip_skip', id: CLIP_SKIP, skipped_layers: clipSkip, - is_intermediate: true, + is_intermediate, }, [POSITIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: POSITIVE_CONDITIONING, prompt: positivePrompt, - is_intermediate: true, + is_intermediate, }, [NEGATIVE_CONDITIONING]: { type: isUsingOnnxModel ? 'prompt_onnx' : 'compel', id: NEGATIVE_CONDITIONING, prompt: negativePrompt, - is_intermediate: true, + is_intermediate, }, [NOISE]: { type: 'noise', id: NOISE, + seed, width, height, use_cpu, - is_intermediate: true, + is_intermediate, }, [t2lNode.id]: t2lNode, [LATENTS_TO_IMAGE]: { type: isUsingOnnxModel ? 'l2i_onnx' : 'l2i', id: LATENTS_TO_IMAGE, fp32, + is_intermediate, }, }, edges: [ @@ -240,10 +240,10 @@ export const buildLinearTextToImageGraph = ( cfg_scale, height, width, - positive_prompt: '', // set in addDynamicPromptsToGraph + positive_prompt: positivePrompt, negative_prompt: negativePrompt, model, - seed: 0, // set in addDynamicPromptsToGraph + seed, steps, rand_device: use_cpu ? 'cpu' : 'cuda', scheduler, @@ -276,12 +276,12 @@ export const buildLinearTextToImageGraph = ( // add LoRA support addLoRAsToGraph(state, graph, DENOISE_LATENTS, modelLoaderNodeId); - // add dynamic prompts - also sets up core iteration and seed - addDynamicPromptsToGraph(state, graph); - // add controlnet, mutating `graph` addControlNetToLinearGraph(state, graph, DENOISE_LATENTS); + // add IP Adapter + addIPAdapterToLinearGraph(state, graph, DENOISE_LATENTS); + // NSFW & watermark - must be last thing added to graph if (state.system.shouldUseNSFWChecker) { // must add before watermarker! @@ -293,5 +293,7 @@ export const buildLinearTextToImageGraph = ( addWatermarkerToGraph(state, graph); } + addSaveImageNode(state, graph); + return graph; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts index 71f79dbab5..7be06ac110 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/buildNodesGraph.ts @@ -55,6 +55,9 @@ export const buildNodesGraph = (nodesState: NodesState): Graph => { {} as Record, unknown> ); + // add reserved use_cache + transformedInputs['use_cache'] = node.data.useCache; + // Build this specific node const graphNode = { type, diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts index 70bd0c4058..32c46944c7 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/constants.ts @@ -3,6 +3,7 @@ export const POSITIVE_CONDITIONING = 'positive_conditioning'; export const NEGATIVE_CONDITIONING = 'negative_conditioning'; export const DENOISE_LATENTS = 'denoise_latents'; export const LATENTS_TO_IMAGE = 'latents_to_image'; +export const SAVE_IMAGE = 'save_image'; export const NSFW_CHECKER = 'nsfw_checker'; export const WATERMARKER = 'invisible_watermark'; export const NOISE = 'noise'; @@ -45,6 +46,7 @@ export const MASK_RESIZE_DOWN = 'mask_resize_down'; export const COLOR_CORRECT = 'color_correct'; export const PASTE_IMAGE = 'img_paste'; export const CONTROL_NET_COLLECT = 'control_net_collect'; +export const IP_ADAPTER = 'ip_adapter'; export const DYNAMIC_PROMPT = 'dynamic_prompt'; export const IMAGE_COLLECTION = 'image_collection'; export const IMAGE_COLLECTION_ITERATE = 'image_collection_iterate'; diff --git a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts index f46d5cc5dc..ac058abd82 100644 --- a/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts +++ b/invokeai/frontend/web/src/features/nodes/util/graphBuilders/helpers/craftSDXLStylePrompt.ts @@ -1,28 +1,26 @@ import { RootState } from 'app/store/store'; -export const craftSDXLStylePrompt = ( +export const buildSDXLStylePrompts = ( state: RootState, - shouldConcatSDXLStylePrompt: boolean + overrideConcat?: boolean ) => { const { positivePrompt, negativePrompt } = state.generation; - const { positiveStylePrompt, negativeStylePrompt } = state.sdxl; + const { + positiveStylePrompt, + negativeStylePrompt, + shouldConcatSDXLStylePrompt, + } = state.sdxl; - let craftedPositiveStylePrompt = positiveStylePrompt; - let craftedNegativeStylePrompt = negativeStylePrompt; + // Construct Style Prompt + const joinedPositiveStylePrompt = + shouldConcatSDXLStylePrompt || overrideConcat + ? [positivePrompt, positiveStylePrompt].join(' ') + : positiveStylePrompt; - if (shouldConcatSDXLStylePrompt) { - if (positiveStylePrompt.length > 0) { - craftedPositiveStylePrompt = `${positivePrompt} ${positiveStylePrompt}`; - } else { - craftedPositiveStylePrompt = positivePrompt; - } + const joinedNegativeStylePrompt = + shouldConcatSDXLStylePrompt || overrideConcat + ? [negativePrompt, negativeStylePrompt].join(' ') + : negativeStylePrompt; - if (negativeStylePrompt.length > 0) { - craftedNegativeStylePrompt = `${negativePrompt} ${negativeStylePrompt}`; - } else { - craftedNegativeStylePrompt = negativePrompt; - } - } - - return { craftedPositiveStylePrompt, craftedNegativeStylePrompt }; + return { joinedPositiveStylePrompt, joinedNegativeStylePrompt }; }; diff --git a/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts b/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts index 553d0770aa..69d8d9dd4c 100644 --- a/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts +++ b/invokeai/frontend/web/src/features/nodes/util/parseSchema.ts @@ -16,7 +16,7 @@ import { } from '../types/types'; import { buildInputFieldTemplate, getFieldType } from './fieldTemplateBuilders'; -const RESERVED_INPUT_FIELD_NAMES = ['id', 'type', 'metadata']; +const RESERVED_INPUT_FIELD_NAMES = ['id', 'type', 'metadata', 'use_cache']; const RESERVED_OUTPUT_FIELD_NAMES = ['type']; const RESERVED_FIELD_TYPES = [ 'WorkflowField', @@ -60,11 +60,23 @@ const isNotInDenylist = (schema: InvocationSchemaObject) => !invocationDenylist.includes(schema.properties.type.default); export const parseSchema = ( - openAPI: OpenAPIV3.Document + openAPI: OpenAPIV3.Document, + nodesAllowlistExtra: string[] | undefined = undefined, + nodesDenylistExtra: string[] | undefined = undefined ): Record => { const filteredSchemas = Object.values(openAPI.components?.schemas ?? {}) .filter(isInvocationSchemaObject) - .filter(isNotInDenylist); + .filter(isNotInDenylist) + .filter((schema) => + nodesAllowlistExtra + ? nodesAllowlistExtra.includes(schema.properties.type.default) + : true + ) + .filter((schema) => + nodesDenylistExtra + ? !nodesDenylistExtra.includes(schema.properties.type.default) + : true + ); const invocations = filteredSchemas.reduce< Record @@ -223,6 +235,8 @@ export const parseSchema = ( {} as Record ); + const useCache = schema.properties.use_cache.default; + const invocation: InvocationTemplate = { title, type, @@ -232,6 +246,7 @@ export const parseSchema = ( outputType, inputs, outputs, + useCache, }; Object.assign(invocationsAccumulator, { [type]: invocation }); diff --git a/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts b/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts index a3085d516b..9e5cea13f6 100644 --- a/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts +++ b/invokeai/frontend/web/src/features/nodes/util/validateWorkflow.ts @@ -7,6 +7,7 @@ import { isWorkflowInvocationNode, } from '../types/types'; import { parseify } from 'common/util/serialize'; +import i18n from 'i18next'; export const validateWorkflow = ( workflow: Workflow, @@ -25,8 +26,14 @@ export const validateWorkflow = ( const nodeTemplate = nodeTemplates[node.data.type]; if (!nodeTemplate) { errors.push({ - message: `Node "${node.data.type}" skipped`, - issues: [`Node type "${node.data.type}" does not exist`], + message: `${i18n.t('nodes.node')} "${node.data.type}" ${i18n.t( + 'nodes.skipped' + )}`, + issues: [ + `${i18n.t('nodes.nodeType')}"${node.data.type}" ${i18n.t( + 'nodes.doesNotExist' + )}`, + ], data: node, }); return; @@ -38,9 +45,13 @@ export const validateWorkflow = ( compareVersions(nodeTemplate.version, node.data.version) !== 0 ) { errors.push({ - message: `Node "${node.data.type}" has mismatched version`, + message: `${i18n.t('nodes.node')} "${node.data.type}" ${i18n.t( + 'nodes.mismatchedVersion' + )}`, issues: [ - `Node "${node.data.type}" v${node.data.version} may be incompatible with installed v${nodeTemplate.version}`, + `${i18n.t('nodes.node')} "${node.data.type}" v${ + node.data.version + } ${i18n.t('nodes.maybeIncompatible')} v${nodeTemplate.version}`, ], data: { node, nodeTemplate: parseify(nodeTemplate) }, }); @@ -52,33 +63,49 @@ export const validateWorkflow = ( const targetNode = keyedNodes[edge.target]; const issues: string[] = []; if (!sourceNode) { - issues.push(`Output node ${edge.source} does not exist`); + issues.push( + `${i18n.t('nodes.outputNode')} ${edge.source} ${i18n.t( + 'nodes.doesNotExist' + )}` + ); } else if ( edge.type === 'default' && !(edge.sourceHandle in sourceNode.data.outputs) ) { issues.push( - `Output field "${edge.source}.${edge.sourceHandle}" does not exist` + `${i18n.t('nodes.outputNode')} "${edge.source}.${ + edge.sourceHandle + }" ${i18n.t('nodes.doesNotExist')}` ); } if (!targetNode) { - issues.push(`Input node ${edge.target} does not exist`); + issues.push( + `${i18n.t('nodes.inputNode')} ${edge.target} ${i18n.t( + 'nodes.doesNotExist' + )}` + ); } else if ( edge.type === 'default' && !(edge.targetHandle in targetNode.data.inputs) ) { issues.push( - `Input field "${edge.target}.${edge.targetHandle}" does not exist` + `${i18n.t('nodes.inputField')} "${edge.target}.${ + edge.targetHandle + }" ${i18n.t('nodes.doesNotExist')}` ); } if (!nodeTemplates[sourceNode?.data.type ?? '__UNKNOWN_NODE_TYPE__']) { issues.push( - `Source node "${edge.source}" missing template "${sourceNode?.data.type}"` + `${i18n.t('nodes.sourceNode')} "${edge.source}" ${i18n.t( + 'nodes.missingTemplate' + )} "${sourceNode?.data.type}"` ); } if (!nodeTemplates[targetNode?.data.type ?? '__UNKNOWN_NODE_TYPE__']) { issues.push( - `Source node "${edge.target}" missing template "${targetNode?.data.type}"` + `${i18n.t('nodes.sourceNode')}"${edge.target}" ${i18n.t( + 'nodes.missingTemplate' + )} "${targetNode?.data.type}"` ); } if (issues.length) { diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx index bca1402571..85b6eaa903 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse.tsx @@ -1,36 +1,68 @@ -import { Flex } from '@chakra-ui/react'; +import { Divider, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { RootState, stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { ParamCpuNoiseToggle } from '../Noise/ParamCpuNoise'; +import ParamSeamless from '../Seamless/ParamSeamless'; import ParamClipSkip from './ParamClipSkip'; const selector = createSelector( stateSelector, (state: RootState) => { - const clipSkip = state.generation.clipSkip; - return { - activeLabel: clipSkip > 0 ? 'Clip Skip' : undefined, - }; + const { clipSkip, model, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise } = + state.generation; + + return { clipSkip, model, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise }; }, defaultSelectorOptions ); export default function ParamAdvancedCollapse() { - const { activeLabel } = useAppSelector(selector); - const shouldShowAdvancedOptions = useAppSelector( - (state: RootState) => state.generation.shouldShowAdvancedOptions - ); + const { clipSkip, model, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise } = + useAppSelector(selector); + const { t } = useTranslation(); + const activeLabel = useMemo(() => { + const activeLabel: string[] = []; - if (!shouldShowAdvancedOptions) { - return null; - } + if (shouldUseCpuNoise) { + activeLabel.push(t('parameters.cpuNoise')); + } else { + activeLabel.push(t('parameters.gpuNoise')); + } + + if (clipSkip > 0 && model && model.base_model !== 'sdxl') { + activeLabel.push( + t('parameters.clipSkipWithLayerCount', { layerCount: clipSkip }) + ); + } + + if (seamlessXAxis && seamlessYAxis) { + activeLabel.push(t('parameters.seamlessX&Y')); + } else if (seamlessXAxis) { + activeLabel.push(t('parameters.seamlessX')); + } else if (seamlessYAxis) { + activeLabel.push(t('parameters.seamlessY')); + } + + return activeLabel.join(', '); + }, [clipSkip, model, seamlessXAxis, seamlessYAxis, shouldUseCpuNoise, t]); return ( - + - + + + {model && model?.base_model !== 'sdxl' && ( + <> + + + + )} + ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx index f51e42b6a1..bff8120b7b 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Advanced/ParamClipSkip.tsx @@ -1,5 +1,6 @@ import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setClipSkip } from 'features/parameters/store/generationSlice'; import { clipSkipMap } from 'features/parameters/types/constants'; @@ -41,20 +42,26 @@ export default function ParamClipSkip() { return clipSkipMap[model.base_model].markers; }, [model]); + if (model?.base_model === 'sdxl') { + return null; + } + return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx index 1c1f60bc09..c5bda7c596 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize.tsx @@ -1,7 +1,8 @@ -import { Flex, Spacer, Text } from '@chakra-ui/react'; +import { Flex, FormControl, FormLabel, Spacer } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { flipBoundingBoxAxes } from 'features/canvas/store/canvasSlice'; import { generationSelector } from 'features/parameters/store/generationSelectors'; @@ -92,38 +93,29 @@ export default function ParamBoundingBoxSize() { }, }} > - - - {t('parameters.aspectRatio')} - - - - } - fontSize={20} - onClick={handleToggleSize} - /> - } - isChecked={shouldLockAspectRatio} - onClick={handleLockRatio} - /> - + + + {t('parameters.aspectRatio')} + + + } + fontSize={20} + onClick={handleToggleSize} + /> + } + isChecked={shouldLockAspectRatio} + onClick={handleLockRatio} + /> + + diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceMode.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceMode.tsx index afc68c94ac..e3d6501e1d 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceMode.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceMode.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import { IAISelectDataType } from 'common/components/IAIMantineSearchableSelect'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { setCanvasCoherenceMode } from 'features/parameters/store/generationSlice'; @@ -30,12 +31,14 @@ const ParamCanvasCoherenceMode = () => { }; return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx index 5482a7e1d9..463d596a5c 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceSteps.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setCanvasCoherenceSteps } from 'features/parameters/store/generationSlice'; import { memo } from 'react'; @@ -13,23 +14,25 @@ const ParamCanvasCoherenceSteps = () => { const { t } = useTranslation(); return ( - { - dispatch(setCanvasCoherenceSteps(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setCanvasCoherenceSteps(20)); - }} - /> + + { + dispatch(setCanvasCoherenceSteps(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setCanvasCoherenceSteps(20)); + }} + /> + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx index f478bd70fe..e5311db3a6 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/CoherencePass/ParamCanvasCoherenceStrength.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setCanvasCoherenceStrength } from 'features/parameters/store/generationSlice'; import { memo } from 'react'; @@ -13,23 +14,25 @@ const ParamCanvasCoherenceStrength = () => { const { t } = useTranslation(); return ( - { - dispatch(setCanvasCoherenceStrength(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setCanvasCoherenceStrength(0.3)); - }} - /> + + { + dispatch(setCanvasCoherenceStrength(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setCanvasCoherenceStrength(0.3)); + }} + /> + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx index 82b82228e2..bbadbbabf0 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlur.tsx @@ -1,5 +1,6 @@ import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISlider from 'common/components/IAISlider'; import { setMaskBlur } from 'features/parameters/store/generationSlice'; import { useTranslation } from 'react-i18next'; @@ -12,21 +13,23 @@ export default function ParamMaskBlur() { const { t } = useTranslation(); return ( - { - dispatch(setMaskBlur(v)); - }} - withInput - withSliderMarks - withReset - handleReset={() => { - dispatch(setMaskBlur(16)); - }} - /> + + { + dispatch(setMaskBlur(v)); + }} + withInput + withSliderMarks + withReset + handleReset={() => { + dispatch(setMaskBlur(16)); + }} + /> + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx index 62d0605640..df0b2ebc90 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/Compositing/MaskAdjustment/ParamMaskBlurMethod.tsx @@ -2,6 +2,7 @@ import { SelectItem } from '@mantine/core'; import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { setMaskBlurMethod } from 'features/parameters/store/generationSlice'; import { useTranslation } from 'react-i18next'; @@ -28,11 +29,13 @@ export default function ParamMaskBlurMethod() { }; return ( - + + + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx index 9ac0e3588f..cf4c9cdb0c 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillMethod.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { setInfillMethod } from 'features/parameters/store/generationSlice'; @@ -39,14 +40,16 @@ const ParamInfillMethod = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx index e00d56b639..1a0e497739 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamScaleBeforeProcessing.tsx @@ -1,6 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSearchableSelect from 'common/components/IAIMantineSearchableSelect'; import { canvasSelector } from 'features/canvas/store/canvasSelectors'; import { setBoundingBoxScaleMethod } from 'features/canvas/store/canvasSlice'; @@ -35,12 +36,14 @@ const ParamScaleBeforeProcessing = () => { }; return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx index 39ff5022d4..844bda8b3d 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse.tsx @@ -6,6 +6,7 @@ import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import IAIIconButton from 'common/components/IAIIconButton'; import ControlNet from 'features/controlNet/components/ControlNet'; +import IPAdapterPanel from 'features/controlNet/components/ipAdapter/IPAdapterPanel'; import ParamControlNetFeatureToggle from 'features/controlNet/components/parameters/ParamControlNetFeatureToggle'; import { controlNetAdded, @@ -14,25 +15,32 @@ import { import { getValidControlNets } from 'features/controlNet/util/getValidControlNets'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { map } from 'lodash-es'; -import { Fragment, memo, useCallback } from 'react'; +import { Fragment, memo, useCallback, useMemo } from 'react'; import { FaPlus } from 'react-icons/fa'; -import { - controlNetModelsAdapter, - useGetControlNetModelsQuery, -} from 'services/api/endpoints/models'; +import { useGetControlNetModelsQuery } from 'services/api/endpoints/models'; import { v4 as uuidv4 } from 'uuid'; const selector = createSelector( [stateSelector], ({ controlNet }) => { - const { controlNets, isEnabled } = controlNet; + const { controlNets, isEnabled, isIPAdapterEnabled, ipAdapterInfo } = + controlNet; const validControlNets = getValidControlNets(controlNets); + const isIPAdapterValid = ipAdapterInfo.model && ipAdapterInfo.adapterImage; + let activeLabel = undefined; - const activeLabel = - isEnabled && validControlNets.length > 0 - ? `${validControlNets.length} Active` - : undefined; + if (isEnabled && validControlNets.length > 0) { + activeLabel = `${validControlNets.length} ControlNet`; + } + + if (isIPAdapterEnabled && isIPAdapterValid) { + if (activeLabel) { + activeLabel = `${activeLabel}, IP Adapter`; + } else { + activeLabel = 'IP Adapter'; + } + } return { controlNetsArray: map(controlNets), activeLabel }; }, @@ -43,16 +51,22 @@ const ParamControlNetCollapse = () => { const { controlNetsArray, activeLabel } = useAppSelector(selector); const isControlNetDisabled = useFeatureStatus('controlNet').isFeatureDisabled; const dispatch = useAppDispatch(); - const { firstModel } = useGetControlNetModelsQuery(undefined, { - selectFromResult: (result) => { - const firstModel = result.data - ? controlNetModelsAdapter.getSelectors().selectAll(result.data)[0] - : undefined; - return { - firstModel, - }; - }, - }); + const { data: controlnetModels } = useGetControlNetModelsQuery(); + + const firstModel = useMemo(() => { + if (!controlnetModels || !Object.keys(controlnetModels.entities).length) { + return undefined; + } + const firstModelId = Object.keys(controlnetModels.entities)[0]; + + if (!firstModelId) { + return undefined; + } + + const firstModel = controlnetModels.entities[firstModelId]; + + return firstModel ? firstModel : undefined; + }, [controlnetModels]); const handleClickedAddControlNet = useCallback(() => { if (!firstModel) { @@ -101,6 +115,7 @@ const ParamControlNetCollapse = () => { ))} + ); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamAspectRatio.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamAspectRatio.tsx index 05e0b09cee..3a5cc264e7 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamAspectRatio.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamAspectRatio.tsx @@ -1,4 +1,4 @@ -import { ButtonGroup, Flex } from '@chakra-ui/react'; +import { ButtonGroup } from '@chakra-ui/react'; import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; @@ -29,25 +29,23 @@ export default function ParamAspectRatio() { const activeTabName = useAppSelector(activeTabNameSelector); return ( - - - {aspectRatios.map((ratio) => ( - { - dispatch(setAspectRatio(ratio.value)); - dispatch(setShouldLockAspectRatio(false)); - }} - > - {ratio.name} - - ))} - - + + {aspectRatios.map((ratio) => ( + { + dispatch(setAspectRatio(ratio.value)); + dispatch(setShouldLockAspectRatio(false)); + }} + > + {ratio.name} + + ))} + ); } diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx index 54a7ccbe65..233a32ff09 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamCFGScale.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAINumberInput from 'common/components/IAINumberInput'; import IAISlider from 'common/components/IAISlider'; import { setCfgScale } from 'features/parameters/store/generationSlice'; @@ -53,31 +54,35 @@ const ParamCFGScale = () => { ); return shouldUseSliders ? ( - + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx index 1e203a1e45..761ec6d2e1 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamIterations.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAINumberInput from 'common/components/IAINumberInput'; import IAISlider from 'common/components/IAISlider'; import { setIterations } from 'features/parameters/store/generationSlice'; @@ -15,8 +16,6 @@ const selector = createSelector( state.config.sd.iterations; const { iterations } = state.generation; const { shouldUseSliders } = state.ui; - const isDisabled = - state.dynamicPrompts.isEnabled && state.dynamicPrompts.combinatorial; const step = state.hotkeys.shift ? fineStep : coarseStep; @@ -28,13 +27,16 @@ const selector = createSelector( inputMax, step, shouldUseSliders, - isDisabled, }; }, defaultSelectorOptions ); -const ParamIterations = () => { +type Props = { + asSlider?: boolean; +}; + +const ParamIterations = ({ asSlider }: Props) => { const { iterations, initial, @@ -43,7 +45,6 @@ const ParamIterations = () => { inputMax, step, shouldUseSliders, - isDisabled, } = useAppSelector(selector); const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -59,32 +60,34 @@ const ParamIterations = () => { dispatch(setIterations(initial)); }, [dispatch, initial]); - return shouldUseSliders ? ( - + return asSlider || shouldUseSliders ? ( + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx index 2aab013f4f..fe7a13d975 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamNegativeConditioning.tsx @@ -1,6 +1,7 @@ import { Box, FormControl, useDisclosure } from '@chakra-ui/react'; import type { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAITextarea from 'common/components/IAITextarea'; import AddEmbeddingButton from 'features/embedding/components/AddEmbeddingButton'; import ParamEmbeddingPopover from 'features/embedding/components/ParamEmbeddingPopover'; @@ -81,18 +82,23 @@ const ParamNegativeConditioning = () => { onClose={onClose} onSelect={handleSelectEmbedding} > - + + + {!isOpen && isEmbeddingEnabled && ( { + [stateSelector], + ({ generation }) => { return { prompt: generation.positivePrompt, - activeTabName, }; }, { @@ -41,8 +33,7 @@ const promptInputSelector = createSelector( */ const ParamPositiveConditioning = () => { const dispatch = useAppDispatch(); - const { prompt, activeTabName } = useAppSelector(promptInputSelector); - const isReady = useIsReadyToInvoke(); + const { prompt } = useAppSelector(promptInputSelector); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); const { t } = useTranslation(); @@ -104,23 +95,13 @@ const ParamPositiveConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( @@ -129,17 +110,22 @@ const ParamPositiveConditioning = () => { onClose={onClose} onSelect={handleSelectEmbedding} > - + + + {!isOpen && isEmbeddingEnabled && ( diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx index da1b359b37..a44e6fb551 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamScheduler.tsx @@ -1,6 +1,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSearchableSelect from 'common/components/IAIMantineSearchableSelect'; import { generationSelector } from 'features/parameters/store/generationSelectors'; import { setScheduler } from 'features/parameters/store/generationSlice'; @@ -51,12 +52,14 @@ const ParamScheduler = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx index 63700c4922..9a720c2d27 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Core/ParamSize.tsx @@ -1,7 +1,9 @@ -import { Flex, Spacer, Text } from '@chakra-ui/react'; +import { Flex, FormControl, FormLabel, Spacer } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAIIconButton from 'common/components/IAIIconButton'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import { generationSelector } from 'features/parameters/store/generationSelectors'; import { setAspectRatio, @@ -30,7 +32,8 @@ const sizeOptsSelector = createSelector( width, height, }; - } + }, + defaultSelectorOptions ); export default function ParamSize() { @@ -80,44 +83,35 @@ export default function ParamSize() { }, }} > - - - {t('parameters.aspectRatio')} - - - - } - fontSize={20} - isDisabled={ - activeTabName === 'img2img' ? !shouldFitToWidthHeight : false - } - onClick={handleToggleSize} - /> - } - isChecked={shouldLockAspectRatio} - isDisabled={ - activeTabName === 'img2img' ? !shouldFitToWidthHeight : false - } - onClick={handleLockRatio} - /> - + + + {t('parameters.aspectRatio')} + + + } + fontSize={20} + isDisabled={ + activeTabName === 'img2img' ? !shouldFitToWidthHeight : false + } + onClick={handleToggleSize} + /> + } + isChecked={shouldLockAspectRatio} + isDisabled={ + activeTabName === 'img2img' ? !shouldFitToWidthHeight : false + } + onClick={handleLockRatio} + /> + + { }, [dispatch]); return shouldUseSliders ? ( - + + + ) : ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx index 2a14ee634c..f14d4b2c5b 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/ImageToImage/ImageToImageStrength.tsx @@ -7,6 +7,7 @@ import { setImg2imgStrength } from 'features/parameters/store/generationSlice'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import SubParametersWrapper from '../SubParametersWrapper'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; const selector = createSelector( [stateSelector], @@ -45,22 +46,24 @@ const ImageToImageStrength = () => { }, [dispatch, initial]); return ( - - - + + + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx index 05b5b6468a..f4d7421eed 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/MainModel/ParamMainModelSelect.tsx @@ -21,6 +21,7 @@ import { useGetOnnxModelsQuery, } from 'services/api/endpoints/models'; import { useFeatureStatus } from '../../../../system/hooks/useFeatureStatus'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; const selector = createSelector( stateSelector, @@ -119,19 +120,23 @@ const ParamMainModelSelect = () => { /> ) : ( - 0 ? 'Select a model' : 'No models available'} - data={data} - error={data.length === 0} - disabled={data.length === 0} - onChange={handleChangeModel} - w="100%" - /> + + 0 ? 'Select a model' : 'No models available' + } + data={data} + error={data.length === 0} + disabled={data.length === 0} + onChange={handleChangeModel} + w="100%" + /> + {isSyncModelEnabled && ( - + )} diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx index 45fd7fcf57..0f98d9f384 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamCpuNoise.tsx @@ -1,36 +1,31 @@ -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAISwitch from 'common/components/IAISwitch'; import { shouldUseCpuNoiseChanged } from 'features/parameters/store/generationSlice'; -import { ChangeEvent } from 'react'; - -const selector = createSelector( - stateSelector, - (state) => { - const { shouldUseNoiseSettings, shouldUseCpuNoise } = state.generation; - return { - isDisabled: !shouldUseNoiseSettings, - shouldUseCpuNoise, - }; - }, - defaultSelectorOptions -); +import { ChangeEvent, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; export const ParamCpuNoiseToggle = () => { const dispatch = useAppDispatch(); - const { isDisabled, shouldUseCpuNoise } = useAppSelector(selector); + const shouldUseCpuNoise = useAppSelector( + (state) => state.generation.shouldUseCpuNoise + ); + const { t } = useTranslation(); - const handleChange = (e: ChangeEvent) => - dispatch(shouldUseCpuNoiseChanged(e.target.checked)); + const handleChange = useCallback( + (e: ChangeEvent) => { + dispatch(shouldUseCpuNoiseChanged(e.target.checked)); + }, + [dispatch] + ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx deleted file mode 100644 index 0419ecc656..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseCollapse.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; -import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAICollapse from 'common/components/IAICollapse'; -import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { ParamCpuNoiseToggle } from './ParamCpuNoise'; -import ParamNoiseThreshold from './ParamNoiseThreshold'; -import { ParamNoiseToggle } from './ParamNoiseToggle'; -import ParamPerlinNoise from './ParamPerlinNoise'; - -const selector = createSelector( - stateSelector, - (state) => { - const { shouldUseNoiseSettings } = state.generation; - return { - activeLabel: shouldUseNoiseSettings ? 'Enabled' : undefined, - }; - }, - defaultSelectorOptions -); - -const ParamNoiseCollapse = () => { - const { t } = useTranslation(); - - const isNoiseEnabled = useFeatureStatus('noise').isFeatureEnabled; - const isPerlinNoiseEnabled = useFeatureStatus('perlinNoise').isFeatureEnabled; - const isNoiseThresholdEnabled = - useFeatureStatus('noiseThreshold').isFeatureEnabled; - - const { activeLabel } = useAppSelector(selector); - - if (!isNoiseEnabled) { - return null; - } - - return ( - - - - - {isPerlinNoiseEnabled && } - {isNoiseThresholdEnabled && } - - - ); -}; - -export default memo(ParamNoiseCollapse); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx index 3abb7532b4..7244800c41 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamNoiseThreshold.tsx @@ -9,9 +9,8 @@ import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { shouldUseNoiseSettings, threshold } = state.generation; + const { threshold } = state.generation; return { - isDisabled: !shouldUseNoiseSettings, threshold, }; }, @@ -20,12 +19,11 @@ const selector = createSelector( export default function ParamNoiseThreshold() { const dispatch = useAppDispatch(); - const { threshold, isDisabled } = useAppSelector(selector); + const { threshold } = useAppSelector(selector); const { t } = useTranslation(); return ( { - const dispatch = useAppDispatch(); - - const shouldUseNoiseSettings = useAppSelector( - (state: RootState) => state.generation.shouldUseNoiseSettings - ); - - const handleChange = (e: ChangeEvent) => - dispatch(setShouldUseNoiseSettings(e.target.checked)); - - return ( - - ); -}; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx index afd676223c..b5429dc292 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Noise/ParamPerlinNoise.tsx @@ -9,9 +9,8 @@ import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, (state) => { - const { shouldUseNoiseSettings, perlin } = state.generation; + const { perlin } = state.generation; return { - isDisabled: !shouldUseNoiseSettings, perlin, }; }, @@ -20,12 +19,11 @@ const selector = createSelector( export default function ParamPerlinNoise() { const dispatch = useAppDispatch(); - const { perlin, isDisabled } = useAppSelector(selector); + const { perlin } = useAppSelector(selector); const { t } = useTranslation(); return ( { + const { t } = useTranslation(); + + const isSeamlessEnabled = useFeatureStatus('seamless').isFeatureEnabled; + + if (!isSeamlessEnabled) { + return null; + } + + return ( + + {t('parameters.seamlessTiling')}{' '} + + + + + + + + + + ); +}; + +export default memo(ParamSeamless); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx deleted file mode 100644 index 099090fe3f..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAICollapse from 'common/components/IAICollapse'; -import { generationSelector } from 'features/parameters/store/generationSelectors'; -import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; -import { memo } from 'react'; -import { useTranslation } from 'react-i18next'; -import ParamSeamlessXAxis from './ParamSeamlessXAxis'; -import ParamSeamlessYAxis from './ParamSeamlessYAxis'; - -const getActiveLabel = (seamlessXAxis: boolean, seamlessYAxis: boolean) => { - if (seamlessXAxis && seamlessYAxis) { - return 'X & Y'; - } - - if (seamlessXAxis) { - return 'X'; - } - - if (seamlessYAxis) { - return 'Y'; - } -}; - -const selector = createSelector( - generationSelector, - (generation) => { - const { seamlessXAxis, seamlessYAxis } = generation; - - const activeLabel = getActiveLabel(seamlessXAxis, seamlessYAxis); - return { activeLabel }; - }, - defaultSelectorOptions -); - -const ParamSeamlessCollapse = () => { - const { t } = useTranslation(); - const { activeLabel } = useAppSelector(selector); - - const isSeamlessEnabled = useFeatureStatus('seamless').isFeatureEnabled; - - if (!isSeamlessEnabled) { - return null; - } - - return ( - - - - - - - - - - - ); -}; - -export default memo(ParamSeamlessCollapse); diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx index a1887ec896..d9ca7c6a0f 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Seed/ParamSeedFull.tsx @@ -3,14 +3,17 @@ import { memo } from 'react'; import ParamSeed from './ParamSeed'; import ParamSeedShuffle from './ParamSeedShuffle'; import ParamSeedRandomize from './ParamSeedRandomize'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; const ParamSeedFull = () => { return ( - - - - - + + + + + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx index 96c78b1336..2098503a1f 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/SubParametersWrapper.tsx @@ -1,27 +1,28 @@ -import { Flex, Text } from '@chakra-ui/react'; +import { Flex, Text, forwardRef } from '@chakra-ui/react'; import { ReactNode, memo } from 'react'; type SubParameterWrapperProps = { - children: ReactNode | ReactNode[]; + children: ReactNode; label?: string; }; -const SubParametersWrapper = (props: SubParameterWrapperProps) => ( - - {props.label && ( +const SubParametersWrapper = forwardRef( + (props: SubParameterWrapperProps, ref) => ( + ( > {props.label} - )} - {props.children} - + {props.children} + + ) ); SubParametersWrapper.displayName = 'SubSettingsWrapper'; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/Upscale/ParamUpscaleSettings.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/Upscale/ParamUpscaleSettings.tsx index c858ae66a7..12911f07a9 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/Upscale/ParamUpscaleSettings.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/Upscale/ParamUpscaleSettings.tsx @@ -1,13 +1,13 @@ import { Flex, useDisclosure } from '@chakra-ui/react'; import { upscaleRequested } from 'app/store/middleware/listenerMiddleware/listeners/upscaleRequested'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIIconButton from 'common/components/IAIIconButton'; import IAIPopover from 'common/components/IAIPopover'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; +import { useIsQueueMutationInProgress } from 'features/queue/hooks/useIsQueueMutationInProgress'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { FaExpandArrowsAlt } from 'react-icons/fa'; +import { FaExpand } from 'react-icons/fa'; import { ImageDTO } from 'services/api/types'; import ParamESRGANModel from './ParamRealESRGANModel'; @@ -16,7 +16,7 @@ type Props = { imageDTO?: ImageDTO }; const ParamUpscalePopover = (props: Props) => { const { imageDTO } = props; const dispatch = useAppDispatch(); - const isBusy = useAppSelector(selectIsBusy); + const inProgress = useIsQueueMutationInProgress(); const { t } = useTranslation(); const { isOpen, onOpen, onClose } = useDisclosure(); @@ -34,8 +34,9 @@ const ParamUpscalePopover = (props: Props) => { onClose={onClose} triggerComponent={ } + icon={} aria-label={t('parameters.upscale')} /> } @@ -49,7 +50,7 @@ const ParamUpscalePopover = (props: Props) => { {t('parameters.upscaleImage')} diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx index f82b02b5af..ee8979469b 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEModelSelect.tsx @@ -15,6 +15,7 @@ import IAIMantineSelectItemWithTooltip from 'common/components/IAIMantineSelectI import { vaeSelected } from 'features/parameters/store/generationSlice'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; import { modelIdToVAEModelParam } from 'features/parameters/util/modelIdToVAEModelParam'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; const selector = createSelector( stateSelector, @@ -93,17 +94,19 @@ const ParamVAEModelSelect = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx index c57cdc1132..f71794394e 100644 --- a/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx +++ b/invokeai/frontend/web/src/features/parameters/components/Parameters/VAEModel/ParamVAEPrecision.tsx @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import IAIInformationalPopover from 'common/components/IAIInformationalPopover/IAIInformationalPopover'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { vaePrecisionChanged } from 'features/parameters/store/generationSlice'; import { PrecisionParam } from 'features/parameters/types/parameterSchemas'; @@ -34,12 +35,14 @@ const ParamVAEModelSelect = () => { ); return ( - + + + ); }; diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx deleted file mode 100644 index e7bd36b931..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/CancelButton.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import { - ButtonGroup, - ButtonProps, - ButtonSpinner, - Menu, - MenuButton, - MenuItemOption, - MenuList, - MenuOptionGroup, -} from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import IAIIconButton from 'common/components/IAIIconButton'; -import { systemSelector } from 'features/system/store/systemSelectors'; -import { - CancelStrategy, - SystemState, - cancelScheduled, - cancelTypeChanged, -} from 'features/system/store/systemSlice'; -import { isEqual } from 'lodash-es'; -import { memo, useCallback, useMemo } from 'react'; - -import { useHotkeys } from 'react-hotkeys-hook'; -import { useTranslation } from 'react-i18next'; -import { MdCancel, MdCancelScheduleSend } from 'react-icons/md'; - -import { ChevronDownIcon } from '@chakra-ui/icons'; -import { sessionCanceled } from 'services/api/thunks/session'; -import IAIButton from 'common/components/IAIButton'; - -const cancelButtonSelector = createSelector( - systemSelector, - (system: SystemState) => { - return { - isProcessing: system.isProcessing, - isConnected: system.isConnected, - isCancelable: system.isCancelable, - currentIteration: system.currentIteration, - totalIterations: system.totalIterations, - sessionId: system.sessionId, - cancelType: system.cancelType, - isCancelScheduled: system.isCancelScheduled, - }; - }, - { - memoizeOptions: { - resultEqualityCheck: isEqual, - }, - } -); - -type Props = Omit & { - btnGroupWidth?: string | number; - asIconButton?: boolean; -}; - -const CancelButton = (props: Props) => { - const dispatch = useAppDispatch(); - const { btnGroupWidth = 'auto', asIconButton = false, ...rest } = props; - const { - isProcessing, - isConnected, - isCancelable, - cancelType, - isCancelScheduled, - sessionId, - } = useAppSelector(cancelButtonSelector); - - const handleClickCancel = useCallback(() => { - if (!sessionId) { - return; - } - - if (cancelType === 'scheduled') { - dispatch(cancelScheduled()); - return; - } - - dispatch(sessionCanceled({ session_id: sessionId })); - }, [dispatch, sessionId, cancelType]); - - const { t } = useTranslation(); - - const handleCancelTypeChanged = useCallback( - (value: string | string[]) => { - const newCancelType = Array.isArray(value) ? value[0] : value; - dispatch(cancelTypeChanged(newCancelType as CancelStrategy)); - }, - [dispatch] - ); - - useHotkeys( - 'shift+x', - () => { - if ((isConnected || isProcessing) && isCancelable) { - handleClickCancel(); - } - }, - [isConnected, isProcessing, isCancelable] - ); - - const cancelLabel = useMemo(() => { - if (isCancelScheduled) { - return t('parameters.cancel.isScheduled'); - } - if (cancelType === 'immediate') { - return t('parameters.cancel.immediate'); - } - - return t('parameters.cancel.schedule'); - }, [t, cancelType, isCancelScheduled]); - - const cancelIcon = useMemo(() => { - if (isCancelScheduled) { - return ; - } - if (cancelType === 'immediate') { - return ; - } - - return ; - }, [cancelType, isCancelScheduled]); - - return ( - - {asIconButton ? ( - - ) : ( - - Cancel - - )} - - } - paddingX={0} - paddingY={0} - colorScheme="error" - minWidth={5} - {...rest} - /> - - - - {t('parameters.cancel.immediate')} - - - {t('parameters.cancel.schedule')} - - - - - - ); -}; - -export default memo(CancelButton); diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx deleted file mode 100644 index c70f2528bb..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/InvokeButton.tsx +++ /dev/null @@ -1,171 +0,0 @@ -import { - Box, - Divider, - Flex, - ListItem, - Text, - UnorderedList, -} from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { userInvoked } from 'app/store/actions'; -import { stateSelector } from 'app/store/store'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -import IAIButton, { IAIButtonProps } from 'common/components/IAIButton'; -import IAIIconButton, { - IAIIconButtonProps, -} from 'common/components/IAIIconButton'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import ProgressBar from 'features/system/components/ProgressBar'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; -import { memo, useCallback } from 'react'; -import { useHotkeys } from 'react-hotkeys-hook'; -import { useTranslation } from 'react-i18next'; -import { FaPlay } from 'react-icons/fa'; -import { useBoardName } from 'services/api/hooks/useBoardName'; - -interface InvokeButton - extends Omit { - asIconButton?: boolean; -} - -export default function InvokeButton(props: InvokeButton) { - const { asIconButton = false, sx, ...rest } = props; - const dispatch = useAppDispatch(); - const { isReady, isProcessing } = useIsReadyToInvoke(); - const activeTabName = useAppSelector(activeTabNameSelector); - - const handleInvoke = useCallback(() => { - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - }, [dispatch, activeTabName]); - - const { t } = useTranslation(); - - useHotkeys( - ['ctrl+enter', 'meta+enter'], - handleInvoke, - { - enabled: () => isReady, - preventDefault: true, - enableOnFormTags: ['input', 'textarea', 'select'], - }, - [isReady, activeTabName] - ); - - return ( - - - {!isReady && ( - - - - )} - {asIconButton ? ( - } - isDisabled={!isReady} - onClick={handleInvoke} - tooltip={} - colorScheme="accent" - isLoading={isProcessing} - id="invoke-button" - data-progress={isProcessing} - sx={{ - w: 'full', - flexGrow: 1, - ...sx, - }} - {...rest} - /> - ) : ( - } - aria-label={t('parameters.invoke')} - type="submit" - data-progress={isProcessing} - isDisabled={!isReady} - onClick={handleInvoke} - colorScheme="accent" - id="invoke-button" - leftIcon={isProcessing ? undefined : } - isLoading={isProcessing} - loadingText={t('parameters.invoke')} - sx={{ - w: 'full', - flexGrow: 1, - fontWeight: 700, - ...sx, - }} - {...rest} - > - Invoke - - )} - - - ); -} - -const tooltipSelector = createSelector( - [stateSelector], - ({ gallery }) => { - const { autoAddBoardId } = gallery; - - return { - autoAddBoardId, - }; - }, - defaultSelectorOptions -); - -export const InvokeButtonTooltipContent = memo(() => { - const { isReady, reasons } = useIsReadyToInvoke(); - const { autoAddBoardId } = useAppSelector(tooltipSelector); - const autoAddBoardName = useBoardName(autoAddBoardId); - - return ( - - - {isReady ? 'Ready to Invoke' : 'Unable to Invoke'} - - {reasons.length > 0 && ( - - {reasons.map((reason, i) => ( - - {reason} - - ))} - - )} - - - Adding images to{' '} - - {autoAddBoardName || 'Uncategorized'} - - - - ); -}); - -InvokeButtonTooltipContent.displayName = 'InvokeButtonTooltipContent'; diff --git a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx b/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx deleted file mode 100644 index 41f1f3c918..0000000000 --- a/invokeai/frontend/web/src/features/parameters/components/ProcessButtons/ProcessButtons.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Flex } from '@chakra-ui/react'; -import { memo } from 'react'; -import CancelButton from './CancelButton'; -import InvokeButton from './InvokeButton'; - -/** - * Buttons to start and cancel image generation. - */ -const ProcessButtons = () => { - return ( - - - - - ); -}; - -export default memo(ProcessButtons); diff --git a/invokeai/frontend/web/src/features/parameters/hooks/usePreselectedImage.ts b/invokeai/frontend/web/src/features/parameters/hooks/usePreselectedImage.ts index 62bdab616a..a14430a55d 100644 --- a/invokeai/frontend/web/src/features/parameters/hooks/usePreselectedImage.ts +++ b/invokeai/frontend/web/src/features/parameters/hooks/usePreselectedImage.ts @@ -1,7 +1,7 @@ import { skipToken } from '@reduxjs/toolkit/dist/query'; import { CoreMetadata } from 'features/nodes/types/types'; import { t } from 'i18next'; -import { useCallback, useState } from 'react'; +import { useCallback } from 'react'; import { useAppToaster } from '../../../app/components/Toaster'; import { useAppDispatch } from '../../../app/store/storeHooks'; import { @@ -13,70 +13,46 @@ import { setActiveTab } from '../../ui/store/uiSlice'; import { initialImageSelected } from '../store/actions'; import { useRecallParameters } from './useRecallParameters'; -type SelectedImage = { - imageName: string; - action: 'sendToImg2Img' | 'sendToCanvas' | 'useAllParameters'; -}; - -export const usePreselectedImage = () => { +export const usePreselectedImage = (imageName?: string) => { const dispatch = useAppDispatch(); - const [imageNameForDto, setImageNameForDto] = useState(); - const [imageNameForMetadata, setImageNameForMetadata] = useState< - string | undefined - >(); + const { recallAllParameters } = useRecallParameters(); const toaster = useAppToaster(); const { currentData: selectedImageDto } = useGetImageDTOQuery( - imageNameForDto ?? skipToken + imageName ?? skipToken ); const { currentData: selectedImageMetadata } = useGetImageMetadataQuery( - imageNameForMetadata ?? skipToken + imageName ?? skipToken ); - const handlePreselectedImage = useCallback( - (selectedImage?: SelectedImage) => { - if (!selectedImage) { - return; - } + const handleSendToCanvas = useCallback(() => { + if (selectedImageDto) { + dispatch(setInitialCanvasImage(selectedImageDto)); + dispatch(setActiveTab('unifiedCanvas')); + toaster({ + title: t('toast.sentToUnifiedCanvas'), + status: 'info', + duration: 2500, + isClosable: true, + }); + } + }, [dispatch, toaster, selectedImageDto]); - if (selectedImage.action === 'sendToCanvas') { - setImageNameForDto(selectedImage?.imageName); - if (selectedImageDto) { - dispatch(setInitialCanvasImage(selectedImageDto)); - dispatch(setActiveTab('unifiedCanvas')); - toaster({ - title: t('toast.sentToUnifiedCanvas'), - status: 'info', - duration: 2500, - isClosable: true, - }); - } - } + const handleSendToImg2Img = useCallback(() => { + if (selectedImageDto) { + dispatch(initialImageSelected(selectedImageDto)); + } + }, [dispatch, selectedImageDto]); - if (selectedImage.action === 'sendToImg2Img') { - setImageNameForDto(selectedImage?.imageName); - if (selectedImageDto) { - dispatch(initialImageSelected(selectedImageDto)); - } - } + const handleUseAllMetadata = useCallback(() => { + if (selectedImageMetadata) { + recallAllParameters(selectedImageMetadata.metadata as CoreMetadata); + } + // disabled because `recallAllParameters` changes the model, but its dep to prepare LoRAs has model as a dep. this introduces circular logic that causes infinite re-renders + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [selectedImageMetadata]); - if (selectedImage.action === 'useAllParameters') { - setImageNameForMetadata(selectedImage?.imageName); - if (selectedImageMetadata) { - recallAllParameters(selectedImageMetadata.metadata as CoreMetadata); - } - } - }, - [ - dispatch, - selectedImageDto, - selectedImageMetadata, - recallAllParameters, - toaster, - ] - ); - - return { handlePreselectedImage }; + return { handleSendToCanvas, handleSendToImg2Img, handleUseAllMetadata }; }; diff --git a/invokeai/frontend/web/src/features/parameters/hooks/useRecallParameters.ts b/invokeai/frontend/web/src/features/parameters/hooks/useRecallParameters.ts index 203ff2cb1b..4fb9a0ce2c 100644 --- a/invokeai/frontend/web/src/features/parameters/hooks/useRecallParameters.ts +++ b/invokeai/frontend/web/src/features/parameters/hooks/useRecallParameters.ts @@ -1,6 +1,8 @@ +import { createSelector } from '@reduxjs/toolkit'; import { useAppToaster } from 'app/components/Toaster'; -import { useAppDispatch } from 'app/store/storeHooks'; -import { CoreMetadata } from 'features/nodes/types/types'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { CoreMetadata, LoRAMetadataItem } from 'features/nodes/types/types'; import { refinerModelChanged, setNegativeStylePromptSDXL, @@ -15,6 +17,11 @@ import { import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { ImageDTO } from 'services/api/types'; +import { + loraModelsAdapter, + useGetLoRAModelsQuery, +} from '../../../services/api/endpoints/models'; +import { loraRecalled, lorasCleared } from '../../lora/store/loraSlice'; import { initialImageSelected, modelSelected } from '../store/actions'; import { setCfgScale, @@ -30,6 +37,7 @@ import { import { isValidCfgScale, isValidHeight, + isValidLoRAModel, isValidMainModel, isValidNegativePrompt, isValidPositivePrompt, @@ -46,10 +54,16 @@ import { isValidWidth, } from '../types/parameterSchemas'; +const selector = createSelector(stateSelector, ({ generation }) => { + const { model } = generation; + return { model }; +}); + export const useRecallParameters = () => { const dispatch = useAppDispatch(); const toaster = useAppToaster(); const { t } = useTranslation(); + const { model } = useAppSelector(selector); const parameterSetToast = useCallback(() => { toaster({ @@ -60,14 +74,18 @@ export const useRecallParameters = () => { }); }, [t, toaster]); - const parameterNotSetToast = useCallback(() => { - toaster({ - title: t('toast.parameterNotSet'), - status: 'warning', - duration: 2500, - isClosable: true, - }); - }, [t, toaster]); + const parameterNotSetToast = useCallback( + (description?: string) => { + toaster({ + title: t('toast.parameterNotSet'), + description, + status: 'warning', + duration: 2500, + isClosable: true, + }); + }, + [t, toaster] + ); const allParameterSetToast = useCallback(() => { toaster({ @@ -78,14 +96,18 @@ export const useRecallParameters = () => { }); }, [t, toaster]); - const allParameterNotSetToast = useCallback(() => { - toaster({ - title: t('toast.parametersNotSet'), - status: 'warning', - duration: 2500, - isClosable: true, - }); - }, [t, toaster]); + const allParameterNotSetToast = useCallback( + (description?: string) => { + toaster({ + title: t('toast.parametersNotSet'), + status: 'warning', + description, + duration: 2500, + isClosable: true, + }); + }, + [t, toaster] + ); /** * Recall both prompts with toast @@ -307,6 +329,67 @@ export const useRecallParameters = () => { [dispatch, parameterSetToast, parameterNotSetToast] ); + /** + * Recall LoRA with toast + */ + + const { loras } = useGetLoRAModelsQuery(undefined, { + selectFromResult: (result) => ({ + loras: result.data + ? loraModelsAdapter.getSelectors().selectAll(result.data) + : [], + }), + }); + + const prepareLoRAMetadataItem = useCallback( + (loraMetadataItem: LoRAMetadataItem) => { + if (!isValidLoRAModel(loraMetadataItem.lora)) { + return { lora: null, error: 'Invalid LoRA model' }; + } + + const { base_model, model_name } = loraMetadataItem.lora; + + const matchingLoRA = loras.find( + (l) => l.base_model === base_model && l.model_name === model_name + ); + + if (!matchingLoRA) { + return { lora: null, error: 'LoRA model is not installed' }; + } + + const isCompatibleBaseModel = + matchingLoRA?.base_model === model?.base_model; + + if (!isCompatibleBaseModel) { + return { + lora: null, + error: 'LoRA incompatible with currently-selected model', + }; + } + + return { lora: matchingLoRA, error: null }; + }, + [loras, model?.base_model] + ); + + const recallLoRA = useCallback( + (loraMetadataItem: LoRAMetadataItem) => { + const result = prepareLoRAMetadataItem(loraMetadataItem); + + if (!result.lora) { + parameterNotSetToast(result.error); + return; + } + + dispatch( + loraRecalled({ ...result.lora, weight: loraMetadataItem.weight }) + ); + + parameterSetToast(); + }, + [prepareLoRAMetadataItem, dispatch, parameterSetToast, parameterNotSetToast] + ); + /* * Sets image as initial image with toast */ @@ -344,6 +427,7 @@ export const useRecallParameters = () => { refiner_positive_aesthetic_score, refiner_negative_aesthetic_score, refiner_start, + loras, } = metadata; if (isValidCfgScale(cfg_scale)) { @@ -425,9 +509,22 @@ export const useRecallParameters = () => { dispatch(setRefinerStart(refiner_start)); } + dispatch(lorasCleared()); + loras?.forEach((lora) => { + const result = prepareLoRAMetadataItem(lora); + if (result.lora) { + dispatch(loraRecalled({ ...result.lora, weight: lora.weight })); + } + }); + allParameterSetToast(); }, - [allParameterNotSetToast, allParameterSetToast, dispatch] + [ + allParameterNotSetToast, + allParameterSetToast, + dispatch, + prepareLoRAMetadataItem, + ] ); return { @@ -444,6 +541,7 @@ export const useRecallParameters = () => { recallWidth, recallHeight, recallStrength, + recallLoRA, recallAllParameters, sendToImageToImage, }; diff --git a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts index 50d9894b27..ea6aaf28ca 100644 --- a/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts +++ b/invokeai/frontend/web/src/features/parameters/store/generationSlice.ts @@ -46,7 +46,6 @@ export interface GenerationState { shouldFitToWidthHeight: boolean; shouldGenerateVariations: boolean; shouldRandomizeSeed: boolean; - shouldUseNoiseSettings: boolean; steps: StepsParam; threshold: number; infillTileSize: number; @@ -80,7 +79,7 @@ export const initialGenerationState: GenerationState = { scheduler: 'euler', maskBlur: 16, maskBlurMethod: 'box', - canvasCoherenceMode: 'edge', + canvasCoherenceMode: 'unmasked', canvasCoherenceSteps: 20, canvasCoherenceStrength: 0.3, seed: 0, @@ -88,7 +87,6 @@ export const initialGenerationState: GenerationState = { shouldFitToWidthHeight: true, shouldGenerateVariations: false, shouldRandomizeSeed: true, - shouldUseNoiseSettings: false, steps: 50, threshold: 0, infillTileSize: 32, @@ -244,9 +242,6 @@ export const generationSlice = createSlice({ setVerticalSymmetrySteps: (state, action: PayloadAction) => { state.verticalSymmetrySteps = action.payload; }, - setShouldUseNoiseSettings: (state, action: PayloadAction) => { - state.shouldUseNoiseSettings = action.payload; - }, initialImageChanged: (state, action: PayloadAction) => { const { image_name, width, height } = action.payload; state.initialImage = { imageName: image_name, width, height }; @@ -278,12 +273,6 @@ export const generationSlice = createSlice({ shouldUseCpuNoiseChanged: (state, action: PayloadAction) => { state.shouldUseCpuNoise = action.payload; }, - setShouldShowAdvancedOptions: (state, action: PayloadAction) => { - state.shouldShowAdvancedOptions = action.payload; - if (!action.payload) { - state.clipSkip = 0; - } - }, setAspectRatio: (state, action: PayloadAction) => { const newAspectRatio = action.payload; state.aspectRatio = newAspectRatio; @@ -313,12 +302,6 @@ export const generationSlice = createSlice({ } } }); - builder.addCase(setShouldShowAdvancedOptions, (state, action) => { - const advancedOptionsStatus = action.payload; - if (!advancedOptionsStatus) { - state.clipSkip = 0; - } - }); }, }); @@ -359,12 +342,10 @@ export const { initialImageChanged, modelChanged, vaeSelected, - setShouldUseNoiseSettings, setSeamlessXAxis, setSeamlessYAxis, setClipSkip, shouldUseCpuNoiseChanged, - setShouldShowAdvancedOptions, setAspectRatio, setShouldLockAspectRatio, vaePrecisionChanged, diff --git a/invokeai/frontend/web/src/features/parameters/types/constants.ts b/invokeai/frontend/web/src/features/parameters/types/constants.ts index dd0e738eeb..4494d235af 100644 --- a/invokeai/frontend/web/src/features/parameters/types/constants.ts +++ b/invokeai/frontend/web/src/features/parameters/types/constants.ts @@ -1,6 +1,7 @@ import { components } from 'services/api/schema'; export const MODEL_TYPE_MAP = { + any: 'Any', 'sd-1': 'Stable Diffusion 1.x', 'sd-2': 'Stable Diffusion 2.x', sdxl: 'Stable Diffusion XL', @@ -8,6 +9,7 @@ export const MODEL_TYPE_MAP = { }; export const MODEL_TYPE_SHORT_MAP = { + any: 'Any', 'sd-1': 'SD1', 'sd-2': 'SD2', sdxl: 'SDXL', @@ -15,6 +17,10 @@ export const MODEL_TYPE_SHORT_MAP = { }; export const clipSkipMap = { + any: { + maxClip: 0, + markers: [], + }, 'sd-1': { maxClip: 12, markers: [0, 1, 2, 3, 4, 8, 12], diff --git a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts index 5a77231739..1b29993712 100644 --- a/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts +++ b/invokeai/frontend/web/src/features/parameters/types/parameterSchemas.ts @@ -210,7 +210,13 @@ export type HeightParam = z.infer; export const isValidHeight = (val: unknown): val is HeightParam => zHeight.safeParse(val).success; -export const zBaseModel = z.enum(['sd-1', 'sd-2', 'sdxl', 'sdxl-refiner']); +export const zBaseModel = z.enum([ + 'any', + 'sd-1', + 'sd-2', + 'sdxl', + 'sdxl-refiner', +]); export type BaseModelParam = z.infer; @@ -323,7 +329,17 @@ export type ControlNetModelParam = z.infer; export const isValidControlNetModel = ( val: unknown ): val is ControlNetModelParam => zControlNetModel.safeParse(val).success; - +/** + * Zod schema for IP-Adapter models + */ +export const zIPAdapterModel = z.object({ + model_name: z.string().min(1), + base_model: zBaseModel, +}); +/** + * Type alias for model parameter, inferred from its zod schema + */ +export type IPAdapterModelParam = z.infer; /** * Zod schema for l2l strength parameter */ diff --git a/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts b/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts new file mode 100644 index 0000000000..4d58046545 --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/util/modelIdToIPAdapterModelParams.ts @@ -0,0 +1,29 @@ +import { logger } from 'app/logging/logger'; +import { zIPAdapterModel } from 'features/parameters/types/parameterSchemas'; +import { IPAdapterModelField } from 'services/api/types'; + +export const modelIdToIPAdapterModelParam = ( + ipAdapterModelId: string +): IPAdapterModelField | undefined => { + const log = logger('models'); + const [base_model, _model_type, model_name] = ipAdapterModelId.split('/'); + + const result = zIPAdapterModel.safeParse({ + base_model, + model_name, + }); + + if (!result.success) { + log.error( + { + ipAdapterModelId, + errors: result.error.format(), + }, + 'Failed to parse IP-Adapter model id' + ); + + return; + } + + return result.data; +}; diff --git a/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts b/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts new file mode 100644 index 0000000000..3d17ae47ea --- /dev/null +++ b/invokeai/frontend/web/src/features/parameters/util/useCoreParametersCollapseLabel.ts @@ -0,0 +1,34 @@ +import { useAppSelector } from 'app/store/storeHooks'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; + +export const useCoreParametersCollapseLabel = () => { + const { t } = useTranslation(); + const shouldRandomizeSeed = useAppSelector( + (state) => state.generation.shouldRandomizeSeed + ); + const iterations = useAppSelector((state) => state.generation.iterations); + + const iterationsLabel = useMemo(() => { + if (iterations === 1) { + return t('parameters.iterationsWithCount_one', { count: 1 }); + } else { + return t('parameters.iterationsWithCount_other', { count: iterations }); + } + }, [iterations, t]); + + const seedLabel = useMemo(() => { + if (shouldRandomizeSeed) { + return t('parameters.randomSeed'); + } else { + return t('parameters.manualSeed'); + } + }, [shouldRandomizeSeed, t]); + + const iterationsAndSeedLabel = useMemo( + () => [iterationsLabel, seedLabel].join(', '), + [iterationsLabel, seedLabel] + ); + + return { iterationsAndSeedLabel, iterationsLabel, seedLabel }; +}; diff --git a/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx new file mode 100644 index 0000000000..8b883a9bb2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/CancelCurrentQueueItemButton.tsx @@ -0,0 +1,33 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { useCancelCurrentQueueItem } from '../hooks/useCancelCurrentQueueItem'; +import QueueButton from './common/QueueButton'; +import { ChakraProps } from '@chakra-ui/react'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const CancelCurrentQueueItemButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { cancelQueueItem, isLoading, isDisabled } = + useCancelCurrentQueueItem(); + + return ( + } + onClick={cancelQueueItem} + colorScheme="error" + sx={sx} + /> + ); +}; + +export default memo(CancelCurrentQueueItemButton); diff --git a/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx new file mode 100644 index 0000000000..941bc88125 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ClearInvocationCacheButton.tsx @@ -0,0 +1,22 @@ +import IAIButton from 'common/components/IAIButton'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useClearInvocationCache } from '../hooks/useClearInvocationCache'; + +const ClearInvocationCacheButton = () => { + const { t } = useTranslation(); + const { clearInvocationCache, isDisabled, isLoading } = + useClearInvocationCache(); + + return ( + + {t('invocationCache.clear')} + + ); +}; + +export default memo(ClearInvocationCacheButton); diff --git a/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx new file mode 100644 index 0000000000..3de9f96142 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ClearQueueButton.tsx @@ -0,0 +1,43 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTrash } from 'react-icons/fa'; +import { useClearQueue } from '../hooks/useClearQueue'; +import QueueButton from './common/QueueButton'; +import { ChakraProps, Text } from '@chakra-ui/react'; +import IAIAlertDialog from 'common/components/IAIAlertDialog'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const ClearQueueButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { clearQueue, isLoading, isDisabled } = useClearQueue(); + + return ( + } + colorScheme="error" + sx={sx} + /> + } + > + {t('queue.clearQueueAlertDialog')} +
+ {t('queue.clearQueueAlertDialog2')} +
+ ); +}; + +export default memo(ClearQueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx new file mode 100644 index 0000000000..2f7fc6fd8b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/CurrentQueueItemCard.tsx @@ -0,0 +1,18 @@ +import { memo } from 'react'; +import QueueItemCard from './common/QueueItemCard'; +import { useGetCurrentQueueItemQuery } from 'services/api/endpoints/queue'; +import { useTranslation } from 'react-i18next'; + +const CurrentQueueItemCard = () => { + const { t } = useTranslation(); + const { data: currentQueueItemData } = useGetCurrentQueueItemQuery(); + + return ( + + ); +}; + +export default memo(CurrentQueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/InvocationCacheStatus.tsx b/invokeai/frontend/web/src/features/queue/components/InvocationCacheStatus.tsx new file mode 100644 index 0000000000..423ab09376 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/InvocationCacheStatus.tsx @@ -0,0 +1,55 @@ +import { ButtonGroup } from '@chakra-ui/react'; +import { useAppSelector } from 'app/store/storeHooks'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetInvocationCacheStatusQuery } from 'services/api/endpoints/appInfo'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import ClearInvocationCacheButton from './ClearInvocationCacheButton'; +import ToggleInvocationCacheButton from './ToggleInvocationCacheButton'; +import StatusStatGroup from './common/StatusStatGroup'; +import StatusStatItem from './common/StatusStatItem'; + +const InvocationCacheStatus = () => { + const { t } = useTranslation(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const { data: queueStatus } = useGetQueueStatusQuery(undefined); + const { data: cacheStatus } = useGetInvocationCacheStatusQuery(undefined, { + pollingInterval: + isConnected && + queueStatus?.processor.is_started && + queueStatus?.queue.pending > 0 + ? 5000 + : 0, + }); + + return ( + + + + + + + + + + + ); +}; + +export default memo(InvocationCacheStatus); diff --git a/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx new file mode 100644 index 0000000000..f9b9e874ab --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/NextQueueItemCard.tsx @@ -0,0 +1,18 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetNextQueueItemQuery } from 'services/api/endpoints/queue'; +import QueueItemCard from './common/QueueItemCard'; + +const NextQueueItemCard = () => { + const { t } = useTranslation(); + const { data: nextQueueItemData } = useGetNextQueueItemQuery(); + + return ( + + ); +}; + +export default memo(NextQueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx new file mode 100644 index 0000000000..cafb4bb667 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/PauseProcessorButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaPause } from 'react-icons/fa'; +import { usePauseProcessor } from '../hooks/usePauseProcessor'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const PauseProcessorButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { pauseProcessor, isLoading, isDisabled } = usePauseProcessor(); + + return ( + } + onClick={pauseProcessor} + colorScheme="gold" + /> + ); +}; + +export default memo(PauseProcessorButton); diff --git a/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx new file mode 100644 index 0000000000..2af234d42c --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/PruneQueueButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { BsStars } from 'react-icons/bs'; +import { usePruneQueue } from '../hooks/usePruneQueue'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const PruneQueueButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { pruneQueue, isLoading, finishedCount, isDisabled } = usePruneQueue(); + + return ( + } + onClick={pruneQueue} + colorScheme="blue" + /> + ); +}; + +export default memo(PruneQueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx new file mode 100644 index 0000000000..fda54db26b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueBackButton.tsx @@ -0,0 +1,32 @@ +import { ChakraProps } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useQueueBack } from '../hooks/useQueueBack'; +import EnqueueButtonTooltip from './QueueButtonTooltip'; +import QueueButton from './common/QueueButton'; +import GreyscaleInvokeAIIcon from 'common/components/GreyscaleInvokeAIIcon'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const QueueBackButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { queueBack, isLoading, isDisabled } = useQueueBack(); + return ( + } + sx={sx} + icon={asIconButton ? : undefined} + /> + ); +}; + +export default memo(QueueBackButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx b/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx new file mode 100644 index 0000000000..eccb2d4628 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueButtonTooltip.tsx @@ -0,0 +1,82 @@ +import { Divider, Flex, ListItem, Text, UnorderedList } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; +import { useBoardName } from 'services/api/hooks/useBoardName'; + +const tooltipSelector = createSelector( + [stateSelector], + ({ gallery }) => { + const { autoAddBoardId } = gallery; + return { + autoAddBoardId, + }; + }, + defaultSelectorOptions +); + +type Props = { + prepend?: boolean; +}; + +const QueueButtonTooltipContent = ({ prepend = false }: Props) => { + const { t } = useTranslation(); + const { isReady, reasons } = useIsReadyToEnqueue(); + const { autoAddBoardId } = useAppSelector(tooltipSelector); + const autoAddBoardName = useBoardName(autoAddBoardId); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + + const label = useMemo(() => { + if (isLoading) { + return t('queue.enqueueing'); + } + if (isReady) { + if (prepend) { + return t('queue.queueFront'); + } + return t('queue.queueBack'); + } + return t('queue.notReady'); + }, [isLoading, isReady, prepend, t]); + + return ( + + {label} + {reasons.length > 0 && ( + + {reasons.map((reason, i) => ( + + {reason} + + ))} + + )} + + + Adding images to{' '} + + {autoAddBoardName || 'Uncategorized'} + + + + ); +}; + +export default memo(QueueButtonTooltipContent); + +const StyledDivider = memo(() => ( + +)); + +StyledDivider.displayName = 'StyledDivider'; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx b/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx new file mode 100644 index 0000000000..b19b2425b2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueControls.tsx @@ -0,0 +1,100 @@ +import { Button, ButtonGroup, Flex, Spacer } from '@chakra-ui/react'; +import { useAppDispatch } from 'app/store/storeHooks'; +import CancelCurrentQueueItemButton from 'features/queue/components/CancelCurrentQueueItemButton'; +import ClearQueueButton from 'features/queue/components/ClearQueueButton'; +import PauseProcessorButton from 'features/queue/components/PauseProcessorButton'; +import QueueBackButton from 'features/queue/components/QueueBackButton'; +import QueueFrontButton from 'features/queue/components/QueueFrontButton'; +import ResumeProcessorButton from 'features/queue/components/ResumeProcessorButton'; +import ProgressBar from 'features/system/components/ProgressBar'; +import { setActiveTab } from 'features/ui/store/uiSlice'; +import { memo, useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; + +const QueueControls = () => { + const isPauseEnabled = useFeatureStatus('pauseQueue').isFeatureEnabled; + const isResumeEnabled = useFeatureStatus('resumeQueue').isFeatureEnabled; + const isPrependEnabled = useFeatureStatus('prependQueue').isFeatureEnabled; + return ( + + + + + {isPrependEnabled ? : <>} + + + + {isResumeEnabled ? : <>} + {isPauseEnabled ? : <>} + + + + + + + + + ); +}; + +export default memo(QueueControls); + +const QueueCounts = memo(() => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { hasItems, pending } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { + hasItems: false, + pending: 0, + }; + } + + const { pending, in_progress } = data.queue; + + return { + hasItems: pending + in_progress > 0, + pending, + }; + }, + }); + + const handleClick = useCallback(() => { + dispatch(setActiveTab('queue')); + }, [dispatch]); + + return ( + + + + + ); +}); + +QueueCounts.displayName = 'QueueCounts'; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx new file mode 100644 index 0000000000..09ddd47ac0 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueFrontButton.tsx @@ -0,0 +1,32 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaBoltLightning } from 'react-icons/fa6'; +import { useQueueFront } from '../hooks/useQueueFront'; +import EnqueueButtonTooltip from './QueueButtonTooltip'; +import QueueButton from './common/QueueButton'; +import { ChakraProps } from '@chakra-ui/react'; + +type Props = { + asIconButton?: boolean; + sx?: ChakraProps['sx']; +}; + +const QueueFrontButton = ({ asIconButton, sx }: Props) => { + const { t } = useTranslation(); + const { queueFront, isLoading, isDisabled } = useQueueFront(); + return ( + } + icon={} + sx={sx} + /> + ); +}; + +export default memo(QueueFrontButton); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx new file mode 100644 index 0000000000..7f4fd9bc9b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemComponent.tsx @@ -0,0 +1,157 @@ +import { + ButtonGroup, + ChakraProps, + Collapse, + Flex, + Text, +} from '@chakra-ui/react'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { useCancelQueueItem } from 'features/queue/hooks/useCancelQueueItem'; +import { getSecondsFromTimestamps } from 'features/queue/util/getSecondsFromTimestamps'; +import { MouseEvent, memo, useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { SessionQueueItemDTO } from 'services/api/types'; +import QueueStatusBadge from '../common/QueueStatusBadge'; +import QueueItemDetail from './QueueItemDetail'; +import { COLUMN_WIDTHS } from './constants'; +import { ListContext } from './types'; + +const selectedStyles = { bg: 'base.300', _dark: { bg: 'base.750' } }; + +type InnerItemProps = { + index: number; + item: SessionQueueItemDTO; + context: ListContext; +}; + +const sx: ChakraProps['sx'] = { + _hover: selectedStyles, + "&[aria-selected='true']": selectedStyles, +}; + +const QueueItemComponent = ({ index, item, context }: InnerItemProps) => { + const { t } = useTranslation(); + const handleToggle = useCallback(() => { + context.toggleQueueItem(item.item_id); + }, [context, item.item_id]); + const { cancelQueueItem, isLoading } = useCancelQueueItem(item.item_id); + const handleCancelQueueItem = useCallback( + (e: MouseEvent) => { + e.stopPropagation(); + cancelQueueItem(); + }, + [cancelQueueItem] + ); + const isOpen = useMemo( + () => context.openQueueItems.includes(item.item_id), + [context.openQueueItems, item.item_id] + ); + + const executionTime = useMemo(() => { + if (!item.completed_at || !item.started_at) { + return; + } + const seconds = getSecondsFromTimestamps( + item.started_at, + item.completed_at + ); + return `${seconds}s`; + }, [item]); + + const isCanceled = useMemo( + () => ['canceled', 'completed', 'failed'].includes(item.status), + [item.status] + ); + + return ( + + + + {index + 1} + + + + + + {executionTime || '-'} + + + + {item.batch_id} + + + + {item.field_values && ( + + {item.field_values + .filter((v) => v.node_path !== 'metadata_accumulator') + .map(({ node_path, field_name, value }) => ( + + + {node_path}.{field_name} + + : {value} + + ))} + + )} + + + + } + /> + + + + + + + + + ); +}; + +export default memo(QueueItemComponent); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx new file mode 100644 index 0000000000..7ce9733aae --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueItemDetail.tsx @@ -0,0 +1,162 @@ +import { ButtonGroup, Flex, Heading, Spinner, Text } from '@chakra-ui/react'; +import IAIButton from 'common/components/IAIButton'; +import DataViewer from 'features/gallery/components/ImageMetadataViewer/DataViewer'; +import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent'; +import { useCancelBatch } from 'features/queue/hooks/useCancelBatch'; +import { useCancelQueueItem } from 'features/queue/hooks/useCancelQueueItem'; +import { getSecondsFromTimestamps } from 'features/queue/util/getSecondsFromTimestamps'; +import { ReactNode, memo, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaTimes } from 'react-icons/fa'; +import { useGetQueueItemQuery } from 'services/api/endpoints/queue'; +import { SessionQueueItemDTO } from 'services/api/types'; + +type Props = { + queueItemDTO: SessionQueueItemDTO; +}; + +const QueueItemComponent = ({ queueItemDTO }: Props) => { + const { session_id, batch_id, item_id } = queueItemDTO; + const { t } = useTranslation(); + const { + cancelBatch, + isLoading: isLoadingCancelBatch, + isCanceled, + } = useCancelBatch(batch_id); + + const { cancelQueueItem, isLoading: isLoadingCancelQueueItem } = + useCancelQueueItem(item_id); + + const { data: queueItem } = useGetQueueItemQuery(item_id); + + const statusAndTiming = useMemo(() => { + if (!queueItem) { + return t('common.loading'); + } + if (!queueItem.completed_at || !queueItem.started_at) { + return t(`queue.${queueItem.status}`); + } + const seconds = getSecondsFromTimestamps( + queueItem.started_at, + queueItem.completed_at + ); + if (queueItem.status === 'completed') { + return `${t('queue.completedIn')} ${seconds}${seconds === 1 ? '' : 's'}`; + } + return `${seconds}s`; + }, [queueItem, t]); + + return ( + + + + + + + + } + colorScheme="error" + > + {t('queue.cancelItem')} + + } + colorScheme="error" + > + {t('queue.cancelBatch')} + + + + {queueItem?.error && ( + + + Error + +
{queueItem.error}
+
+ )} + + {queueItem ? ( + + + + ) : ( + + )} + +
+ ); +}; + +export default memo(QueueItemComponent); + +type QueueItemDataProps = { label: string; data: ReactNode }; + +const QueueItemData = ({ label, data }: QueueItemDataProps) => { + return ( + + + {label} + + + {data} + + + ); +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx new file mode 100644 index 0000000000..dea1443489 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueList.tsx @@ -0,0 +1,162 @@ +import { Flex, Heading } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; +import { + listCursorChanged, + listPriorityChanged, +} from 'features/queue/store/queueSlice'; +import { + UseOverlayScrollbarsParams, + useOverlayScrollbars, +} from 'overlayscrollbars-react'; +import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Components, ItemContent, Virtuoso } from 'react-virtuoso'; +import { + queueItemsAdapter, + useListQueueItemsQuery, +} from 'services/api/endpoints/queue'; +import { SessionQueueItemDTO } from 'services/api/types'; +import QueueItemComponent from './QueueItemComponent'; +import QueueListComponent from './QueueListComponent'; +import QueueListHeader from './QueueListHeader'; +import { ListContext } from './types'; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type TableVirtuosoScrollerRef = (ref: HTMLElement | Window | null) => any; + +const overlayScrollbarsConfig: UseOverlayScrollbarsParams = { + defer: true, + options: { + scrollbars: { + visibility: 'auto', + autoHide: 'scroll', + autoHideDelay: 1300, + theme: 'os-theme-dark', + }, + overflow: { x: 'hidden' }, + }, +}; + +const selector = createSelector( + stateSelector, + ({ queue }) => { + const { listCursor, listPriority } = queue; + return { listCursor, listPriority }; + }, + defaultSelectorOptions +); + +const computeItemKey = (index: number, item: SessionQueueItemDTO): number => + item.item_id; + +const components: Components = { + List: QueueListComponent, +}; + +const itemContent: ItemContent = ( + index, + item, + context +) => ; + +const QueueList = () => { + const { listCursor, listPriority } = useAppSelector(selector); + const dispatch = useAppDispatch(); + const rootRef = useRef(null); + const [scroller, setScroller] = useState(null); + const [initialize, osInstance] = useOverlayScrollbars( + overlayScrollbarsConfig + ); + const { t } = useTranslation(); + + useEffect(() => { + const { current: root } = rootRef; + if (scroller && root) { + initialize({ + target: root, + elements: { + viewport: scroller, + }, + }); + } + return () => osInstance()?.destroy(); + }, [scroller, initialize, osInstance]); + + const { data: listQueueItemsData } = useListQueueItemsQuery({ + cursor: listCursor, + priority: listPriority, + }); + + const queueItems = useMemo(() => { + if (!listQueueItemsData) { + return []; + } + return queueItemsAdapter.getSelectors().selectAll(listQueueItemsData); + }, [listQueueItemsData]); + + const handleLoadMore = useCallback(() => { + if (!listQueueItemsData?.has_more) { + return; + } + const lastItem = queueItems[queueItems.length - 1]; + if (!lastItem) { + return; + } + dispatch(listCursorChanged(lastItem.item_id)); + dispatch(listPriorityChanged(lastItem.priority)); + }, [dispatch, listQueueItemsData?.has_more, queueItems]); + + const [openQueueItems, setOpenQueueItems] = useState([]); + + const toggleQueueItem = useCallback((item_id: number) => { + setOpenQueueItems((prev) => { + if (prev.includes(item_id)) { + return prev.filter((id) => id !== item_id); + } + return [...prev, item_id]; + }); + }, []); + + const context = useMemo( + () => ({ openQueueItems, toggleQueueItem }), + [openQueueItems, toggleQueueItem] + ); + + return ( + + {queueItems.length ? ( + <> + + + + data={queueItems} + endReached={handleLoadMore} + scrollerRef={setScroller as TableVirtuosoScrollerRef} + itemContent={itemContent} + computeItemKey={computeItemKey} + components={components} + context={context} + /> + + + ) : ( + + + {t('queue.queueEmpty')} + + + )} + + ); +}; + +export default memo(QueueList); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx new file mode 100644 index 0000000000..ee123e2cd8 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListComponent.tsx @@ -0,0 +1,18 @@ +import { Flex, forwardRef } from '@chakra-ui/react'; +import { memo } from 'react'; +import { Components } from 'react-virtuoso'; +import { SessionQueueItemDTO } from 'services/api/types'; +import { ListContext } from './types'; + +const QueueListComponent: Components['List'] = + memo( + forwardRef((props, ref) => { + return ( + + {props.children} + + ); + }) + ); + +export default memo(QueueListComponent); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx new file mode 100644 index 0000000000..6c54a72a79 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/QueueListHeader.tsx @@ -0,0 +1,40 @@ +import { Flex, Text } from '@chakra-ui/react'; +import { memo } from 'react'; +import { COLUMN_WIDTHS } from './constants'; + +const QueueListHeader = () => { + return ( + + + # + + + status + + + time + + + batch + + + batch field values + + + ); +}; + +export default memo(QueueListHeader); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts b/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts new file mode 100644 index 0000000000..b44a1daf9c --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/constants.ts @@ -0,0 +1,9 @@ +export const COLUMN_WIDTHS = { + number: '3rem', + statusBadge: '5.7rem', + statusDot: 2, + time: '4rem', + batchId: '5rem', + fieldValues: 'auto', + actions: 'auto', +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts b/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts new file mode 100644 index 0000000000..c9b317ac57 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueList/types.ts @@ -0,0 +1,4 @@ +export type ListContext = { + openQueueItems: number[]; + toggleQueueItem: (item_id: number) => void; +}; diff --git a/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx b/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx new file mode 100644 index 0000000000..a91d3c4679 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueStatus.tsx @@ -0,0 +1,40 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import StatusStatGroup from './common/StatusStatGroup'; +import StatusStatItem from './common/StatusStatItem'; + +const QueueStatus = () => { + const { data: queueStatus } = useGetQueueStatusQuery(); + const { t } = useTranslation(); + return ( + + + + + + + + + ); +}; + +export default memo(QueueStatus); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx b/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx new file mode 100644 index 0000000000..fb57500461 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueStatusCard.tsx @@ -0,0 +1,54 @@ +import { Flex, Heading, Text } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; + +const QueueStatusCard = () => { + const { t } = useTranslation(); + const { data: queueStatus } = useGetQueueStatusQuery(); + + return ( + + {t('queue.status')} + + + {t('queue.pending')}:{' '} + + {queueStatus?.queue.pending} + + + + {t('queue.in_progress')}:{' '} + + {queueStatus?.queue.in_progress} + + + + {t('queue.completed')}:{' '} + + {queueStatus?.queue.completed} + + + + {t('queue.failed')}:{' '} + + {queueStatus?.queue.failed} + + + + {t('queue.canceled')}:{' '} + + {queueStatus?.queue.canceled} + + + ); +}; + +export default memo(QueueStatusCard); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx b/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx new file mode 100644 index 0000000000..23e2fe399f --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueTabContent.tsx @@ -0,0 +1,35 @@ +import { Box, Flex } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; +import InvocationCacheStatus from './InvocationCacheStatus'; +import QueueList from './QueueList/QueueList'; +import QueueStatus from './QueueStatus'; +import QueueTabQueueControls from './QueueTabQueueControls'; + +const QueueTabContent = () => { + const isInvocationCacheEnabled = + useFeatureStatus('invocationCache').isFeatureEnabled; + + return ( + + + + + {isInvocationCacheEnabled && } + + + + + + ); +}; + +export default memo(QueueTabContent); diff --git a/invokeai/frontend/web/src/features/queue/components/QueueTabQueueControls.tsx b/invokeai/frontend/web/src/features/queue/components/QueueTabQueueControls.tsx new file mode 100644 index 0000000000..f8bf5d64d5 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/QueueTabQueueControls.tsx @@ -0,0 +1,30 @@ +import { ButtonGroup, Flex } from '@chakra-ui/react'; +import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; +import { memo } from 'react'; +import ClearQueueButton from './ClearQueueButton'; +import PauseProcessorButton from './PauseProcessorButton'; +import PruneQueueButton from './PruneQueueButton'; +import ResumeProcessorButton from './ResumeProcessorButton'; + +const QueueTabQueueControls = () => { + const isPauseEnabled = useFeatureStatus('pauseQueue').isFeatureEnabled; + const isResumeEnabled = useFeatureStatus('resumeQueue').isFeatureEnabled; + return ( + + {isPauseEnabled || isResumeEnabled ? ( + + {isResumeEnabled ? : <>} + {isPauseEnabled ? : <>} + + ) : ( + <> + )} + + + + + + ); +}; + +export default memo(QueueTabQueueControls); diff --git a/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx new file mode 100644 index 0000000000..70e789fd4a --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ResumeProcessorButton.tsx @@ -0,0 +1,29 @@ +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { FaPlay } from 'react-icons/fa'; +import { useResumeProcessor } from '../hooks/useResumeProcessor'; +import QueueButton from './common/QueueButton'; + +type Props = { + asIconButton?: boolean; +}; + +const ResumeProcessorButton = ({ asIconButton }: Props) => { + const { t } = useTranslation(); + const { resumeProcessor, isLoading, isDisabled } = useResumeProcessor(); + + return ( + } + onClick={resumeProcessor} + colorScheme="green" + /> + ); +}; + +export default memo(ResumeProcessorButton); diff --git a/invokeai/frontend/web/src/features/queue/components/ToggleInvocationCacheButton.tsx b/invokeai/frontend/web/src/features/queue/components/ToggleInvocationCacheButton.tsx new file mode 100644 index 0000000000..94b0fc82ae --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/ToggleInvocationCacheButton.tsx @@ -0,0 +1,47 @@ +import IAIButton from 'common/components/IAIButton'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useGetInvocationCacheStatusQuery } from 'services/api/endpoints/appInfo'; +import { useDisableInvocationCache } from '../hooks/useDisableInvocationCache'; +import { useEnableInvocationCache } from '../hooks/useEnableInvocationCache'; + +const ToggleInvocationCacheButton = () => { + const { t } = useTranslation(); + const { data: cacheStatus } = useGetInvocationCacheStatusQuery(); + + const { + enableInvocationCache, + isDisabled: isEnableDisabled, + isLoading: isEnableLoading, + } = useEnableInvocationCache(); + + const { + disableInvocationCache, + isDisabled: isDisableDisabled, + isLoading: isDisableLoading, + } = useDisableInvocationCache(); + + if (cacheStatus?.enabled) { + return ( + + {t('invocationCache.disable')} + + ); + } + + return ( + + {t('invocationCache.enable')} + + ); +}; + +export default memo(ToggleInvocationCacheButton); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx new file mode 100644 index 0000000000..f3ef09f44d --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueButton.tsx @@ -0,0 +1,64 @@ +import { ChakraProps, ThemeTypings } from '@chakra-ui/react'; +import IAIButton from 'common/components/IAIButton'; +import IAIIconButton from 'common/components/IAIIconButton'; +import { ReactElement, ReactNode, memo } from 'react'; + +type Props = { + label: string; + tooltip: ReactNode; + icon?: ReactElement; + onClick?: () => void; + isDisabled?: boolean; + colorScheme: ThemeTypings['colorSchemes']; + asIconButton?: boolean; + isLoading?: boolean; + loadingText?: string; + sx?: ChakraProps['sx']; +}; + +const QueueButton = ({ + label, + tooltip, + icon, + onClick, + isDisabled, + colorScheme, + asIconButton, + isLoading, + loadingText, + sx, +}: Props) => { + if (asIconButton) { + return ( + + ); + } + + return ( + + {label} + + ); +}; + +export default memo(QueueButton); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx new file mode 100644 index 0000000000..9cc991335e --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueItemCard.tsx @@ -0,0 +1,52 @@ +import { Flex, Heading, Text, Tooltip } from '@chakra-ui/react'; +import ScrollableContent from 'features/nodes/components/sidePanel/ScrollableContent'; +import { memo } from 'react'; +import { components } from 'services/api/schema'; + +const QueueItemCard = ({ + session_queue_item, + label, +}: { + session_queue_item?: components['schemas']['SessionQueueItem']; + label: string; +}) => { + return ( + + + {label} + {session_queue_item && ( + + {session_queue_item.batch_id} + + )} + + {session_queue_item && ( + + Batch Values: + {session_queue_item.field_values && + session_queue_item.field_values + .filter((v) => v.node_path !== 'metadata_accumulator') + .map(({ node_path, field_name, value }) => ( + + + {node_path}.{field_name} + + : {value} + + ))} + + )} + + ); +}; + +export default memo(QueueItemCard); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx new file mode 100644 index 0000000000..aba4b230bc --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusBadge.tsx @@ -0,0 +1,22 @@ +import { Badge } from '@chakra-ui/react'; +import { memo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { SessionQueueItemStatus } from 'services/api/endpoints/queue'; + +const STATUSES = { + pending: { colorScheme: 'cyan', translationKey: 'queue.pending' }, + in_progress: { colorScheme: 'yellow', translationKey: 'queue.in_progress' }, + completed: { colorScheme: 'green', translationKey: 'queue.completed' }, + failed: { colorScheme: 'red', translationKey: 'queue.failed' }, + canceled: { colorScheme: 'orange', translationKey: 'queue.canceled' }, +}; + +const StatusBadge = ({ status }: { status: SessionQueueItemStatus }) => { + const { t } = useTranslation(); + return ( + + {t(STATUSES[status].translationKey)} + + ); +}; +export default memo(StatusBadge); diff --git a/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx new file mode 100644 index 0000000000..6a500cada2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/QueueStatusDot.tsx @@ -0,0 +1,28 @@ +import { Box } from '@chakra-ui/react'; +import { memo, useMemo } from 'react'; +import { SessionQueueItemStatus } from 'services/api/endpoints/queue'; + +const STATUSES = { + pending: { colorScheme: 'cyan', translationKey: 'queue.pending' }, + in_progress: { colorScheme: 'yellow', translationKey: 'queue.in_progress' }, + completed: { colorScheme: 'green', translationKey: 'queue.completed' }, + failed: { colorScheme: 'red', translationKey: 'queue.failed' }, + canceled: { colorScheme: 'orange', translationKey: 'queue.canceled' }, +}; + +const QueueStatusDot = ({ status }: { status: SessionQueueItemStatus }) => { + const sx = useMemo( + () => ({ + w: 2, + h: 2, + bg: `${STATUSES[status].colorScheme}.${500}`, + _dark: { + bg: `${STATUSES[status].colorScheme}.${400}`, + }, + borderRadius: '100%', + }), + [status] + ); + return ; +}; +export default memo(QueueStatusDot); diff --git a/invokeai/frontend/web/src/features/queue/components/common/StatusStatGroup.tsx b/invokeai/frontend/web/src/features/queue/components/common/StatusStatGroup.tsx new file mode 100644 index 0000000000..b083715472 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/StatusStatGroup.tsx @@ -0,0 +1,22 @@ +import { StatGroup, StatGroupProps } from '@chakra-ui/react'; +import { memo } from 'react'; + +const StatusStatGroup = ({ children, ...rest }: StatGroupProps) => ( + + {children} + +); + +export default memo(StatusStatGroup); diff --git a/invokeai/frontend/web/src/features/queue/components/common/StatusStatItem.tsx b/invokeai/frontend/web/src/features/queue/components/common/StatusStatItem.tsx new file mode 100644 index 0000000000..92100d4040 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/components/common/StatusStatItem.tsx @@ -0,0 +1,47 @@ +import { + ChakraProps, + Stat, + StatLabel, + StatNumber, + StatProps, +} from '@chakra-ui/react'; +import { memo } from 'react'; + +const sx: ChakraProps['sx'] = { + '&[aria-disabled="true"]': { + color: 'base.400', + _dark: { + color: 'base.500', + }, + }, +}; + +type Props = Omit & { + label: string; + value: string | number; + isDisabled?: boolean; +}; + +const StatusStatItem = ({ + label, + value, + isDisabled = false, + ...rest +}: Props) => ( + + + {label} + + {value} + +); + +export default memo(StatusStatItem); diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts new file mode 100644 index 0000000000..42825f151b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelBatch.ts @@ -0,0 +1,54 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useCancelByBatchIdsMutation, + useGetBatchStatusQuery, +} from 'services/api/endpoints/queue'; + +export const useCancelBatch = (batch_id: string) => { + const isConnected = useAppSelector((state) => state.system.isConnected); + const { isCanceled } = useGetBatchStatusQuery( + { batch_id }, + { + selectFromResult: ({ data }) => { + if (!data) { + return { isCanceled: true }; + } + + return { + isCanceled: data?.in_progress === 0 && data?.pending === 0, + }; + }, + } + ); + const [trigger, { isLoading }] = useCancelByBatchIdsMutation({ + fixedCacheKey: 'cancelByBatchIds', + }); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const cancelBatch = useCallback(async () => { + if (isCanceled) { + return; + } + try { + await trigger({ batch_ids: [batch_id] }).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelBatchSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelBatchFailed'), + status: 'error', + }) + ); + } + }, [batch_id, dispatch, isCanceled, t, trigger]); + + return { cancelBatch, isLoading, isCanceled, isDisabled: !isConnected }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts new file mode 100644 index 0000000000..308695dd67 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelCurrentQueueItem.ts @@ -0,0 +1,53 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useCancelQueueItemMutation, + useGetQueueStatusQuery, +} from 'services/api/endpoints/queue'; + +export const useCancelCurrentQueueItem = () => { + const isConnected = useAppSelector((state) => state.system.isConnected); + const { data: queueStatus } = useGetQueueStatusQuery(); + const [trigger, { isLoading }] = useCancelQueueItemMutation(); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const currentQueueItemId = useMemo( + () => queueStatus?.queue.item_id, + [queueStatus?.queue.item_id] + ); + const cancelQueueItem = useCallback(async () => { + if (!currentQueueItemId) { + return; + } + try { + await trigger(currentQueueItemId).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelFailed'), + status: 'error', + }) + ); + } + }, [currentQueueItemId, dispatch, t, trigger]); + + const isDisabled = useMemo( + () => !isConnected || !currentQueueItemId, + [isConnected, currentQueueItemId] + ); + + return { + cancelQueueItem, + isLoading, + currentQueueItemId, + isDisabled, + }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts b/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts new file mode 100644 index 0000000000..4582ef1223 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useCancelQueueItem.ts @@ -0,0 +1,32 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useCancelQueueItemMutation } from 'services/api/endpoints/queue'; + +export const useCancelQueueItem = (item_id: number) => { + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = useCancelQueueItemMutation(); + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const cancelQueueItem = useCallback(async () => { + try { + await trigger(item_id).unwrap(); + dispatch( + addToast({ + title: t('queue.cancelSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.cancelFailed'), + status: 'error', + }) + ); + } + }, [dispatch, item_id, t, trigger]); + + return { cancelQueueItem, isLoading, isDisabled: !isConnected }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useClearInvocationCache.ts b/invokeai/frontend/web/src/features/queue/hooks/useClearInvocationCache.ts new file mode 100644 index 0000000000..ce2fc0e46b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useClearInvocationCache.ts @@ -0,0 +1,48 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useClearInvocationCacheMutation, + useGetInvocationCacheStatusQuery, +} from 'services/api/endpoints/appInfo'; + +export const useClearInvocationCache = () => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { data: cacheStatus } = useGetInvocationCacheStatusQuery(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = useClearInvocationCacheMutation({ + fixedCacheKey: 'clearInvocationCache', + }); + + const isDisabled = useMemo( + () => !cacheStatus?.size || !isConnected, + [cacheStatus?.size, isConnected] + ); + + const clearInvocationCache = useCallback(async () => { + if (isDisabled) { + return; + } + + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('invocationCache.clearSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('invocationCache.clearFailed'), + status: 'error', + }) + ); + } + }, [isDisabled, trigger, dispatch, t]); + + return { clearInvocationCache, isLoading, cacheStatus, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts b/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts new file mode 100644 index 0000000000..a807e22ead --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useClearQueue.ts @@ -0,0 +1,51 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useClearQueueMutation, + useGetQueueStatusQuery, +} from 'services/api/endpoints/queue'; +import { listCursorChanged, listPriorityChanged } from '../store/queueSlice'; + +export const useClearQueue = () => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { data: queueStatus } = useGetQueueStatusQuery(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = useClearQueueMutation({ + fixedCacheKey: 'clearQueue', + }); + + const clearQueue = useCallback(async () => { + if (!queueStatus?.queue.total) { + return; + } + + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.clearSucceeded'), + status: 'success', + }) + ); + dispatch(listCursorChanged(undefined)); + dispatch(listPriorityChanged(undefined)); + } catch { + dispatch( + addToast({ + title: t('queue.clearFailed'), + status: 'error', + }) + ); + } + }, [queueStatus?.queue.total, trigger, dispatch, t]); + + const isDisabled = useMemo( + () => !isConnected || !queueStatus?.queue.total, + [isConnected, queueStatus?.queue.total] + ); + + return { clearQueue, isLoading, queueStatus, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useDisableInvocationCache.ts b/invokeai/frontend/web/src/features/queue/hooks/useDisableInvocationCache.ts new file mode 100644 index 0000000000..8d3288aad2 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useDisableInvocationCache.ts @@ -0,0 +1,48 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useDisableInvocationCacheMutation, + useGetInvocationCacheStatusQuery, +} from 'services/api/endpoints/appInfo'; + +export const useDisableInvocationCache = () => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { data: cacheStatus } = useGetInvocationCacheStatusQuery(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = useDisableInvocationCacheMutation({ + fixedCacheKey: 'disableInvocationCache', + }); + + const isDisabled = useMemo( + () => !cacheStatus?.enabled || !isConnected || cacheStatus?.max_size === 0, + [cacheStatus?.enabled, cacheStatus?.max_size, isConnected] + ); + + const disableInvocationCache = useCallback(async () => { + if (isDisabled) { + return; + } + + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('invocationCache.disableSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('invocationCache.disableFailed'), + status: 'error', + }) + ); + } + }, [isDisabled, trigger, dispatch, t]); + + return { disableInvocationCache, isLoading, cacheStatus, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useEnableInvocationCache.ts b/invokeai/frontend/web/src/features/queue/hooks/useEnableInvocationCache.ts new file mode 100644 index 0000000000..2ffef29b19 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useEnableInvocationCache.ts @@ -0,0 +1,48 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useEnableInvocationCacheMutation, + useGetInvocationCacheStatusQuery, +} from 'services/api/endpoints/appInfo'; + +export const useEnableInvocationCache = () => { + const { t } = useTranslation(); + const dispatch = useAppDispatch(); + const { data: cacheStatus } = useGetInvocationCacheStatusQuery(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = useEnableInvocationCacheMutation({ + fixedCacheKey: 'enableInvocationCache', + }); + + const isDisabled = useMemo( + () => cacheStatus?.enabled || !isConnected || cacheStatus?.max_size === 0, + [cacheStatus?.enabled, cacheStatus?.max_size, isConnected] + ); + + const enableInvocationCache = useCallback(async () => { + if (isDisabled) { + return; + } + + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('invocationCache.enableSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('invocationCache.enableFailed'), + status: 'error', + }) + ); + } + }, [isDisabled, trigger, dispatch, t]); + + return { enableInvocationCache, isLoading, cacheStatus, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts new file mode 100644 index 0000000000..c0a32c1eb3 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueEmpty.ts @@ -0,0 +1,15 @@ +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; + +export const useIsQueueEmpty = () => { + const { isEmpty } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { isEmpty: true }; + } + return { + isEmpty: data.queue.in_progress === 0 && data.queue.pending === 0, + }; + }, + }); + return isEmpty; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts new file mode 100644 index 0000000000..abb3967b92 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useIsQueueMutationInProgress.ts @@ -0,0 +1,55 @@ +import { + useCancelQueueItemMutation, + // useCancelByBatchIdsMutation, + useClearQueueMutation, + useEnqueueBatchMutation, + useEnqueueGraphMutation, + usePruneQueueMutation, + useResumeProcessorMutation, + usePauseProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const useIsQueueMutationInProgress = () => { + const [_triggerEnqueueBatch, { isLoading: isLoadingEnqueueBatch }] = + useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const [_triggerEnqueueGraph, { isLoading: isLoadingEnqueueGraph }] = + useEnqueueGraphMutation({ + fixedCacheKey: 'enqueueGraph', + }); + const [_triggerResumeProcessor, { isLoading: isLoadingResumeProcessor }] = + useResumeProcessorMutation({ + fixedCacheKey: 'resumeProcessor', + }); + const [_triggerPauseProcessor, { isLoading: isLoadingPauseProcessor }] = + usePauseProcessorMutation({ + fixedCacheKey: 'pauseProcessor', + }); + const [_triggerCancelQueue, { isLoading: isLoadingCancelQueue }] = + useCancelQueueItemMutation({ + fixedCacheKey: 'cancelQueueItem', + }); + const [_triggerClearQueue, { isLoading: isLoadingClearQueue }] = + useClearQueueMutation({ + fixedCacheKey: 'clearQueue', + }); + const [_triggerPruneQueue, { isLoading: isLoadingPruneQueue }] = + usePruneQueueMutation({ + fixedCacheKey: 'pruneQueue', + }); + // const [_triggerCancelByBatchIds, { isLoading: isLoadingCancelByBatchIds }] = + // useCancelByBatchIdsMutation({ + // fixedCacheKey: 'cancelByBatchIds', + // }); + return ( + isLoadingEnqueueBatch || + isLoadingEnqueueGraph || + isLoadingResumeProcessor || + isLoadingPauseProcessor || + isLoadingCancelQueue || + isLoadingClearQueue || + isLoadingPruneQueue + // isLoadingCancelByBatchIds + ); +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts b/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts new file mode 100644 index 0000000000..938f989449 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/usePauseProcessor.ts @@ -0,0 +1,52 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + usePauseProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const usePauseProcessor = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const { data: queueStatus } = useGetQueueStatusQuery(); + const [trigger, { isLoading }] = usePauseProcessorMutation({ + fixedCacheKey: 'pauseProcessor', + }); + + const isStarted = useMemo( + () => Boolean(queueStatus?.processor.is_started), + [queueStatus?.processor.is_started] + ); + + const pauseProcessor = useCallback(async () => { + if (!isStarted) { + return; + } + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.pauseSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.pauseFailed'), + status: 'error', + }) + ); + } + }, [isStarted, trigger, dispatch, t]); + + const isDisabled = useMemo( + () => !isConnected || !isStarted, + [isConnected, isStarted] + ); + + return { pauseProcessor, isLoading, isStarted, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts b/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts new file mode 100644 index 0000000000..0cda8ffd02 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/usePruneQueue.ts @@ -0,0 +1,61 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + usePruneQueueMutation, +} from 'services/api/endpoints/queue'; +import { listCursorChanged, listPriorityChanged } from '../store/queueSlice'; + +export const usePruneQueue = () => { + const dispatch = useAppDispatch(); + const { t } = useTranslation(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const [trigger, { isLoading }] = usePruneQueueMutation({ + fixedCacheKey: 'pruneQueue', + }); + const { finishedCount } = useGetQueueStatusQuery(undefined, { + selectFromResult: ({ data }) => { + if (!data) { + return { finishedCount: 0 }; + } + + return { + finishedCount: + data.queue.completed + data.queue.canceled + data.queue.failed, + }; + }, + }); + + const pruneQueue = useCallback(async () => { + if (!finishedCount) { + return; + } + try { + const data = await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.pruneSucceeded', { item_count: data.deleted }), + status: 'success', + }) + ); + dispatch(listCursorChanged(undefined)); + dispatch(listPriorityChanged(undefined)); + } catch { + dispatch( + addToast({ + title: t('queue.pruneFailed'), + status: 'error', + }) + ); + } + }, [finishedCount, trigger, dispatch, t]); + + const isDisabled = useMemo( + () => !isConnected || !finishedCount, + [finishedCount, isConnected] + ); + + return { pruneQueue, isLoading, finishedCount, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts b/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts new file mode 100644 index 0000000000..0a2582f56b --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useQueueBack.ts @@ -0,0 +1,26 @@ +import { enqueueRequested } from 'app/store/actions'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useCallback, useMemo } from 'react'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; + +export const useQueueBack = () => { + const dispatch = useAppDispatch(); + const tabName = useAppSelector(activeTabNameSelector); + const { isReady } = useIsReadyToEnqueue(); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const isDisabled = useMemo(() => !isReady, [isReady]); + const queueBack = useCallback(() => { + if (isDisabled) { + return; + } + dispatch(clampSymmetrySteps()); + dispatch(enqueueRequested({ tabName, prepend: false })); + }, [dispatch, isDisabled, tabName]); + + return { queueBack, isLoading, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts b/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts new file mode 100644 index 0000000000..e83dfa08ab --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useQueueFront.ts @@ -0,0 +1,32 @@ +import { enqueueRequested } from 'app/store/actions'; +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useIsReadyToEnqueue } from 'common/hooks/useIsReadyToEnqueue'; +import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; +import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; +import { useCallback, useMemo } from 'react'; +import { useEnqueueBatchMutation } from 'services/api/endpoints/queue'; +import { useFeatureStatus } from '../../system/hooks/useFeatureStatus'; + +export const useQueueFront = () => { + const dispatch = useAppDispatch(); + const tabName = useAppSelector(activeTabNameSelector); + const { isReady } = useIsReadyToEnqueue(); + const [_, { isLoading }] = useEnqueueBatchMutation({ + fixedCacheKey: 'enqueueBatch', + }); + const prependEnabled = useFeatureStatus('prependQueue').isFeatureEnabled; + + const isDisabled = useMemo(() => { + return !isReady || !prependEnabled; + }, [isReady, prependEnabled]); + + const queueFront = useCallback(() => { + if (isDisabled) { + return; + } + dispatch(clampSymmetrySteps()); + dispatch(enqueueRequested({ tabName, prepend: true })); + }, [dispatch, isDisabled, tabName]); + + return { queueFront, isLoading, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts b/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts new file mode 100644 index 0000000000..19e21339dd --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/hooks/useResumeProcessor.ts @@ -0,0 +1,52 @@ +import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { addToast } from 'features/system/store/systemSlice'; +import { useCallback, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + useGetQueueStatusQuery, + useResumeProcessorMutation, +} from 'services/api/endpoints/queue'; + +export const useResumeProcessor = () => { + const dispatch = useAppDispatch(); + const isConnected = useAppSelector((state) => state.system.isConnected); + const { data: queueStatus } = useGetQueueStatusQuery(); + const { t } = useTranslation(); + const [trigger, { isLoading }] = useResumeProcessorMutation({ + fixedCacheKey: 'resumeProcessor', + }); + + const isStarted = useMemo( + () => Boolean(queueStatus?.processor.is_started), + [queueStatus?.processor.is_started] + ); + + const resumeProcessor = useCallback(async () => { + if (isStarted) { + return; + } + try { + await trigger().unwrap(); + dispatch( + addToast({ + title: t('queue.resumeSucceeded'), + status: 'success', + }) + ); + } catch { + dispatch( + addToast({ + title: t('queue.resumeFailed'), + status: 'error', + }) + ); + } + }, [isStarted, trigger, dispatch, t]); + + const isDisabled = useMemo( + () => !isConnected || isStarted, + [isConnected, isStarted] + ); + + return { resumeProcessor, isLoading, isStarted, isDisabled }; +}; diff --git a/invokeai/frontend/web/src/features/queue/store/nanoStores.ts b/invokeai/frontend/web/src/features/queue/store/nanoStores.ts new file mode 100644 index 0000000000..462cf69d0a --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/store/nanoStores.ts @@ -0,0 +1,5 @@ +import { atom } from 'nanostores'; + +export const DEFAULT_QUEUE_ID = 'default'; + +export const $queueId = atom(DEFAULT_QUEUE_ID); diff --git a/invokeai/frontend/web/src/features/queue/store/queueSlice.ts b/invokeai/frontend/web/src/features/queue/store/queueSlice.ts new file mode 100644 index 0000000000..ee1e8dfefb --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/store/queueSlice.ts @@ -0,0 +1,60 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; + +export interface QueueState { + listCursor: number | undefined; + listPriority: number | undefined; + selectedQueueItem: string | undefined; + resumeProcessorOnEnqueue: boolean; +} + +export const initialQueueState: QueueState = { + listCursor: undefined, + listPriority: undefined, + selectedQueueItem: undefined, + resumeProcessorOnEnqueue: true, +}; + +const initialState: QueueState = initialQueueState; + +export const queueSlice = createSlice({ + name: 'queue', + initialState, + reducers: { + listCursorChanged: (state, action: PayloadAction) => { + state.listCursor = action.payload; + }, + listPriorityChanged: (state, action: PayloadAction) => { + state.listPriority = action.payload; + }, + listParamsReset: (state) => { + state.listCursor = undefined; + state.listPriority = undefined; + }, + queueItemSelectionToggled: ( + state, + action: PayloadAction + ) => { + if (state.selectedQueueItem === action.payload) { + state.selectedQueueItem = undefined; + } else { + state.selectedQueueItem = action.payload; + } + }, + resumeProcessorOnEnqueueChanged: ( + state, + action: PayloadAction + ) => { + state.resumeProcessorOnEnqueue = action.payload; + }, + }, +}); + +export const { + listCursorChanged, + listPriorityChanged, + listParamsReset, + queueItemSelectionToggled, + resumeProcessorOnEnqueueChanged, +} = queueSlice.actions; + +export default queueSlice.reducer; diff --git a/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts b/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts new file mode 100644 index 0000000000..9cc300c960 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/util/formatNumberShort.ts @@ -0,0 +1,4 @@ +export const formatNumberShort = (num: number) => + Intl.NumberFormat('en-US', { + notation: 'standard', + }).format(num); diff --git a/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts b/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts new file mode 100644 index 0000000000..5ea9713152 --- /dev/null +++ b/invokeai/frontend/web/src/features/queue/util/getSecondsFromTimestamps.ts @@ -0,0 +1,2 @@ +export const getSecondsFromTimestamps = (start: string, end: string) => + Number(((Date.parse(end) - Date.parse(start)) / 1000).toFixed(2)); diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx index 057ee6fe78..94c4a3aeb0 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLConcatButton.tsx @@ -3,6 +3,7 @@ import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { FaLink } from 'react-icons/fa'; import { setShouldConcatSDXLStylePrompt } from '../store/sdxlSlice'; +import { useTranslation } from 'react-i18next'; export default function ParamSDXLConcatButton() { const shouldConcatSDXLStylePrompt = useAppSelector( @@ -10,6 +11,7 @@ export default function ParamSDXLConcatButton() { ); const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleShouldConcatPromptChange = () => { dispatch(setShouldConcatSDXLStylePrompt(!shouldConcatSDXLStylePrompt)); @@ -17,8 +19,8 @@ export default function ParamSDXLConcatButton() { return ( { }, [dispatch]); return ( - - - + + + + + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx index ff877f5e9a..7de413ad3a 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLNegativeStyleConditioning.tsx @@ -1,33 +1,27 @@ import { Box, FormControl, useDisclosure } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; - -import { createSelector } from '@reduxjs/toolkit'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; - -import { userInvoked } from 'app/store/actions'; import IAITextarea from 'common/components/IAITextarea'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; import AddEmbeddingButton from 'features/embedding/components/AddEmbeddingButton'; import ParamEmbeddingPopover from 'features/embedding/components/ParamEmbeddingPopover'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { AnimatePresence } from 'framer-motion'; import { isEqual } from 'lodash-es'; +import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; import { flushSync } from 'react-dom'; +import { useTranslation } from 'react-i18next'; import { setNegativeStylePromptSDXL } from '../store/sdxlSlice'; import SDXLConcatLink from './SDXLConcatLink'; const promptInputSelector = createSelector( - [stateSelector, activeTabNameSelector], - ({ sdxl }, activeTabName) => { + [stateSelector], + ({ sdxl }) => { const { negativeStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; return { prompt: negativeStylePrompt, shouldConcatSDXLStylePrompt, - activeTabName, }; }, { @@ -42,11 +36,11 @@ const promptInputSelector = createSelector( */ const ParamSDXLNegativeStyleConditioning = () => { const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); + const { t } = useTranslation(); - const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + const { prompt, shouldConcatSDXLStylePrompt } = useAppSelector(promptInputSelector); const handleChangePrompt = useCallback( @@ -99,23 +93,13 @@ const ParamSDXLNegativeStyleConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( @@ -143,7 +127,7 @@ const ParamSDXLNegativeStyleConditioning = () => { name="prompt" ref={promptRef} value={prompt} - placeholder="Negative Style Prompt" + placeholder={t('sdxl.negStylePrompt')} onChange={handleChangePrompt} onKeyDown={handleKeyDown} resize="vertical" diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx index 8ff2f9f19e..9281d31588 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLPositiveStyleConditioning.tsx @@ -1,33 +1,27 @@ import { Box, FormControl, useDisclosure } from '@chakra-ui/react'; +import { createSelector } from '@reduxjs/toolkit'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; -import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; - -import { createSelector } from '@reduxjs/toolkit'; -import { clampSymmetrySteps } from 'features/parameters/store/generationSlice'; -import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; - -import { userInvoked } from 'app/store/actions'; import IAITextarea from 'common/components/IAITextarea'; -import { useIsReadyToInvoke } from 'common/hooks/useIsReadyToInvoke'; import AddEmbeddingButton from 'features/embedding/components/AddEmbeddingButton'; import ParamEmbeddingPopover from 'features/embedding/components/ParamEmbeddingPopover'; import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus'; import { AnimatePresence } from 'framer-motion'; import { isEqual } from 'lodash-es'; +import { ChangeEvent, KeyboardEvent, memo, useCallback, useRef } from 'react'; import { flushSync } from 'react-dom'; +import { useTranslation } from 'react-i18next'; import { setPositiveStylePromptSDXL } from '../store/sdxlSlice'; import SDXLConcatLink from './SDXLConcatLink'; const promptInputSelector = createSelector( - [stateSelector, activeTabNameSelector], - ({ sdxl }, activeTabName) => { + [stateSelector], + ({ sdxl }) => { const { positiveStylePrompt, shouldConcatSDXLStylePrompt } = sdxl; return { prompt: positiveStylePrompt, shouldConcatSDXLStylePrompt, - activeTabName, }; }, { @@ -42,11 +36,11 @@ const promptInputSelector = createSelector( */ const ParamSDXLPositiveStyleConditioning = () => { const dispatch = useAppDispatch(); - const isReady = useIsReadyToInvoke(); const promptRef = useRef(null); const { isOpen, onClose, onOpen } = useDisclosure(); + const { t } = useTranslation(); - const { prompt, activeTabName, shouldConcatSDXLStylePrompt } = + const { prompt, shouldConcatSDXLStylePrompt } = useAppSelector(promptInputSelector); const handleChangePrompt = useCallback( @@ -99,23 +93,13 @@ const ParamSDXLPositiveStyleConditioning = () => { const handleKeyDown = useCallback( (e: KeyboardEvent) => { - if (e.key === 'Enter' && e.shiftKey === false && isReady) { - e.preventDefault(); - dispatch(clampSymmetrySteps()); - dispatch(userInvoked(activeTabName)); - } if (isEmbeddingEnabled && e.key === '<') { onOpen(); } }, - [isReady, dispatch, activeTabName, onOpen, isEmbeddingEnabled] + [onOpen, isEmbeddingEnabled] ); - // const handleSelect = (e: MouseEvent) => { - // const target = e.target as HTMLTextAreaElement; - // setCaret({ start: target.selectionStart, end: target.selectionEnd }); - // }; - return ( @@ -143,7 +127,7 @@ const ParamSDXLPositiveStyleConditioning = () => { name="prompt" ref={promptRef} value={prompt} - placeholder="Positive Style Prompt" + placeholder={t('sdxl.posStylePrompt')} onChange={handleChangePrompt} onKeyDown={handleKeyDown} resize="vertical" diff --git a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLRefinerCollapse.tsx b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLRefinerCollapse.tsx index fcf4d0bcd3..6ac3034834 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLRefinerCollapse.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/ParamSDXLRefinerCollapse.tsx @@ -13,6 +13,7 @@ import ParamSDXLRefinerScheduler from './SDXLRefiner/ParamSDXLRefinerScheduler'; import ParamSDXLRefinerStart from './SDXLRefiner/ParamSDXLRefinerStart'; import ParamSDXLRefinerSteps from './SDXLRefiner/ParamSDXLRefinerSteps'; import ParamUseSDXLRefiner from './SDXLRefiner/ParamUseSDXLRefiner'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( stateSelector, @@ -29,9 +30,10 @@ const selector = createSelector( const ParamSDXLRefinerCollapse = () => { const { activeLabel, shouldUseSliders } = useAppSelector(selector); + const { t } = useTranslation(); return ( - + diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx index 2b40eca382..5a0d7daf4e 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLImageToImageTabParameters.tsx @@ -1,8 +1,7 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse'; +import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import { memo } from 'react'; import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; @@ -17,8 +16,7 @@ const SDXLImageToImageTabParameters = () => { - - + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerCFGScale.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerCFGScale.tsx index dd678ac0f7..fb16c01676 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerCFGScale.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerCFGScale.tsx @@ -43,7 +43,7 @@ const ParamSDXLRefinerCFGScale = () => { return shouldUseSliders ? ( { /> ) : ( { const isSyncModelEnabled = useFeatureStatus('syncModels').isFeatureEnabled; const { model } = useAppSelector(selector); + const { t } = useTranslation(); const { data: refinerModels, isLoading } = useGetMainModelsQuery(REFINER_BASE_MODELS); @@ -81,8 +83,8 @@ const ParamSDXLRefinerModelSelect = () => { return isLoading ? ( @@ -90,9 +92,11 @@ const ParamSDXLRefinerModelSelect = () => { 0 ? 'Select a model' : 'No models available'} + placeholder={ + data.length > 0 ? t('sdxl.selectAModel') : t('sdxl.noModelsAvailable') + } data={data} error={data.length === 0} disabled={data.length === 0} diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerNegativeAestheticScore.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerNegativeAestheticScore.tsx index 4dad3f519a..bc08d64e9f 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerNegativeAestheticScore.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLRefiner/ParamSDXLRefinerNegativeAestheticScore.tsx @@ -6,6 +6,7 @@ import IAISlider from 'common/components/IAISlider'; import { setRefinerNegativeAestheticScore } from 'features/sdxl/store/sdxlSlice'; import { memo, useCallback } from 'react'; import { useIsRefinerAvailable } from 'services/api/hooks/useIsRefinerAvailable'; +import { useTranslation } from 'react-i18next'; const selector = createSelector( [stateSelector], @@ -27,6 +28,7 @@ const ParamSDXLRefinerNegativeAestheticScore = () => { const isRefinerAvailable = useIsRefinerAvailable(); const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleChange = useCallback( (v: number) => dispatch(setRefinerNegativeAestheticScore(v)), @@ -40,7 +42,7 @@ const ParamSDXLRefinerNegativeAestheticScore = () => { return ( { const isRefinerAvailable = useIsRefinerAvailable(); const dispatch = useAppDispatch(); + const { t } = useTranslation(); const handleChange = useCallback( (v: number) => dispatch(setRefinerPositiveAestheticScore(v)), @@ -40,7 +42,7 @@ const ParamSDXLRefinerPositiveAestheticScore = () => { return ( { return ( { (v: number) => dispatch(setRefinerStart(v)), [dispatch] ); + const { t } = useTranslation(); const handleReset = useCallback( () => dispatch(setRefinerStart(0.8)), @@ -34,7 +36,7 @@ const ParamSDXLRefinerStart = () => { return ( { return shouldUseSliders ? ( { /> ) : ( ) => { dispatch(setShouldUseSDXLRefiner(e.target.checked)); @@ -19,7 +21,7 @@ export default function ParamUseSDXLRefiner() { return ( { - - + ); }; diff --git a/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx b/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx index 01236d8ec3..a9e94a9df0 100644 --- a/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx +++ b/invokeai/frontend/web/src/features/sdxl/components/SDXLUnifiedCanvasTabParameters.tsx @@ -1,10 +1,9 @@ import ParamDynamicPromptsCollapse from 'features/dynamicPrompts/components/ParamDynamicPromptsCollapse'; import ParamLoraCollapse from 'features/lora/components/ParamLoraCollapse'; +import ParamAdvancedCollapse from 'features/parameters/components/Parameters/Advanced/ParamAdvancedCollapse'; import ParamCompositingSettingsCollapse from 'features/parameters/components/Parameters/Canvas/Compositing/ParamCompositingSettingsCollapse'; import ParamInfillAndScalingCollapse from 'features/parameters/components/Parameters/Canvas/InfillAndScaling/ParamInfillAndScalingCollapse'; import ParamControlNetCollapse from 'features/parameters/components/Parameters/ControlNet/ParamControlNetCollapse'; -import ParamNoiseCollapse from 'features/parameters/components/Parameters/Noise/ParamNoiseCollapse'; -import ParamSeamlessCollapse from 'features/parameters/components/Parameters/Seamless/ParamSeamlessCollapse'; import ParamSDXLPromptArea from './ParamSDXLPromptArea'; import ParamSDXLRefinerCollapse from './ParamSDXLRefinerCollapse'; import SDXLUnifiedCanvasTabCoreParameters from './SDXLUnifiedCanvasTabCoreParameters'; @@ -18,10 +17,9 @@ export default function SDXLUnifiedCanvasTabParameters() { - - + ); } diff --git a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts index a020a453f7..73f5779a52 100644 --- a/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts +++ b/invokeai/frontend/web/src/features/sdxl/store/sdxlSlice.ts @@ -6,7 +6,7 @@ import { SchedulerParam, } from 'features/parameters/types/parameterSchemas'; -type SDXLInitialState = { +type SDXLState = { positiveStylePrompt: PositiveStylePromptSDXLParam; negativeStylePrompt: NegativeStylePromptSDXLParam; shouldConcatSDXLStylePrompt: boolean; @@ -21,7 +21,7 @@ type SDXLInitialState = { refinerStart: number; }; -const sdxlInitialState: SDXLInitialState = { +export const initialSDXLState: SDXLState = { positiveStylePrompt: '', negativeStylePrompt: '', shouldConcatSDXLStylePrompt: true, @@ -38,7 +38,7 @@ const sdxlInitialState: SDXLInitialState = { const sdxlSlice = createSlice({ name: 'sdxl', - initialState: sdxlInitialState, + initialState: initialSDXLState, reducers: { setPositiveStylePromptSDXL: (state, action: PayloadAction) => { state.positiveStylePrompt = action.payload; diff --git a/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx b/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx index 34bd394214..428ae47545 100644 --- a/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx +++ b/invokeai/frontend/web/src/features/system/components/ProgressBar.tsx @@ -1,40 +1,38 @@ import { Progress } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { SystemState } from 'features/system/store/systemSlice'; -import { isEqual } from 'lodash-es'; +import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { memo } from 'react'; import { useTranslation } from 'react-i18next'; -import { systemSelector } from '../store/systemSelectors'; - +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; const progressBarSelector = createSelector( - systemSelector, - (system: SystemState) => { + stateSelector, + ({ system }) => { return { - isProcessing: system.isProcessing, - currentStep: system.currentStep, - totalSteps: system.totalSteps, - currentStatusHasSteps: system.currentStatusHasSteps, + isConnected: system.isConnected, + hasSteps: Boolean(system.denoiseProgress), + value: (system.denoiseProgress?.percentage ?? 0) * 100, }; }, - { - memoizeOptions: { resultEqualityCheck: isEqual }, - } + defaultSelectorOptions ); const ProgressBar = () => { const { t } = useTranslation(); - const { isProcessing, currentStep, totalSteps, currentStatusHasSteps } = - useAppSelector(progressBarSelector); - - const value = currentStep ? Math.round((currentStep * 100) / totalSteps) : 0; + const { data: queueStatus } = useGetQueueStatusQuery(); + const { hasSteps, value, isConnected } = useAppSelector(progressBarSelector); return ( ); diff --git a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx index c1d02aed50..383e3558b0 100644 --- a/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx +++ b/invokeai/frontend/web/src/features/system/components/SettingsModal/SettingsModal.tsx @@ -19,16 +19,17 @@ import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; -import { setShouldShowAdvancedOptions } from 'features/parameters/store/generationSlice'; import { consoleLogLevelChanged, setEnableImageDebugging, setShouldConfirmOnDelete, + setShouldEnableInformationalPopovers, shouldAntialiasProgressImageChanged, shouldLogToConsoleChanged, shouldUseNSFWCheckerChanged, shouldUseWatermarkerChanged, } from 'features/system/store/systemSlice'; +import { LANGUAGES } from 'features/system/store/types'; import { setShouldAutoChangeDimensions, setShouldShowProgressInViewer, @@ -48,7 +49,6 @@ import { useTranslation } from 'react-i18next'; import { LogLevelName } from 'roarr'; import { useGetAppConfigQuery } from 'services/api/endpoints/appInfo'; import { useFeatureStatus } from '../../hooks/useFeatureStatus'; -import { LANGUAGES } from '../../store/constants'; import { languageSelector } from '../../store/systemSelectors'; import { languageChanged } from '../../store/systemSlice'; import SettingSwitch from './SettingSwitch'; @@ -58,7 +58,7 @@ import StyledFlex from './StyledFlex'; const selector = createSelector( [stateSelector], - ({ system, ui, generation }) => { + ({ system, ui }) => { const { shouldConfirmOnDelete, enableImageDebugging, @@ -67,6 +67,7 @@ const selector = createSelector( shouldAntialiasProgressImage, shouldUseNSFWChecker, shouldUseWatermarker, + shouldEnableInformationalPopovers, } = system; const { @@ -75,8 +76,6 @@ const selector = createSelector( shouldAutoChangeDimensions, } = ui; - const { shouldShowAdvancedOptions } = generation; - return { shouldConfirmOnDelete, enableImageDebugging, @@ -85,10 +84,10 @@ const selector = createSelector( consoleLogLevel, shouldLogToConsole, shouldAntialiasProgressImage, - shouldShowAdvancedOptions, shouldUseNSFWChecker, shouldUseWatermarker, shouldAutoChangeDimensions, + shouldEnableInformationalPopovers, }; }, { @@ -118,8 +117,6 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { const shouldShowDeveloperSettings = config?.shouldShowDeveloperSettings ?? true; const shouldShowResetWebUiText = config?.shouldShowResetWebUiText ?? true; - const shouldShowAdvancedOptionsSettings = - config?.shouldShowAdvancedOptionsSettings ?? true; const shouldShowClearIntermediates = config?.shouldShowClearIntermediates ?? true; const shouldShowLocalizationToggle = @@ -161,10 +158,10 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { consoleLogLevel, shouldLogToConsole, shouldAntialiasProgressImage, - shouldShowAdvancedOptions, shouldUseNSFWChecker, shouldUseWatermarker, shouldAutoChangeDimensions, + shouldEnableInformationalPopovers, } = useAppSelector(selector); const handleClickResetWebUI = useCallback(() => { @@ -242,15 +239,6 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { dispatch(setShouldConfirmOnDelete(e.target.checked)) } /> - {shouldShowAdvancedOptionsSettings && ( - ) => - dispatch(setShouldShowAdvancedOptions(e.target.checked)) - } - /> - )} @@ -323,6 +311,15 @@ const SettingsModal = ({ children, config }: SettingsModalProps) => { onChange={handleLanguageChanged} /> )} + ) => + dispatch( + setShouldEnableInformationalPopovers(e.target.checked) + ) + } + /> {shouldShowDeveloperSettings && ( diff --git a/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx b/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx index 4a19ee7fa3..2f740bbe78 100644 --- a/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx +++ b/invokeai/frontend/web/src/features/system/components/StatusIndicator.tsx @@ -1,5 +1,6 @@ import { Flex, Icon, Text } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import { AnimatePresence, motion } from 'framer-motion'; @@ -8,27 +9,17 @@ import { memo, useMemo, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import { FaCircle } from 'react-icons/fa'; import { useHoverDirty } from 'react-use'; -import { systemSelector } from '../store/systemSelectors'; +import { useGetQueueStatusQuery } from 'services/api/endpoints/queue'; +import { STATUS_TRANSLATION_KEYS } from '../store/types'; const statusIndicatorSelector = createSelector( - systemSelector, - (system) => { - const { - isConnected, - isProcessing, - statusTranslationKey, - currentIteration, - totalIterations, - currentStatusHasSteps, - } = system; + stateSelector, + ({ system }) => { + const { isConnected, status } = system; return { isConnected, - isProcessing, - currentIteration, - totalIterations, - statusTranslationKey, - currentStatusHasSteps, + statusTranslationKey: STATUS_TRANSLATION_KEYS[status], }; }, defaultSelectorOptions @@ -47,35 +38,24 @@ const LIGHT_COLOR_MAP = { }; const StatusIndicator = () => { - const { - isConnected, - isProcessing, - currentIteration, - totalIterations, - statusTranslationKey, - } = useAppSelector(statusIndicatorSelector); + const { isConnected, statusTranslationKey } = useAppSelector( + statusIndicatorSelector + ); const { t } = useTranslation(); const ref = useRef(null); + const { data: queueStatus } = useGetQueueStatusQuery(); - const statusString = useMemo(() => { - if (isProcessing) { + const statusColor = useMemo(() => { + if (!isConnected) { + return 'error'; + } + + if (queueStatus?.queue.in_progress) { return 'working'; } - if (isConnected) { - return 'ok'; - } - - return 'error'; - }, [isProcessing, isConnected]); - - const iterationsText = useMemo(() => { - if (!(currentIteration && totalIterations)) { - return; - } - - return ` (${currentIteration}/${totalIterations})`; - }, [currentIteration, totalIterations]); + return 'ok'; + }, [queueStatus?.queue.in_progress, isConnected]); const isHovered = useHoverDirty(ref); @@ -103,12 +83,11 @@ const StatusIndicator = () => { fontWeight: '600', pb: '1px', userSelect: 'none', - color: LIGHT_COLOR_MAP[statusString], - _dark: { color: DARK_COLOR_MAP[statusString] }, + color: LIGHT_COLOR_MAP[statusColor], + _dark: { color: DARK_COLOR_MAP[statusColor] }, }} > {t(statusTranslationKey as ResourceKey)} - {iterationsText} )} @@ -117,8 +96,8 @@ const StatusIndicator = () => { as={FaCircle} sx={{ boxSize: '0.5rem', - color: LIGHT_COLOR_MAP[statusString], - _dark: { color: DARK_COLOR_MAP[statusString] }, + color: LIGHT_COLOR_MAP[statusColor], + _dark: { color: DARK_COLOR_MAP[statusColor] }, }} /> diff --git a/invokeai/frontend/web/src/features/system/store/configSlice.ts b/invokeai/frontend/web/src/features/system/store/configSlice.ts index 9bdc16ce77..8a20b050ed 100644 --- a/invokeai/frontend/web/src/features/system/store/configSlice.ts +++ b/invokeai/frontend/web/src/features/system/store/configSlice.ts @@ -5,6 +5,7 @@ import { merge } from 'lodash-es'; export const initialConfigState: AppConfig = { shouldUpdateImagesOnConnect: false, + shouldFetchMetadataFromApi: false, disabledTabs: [], disabledFeatures: ['lightbox', 'faceRestore', 'batches'], disabledSDFeatures: [ @@ -14,6 +15,8 @@ export const initialConfigState: AppConfig = { 'perlinNoise', 'noiseThreshold', ], + nodesAllowlist: undefined, + nodesDenylist: undefined, canRestoreDeletedImagesFromBin: true, sd: { disabledControlNetModels: [], @@ -21,8 +24,8 @@ export const initialConfigState: AppConfig = { iterations: { initial: 1, min: 1, - sliderMax: 20, - inputMax: 9999, + sliderMax: 1000, + inputMax: 10000, fineStep: 1, coarseStep: 1, }, diff --git a/invokeai/frontend/web/src/features/system/store/constants.ts b/invokeai/frontend/web/src/features/system/store/constants.ts deleted file mode 100644 index 4e7dd0b9a8..0000000000 --- a/invokeai/frontend/web/src/features/system/store/constants.ts +++ /dev/null @@ -1,20 +0,0 @@ -import i18n from 'i18n'; - -export const LANGUAGES = { - ar: i18n.t('common.langArabic', { lng: 'ar' }), - nl: i18n.t('common.langDutch', { lng: 'nl' }), - en: i18n.t('common.langEnglish', { lng: 'en' }), - fr: i18n.t('common.langFrench', { lng: 'fr' }), - de: i18n.t('common.langGerman', { lng: 'de' }), - he: i18n.t('common.langHebrew', { lng: 'he' }), - it: i18n.t('common.langItalian', { lng: 'it' }), - ja: i18n.t('common.langJapanese', { lng: 'ja' }), - ko: i18n.t('common.langKorean', { lng: 'ko' }), - pl: i18n.t('common.langPolish', { lng: 'pl' }), - pt_BR: i18n.t('common.langBrPortuguese', { lng: 'pt_BR' }), - pt: i18n.t('common.langPortuguese', { lng: 'pt' }), - ru: i18n.t('common.langRussian', { lng: 'ru' }), - zh_CN: i18n.t('common.langSimplifiedChinese', { lng: 'zh_CN' }), - es: i18n.t('common.langSpanish', { lng: 'es' }), - uk: i18n.t('common.langUkranian', { lng: 'ua' }), -}; diff --git a/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts b/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts index b5376afc4f..b1d952ed83 100644 --- a/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts +++ b/invokeai/frontend/web/src/features/system/store/systemPersistDenylist.ts @@ -1,21 +1,8 @@ -import { SystemState } from './systemSlice'; +import { SystemState } from './types'; -/** - * System slice persist denylist - */ export const systemPersistDenylist: (keyof SystemState)[] = [ - 'currentIteration', - 'currentStep', - 'isCancelable', + 'isInitialized', 'isConnected', - 'isESRGANAvailable', - 'isGFPGANAvailable', - 'isProcessing', - 'totalIterations', - 'totalSteps', - 'isCancelScheduled', - 'progressImage', - 'wereModelsReceived', - 'isPersisted', - 'isUploading', + 'denoiseProgress', + 'status', ]; diff --git a/invokeai/frontend/web/src/features/system/store/systemSelectors.ts b/invokeai/frontend/web/src/features/system/store/systemSelectors.ts index 900d8e0bd6..2e38f32283 100644 --- a/invokeai/frontend/web/src/features/system/store/systemSelectors.ts +++ b/invokeai/frontend/web/src/features/system/store/systemSelectors.ts @@ -1,21 +1,9 @@ import { createSelector } from '@reduxjs/toolkit'; -import { RootState } from 'app/store/store'; +import { stateSelector } from 'app/store/store'; import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; -export const systemSelector = (state: RootState) => state.system; - -export const toastQueueSelector = (state: RootState) => state.system.toastQueue; - export const languageSelector = createSelector( - systemSelector, - (system) => system.language, + stateSelector, + ({ system }) => system.language, defaultSelectorOptions ); - -export const isProcessingSelector = (state: RootState) => - state.system.isProcessing; - -export const selectIsBusy = createSelector( - (state: RootState) => state, - (state) => state.system.isProcessing || !state.system.isConnected -); diff --git a/invokeai/frontend/web/src/features/system/store/systemSlice.ts b/invokeai/frontend/web/src/features/system/store/systemSlice.ts index bf8036ba98..7d31838afd 100644 --- a/invokeai/frontend/web/src/features/system/store/systemSlice.ts +++ b/invokeai/frontend/web/src/features/system/store/systemSlice.ts @@ -1,14 +1,9 @@ import { UseToastOptions } from '@chakra-ui/react'; import { PayloadAction, createSlice, isAnyOf } from '@reduxjs/toolkit'; -import { InvokeLogLevel } from 'app/logging/logger'; -import { userInvoked } from 'app/store/actions'; import { t } from 'i18next'; -import { get, startCase, upperFirst } from 'lodash-es'; +import { get, startCase, truncate, upperFirst } from 'lodash-es'; import { LogLevelName } from 'roarr'; -import { - isAnySessionRejected, - sessionCanceled, -} from 'services/api/thunks/session'; +import { isAnySessionRejected } from 'services/api/thunks/session'; import { appSocketConnected, appSocketDisconnected, @@ -18,122 +13,40 @@ import { appSocketInvocationError, appSocketInvocationRetrievalError, appSocketInvocationStarted, + appSocketModelLoadCompleted, + appSocketModelLoadStarted, + appSocketQueueItemStatusChanged, appSocketSessionRetrievalError, - appSocketSubscribed, - appSocketUnsubscribed, } from 'services/events/actions'; -import { ProgressImage } from 'services/events/types'; +import { calculateStepPercentage } from '../util/calculateStepPercentage'; import { makeToast } from '../util/makeToast'; -import { LANGUAGES } from './constants'; +import { SystemState, LANGUAGES } from './types'; import { zPydanticValidationError } from './zodSchemas'; -export type CancelStrategy = 'immediate' | 'scheduled'; - -export interface SystemState { - isGFPGANAvailable: boolean; - isESRGANAvailable: boolean; - isConnected: boolean; - isProcessing: boolean; - shouldConfirmOnDelete: boolean; - currentStep: number; - totalSteps: number; - currentIteration: number; - totalIterations: number; - currentStatusHasSteps: boolean; - isCancelable: boolean; - enableImageDebugging: boolean; - toastQueue: UseToastOptions[]; - /** - * The current progress image - */ - progressImage: ProgressImage | null; - /** - * The current socket session id - */ - sessionId: string | null; - /** - * Cancel strategy - */ - cancelType: CancelStrategy; - /** - * Whether or not a scheduled cancelation is pending - */ - isCancelScheduled: boolean; - /** - * Array of node IDs that we want to handle when events received - */ - subscribedNodeIds: string[]; - /** - * Whether or not the available models were received - */ - wereModelsReceived: boolean; - /** - * The console output logging level - */ - consoleLogLevel: InvokeLogLevel; - shouldLogToConsole: boolean; - // TODO: probably better to not store keys here, should just be a string that maps to the translation key - statusTranslationKey: string; - /** - * When a session is canceled, its ID is stored here until a new session is created. - */ - canceledSession: string; - isPersisted: boolean; - shouldAntialiasProgressImage: boolean; - language: keyof typeof LANGUAGES; - isUploading: boolean; - shouldUseNSFWChecker: boolean; - shouldUseWatermarker: boolean; -} - export const initialSystemState: SystemState = { + isInitialized: false, isConnected: false, - isProcessing: false, - isGFPGANAvailable: true, - isESRGANAvailable: true, shouldConfirmOnDelete: true, - currentStep: 0, - totalSteps: 0, - currentIteration: 0, - totalIterations: 0, - currentStatusHasSteps: false, - isCancelable: true, enableImageDebugging: false, toastQueue: [], - progressImage: null, + denoiseProgress: null, shouldAntialiasProgressImage: false, - sessionId: null, - cancelType: 'immediate', - isCancelScheduled: false, - subscribedNodeIds: [], - wereModelsReceived: false, consoleLogLevel: 'debug', shouldLogToConsole: true, - statusTranslationKey: 'common.statusDisconnected', - canceledSession: '', - isPersisted: false, language: 'en', - isUploading: false, shouldUseNSFWChecker: false, shouldUseWatermarker: false, + shouldEnableInformationalPopovers: false, + status: 'DISCONNECTED', }; export const systemSlice = createSlice({ name: 'system', initialState: initialSystemState, reducers: { - setIsProcessing: (state, action: PayloadAction) => { - state.isProcessing = action.payload; - }, - setCurrentStatus: (state, action: PayloadAction) => { - state.statusTranslationKey = action.payload; - }, setShouldConfirmOnDelete: (state, action: PayloadAction) => { state.shouldConfirmOnDelete = action.payload; }, - setIsCancelable: (state, action: PayloadAction) => { - state.isCancelable = action.payload; - }, setEnableImageDebugging: (state, action: PayloadAction) => { state.enableImageDebugging = action.payload; }, @@ -143,30 +56,6 @@ export const systemSlice = createSlice({ clearToastQueue: (state) => { state.toastQueue = []; }, - /** - * A cancel was scheduled - */ - cancelScheduled: (state) => { - state.isCancelScheduled = true; - }, - /** - * The scheduled cancel was aborted - */ - scheduledCancelAborted: (state) => { - state.isCancelScheduled = false; - }, - /** - * The cancel type was changed - */ - cancelTypeChanged: (state, action: PayloadAction) => { - state.cancelType = action.payload; - }, - /** - * The array of subscribed node ids was changed - */ - subscribedNodeIdsSet: (state, action: PayloadAction) => { - state.subscribedNodeIds = action.payload; - }, consoleLogLevelChanged: (state, action: PayloadAction) => { state.consoleLogLevel = action.payload; }, @@ -179,51 +68,33 @@ export const systemSlice = createSlice({ ) => { state.shouldAntialiasProgressImage = action.payload; }, - isPersistedChanged: (state, action: PayloadAction) => { - state.isPersisted = action.payload; - }, languageChanged: (state, action: PayloadAction) => { state.language = action.payload; }, - progressImageSet(state, action: PayloadAction) { - state.progressImage = action.payload; - }, shouldUseNSFWCheckerChanged(state, action: PayloadAction) { state.shouldUseNSFWChecker = action.payload; }, shouldUseWatermarkerChanged(state, action: PayloadAction) { state.shouldUseWatermarker = action.payload; }, + setShouldEnableInformationalPopovers( + state, + action: PayloadAction + ) { + state.shouldEnableInformationalPopovers = action.payload; + }, + isInitializedChanged(state, action: PayloadAction) { + state.isInitialized = action.payload; + }, }, extraReducers(builder) { - /** - * Socket Subscribed - */ - builder.addCase(appSocketSubscribed, (state, action) => { - state.sessionId = action.payload.sessionId; - state.canceledSession = ''; - }); - - /** - * Socket Unsubscribed - */ - builder.addCase(appSocketUnsubscribed, (state) => { - state.sessionId = null; - }); - /** * Socket Connected */ builder.addCase(appSocketConnected, (state) => { state.isConnected = true; - state.isCancelable = true; - state.isProcessing = false; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.currentIteration = 0; - state.totalIterations = 0; - state.statusTranslationKey = 'common.statusConnected'; + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); /** @@ -231,106 +102,75 @@ export const systemSlice = createSlice({ */ builder.addCase(appSocketDisconnected, (state) => { state.isConnected = false; - state.isProcessing = false; - state.isCancelable = true; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.statusTranslationKey = 'common.statusDisconnected'; + state.denoiseProgress = null; + state.status = 'DISCONNECTED'; }); /** * Invocation Started */ builder.addCase(appSocketInvocationStarted, (state) => { - state.isCancelable = true; - state.isProcessing = true; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.statusTranslationKey = 'common.statusGenerating'; + state.denoiseProgress = null; + state.status = 'PROCESSING'; }); /** * Generator Progress */ builder.addCase(appSocketGeneratorProgress, (state, action) => { - const { step, total_steps, progress_image } = action.payload.data; + const { + step, + total_steps, + order, + progress_image, + graph_execution_state_id: session_id, + queue_batch_id: batch_id, + } = action.payload.data; - state.isProcessing = true; - state.isCancelable = true; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = true; - state.currentStep = step + 1; // TODO: step starts at -1, think this is a bug - state.totalSteps = total_steps; - state.progressImage = progress_image ?? null; - state.statusTranslationKey = 'common.statusGenerating'; + state.denoiseProgress = { + step, + total_steps, + order, + percentage: calculateStepPercentage(step, total_steps, order), + progress_image, + session_id, + batch_id, + }; + + state.status = 'PROCESSING'; }); /** * Invocation Complete */ - builder.addCase(appSocketInvocationComplete, (state, action) => { - const { data } = action.payload; - - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusProcessingComplete'; - - if (state.canceledSession === data.graph_execution_state_id) { - state.isProcessing = false; - state.isCancelable = true; - } + builder.addCase(appSocketInvocationComplete, (state) => { + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); /** * Graph Execution State Complete */ builder.addCase(appSocketGraphExecutionStateComplete, (state) => { - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; + state.denoiseProgress = null; + state.status = 'CONNECTED'; }); - /** - * User Invoked - */ - - builder.addCase(userInvoked, (state) => { - state.isProcessing = true; - state.isCancelable = true; - state.currentStatusHasSteps = false; - state.statusTranslationKey = 'common.statusPreparing'; + builder.addCase(appSocketModelLoadStarted, (state) => { + state.status = 'LOADING_MODEL'; }); - /** - * Session Canceled - FULFILLED - */ - builder.addCase(sessionCanceled.fulfilled, (state, action) => { - state.canceledSession = action.meta.arg.session_id; - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; + builder.addCase(appSocketModelLoadCompleted, (state) => { + state.status = 'CONNECTED'; + }); - state.toastQueue.push( - makeToast({ title: t('toast.canceled'), status: 'warning' }) - ); + builder.addCase(appSocketQueueItemStatusChanged, (state, action) => { + if ( + ['completed', 'canceled', 'failed'].includes(action.payload.data.status) + ) { + state.status = 'CONNECTED'; + state.denoiseProgress = null; + } }); // *** Matchers - must be after all cases *** @@ -340,14 +180,6 @@ export const systemSlice = createSlice({ * Session Created - REJECTED */ builder.addMatcher(isAnySessionRejected, (state, action) => { - state.isProcessing = false; - state.isCancelable = false; - state.isCancelScheduled = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusConnected'; - state.progressImage = null; - let errorDescription = undefined; const duration = 5000; @@ -357,10 +189,13 @@ export const systemSlice = createSlice({ result.data.error.detail.map((e) => { state.toastQueue.push( makeToast({ - title: upperFirst(e.msg), + title: truncate(upperFirst(e.msg), { length: 128 }), status: 'error', - description: `Path: - ${e.loc.slice(3).join('.')}`, + description: truncate( + `Path: + ${e.loc.join('.')}`, + { length: 128 } + ), duration, }) ); @@ -375,7 +210,10 @@ export const systemSlice = createSlice({ makeToast({ title: t('toast.serverError'), status: 'error', - description: get(errorDescription, 'detail', 'Unknown Error'), + description: truncate( + get(errorDescription, 'detail', 'Unknown Error'), + { length: 128 } + ), duration, }) ); @@ -385,16 +223,6 @@ export const systemSlice = createSlice({ * Any server error */ builder.addMatcher(isAnyServerError, (state, action) => { - state.isProcessing = false; - state.isCancelable = true; - // state.currentIteration = 0; - // state.totalIterations = 0; - state.currentStatusHasSteps = false; - state.currentStep = 0; - state.totalSteps = 0; - state.statusTranslationKey = 'common.statusError'; - state.progressImage = null; - state.toastQueue.push( makeToast({ title: t('toast.serverError'), @@ -407,25 +235,18 @@ export const systemSlice = createSlice({ }); export const { - setIsProcessing, setShouldConfirmOnDelete, - setCurrentStatus, - setIsCancelable, setEnableImageDebugging, addToast, clearToastQueue, - cancelScheduled, - scheduledCancelAborted, - cancelTypeChanged, - subscribedNodeIdsSet, consoleLogLevelChanged, shouldLogToConsoleChanged, - isPersistedChanged, shouldAntialiasProgressImageChanged, languageChanged, - progressImageSet, shouldUseNSFWCheckerChanged, shouldUseWatermarkerChanged, + setShouldEnableInformationalPopovers, + isInitializedChanged, } = systemSlice.actions; export default systemSlice.reducer; diff --git a/invokeai/frontend/web/src/features/system/store/types.ts b/invokeai/frontend/web/src/features/system/store/types.ts new file mode 100644 index 0000000000..95c63a1415 --- /dev/null +++ b/invokeai/frontend/web/src/features/system/store/types.ts @@ -0,0 +1,65 @@ +import { UseToastOptions } from '@chakra-ui/react'; +import { InvokeLogLevel } from 'app/logging/logger'; +import i18n from 'i18n'; +import { ProgressImage } from 'services/events/types'; + +export type SystemStatus = + | 'CONNECTED' + | 'DISCONNECTED' + | 'PROCESSING' + | 'ERROR' + | 'LOADING_MODEL'; + +export type DenoiseProgress = { + session_id: string; + batch_id: string; + progress_image: ProgressImage | null | undefined; + step: number; + total_steps: number; + order: number; + percentage: number; +}; + +export interface SystemState { + isInitialized: boolean; + isConnected: boolean; + shouldConfirmOnDelete: boolean; + enableImageDebugging: boolean; + toastQueue: UseToastOptions[]; + denoiseProgress: DenoiseProgress | null; + consoleLogLevel: InvokeLogLevel; + shouldLogToConsole: boolean; + shouldAntialiasProgressImage: boolean; + language: keyof typeof LANGUAGES; + shouldUseNSFWChecker: boolean; + shouldUseWatermarker: boolean; + status: SystemStatus; + shouldEnableInformationalPopovers: boolean; +} + +export const LANGUAGES = { + ar: i18n.t('common.langArabic', { lng: 'ar' }), + nl: i18n.t('common.langDutch', { lng: 'nl' }), + en: i18n.t('common.langEnglish', { lng: 'en' }), + fr: i18n.t('common.langFrench', { lng: 'fr' }), + de: i18n.t('common.langGerman', { lng: 'de' }), + he: i18n.t('common.langHebrew', { lng: 'he' }), + it: i18n.t('common.langItalian', { lng: 'it' }), + ja: i18n.t('common.langJapanese', { lng: 'ja' }), + ko: i18n.t('common.langKorean', { lng: 'ko' }), + pl: i18n.t('common.langPolish', { lng: 'pl' }), + pt_BR: i18n.t('common.langBrPortuguese', { lng: 'pt_BR' }), + pt: i18n.t('common.langPortuguese', { lng: 'pt' }), + ru: i18n.t('common.langRussian', { lng: 'ru' }), + zh_CN: i18n.t('common.langSimplifiedChinese', { lng: 'zh_CN' }), + es: i18n.t('common.langSpanish', { lng: 'es' }), + uk: i18n.t('common.langUkranian', { lng: 'ua' }), +}; + +export const STATUS_TRANSLATION_KEYS: Record = { + CONNECTED: 'common.statusConnected', + DISCONNECTED: 'common.statusDisconnected', + PROCESSING: 'common.statusProcessing', + ERROR: 'common.statusError', + LOADING_MODEL: 'common.statusLoadingModel', +}; diff --git a/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts b/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts new file mode 100644 index 0000000000..080c7b1ee6 --- /dev/null +++ b/invokeai/frontend/web/src/features/system/util/calculateStepPercentage.ts @@ -0,0 +1,17 @@ +export const calculateStepPercentage = ( + step: number, + total_steps: number, + order: number +) => { + if (total_steps === 0) { + return 0; + } + + // we add one extra to step so that the progress bar will be full when denoise completes + + if (order === 2) { + return Math.floor((step + 1 + 1) / 2) / Math.floor((total_steps + 1) / 2); + } + + return (step + 1 + 1) / (total_steps + 1); +}; diff --git a/invokeai/frontend/web/src/features/canvas/util/copyBlobToClipboard.ts b/invokeai/frontend/web/src/features/system/util/copyBlobToClipboard.ts similarity index 58% rename from invokeai/frontend/web/src/features/canvas/util/copyBlobToClipboard.ts rename to invokeai/frontend/web/src/features/system/util/copyBlobToClipboard.ts index e944e766b5..cf59f2a687 100644 --- a/invokeai/frontend/web/src/features/canvas/util/copyBlobToClipboard.ts +++ b/invokeai/frontend/web/src/features/system/util/copyBlobToClipboard.ts @@ -1,10 +1,13 @@ /** * Copies a blob to the clipboard by calling navigator.clipboard.write(). */ -export const copyBlobToClipboard = (blob: Blob) => { +export const copyBlobToClipboard = ( + blob: Promise, + type = 'image/png' +) => { navigator.clipboard.write([ new ClipboardItem({ - [blob.type]: blob, + [type]: blob, }), ]); }; diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx index 7af1a4d674..b18a069cfa 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingGalleryButton.tsx @@ -37,16 +37,14 @@ const FloatingGalleryButton = ({ } sx={{ p: 0, px: 3, h: 48, - borderStartEndRadius: 0, - borderEndEndRadius: 0, - shadow: '2xl', + borderEndRadius: 0, }} /> diff --git a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx index aa24896591..da4d409943 100644 --- a/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx +++ b/invokeai/frontend/web/src/features/ui/components/FloatingParametersPanelButtons.tsx @@ -1,7 +1,8 @@ -import { ChakraProps, Flex, Portal } from '@chakra-ui/react'; +import { ButtonGroup, ChakraProps, Flex, Portal } from '@chakra-ui/react'; import IAIIconButton from 'common/components/IAIIconButton'; -import CancelButton from 'features/parameters/components/ProcessButtons/CancelButton'; -import InvokeButton from 'features/parameters/components/ProcessButtons/InvokeButton'; +import CancelCurrentQueueItemButton from 'features/queue/components/CancelCurrentQueueItemButton'; +import ClearQueueButton from 'features/queue/components/ClearQueueButton'; +import QueueBackButton from 'features/queue/components/QueueBackButton'; import { RefObject, memo } from 'react'; import { useTranslation } from 'react-i18next'; @@ -9,9 +10,8 @@ import { FaSlidersH } from 'react-icons/fa'; import { ImperativePanelHandle } from 'react-resizable-panels'; const floatingButtonStyles: ChakraProps['sx'] = { - borderStartStartRadius: 0, - borderEndStartRadius: 0, - shadow: '2xl', + borderStartRadius: 0, + flexGrow: 1, }; type Props = { @@ -43,16 +43,23 @@ const FloatingSidePanelButtons = ({ insetInlineStart="5.13rem" direction="column" gap={2} + h={48} > - } - /> - - + + } + /> + + + +
); diff --git a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx index 0f5a8d92ff..fb5756b121 100644 --- a/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx +++ b/invokeai/frontend/web/src/features/ui/components/InvokeTabs.tsx @@ -10,7 +10,6 @@ import { VisuallyHidden, } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; -import AuxiliaryProgressIndicator from 'app/components/AuxiliaryProgressIndicator'; import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import ImageGalleryContent from 'features/gallery/components/ImageGalleryContent'; @@ -22,8 +21,9 @@ import { isEqual } from 'lodash-es'; import { MouseEvent, ReactNode, memo, useCallback, useMemo } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; -import { FaCube, FaFont, FaImage } from 'react-icons/fa'; -import { MdDeviceHub, MdGridOn } from 'react-icons/md'; +import { FaCube, FaFont, FaImage, FaStream } from 'react-icons/fa'; +import { FaCircleNodes } from 'react-icons/fa6'; +import { MdGridOn } from 'react-icons/md'; import { Panel, PanelGroup } from 'react-resizable-panels'; import { usePanel } from '../hooks/usePanel'; import { usePanelStorage } from '../hooks/usePanelStorage'; @@ -37,6 +37,7 @@ import ParametersPanel from './ParametersPanel'; import ImageTab from './tabs/ImageToImage/ImageToImageTab'; import ModelManagerTab from './tabs/ModelManager/ModelManagerTab'; import NodesTab from './tabs/Nodes/NodesTab'; +import QueueTab from './tabs/Queue/QueueTab'; import ResizeHandle from './tabs/ResizeHandle'; import TextToImageTab from './tabs/TextToImage/TextToImageTab'; import UnifiedCanvasTab from './tabs/UnifiedCanvas/UnifiedCanvasTab'; @@ -70,7 +71,9 @@ const tabs: InvokeTabInfo[] = [ { id: 'nodes', translationKey: 'common.nodes', - icon: , + icon: ( + + ), content: , }, { @@ -79,6 +82,12 @@ const tabs: InvokeTabInfo[] = [ icon: , content: , }, + { + id: 'queue', + translationKey: 'queue.queue', + icon: , + content: , + }, ]; const enabledTabsSelector = createSelector( @@ -97,8 +106,8 @@ const SIDE_PANEL_MIN_SIZE_PX = 448; const MAIN_PANEL_MIN_SIZE_PX = 448; const GALLERY_PANEL_MIN_SIZE_PX = 360; -export const NO_GALLERY_TABS: InvokeTabName[] = ['modelManager']; -export const NO_SIDE_PANEL_TABS: InvokeTabName[] = ['modelManager']; +export const NO_GALLERY_TABS: InvokeTabName[] = ['modelManager', 'queue']; +export const NO_SIDE_PANEL_TABS: InvokeTabName[] = ['modelManager', 'queue']; const InvokeTabs = () => { const activeTab = useAppSelector(activeTabIndexSelector); @@ -225,7 +234,6 @@ const InvokeTabs = () => { > {tabs} - { { <> { gap: 2, }} > - + { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const ImageToImageTabCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - - ); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddCheckpoint.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddCheckpoint.tsx index 85dfb0ed8b..94a65a9122 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddCheckpoint.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddCheckpoint.tsx @@ -55,7 +55,9 @@ export default function AdvancedAddCheckpoint( dispatch( addToast( makeToast({ - title: `Model Added: ${values.model_name}`, + title: t('modelManager.modelAdded', { + modelName: values.model_name, + }), status: 'success', }) ) @@ -72,7 +74,7 @@ export default function AdvancedAddCheckpoint( dispatch( addToast( makeToast({ - title: 'Model Add Failed', + title: t('toast.modelAddFailed'), status: 'error', }) ) @@ -90,15 +92,16 @@ export default function AdvancedAddCheckpoint( > { @@ -114,14 +117,15 @@ export default function AdvancedAddCheckpoint( }} /> @@ -134,14 +138,14 @@ export default function AdvancedAddCheckpoint( ) : ( )} setUseCustomConfig(!useCustomConfig)} - label="Use Custom Config" + label={t('modelManager.useCustomConfig')} /> {t('modelManager.addModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddDiffusers.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddDiffusers.tsx index 181a6f4234..7c22b4b2ac 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddDiffusers.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddDiffusers.tsx @@ -47,7 +47,9 @@ export default function AdvancedAddDiffusers(props: AdvancedAddDiffusersProps) { dispatch( addToast( makeToast({ - title: `Model Added: ${values.model_name}`, + title: t('modelManager.modelAdded', { + modelName: values.model_name, + }), status: 'success', }) ) @@ -63,7 +65,7 @@ export default function AdvancedAddDiffusers(props: AdvancedAddDiffusersProps) { dispatch( addToast( makeToast({ - title: 'Model Add Failed', + title: t('toast.modelAddFailed'), status: 'error', }) ) @@ -82,16 +84,17 @@ export default function AdvancedAddDiffusers(props: AdvancedAddDiffusersProps) { { if (advancedAddDiffusersForm.values['model_name'] === '') { @@ -106,14 +109,15 @@ export default function AdvancedAddDiffusers(props: AdvancedAddDiffusersProps) { }} /> diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddModels.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddModels.tsx index a2a12b7f00..b78d0466c0 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddModels.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/AdvancedAddModels.tsx @@ -4,6 +4,7 @@ import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { useState } from 'react'; import AdvancedAddCheckpoint from './AdvancedAddCheckpoint'; import AdvancedAddDiffusers from './AdvancedAddDiffusers'; +import { useTranslation } from 'react-i18next'; export const advancedAddModeData: SelectItem[] = [ { label: 'Diffusers', value: 'diffusers' }, @@ -16,10 +17,12 @@ export default function AdvancedAddModels() { const [advancedAddMode, setAdvancedAddMode] = useState('diffusers'); + const { t } = useTranslation(); + return ( { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/FoundModelsList.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/FoundModelsList.tsx index a44a747438..a2e6158515 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/FoundModelsList.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/FoundModelsList.tsx @@ -77,7 +77,7 @@ export default function FoundModelsList() { dispatch( addToast( makeToast({ - title: 'Failed To Add Model', + title: t('toast.modelAddFailed'), status: 'error', }) ) @@ -85,7 +85,7 @@ export default function FoundModelsList() { } }); }, - [dispatch, importMainModel] + [dispatch, importMainModel, t] ); const handleSearchFilter = useCallback((e: ChangeEvent) => { @@ -137,13 +137,13 @@ export default function FoundModelsList() { onClick={quickAddHandler} isLoading={isLoading} > - Quick Add + {t('modelManager.quickAdd')} dispatch(setAdvancedAddScanModel(model))} isLoading={isLoading} > - Advanced + {t('modelManager.advanced')} ) : ( @@ -189,7 +189,7 @@ export default function FoundModelsList() { }, }} > - No Models Found + {t('modelManager.noModels')} ); } diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/ScanAdvancedAddModels.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/ScanAdvancedAddModels.tsx index 997341279d..615c76b71e 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/ScanAdvancedAddModels.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/ScanAdvancedAddModels.tsx @@ -10,12 +10,15 @@ import { setAdvancedAddScanModel } from '../../store/modelManagerSlice'; import AdvancedAddCheckpoint from './AdvancedAddCheckpoint'; import AdvancedAddDiffusers from './AdvancedAddDiffusers'; import { ManualAddMode, advancedAddModeData } from './AdvancedAddModels'; +import { useTranslation } from 'react-i18next'; export default function ScanAdvancedAddModels() { const advancedAddScanModel = useAppSelector( (state: RootState) => state.modelmanager.advancedAddScanModel ); + const { t } = useTranslation(); + const [advancedAddMode, setAdvancedAddMode] = useState('diffusers'); @@ -64,13 +67,13 @@ export default function ScanAdvancedAddModels() { } - aria-label="Close Advanced" + aria-label={t('modelManager.closeAdvanced')} onClick={() => dispatch(setAdvancedAddScanModel(null))} size="sm" /> { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx index cb0ce627a0..b2845f0e85 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/AddModelsPanel/SimpleAddModels.tsx @@ -1,16 +1,14 @@ import { Flex } from '@chakra-ui/react'; -// import { addNewModel } from 'app/socketio/actions'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import { useTranslation } from 'react-i18next'; import { SelectItem } from '@mantine/core'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { RootState } from 'app/store/store'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import IAIMantineSelect from 'common/components/IAIMantineSelect'; import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; import { useImportMainModelsMutation } from 'services/api/endpoints/models'; const predictionSelectData: SelectItem[] = [ @@ -29,10 +27,6 @@ export default function SimpleAddModels() { const dispatch = useAppDispatch(); const { t } = useTranslation(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const [importMainModel, { isLoading }] = useImportMainModelsMutation(); const addModelForm = useForm({ @@ -55,7 +49,7 @@ export default function SimpleAddModels() { dispatch( addToast( makeToast({ - title: 'Model Added', + title: t('toast.modelAddedSimple'), status: 'success', }) ) @@ -64,7 +58,6 @@ export default function SimpleAddModels() { }) .catch((error) => { if (error) { - console.log(error); dispatch( addToast( makeToast({ @@ -84,22 +77,18 @@ export default function SimpleAddModels() { > - + {t('modelManager.addModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx index 6c3ebf2530..f4943d3ce1 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/CheckpointModelEdit.tsx @@ -1,11 +1,10 @@ import { Badge, Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import IAISimpleCheckbox from 'common/components/IAISimpleCheckbox'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { useCallback, useEffect, useState } from 'react'; @@ -26,8 +25,6 @@ type CheckpointModelEditProps = { }; export default function CheckpointModelEdit(props: CheckpointModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation(); @@ -189,11 +186,7 @@ export default function CheckpointModelEdit(props: CheckpointModelEditProps) { /> - + {t('modelManager.updateModel')} diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx index 39ba4bc4ce..67ec1f53db 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/DiffusersModelEdit.tsx @@ -1,12 +1,11 @@ import { Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; import { MODEL_TYPE_MAP } from 'features/parameters/types/constants'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { @@ -22,8 +21,6 @@ type DiffusersModelEditProps = { }; export default function DiffusersModelEdit(props: DiffusersModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateMainModel, { isLoading }] = useUpdateMainModelsMutation(); @@ -134,11 +131,7 @@ export default function DiffusersModelEdit(props: DiffusersModelEditProps) { label={t('modelManager.vaeLocation')} {...diffusersEditForm.getInputProps('vae')} /> - + {t('modelManager.updateModel')}
diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx index c87550c7d1..284ce95b3a 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/LoRAModelEdit.tsx @@ -1,17 +1,16 @@ import { Divider, Flex, Text } from '@chakra-ui/react'; import { useForm } from '@mantine/form'; -import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIButton from 'common/components/IAIButton'; import IAIMantineTextInput from 'common/components/IAIMantineInput'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; -import { addToast } from 'features/system/store/systemSlice'; -import { useCallback } from 'react'; -import { useTranslation } from 'react-i18next'; import { LORA_MODEL_FORMAT_MAP, MODEL_TYPE_MAP, } from 'features/parameters/types/constants'; +import { addToast } from 'features/system/store/systemSlice'; +import { makeToast } from 'features/system/util/makeToast'; +import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; import { LoRAModelConfigEntity, useUpdateLoRAModelsMutation, @@ -24,8 +23,6 @@ type LoRAModelEditProps = { }; export default function LoRAModelEdit(props: LoRAModelEditProps) { - const isBusy = useAppSelector(selectIsBusy); - const { model } = props; const [updateLoRAModel, { isLoading }] = useUpdateLoRAModelsMutation(); @@ -123,11 +120,7 @@ export default function LoRAModelEdit(props: LoRAModelEditProps) { label={t('modelManager.modelLocation')} {...loraEditForm.getInputProps('path')} /> - + {t('modelManager.updateModel')}
diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx index 396ece2063..1e744e44ac 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/ModelManager/subpanels/ModelManagerPanel/ModelListItem.tsx @@ -1,11 +1,10 @@ import { DeleteIcon } from '@chakra-ui/icons'; import { Badge, Flex, Text, Tooltip } from '@chakra-ui/react'; import { makeToast } from 'features/system/util/makeToast'; -import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; +import { useAppDispatch } from 'app/store/storeHooks'; import IAIAlertDialog from 'common/components/IAIAlertDialog'; import IAIButton from 'common/components/IAIButton'; import IAIIconButton from 'common/components/IAIIconButton'; -import { selectIsBusy } from 'features/system/store/systemSelectors'; import { addToast } from 'features/system/store/systemSlice'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; @@ -25,7 +24,6 @@ type ModelListItemProps = { }; export default function ModelListItem(props: ModelListItemProps) { - const isBusy = useAppSelector(selectIsBusy); const { t } = useTranslation(); const dispatch = useAppDispatch(); const [deleteMainModel] = useDeleteMainModelsMutation(); @@ -129,7 +127,6 @@ export default function ModelListItem(props: ModelListItemProps) { } aria-label={t('modelManager.deleteConfig')} - isDisabled={isBusy} colorScheme="error" /> } diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx new file mode 100644 index 0000000000..42dd5ee459 --- /dev/null +++ b/invokeai/frontend/web/src/features/ui/components/tabs/Queue/QueueTab.tsx @@ -0,0 +1,8 @@ +import QueueTabContent from 'features/queue/components/QueueTabContent'; +import { memo } from 'react'; + +const QueueTab = () => { + return ; +}; + +export default memo(QueueTab); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx index 152efd3e17..ea6ef03e09 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/TextToImage/TextToImageTabCoreParameters.tsx @@ -1,8 +1,5 @@ import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import ParamCFGScale from 'features/parameters/components/Parameters/Core/ParamCFGScale'; import ParamIterations from 'features/parameters/components/Parameters/Core/ParamIterations'; @@ -10,26 +7,19 @@ import ParamModelandVAEandScheduler from 'features/parameters/components/Paramet import ParamSize from 'features/parameters/components/Parameters/Core/ParamSize'; import ParamSteps from 'features/parameters/components/Parameters/Core/ParamSteps'; import ParamSeedFull from 'features/parameters/components/Parameters/Seed/ParamSeedFull'; +import { useCoreParametersCollapseLabel } from 'features/parameters/util/useCoreParametersCollapseLabel'; import { memo } from 'react'; -const selector = createSelector( - stateSelector, - ({ ui, generation }) => { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const TextToImageTabCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - - ); diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx index a68794a930..a865bcd0de 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasCopyToClipboard.tsx @@ -1,9 +1,7 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasCopiedToClipboard } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useCopyImageToClipboard } from 'features/ui/hooks/useCopyImageToClipboard'; import { useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; @@ -12,13 +10,8 @@ import { FaCopy } from 'react-icons/fa'; export default function UnifiedCanvasCopyToClipboard() { const isStaging = useAppSelector(isStagingSelector); - const canvasBaseLayer = getCanvasBaseLayer(); const { isClipboardAPIAvailable } = useCopyImageToClipboard(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -31,7 +24,7 @@ export default function UnifiedCanvasCopyToClipboard() { enabled: () => !isStaging && isClipboardAPIAvailable, preventDefault: true, }, - [canvasBaseLayer, isProcessing, isClipboardAPIAvailable] + [isClipboardAPIAvailable] ); const handleCopyImageToClipboard = useCallback(() => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx index e836766f1a..66c378e068 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasMergeVisible.tsx @@ -1,21 +1,14 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasMerged } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { FaLayerGroup } from 'react-icons/fa'; - export default function UnifiedCanvasMergeVisible() { const dispatch = useAppDispatch(); const { t } = useTranslation(); - const canvasBaseLayer = getCanvasBaseLayer(); const isStaging = useAppSelector(isStagingSelector); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); useHotkeys( ['shift+m'], @@ -26,7 +19,7 @@ export default function UnifiedCanvasMergeVisible() { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [] ); const handleMergeVisible = () => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx index 78b57181e6..31617a4dbe 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasSaveToGallery.tsx @@ -1,20 +1,13 @@ -import { RootState } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; import { canvasSavedToGallery } from 'features/canvas/store/actions'; import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; -import { getCanvasBaseLayer } from 'features/canvas/util/konvaInstanceProvider'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; import { FaSave } from 'react-icons/fa'; export default function UnifiedCanvasSaveToGallery() { const isStaging = useAppSelector(isStagingSelector); - const canvasBaseLayer = getCanvasBaseLayer(); - const isProcessing = useAppSelector( - (state: RootState) => state.system.isProcessing - ); - const dispatch = useAppDispatch(); const { t } = useTranslation(); @@ -27,7 +20,7 @@ export default function UnifiedCanvasSaveToGallery() { enabled: () => !isStaging, preventDefault: true, }, - [canvasBaseLayer, isProcessing] + [] ); const handleSaveToGallery = () => { diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx index a11f40a257..59a0890960 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasBeta/UnifiedCanvasToolbar/UnifiedCanvasToolSelect.tsx @@ -1,19 +1,16 @@ import { ButtonGroup, Flex } from '@chakra-ui/react'; import { createSelector } from '@reduxjs/toolkit'; +import { stateSelector } from 'app/store/store'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import IAIIconButton from 'common/components/IAIIconButton'; -import { - canvasSelector, - isStagingSelector, -} from 'features/canvas/store/canvasSelectors'; +import { isStagingSelector } from 'features/canvas/store/canvasSelectors'; import { addEraseRect, addFillRect, setTool, } from 'features/canvas/store/canvasSlice'; -import { systemSelector } from 'features/system/store/systemSelectors'; import { isEqual } from 'lodash-es'; -import { memo } from 'react'; +import { memo, useCallback } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { useTranslation } from 'react-i18next'; @@ -26,15 +23,13 @@ import { } from 'react-icons/fa'; export const selector = createSelector( - [canvasSelector, isStagingSelector, systemSelector], - (canvas, isStaging, system) => { - const { isProcessing } = system; + [stateSelector, isStagingSelector], + ({ canvas }, isStaging) => { const { tool } = canvas; return { tool, isStaging, - isProcessing, }; }, { @@ -107,11 +102,23 @@ const UnifiedCanvasToolSelect = () => { } ); - const handleSelectBrushTool = () => dispatch(setTool('brush')); - const handleSelectEraserTool = () => dispatch(setTool('eraser')); - const handleSelectColorPickerTool = () => dispatch(setTool('colorPicker')); - const handleFillRect = () => dispatch(addFillRect()); - const handleEraseBoundingBox = () => dispatch(addEraseRect()); + const handleSelectBrushTool = useCallback( + () => dispatch(setTool('brush')), + [dispatch] + ); + const handleSelectEraserTool = useCallback( + () => dispatch(setTool('eraser')), + [dispatch] + ); + const handleSelectColorPickerTool = useCallback( + () => dispatch(setTool('colorPicker')), + [dispatch] + ); + const handleFillRect = useCallback(() => dispatch(addFillRect()), [dispatch]); + const handleEraseBoundingBox = useCallback( + () => dispatch(addEraseRect()), + [dispatch] + ); return ( diff --git a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx index 36f7ff7320..c57a68ed62 100644 --- a/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx +++ b/invokeai/frontend/web/src/features/ui/components/tabs/UnifiedCanvas/UnifiedCanvasCoreParameters.tsx @@ -1,8 +1,5 @@ import { Box, Flex } from '@chakra-ui/react'; -import { createSelector } from '@reduxjs/toolkit'; -import { stateSelector } from 'app/store/store'; import { useAppSelector } from 'app/store/storeHooks'; -import { defaultSelectorOptions } from 'app/store/util/defaultMemoizeOptions'; import IAICollapse from 'common/components/IAICollapse'; import ParamBoundingBoxSize from 'features/parameters/components/Parameters/Canvas/BoundingBox/ParamBoundingBoxSize'; import ParamCFGScale from 'features/parameters/components/Parameters/Core/ParamCFGScale'; @@ -11,26 +8,19 @@ import ParamModelandVAEandScheduler from 'features/parameters/components/Paramet import ParamSteps from 'features/parameters/components/Parameters/Core/ParamSteps'; import ImageToImageStrength from 'features/parameters/components/Parameters/ImageToImage/ImageToImageStrength'; import ParamSeedFull from 'features/parameters/components/Parameters/Seed/ParamSeedFull'; +import { useCoreParametersCollapseLabel } from 'features/parameters/util/useCoreParametersCollapseLabel'; import { memo } from 'react'; -const selector = createSelector( - stateSelector, - ({ ui, generation }) => { - const { shouldUseSliders } = ui; - const { shouldRandomizeSeed } = generation; - - const activeLabel = !shouldRandomizeSeed ? 'Manual Seed' : undefined; - - return { shouldUseSliders, activeLabel }; - }, - defaultSelectorOptions -); - const UnifiedCanvasCoreParameters = () => { - const { shouldUseSliders, activeLabel } = useAppSelector(selector); + const shouldUseSliders = useAppSelector((state) => state.ui.shouldUseSliders); + const { iterationsAndSeedLabel } = useCoreParametersCollapseLabel(); return ( - + { - ); diff --git a/invokeai/frontend/web/src/features/ui/hooks/useCopyImageToClipboard.ts b/invokeai/frontend/web/src/features/ui/hooks/useCopyImageToClipboard.ts index 314abad081..cefbf3d14e 100644 --- a/invokeai/frontend/web/src/features/ui/hooks/useCopyImageToClipboard.ts +++ b/invokeai/frontend/web/src/features/ui/hooks/useCopyImageToClipboard.ts @@ -1,6 +1,7 @@ import { useAppToaster } from 'app/components/Toaster'; import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; +import { copyBlobToClipboard } from 'features/system/util/copyBlobToClipboard'; export const useCopyImageToClipboard = () => { const toaster = useAppToaster(); @@ -22,13 +23,13 @@ export const useCopyImageToClipboard = () => { }); } try { - const response = await fetch(image_url); - const blob = await response.blob(); - await navigator.clipboard.write([ - new ClipboardItem({ - [blob.type]: blob, - }), - ]); + const getImageBlob = async () => { + const response = await fetch(image_url); + return await response.blob(); + }; + + copyBlobToClipboard(getImageBlob()); + toaster({ title: t('toast.imageCopied'), status: 'success', diff --git a/invokeai/frontend/web/src/features/ui/store/tabMap.ts b/invokeai/frontend/web/src/features/ui/store/tabMap.ts index 0cae8eac43..f4abd17203 100644 --- a/invokeai/frontend/web/src/features/ui/store/tabMap.ts +++ b/invokeai/frontend/web/src/features/ui/store/tabMap.ts @@ -4,7 +4,7 @@ export const tabMap = [ 'unifiedCanvas', 'nodes', 'modelManager', - 'batch', + 'queue', ] as const; export type InvokeTabName = (typeof tabMap)[number]; diff --git a/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts b/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts index 2d3537998d..ffe2afd2f6 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/appInfo.ts @@ -1,4 +1,5 @@ import { api } from '..'; +import { paths } from '../schema'; import { AppConfig, AppVersion } from '../types'; export const appInfoApi = api.injectEndpoints({ @@ -19,7 +20,45 @@ export const appInfoApi = api.injectEndpoints({ providesTags: ['AppConfig'], keepUnusedDataFor: 86400000, // 1 day }), + getInvocationCacheStatus: build.query< + paths['/api/v1/app/invocation_cache/status']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `app/invocation_cache/status`, + method: 'GET', + }), + providesTags: ['InvocationCacheStatus'], + }), + clearInvocationCache: build.mutation({ + query: () => ({ + url: `app/invocation_cache`, + method: 'DELETE', + }), + invalidatesTags: ['InvocationCacheStatus'], + }), + enableInvocationCache: build.mutation({ + query: () => ({ + url: `app/invocation_cache/enable`, + method: 'PUT', + }), + invalidatesTags: ['InvocationCacheStatus'], + }), + disableInvocationCache: build.mutation({ + query: () => ({ + url: `app/invocation_cache/disable`, + method: 'PUT', + }), + invalidatesTags: ['InvocationCacheStatus'], + }), }), }); -export const { useGetAppVersionQuery, useGetAppConfigQuery } = appInfoApi; +export const { + useGetAppVersionQuery, + useGetAppConfigQuery, + useClearInvocationCacheMutation, + useDisableInvocationCacheMutation, + useEnableInvocationCacheMutation, + useGetInvocationCacheStatusQuery, +} = appInfoApi; diff --git a/invokeai/frontend/web/src/services/api/endpoints/boards.ts b/invokeai/frontend/web/src/services/api/endpoints/boards.ts index 82167dc7ba..53b3bfd59d 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/boards.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/boards.ts @@ -9,7 +9,7 @@ import { OffsetPaginatedResults_ImageDTO_, UpdateBoardArg, } from 'services/api/types'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; import { getListImagesUrl } from '../util'; export const boardsApi = api.injectEndpoints({ @@ -21,7 +21,7 @@ export const boardsApi = api.injectEndpoints({ query: (arg) => ({ url: 'boards/', params: arg }), providesTags: (result) => { // any list of boards - const tags: ApiFullTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; + const tags: ApiTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; if (result) { // and individual tags for each board @@ -44,7 +44,7 @@ export const boardsApi = api.injectEndpoints({ }), providesTags: (result) => { // any list of boards - const tags: ApiFullTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; + const tags: ApiTagDescription[] = [{ type: 'Board', id: LIST_TAG }]; if (result) { // and individual tags for each board diff --git a/invokeai/frontend/web/src/services/api/endpoints/images.ts b/invokeai/frontend/web/src/services/api/endpoints/images.ts index 6b04864815..e653a6ec3e 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/images.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/images.ts @@ -1,4 +1,5 @@ import { EntityState, Update } from '@reduxjs/toolkit'; +import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query'; import { PatchCollection } from '@reduxjs/toolkit/dist/query/core/buildThunks'; import { ASSETS_CATEGORIES, @@ -6,9 +7,14 @@ import { IMAGE_CATEGORIES, IMAGE_LIMIT, } from 'features/gallery/store/types'; +import { + ImageMetadataAndWorkflow, + zCoreMetadata, +} from 'features/nodes/types/types'; import { getMetadataAndWorkflowFromImageBlob } from 'features/nodes/util/getMetadataAndWorkflowFromImageBlob'; import { keyBy } from 'lodash-es'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; +import { $authToken, $projectId } from '../client'; import { components, paths } from '../schema'; import { DeleteBoardResult, @@ -27,9 +33,6 @@ import { imagesSelectors, } from '../util'; import { boardsApi } from './boards'; -import { ImageMetadataAndWorkflow } from 'features/nodes/types/types'; -import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query'; -import { $authToken, $projectId } from '../client'; export const imagesApi = api.injectEndpoints({ endpoints: (build) => ({ @@ -117,39 +120,65 @@ export const imagesApi = api.injectEndpoints({ ], keepUnusedDataFor: 86400, // 24 hours }), - getImageMetadataFromFile: build.query({ - queryFn: async (args: ImageDTO, api, extraOptions) => { - const authToken = $authToken.get(); - const projectId = $projectId.get(); - const customBaseQuery = fetchBaseQuery({ - baseUrl: '', - prepareHeaders: (headers) => { - if (authToken) { - headers.set('Authorization', `Bearer ${authToken}`); - } - if (projectId) { - headers.set('project-id', projectId); + getImageMetadataFromFile: build.query< + ImageMetadataAndWorkflow, + { image: ImageDTO; shouldFetchMetadataFromApi: boolean } + >({ + queryFn: async ( + args: { image: ImageDTO; shouldFetchMetadataFromApi: boolean }, + api, + extraOptions, + fetchWithBaseQuery + ) => { + if (args.shouldFetchMetadataFromApi) { + let metadata; + const metadataResponse = await fetchWithBaseQuery( + `images/i/${args.image.image_name}/metadata` + ); + if (metadataResponse.data) { + const metadataResult = zCoreMetadata.safeParse( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (metadataResponse.data as any)?.metadata + ); + if (metadataResult.success) { + metadata = metadataResult.data; } + } + return { data: { metadata } }; + } else { + const authToken = $authToken.get(); + const projectId = $projectId.get(); + const customBaseQuery = fetchBaseQuery({ + baseUrl: '', + prepareHeaders: (headers) => { + if (authToken) { + headers.set('Authorization', `Bearer ${authToken}`); + } + if (projectId) { + headers.set('project-id', projectId); + } - return headers; - }, - responseHandler: async (res) => { - return await res.blob(); - }, - }); + return headers; + }, + responseHandler: async (res) => { + return await res.blob(); + }, + }); - const response = await customBaseQuery( - args.image_url, - api, - extraOptions - ); - const data = await getMetadataAndWorkflowFromImageBlob( - response.data as Blob - ); - return { data }; + const response = await customBaseQuery( + args.image.image_url, + api, + extraOptions + ); + const data = await getMetadataAndWorkflowFromImageBlob( + response.data as Blob + ); + + return { data }; + } }, - providesTags: (result, error, image_dto) => [ - { type: 'ImageMetadataFromFile', id: image_dto.image_name }, + providesTags: (result, error, { image }) => [ + { type: 'ImageMetadataFromFile', id: image.image_name }, ], keepUnusedDataFor: 86400, // 24 hours }), @@ -1281,7 +1310,7 @@ export const imagesApi = api.injectEndpoints({ }), invalidatesTags: (result, error, { imageDTOs }) => { const touchedBoardIds: string[] = []; - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'BoardImagesTotal', id: 'none' }, { type: 'BoardAssetsTotal', id: 'none' }, ]; diff --git a/invokeai/frontend/web/src/services/api/endpoints/models.ts b/invokeai/frontend/web/src/services/api/endpoints/models.ts index 9be8bd13f6..41c0dee7fd 100644 --- a/invokeai/frontend/web/src/services/api/endpoints/models.ts +++ b/invokeai/frontend/web/src/services/api/endpoints/models.ts @@ -5,6 +5,7 @@ import { BaseModelType, CheckpointModelConfig, ControlNetModelConfig, + IPAdapterModelConfig, DiffusersModelConfig, ImportModelConfig, LoRAModelConfig, @@ -17,7 +18,7 @@ import { } from 'services/api/types'; import queryString from 'query-string'; -import { ApiFullTagDescription, LIST_TAG, api } from '..'; +import { ApiTagDescription, LIST_TAG, api } from '..'; import { operations, paths } from '../schema'; export type DiffusersModelConfigEntity = DiffusersModelConfig & { id: string }; @@ -36,6 +37,10 @@ export type ControlNetModelConfigEntity = ControlNetModelConfig & { id: string; }; +export type IPAdapterModelConfigEntity = IPAdapterModelConfig & { + id: string; +}; + export type TextualInversionModelConfigEntity = TextualInversionModelConfig & { id: string; }; @@ -47,6 +52,7 @@ type AnyModelConfigEntity = | OnnxModelConfigEntity | LoRAModelConfigEntity | ControlNetModelConfigEntity + | IPAdapterModelConfigEntity | TextualInversionModelConfigEntity | VaeModelConfigEntity; @@ -128,13 +134,17 @@ export const mainModelsAdapter = createEntityAdapter({ const onnxModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), }); -const loraModelsAdapter = createEntityAdapter({ +export const loraModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), }); export const controlNetModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), }); +export const ipAdapterModelsAdapter = + createEntityAdapter({ + sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), + }); export const textualInversionModelsAdapter = createEntityAdapter({ sortComparer: (a, b) => a.model_name.localeCompare(b.model_name), @@ -179,9 +189,7 @@ export const modelsApi = api.injectEndpoints({ return `models/?${query}`; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'OnnxModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'OnnxModel', id: LIST_TAG }]; if (result) { tags.push( @@ -218,9 +226,7 @@ export const modelsApi = api.injectEndpoints({ return `models/?${query}`; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'MainModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'MainModel', id: LIST_TAG }]; if (result) { tags.push( @@ -354,9 +360,7 @@ export const modelsApi = api.injectEndpoints({ getLoRAModels: build.query, void>({ query: () => ({ url: 'models/', params: { model_type: 'lora' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'LoRAModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'LoRAModel', id: LIST_TAG }]; if (result) { tags.push( @@ -410,7 +414,7 @@ export const modelsApi = api.injectEndpoints({ >({ query: () => ({ url: 'models/', params: { model_type: 'controlnet' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'ControlNetModel', id: LIST_TAG }, ]; @@ -435,12 +439,41 @@ export const modelsApi = api.injectEndpoints({ ); }, }), + getIPAdapterModels: build.query< + EntityState, + void + >({ + query: () => ({ url: 'models/', params: { model_type: 'ip_adapter' } }), + providesTags: (result) => { + const tags: ApiTagDescription[] = [ + { type: 'IPAdapterModel', id: LIST_TAG }, + ]; + + if (result) { + tags.push( + ...result.ids.map((id) => ({ + type: 'IPAdapterModel' as const, + id, + })) + ); + } + + return tags; + }, + transformResponse: (response: { models: IPAdapterModelConfig[] }) => { + const entities = createModelEntities( + response.models + ); + return ipAdapterModelsAdapter.setAll( + ipAdapterModelsAdapter.getInitialState(), + entities + ); + }, + }), getVaeModels: build.query, void>({ query: () => ({ url: 'models/', params: { model_type: 'vae' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ - { type: 'VaeModel', id: LIST_TAG }, - ]; + const tags: ApiTagDescription[] = [{ type: 'VaeModel', id: LIST_TAG }]; if (result) { tags.push( @@ -469,7 +502,7 @@ export const modelsApi = api.injectEndpoints({ >({ query: () => ({ url: 'models/', params: { model_type: 'embedding' } }), providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'TextualInversionModel', id: LIST_TAG }, ]; @@ -504,7 +537,7 @@ export const modelsApi = api.injectEndpoints({ }; }, providesTags: (result) => { - const tags: ApiFullTagDescription[] = [ + const tags: ApiTagDescription[] = [ { type: 'ScannedModels', id: LIST_TAG }, ]; @@ -533,6 +566,7 @@ export const { useGetMainModelsQuery, useGetOnnxModelsQuery, useGetControlNetModelsQuery, + useGetIPAdapterModelsQuery, useGetLoRAModelsQuery, useGetTextualInversionModelsQuery, useGetVaeModelsQuery, diff --git a/invokeai/frontend/web/src/services/api/endpoints/queue.ts b/invokeai/frontend/web/src/services/api/endpoints/queue.ts new file mode 100644 index 0000000000..6d436b231f --- /dev/null +++ b/invokeai/frontend/web/src/services/api/endpoints/queue.ts @@ -0,0 +1,382 @@ +import { + AnyAction, + EntityState, + ThunkDispatch, + createEntityAdapter, +} from '@reduxjs/toolkit'; +import { $queueId } from 'features/queue/store/nanoStores'; +import { listParamsReset } from 'features/queue/store/queueSlice'; +import queryString from 'query-string'; +import { ApiTagDescription, api } from '..'; +import { components, paths } from '../schema'; + +const getListQueueItemsUrl = ( + queryArgs?: paths['/api/v1/queue/{queue_id}/list']['get']['parameters']['query'] +) => { + const query = queryArgs + ? queryString.stringify(queryArgs, { + arrayFormat: 'none', + }) + : undefined; + + if (query) { + return `queue/${$queueId.get()}/list?${query}`; + } + + return `queue/${$queueId.get()}/list`; +}; + +export type SessionQueueItemStatus = NonNullable< + NonNullable< + paths['/api/v1/queue/{queue_id}/list']['get']['parameters']['query'] + >['status'] +>; + +export const queueItemsAdapter = createEntityAdapter< + components['schemas']['SessionQueueItemDTO'] +>({ + selectId: (queueItem) => queueItem.item_id, + sortComparer: (a, b) => { + // Sort by priority in descending order + if (a.priority > b.priority) { + return -1; + } + if (a.priority < b.priority) { + return 1; + } + + // If priority is the same, sort by id in ascending order + if (a.item_id < b.item_id) { + return -1; + } + if (a.item_id > b.item_id) { + return 1; + } + + return 0; + }, +}); + +export const queueApi = api.injectEndpoints({ + endpoints: (build) => ({ + enqueueBatch: build.mutation< + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['responses']['201']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['requestBody']['content']['application/json'] + >({ + query: (arg) => ({ + url: `queue/${$queueId.get()}/enqueue_batch`, + body: arg, + method: 'POST', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + enqueueGraph: build.mutation< + paths['/api/v1/queue/{queue_id}/enqueue_graph']['post']['responses']['201']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/enqueue_graph']['post']['requestBody']['content']['application/json'] + >({ + query: (arg) => ({ + url: `queue/${$queueId.get()}/enqueue_graph`, + body: arg, + method: 'POST', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + resumeProcessor: build.mutation< + paths['/api/v1/queue/{queue_id}/processor/resume']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/processor/resume`, + method: 'PUT', + }), + invalidatesTags: ['CurrentSessionQueueItem', 'SessionQueueStatus'], + }), + pauseProcessor: build.mutation< + paths['/api/v1/queue/{queue_id}/processor/pause']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/processor/pause`, + method: 'PUT', + }), + invalidatesTags: ['CurrentSessionQueueItem', 'SessionQueueStatus'], + }), + pruneQueue: build.mutation< + paths['/api/v1/queue/{queue_id}/prune']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/prune`, + method: 'PUT', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'BatchStatus', + 'SessionQueueItem', + 'SessionQueueItemDTO', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + clearQueue: build.mutation< + paths['/api/v1/queue/{queue_id}/clear']['put']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/clear`, + method: 'PUT', + }), + invalidatesTags: [ + 'SessionQueueStatus', + 'SessionProcessorStatus', + 'BatchStatus', + 'CurrentSessionQueueItem', + 'NextSessionQueueItem', + 'SessionQueueItem', + 'SessionQueueItemDTO', + ], + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + }), + getCurrentQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/current']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/current`, + method: 'GET', + }), + providesTags: (result) => { + const tags: ApiTagDescription[] = ['CurrentSessionQueueItem']; + if (result) { + tags.push({ type: 'SessionQueueItem', id: result.item_id }); + } + return tags; + }, + }), + getNextQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/next']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/next`, + method: 'GET', + }), + providesTags: (result) => { + const tags: ApiTagDescription[] = ['NextSessionQueueItem']; + if (result) { + tags.push({ type: 'SessionQueueItem', id: result.item_id }); + } + return tags; + }, + }), + getQueueStatus: build.query< + paths['/api/v1/queue/{queue_id}/status']['get']['responses']['200']['content']['application/json'], + void + >({ + query: () => ({ + url: `queue/${$queueId.get()}/status`, + method: 'GET', + }), + + providesTags: ['SessionQueueStatus'], + }), + getBatchStatus: build.query< + paths['/api/v1/queue/{queue_id}/b/{batch_id}/status']['get']['responses']['200']['content']['application/json'], + { batch_id: string } + >({ + query: ({ batch_id }) => ({ + url: `queue/${$queueId.get()}/b/${batch_id}/status`, + method: 'GET', + }), + providesTags: (result) => { + if (!result) { + return []; + } + return [{ type: 'BatchStatus', id: result.batch_id }]; + }, + }), + getQueueItem: build.query< + paths['/api/v1/queue/{queue_id}/i/{item_id}']['get']['responses']['200']['content']['application/json'], + number + >({ + query: (item_id) => ({ + url: `queue/${$queueId.get()}/i/${item_id}`, + method: 'GET', + }), + providesTags: (result) => { + if (!result) { + return []; + } + return [{ type: 'SessionQueueItem', id: result.item_id }]; + }, + }), + cancelQueueItem: build.mutation< + paths['/api/v1/queue/{queue_id}/i/{item_id}/cancel']['put']['responses']['200']['content']['application/json'], + number + >({ + query: (item_id) => ({ + url: `queue/${$queueId.get()}/i/${item_id}/cancel`, + method: 'PUT', + }), + onQueryStarted: async (item_id, { dispatch, queryFulfilled }) => { + try { + const { data } = await queryFulfilled; + dispatch( + queueApi.util.updateQueryData( + 'listQueueItems', + undefined, + (draft) => { + queueItemsAdapter.updateOne(draft, { + id: item_id, + changes: { status: data.status }, + }); + } + ) + ); + } catch { + // no-op + } + }, + invalidatesTags: (result) => { + if (!result) { + return []; + } + return [ + { type: 'SessionQueueItem', id: result.item_id }, + { type: 'SessionQueueItemDTO', id: result.item_id }, + { type: 'BatchStatus', id: result.batch_id }, + ]; + }, + }), + cancelByBatchIds: build.mutation< + paths['/api/v1/queue/{queue_id}/cancel_by_batch_ids']['put']['responses']['200']['content']['application/json'], + paths['/api/v1/queue/{queue_id}/cancel_by_batch_ids']['put']['requestBody']['content']['application/json'] + >({ + query: (body) => ({ + url: `queue/${$queueId.get()}/cancel_by_batch_ids`, + method: 'PUT', + body, + }), + onQueryStarted: async (arg, api) => { + const { dispatch, queryFulfilled } = api; + try { + await queryFulfilled; + resetListQueryData(dispatch); + } catch { + // no-op + } + }, + invalidatesTags: [ + 'SessionQueueItem', + 'SessionQueueItemDTO', + 'BatchStatus', + ], + }), + listQueueItems: build.query< + EntityState & { + has_more: boolean; + }, + { cursor?: number; priority?: number } | undefined + >({ + query: (queryArgs) => ({ + url: getListQueueItemsUrl(queryArgs), + method: 'GET', + }), + serializeQueryArgs: () => { + return `queue/${$queueId.get()}/list`; + }, + transformResponse: ( + response: components['schemas']['CursorPaginatedResults_SessionQueueItemDTO_'] + ) => + queueItemsAdapter.addMany( + queueItemsAdapter.getInitialState({ + has_more: response.has_more, + }), + response.items + ), + merge: (cache, response) => { + queueItemsAdapter.addMany( + cache, + queueItemsAdapter.getSelectors().selectAll(response) + ); + cache.has_more = response.has_more; + }, + forceRefetch: ({ currentArg, previousArg }) => currentArg !== previousArg, + keepUnusedDataFor: 60 * 5, // 5 minutes + }), + }), +}); + +export const { + useCancelByBatchIdsMutation, + useEnqueueGraphMutation, + useEnqueueBatchMutation, + usePauseProcessorMutation, + useResumeProcessorMutation, + useClearQueueMutation, + usePruneQueueMutation, + useGetCurrentQueueItemQuery, + useGetQueueStatusQuery, + useGetQueueItemQuery, + useGetNextQueueItemQuery, + useListQueueItemsQuery, + useCancelQueueItemMutation, + useGetBatchStatusQuery, +} = queueApi; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const resetListQueryData = (dispatch: ThunkDispatch) => { + dispatch( + queueApi.util.updateQueryData('listQueueItems', undefined, (draft) => { + // remove all items from the list + queueItemsAdapter.removeAll(draft); + // reset the has_more flag + draft.has_more = false; + }) + ); + // set the list cursor and priority to undefined + dispatch(listParamsReset()); + // we have to manually kick off another query to get the first page and re-initialize the list + dispatch(queueApi.endpoints.listQueueItems.initiate(undefined)); +}; diff --git a/invokeai/frontend/web/src/services/api/endpoints/utilities.ts b/invokeai/frontend/web/src/services/api/endpoints/utilities.ts new file mode 100644 index 0000000000..4d2c77c188 --- /dev/null +++ b/invokeai/frontend/web/src/services/api/endpoints/utilities.ts @@ -0,0 +1,20 @@ +import { api } from '..'; +import { components } from '../schema'; + +export const utilitiesApi = api.injectEndpoints({ + endpoints: (build) => ({ + dynamicPrompts: build.query< + components['schemas']['DynamicPromptsResponse'], + { prompt: string; max_prompts: number } + >({ + query: (arg) => ({ + url: 'utilities/dynamicprompts', + body: arg, + method: 'POST', + }), + keepUnusedDataFor: 86400, // 24 hours + }), + }), +}); + +export const { useDynamicPromptsQuery } = utilitiesApi; diff --git a/invokeai/frontend/web/src/services/api/index.ts b/invokeai/frontend/web/src/services/api/index.ts index 325456901b..b39b11af29 100644 --- a/invokeai/frontend/web/src/services/api/index.ts +++ b/invokeai/frontend/web/src/services/api/index.ts @@ -1,4 +1,4 @@ -import { FullTagDescription } from '@reduxjs/toolkit/dist/query/endpointDefinitions'; +import { TagDescription } from '@reduxjs/toolkit/dist/query/endpointDefinitions'; import { BaseQueryFn, FetchArgs, @@ -18,10 +18,15 @@ export const tagTypes = [ 'ImageMetadata', 'ImageMetadataFromFile', 'Model', + 'SessionQueueItem', + 'SessionQueueItemDTO', + 'SessionQueueItemDTOList', + 'SessionQueueStatus', + 'SessionProcessorStatus', + 'BatchStatus', + 'InvocationCacheStatus', ]; -export type ApiFullTagDescription = FullTagDescription< - (typeof tagTypes)[number] ->; +export type ApiTagDescription = TagDescription<(typeof tagTypes)[number]>; export const LIST_TAG = 'LIST'; const dynamicBaseQuery: BaseQueryFn< diff --git a/invokeai/frontend/web/src/services/api/schema.d.ts b/invokeai/frontend/web/src/services/api/schema.d.ts index f4b87e15da..cc47c0766d 100644 --- a/invokeai/frontend/web/src/services/api/schema.d.ts +++ b/invokeai/frontend/web/src/services/api/schema.d.ts @@ -8,11 +8,13 @@ export type paths = { "/api/v1/sessions/": { /** * List Sessions + * @deprecated * @description Gets a list of sessions, optionally searching */ get: operations["list_sessions"]; /** * Create Session + * @deprecated * @description Creates a new session, optionally initializing it with an invocation graph */ post: operations["create_session"]; @@ -20,6 +22,7 @@ export type paths = { "/api/v1/sessions/{session_id}": { /** * Get Session + * @deprecated * @description Gets a session */ get: operations["get_session"]; @@ -27,6 +30,7 @@ export type paths = { "/api/v1/sessions/{session_id}/nodes": { /** * Add Node + * @deprecated * @description Adds a node to the graph */ post: operations["add_node"]; @@ -34,11 +38,13 @@ export type paths = { "/api/v1/sessions/{session_id}/nodes/{node_path}": { /** * Update Node + * @deprecated * @description Updates a node in the graph and removes all linked edges */ put: operations["update_node"]; /** * Delete Node + * @deprecated * @description Deletes a node in the graph and removes all linked edges */ delete: operations["delete_node"]; @@ -46,6 +52,7 @@ export type paths = { "/api/v1/sessions/{session_id}/edges": { /** * Add Edge + * @deprecated * @description Adds an edge to the graph */ post: operations["add_edge"]; @@ -53,6 +60,7 @@ export type paths = { "/api/v1/sessions/{session_id}/edges/{from_node_id}/{from_field}/{to_node_id}/{to_field}": { /** * Delete Edge + * @deprecated * @description Deletes an edge from the graph */ delete: operations["delete_edge"]; @@ -60,15 +68,24 @@ export type paths = { "/api/v1/sessions/{session_id}/invoke": { /** * Invoke Session + * @deprecated * @description Invokes a session */ put: operations["invoke_session"]; /** * Cancel Session Invoke + * @deprecated * @description Invokes a session */ delete: operations["cancel_session_invoke"]; }; + "/api/v1/utilities/dynamicprompts": { + /** + * Parse Dynamicprompts + * @description Creates a batch process + */ + post: operations["parse_dynamicprompts"]; + }; "/api/v1/models/": { /** * List Models @@ -300,6 +317,132 @@ export type paths = { */ post: operations["set_log_level"]; }; + "/api/v1/app/invocation_cache": { + /** + * Clear Invocation Cache + * @description Clears the invocation cache + */ + delete: operations["clear_invocation_cache"]; + }; + "/api/v1/app/invocation_cache/enable": { + /** + * Enable Invocation Cache + * @description Clears the invocation cache + */ + put: operations["enable_invocation_cache"]; + }; + "/api/v1/app/invocation_cache/disable": { + /** + * Disable Invocation Cache + * @description Clears the invocation cache + */ + put: operations["disable_invocation_cache"]; + }; + "/api/v1/app/invocation_cache/status": { + /** + * Get Invocation Cache Status + * @description Clears the invocation cache + */ + get: operations["get_invocation_cache_status"]; + }; + "/api/v1/queue/{queue_id}/enqueue_graph": { + /** + * Enqueue Graph + * @description Enqueues a graph for single execution. + */ + post: operations["enqueue_graph"]; + }; + "/api/v1/queue/{queue_id}/enqueue_batch": { + /** + * Enqueue Batch + * @description Processes a batch and enqueues the output graphs for execution. + */ + post: operations["enqueue_batch"]; + }; + "/api/v1/queue/{queue_id}/list": { + /** + * List Queue Items + * @description Gets all queue items (without graphs) + */ + get: operations["list_queue_items"]; + }; + "/api/v1/queue/{queue_id}/processor/resume": { + /** + * Resume + * @description Resumes session processor + */ + put: operations["resume"]; + }; + "/api/v1/queue/{queue_id}/processor/pause": { + /** + * Pause + * @description Pauses session processor + */ + put: operations["pause"]; + }; + "/api/v1/queue/{queue_id}/cancel_by_batch_ids": { + /** + * Cancel By Batch Ids + * @description Immediately cancels all queue items from the given batch ids + */ + put: operations["cancel_by_batch_ids"]; + }; + "/api/v1/queue/{queue_id}/clear": { + /** + * Clear + * @description Clears the queue entirely, immediately canceling the currently-executing session + */ + put: operations["clear"]; + }; + "/api/v1/queue/{queue_id}/prune": { + /** + * Prune + * @description Prunes all completed or errored queue items + */ + put: operations["prune"]; + }; + "/api/v1/queue/{queue_id}/current": { + /** + * Get Current Queue Item + * @description Gets the currently execution queue item + */ + get: operations["get_current_queue_item"]; + }; + "/api/v1/queue/{queue_id}/next": { + /** + * Get Next Queue Item + * @description Gets the next queue item, without executing it + */ + get: operations["get_next_queue_item"]; + }; + "/api/v1/queue/{queue_id}/status": { + /** + * Get Queue Status + * @description Gets the status of the session queue + */ + get: operations["get_queue_status"]; + }; + "/api/v1/queue/{queue_id}/b/{batch_id}/status": { + /** + * Get Batch Status + * @description Gets the status of the session queue + */ + get: operations["get_batch_status"]; + }; + "/api/v1/queue/{queue_id}/i/{item_id}": { + /** + * Get Queue Item + * @description Gets a queue item + */ + get: operations["get_queue_item"]; + }; + "/api/v1/queue/{queue_id}/i/{item_id}/cancel": { + /** + * Cancel Queue Item + * @description Deletes a queue item + */ + put: operations["cancel_queue_item"]; + }; }; export type webhooks = Record; @@ -340,6 +483,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -401,7 +550,92 @@ export type components = { * @description An enumeration. * @enum {string} */ - BaseModelType: "sd-1" | "sd-2" | "sdxl" | "sdxl-refiner"; + BaseModelType: "any" | "sd-1" | "sd-2" | "sdxl" | "sdxl-refiner"; + /** Batch */ + Batch: { + /** + * Batch Id + * @description The ID of the batch + */ + batch_id?: string; + /** + * Data + * @description The batch data collection. + */ + data?: components["schemas"]["BatchDatum"][][]; + /** + * Graph + * @description The graph to initialize the session with + */ + graph: components["schemas"]["Graph"]; + /** + * Runs + * @description Int stating how many times to iterate through all possible batch indices + * @default 1 + */ + runs: number; + }; + /** BatchDatum */ + BatchDatum: { + /** + * Node Path + * @description The node into which this batch data collection will be substituted. + */ + node_path: string; + /** + * Field Name + * @description The field into which this batch data collection will be substituted. + */ + field_name: string; + /** + * Items + * @description The list of items to substitute into the node/field. + */ + items?: (string | number)[]; + }; + /** BatchStatus */ + BatchStatus: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Batch Id + * @description The ID of the batch + */ + batch_id: string; + /** + * Pending + * @description Number of queue items with status 'pending' + */ + pending: number; + /** + * In Progress + * @description Number of queue items with status 'in_progress' + */ + in_progress: number; + /** + * Completed + * @description Number of queue items with status 'complete' + */ + completed: number; + /** + * Failed + * @description Number of queue items with status 'error' + */ + failed: number; + /** + * Canceled + * @description Number of queue items with status 'canceled' + */ + canceled: number; + /** + * Total + * @description Total number of queue items + */ + total: number; + }; /** * Blank Image * @description Creates a blank image and forwards it to the pipeline @@ -423,6 +657,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Width * @description The width of the image @@ -481,6 +721,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents A * @description Latents tensor @@ -558,6 +804,17 @@ export type components = { */ image_count: number; }; + /** + * BoardField + * @description A board primitive field + */ + BoardField: { + /** + * Board Id + * @description The id of the board + */ + board_id: string; + }; /** Body_add_image_to_board */ Body_add_image_to_board: { /** @@ -584,6 +841,14 @@ export type components = { */ image_names: string[]; }; + /** Body_cancel_by_batch_ids */ + Body_cancel_by_batch_ids: { + /** + * Batch Ids + * @description The list of batch_ids to cancel all queue items for + */ + batch_ids: string[]; + }; /** Body_delete_images_from_list */ Body_delete_images_from_list: { /** @@ -592,6 +857,34 @@ export type components = { */ image_names: string[]; }; + /** Body_enqueue_batch */ + Body_enqueue_batch: { + /** + * Batch + * @description Batch to process + */ + batch: components["schemas"]["Batch"]; + /** + * Prepend + * @description Whether or not to prepend this batch in the queue + * @default false + */ + prepend?: boolean; + }; + /** Body_enqueue_graph */ + Body_enqueue_graph: { + /** + * Graph + * @description The graph to enqueue + */ + graph: components["schemas"]["Graph"]; + /** + * Prepend + * @description Whether or not to prepend this batch in the queue + * @default false + */ + prepend?: boolean; + }; /** Body_import_model */ Body_import_model: { /** @@ -639,6 +932,26 @@ export type components = { */ merge_dest_directory?: string; }; + /** Body_parse_dynamicprompts */ + Body_parse_dynamicprompts: { + /** + * Prompt + * @description The prompt to parse with dynamicprompts + */ + prompt: string; + /** + * Max Prompts + * @description The max number of prompts to generate + * @default 1000 + */ + max_prompts?: number; + /** + * Combinatorial + * @description Whether to use the combinatorial generator + * @default true + */ + combinatorial?: boolean; + }; /** Body_remove_image_from_board */ Body_remove_image_from_board: { /** @@ -700,6 +1013,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of boolean values @@ -750,6 +1069,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The boolean value @@ -780,6 +1105,37 @@ export type components = { */ type: "boolean_output"; }; + /** CLIPVisionModelDiffusersConfig */ + CLIPVisionModelDiffusersConfig: { + /** Model Name */ + model_name: string; + base_model: components["schemas"]["BaseModelType"]; + /** + * Model Type + * @enum {string} + */ + model_type: "clip_vision"; + /** Path */ + path: string; + /** Description */ + description?: string; + /** + * Model Format + * @enum {string} + */ + model_format: "diffusers"; + error?: components["schemas"]["ModelError"]; + }; + /** CLIPVisionModelField */ + CLIPVisionModelField: { + /** + * Model Name + * @description Name of the CLIP Vision image encoder model + */ + model_name: string; + /** @description Base model (usually 'Any') */ + base_model: components["schemas"]["BaseModelType"]; + }; /** * CV2 Infill * @description Infills transparent areas of an image using OpenCV Inpainting @@ -801,6 +1157,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -813,6 +1175,17 @@ export type components = { */ type: "infill_cv2"; }; + /** + * CancelByBatchIDsResult + * @description Result of canceling by list of batch ids + */ + CancelByBatchIDsResult: { + /** + * Canceled + * @description Number of queue items canceled + */ + canceled: number; + }; /** * Canny Processor * @description Canny edge detection for ControlNet @@ -834,6 +1207,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -858,6 +1237,17 @@ export type components = { */ high_threshold?: number; }; + /** + * ClearResult + * @description Result of clearing the session queue + */ + ClearResult: { + /** + * Deleted + * @description Number of queue items deleted + */ + deleted: number; + }; /** ClipField */ ClipField: { /** @@ -902,6 +1292,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * CLIP * @description CLIP (tokenizer, text encoder, LoRAs) and skipped layer count @@ -958,6 +1354,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection Item * @description The item to collect (all inputs must be of the same type) @@ -1033,6 +1435,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to color-correct @@ -1108,6 +1516,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Color * @description The color value @@ -1126,6 +1540,51 @@ export type components = { */ type: "color"; }; + /** + * Color Map Processor + * @description Generates a color map from the provided image + */ + ColorMapImageProcessorInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Image + * @description The image to process + */ + image?: components["schemas"]["ImageField"]; + /** + * Type + * @default color_map_image_processor + * @enum {string} + */ + type: "color_map_image_processor"; + /** + * Color Map Tile Size + * @description Tile size + * @default 64 + */ + color_map_tile_size?: number; + }; /** * ColorOutput * @description Base class for nodes that output a single color @@ -1164,6 +1623,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -1203,6 +1668,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of conditioning tensors @@ -1264,6 +1735,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Conditioning * @description Conditioning tensor @@ -1314,6 +1791,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -1422,6 +1905,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The control image @@ -1553,7 +2042,7 @@ export type components = { /** * App Version * @description The version of InvokeAI used to generate this image - * @default 3.1.0 + * @default 3.1.1 */ app_version?: string; /** @@ -1615,7 +2104,7 @@ export type components = { * Clip Skip * @description The number of skipped CLIP layers */ - clip_skip: number; + clip_skip?: number; /** * Model * @description The main model used for inference @@ -1713,6 +2202,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Vae * @description VAE @@ -1747,6 +2242,27 @@ export type components = { */ type: "create_denoise_mask"; }; + /** + * CursorPaginatedResults[SessionQueueItemDTO] + * @description Cursor-paginated results + */ + CursorPaginatedResults_SessionQueueItemDTO_: { + /** + * Limit + * @description Limit of items to get + */ + limit: number; + /** + * Has More + * @description Whether there are more items available + */ + has_more: boolean; + /** + * Items + * @description Items + */ + items: components["schemas"]["SessionQueueItemDTO"][]; + }; /** * OpenCV Inpaint * @description Simple inpaint using opencv. @@ -1768,6 +2284,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to inpaint @@ -1829,6 +2351,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Noise * @description Noise tensor @@ -1865,11 +2393,13 @@ export type components = { * @enum {string} */ scheduler?: "ddim" | "ddpm" | "deis" | "lms" | "lms_k" | "pndm" | "heun" | "heun_k" | "euler" | "euler_k" | "euler_a" | "kdpm_2" | "kdpm_2_a" | "dpmpp_2s" | "dpmpp_2s_k" | "dpmpp_2m" | "dpmpp_2m_k" | "dpmpp_2m_sde" | "dpmpp_2m_sde_k" | "dpmpp_sde" | "dpmpp_sde_k" | "unipc"; - /** - * Control - * @description ControlNet(s) to apply - */ + /** Control */ control?: components["schemas"]["ControlField"] | components["schemas"]["ControlField"][]; + /** + * IP-Adapter + * @description IP-Adapter to apply + */ + ip_adapter?: components["schemas"]["IPAdapterField"]; /** * Latents * @description Latents tensor @@ -1956,6 +2486,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -1996,6 +2532,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Prompt * @description The prompt to parse with dynamicprompts @@ -2020,6 +2562,13 @@ export type components = { */ type: "dynamic_prompt"; }; + /** DynamicPromptsResponse */ + DynamicPromptsResponse: { + /** Prompts */ + prompts: string[]; + /** Error */ + error?: string; + }; /** * Upscale (RealESRGAN) * @description Upscales an image using RealESRGAN. @@ -2041,6 +2590,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The input image @@ -2086,6 +2641,62 @@ export type components = { */ field: string; }; + /** EnqueueBatchResult */ + EnqueueBatchResult: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Enqueued + * @description The total number of queue items enqueued + */ + enqueued: number; + /** + * Requested + * @description The total number of queue items requested to be enqueued + */ + requested: number; + /** + * Batch + * @description The batch that was enqueued + */ + batch: components["schemas"]["Batch"]; + /** + * Priority + * @description The priority of the enqueued batch + */ + priority: number; + }; + /** EnqueueGraphResult */ + EnqueueGraphResult: { + /** + * Enqueued + * @description The total number of queue items enqueued + */ + enqueued: number; + /** + * Requested + * @description The total number of queue items requested to be enqueued + */ + requested: number; + /** + * Batch + * @description The batch that was enqueued + */ + batch: components["schemas"]["Batch"]; + /** + * Priority + * @description The priority of the enqueued batch + */ + priority: number; + /** + * Queue Item + * @description The queue item that was enqueued + */ + queue_item: components["schemas"]["SessionQueueItemDTO"]; + }; /** * Float Collection Primitive * @description A collection of float primitive values @@ -2107,6 +2718,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of float values @@ -2157,6 +2774,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The float value @@ -2191,6 +2814,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The first value of the range @@ -2216,6 +2845,59 @@ export type components = { */ type: "float_range"; }; + /** + * Float Math + * @description Performs floating point math. + */ + FloatMathInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Operation + * @description The operation to perform + * @default ADD + * @enum {string} + */ + operation?: "ADD" | "SUB" | "MUL" | "DIV" | "EXP" | "ABS" | "SQRT" | "MIN" | "MAX"; + /** + * A + * @description The first number + * @default 0 + */ + a?: number; + /** + * B + * @description The second number + * @default 0 + */ + b?: number; + /** + * Type + * @default float_math + * @enum {string} + */ + type: "float_math"; + }; /** * FloatOutput * @description Base class for nodes that output a single float @@ -2233,6 +2915,59 @@ export type components = { */ type: "float_output"; }; + /** + * Float To Integer + * @description Rounds a float number to (a multiple of) an integer. + */ + FloatToIntegerInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Value + * @description The value to round + * @default 0 + */ + value?: number; + /** + * Multiple of + * @description The multiple to round to + * @default 1 + */ + multiple?: number; + /** + * Method + * @description The method to use for rounding + * @default Nearest + * @enum {string} + */ + method?: "Nearest" | "Floor" | "Ceiling" | "Truncate"; + /** + * Type + * @default float_to_int + * @enum {string} + */ + type: "float_to_int"; + }; /** Graph */ Graph: { /** @@ -2245,7 +2980,7 @@ export type components = { * @description The nodes in this graph */ nodes?: { - [key: string]: components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + [key: string]: components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"]; }; /** * Edges @@ -2288,7 +3023,7 @@ export type components = { * @description The results of node executions */ results: { - [key: string]: components["schemas"]["BooleanOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]; + [key: string]: components["schemas"]["BooleanOutput"] | components["schemas"]["BooleanCollectionOutput"] | components["schemas"]["IntegerOutput"] | components["schemas"]["IntegerCollectionOutput"] | components["schemas"]["FloatOutput"] | components["schemas"]["FloatCollectionOutput"] | components["schemas"]["StringOutput"] | components["schemas"]["StringCollectionOutput"] | components["schemas"]["ImageOutput"] | components["schemas"]["ImageCollectionOutput"] | components["schemas"]["DenoiseMaskOutput"] | components["schemas"]["LatentsOutput"] | components["schemas"]["LatentsCollectionOutput"] | components["schemas"]["ColorOutput"] | components["schemas"]["ColorCollectionOutput"] | components["schemas"]["ConditioningOutput"] | components["schemas"]["ConditioningCollectionOutput"] | components["schemas"]["ControlOutput"] | components["schemas"]["ModelLoaderOutput"] | components["schemas"]["LoraLoaderOutput"] | components["schemas"]["SDXLLoraLoaderOutput"] | components["schemas"]["VaeLoaderOutput"] | components["schemas"]["SeamlessModeOutput"] | components["schemas"]["MetadataAccumulatorOutput"] | components["schemas"]["ClipSkipInvocationOutput"] | components["schemas"]["IPAdapterOutput"] | components["schemas"]["SchedulerOutput"] | components["schemas"]["NoiseOutput"] | components["schemas"]["ONNXModelLoaderOutput"] | components["schemas"]["SDXLModelLoaderOutput"] | components["schemas"]["SDXLRefinerModelLoaderOutput"] | components["schemas"]["StringPosNegOutput"] | components["schemas"]["String2Output"] | components["schemas"]["GraphInvocationOutput"] | components["schemas"]["IterateInvocationOutput"] | components["schemas"]["CollectInvocationOutput"]; }; /** * Errors @@ -2333,6 +3068,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Graph * @description The graph to run @@ -2385,6 +3126,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -2415,6 +3162,154 @@ export type components = { */ scribble?: boolean; }; + /** IPAdapterField */ + IPAdapterField: { + /** + * Image + * @description The IP-Adapter image prompt. + */ + image: components["schemas"]["ImageField"]; + /** + * Ip Adapter Model + * @description The IP-Adapter model to use. + */ + ip_adapter_model: components["schemas"]["IPAdapterModelField"]; + /** + * Image Encoder Model + * @description The name of the CLIP image encoder model. + */ + image_encoder_model: components["schemas"]["CLIPVisionModelField"]; + /** + * Weight + * @description The weight given to the ControlNet + * @default 1 + */ + weight?: number | number[]; + /** + * Begin Step Percent + * @description When the IP-Adapter is first applied (% of total steps) + * @default 0 + */ + begin_step_percent?: number; + /** + * End Step Percent + * @description When the IP-Adapter is last applied (% of total steps) + * @default 1 + */ + end_step_percent?: number; + }; + /** + * IP-Adapter + * @description Collects IP-Adapter info to pass to other nodes. + */ + IPAdapterInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Image + * @description The IP-Adapter image prompt. + */ + image?: components["schemas"]["ImageField"]; + /** + * IP-Adapter Model + * @description The IP-Adapter model. + */ + ip_adapter_model: components["schemas"]["IPAdapterModelField"]; + /** + * Weight + * @description The weight given to the IP-Adapter + * @default 1 + */ + weight?: number | number[]; + /** + * Begin Step Percent + * @description When the IP-Adapter is first applied (% of total steps) + * @default 0 + */ + begin_step_percent?: number; + /** + * End Step Percent + * @description When the IP-Adapter is last applied (% of total steps) + * @default 1 + */ + end_step_percent?: number; + /** + * Type + * @default ip_adapter + * @enum {string} + */ + type: "ip_adapter"; + }; + /** IPAdapterModelField */ + IPAdapterModelField: { + /** + * Model Name + * @description Name of the IP-Adapter model + */ + model_name: string; + /** @description Base model */ + base_model: components["schemas"]["BaseModelType"]; + }; + /** IPAdapterModelInvokeAIConfig */ + IPAdapterModelInvokeAIConfig: { + /** Model Name */ + model_name: string; + base_model: components["schemas"]["BaseModelType"]; + /** + * Model Type + * @enum {string} + */ + model_type: "ip_adapter"; + /** Path */ + path: string; + /** Description */ + description?: string; + /** + * Model Format + * @enum {string} + */ + model_format: "invokeai"; + error?: components["schemas"]["ModelError"]; + }; + /** + * IPAdapterOutput + * @description Base class for all invocation outputs. + * + * All invocation outputs must use the `@invocation_output` decorator to provide their unique type. + */ + IPAdapterOutput: { + /** + * IP-Adapter + * @description IP-Adapter to apply + */ + ip_adapter: components["schemas"]["IPAdapterField"]; + /** + * Type + * @default ip_adapter_output + * @enum {string} + */ + type: "ip_adapter_output"; + }; /** * Blur Image * @description Blurs an image @@ -2436,6 +3331,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to blur @@ -2494,6 +3395,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to get the channel from @@ -2534,6 +3441,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2585,6 +3498,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2630,6 +3549,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of image values @@ -2680,6 +3605,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to convert @@ -2720,6 +3651,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to crop @@ -2863,6 +3800,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to adjust @@ -2902,6 +3845,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to lerp @@ -2947,6 +3896,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to load @@ -2980,6 +3935,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to lerp @@ -3041,6 +4002,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image1 * @description The first image to multiply @@ -3079,6 +4046,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Metadata * @description Optional core metadata to be written to image @@ -3144,6 +4117,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Base Image * @description The base image @@ -3171,6 +4150,12 @@ export type components = { * @default 0 */ y?: number; + /** + * Crop + * @description Crop to base image dimensions + * @default false + */ + crop?: boolean; /** * Type * @default img_paste @@ -3199,6 +4184,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -3261,6 +4252,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to resize @@ -3318,6 +4315,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to scale @@ -3364,6 +4367,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to encode @@ -3435,6 +4444,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to check @@ -3487,6 +4502,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3531,6 +4552,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3577,6 +4604,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3621,6 +4654,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of integer values @@ -3671,6 +4710,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The integer value @@ -3684,6 +4729,59 @@ export type components = { */ type: "integer"; }; + /** + * Integer Math + * @description Performs integer math. + */ + IntegerMathInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Operation + * @description The operation to perform + * @default ADD + * @enum {string} + */ + operation?: "ADD" | "SUB" | "MUL" | "DIV" | "EXP" | "MOD" | "ABS" | "MIN" | "MAX"; + /** + * A + * @description The first number + * @default 0 + */ + a?: number; + /** + * B + * @description The second number + * @default 0 + */ + b?: number; + /** + * Type + * @default integer_math + * @enum {string} + */ + type: "integer_math"; + }; /** * IntegerOutput * @description Base class for nodes that output a single integer @@ -3701,6 +4799,34 @@ export type components = { */ type: "integer_output"; }; + /** InvocationCacheStatus */ + InvocationCacheStatus: { + /** + * Size + * @description The current size of the invocation cache + */ + size: number; + /** + * Hits + * @description The number of cache hits + */ + hits: number; + /** + * Misses + * @description The number of cache misses + */ + misses: number; + /** + * Enabled + * @description Whether the invocation cache is enabled + */ + enabled: boolean; + /** + * Max Size + * @description The maximum size of the invocation cache + */ + max_size: number; + }; /** * IterateInvocation * @description Iterates over a list of items @@ -3722,6 +4848,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The list of items to iterate over @@ -3778,6 +4910,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to infill @@ -3811,6 +4949,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of latents tensors @@ -3877,6 +5021,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description The latents tensor @@ -3937,6 +5087,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Tiled * @description Processing using overlapping tiles (reduce memory consumption) @@ -3992,6 +5148,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4055,6 +5217,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4100,6 +5268,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4228,6 +5402,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * LoRA * @description LoRA model to load @@ -4314,6 +5494,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description Main model (UNet, VAE, CLIP) to load @@ -4347,6 +5533,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Mask1 * @description The first mask to combine @@ -4385,6 +5577,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to apply the mask to @@ -4438,6 +5636,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to create the mask from @@ -4477,6 +5681,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4528,6 +5738,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Generation Mode * @description The generation mode that output this image @@ -4703,6 +5919,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4748,6 +5970,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -4836,7 +6064,7 @@ export type components = { * @description An enumeration. * @enum {string} */ - ModelType: "onnx" | "main" | "vae" | "lora" | "controlnet" | "embedding"; + ModelType: "onnx" | "main" | "vae" | "lora" | "controlnet" | "embedding" | "ip_adapter" | "clip_vision"; /** * ModelVariantType * @description An enumeration. @@ -4846,7 +6074,7 @@ export type components = { /** ModelsList */ ModelsList: { /** Models */ - models: (components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; + models: (components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"])[]; }; /** * Multiply Integers @@ -4869,6 +6097,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -4888,6 +6122,24 @@ export type components = { */ type: "mul"; }; + /** NodeFieldValue */ + NodeFieldValue: { + /** + * Node Path + * @description The node into which this batch data item will be substituted. + */ + node_path: string; + /** + * Field Name + * @description The field into which this batch data item will be substituted. + */ + field_name: string; + /** + * Value + * @description The value to substitute into the node/field. + */ + value: string | number; + }; /** * Noise * @description Generates latent noise. @@ -4909,6 +6161,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Seed * @description Seed for random number generation @@ -4987,6 +6245,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5032,6 +6296,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Denoised latents tensor @@ -5110,6 +6380,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Raw prompt text (no parsing) @@ -5196,6 +6472,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Positive Conditioning * @description Positive conditioning tensor @@ -5342,6 +6624,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description ONNX Main model (UNet, VAE, CLIP) to load @@ -5375,6 +6663,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5457,6 +6751,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -5514,6 +6814,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * File Path * @description Path to prompt text file @@ -5548,6 +6854,17 @@ export type components = { */ type: "prompt_from_file"; }; + /** + * PruneResult + * @description Result of pruning the session queue + */ + PruneResult: { + /** + * Deleted + * @description Number of queue items deleted + */ + deleted: number; + }; /** * Random Integer * @description Outputs a single random integer. @@ -5569,6 +6886,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Low * @description The inclusive low value @@ -5609,6 +6932,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; /** * Low * @description The inclusive low value @@ -5660,6 +6989,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The start of the range @@ -5687,7 +7022,7 @@ export type components = { }; /** * Integer Range of Size - * @description Creates a range from start to start + size with step + * @description Creates a range from start to start + (size * step) incremented by step */ RangeOfSizeInvocation: { /** @@ -5706,6 +7041,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Start * @description The start of the range @@ -5760,6 +7101,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Latents tensor @@ -5805,6 +7152,52 @@ export type components = { * @enum {string} */ ResourceOrigin: "internal" | "external"; + /** + * Round Float + * @description Rounds a float to a specified number of decimal places. + */ + RoundInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * Value + * @description The float value + * @default 0 + */ + value?: number; + /** + * Decimals + * @description The number of decimal places + * @default 0 + */ + decimals?: number; + /** + * Type + * @default round_float + * @enum {string} + */ + type: "round_float"; + }; /** * SDXL Prompt * @description Parse prompt using compel package to conditioning. @@ -5826,6 +7219,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Prompt * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -5906,6 +7305,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * LoRA * @description LoRA model to load @@ -5987,6 +7392,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description SDXL Main model (UNet, VAE, CLIP1, CLIP2) to load @@ -6052,6 +7463,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Style * @description Prompt to be parsed by Compel to create a conditioning tensor @@ -6117,6 +7534,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Model * @description SDXL Refiner Main Modde (UNet, VAE, CLIP2) to load @@ -6156,6 +7579,55 @@ export type components = { */ type: "sdxl_refiner_model_loader_output"; }; + /** + * Save Image + * @description Saves an image. Unlike an image primitive, this invocation stores a copy of the image. + */ + SaveImageInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default false + */ + use_cache?: boolean; + /** + * Image + * @description The image to process + */ + image?: components["schemas"]["ImageField"]; + /** + * Board + * @description The board to save the image to + */ + board?: components["schemas"]["BoardField"]; + /** + * Metadata + * @description Optional core metadata to be written to image + */ + metadata?: components["schemas"]["CoreMetadata"]; + /** + * Type + * @default save_image + * @enum {string} + */ + type: "save_image"; + }; /** * Scale Latents * @description Scales latents by a given factor. @@ -6177,6 +7649,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Latents * @description Latents tensor @@ -6228,6 +7706,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Scheduler * @description Scheduler to use during inference @@ -6289,6 +7773,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * UNet * @description UNet (scheduler, LoRAs) @@ -6361,6 +7851,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -6373,6 +7869,223 @@ export type components = { */ type: "segment_anything_processor"; }; + /** SessionProcessorStatus */ + SessionProcessorStatus: { + /** + * Is Started + * @description Whether the session processor is started + */ + is_started: boolean; + /** + * Is Processing + * @description Whether a session is being processed + */ + is_processing: boolean; + }; + /** + * SessionQueueAndProcessorStatus + * @description The overall status of session queue and processor + */ + SessionQueueAndProcessorStatus: { + queue: components["schemas"]["SessionQueueStatus"]; + processor: components["schemas"]["SessionProcessorStatus"]; + }; + /** + * SessionQueueItem + * @description Session queue item without the full graph. Used for serialization. + */ + SessionQueueItem: { + /** + * Item Id + * @description The identifier of the session queue item + */ + item_id: number; + /** + * Status + * @description The status of this queue item + * @default pending + * @enum {string} + */ + status: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** + * Priority + * @description The priority of this queue item + * @default 0 + */ + priority: number; + /** + * Batch Id + * @description The ID of the batch associated with this queue item + */ + batch_id: string; + /** + * Session Id + * @description The ID of the session associated with this queue item. The session doesn't exist in graph_executions until the queue item is executed. + */ + session_id: string; + /** + * Error + * @description The error message if this queue item errored + */ + error?: string; + /** + * Created At + * @description When this queue item was created + */ + created_at: string; + /** + * Updated At + * @description When this queue item was updated + */ + updated_at: string; + /** + * Started At + * @description When this queue item was started + */ + started_at?: string; + /** + * Completed At + * @description When this queue item was completed + */ + completed_at?: string; + /** + * Queue Id + * @description The id of the queue with which this item is associated + */ + queue_id: string; + /** + * Field Values + * @description The field values that were used for this queue item + */ + field_values?: components["schemas"]["NodeFieldValue"][]; + /** + * Session + * @description The fully-populated session to be executed + */ + session: components["schemas"]["GraphExecutionState"]; + }; + /** + * SessionQueueItemDTO + * @description Session queue item without the full graph. Used for serialization. + */ + SessionQueueItemDTO: { + /** + * Item Id + * @description The identifier of the session queue item + */ + item_id: number; + /** + * Status + * @description The status of this queue item + * @default pending + * @enum {string} + */ + status: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** + * Priority + * @description The priority of this queue item + * @default 0 + */ + priority: number; + /** + * Batch Id + * @description The ID of the batch associated with this queue item + */ + batch_id: string; + /** + * Session Id + * @description The ID of the session associated with this queue item. The session doesn't exist in graph_executions until the queue item is executed. + */ + session_id: string; + /** + * Error + * @description The error message if this queue item errored + */ + error?: string; + /** + * Created At + * @description When this queue item was created + */ + created_at: string; + /** + * Updated At + * @description When this queue item was updated + */ + updated_at: string; + /** + * Started At + * @description When this queue item was started + */ + started_at?: string; + /** + * Completed At + * @description When this queue item was completed + */ + completed_at?: string; + /** + * Queue Id + * @description The id of the queue with which this item is associated + */ + queue_id: string; + /** + * Field Values + * @description The field values that were used for this queue item + */ + field_values?: components["schemas"]["NodeFieldValue"][]; + }; + /** SessionQueueStatus */ + SessionQueueStatus: { + /** + * Queue Id + * @description The ID of the queue + */ + queue_id: string; + /** + * Item Id + * @description The current queue item id + */ + item_id?: number; + /** + * Batch Id + * @description The current queue item's batch id + */ + batch_id?: string; + /** + * Session Id + * @description The current queue item's session id + */ + session_id?: string; + /** + * Pending + * @description Number of queue items with status 'pending' + */ + pending: number; + /** + * In Progress + * @description Number of queue items with status 'in_progress' + */ + in_progress: number; + /** + * Completed + * @description Number of queue items with status 'complete' + */ + completed: number; + /** + * Failed + * @description Number of queue items with status 'error' + */ + failed: number; + /** + * Canceled + * @description Number of queue items with status 'canceled' + */ + canceled: number; + /** + * Total + * @description Total number of queue items + */ + total: number; + }; /** * Show Image * @description Displays a provided image using the OS image viewer, and passes it forward in the pipeline. @@ -6394,6 +8107,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to show @@ -6577,6 +8296,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Easing * @description The easing function to use @@ -6643,6 +8368,28 @@ export type components = { */ type: "step_param_easing"; }; + /** + * String2Output + * @description Base class for invocations that output two strings + */ + String2Output: { + /** + * String 1 + * @description string 1 + */ + string_1: string; + /** + * String 2 + * @description string 2 + */ + string_2: string; + /** + * Type + * @default string_2_output + * @enum {string} + */ + type: "string_2_output"; + }; /** * String Collection Primitive * @description A collection of string primitive values @@ -6664,6 +8411,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Collection * @description The collection of string values @@ -6714,6 +8467,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Value * @description The string value @@ -6727,6 +8486,104 @@ export type components = { */ type: "string"; }; + /** + * String Join + * @description Joins string left to string right + */ + StringJoinInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String Left + * @description String Left + * @default + */ + string_left?: string; + /** + * String Right + * @description String Right + * @default + */ + string_right?: string; + /** + * Type + * @default string_join + * @enum {string} + */ + type: "string_join"; + }; + /** + * String Join Three + * @description Joins string left to string middle to string right + */ + StringJoinThreeInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String Left + * @description String Left + * @default + */ + string_left?: string; + /** + * String Middle + * @description String Middle + * @default + */ + string_middle?: string; + /** + * String Right + * @description String Right + * @default + */ + string_right?: string; + /** + * Type + * @default string_join_three + * @enum {string} + */ + type: "string_join_three"; + }; /** * StringOutput * @description Base class for nodes that output a single string @@ -6744,6 +8601,172 @@ export type components = { */ type: "string_output"; }; + /** + * StringPosNegOutput + * @description Base class for invocations that output a positive and negative string + */ + StringPosNegOutput: { + /** + * Positive String + * @description Positive string + */ + positive_string: string; + /** + * Negative String + * @description Negative string + */ + negative_string: string; + /** + * Type + * @default string_pos_neg_output + * @enum {string} + */ + type: "string_pos_neg_output"; + }; + /** + * String Replace + * @description Replaces the search string with the replace string + */ + StringReplaceInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to work on + * @default + */ + string?: string; + /** + * Search String + * @description String to search for + * @default + */ + search_string?: string; + /** + * Replace String + * @description String to replace the search + * @default + */ + replace_string?: string; + /** + * Use Regex + * @description Use search string as a regex expression (non regex is case insensitive) + * @default false + */ + use_regex?: boolean; + /** + * Type + * @default string_replace + * @enum {string} + */ + type: "string_replace"; + }; + /** + * String Split + * @description Splits string into two strings, based on the first occurance of the delimiter. The delimiter will be removed from the string + */ + StringSplitInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to split + * @default + */ + string?: string; + /** + * Delimiter + * @description Delimiter to spilt with. blank will split on the first whitespace + * @default + */ + delimiter?: string; + /** + * Type + * @default string_split + * @enum {string} + */ + type: "string_split"; + }; + /** + * String Split Negative + * @description Splits string into two strings, inside [] goes into negative string everthing else goes into positive string. Each [ and ] character is replaced with a space + */ + StringSplitNegInvocation: { + /** + * Id + * @description The id of this instance of an invocation. Must be unique among all instances of invocations. + */ + id: string; + /** + * Is Intermediate + * @description Whether or not this is an intermediate invocation. + * @default false + */ + is_intermediate?: boolean; + /** + * Workflow + * @description The workflow to save with the image + */ + workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; + /** + * String + * @description String to split + * @default + */ + string?: string; + /** + * Type + * @default string_split_neg + * @enum {string} + */ + type: "string_split_neg"; + }; /** * SubModelType * @description An enumeration. @@ -6771,6 +8794,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * A * @description The first number @@ -6829,6 +8858,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -6930,6 +8965,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * VAE * @description VAE model to load @@ -7012,6 +9053,12 @@ export type components = { * @description The workflow to save with the image */ workflow?: string; + /** + * Use Cache + * @description Whether or not to use the cache + * @default true + */ + use_cache?: boolean; /** * Image * @description The image to process @@ -7066,7 +9113,7 @@ export type components = { * If a field should be provided a data type that does not exactly match the python type of the field, use this to provide the type that should be used instead. See the node development docs for detail on adding a new field type, which involves client-side changes. * @enum {string} */ - UIType: "boolean" | "ColorField" | "ConditioningField" | "ControlField" | "float" | "ImageField" | "integer" | "LatentsField" | "string" | "BooleanCollection" | "ColorCollection" | "ConditioningCollection" | "ControlCollection" | "FloatCollection" | "ImageCollection" | "IntegerCollection" | "LatentsCollection" | "StringCollection" | "BooleanPolymorphic" | "ColorPolymorphic" | "ConditioningPolymorphic" | "ControlPolymorphic" | "FloatPolymorphic" | "ImagePolymorphic" | "IntegerPolymorphic" | "LatentsPolymorphic" | "StringPolymorphic" | "MainModelField" | "SDXLMainModelField" | "SDXLRefinerModelField" | "ONNXModelField" | "VaeModelField" | "LoRAModelField" | "ControlNetModelField" | "UNetField" | "VaeField" | "ClipField" | "Collection" | "CollectionItem" | "enum" | "Scheduler" | "WorkflowField" | "IsIntermediate" | "MetadataField"; + UIType: "boolean" | "ColorField" | "ConditioningField" | "ControlField" | "float" | "ImageField" | "integer" | "LatentsField" | "string" | "BooleanCollection" | "ColorCollection" | "ConditioningCollection" | "ControlCollection" | "FloatCollection" | "ImageCollection" | "IntegerCollection" | "LatentsCollection" | "StringCollection" | "BooleanPolymorphic" | "ColorPolymorphic" | "ConditioningPolymorphic" | "ControlPolymorphic" | "FloatPolymorphic" | "ImagePolymorphic" | "IntegerPolymorphic" | "LatentsPolymorphic" | "StringPolymorphic" | "MainModelField" | "SDXLMainModelField" | "SDXLRefinerModelField" | "ONNXModelField" | "VaeModelField" | "LoRAModelField" | "ControlNetModelField" | "IPAdapterModelField" | "UNetField" | "VaeField" | "ClipField" | "Collection" | "CollectionItem" | "enum" | "Scheduler" | "WorkflowField" | "IsIntermediate" | "MetadataField" | "BoardField"; /** * UIComponent * @description The type of UI component to use for a field, used to override the default components, which are inferred from the field type. @@ -7088,6 +9135,10 @@ export type components = { ui_component?: components["schemas"]["UIComponent"]; /** Ui Order */ ui_order?: number; + /** Ui Choice Labels */ + ui_choice_labels?: { + [key: string]: string; + }; /** Item Default */ item_default?: unknown; }; @@ -7106,29 +9157,41 @@ export type components = { ui_order?: number; }; /** - * StableDiffusionXLModelFormat + * CLIPVisionModelFormat * @description An enumeration. * @enum {string} */ - StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + CLIPVisionModelFormat: "diffusers"; /** * StableDiffusionOnnxModelFormat * @description An enumeration. * @enum {string} */ StableDiffusionOnnxModelFormat: "olive" | "onnx"; - /** - * ControlNetModelFormat - * @description An enumeration. - * @enum {string} - */ - ControlNetModelFormat: "checkpoint" | "diffusers"; /** * StableDiffusion2ModelFormat * @description An enumeration. * @enum {string} */ StableDiffusion2ModelFormat: "checkpoint" | "diffusers"; + /** + * StableDiffusionXLModelFormat + * @description An enumeration. + * @enum {string} + */ + StableDiffusionXLModelFormat: "checkpoint" | "diffusers"; + /** + * IPAdapterModelFormat + * @description An enumeration. + * @enum {string} + */ + IPAdapterModelFormat: "invokeai"; + /** + * ControlNetModelFormat + * @description An enumeration. + * @enum {string} + */ + ControlNetModelFormat: "checkpoint" | "diffusers"; /** * StableDiffusion1ModelFormat * @description An enumeration. @@ -7151,6 +9214,7 @@ export type operations = { /** * List Sessions + * @deprecated * @description Gets a list of sessions, optionally searching */ list_sessions: { @@ -7181,9 +9245,16 @@ export type operations = { }; /** * Create Session + * @deprecated * @description Creates a new session, optionally initializing it with an invocation graph */ create_session: { + parameters: { + query?: { + /** @description The id of the queue to associate the session with */ + queue_id?: string; + }; + }; requestBody?: { content: { "application/json": components["schemas"]["Graph"]; @@ -7210,6 +9281,7 @@ export type operations = { }; /** * Get Session + * @deprecated * @description Gets a session */ get_session: { @@ -7240,6 +9312,7 @@ export type operations = { }; /** * Add Node + * @deprecated * @description Adds a node to the graph */ add_node: { @@ -7251,7 +9324,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"]; }; }; responses: { @@ -7279,6 +9352,7 @@ export type operations = { }; /** * Update Node + * @deprecated * @description Updates a node in the graph and removes all linked edges */ update_node: { @@ -7292,7 +9366,7 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"]; + "application/json": components["schemas"]["BooleanInvocation"] | components["schemas"]["BooleanCollectionInvocation"] | components["schemas"]["IntegerInvocation"] | components["schemas"]["IntegerCollectionInvocation"] | components["schemas"]["FloatInvocation"] | components["schemas"]["FloatCollectionInvocation"] | components["schemas"]["StringInvocation"] | components["schemas"]["StringCollectionInvocation"] | components["schemas"]["ImageInvocation"] | components["schemas"]["ImageCollectionInvocation"] | components["schemas"]["LatentsInvocation"] | components["schemas"]["LatentsCollectionInvocation"] | components["schemas"]["ColorInvocation"] | components["schemas"]["ConditioningInvocation"] | components["schemas"]["ConditioningCollectionInvocation"] | components["schemas"]["ControlNetInvocation"] | components["schemas"]["ImageProcessorInvocation"] | components["schemas"]["MainModelLoaderInvocation"] | components["schemas"]["LoraLoaderInvocation"] | components["schemas"]["SDXLLoraLoaderInvocation"] | components["schemas"]["VaeLoaderInvocation"] | components["schemas"]["SeamlessModeInvocation"] | components["schemas"]["MetadataAccumulatorInvocation"] | components["schemas"]["RangeInvocation"] | components["schemas"]["RangeOfSizeInvocation"] | components["schemas"]["RandomRangeInvocation"] | components["schemas"]["CompelInvocation"] | components["schemas"]["SDXLCompelPromptInvocation"] | components["schemas"]["SDXLRefinerCompelPromptInvocation"] | components["schemas"]["ClipSkipInvocation"] | components["schemas"]["CvInpaintInvocation"] | components["schemas"]["ShowImageInvocation"] | components["schemas"]["BlankImageInvocation"] | components["schemas"]["ImageCropInvocation"] | components["schemas"]["ImagePasteInvocation"] | components["schemas"]["MaskFromAlphaInvocation"] | components["schemas"]["ImageMultiplyInvocation"] | components["schemas"]["ImageChannelInvocation"] | components["schemas"]["ImageConvertInvocation"] | components["schemas"]["ImageBlurInvocation"] | components["schemas"]["ImageResizeInvocation"] | components["schemas"]["ImageScaleInvocation"] | components["schemas"]["ImageLerpInvocation"] | components["schemas"]["ImageInverseLerpInvocation"] | components["schemas"]["ImageNSFWBlurInvocation"] | components["schemas"]["ImageWatermarkInvocation"] | components["schemas"]["MaskEdgeInvocation"] | components["schemas"]["MaskCombineInvocation"] | components["schemas"]["ColorCorrectInvocation"] | components["schemas"]["ImageHueAdjustmentInvocation"] | components["schemas"]["ImageChannelOffsetInvocation"] | components["schemas"]["ImageChannelMultiplyInvocation"] | components["schemas"]["SaveImageInvocation"] | components["schemas"]["InfillColorInvocation"] | components["schemas"]["InfillTileInvocation"] | components["schemas"]["InfillPatchMatchInvocation"] | components["schemas"]["LaMaInfillInvocation"] | components["schemas"]["CV2InfillInvocation"] | components["schemas"]["IPAdapterInvocation"] | components["schemas"]["SchedulerInvocation"] | components["schemas"]["CreateDenoiseMaskInvocation"] | components["schemas"]["DenoiseLatentsInvocation"] | components["schemas"]["LatentsToImageInvocation"] | components["schemas"]["ResizeLatentsInvocation"] | components["schemas"]["ScaleLatentsInvocation"] | components["schemas"]["ImageToLatentsInvocation"] | components["schemas"]["BlendLatentsInvocation"] | components["schemas"]["AddInvocation"] | components["schemas"]["SubtractInvocation"] | components["schemas"]["MultiplyInvocation"] | components["schemas"]["DivideInvocation"] | components["schemas"]["RandomIntInvocation"] | components["schemas"]["FloatToIntegerInvocation"] | components["schemas"]["RoundInvocation"] | components["schemas"]["IntegerMathInvocation"] | components["schemas"]["FloatMathInvocation"] | components["schemas"]["NoiseInvocation"] | components["schemas"]["ONNXPromptInvocation"] | components["schemas"]["ONNXTextToLatentsInvocation"] | components["schemas"]["ONNXLatentsToImageInvocation"] | components["schemas"]["OnnxModelLoaderInvocation"] | components["schemas"]["FloatLinearRangeInvocation"] | components["schemas"]["StepParamEasingInvocation"] | components["schemas"]["DynamicPromptInvocation"] | components["schemas"]["PromptsFromFileInvocation"] | components["schemas"]["SDXLModelLoaderInvocation"] | components["schemas"]["SDXLRefinerModelLoaderInvocation"] | components["schemas"]["StringSplitNegInvocation"] | components["schemas"]["StringSplitInvocation"] | components["schemas"]["StringJoinInvocation"] | components["schemas"]["StringJoinThreeInvocation"] | components["schemas"]["StringReplaceInvocation"] | components["schemas"]["ESRGANInvocation"] | components["schemas"]["GraphInvocation"] | components["schemas"]["IterateInvocation"] | components["schemas"]["CollectInvocation"] | components["schemas"]["CannyImageProcessorInvocation"] | components["schemas"]["HedImageProcessorInvocation"] | components["schemas"]["LineartImageProcessorInvocation"] | components["schemas"]["LineartAnimeImageProcessorInvocation"] | components["schemas"]["OpenposeImageProcessorInvocation"] | components["schemas"]["MidasDepthImageProcessorInvocation"] | components["schemas"]["NormalbaeImageProcessorInvocation"] | components["schemas"]["MlsdImageProcessorInvocation"] | components["schemas"]["PidiImageProcessorInvocation"] | components["schemas"]["ContentShuffleImageProcessorInvocation"] | components["schemas"]["ZoeDepthImageProcessorInvocation"] | components["schemas"]["MediapipeFaceProcessorInvocation"] | components["schemas"]["LeresImageProcessorInvocation"] | components["schemas"]["TileResamplerProcessorInvocation"] | components["schemas"]["SegmentAnythingProcessorInvocation"] | components["schemas"]["ColorMapImageProcessorInvocation"]; }; }; responses: { @@ -7320,6 +9394,7 @@ export type operations = { }; /** * Delete Node + * @deprecated * @description Deletes a node in the graph and removes all linked edges */ delete_node: { @@ -7356,6 +9431,7 @@ export type operations = { }; /** * Add Edge + * @deprecated * @description Adds an edge to the graph */ add_edge: { @@ -7395,6 +9471,7 @@ export type operations = { }; /** * Delete Edge + * @deprecated * @description Deletes an edge from the graph */ delete_edge: { @@ -7437,11 +9514,14 @@ export type operations = { }; /** * Invoke Session + * @deprecated * @description Invokes a session */ invoke_session: { parameters: { - query?: { + query: { + /** @description The id of the queue to associate the session with */ + queue_id: string; /** @description Whether or not to invoke all remaining invocations */ all?: boolean; }; @@ -7479,6 +9559,7 @@ export type operations = { }; /** * Cancel Session Invoke + * @deprecated * @description Invokes a session */ cancel_session_invoke: { @@ -7507,6 +9588,31 @@ export type operations = { }; }; }; + /** + * Parse Dynamicprompts + * @description Creates a batch process + */ + parse_dynamicprompts: { + requestBody: { + content: { + "application/json": components["schemas"]["Body_parse_dynamicprompts"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["DynamicPromptsResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; /** * List Models * @description Gets a list of models @@ -7584,14 +9690,14 @@ export type operations = { }; requestBody: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; responses: { /** @description The model was updated successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -7628,7 +9734,7 @@ export type operations = { /** @description The model imported successfully */ 201: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -7662,14 +9768,14 @@ export type operations = { add_model: { requestBody: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; responses: { /** @description The model added successfully */ 201: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description The model could not be found */ @@ -7715,7 +9821,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Bad request */ @@ -7810,7 +9916,7 @@ export type operations = { /** @description Model converted successfully */ 200: { content: { - "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; + "application/json": components["schemas"]["ONNXStableDiffusion1ModelConfig"] | components["schemas"]["StableDiffusion1ModelCheckpointConfig"] | components["schemas"]["StableDiffusion1ModelDiffusersConfig"] | components["schemas"]["VaeModelConfig"] | components["schemas"]["LoRAModelConfig"] | components["schemas"]["ControlNetModelCheckpointConfig"] | components["schemas"]["ControlNetModelDiffusersConfig"] | components["schemas"]["TextualInversionModelConfig"] | components["schemas"]["IPAdapterModelInvokeAIConfig"] | components["schemas"]["CLIPVisionModelDiffusersConfig"] | components["schemas"]["ONNXStableDiffusion2ModelConfig"] | components["schemas"]["StableDiffusion2ModelCheckpointConfig"] | components["schemas"]["StableDiffusion2ModelDiffusersConfig"] | components["schemas"]["StableDiffusionXLModelCheckpointConfig"] | components["schemas"]["StableDiffusionXLModelDiffusersConfig"]; }; }; /** @description Incompatible models */ @@ -8513,4 +10619,467 @@ export type operations = { }; }; }; + /** + * Clear Invocation Cache + * @description Clears the invocation cache + */ + clear_invocation_cache: { + responses: { + /** @description The operation was successful */ + 200: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Enable Invocation Cache + * @description Clears the invocation cache + */ + enable_invocation_cache: { + responses: { + /** @description The operation was successful */ + 200: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Disable Invocation Cache + * @description Clears the invocation cache + */ + disable_invocation_cache: { + responses: { + /** @description The operation was successful */ + 200: { + content: { + "application/json": unknown; + }; + }; + }; + }; + /** + * Get Invocation Cache Status + * @description Clears the invocation cache + */ + get_invocation_cache_status: { + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["InvocationCacheStatus"]; + }; + }; + }; + }; + /** + * Enqueue Graph + * @description Enqueues a graph for single execution. + */ + enqueue_graph: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_enqueue_graph"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Created */ + 201: { + content: { + "application/json": components["schemas"]["EnqueueGraphResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Enqueue Batch + * @description Processes a batch and enqueues the output graphs for execution. + */ + enqueue_batch: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_enqueue_batch"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": unknown; + }; + }; + /** @description Created */ + 201: { + content: { + "application/json": components["schemas"]["EnqueueBatchResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * List Queue Items + * @description Gets all queue items (without graphs) + */ + list_queue_items: { + parameters: { + query?: { + /** @description The number of items to fetch */ + limit?: number; + /** @description The status of items to fetch */ + status?: "pending" | "in_progress" | "completed" | "failed" | "canceled"; + /** @description The pagination cursor */ + cursor?: number; + /** @description The pagination cursor priority */ + priority?: number; + }; + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["CursorPaginatedResults_SessionQueueItemDTO_"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Resume + * @description Resumes session processor + */ + resume: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Pause + * @description Pauses session processor + */ + pause: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Cancel By Batch Ids + * @description Immediately cancels all queue items from the given batch ids + */ + cancel_by_batch_ids: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["Body_cancel_by_batch_ids"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["CancelByBatchIDsResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Clear + * @description Clears the queue entirely, immediately canceling the currently-executing session + */ + clear: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["ClearResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Prune + * @description Prunes all completed or errored queue items + */ + prune: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["PruneResult"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Current Queue Item + * @description Gets the currently execution queue item + */ + get_current_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Next Queue Item + * @description Gets the next queue item, without executing it + */ + get_next_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Queue Status + * @description Gets the status of the session queue + */ + get_queue_status: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueAndProcessorStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Batch Status + * @description Gets the status of the session queue + */ + get_batch_status: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The batch to get the status of */ + batch_id: string; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["BatchStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Get Queue Item + * @description Gets a queue item + */ + get_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The queue item to get */ + item_id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + /** + * Cancel Queue Item + * @description Deletes a queue item + */ + cancel_queue_item: { + parameters: { + path: { + /** @description The queue id to perform this operation on */ + queue_id: string; + /** @description The queue item to cancel */ + item_id: number; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + content: { + "application/json": components["schemas"]["SessionQueueItem"]; + }; + }; + /** @description Validation Error */ + 422: { + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; }; diff --git a/invokeai/frontend/web/src/services/api/thunks/schema.ts b/invokeai/frontend/web/src/services/api/thunks/schema.ts index 7dc0bdc331..c209469e02 100644 --- a/invokeai/frontend/web/src/services/api/thunks/schema.ts +++ b/invokeai/frontend/web/src/services/api/thunks/schema.ts @@ -26,7 +26,8 @@ export const receivedOpenAPISchema = createAsyncThunk( 'nodes/receivedOpenAPISchema', async (_, { rejectWithValue }) => { try { - const response = await fetch(`openapi.json`); + const url = [window.location.origin, 'openapi.json'].join('/'); + const response = await fetch(url); const openAPISchema = await response.json(); const schemaJSON = JSON.parse( diff --git a/invokeai/frontend/web/src/services/api/thunks/session.ts b/invokeai/frontend/web/src/services/api/thunks/session.ts index c3016be25f..2404329fac 100644 --- a/invokeai/frontend/web/src/services/api/thunks/session.ts +++ b/invokeai/frontend/web/src/services/api/thunks/session.ts @@ -1,4 +1,5 @@ import { createAsyncThunk, isAnyOf } from '@reduxjs/toolkit'; +import { $queueId } from 'features/queue/store/nanoStores'; import { isObject } from 'lodash-es'; import { $client } from 'services/api/client'; import { paths } from 'services/api/schema'; @@ -33,6 +34,7 @@ export const sessionCreated = createAsyncThunk< const { POST } = $client.get(); const { data, error, response } = await POST('/api/v1/sessions/', { body: graph, + params: { query: { queue_id: $queueId.get() } }, }); if (error) { @@ -76,7 +78,10 @@ export const sessionInvoked = createAsyncThunk< const { error, response } = await PUT( '/api/v1/sessions/{session_id}/invoke', { - params: { query: { all: true }, path: { session_id } }, + params: { + query: { queue_id: $queueId.get(), all: true }, + path: { session_id }, + }, } ); diff --git a/invokeai/frontend/web/src/services/api/types.ts b/invokeai/frontend/web/src/services/api/types.ts index bae60ff701..afa2cd7bd7 100644 --- a/invokeai/frontend/web/src/services/api/types.ts +++ b/invokeai/frontend/web/src/services/api/types.ts @@ -22,6 +22,12 @@ export type UpdateBoardArg = changes: paths['/api/v1/boards/{board_id}']['patch']['requestBody']['content']['application/json']; }; +export type BatchConfig = + paths['/api/v1/queue/{queue_id}/enqueue_batch']['post']['requestBody']['content']['application/json']; + +export type EnqueueBatchResult = components['schemas']['EnqueueBatchResult']; +export type EnqueueGraphResult = components['schemas']['EnqueueGraphResult']; + /** * This is an unsafe type; the object inside is not guaranteed to be valid. */ @@ -60,8 +66,10 @@ export type OnnxModelField = s['OnnxModelField']; export type VAEModelField = s['VAEModelField']; export type LoRAModelField = s['LoRAModelField']; export type ControlNetModelField = s['ControlNetModelField']; +export type IPAdapterModelField = s['IPAdapterModelField']; export type ModelsList = s['ModelsList']; export type ControlField = s['ControlField']; +export type IPAdapterField = s['IPAdapterField']; // Model Configs export type LoRAModelConfig = s['LoRAModelConfig']; @@ -73,6 +81,8 @@ export type ControlNetModelDiffusersConfig = export type ControlNetModelConfig = | ControlNetModelCheckpointConfig | ControlNetModelDiffusersConfig; +export type IPAdapterModelInvokeAIConfig = s['IPAdapterModelInvokeAIConfig']; +export type IPAdapterModelConfig = IPAdapterModelInvokeAIConfig; export type TextualInversionModelConfig = s['TextualInversionModelConfig']; export type DiffusersModelConfig = | s['StableDiffusion1ModelDiffusersConfig'] @@ -88,6 +98,7 @@ export type AnyModelConfig = | LoRAModelConfig | VaeModelConfig | ControlNetModelConfig + | IPAdapterModelConfig | TextualInversionModelConfig | MainModelConfig | OnnxModelConfig; @@ -99,6 +110,9 @@ export type ImportModelConfig = s['Body_import_model']; export type Graph = s['Graph']; export type Edge = s['Edge']; export type GraphExecutionState = s['GraphExecutionState']; +export type Batch = s['Batch']; +export type SessionQueueItemDTO = s['SessionQueueItemDTO']; +export type SessionQueueItem = s['SessionQueueItem']; // General nodes export type CollectInvocation = s['CollectInvocation']; @@ -132,10 +146,14 @@ export type DivideInvocation = s['DivideInvocation']; export type ImageNSFWBlurInvocation = s['ImageNSFWBlurInvocation']; export type ImageWatermarkInvocation = s['ImageWatermarkInvocation']; export type SeamlessModeInvocation = s['SeamlessModeInvocation']; +export type SaveImageInvocation = s['SaveImageInvocation']; // ControlNet Nodes export type ControlNetInvocation = s['ControlNetInvocation']; +export type IPAdapterInvocation = s['IPAdapterInvocation']; export type CannyImageProcessorInvocation = s['CannyImageProcessorInvocation']; +export type ColorMapImageProcessorInvocation = + s['ColorMapImageProcessorInvocation']; export type ContentShuffleImageProcessorInvocation = s['ContentShuffleImageProcessorInvocation']; export type HedImageProcessorInvocation = s['HedImageProcessorInvocation']; @@ -173,6 +191,10 @@ export type ControlNetAction = { controlNetId: string; }; +export type IPAdapterAction = { + type: 'SET_IP_ADAPTER_IMAGE'; +}; + export type InitialImageAction = { type: 'SET_INITIAL_IMAGE'; }; @@ -198,6 +220,7 @@ export type AddToBatchAction = { export type PostUploadAction = | ControlNetAction + | IPAdapterAction | InitialImageAction | NodesAction | CanvasInitialImageAction diff --git a/invokeai/frontend/web/src/services/events/actions.ts b/invokeai/frontend/web/src/services/events/actions.ts index 35ebb725cb..d9f838bf70 100644 --- a/invokeai/frontend/web/src/services/events/actions.ts +++ b/invokeai/frontend/web/src/services/events/actions.ts @@ -8,6 +8,7 @@ import { InvocationStartedEvent, ModelLoadCompletedEvent, ModelLoadStartedEvent, + QueueItemStatusChangedEvent, SessionRetrievalErrorEvent, } from 'services/events/types'; @@ -41,35 +42,35 @@ export const appSocketDisconnected = createAction( ); /** - * Socket.IO Subscribed + * Socket.IO Subscribed Session * * Do not use. Only for use in middleware. */ -export const socketSubscribed = createAction<{ +export const socketSubscribedSession = createAction<{ sessionId: string; -}>('socket/socketSubscribed'); +}>('socket/socketSubscribedSession'); /** - * App-level Socket.IO Subscribed + * App-level Socket.IO Subscribed Session */ -export const appSocketSubscribed = createAction<{ +export const appSocketSubscribedSession = createAction<{ sessionId: string; -}>('socket/appSocketSubscribed'); +}>('socket/appSocketSubscribedSession'); /** - * Socket.IO Unsubscribed + * Socket.IO Unsubscribed Session * * Do not use. Only for use in middleware. */ -export const socketUnsubscribed = createAction<{ sessionId: string }>( - 'socket/socketUnsubscribed' +export const socketUnsubscribedSession = createAction<{ sessionId: string }>( + 'socket/socketUnsubscribedSession' ); /** - * App-level Socket.IO Unsubscribed + * App-level Socket.IO Unsubscribed Session */ -export const appSocketUnsubscribed = createAction<{ sessionId: string }>( - 'socket/appSocketUnsubscribed' +export const appSocketUnsubscribedSession = createAction<{ sessionId: string }>( + 'socket/appSocketUnsubscribedSession' ); /** @@ -215,3 +216,19 @@ export const socketInvocationRetrievalError = createAction<{ export const appSocketInvocationRetrievalError = createAction<{ data: InvocationRetrievalErrorEvent; }>('socket/appSocketInvocationRetrievalError'); + +/** + * Socket.IO Quueue Item Status Changed + * + * Do not use. Only for use in middleware. + */ +export const socketQueueItemStatusChanged = createAction<{ + data: QueueItemStatusChangedEvent; +}>('socket/socketQueueItemStatusChanged'); + +/** + * App-level Quueue Item Status Changed + */ +export const appSocketQueueItemStatusChanged = createAction<{ + data: QueueItemStatusChangedEvent; +}>('socket/appSocketQueueItemStatusChanged'); diff --git a/invokeai/frontend/web/src/services/events/middleware.ts b/invokeai/frontend/web/src/services/events/middleware.ts index 56992be672..ce35cf141e 100644 --- a/invokeai/frontend/web/src/services/events/middleware.ts +++ b/invokeai/frontend/web/src/services/events/middleware.ts @@ -1,14 +1,12 @@ import { Middleware, MiddlewareAPI } from '@reduxjs/toolkit'; import { AppThunkDispatch, RootState } from 'app/store/store'; import { $authToken, $baseUrl } from 'services/api/client'; -import { sessionCreated } from 'services/api/thunks/session'; import { ClientToServerEvents, ServerToClientEvents, } from 'services/events/types'; import { setEventListeners } from 'services/events/util/setEventListeners'; import { Socket, io } from 'socket.io-client'; -import { socketSubscribed, socketUnsubscribed } from './actions'; export const socketMiddleware = () => { let areListenersSet = false; @@ -48,8 +46,6 @@ export const socketMiddleware = () => { (storeApi: MiddlewareAPI) => (next) => (action) => { - const { dispatch, getState } = storeApi; - // Set listeners for `connect` and `disconnect` events once // Must happen in middleware to get access to `dispatch` if (!areListenersSet) { @@ -60,31 +56,6 @@ export const socketMiddleware = () => { socket.connect(); } - if (sessionCreated.fulfilled.match(action)) { - const sessionId = action.payload.id; - const oldSessionId = getState().system.sessionId; - - if (oldSessionId) { - socket.emit('unsubscribe', { - session: oldSessionId, - }); - - dispatch( - socketUnsubscribed({ - sessionId: oldSessionId, - }) - ); - } - - socket.emit('subscribe', { session: sessionId }); - - dispatch( - socketSubscribed({ - sessionId: sessionId, - }) - ); - } - next(action); }; diff --git a/invokeai/frontend/web/src/services/events/types.ts b/invokeai/frontend/web/src/services/events/types.ts index 37f5f24eac..47a3d83eba 100644 --- a/invokeai/frontend/web/src/services/events/types.ts +++ b/invokeai/frontend/web/src/services/events/types.ts @@ -1,3 +1,4 @@ +import { components } from 'services/api/schema'; import { O } from 'ts-toolbelt'; import { BaseModelType, @@ -32,6 +33,9 @@ export type BaseNode = { }; export type ModelLoadStartedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; model_name: string; base_model: BaseModelType; @@ -40,6 +44,9 @@ export type ModelLoadStartedEvent = { }; export type ModelLoadCompletedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; model_name: string; base_model: BaseModelType; @@ -56,11 +63,15 @@ export type ModelLoadCompletedEvent = { * @example socket.on('generator_progress', (data: GeneratorProgressEvent) => { ... } */ export type GeneratorProgressEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; - node: BaseNode; + node_id: string; source_node_id: string; progress_image?: ProgressImage; step: number; + order: number; total_steps: number; }; @@ -72,6 +83,9 @@ export type GeneratorProgressEvent = { * @example socket.on('invocation_complete', (data: InvocationCompleteEvent) => { ... } */ export type InvocationCompleteEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -84,6 +98,9 @@ export type InvocationCompleteEvent = { * @example socket.on('invocation_error', (data: InvocationErrorEvent) => { ... } */ export type InvocationErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -97,6 +114,9 @@ export type InvocationErrorEvent = { * @example socket.on('invocation_started', (data: InvocationStartedEvent) => { ... } */ export type InvocationStartedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node: BaseNode; source_node_id: string; @@ -108,6 +128,9 @@ export type InvocationStartedEvent = { * @example socket.on('graph_execution_state_complete', (data: GraphExecutionStateCompleteEvent) => { ... } */ export type GraphExecutionStateCompleteEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; }; @@ -117,6 +140,9 @@ export type GraphExecutionStateCompleteEvent = { * @example socket.on('session_retrieval_error', (data: SessionRetrievalErrorEvent) => { ... } */ export type SessionRetrievalErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; error_type: string; error: string; @@ -128,18 +154,40 @@ export type SessionRetrievalErrorEvent = { * @example socket.on('invocation_retrieval_error', (data: InvocationRetrievalErrorEvent) => { ... } */ export type InvocationRetrievalErrorEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; graph_execution_state_id: string; node_id: string; error_type: string; error: string; }; -export type ClientEmitSubscribe = { - session: string; +/** + * A `queue_item_status_changed` socket.io event. + * + * @example socket.on('queue_item_status_changed', (data: QueueItemStatusChangedEvent) => { ... } + */ +export type QueueItemStatusChangedEvent = { + queue_id: string; + queue_item_id: number; + queue_batch_id: string; + session_id: string; + graph_execution_state_id: string; + status: components['schemas']['SessionQueueItemDTO']['status']; + error: string | undefined; + created_at: string; + updated_at: string; + started_at: string | undefined; + completed_at: string | undefined; }; -export type ClientEmitUnsubscribe = { - session: string; +export type ClientEmitSubscribeQueue = { + queue_id: string; +}; + +export type ClientEmitUnsubscribeQueue = { + queue_id: string; }; export type ServerToClientEvents = { @@ -154,11 +202,12 @@ export type ServerToClientEvents = { model_load_completed: (payload: ModelLoadCompletedEvent) => void; session_retrieval_error: (payload: SessionRetrievalErrorEvent) => void; invocation_retrieval_error: (payload: InvocationRetrievalErrorEvent) => void; + queue_item_status_changed: (payload: QueueItemStatusChangedEvent) => void; }; export type ClientToServerEvents = { connect: () => void; disconnect: () => void; - subscribe: (payload: ClientEmitSubscribe) => void; - unsubscribe: (payload: ClientEmitUnsubscribe) => void; + subscribe_queue: (payload: ClientEmitSubscribeQueue) => void; + unsubscribe_queue: (payload: ClientEmitUnsubscribeQueue) => void; }; diff --git a/invokeai/frontend/web/src/services/events/util/setEventListeners.ts b/invokeai/frontend/web/src/services/events/util/setEventListeners.ts index 9ebb7ffbff..0f4d21d2e1 100644 --- a/invokeai/frontend/web/src/services/events/util/setEventListeners.ts +++ b/invokeai/frontend/web/src/services/events/util/setEventListeners.ts @@ -1,6 +1,7 @@ import { MiddlewareAPI } from '@reduxjs/toolkit'; import { logger } from 'app/logging/logger'; import { AppDispatch, RootState } from 'app/store/store'; +import { $queueId } from 'features/queue/store/nanoStores'; import { addToast } from 'features/system/store/systemSlice'; import { makeToast } from 'features/system/util/makeToast'; import { Socket } from 'socket.io-client'; @@ -15,8 +16,8 @@ import { socketInvocationStarted, socketModelLoadCompleted, socketModelLoadStarted, + socketQueueItemStatusChanged, socketSessionRetrievalError, - socketSubscribed, } from '../actions'; import { ClientToServerEvents, ServerToClientEvents } from '../types'; @@ -27,7 +28,7 @@ type SetEventListenersArg = { export const setEventListeners = (arg: SetEventListenersArg) => { const { socket, storeApi } = arg; - const { dispatch, getState } = storeApi; + const { dispatch } = storeApi; /** * Connect @@ -37,17 +38,8 @@ export const setEventListeners = (arg: SetEventListenersArg) => { log.debug('Connected'); dispatch(socketConnected()); - - const { sessionId } = getState().system; - - if (sessionId) { - socket.emit('subscribe', { session: sessionId }); - dispatch( - socketSubscribed({ - sessionId, - }) - ); - } + const queue_id = $queueId.get(); + socket.emit('subscribe_queue', { queue_id }); }); socket.on('connect_error', (error) => { @@ -162,4 +154,8 @@ export const setEventListeners = (arg: SetEventListenersArg) => { }) ); }); + + socket.on('queue_item_status_changed', (data) => { + dispatch(socketQueueItemStatusChanged({ data })); + }); }; diff --git a/invokeai/frontend/web/src/theme/colors/colors.ts b/invokeai/frontend/web/src/theme/colors/colors.ts index 99260ee071..6f1f1c2cc7 100644 --- a/invokeai/frontend/web/src/theme/colors/colors.ts +++ b/invokeai/frontend/web/src/theme/colors/colors.ts @@ -3,15 +3,11 @@ import { generateColorPalette } from 'theme/util/generateColorPalette'; const BASE = { H: 220, S: 16 }; const ACCENT = { H: 250, S: 42 }; -// const ACCENT = { H: 250, S: 52 }; const WORKING = { H: 47, S: 42 }; -// const WORKING = { H: 47, S: 50 }; +const GOLD = { H: 40, S: 70 }; const WARNING = { H: 28, S: 42 }; -// const WARNING = { H: 28, S: 50 }; const OK = { H: 113, S: 42 }; -// const OK = { H: 113, S: 50 }; const ERROR = { H: 0, S: 42 }; -// const ERROR = { H: 0, S: 50 }; export const InvokeAIColors: InvokeAIThemeColors = { base: generateColorPalette(BASE.H, BASE.S), @@ -20,6 +16,8 @@ export const InvokeAIColors: InvokeAIThemeColors = { accentAlpha: generateColorPalette(ACCENT.H, ACCENT.S, true), working: generateColorPalette(WORKING.H, WORKING.S), workingAlpha: generateColorPalette(WORKING.H, WORKING.S, true), + gold: generateColorPalette(GOLD.H, GOLD.S), + goldAlpha: generateColorPalette(GOLD.H, GOLD.S, true), warning: generateColorPalette(WARNING.H, WARNING.S), warningAlpha: generateColorPalette(WARNING.H, WARNING.S, true), ok: generateColorPalette(OK.H, OK.S), diff --git a/invokeai/frontend/web/src/theme/components/button.ts b/invokeai/frontend/web/src/theme/components/button.ts index 056f3c145d..fc6cde9cd0 100644 --- a/invokeai/frontend/web/src/theme/components/button.ts +++ b/invokeai/frontend/web/src/theme/components/button.ts @@ -10,7 +10,7 @@ const invokeAI = defineStyle((props) => { bg: mode('base.150', 'base.700')(props), color: mode('base.300', 'base.500')(props), svg: { - fill: mode('base.500', 'base.500')(props), + fill: mode('base.300', 'base.500')(props), }, opacity: 1, }; @@ -45,25 +45,14 @@ const invokeAI = defineStyle((props) => { } const _disabled = { - bg: mode(`${c}.250`, `${c}.700`)(props), - color: mode(`${c}.50`, `${c}.500`)(props), + bg: mode(`${c}.400`, `${c}.700`)(props), + color: mode(`${c}.600`, `${c}.500`)(props), svg: { - fill: mode(`${c}.50`, `${c}.500`)(props), - filter: 'unset', - }, - opacity: 1, - filter: mode(undefined, 'saturate(65%)')(props), - }; - - const data_progress = { - // bg: 'none', - color: mode(`${c}.50`, `${c}.500`)(props), - svg: { - fill: mode(`${c}.50`, `${c}.500`)(props), + fill: mode(`${c}.600`, `${c}.500`)(props), filter: 'unset', }, opacity: 0.7, - filter: mode(undefined, 'saturate(65%)')(props), + filter: 'saturate(65%)', }; return { @@ -82,7 +71,6 @@ const invokeAI = defineStyle((props) => { }, _disabled, }, - '&[data-progress="true"]': { ...data_progress, _hover: data_progress }, }; }); @@ -92,6 +80,13 @@ const invokeAIOutline = defineStyle((props) => { return { border: '1px solid', borderColor: c === 'gray' ? borderColor : 'currentColor', + _hover: { + bg: mode(`${c}.500`, `${c}.500`)(props), + color: mode('white', `base.50`)(props), + svg: { + fill: mode('white', `base.50`)(props), + }, + }, '.chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)': { marginEnd: '-1px', diff --git a/invokeai/frontend/web/src/theme/components/popover.ts b/invokeai/frontend/web/src/theme/components/popover.ts index a28e2bfbc4..db46f79084 100644 --- a/invokeai/frontend/web/src/theme/components/popover.ts +++ b/invokeai/frontend/web/src/theme/components/popover.ts @@ -29,13 +29,35 @@ const invokeAIContent = defineStyle((props) => { }; }); +const informationalContent = defineStyle((props) => { + return { + [$arrowBg.variable]: mode('colors.base.100', 'colors.base.700')(props), + [$popperBg.variable]: mode('colors.base.100', 'colors.base.700')(props), + [$arrowShadowColor.variable]: mode( + 'colors.base.400', + 'colors.base.400' + )(props), + p: 4, + bg: mode('base.100', 'base.700')(props), + border: 'none', + shadow: 'dark-lg', + }; +}); + const invokeAI = definePartsStyle((props) => ({ content: invokeAIContent(props), + body: { padding: 0 }, +})); + +const informational = definePartsStyle((props) => ({ + content: informationalContent(props), + body: { padding: 0 }, })); export const popoverTheme = defineMultiStyleConfig({ variants: { invokeAI, + informational, }, defaultProps: { variant: 'invokeAI', diff --git a/invokeai/frontend/web/src/theme/components/table.ts b/invokeai/frontend/web/src/theme/components/table.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/invokeai/frontend/web/src/theme/theme.ts b/invokeai/frontend/web/src/theme/theme.ts index c2376a5777..3b83ea2393 100644 --- a/invokeai/frontend/web/src/theme/theme.ts +++ b/invokeai/frontend/web/src/theme/theme.ts @@ -76,6 +76,7 @@ export const theme: ThemeOverride = { direction: 'ltr', fonts: { body: `'Inter Variable', sans-serif`, + heading: `'Inter Variable', sans-serif`, }, shadows: { light: { diff --git a/invokeai/frontend/web/src/theme/themeTypes.d.ts b/invokeai/frontend/web/src/theme/themeTypes.d.ts index c85ebd33ce..f2fd1ea85d 100644 --- a/invokeai/frontend/web/src/theme/themeTypes.d.ts +++ b/invokeai/frontend/web/src/theme/themeTypes.d.ts @@ -3,6 +3,8 @@ export type InvokeAIThemeColors = { baseAlpha: Partial; accent: Partial; accentAlpha: Partial; + gold: Partial; + goldAlpha: Partial; working: Partial; workingAlpha: Partial; warning: Partial; diff --git a/invokeai/version/invokeai_version.py b/invokeai/version/invokeai_version.py index f5f41e567e..d539d50ceb 100644 --- a/invokeai/version/invokeai_version.py +++ b/invokeai/version/invokeai_version.py @@ -1 +1 @@ -__version__ = "3.1.0" +__version__ = "3.1.1" diff --git a/mkdocs.yml b/mkdocs.yml index 2888f2e6ba..f4e0688878 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json # General -site_name: InvokeAI Stable Diffusion Toolkit Docs +site_name: InvokeAI Documentation site_url: https://invoke-ai.github.io/InvokeAI site_author: mauwii dev_addr: '127.0.0.1:8080' @@ -148,7 +148,7 @@ nav: - NSFW Checker: 'features/WATERMARK+NSFW.md' - Postprocessing: 'features/POSTPROCESS.md' - Prompting Features: 'features/PROMPTS.md' - - Training: 'features/TRAINING.md' + - Textual Inversion Training: 'features/TRAINING.md' - Unified Canvas: 'features/UNIFIED_CANVAS.md' - InvokeAI Web Server: 'features/WEB.md' - WebUI Hotkeys: "features/WEBUIHOTKEYS.md" @@ -157,8 +157,9 @@ nav: - How to Contribute: 'contributing/CONTRIBUTING.md' - Development: - Overview: 'contributing/contribution_guides/development.md' + - New Contributors: 'contributing/contribution_guides/newContributorChecklist.md' - InvokeAI Architecture: 'contributing/ARCHITECTURE.md' - - Frontend Documentation: 'contributing/contribution_guides/development_guides/contributingToFrontend.md' + - Frontend Documentation: 'contributing/contribution_guides/contributingToFrontend.md' - Local Development: 'contributing/LOCAL_DEVELOPMENT.md' - Documentation: 'contributing/contribution_guides/documentation.md' - Nodes: 'contributing/INVOCATIONS.md' diff --git a/pyproject.toml b/pyproject.toml index 4b06944b33..21cda5eebd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ classifiers = [ 'Topic :: Scientific/Engineering :: Image Processing', ] dependencies = [ - "accelerate~=0.21.0", + "accelerate~=0.23.0", "albumentations", "click", "clip_anytorch", # replacing "clip @ https://github.com/openai/CLIP/archive/eaa22acb90a5876642d0507623e859909230a52d.zip", @@ -40,7 +40,7 @@ dependencies = [ "controlnet-aux>=0.0.6", "timm==0.6.13", # needed to override timm latest in controlnet_aux, see https://github.com/isl-org/ZoeDepth/issues/26 "datasets", - "diffusers[torch]~=0.20.0", + "diffusers[torch]~=0.21.0", "dnspython~=2.4.0", "dynamicprompts", "easing-functions", @@ -48,7 +48,6 @@ dependencies = [ "facexlib", "fastapi==0.88.0", "fastapi-events==0.8.0", - "fastapi-socketio==0.0.10", "huggingface-hub~=0.16.4", "invisible-watermark~=0.2.0", # needed to install SDXL base and refiner using their repo_ids "matplotlib", # needed for plotting of Penner easing functions @@ -68,11 +67,12 @@ dependencies = [ 'pyperclip', "pyreadline3", "python-multipart", + "python-socketio", "pytorch-lightning", "realesrgan", "requests~=2.28.2", "rich~=13.3", - "safetensors==0.3.1", + "safetensors~=0.3.1", "scikit-image~=0.21.0", "semver~=3.0.1", "send2trash", @@ -101,6 +101,8 @@ dependencies = [ "black", "flake8", "Flake8-pyproject", + "isort", + "pre-commit", "pytest>6.0.0", "pytest-cov", "pytest-datadir", @@ -140,10 +142,11 @@ dependencies = [ "invokeai-model-install" = "invokeai.frontend.install.model_install:main" "invokeai-migrate3" = "invokeai.backend.install.migrate_to_3:main" "invokeai-update" = "invokeai.frontend.install.invokeai_update:main" -"invokeai-metadata" = "invokeai.frontend.CLI.sd_metadata:print_metadata" +"invokeai-metadata" = "invokeai.backend.image_util.invoke_metadata:main" "invokeai-node-cli" = "invokeai.app.cli_app:invoke_cli" "invokeai-node-web" = "invokeai.app.api_app:invoke_api" "invokeai-import-images" = "invokeai.frontend.install.import_images:main" +"invokeai-db-maintenance" = "invokeai.backend.util.db_maintenance:main" [project.urls] "Homepage" = "https://invoke-ai.github.io/InvokeAI/" @@ -196,6 +199,17 @@ output = "coverage/index.xml" max-line-length = 120 ignore = ["E203", "E266", "E501", "W503"] select = ["B", "C", "E", "F", "W", "T4"] +exclude = [ + ".git", + "__pycache__", + "build", + "dist", + "invokeai/frontend/web/node_modules/" +] [tool.black] line-length = 120 + +[tool.isort] +profile = "black" +line_length = 120 diff --git a/scripts/configure_invokeai.py b/scripts/configure_invokeai.py index b40194c6ce..98e5044511 100755 --- a/scripts/configure_invokeai.py +++ b/scripts/configure_invokeai.py @@ -2,6 +2,7 @@ # Copyright (c) 2022 Lincoln D. Stein (https://github.com/lstein) import warnings + from invokeai.frontend.install.invokeai_configure import invokeai_configure as configure if __name__ == "__main__": diff --git a/scripts/images2prompt.py b/scripts/images2prompt.py index fdfe52774b..b12ff562fa 100755 --- a/scripts/images2prompt.py +++ b/scripts/images2prompt.py @@ -2,6 +2,7 @@ """This script reads the "Invoke" Stable Diffusion prompt embedded in files generated by invoke.py""" import sys + from PIL import Image if len(sys.argv) < 2: diff --git a/scripts/invokeai-cli.py b/scripts/invokeai-cli.py index 58aca1b5f3..73c0f6e7c3 100755 --- a/scripts/invokeai-cli.py +++ b/scripts/invokeai-cli.py @@ -2,8 +2,8 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) -import os import logging +import os logging.getLogger("xformers").addFilter(lambda record: "A matching Triton is not available" not in record.getMessage()) diff --git a/scripts/invokeai-web.py b/scripts/invokeai-web.py index ebdf7cfa81..09475cc9e5 100755 --- a/scripts/invokeai-web.py +++ b/scripts/invokeai-web.py @@ -2,8 +2,8 @@ # Copyright (c) 2022 Kyle Schouviller (https://github.com/kyle0654) -import os import logging +import os logging.getLogger("xformers").addFilter(lambda record: "A matching Triton is not available" not in record.getMessage()) diff --git a/scripts/make_models_markdown_table.py b/scripts/make_models_markdown_table.py index 8e7c528a46..0af5085ff5 100755 --- a/scripts/make_models_markdown_table.py +++ b/scripts/make_models_markdown_table.py @@ -5,9 +5,10 @@ This script is used at release time to generate a markdown table describing the starter models. This text is then manually copied into 050_INSTALL_MODELS.md. """ -from omegaconf import OmegaConf from pathlib import Path +from omegaconf import OmegaConf + def main(): initial_models_file = Path(__file__).parent / "../invokeai/configs/INITIAL_MODELS.yaml" diff --git a/scripts/probe-model.py b/scripts/probe-model.py index 9b4ee6e815..05741de806 100755 --- a/scripts/probe-model.py +++ b/scripts/probe-model.py @@ -2,6 +2,7 @@ import argparse from pathlib import Path + from invokeai.backend.model_management.model_probe import ModelProbe parser = argparse.ArgumentParser(description="Probe model type") diff --git a/scripts/scan_models_directory.py b/scripts/scan_models_directory.py index de7278f5b7..0038023c06 100755 --- a/scripts/scan_models_directory.py +++ b/scripts/scan_models_directory.py @@ -4,11 +4,11 @@ Scan the models directory and print out a new models.yaml """ +import argparse import os import sys -import argparse - from pathlib import Path + from omegaconf import OmegaConf diff --git a/scripts/sd-metadata.py b/scripts/sd-metadata.py index 1a27e73d95..b3ce4fd66e 100755 --- a/scripts/sd-metadata.py +++ b/scripts/sd-metadata.py @@ -1,7 +1,8 @@ #!/usr/bin/env python -import sys import json +import sys + from invokeai.backend.image_util import retrieve_metadata if len(sys.argv) < 2: diff --git a/tests/nodes/test_graph_execution_state.py b/tests/nodes/test_graph_execution_state.py index cdb9815f83..e43075bd32 100644 --- a/tests/nodes/test_graph_execution_state.py +++ b/tests/nodes/test_graph_execution_state.py @@ -1,30 +1,31 @@ -from .test_invoker import create_edge -from .test_nodes import ( +import logging +import threading + +import pytest + +# This import must happen before other invoke imports or test in other files(!!) break +from .test_nodes import ( # isort: split + PromptCollectionTestInvocation, + PromptTestInvocation, TestEventService, TextToImageTestInvocation, - PromptTestInvocation, - PromptCollectionTestInvocation, -) -from invokeai.app.services.invocation_queue import MemoryInvocationQueue -from invokeai.app.services.processor import DefaultInvocationProcessor -from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory -from invokeai.app.invocations.baseinvocation import ( - BaseInvocation, - BaseInvocationOutput, - InvocationContext, ) +import sqlite3 + +from invokeai.app.invocations.baseinvocation import BaseInvocation, BaseInvocationOutput, InvocationContext from invokeai.app.invocations.collections import RangeInvocation from invokeai.app.invocations.math import AddInvocation, MultiplyInvocation +from invokeai.app.services.config.invokeai_config import InvokeAIAppConfig +from invokeai.app.services.graph import CollectInvocation, Graph, GraphExecutionState, IterateInvocation, LibraryGraph +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache +from invokeai.app.services.invocation_queue import MemoryInvocationQueue from invokeai.app.services.invocation_services import InvocationServices from invokeai.app.services.invocation_stats import InvocationStatsService -from invokeai.app.services.graph import ( - Graph, - CollectInvocation, - IterateInvocation, - GraphExecutionState, - LibraryGraph, -) -import pytest +from invokeai.app.services.processor import DefaultInvocationProcessor +from invokeai.app.services.session_queue.session_queue_common import DEFAULT_QUEUE_ID +from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory + +from .test_invoker import create_edge @pytest.fixture @@ -41,24 +42,29 @@ def simple_graph(): # the test invocations. @pytest.fixture def mock_services() -> InvocationServices: + lock = threading.Lock() # NOTE: none of these are actually called by the test invocations + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=sqlite_memory, table_name="graph_executions" + conn=db_conn, table_name="graph_executions", lock=lock ) return InvocationServices( model_manager=None, # type: ignore events=TestEventService(), - logger=None, # type: ignore + logger=logging, # type: ignore images=None, # type: ignore latents=None, # type: ignore boards=None, # type: ignore board_images=None, # type: ignore queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=sqlite_memory, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, table_name="graphs", lock=lock), graph_execution_manager=graph_execution_manager, performance_statistics=InvocationStatsService(graph_execution_manager), processor=DefaultInvocationProcessor(), - configuration=None, # type: ignore + configuration=InvokeAIAppConfig(node_cache_size=0), # type: ignore + session_queue=None, # type: ignore + session_processor=None, # type: ignore + invocation_cache=MemoryInvocationCache(), # type: ignore ) @@ -68,7 +74,15 @@ def invoke_next(g: GraphExecutionState, services: InvocationServices) -> tuple[B return (None, None) print(f"invoking {n.id}: {type(n)}") - o = n.invoke(InvocationContext(services, "1")) + o = n.invoke( + InvocationContext( + queue_batch_id="1", + queue_item_id=1, + queue_id=DEFAULT_QUEUE_ID, + services=services, + graph_execution_state_id="1", + ) + ) g.complete(n.id, o) return (n, o) diff --git a/tests/nodes/test_invoker.py b/tests/nodes/test_invoker.py index 5985c7e8bb..7c636c3eca 100644 --- a/tests/nodes/test_invoker.py +++ b/tests/nodes/test_invoker.py @@ -1,23 +1,30 @@ -from .test_nodes import ( - TestEventService, +import logging +import sqlite3 +import threading + +import pytest + +from invokeai.app.services.config.invokeai_config import InvokeAIAppConfig + +# This import must happen before other invoke imports or test in other files(!!) break +from .test_nodes import ( # isort: split ErrorInvocation, - TextToImageTestInvocation, PromptTestInvocation, + TestEventService, + TextToImageTestInvocation, create_edge, wait_until, ) + +from invokeai.app.services.graph import Graph, GraphExecutionState, GraphInvocation, LibraryGraph +from invokeai.app.services.invocation_cache.invocation_cache_memory import MemoryInvocationCache from invokeai.app.services.invocation_queue import MemoryInvocationQueue -from invokeai.app.services.processor import DefaultInvocationProcessor -from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory -from invokeai.app.services.invoker import Invoker from invokeai.app.services.invocation_services import InvocationServices from invokeai.app.services.invocation_stats import InvocationStatsService -from invokeai.app.services.graph import ( - Graph, - GraphExecutionState, - LibraryGraph, -) -import pytest +from invokeai.app.services.invoker import Invoker +from invokeai.app.services.processor import DefaultInvocationProcessor +from invokeai.app.services.session_queue.session_queue_common import DEFAULT_QUEUE_ID +from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory @pytest.fixture @@ -29,29 +36,45 @@ def simple_graph(): return g +@pytest.fixture +def graph_with_subgraph(): + sub_g = Graph() + sub_g.add_node(PromptTestInvocation(id="1", prompt="Banana sushi")) + sub_g.add_node(TextToImageTestInvocation(id="2")) + sub_g.add_edge(create_edge("1", "prompt", "2", "prompt")) + g = Graph() + g.add_node(GraphInvocation(id="1", graph=sub_g)) + return g + + # This must be defined here to avoid issues with the dynamic creation of the union of all invocation types # Defining it in a separate module will cause the union to be incomplete, and pydantic will not validate # the test invocations. @pytest.fixture def mock_services() -> InvocationServices: + lock = threading.Lock() # NOTE: none of these are actually called by the test invocations + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) graph_execution_manager = SqliteItemStorage[GraphExecutionState]( - filename=sqlite_memory, table_name="graph_executions" + conn=db_conn, table_name="graph_executions", lock=lock ) return InvocationServices( model_manager=None, # type: ignore events=TestEventService(), - logger=None, # type: ignore + logger=logging, # type: ignore images=None, # type: ignore latents=None, # type: ignore boards=None, # type: ignore board_images=None, # type: ignore queue=MemoryInvocationQueue(), - graph_library=SqliteItemStorage[LibraryGraph](filename=sqlite_memory, table_name="graphs"), + graph_library=SqliteItemStorage[LibraryGraph](conn=db_conn, table_name="graphs", lock=lock), graph_execution_manager=graph_execution_manager, processor=DefaultInvocationProcessor(), performance_statistics=InvocationStatsService(graph_execution_manager), - configuration=None, # type: ignore + configuration=InvokeAIAppConfig(node_cache_size=0), # type: ignore + session_queue=None, # type: ignore + session_processor=None, # type: ignore + invocation_cache=MemoryInvocationCache(max_cache_size=0), ) @@ -80,7 +103,12 @@ def test_can_create_graph_state_from_graph(mock_invoker: Invoker, simple_graph): # @pytest.mark.xfail(reason = "Requires fixing following the model manager refactor") def test_can_invoke(mock_invoker: Invoker, simple_graph): g = mock_invoker.create_execution_state(graph=simple_graph) - invocation_id = mock_invoker.invoke(g) + invocation_id = mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + ) assert invocation_id is not None def has_executed_any(g: GraphExecutionState): @@ -97,7 +125,13 @@ def test_can_invoke(mock_invoker: Invoker, simple_graph): # @pytest.mark.xfail(reason = "Requires fixing following the model manager refactor") def test_can_invoke_all(mock_invoker: Invoker, simple_graph): g = mock_invoker.create_execution_state(graph=simple_graph) - invocation_id = mock_invoker.invoke(g, invoke_all=True) + invocation_id = mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + invoke_all=True, + ) assert invocation_id is not None def has_executed_all(g: GraphExecutionState): @@ -116,7 +150,13 @@ def test_handles_errors(mock_invoker: Invoker): g = mock_invoker.create_execution_state() g.graph.add_node(ErrorInvocation(id="1")) - mock_invoker.invoke(g, invoke_all=True) + mock_invoker.invoke( + session_queue_batch_id="1", + session_queue_item_id=1, + session_queue_id=DEFAULT_QUEUE_ID, + graph_execution_state=g, + invoke_all=True, + ) def has_executed_all(g: GraphExecutionState): g = mock_invoker.services.graph_execution_manager.get(g.id) diff --git a/tests/nodes/test_node_graph.py b/tests/nodes/test_node_graph.py index 0e1be8f343..4793e6ffa6 100644 --- a/tests/nodes/test_node_graph.py +++ b/tests/nodes/test_node_graph.py @@ -1,3 +1,5 @@ +import pytest + from invokeai.app.invocations.baseinvocation import ( BaseInvocation, BaseInvocationOutput, @@ -5,31 +7,30 @@ from invokeai.app.invocations.baseinvocation import ( invocation, invocation_output, ) -from .test_nodes import ( - ImageToImageTestInvocation, - TextToImageTestInvocation, - ListPassThroughInvocation, - PromptTestInvocation, -) -from invokeai.app.services.graph import ( - Edge, - Graph, - GraphInvocation, - InvalidEdgeError, - NodeAlreadyInGraphError, - NodeNotFoundError, - are_connections_compatible, - EdgeConnection, - CollectInvocation, - IterateInvocation, -) -from invokeai.app.invocations.upscale import ESRGANInvocation - from invokeai.app.invocations.image import ShowImageInvocation from invokeai.app.invocations.math import AddInvocation, SubtractInvocation from invokeai.app.invocations.primitives import FloatInvocation, IntegerInvocation +from invokeai.app.invocations.upscale import ESRGANInvocation from invokeai.app.services.default_graphs import create_text_to_image -import pytest +from invokeai.app.services.graph import ( + CollectInvocation, + Edge, + EdgeConnection, + Graph, + GraphInvocation, + InvalidEdgeError, + IterateInvocation, + NodeAlreadyInGraphError, + NodeNotFoundError, + are_connections_compatible, +) + +from .test_nodes import ( + ImageToImageTestInvocation, + ListPassThroughInvocation, + PromptTestInvocation, + TextToImageTestInvocation, +) # Helpers diff --git a/tests/nodes/test_nodes.py b/tests/nodes/test_nodes.py index 26b8b2b565..96a5040a38 100644 --- a/tests/nodes/test_nodes.py +++ b/tests/nodes/test_nodes.py @@ -1,5 +1,7 @@ from typing import Any, Callable, Union + from pydantic import Field + from invokeai.app.invocations.baseinvocation import ( BaseInvocation, BaseInvocationOutput, @@ -51,6 +53,7 @@ class ImageTestInvocationOutput(BaseInvocationOutput): @invocation("test_text_to_image") class TextToImageTestInvocation(BaseInvocation): prompt: str = Field(default="") + prompt2: str = Field(default="") def invoke(self, context: InvocationContext) -> ImageTestInvocationOutput: return ImageTestInvocationOutput(image=ImageField(image_name=self.id)) @@ -78,7 +81,7 @@ class PromptCollectionTestInvocation(BaseInvocation): return PromptCollectionTestInvocationOutput(collection=self.collection.copy()) -# Importing these at the top breaks previous tests +# Importing these must happen after test invocations are defined or they won't register from invokeai.app.services.events import EventServiceBase # noqa: E402 from invokeai.app.services.graph import Edge, EdgeConnection # noqa: E402 diff --git a/tests/nodes/test_session_queue.py b/tests/nodes/test_session_queue.py new file mode 100644 index 0000000000..f28ec1ac54 --- /dev/null +++ b/tests/nodes/test_session_queue.py @@ -0,0 +1,255 @@ +import pytest +from pydantic import ValidationError, parse_raw_as + +from invokeai.app.services.graph import Graph, GraphExecutionState, GraphInvocation +from invokeai.app.services.session_queue.session_queue_common import ( + Batch, + BatchDataCollection, + BatchDatum, + NodeFieldValue, + calc_session_count, + create_session_nfv_tuples, + populate_graph, + prepare_values_to_insert, +) +from tests.nodes.test_nodes import PromptTestInvocation + + +@pytest.fixture +def batch_data_collection() -> BatchDataCollection: + return [ + [ + # zipped + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi", "Grape sushi"]), + BatchDatum(node_path="2", field_name="prompt", items=["Strawberry sushi", "Blueberry sushi"]), + ], + [ + BatchDatum(node_path="3", field_name="prompt", items=["Orange sushi", "Apple sushi"]), + ], + ] + + +@pytest.fixture +def batch_graph() -> Graph: + g = Graph() + g.add_node(PromptTestInvocation(id="1", prompt="Chevy")) + g.add_node(PromptTestInvocation(id="2", prompt="Toyota")) + g.add_node(PromptTestInvocation(id="3", prompt="Subaru")) + g.add_node(PromptTestInvocation(id="4", prompt="Nissan")) + return g + + +def test_populate_graph_with_subgraph(): + g1 = Graph() + g1.add_node(PromptTestInvocation(id="1", prompt="Banana sushi")) + g1.add_node(PromptTestInvocation(id="2", prompt="Banana sushi")) + n1 = PromptTestInvocation(id="1", prompt="Banana snake") + subgraph = Graph() + subgraph.add_node(n1) + g1.add_node(GraphInvocation(id="3", graph=subgraph)) + + nfvs = [ + NodeFieldValue(node_path="1", field_name="prompt", value="Strawberry sushi"), + NodeFieldValue(node_path="2", field_name="prompt", value="Strawberry sunday"), + NodeFieldValue(node_path="3.1", field_name="prompt", value="Strawberry snake"), + ] + + g2 = populate_graph(g1, nfvs) + + # do not mutate g1 + assert g1 is not g2 + assert g2.get_node("1").prompt == "Strawberry sushi" + assert g2.get_node("2").prompt == "Strawberry sunday" + assert g2.get_node("3.1").prompt == "Strawberry snake" + + +def test_create_sessions_from_batch_with_runs(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 list[BatchDatum] * length 2 * 2 runs = 8 + assert len(t) == 8 + + assert t[0][0].graph.get_node("1").prompt == "Banana sushi" + assert t[0][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[0][0].graph.get_node("3").prompt == "Orange sushi" + assert t[0][0].graph.get_node("4").prompt == "Nissan" + + assert t[1][0].graph.get_node("1").prompt == "Banana sushi" + assert t[1][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[1][0].graph.get_node("3").prompt == "Apple sushi" + assert t[1][0].graph.get_node("4").prompt == "Nissan" + + assert t[2][0].graph.get_node("1").prompt == "Grape sushi" + assert t[2][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[2][0].graph.get_node("3").prompt == "Orange sushi" + assert t[2][0].graph.get_node("4").prompt == "Nissan" + + assert t[3][0].graph.get_node("1").prompt == "Grape sushi" + assert t[3][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[3][0].graph.get_node("3").prompt == "Apple sushi" + assert t[3][0].graph.get_node("4").prompt == "Nissan" + + # repeat for second run + assert t[4][0].graph.get_node("1").prompt == "Banana sushi" + assert t[4][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[4][0].graph.get_node("3").prompt == "Orange sushi" + assert t[4][0].graph.get_node("4").prompt == "Nissan" + + assert t[5][0].graph.get_node("1").prompt == "Banana sushi" + assert t[5][0].graph.get_node("2").prompt == "Strawberry sushi" + assert t[5][0].graph.get_node("3").prompt == "Apple sushi" + assert t[5][0].graph.get_node("4").prompt == "Nissan" + + assert t[6][0].graph.get_node("1").prompt == "Grape sushi" + assert t[6][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[6][0].graph.get_node("3").prompt == "Orange sushi" + assert t[6][0].graph.get_node("4").prompt == "Nissan" + + assert t[7][0].graph.get_node("1").prompt == "Grape sushi" + assert t[7][0].graph.get_node("2").prompt == "Blueberry sushi" + assert t[7][0].graph.get_node("3").prompt == "Apple sushi" + assert t[7][0].graph.get_node("4").prompt == "Nissan" + + +def test_create_sessions_from_batch_without_runs(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 list[BatchDatum] * length 2 * 1 runs = 8 + assert len(t) == 4 + + +def test_create_sessions_from_batch_without_batch(batch_graph): + b = Batch(graph=batch_graph, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 2 runs + assert len(t) == 2 + + +def test_create_sessions_from_batch_without_batch_or_runs(batch_graph): + b = Batch(graph=batch_graph) + t = list(create_session_nfv_tuples(batch=b, maximum=1000)) + # 1 run + assert len(t) == 1 + + +def test_create_sessions_from_batch_with_runs_and_max(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + t = list(create_session_nfv_tuples(batch=b, maximum=5)) + # 2 list[BatchDatum] * length 2 * 2 runs = 8, but max is 5 + assert len(t) == 5 + + +def test_calc_session_count(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + # 2 list[BatchDatum] * length 2 * 2 runs = 8 + assert calc_session_count(batch=b) == 8 + + +def test_prepare_values_to_insert(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=0, max_new_queue_items=1000) + assert len(values) == 8 + + # graph should be serialized + ges = parse_raw_as(GraphExecutionState, values[0].session) + + # graph values should be populated + assert ges.graph.get_node("1").prompt == "Banana sushi" + assert ges.graph.get_node("2").prompt == "Strawberry sushi" + assert ges.graph.get_node("3").prompt == "Orange sushi" + assert ges.graph.get_node("4").prompt == "Nissan" + + # session ids should match deserialized graph + assert [v.session_id for v in values] == [parse_raw_as(GraphExecutionState, v.session).id for v in values] + + # should unique session ids + sids = [v.session_id for v in values] + assert len(sids) == len(set(sids)) + + # should have 3 node field values + assert type(values[0].field_values) is str + assert len(parse_raw_as(list[NodeFieldValue], values[0].field_values)) == 3 + + # should have batch id and priority + assert all(v.batch_id == b.batch_id for v in values) + assert all(v.priority == 0 for v in values) + + +def test_prepare_values_to_insert_with_priority(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=1, max_new_queue_items=1000) + assert all(v.priority == 1 for v in values) + + +def test_prepare_values_to_insert_with_max(batch_data_collection, batch_graph): + b = Batch(graph=batch_graph, data=batch_data_collection, runs=2) + values = prepare_values_to_insert(queue_id="default", batch=b, priority=1, max_new_queue_items=5) + assert len(values) == 5 + + +def test_cannot_create_bad_batch_items_length(batch_graph): + with pytest.raises(ValidationError, match="Zipped batch items must all have the same length"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), # 1 item + BatchDatum(node_path="2", field_name="prompt", items=["Toyota", "Nissan"]), # 2 items + ], + ], + ) + + +def test_cannot_create_bad_batch_items_type(batch_graph): + with pytest.raises(ValidationError, match="All items in a batch must have the same type"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi", 123]), + ] + ], + ) + + +def test_cannot_create_bad_batch_unique_ids(batch_graph): + with pytest.raises(ValidationError, match="Each batch data must have unique node_id and field_name"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), + ], + [ + BatchDatum(node_path="1", field_name="prompt", items=["Banana sushi"]), + ], + ], + ) + + +def test_cannot_create_bad_batch_nodes_exist( + batch_graph, +): + with pytest.raises(ValidationError, match=r"Node .* not found in graph"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="batman", field_name="prompt", items=["Banana sushi"]), + ], + ], + ) + + +def test_cannot_create_bad_batch_fields_exist( + batch_graph, +): + with pytest.raises(ValidationError, match=r"Field .* not found in node"): + Batch( + graph=batch_graph, + data=[ + [ + BatchDatum(node_path="1", field_name="batman", items=["Banana sushi"]), + ], + ], + ) diff --git a/tests/nodes/test_sqlite.py b/tests/nodes/test_sqlite.py index a9eb542e44..002161e917 100644 --- a/tests/nodes/test_sqlite.py +++ b/tests/nodes/test_sqlite.py @@ -1,20 +1,29 @@ -from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory +import sqlite3 +import threading + +import pytest from pydantic import BaseModel, Field +from invokeai.app.services.sqlite import SqliteItemStorage, sqlite_memory + class TestModel(BaseModel): id: str = Field(description="ID") name: str = Field(description="Name") -def test_sqlite_service_can_create_and_get(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +@pytest.fixture +def db() -> SqliteItemStorage[TestModel]: + db_conn = sqlite3.connect(sqlite_memory, check_same_thread=False) + return SqliteItemStorage[TestModel](db_conn, table_name="test", id_field="id", lock=threading.Lock()) + + +def test_sqlite_service_can_create_and_get(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) assert db.get("1") == TestModel(id="1", name="Test") -def test_sqlite_service_can_list(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -30,15 +39,13 @@ def test_sqlite_service_can_list(): ] -def test_sqlite_service_can_delete(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_delete(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.delete("1") assert db.get("1") is None -def test_sqlite_service_calls_set_callback(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_calls_set_callback(db: SqliteItemStorage[TestModel]): called = False def on_changed(item: TestModel): @@ -50,8 +57,7 @@ def test_sqlite_service_calls_set_callback(): assert called -def test_sqlite_service_calls_delete_callback(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_calls_delete_callback(db: SqliteItemStorage[TestModel]): called = False def on_deleted(item_id: str): @@ -64,8 +70,7 @@ def test_sqlite_service_calls_delete_callback(): assert called -def test_sqlite_service_can_list_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list_with_pagination(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -77,8 +82,7 @@ def test_sqlite_service_can_list_with_pagination(): assert results.items == [TestModel(id="1", name="Test"), TestModel(id="2", name="Test")] -def test_sqlite_service_can_list_with_pagination_and_offset(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_list_with_pagination_and_offset(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -90,8 +94,7 @@ def test_sqlite_service_can_list_with_pagination_and_offset(): assert results.items == [TestModel(id="3", name="Test")] -def test_sqlite_service_can_search(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -107,8 +110,7 @@ def test_sqlite_service_can_search(): ] -def test_sqlite_service_can_search_with_pagination(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search_with_pagination(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) @@ -120,8 +122,7 @@ def test_sqlite_service_can_search_with_pagination(): assert results.items == [TestModel(id="1", name="Test"), TestModel(id="2", name="Test")] -def test_sqlite_service_can_search_with_pagination_and_offset(): - db = SqliteItemStorage[TestModel](sqlite_memory, "test", "id") +def test_sqlite_service_can_search_with_pagination_and_offset(db: SqliteItemStorage[TestModel]): db.set(TestModel(id="1", name="Test")) db.set(TestModel(id="2", name="Test")) db.set(TestModel(id="3", name="Test")) diff --git a/tests/test_config.py b/tests/test_config.py index 88da7a02ab..2b2492f6a6 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,11 +1,10 @@ import os +from pathlib import Path from typing import Any import pytest from omegaconf import OmegaConf -from pathlib import Path - -from invokeai.app.services.config import InvokeAIAppConfig +from pydantic import ValidationError @pytest.fixture @@ -74,6 +73,8 @@ def test_use_init(patch_rootdir): def test_legacy(): + from invokeai.app.services.config import InvokeAIAppConfig + conf = InvokeAIAppConfig.get_config() assert conf conf.parse_args(conf=init3, argv=[]) @@ -85,6 +86,8 @@ def test_legacy(): def test_argv_override(): + from invokeai.app.services.config import InvokeAIAppConfig + conf = InvokeAIAppConfig.get_config() conf.parse_args(conf=init1, argv=["--always_use_cpu", "--max_cache=10"]) assert conf.always_use_cpu @@ -118,6 +121,12 @@ def test_env_override(patch_rootdir): conf.parse_args(conf=init1, argv=[]) assert conf.max_cache_size == 20 + # make sure that prefix is respected + del os.environ["INVOKEAI_always_use_cpu"] + os.environ["always_use_cpu"] = "True" + conf.parse_args(conf=init1, argv=[]) + assert conf.always_use_cpu is False + def test_root_resists_cwd(patch_rootdir): from invokeai.app.services.config import InvokeAIAppConfig @@ -147,3 +156,60 @@ def test_type_coercion(patch_rootdir): conf.parse_args(argv=["--root=/tmp/foobar"]) assert conf.root == Path("/tmp/different") assert isinstance(conf.root, Path) + + +@pytest.mark.xfail( + reason=""" + This test fails when run as part of the full test suite. + + This test needs to deny nodes from being included in the InvocationsUnion by providing + an app configuration as a test fixture. Pytest executes all test files before running + tests, so the app configuration is already initialized by the time this test runs, and + the InvocationUnion is already created and the denied nodes are not omitted from it. + + This test passes when `test_config.py` is tested in isolation. + + Perhaps a solution would be to call `InvokeAIAppConfig.get_config().parse_args()` in + other test files? + """ +) +def test_deny_nodes(patch_rootdir): + from invokeai.app.services.config import InvokeAIAppConfig + + # Allow integer, string and float, but explicitly deny float + allow_deny_nodes_conf = OmegaConf.create( + """ + InvokeAI: + Nodes: + allow_nodes: + - integer + - string + - float + deny_nodes: + - float + """ + ) + # must parse config before importing Graph, so its nodes union uses the config + conf = InvokeAIAppConfig().get_config() + conf.parse_args(conf=allow_deny_nodes_conf, argv=[]) + from invokeai.app.services.graph import Graph + + # confirm graph validation fails when using denied node + Graph(nodes={"1": {"id": "1", "type": "integer"}}) + Graph(nodes={"1": {"id": "1", "type": "string"}}) + + with pytest.raises(ValidationError): + Graph(nodes={"1": {"id": "1", "type": "float"}}) + + from invokeai.app.invocations.baseinvocation import BaseInvocation + + # confirm invocations union will not have denied nodes + all_invocations = BaseInvocation.get_invocations() + + has_integer = len([i for i in all_invocations if i.__fields__.get("type").default == "integer"]) == 1 + has_string = len([i for i in all_invocations if i.__fields__.get("type").default == "string"]) == 1 + has_float = len([i for i in all_invocations if i.__fields__.get("type").default == "float"]) == 1 + + assert has_integer + assert has_string + assert not has_float diff --git a/tests/test_model_manager.py b/tests/test_model_manager.py index 4aa2c4d3b2..5a28862e1f 100644 --- a/tests/test_model_manager.py +++ b/tests/test_model_manager.py @@ -3,7 +3,7 @@ from pathlib import Path import pytest from invokeai.app.services.config import InvokeAIAppConfig -from invokeai.backend import ModelManager, BaseModelType, ModelType, SubModelType +from invokeai.backend import BaseModelType, ModelManager, ModelType, SubModelType BASIC_MODEL_NAME = ("SDXL base", BaseModelType.StableDiffusionXL, ModelType.Main) VAE_OVERRIDE_MODEL_NAME = ("SDXL with VAE", BaseModelType.StableDiffusionXL, ModelType.Main) diff --git a/tests/test_model_probe.py b/tests/test_model_probe.py new file mode 100644 index 0000000000..248b7d602f --- /dev/null +++ b/tests/test_model_probe.py @@ -0,0 +1,22 @@ +from pathlib import Path + +import pytest + +from invokeai.backend import BaseModelType +from invokeai.backend.model_management.model_probe import VaeFolderProbe + + +@pytest.mark.parametrize( + "vae_path,expected_type", + [ + ("sd-vae-ft-mse", BaseModelType.StableDiffusion1), + ("sdxl-vae", BaseModelType.StableDiffusionXL), + ("taesd", BaseModelType.StableDiffusion1), + ("taesdxl", BaseModelType.StableDiffusionXL), + ], +) +def test_get_base_type(vae_path: str, expected_type: BaseModelType, datadir: Path): + sd1_vae_path = datadir / "vae" / vae_path + probe = VaeFolderProbe(sd1_vae_path) + base_type = probe.get_base_type() + assert base_type == expected_type diff --git a/tests/test_model_probe/vae/sd-vae-ft-mse/config.json b/tests/test_model_probe/vae/sd-vae-ft-mse/config.json new file mode 100644 index 0000000000..0db2671757 --- /dev/null +++ b/tests/test_model_probe/vae/sd-vae-ft-mse/config.json @@ -0,0 +1,29 @@ +{ + "_class_name": "AutoencoderKL", + "_diffusers_version": "0.4.2", + "act_fn": "silu", + "block_out_channels": [ + 128, + 256, + 512, + 512 + ], + "down_block_types": [ + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D" + ], + "in_channels": 3, + "latent_channels": 4, + "layers_per_block": 2, + "norm_num_groups": 32, + "out_channels": 3, + "sample_size": 256, + "up_block_types": [ + "UpDecoderBlock2D", + "UpDecoderBlock2D", + "UpDecoderBlock2D", + "UpDecoderBlock2D" + ] +} diff --git a/tests/test_model_probe/vae/sdxl-vae/config.json b/tests/test_model_probe/vae/sdxl-vae/config.json new file mode 100644 index 0000000000..2c7267b492 --- /dev/null +++ b/tests/test_model_probe/vae/sdxl-vae/config.json @@ -0,0 +1,31 @@ +{ + "_class_name": "AutoencoderKL", + "_diffusers_version": "0.18.0.dev0", + "_name_or_path": ".", + "act_fn": "silu", + "block_out_channels": [ + 128, + 256, + 512, + 512 + ], + "down_block_types": [ + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D", + "DownEncoderBlock2D" + ], + "in_channels": 3, + "latent_channels": 4, + "layers_per_block": 2, + "norm_num_groups": 32, + "out_channels": 3, + "sample_size": 1024, + "scaling_factor": 0.13025, + "up_block_types": [ + "UpDecoderBlock2D", + "UpDecoderBlock2D", + "UpDecoderBlock2D", + "UpDecoderBlock2D" + ] +} diff --git a/tests/test_model_probe/vae/taesd/config.json b/tests/test_model_probe/vae/taesd/config.json new file mode 100644 index 0000000000..62f01c3eb4 --- /dev/null +++ b/tests/test_model_probe/vae/taesd/config.json @@ -0,0 +1,37 @@ +{ + "_class_name": "AutoencoderTiny", + "_diffusers_version": "0.20.0.dev0", + "act_fn": "relu", + "decoder_block_out_channels": [ + 64, + 64, + 64, + 64 + ], + "encoder_block_out_channels": [ + 64, + 64, + 64, + 64 + ], + "force_upcast": false, + "in_channels": 3, + "latent_channels": 4, + "latent_magnitude": 3, + "latent_shift": 0.5, + "num_decoder_blocks": [ + 3, + 3, + 3, + 1 + ], + "num_encoder_blocks": [ + 1, + 3, + 3, + 3 + ], + "out_channels": 3, + "scaling_factor": 1.0, + "upsampling_scaling_factor": 2 +} diff --git a/tests/test_model_probe/vae/taesdxl/config.json b/tests/test_model_probe/vae/taesdxl/config.json new file mode 100644 index 0000000000..62f01c3eb4 --- /dev/null +++ b/tests/test_model_probe/vae/taesdxl/config.json @@ -0,0 +1,37 @@ +{ + "_class_name": "AutoencoderTiny", + "_diffusers_version": "0.20.0.dev0", + "act_fn": "relu", + "decoder_block_out_channels": [ + 64, + 64, + 64, + 64 + ], + "encoder_block_out_channels": [ + 64, + 64, + 64, + 64 + ], + "force_upcast": false, + "in_channels": 3, + "latent_channels": 4, + "latent_magnitude": 3, + "latent_shift": 0.5, + "num_decoder_blocks": [ + 3, + 3, + 3, + 1 + ], + "num_encoder_blocks": [ + 1, + 3, + 3, + 3 + ], + "out_channels": 3, + "scaling_factor": 1.0, + "upsampling_scaling_factor": 2 +} diff --git a/tests/test_path.py b/tests/test_path.py index 0da5f2f8dc..4c502acdcc 100644 --- a/tests/test_path.py +++ b/tests/test_path.py @@ -2,14 +2,15 @@ Not really a test, but a way to verify that the paths are existing and fail early if they are not. """ -import unittest import pathlib +import unittest from os import path as osp + from PIL import Image -import invokeai.frontend.web.dist as frontend -import invokeai.configs as configs import invokeai.app.assets.images as image_assets +import invokeai.configs as configs +import invokeai.frontend.web.dist as frontend class ConfigsTestCase(unittest.TestCase):